diff --git a/resources/java/app/yjearth.jar b/resources/java/app/yjearth.jar index 4761028..08ec724 100644 Binary files a/resources/java/app/yjearth.jar and b/resources/java/app/yjearth.jar differ diff --git a/src/renderer/public/sdk/YJEarth.min.js b/src/renderer/public/sdk/YJEarth.min.js index 0815e04..8017909 100644 --- a/src/renderer/public/sdk/YJEarth.min.js +++ b/src/renderer/public/sdk/YJEarth.min.js @@ -1,3388 +1,19 @@ -/*! update time: 2025/12/19 11:37:55*/ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcz81YTQzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzP2MxMzUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": -/*!******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzPzIyMzYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanM/M2M5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcz9jOTczIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzk3MGIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/classCallCheck.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/construct.js": -/*!**********************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/construct.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ \"./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\");\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jb25zdHJ1Y3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jb25zdHJ1Y3QuanM/YjE3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gcmVxdWlyZShcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfY29uc3RydWN0KHQsIGUsIHIpIHtcbiAgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgdmFyIG8gPSBbbnVsbF07XG4gIG8ucHVzaC5hcHBseShvLCBlKTtcbiAgdmFyIHAgPSBuZXcgKHQuYmluZC5hcHBseSh0LCBvKSkoKTtcbiAgcmV0dXJuIHIgJiYgc2V0UHJvdG90eXBlT2YocCwgci5wcm90b3R5cGUpLCBwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/construct.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/createClass.js": -/*!************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime/helpers/toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzPzViYzMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/createClass.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime/helpers/toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzPzk1MjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/defineProperty.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/get.js": -/*!****************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/get.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var superPropBase = __webpack_require__(/*! ./superPropBase.js */ \"./node_modules/@babel/runtime/helpers/superPropBase.js\");\nfunction _get() {\n return module.exports = _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n var p = superPropBase(e, t);\n if (p) {\n var n = Object.getOwnPropertyDescriptor(p, t);\n return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n }\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _get.apply(null, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXQuanM/ODk2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3VwZXJQcm9wQmFzZSA9IHJlcXVpcmUoXCIuL3N1cGVyUHJvcEJhc2UuanNcIik7XG5mdW5jdGlvbiBfZ2V0KCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZ2V0ID0gXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmdldCA/IFJlZmxlY3QuZ2V0LmJpbmQoKSA6IGZ1bmN0aW9uIChlLCB0LCByKSB7XG4gICAgdmFyIHAgPSBzdXBlclByb3BCYXNlKGUsIHQpO1xuICAgIGlmIChwKSB7XG4gICAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCwgdCk7XG4gICAgICByZXR1cm4gbi5nZXQgPyBuLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGggPCAzID8gZSA6IHIpIDogbi52YWx1ZTtcbiAgICB9XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2dldC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/get.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzPzM2YzYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/inherits.js": -/*!*********************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzP2VkNmQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/inherits.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/isNativeFunction.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZUZ1bmN0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVGdW5jdGlvbi5qcz9jNWY3Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKHQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gLTEgIT09IEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwodCkuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIik7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiB0O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZUZ1bmN0aW9uLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/isNativeFunction.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js": -/*!*************************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanM/NmY4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js": -/*!****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanM/MTFiMCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArray.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzPzliNDIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/nonIterableRest.js": -/*!****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanM/YzI0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableRest.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js": -/*!******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzPzA2NzYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! - \**************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcz82YjU4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/readOnlyError.js": -/*!**************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/readOnlyError.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _readOnlyError(r) {\n throw new TypeError('\"' + r + '\" is read-only');\n}\nmodule.exports = _readOnlyError, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWFkT25seUVycm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVhZE9ubHlFcnJvci5qcz9kYTYwIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9yZWFkT25seUVycm9yKHIpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCInICsgciArICdcIiBpcyByZWFkLW9ubHknKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3JlYWRPbmx5RXJyb3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/readOnlyError.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanM/N2VjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JSdW50aW1lKCkge1xuICBcInVzZSBzdHJpY3RcIjsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqL1xuICBtb2R1bGUuZXhwb3J0cyA9IF9yZWdlbmVyYXRvclJ1bnRpbWUgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JSdW50aW1lKCkge1xuICAgIHJldHVybiBlO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIHZhciB0LFxuICAgIGUgPSB7fSxcbiAgICByID0gT2JqZWN0LnByb3RvdHlwZSxcbiAgICBuID0gci5oYXNPd25Qcm9wZXJ0eSxcbiAgICBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5IHx8IGZ1bmN0aW9uICh0LCBlLCByKSB7XG4gICAgICB0W2VdID0gci52YWx1ZTtcbiAgICB9LFxuICAgIGkgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCA/IFN5bWJvbCA6IHt9LFxuICAgIGEgPSBpLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiLFxuICAgIGMgPSBpLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIixcbiAgICB1ID0gaS50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcbiAgZnVuY3Rpb24gZGVmaW5lKHQsIGUsIHIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHtcbiAgICAgIHZhbHVlOiByLFxuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgd3JpdGFibGU6ICEwXG4gICAgfSksIHRbZV07XG4gIH1cbiAgdHJ5IHtcbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoICh0KSB7XG4gICAgZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKHQsIGUsIHIpIHtcbiAgICAgIHJldHVybiB0W2VdID0gcjtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHdyYXAodCwgZSwgciwgbikge1xuICAgIHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IGUgOiBHZW5lcmF0b3IsXG4gICAgICBhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG4gICAgICBjID0gbmV3IENvbnRleHQobiB8fCBbXSk7XG4gICAgcmV0dXJuIG8oYSwgXCJfaW52b2tlXCIsIHtcbiAgICAgIHZhbHVlOiBtYWtlSW52b2tlTWV0aG9kKHQsIHIsIGMpXG4gICAgfSksIGE7XG4gIH1cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2godCwgZSwgcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcIm5vcm1hbFwiLFxuICAgICAgICBhcmc6IHQuY2FsbChlLCByKVxuICAgICAgfTtcbiAgICB9IGNhdGNoICh0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInRocm93XCIsXG4gICAgICAgIGFyZzogdFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgZS53cmFwID0gd3JhcDtcbiAgdmFyIGggPSBcInN1c3BlbmRlZFN0YXJ0XCIsXG4gICAgbCA9IFwic3VzcGVuZGVkWWllbGRcIixcbiAgICBmID0gXCJleGVjdXRpbmdcIixcbiAgICBzID0gXCJjb21wbGV0ZWRcIixcbiAgICB5ID0ge307XG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuICB2YXIgcCA9IHt9O1xuICBkZWZpbmUocCwgYSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgdmFyIGQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG4gICAgdiA9IGQgJiYgZChkKHZhbHVlcyhbXSkpKTtcbiAgdiAmJiB2ICE9PSByICYmIG4uY2FsbCh2LCBhKSAmJiAocCA9IHYpO1xuICB2YXIgZyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHApO1xuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHModCkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICBkZWZpbmUodCwgZSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShlLCB0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IodCwgZSkge1xuICAgIGZ1bmN0aW9uIGludm9rZShyLCBvLCBpLCBhKSB7XG4gICAgICB2YXIgYyA9IHRyeUNhdGNoKHRbcl0sIHQsIG8pO1xuICAgICAgaWYgKFwidGhyb3dcIiAhPT0gYy50eXBlKSB7XG4gICAgICAgIHZhciB1ID0gYy5hcmcsXG4gICAgICAgICAgaCA9IHUudmFsdWU7XG4gICAgICAgIHJldHVybiBoICYmIFwib2JqZWN0XCIgPT0gX3R5cGVvZihoKSAmJiBuLmNhbGwoaCwgXCJfX2F3YWl0XCIpID8gZS5yZXNvbHZlKGguX19hd2FpdCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdCwgaSwgYSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgdCwgaSwgYSk7XG4gICAgICAgIH0pIDogZS5yZXNvbHZlKGgpLnRoZW4oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICB1LnZhbHVlID0gdCwgaSh1KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgdCwgaSwgYSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgYShjLmFyZyk7XG4gICAgfVxuICAgIHZhciByO1xuICAgIG8odGhpcywgXCJfaW52b2tlXCIsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh0LCBuKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICAgIHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgcikge1xuICAgICAgICAgICAgaW52b2tlKHQsIG4sIGUsIHIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByID0gciA/IHIudGhlbihjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZywgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcpIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGUsIHIsIG4pIHtcbiAgICB2YXIgbyA9IGg7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChpLCBhKSB7XG4gICAgICBpZiAobyA9PT0gZikgdGhyb3cgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgaWYgKG8gPT09IHMpIHtcbiAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gaSkgdGhyb3cgYTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICBkb25lOiAhMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZm9yIChuLm1ldGhvZCA9IGksIG4uYXJnID0gYTs7KSB7XG4gICAgICAgIHZhciBjID0gbi5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICB2YXIgdSA9IG1heWJlSW52b2tlRGVsZWdhdGUoYywgbik7XG4gICAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICAgIGlmICh1ID09PSB5KSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiB1O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJuZXh0XCIgPT09IG4ubWV0aG9kKSBuLnNlbnQgPSBuLl9zZW50ID0gbi5hcmc7ZWxzZSBpZiAoXCJ0aHJvd1wiID09PSBuLm1ldGhvZCkge1xuICAgICAgICAgIGlmIChvID09PSBoKSB0aHJvdyBvID0gcywgbi5hcmc7XG4gICAgICAgICAgbi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyk7XG4gICAgICAgIH0gZWxzZSBcInJldHVyblwiID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdChcInJldHVyblwiLCBuLmFyZyk7XG4gICAgICAgIG8gPSBmO1xuICAgICAgICB2YXIgcCA9IHRyeUNhdGNoKGUsIHIsIG4pO1xuICAgICAgICBpZiAoXCJub3JtYWxcIiA9PT0gcC50eXBlKSB7XG4gICAgICAgICAgaWYgKG8gPSBuLmRvbmUgPyBzIDogbCwgcC5hcmcgPT09IHkpIGNvbnRpbnVlO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcC5hcmcsXG4gICAgICAgICAgICBkb25lOiBuLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIFwidGhyb3dcIiA9PT0gcC50eXBlICYmIChvID0gcywgbi5tZXRob2QgPSBcInRocm93XCIsIG4uYXJnID0gcC5hcmcpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShlLCByKSB7XG4gICAgdmFyIG4gPSByLm1ldGhvZCxcbiAgICAgIG8gPSBlLml0ZXJhdG9yW25dO1xuICAgIGlmIChvID09PSB0KSByZXR1cm4gci5kZWxlZ2F0ZSA9IG51bGwsIFwidGhyb3dcIiA9PT0gbiAmJiBlLml0ZXJhdG9yW1wicmV0dXJuXCJdICYmIChyLm1ldGhvZCA9IFwicmV0dXJuXCIsIHIuYXJnID0gdCwgbWF5YmVJbnZva2VEZWxlZ2F0ZShlLCByKSwgXCJ0aHJvd1wiID09PSByLm1ldGhvZCkgfHwgXCJyZXR1cm5cIiAhPT0gbiAmJiAoci5tZXRob2QgPSBcInRocm93XCIsIHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbiArIFwiJyBtZXRob2RcIikpLCB5O1xuICAgIHZhciBpID0gdHJ5Q2F0Y2gobywgZS5pdGVyYXRvciwgci5hcmcpO1xuICAgIGlmIChcInRocm93XCIgPT09IGkudHlwZSkgcmV0dXJuIHIubWV0aG9kID0gXCJ0aHJvd1wiLCByLmFyZyA9IGkuYXJnLCByLmRlbGVnYXRlID0gbnVsbCwgeTtcbiAgICB2YXIgYSA9IGkuYXJnO1xuICAgIHJldHVybiBhID8gYS5kb25lID8gKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUsIHIubmV4dCA9IGUubmV4dExvYywgXCJyZXR1cm5cIiAhPT0gci5tZXRob2QgJiYgKHIubWV0aG9kID0gXCJuZXh0XCIsIHIuYXJnID0gdCksIHIuZGVsZWdhdGUgPSBudWxsLCB5KSA6IGEgOiAoci5tZXRob2QgPSBcInRocm93XCIsIHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLCByLmRlbGVnYXRlID0gbnVsbCwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KHQpIHtcbiAgICB2YXIgZSA9IHtcbiAgICAgIHRyeUxvYzogdFswXVxuICAgIH07XG4gICAgMSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksIDIgaW4gdCAmJiAoZS5maW5hbGx5TG9jID0gdFsyXSwgZS5hZnRlckxvYyA9IHRbM10pLCB0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcbiAgfVxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KHQpIHtcbiAgICB2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcbiAgICBlLnR5cGUgPSBcIm5vcm1hbFwiLCBkZWxldGUgZS5hcmcsIHQuY29tcGxldGlvbiA9IGU7XG4gIH1cbiAgZnVuY3Rpb24gQ29udGV4dCh0KSB7XG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3tcbiAgICAgIHRyeUxvYzogXCJyb290XCJcbiAgICB9XSwgdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuICB9XG4gIGZ1bmN0aW9uIHZhbHVlcyhlKSB7XG4gICAgaWYgKGUgfHwgXCJcIiA9PT0gZSkge1xuICAgICAgdmFyIHIgPSBlW2FdO1xuICAgICAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBlLm5leHQpIHJldHVybiBlO1xuICAgICAgaWYgKCFpc05hTihlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIG8gPSAtMSxcbiAgICAgICAgICBpID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIGZvciAoOyArK28gPCBlLmxlbmd0aDspIGlmIChuLmNhbGwoZSwgbykpIHJldHVybiBuZXh0LnZhbHVlID0gZVtvXSwgbmV4dC5kb25lID0gITEsIG5leHQ7XG4gICAgICAgICAgICByZXR1cm4gbmV4dC52YWx1ZSA9IHQsIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiBpLm5leHQgPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKF90eXBlb2YoZSkgKyBcIiBpcyBub3QgaXRlcmFibGVcIik7XG4gIH1cbiAgcmV0dXJuIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvKGcsIFwiY29uc3RydWN0b3JcIiwge1xuICAgIHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBvKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb24sXG4gICAgY29uZmlndXJhYmxlOiAhMFxuICB9KSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBkZWZpbmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIHUsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIiksIGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgdmFyIGUgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gISFlICYmIChlID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIgPT09IChlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSkpO1xuICB9LCBlLm1hcmsgPSBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YodCwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIDogKHQuX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIGRlZmluZSh0LCB1LCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpKSwgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGcpLCB0O1xuICB9LCBlLmF3cmFwID0gZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hd2FpdDogdFxuICAgIH07XG4gIH0sIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSksIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgZS5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvciwgZS5hc3luYyA9IGZ1bmN0aW9uICh0LCByLCBuLCBvLCBpKSB7XG4gICAgdm9pZCAwID09PSBpICYmIChpID0gUHJvbWlzZSk7XG4gICAgdmFyIGEgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKHQsIHIsIG4sIG8pLCBpKTtcbiAgICByZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpID8gYSA6IGEubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiB0LmRvbmUgPyB0LnZhbHVlIDogYS5uZXh0KCk7XG4gICAgfSk7XG4gIH0sIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhnKSwgZGVmaW5lKGcsIHUsIFwiR2VuZXJhdG9yXCIpLCBkZWZpbmUoZywgYSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgZGVmaW5lKGcsIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9KSwgZS5rZXlzID0gZnVuY3Rpb24gKHQpIHtcbiAgICB2YXIgZSA9IE9iamVjdCh0KSxcbiAgICAgIHIgPSBbXTtcbiAgICBmb3IgKHZhciBuIGluIGUpIHIucHVzaChuKTtcbiAgICByZXR1cm4gci5yZXZlcnNlKCksIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBmb3IgKDsgci5sZW5ndGg7KSB7XG4gICAgICAgIHZhciB0ID0gci5wb3AoKTtcbiAgICAgICAgaWYgKHQgaW4gZSkgcmV0dXJuIG5leHQudmFsdWUgPSB0LCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICB9O1xuICB9LCBlLnZhbHVlcyA9IHZhbHVlcywgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KGUpIHtcbiAgICAgIGlmICh0aGlzLnByZXYgPSAwLCB0aGlzLm5leHQgPSAwLCB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdCwgdGhpcy5kb25lID0gITEsIHRoaXMuZGVsZWdhdGUgPSBudWxsLCB0aGlzLm1ldGhvZCA9IFwibmV4dFwiLCB0aGlzLmFyZyA9IHQsIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpLCAhZSkgZm9yICh2YXIgciBpbiB0aGlzKSBcInRcIiA9PT0gci5jaGFyQXQoMCkgJiYgbi5jYWxsKHRoaXMsIHIpICYmICFpc05hTigrci5zbGljZSgxKSkgJiYgKHRoaXNbcl0gPSB0KTtcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLmRvbmUgPSAhMDtcbiAgICAgIHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG4gICAgICBpZiAoXCJ0aHJvd1wiID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiBkaXNwYXRjaEV4Y2VwdGlvbihlKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKG4sIG8pIHtcbiAgICAgICAgcmV0dXJuIGEudHlwZSA9IFwidGhyb3dcIiwgYS5hcmcgPSBlLCByLm5leHQgPSBuLCBvICYmIChyLm1ldGhvZCA9IFwibmV4dFwiLCByLmFyZyA9IHQpLCAhIW87XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBvID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IG8gPj0gMDsgLS1vKSB7XG4gICAgICAgIHZhciBpID0gdGhpcy50cnlFbnRyaWVzW29dLFxuICAgICAgICAgIGEgPSBpLmNvbXBsZXRpb247XG4gICAgICAgIGlmIChcInJvb3RcIiA9PT0gaS50cnlMb2MpIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIGlmIChpLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgYyA9IG4uY2FsbChpLCBcImNhdGNoTG9jXCIpLFxuICAgICAgICAgICAgdSA9IG4uY2FsbChpLCBcImZpbmFsbHlMb2NcIik7XG4gICAgICAgICAgaWYgKGMgJiYgdSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGkuY2F0Y2hMb2MpIHJldHVybiBoYW5kbGUoaS5jYXRjaExvYywgITApO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShpLmZpbmFsbHlMb2MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYykge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGkuY2F0Y2hMb2MpIHJldHVybiBoYW5kbGUoaS5jYXRjaExvYywgITApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXUpIHRocm93IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5maW5hbGx5TG9jKSByZXR1cm4gaGFuZGxlKGkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uIGFicnVwdCh0LCBlKSB7XG4gICAgICBmb3IgKHZhciByID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IHIgPj0gMDsgLS1yKSB7XG4gICAgICAgIHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuICAgICAgICBpZiAoby50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIG4uY2FsbChvLCBcImZpbmFsbHlMb2NcIikgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGkgPSBvO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpICYmIChcImJyZWFrXCIgPT09IHQgfHwgXCJjb250aW51ZVwiID09PSB0KSAmJiBpLnRyeUxvYyA8PSBlICYmIGUgPD0gaS5maW5hbGx5TG9jICYmIChpID0gbnVsbCk7XG4gICAgICB2YXIgYSA9IGkgPyBpLmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJldHVybiBhLnR5cGUgPSB0LCBhLmFyZyA9IGUsIGkgPyAodGhpcy5tZXRob2QgPSBcIm5leHRcIiwgdGhpcy5uZXh0ID0gaS5maW5hbGx5TG9jLCB5KSA6IHRoaXMuY29tcGxldGUoYSk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUodCwgZSkge1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcbiAgICAgIHJldHVybiBcImJyZWFrXCIgPT09IHQudHlwZSB8fCBcImNvbnRpbnVlXCIgPT09IHQudHlwZSA/IHRoaXMubmV4dCA9IHQuYXJnIDogXCJyZXR1cm5cIiA9PT0gdC50eXBlID8gKHRoaXMucnZhbCA9IHRoaXMuYXJnID0gdC5hcmcsIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIiwgdGhpcy5uZXh0ID0gXCJlbmRcIikgOiBcIm5vcm1hbFwiID09PSB0LnR5cGUgJiYgZSAmJiAodGhpcy5uZXh0ID0gZSksIHk7XG4gICAgfSxcbiAgICBmaW5pc2g6IGZ1bmN0aW9uIGZpbmlzaCh0KSB7XG4gICAgICBmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG4gICAgICAgIHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuICAgICAgICBpZiAoci5maW5hbGx5TG9jID09PSB0KSByZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sIHIuYWZ0ZXJMb2MpLCByZXNldFRyeUVudHJ5KHIpLCB5O1xuICAgICAgfVxuICAgIH0sXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbiBfY2F0Y2godCkge1xuICAgICAgZm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuICAgICAgICB2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcbiAgICAgICAgaWYgKHIudHJ5TG9jID09PSB0KSB7XG4gICAgICAgICAgdmFyIG4gPSByLmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gbi50eXBlKSB7XG4gICAgICAgICAgICB2YXIgbyA9IG4uYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gZGVsZWdhdGVZaWVsZChlLCByLCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcixcbiAgICAgICAgbmV4dExvYzogblxuICAgICAgfSwgXCJuZXh0XCIgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHQpLCB5O1xuICAgIH1cbiAgfSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3JlZ2VuZXJhdG9yUnVudGltZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/set.js": -/*!****************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/set.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var superPropBase = __webpack_require__(/*! ./superPropBase.js */ \"./node_modules/@babel/runtime/helpers/superPropBase.js\");\nvar defineProperty = __webpack_require__(/*! ./defineProperty.js */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\nfunction set(e, r, t, o) {\n return set = \"undefined\" != typeof Reflect && Reflect.set ? Reflect.set : function (e, r, t, o) {\n var f,\n i = superPropBase(e, r);\n if (i) {\n if ((f = Object.getOwnPropertyDescriptor(i, r)).set) return f.set.call(o, t), !0;\n if (!f.writable) return !1;\n }\n if (f = Object.getOwnPropertyDescriptor(o, r)) {\n if (!f.writable) return !1;\n f.value = t, Object.defineProperty(o, r, f);\n } else defineProperty(o, r, t);\n return !0;\n }, set(e, r, t, o);\n}\nfunction _set(e, r, t, o, f) {\n if (!set(e, r, t, o || e) && f) throw new TypeError(\"failed to set property\");\n return t;\n}\nmodule.exports = _set, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXQuanM/MDEwYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3VwZXJQcm9wQmFzZSA9IHJlcXVpcmUoXCIuL3N1cGVyUHJvcEJhc2UuanNcIik7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi9kZWZpbmVQcm9wZXJ0eS5qc1wiKTtcbmZ1bmN0aW9uIHNldChlLCByLCB0LCBvKSB7XG4gIHJldHVybiBzZXQgPSBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBSZWZsZWN0ICYmIFJlZmxlY3Quc2V0ID8gUmVmbGVjdC5zZXQgOiBmdW5jdGlvbiAoZSwgciwgdCwgbykge1xuICAgIHZhciBmLFxuICAgICAgaSA9IHN1cGVyUHJvcEJhc2UoZSwgcik7XG4gICAgaWYgKGkpIHtcbiAgICAgIGlmICgoZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSwgcikpLnNldCkgcmV0dXJuIGYuc2V0LmNhbGwobywgdCksICEwO1xuICAgICAgaWYgKCFmLndyaXRhYmxlKSByZXR1cm4gITE7XG4gICAgfVxuICAgIGlmIChmID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCByKSkge1xuICAgICAgaWYgKCFmLndyaXRhYmxlKSByZXR1cm4gITE7XG4gICAgICBmLnZhbHVlID0gdCwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIHIsIGYpO1xuICAgIH0gZWxzZSBkZWZpbmVQcm9wZXJ0eShvLCByLCB0KTtcbiAgICByZXR1cm4gITA7XG4gIH0sIHNldChlLCByLCB0LCBvKTtcbn1cbmZ1bmN0aW9uIF9zZXQoZSwgciwgdCwgbywgZikge1xuICBpZiAoIXNldChlLCByLCB0LCBvIHx8IGUpICYmIGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJmYWlsZWQgdG8gc2V0IHByb3BlcnR5XCIpO1xuICByZXR1cm4gdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/set.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js": -/*!***************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzPzRhNGIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/slicedToArray.js": -/*!**************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithHoles.js\");\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"./node_modules/@babel/runtime/helpers/nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcz8yNzhjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/slicedToArray.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/superPropBase.js": -/*!**************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/superPropBase.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\nfunction _superPropBase(t, o) {\n for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n return t;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zdXBlclByb3BCYXNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc3VwZXJQcm9wQmFzZS5qcz85ZjcwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX3N1cGVyUHJvcEJhc2UodCwgbykge1xuICBmb3IgKDsgIXt9Lmhhc093blByb3BlcnR5LmNhbGwodCwgbykgJiYgbnVsbCAhPT0gKHQgPSBnZXRQcm90b3R5cGVPZih0KSk7KTtcbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zdXBlclByb3BCYXNlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/superPropBase.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js": -/*!******************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzPzQ0OGEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/toConsumableArray.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/toPrimitive.js": -/*!************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzP2U1MGQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/toPrimitive.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/toPropertyKey.js": -/*!**************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nvar toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ \"./node_modules/@babel/runtime/helpers/toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcz9hMzk1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/toPropertyKey.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/typeof.js": -/*!*******************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanM/NzAzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/typeof.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzPzY2MTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js": -/*!****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\nvar isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ \"./node_modules/@babel/runtime/helpers/isNativeFunction.js\");\nvar construct = __webpack_require__(/*! ./construct.js */ \"./node_modules/@babel/runtime/helpers/construct.js\");\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy93cmFwTmF0aXZlU3VwZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy93cmFwTmF0aXZlU3VwZXIuanM/YTEyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlRnVuY3Rpb24gPSByZXF1aXJlKFwiLi9pc05hdGl2ZUZ1bmN0aW9uLmpzXCIpO1xudmFyIGNvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2NvbnN0cnVjdC5qc1wiKTtcbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIodCkge1xuICB2YXIgciA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgTWFwID8gbmV3IE1hcCgpIDogdm9pZCAwO1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gICAgaWYgKG51bGwgPT09IHQgfHwgIWlzTmF0aXZlRnVuY3Rpb24odCkpIHJldHVybiB0O1xuICAgIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHQpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICBpZiAodm9pZCAwICE9PSByKSB7XG4gICAgICBpZiAoci5oYXModCkpIHJldHVybiByLmdldCh0KTtcbiAgICAgIHIuc2V0KHQsIFdyYXBwZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdCh0LCBhcmd1bWVudHMsIGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICAgIH1cbiAgICB9KSwgc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgdCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3dyYXBOYXRpdmVTdXBlcih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3dyYXBOYXRpdmVTdXBlciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/wrapNativeSuper.js\n"); - -/***/ }), - -/***/ "./node_modules/@babel/runtime/regenerator/index.js": -/*!**********************************************************!*\ - !*** ./node_modules/@babel/runtime/regenerator/index.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// TODO(Babel 8): Remove this file.\n\nvar runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ \"./node_modules/@babel/runtime/helpers/regeneratorRuntime.js\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanM/YTM0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPKEJhYmVsIDgpOiBSZW1vdmUgdGhpcyBmaWxlLlxuXG52YXIgcnVudGltZSA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3JlZ2VuZXJhdG9yUnVudGltZVwiKSgpO1xubW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL3BhY2thZ2VzL3J1bnRpbWUvcnVudGltZS5qcyNMNzM2PVxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIikge1xuICAgIGdsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbiAgfSBlbHNlIHtcbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n"); - -/***/ }), - -/***/ "./node_modules/js-md5/src/md5.js": -/*!****************************************!*\ - !*** ./node_modules/js-md5/src/md5.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/* WEBPACK VAR INJECTION */(function(process, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * [js-md5]{@link https://github.com/emn178/js-md5}\n *\n * @namespace md5\n * @version 0.7.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_MD5_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = true && __webpack_require__(/*! !webpack amd options */ \"./node_modules/webpack/buildin/amd-options.js\");\n var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [128, 32768, 8388608, -2147483648];\n var SHIFT = [0, 8, 16, 24];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'];\n var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n var blocks = [], buffer8;\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n buffer8 = new Uint8Array(buffer);\n blocks = new Uint32Array(buffer);\n }\n\n if (root.JS_MD5_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n /**\n * @method hex\n * @memberof md5\n * @description Output hash as hex string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} Hex string\n * @example\n * md5.hex('The quick brown fox jumps over the lazy dog');\n * // equal to\n * md5('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method digest\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.digest('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method array\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.array('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method arrayBuffer\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.arrayBuffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.buffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method base64\n * @memberof md5\n * @description Output hash as base64 string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} base64 string\n * @example\n * md5.base64('The quick brown fox jumps over the lazy dog');\n */\n var createOutputMethod = function (outputType) {\n return function (message) {\n return new Md5(true).update(message)[outputType]();\n };\n };\n\n /**\n * @method create\n * @memberof md5\n * @description Create Md5 object\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.create();\n */\n /**\n * @method update\n * @memberof md5\n * @description Create and update Md5 object\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.update('The quick brown fox jumps over the lazy dog');\n * // equal to\n * var hash = md5.create();\n * hash.update('The quick brown fox jumps over the lazy dog');\n */\n var createMethod = function () {\n var method = createOutputMethod('hex');\n if (NODE_JS) {\n method = nodeWrap(method);\n }\n method.create = function () {\n return new Md5();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n var nodeWrap = function (method) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash('md5').update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw ERROR;\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash('md5').update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n /**\n * Md5 class\n * @class Md5\n * @description This is internal class.\n * @see {@link md5.create}\n */\n function Md5(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n this.buffer8 = buffer8;\n } else {\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n this.buffer8 = new Uint8Array(buffer);\n this.blocks = new Uint32Array(buffer);\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n }\n this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n /**\n * @method update\n * @memberof Md5\n * @instance\n * @description Update hash\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @see {@link md5.update}\n */\n Md5.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw ERROR;\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw ERROR;\n }\n }\n } else {\n throw ERROR;\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n var buffer8 = this.buffer8;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n if (ARRAY_BUFFER) {\n for (i = this.start; index < length && i < 64; ++index) {\n buffer8[i++] = message[index];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n }\n } else {\n if (ARRAY_BUFFER) {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n buffer8[i++] = code;\n } else if (code < 0x800) {\n buffer8[i++] = 0xc0 | (code >> 6);\n buffer8[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n buffer8[i++] = 0xe0 | (code >> 12);\n buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n buffer8[i++] = 0xf0 | (code >> 18);\n buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);\n buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n }\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Md5.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[i >> 2] |= EXTRA[i & 3];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.bytes << 3;\n blocks[15] = this.hBytes << 3 | this.bytes >>> 29;\n this.hash();\n };\n\n Md5.prototype.hash = function () {\n var a, b, c, d, bc, da, blocks = this.blocks;\n\n if (this.first) {\n a = blocks[0] - 680876937;\n a = (a << 7 | a >>> 25) - 271733879 << 0;\n d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;\n d = (d << 12 | d >>> 20) + a << 0;\n c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;\n c = (c << 17 | c >>> 15) + d << 0;\n b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;\n b = (b << 22 | b >>> 10) + c << 0;\n } else {\n a = this.h0;\n b = this.h1;\n c = this.h2;\n d = this.h3;\n a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n\n a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;\n b = (b << 20 | b >>> 12) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[5] - 378558;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[8] - 2022574463;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[11] + 1839030562;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[14] - 35309556;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[1] - 1530992060;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[4] + 1272893353;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[7] - 155497632;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[10] - 1094730640;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[13] + 681279174;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[0] - 358537222;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[3] - 722521979;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[6] + 76029189;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[9] - 640364487;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[12] - 421815835;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[15] + 530742520;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[2] - 995338651;\n b = (b << 23 | b >>> 9) + c << 0;\n a += (c ^ (b | ~d)) + blocks[0] - 198630844;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[7] + 1126891415;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[14] - 1416354905;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[5] - 57434055;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[12] + 1700485571;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[3] - 1894986606;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[10] - 1051523;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[1] - 2054922799;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[8] + 1873313359;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[15] - 30611744;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[6] - 1560198380;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[13] + 1309151649;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[4] - 145523070;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[11] - 1120210379;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[2] + 718787259;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[9] - 343485551;\n b = (b << 21 | b >>> 11) + c << 0;\n\n if (this.first) {\n this.h0 = a + 1732584193 << 0;\n this.h1 = b - 271733879 << 0;\n this.h2 = c - 1732584194 << 0;\n this.h3 = d + 271733878 << 0;\n this.first = false;\n } else {\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n }\n };\n\n /**\n * @method hex\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.hex();\n */\n Md5.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\n\n return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F];\n };\n\n /**\n * @method toString\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.toString();\n */\n Md5.prototype.toString = Md5.prototype.hex;\n\n /**\n * @method digest\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.digest}\n * @example\n * hash.digest();\n */\n Md5.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\n return [\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF\n ];\n };\n\n /**\n * @method array\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.array}\n * @example\n * hash.array();\n */\n Md5.prototype.array = Md5.prototype.digest;\n\n /**\n * @method arrayBuffer\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.arrayBuffer}\n * @example\n * hash.arrayBuffer();\n */\n Md5.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(16);\n var blocks = new Uint32Array(buffer);\n blocks[0] = this.h0;\n blocks[1] = this.h1;\n blocks[2] = this.h2;\n blocks[3] = this.h3;\n return buffer;\n };\n\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.buffer}\n * @example\n * hash.buffer();\n */\n Md5.prototype.buffer = Md5.prototype.arrayBuffer;\n\n /**\n * @method base64\n * @memberof Md5\n * @instance\n * @description Output hash as base64 string\n * @returns {String} base64 string\n * @see {@link md5.base64}\n * @example\n * hash.base64();\n */\n Md5.prototype.base64 = function () {\n var v1, v2, v3, base64Str = '', bytes = this.array();\n for (var i = 0; i < 15;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +\n BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] +\n BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] +\n BASE64_ENCODE_CHAR[v3 & 63];\n }\n v1 = bytes[i];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +\n BASE64_ENCODE_CHAR[(v1 << 4) & 63] +\n '==';\n return base64Str;\n };\n\n var exports = createMethod();\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n /**\n * @method md5\b\n * @description Md5 hash function, export to global in browsers.\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} md5 hashes\n * @example\n * md5(''); // d41d8cd98f00b204e9800998ecf8427e\n * md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6\n * md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0\n *\n * // It also supports UTF-8 encoding\n * md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07\n *\n * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`\n * md5([]); // d41d8cd98f00b204e9800998ecf8427e\n * md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e\n */\n root.md5 = exports;\n if (AMD) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return exports;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n }\n})();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanMtbWQ1L3NyYy9tZDUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvanMtbWQ1L3NyYy9tZDUuanM/ODIzNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtqcy1tZDVde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvanMtbWQ1fVxuICpcbiAqIEBuYW1lc3BhY2UgbWQ1XG4gKiBAdmVyc2lvbiAwLjcuM1xuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cbiAqIEBjb3B5cmlnaHQgQ2hlbiwgWWktQ3l1YW4gMjAxNC0yMDE3XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuKGZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBFUlJPUiA9ICdpbnB1dCBpcyBpbnZhbGlkIHR5cGUnO1xuICB2YXIgV0lORE9XID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gIHZhciByb290ID0gV0lORE9XID8gd2luZG93IDoge307XG4gIGlmIChyb290LkpTX01ENV9OT19XSU5ET1cpIHtcbiAgICBXSU5ET1cgPSBmYWxzZTtcbiAgfVxuICB2YXIgV0VCX1dPUktFUiA9ICFXSU5ET1cgJiYgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnO1xuICB2YXIgTk9ERV9KUyA9ICFyb290LkpTX01ENV9OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFdFQl9XT1JLRVIpIHtcbiAgICByb290ID0gc2VsZjtcbiAgfVxuICB2YXIgQ09NTU9OX0pTID0gIXJvb3QuSlNfTUQ1X05PX0NPTU1PTl9KUyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIEFNRCA9IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZDtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICFyb290LkpTX01ENV9OT19BUlJBWV9CVUZGRVIgJiYgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIEhFWF9DSEFSUyA9ICcwMTIzNDU2Nzg5YWJjZGVmJy5zcGxpdCgnJyk7XG4gIHZhciBFWFRSQSA9IFsxMjgsIDMyNzY4LCA4Mzg4NjA4LCAtMjE0NzQ4MzY0OF07XG4gIHZhciBTSElGVCA9IFswLCA4LCAxNiwgMjRdO1xuICB2YXIgT1VUUFVUX1RZUEVTID0gWydoZXgnLCAnYXJyYXknLCAnZGlnZXN0JywgJ2J1ZmZlcicsICdhcnJheUJ1ZmZlcicsICdiYXNlNjQnXTtcbiAgdmFyIEJBU0U2NF9FTkNPREVfQ0hBUiA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJy5zcGxpdCgnJyk7XG5cbiAgdmFyIGJsb2NrcyA9IFtdLCBidWZmZXI4O1xuICBpZiAoQVJSQVlfQlVGRkVSKSB7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2OCk7XG4gICAgYnVmZmVyOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgYmxvY2tzID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIH1cblxuICBpZiAocm9vdC5KU19NRDVfTk9fTk9ERV9KUyB8fCAhQXJyYXkuaXNBcnJheSkge1xuICAgIEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChBUlJBWV9CVUZGRVIgJiYgKHJvb3QuSlNfTUQ1X05PX0FSUkFZX0JVRkZFUl9JU19WSUVXIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iai5idWZmZXIgJiYgb2JqLmJ1ZmZlci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXI7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGhleFxuICAgKiBAbWVtYmVyb2YgbWQ1XG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fFVpbnQ4QXJyYXl8QXJyYXlCdWZmZXJ9IG1lc3NhZ2UgbWVzc2FnZSB0byBoYXNoXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IEhleCBzdHJpbmdcbiAgICogQGV4YW1wbGVcbiAgICogbWQ1LmhleCgnVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZycpO1xuICAgKiAvLyBlcXVhbCB0b1xuICAgKiBtZDUoJ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cnKTtcbiAgICovXG4gIC8qKlxuICAgKiBAbWV0aG9kIGRpZ2VzdFxuICAgKiBAbWVtYmVyb2YgbWQ1XG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBieXRlcyBhcnJheVxuICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheXxVaW50OEFycmF5fEFycmF5QnVmZmVyfSBtZXNzYWdlIG1lc3NhZ2UgdG8gaGFzaFxuICAgKiBAcmV0dXJucyB7QXJyYXl9IEJ5dGVzIGFycmF5XG4gICAqIEBleGFtcGxlXG4gICAqIG1kNS5kaWdlc3QoJ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cnKTtcbiAgICovXG4gIC8qKlxuICAgKiBAbWV0aG9kIGFycmF5XG4gICAqIEBtZW1iZXJvZiBtZDVcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIGJ5dGVzIGFycmF5XG4gICAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fFVpbnQ4QXJyYXl8QXJyYXlCdWZmZXJ9IG1lc3NhZ2UgbWVzc2FnZSB0byBoYXNoXG4gICAqIEByZXR1cm5zIHtBcnJheX0gQnl0ZXMgYXJyYXlcbiAgICogQGV4YW1wbGVcbiAgICogbWQ1LmFycmF5KCdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nJyk7XG4gICAqL1xuICAvKipcbiAgICogQG1ldGhvZCBhcnJheUJ1ZmZlclxuICAgKiBAbWVtYmVyb2YgbWQ1XG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBBcnJheUJ1ZmZlclxuICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheXxVaW50OEFycmF5fEFycmF5QnVmZmVyfSBtZXNzYWdlIG1lc3NhZ2UgdG8gaGFzaFxuICAgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IEFycmF5QnVmZmVyXG4gICAqIEBleGFtcGxlXG4gICAqIG1kNS5hcnJheUJ1ZmZlcignVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZycpO1xuICAgKi9cbiAgLyoqXG4gICAqIEBtZXRob2QgYnVmZmVyXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWF5YmUgY29uZnVzZSB3aXRoIEJ1ZmZlciBpbiBub2RlLmpzLiBQbGVhc2UgdXNlIGFycmF5QnVmZmVyIGluc3RlYWQuXG4gICAqIEBtZW1iZXJvZiBtZDVcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIEFycmF5QnVmZmVyXG4gICAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fFVpbnQ4QXJyYXl8QXJyYXlCdWZmZXJ9IG1lc3NhZ2UgbWVzc2FnZSB0byBoYXNoXG4gICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gQXJyYXlCdWZmZXJcbiAgICogQGV4YW1wbGVcbiAgICogbWQ1LmJ1ZmZlcignVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZycpO1xuICAgKi9cbiAgLyoqXG4gICAqIEBtZXRob2QgYmFzZTY0XG4gICAqIEBtZW1iZXJvZiBtZDVcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd8QXJyYXl8VWludDhBcnJheXxBcnJheUJ1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIGhhc2hcbiAgICogQHJldHVybnMge1N0cmluZ30gYmFzZTY0IHN0cmluZ1xuICAgKiBAZXhhbXBsZVxuICAgKiBtZDUuYmFzZTY0KCdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nJyk7XG4gICAqL1xuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKG91dHB1dFR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgTWQ1KHRydWUpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY3JlYXRlXG4gICAqIEBtZW1iZXJvZiBtZDVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBNZDUgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtNZDV9IE1kNSBvYmplY3QuXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBoYXNoID0gbWQ1LmNyZWF0ZSgpO1xuICAgKi9cbiAgLyoqXG4gICAqIEBtZXRob2QgdXBkYXRlXG4gICAqIEBtZW1iZXJvZiBtZDVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBhbmQgdXBkYXRlIE1kNSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd8QXJyYXl8VWludDhBcnJheXxBcnJheUJ1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIGhhc2hcbiAgICogQHJldHVybnMge01kNX0gTWQ1IG9iamVjdC5cbiAgICogQGV4YW1wbGVcbiAgICogdmFyIGhhc2ggPSBtZDUudXBkYXRlKCdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nJyk7XG4gICAqIC8vIGVxdWFsIHRvXG4gICAqIHZhciBoYXNoID0gbWQ1LmNyZWF0ZSgpO1xuICAgKiBoYXNoLnVwZGF0ZSgnVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZycpO1xuICAgKi9cbiAgdmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlT3V0cHV0TWV0aG9kKCdoZXgnKTtcbiAgICBpZiAoTk9ERV9KUykge1xuICAgICAgbWV0aG9kID0gbm9kZVdyYXAobWV0aG9kKTtcbiAgICB9XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgTWQ1KCk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKCkudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPVVRQVVRfVFlQRVMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlT3V0cHV0TWV0aG9kKHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIHZhciBub2RlV3JhcCA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICB2YXIgY3J5cHRvID0gZXZhbChcInJlcXVpcmUoJ2NyeXB0bycpXCIpO1xuICAgIHZhciBCdWZmZXIgPSBldmFsKFwicmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXCIpO1xuICAgIHZhciBub2RlTWV0aG9kID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUobWVzc2FnZSwgJ3V0ZjgnKS5kaWdlc3QoJ2hleCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwgfHwgbWVzc2FnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgRVJST1I7XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpIHx8IEFycmF5QnVmZmVyLmlzVmlldyhtZXNzYWdlKSB8fFxuICAgICAgICBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUobmV3IEJ1ZmZlcihtZXNzYWdlKSkuZGlnZXN0KCdoZXgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtZXRob2QobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gbm9kZU1ldGhvZDtcbiAgfTtcblxuICAvKipcbiAgICogTWQ1IGNsYXNzXG4gICAqIEBjbGFzcyBNZDVcbiAgICogQGRlc2NyaXB0aW9uIFRoaXMgaXMgaW50ZXJuYWwgY2xhc3MuXG4gICAqIEBzZWUge0BsaW5rIG1kNS5jcmVhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBNZDUoc2hhcmVkTWVtb3J5KSB7XG4gICAgaWYgKHNoYXJlZE1lbW9yeSkge1xuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzWzE2XSA9IGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9XG4gICAgICBibG9ja3NbNF0gPSBibG9ja3NbNV0gPSBibG9ja3NbNl0gPSBibG9ja3NbN10gPVxuICAgICAgYmxvY2tzWzhdID0gYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPVxuICAgICAgYmxvY2tzWzEyXSA9IGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IDA7XG4gICAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcztcbiAgICAgIHRoaXMuYnVmZmVyOCA9IGJ1ZmZlcjg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChBUlJBWV9CVUZGRVIpIHtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2OCk7XG4gICAgICAgIHRoaXMuYnVmZmVyOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJsb2NrcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oMCA9IHRoaXMuaDEgPSB0aGlzLmgyID0gdGhpcy5oMyA9IHRoaXMuc3RhcnQgPSB0aGlzLmJ5dGVzID0gdGhpcy5oQnl0ZXMgPSAwO1xuICAgIHRoaXMuZmluYWxpemVkID0gdGhpcy5oYXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcnN0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIHVwZGF0ZVxuICAgKiBAbWVtYmVyb2YgTWQ1XG4gICAqIEBpbnN0YW5jZVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGhhc2hcbiAgICogQHBhcmFtIHtTdHJpbmd8QXJyYXl8VWludDhBcnJheXxBcnJheUJ1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIGhhc2hcbiAgICogQHJldHVybnMge01kNX0gTWQ1IG9iamVjdC5cbiAgICogQHNlZSB7QGxpbmsgbWQ1LnVwZGF0ZX1cbiAgICovXG4gIE1kNS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICBpZiAodGhpcy5maW5hbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIG1lc3NhZ2U7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBFUlJPUjtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgbWVzc2FnZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBFUlJPUjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IEVSUk9SO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGNvZGUsIGluZGV4ID0gMCwgaSwgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsIGJsb2NrcyA9IHRoaXMuYmxvY2tzO1xuICAgIHZhciBidWZmZXI4ID0gdGhpcy5idWZmZXI4O1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5oYXNoZWQpIHtcbiAgICAgICAgdGhpcy5oYXNoZWQgPSBmYWxzZTtcbiAgICAgICAgYmxvY2tzWzBdID0gYmxvY2tzWzE2XTtcbiAgICAgICAgYmxvY2tzWzE2XSA9IGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9XG4gICAgICAgIGJsb2Nrc1s0XSA9IGJsb2Nrc1s1XSA9IGJsb2Nrc1s2XSA9IGJsb2Nrc1s3XSA9XG4gICAgICAgIGJsb2Nrc1s4XSA9IGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID1cbiAgICAgICAgYmxvY2tzWzEyXSA9IGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChub3RTdHJpbmcpIHtcbiAgICAgICAgaWYgKEFSUkFZX0JVRkZFUikge1xuICAgICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCA2NDsgKytpbmRleCkge1xuICAgICAgICAgICAgYnVmZmVyOFtpKytdID0gbWVzc2FnZVtpbmRleF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCA2NDsgKytpbmRleCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gbWVzc2FnZVtpbmRleF0gPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoQVJSQVlfQlVGRkVSKSB7XG4gICAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IDY0OyArK2luZGV4KSB7XG4gICAgICAgICAgICBjb2RlID0gbWVzc2FnZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSBjb2RlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICAgICAgYnVmZmVyOFtpKytdID0gMHhjMCB8IChjb2RlID4+IDYpO1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweDgwIHwgKGNvZGUgJiAweDNmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweGUwIHwgKGNvZGUgPj4gMTIpO1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZik7XG4gICAgICAgICAgICAgIGJ1ZmZlcjhbaSsrXSA9IDB4ODAgfCAoY29kZSAmIDB4M2YpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkgJiAweDNmZikpO1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweGYwIHwgKGNvZGUgPj4gMTgpO1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpO1xuICAgICAgICAgICAgICBidWZmZXI4W2krK10gPSAweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZik7XG4gICAgICAgICAgICAgIGJ1ZmZlcjhbaSsrXSA9IDB4ODAgfCAoY29kZSAmIDB4M2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGkgPSB0aGlzLnN0YXJ0OyBpbmRleCA8IGxlbmd0aCAmJiBpIDwgNjQ7ICsraW5kZXgpIHtcbiAgICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IGNvZGUgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhjMCB8IChjb2RlID4+IDYpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhlMCB8IChjb2RlID4+IDEyKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkgJiAweDNmZikpO1xuICAgICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RCeXRlSW5kZXggPSBpO1xuICAgICAgdGhpcy5ieXRlcyArPSBpIC0gdGhpcy5zdGFydDtcbiAgICAgIGlmIChpID49IDY0KSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gNjQ7XG4gICAgICAgIHRoaXMuaGFzaCgpO1xuICAgICAgICB0aGlzLmhhc2hlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuYnl0ZXMgPiA0Mjk0OTY3Mjk1KSB7XG4gICAgICB0aGlzLmhCeXRlcyArPSB0aGlzLmJ5dGVzIC8gNDI5NDk2NzI5NiA8PCAwO1xuICAgICAgdGhpcy5ieXRlcyA9IHRoaXMuYnl0ZXMgJSA0Mjk0OTY3Mjk2O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBNZDUucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmZpbmFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpbmFsaXplZCA9IHRydWU7XG4gICAgdmFyIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBpID0gdGhpcy5sYXN0Qnl0ZUluZGV4O1xuICAgIGJsb2Nrc1tpID4+IDJdIHw9IEVYVFJBW2kgJiAzXTtcbiAgICBpZiAoaSA+PSA1Nikge1xuICAgICAgaWYgKCF0aGlzLmhhc2hlZCkge1xuICAgICAgICB0aGlzLmhhc2goKTtcbiAgICAgIH1cbiAgICAgIGJsb2Nrc1swXSA9IGJsb2Nrc1sxNl07XG4gICAgICBibG9ja3NbMTZdID0gYmxvY2tzWzFdID0gYmxvY2tzWzJdID0gYmxvY2tzWzNdID1cbiAgICAgIGJsb2Nrc1s0XSA9IGJsb2Nrc1s1XSA9IGJsb2Nrc1s2XSA9IGJsb2Nrc1s3XSA9XG4gICAgICBibG9ja3NbOF0gPSBibG9ja3NbOV0gPSBibG9ja3NbMTBdID0gYmxvY2tzWzExXSA9XG4gICAgICBibG9ja3NbMTJdID0gYmxvY2tzWzEzXSA9IGJsb2Nrc1sxNF0gPSBibG9ja3NbMTVdID0gMDtcbiAgICB9XG4gICAgYmxvY2tzWzE0XSA9IHRoaXMuYnl0ZXMgPDwgMztcbiAgICBibG9ja3NbMTVdID0gdGhpcy5oQnl0ZXMgPDwgMyB8IHRoaXMuYnl0ZXMgPj4+IDI5O1xuICAgIHRoaXMuaGFzaCgpO1xuICB9O1xuXG4gIE1kNS5wcm90b3R5cGUuaGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYSwgYiwgYywgZCwgYmMsIGRhLCBibG9ja3MgPSB0aGlzLmJsb2NrcztcblxuICAgIGlmICh0aGlzLmZpcnN0KSB7XG4gICAgICBhID0gYmxvY2tzWzBdIC0gNjgwODc2OTM3O1xuICAgICAgYSA9IChhIDw8IDcgfCBhID4+PiAyNSkgLSAyNzE3MzM4NzkgPDwgMDtcbiAgICAgIGQgPSAoLTE3MzI1ODQxOTQgXiBhICYgMjAwNDMxODA3MSkgKyBibG9ja3NbMV0gLSAxMTc4MzA3MDg7XG4gICAgICBkID0gKGQgPDwgMTIgfCBkID4+PiAyMCkgKyBhIDw8IDA7XG4gICAgICBjID0gKC0yNzE3MzM4NzkgXiAoZCAmIChhIF4gLTI3MTczMzg3OSkpKSArIGJsb2Nrc1syXSAtIDExMjY0NzgzNzU7XG4gICAgICBjID0gKGMgPDwgMTcgfCBjID4+PiAxNSkgKyBkIDw8IDA7XG4gICAgICBiID0gKGEgXiAoYyAmIChkIF4gYSkpKSArIGJsb2Nrc1szXSAtIDEzMTYyNTkyMDk7XG4gICAgICBiID0gKGIgPDwgMjIgfCBiID4+PiAxMCkgKyBjIDw8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSB0aGlzLmgwO1xuICAgICAgYiA9IHRoaXMuaDE7XG4gICAgICBjID0gdGhpcy5oMjtcbiAgICAgIGQgPSB0aGlzLmgzO1xuICAgICAgYSArPSAoZCBeIChiICYgKGMgXiBkKSkpICsgYmxvY2tzWzBdIC0gNjgwODc2OTM2O1xuICAgICAgYSA9IChhIDw8IDcgfCBhID4+PiAyNSkgKyBiIDw8IDA7XG4gICAgICBkICs9IChjIF4gKGEgJiAoYiBeIGMpKSkgKyBibG9ja3NbMV0gLSAzODk1NjQ1ODY7XG4gICAgICBkID0gKGQgPDwgMTIgfCBkID4+PiAyMCkgKyBhIDw8IDA7XG4gICAgICBjICs9IChiIF4gKGQgJiAoYSBeIGIpKSkgKyBibG9ja3NbMl0gKyA2MDYxMDU4MTk7XG4gICAgICBjID0gKGMgPDwgMTcgfCBjID4+PiAxNSkgKyBkIDw8IDA7XG4gICAgICBiICs9IChhIF4gKGMgJiAoZCBeIGEpKSkgKyBibG9ja3NbM10gLSAxMDQ0NTI1MzMwO1xuICAgICAgYiA9IChiIDw8IDIyIHwgYiA+Pj4gMTApICsgYyA8PCAwO1xuICAgIH1cblxuICAgIGEgKz0gKGQgXiAoYiAmIChjIF4gZCkpKSArIGJsb2Nrc1s0XSAtIDE3NjQxODg5NztcbiAgICBhID0gKGEgPDwgNyB8IGEgPj4+IDI1KSArIGIgPDwgMDtcbiAgICBkICs9IChjIF4gKGEgJiAoYiBeIGMpKSkgKyBibG9ja3NbNV0gKyAxMjAwMDgwNDI2O1xuICAgIGQgPSAoZCA8PCAxMiB8IGQgPj4+IDIwKSArIGEgPDwgMDtcbiAgICBjICs9IChiIF4gKGQgJiAoYSBeIGIpKSkgKyBibG9ja3NbNl0gLSAxNDczMjMxMzQxO1xuICAgIGMgPSAoYyA8PCAxNyB8IGMgPj4+IDE1KSArIGQgPDwgMDtcbiAgICBiICs9IChhIF4gKGMgJiAoZCBeIGEpKSkgKyBibG9ja3NbN10gLSA0NTcwNTk4MztcbiAgICBiID0gKGIgPDwgMjIgfCBiID4+PiAxMCkgKyBjIDw8IDA7XG4gICAgYSArPSAoZCBeIChiICYgKGMgXiBkKSkpICsgYmxvY2tzWzhdICsgMTc3MDAzNTQxNjtcbiAgICBhID0gKGEgPDwgNyB8IGEgPj4+IDI1KSArIGIgPDwgMDtcbiAgICBkICs9IChjIF4gKGEgJiAoYiBeIGMpKSkgKyBibG9ja3NbOV0gLSAxOTU4NDE0NDE3O1xuICAgIGQgPSAoZCA8PCAxMiB8IGQgPj4+IDIwKSArIGEgPDwgMDtcbiAgICBjICs9IChiIF4gKGQgJiAoYSBeIGIpKSkgKyBibG9ja3NbMTBdIC0gNDIwNjM7XG4gICAgYyA9IChjIDw8IDE3IHwgYyA+Pj4gMTUpICsgZCA8PCAwO1xuICAgIGIgKz0gKGEgXiAoYyAmIChkIF4gYSkpKSArIGJsb2Nrc1sxMV0gLSAxOTkwNDA0MTYyO1xuICAgIGIgPSAoYiA8PCAyMiB8IGIgPj4+IDEwKSArIGMgPDwgMDtcbiAgICBhICs9IChkIF4gKGIgJiAoYyBeIGQpKSkgKyBibG9ja3NbMTJdICsgMTgwNDYwMzY4MjtcbiAgICBhID0gKGEgPDwgNyB8IGEgPj4+IDI1KSArIGIgPDwgMDtcbiAgICBkICs9IChjIF4gKGEgJiAoYiBeIGMpKSkgKyBibG9ja3NbMTNdIC0gNDAzNDExMDE7XG4gICAgZCA9IChkIDw8IDEyIHwgZCA+Pj4gMjApICsgYSA8PCAwO1xuICAgIGMgKz0gKGIgXiAoZCAmIChhIF4gYikpKSArIGJsb2Nrc1sxNF0gLSAxNTAyMDAyMjkwO1xuICAgIGMgPSAoYyA8PCAxNyB8IGMgPj4+IDE1KSArIGQgPDwgMDtcbiAgICBiICs9IChhIF4gKGMgJiAoZCBeIGEpKSkgKyBibG9ja3NbMTVdICsgMTIzNjUzNTMyOTtcbiAgICBiID0gKGIgPDwgMjIgfCBiID4+PiAxMCkgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChkICYgKGIgXiBjKSkpICsgYmxvY2tzWzFdIC0gMTY1Nzk2NTEwO1xuICAgIGEgPSAoYSA8PCA1IHwgYSA+Pj4gMjcpICsgYiA8PCAwO1xuICAgIGQgKz0gKGIgXiAoYyAmIChhIF4gYikpKSArIGJsb2Nrc1s2XSAtIDEwNjk1MDE2MzI7XG4gICAgZCA9IChkIDw8IDkgfCBkID4+PiAyMykgKyBhIDw8IDA7XG4gICAgYyArPSAoYSBeIChiICYgKGQgXiBhKSkpICsgYmxvY2tzWzExXSArIDY0MzcxNzcxMztcbiAgICBjID0gKGMgPDwgMTQgfCBjID4+PiAxOCkgKyBkIDw8IDA7XG4gICAgYiArPSAoZCBeIChhICYgKGMgXiBkKSkpICsgYmxvY2tzWzBdIC0gMzczODk3MzAyO1xuICAgIGIgPSAoYiA8PCAyMCB8IGIgPj4+IDEyKSArIGMgPDwgMDtcbiAgICBhICs9IChjIF4gKGQgJiAoYiBeIGMpKSkgKyBibG9ja3NbNV0gLSA3MDE1NTg2OTE7XG4gICAgYSA9IChhIDw8IDUgfCBhID4+PiAyNykgKyBiIDw8IDA7XG4gICAgZCArPSAoYiBeIChjICYgKGEgXiBiKSkpICsgYmxvY2tzWzEwXSArIDM4MDE2MDgzO1xuICAgIGQgPSAoZCA8PCA5IHwgZCA+Pj4gMjMpICsgYSA8PCAwO1xuICAgIGMgKz0gKGEgXiAoYiAmIChkIF4gYSkpKSArIGJsb2Nrc1sxNV0gLSA2NjA0NzgzMzU7XG4gICAgYyA9IChjIDw8IDE0IHwgYyA+Pj4gMTgpICsgZCA8PCAwO1xuICAgIGIgKz0gKGQgXiAoYSAmIChjIF4gZCkpKSArIGJsb2Nrc1s0XSAtIDQwNTUzNzg0ODtcbiAgICBiID0gKGIgPDwgMjAgfCBiID4+PiAxMikgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChkICYgKGIgXiBjKSkpICsgYmxvY2tzWzldICsgNTY4NDQ2NDM4O1xuICAgIGEgPSAoYSA8PCA1IHwgYSA+Pj4gMjcpICsgYiA8PCAwO1xuICAgIGQgKz0gKGIgXiAoYyAmIChhIF4gYikpKSArIGJsb2Nrc1sxNF0gLSAxMDE5ODAzNjkwO1xuICAgIGQgPSAoZCA8PCA5IHwgZCA+Pj4gMjMpICsgYSA8PCAwO1xuICAgIGMgKz0gKGEgXiAoYiAmIChkIF4gYSkpKSArIGJsb2Nrc1szXSAtIDE4NzM2Mzk2MTtcbiAgICBjID0gKGMgPDwgMTQgfCBjID4+PiAxOCkgKyBkIDw8IDA7XG4gICAgYiArPSAoZCBeIChhICYgKGMgXiBkKSkpICsgYmxvY2tzWzhdICsgMTE2MzUzMTUwMTtcbiAgICBiID0gKGIgPDwgMjAgfCBiID4+PiAxMikgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChkICYgKGIgXiBjKSkpICsgYmxvY2tzWzEzXSAtIDE0NDQ2ODE0Njc7XG4gICAgYSA9IChhIDw8IDUgfCBhID4+PiAyNykgKyBiIDw8IDA7XG4gICAgZCArPSAoYiBeIChjICYgKGEgXiBiKSkpICsgYmxvY2tzWzJdIC0gNTE0MDM3ODQ7XG4gICAgZCA9IChkIDw8IDkgfCBkID4+PiAyMykgKyBhIDw8IDA7XG4gICAgYyArPSAoYSBeIChiICYgKGQgXiBhKSkpICsgYmxvY2tzWzddICsgMTczNTMyODQ3MztcbiAgICBjID0gKGMgPDwgMTQgfCBjID4+PiAxOCkgKyBkIDw8IDA7XG4gICAgYiArPSAoZCBeIChhICYgKGMgXiBkKSkpICsgYmxvY2tzWzEyXSAtIDE5MjY2MDc3MzQ7XG4gICAgYiA9IChiIDw8IDIwIHwgYiA+Pj4gMTIpICsgYyA8PCAwO1xuICAgIGJjID0gYiBeIGM7XG4gICAgYSArPSAoYmMgXiBkKSArIGJsb2Nrc1s1XSAtIDM3ODU1ODtcbiAgICBhID0gKGEgPDwgNCB8IGEgPj4+IDI4KSArIGIgPDwgMDtcbiAgICBkICs9IChiYyBeIGEpICsgYmxvY2tzWzhdIC0gMjAyMjU3NDQ2MztcbiAgICBkID0gKGQgPDwgMTEgfCBkID4+PiAyMSkgKyBhIDw8IDA7XG4gICAgZGEgPSBkIF4gYTtcbiAgICBjICs9IChkYSBeIGIpICsgYmxvY2tzWzExXSArIDE4MzkwMzA1NjI7XG4gICAgYyA9IChjIDw8IDE2IHwgYyA+Pj4gMTYpICsgZCA8PCAwO1xuICAgIGIgKz0gKGRhIF4gYykgKyBibG9ja3NbMTRdIC0gMzUzMDk1NTY7XG4gICAgYiA9IChiIDw8IDIzIHwgYiA+Pj4gOSkgKyBjIDw8IDA7XG4gICAgYmMgPSBiIF4gYztcbiAgICBhICs9IChiYyBeIGQpICsgYmxvY2tzWzFdIC0gMTUzMDk5MjA2MDtcbiAgICBhID0gKGEgPDwgNCB8IGEgPj4+IDI4KSArIGIgPDwgMDtcbiAgICBkICs9IChiYyBeIGEpICsgYmxvY2tzWzRdICsgMTI3Mjg5MzM1MztcbiAgICBkID0gKGQgPDwgMTEgfCBkID4+PiAyMSkgKyBhIDw8IDA7XG4gICAgZGEgPSBkIF4gYTtcbiAgICBjICs9IChkYSBeIGIpICsgYmxvY2tzWzddIC0gMTU1NDk3NjMyO1xuICAgIGMgPSAoYyA8PCAxNiB8IGMgPj4+IDE2KSArIGQgPDwgMDtcbiAgICBiICs9IChkYSBeIGMpICsgYmxvY2tzWzEwXSAtIDEwOTQ3MzA2NDA7XG4gICAgYiA9IChiIDw8IDIzIHwgYiA+Pj4gOSkgKyBjIDw8IDA7XG4gICAgYmMgPSBiIF4gYztcbiAgICBhICs9IChiYyBeIGQpICsgYmxvY2tzWzEzXSArIDY4MTI3OTE3NDtcbiAgICBhID0gKGEgPDwgNCB8IGEgPj4+IDI4KSArIGIgPDwgMDtcbiAgICBkICs9IChiYyBeIGEpICsgYmxvY2tzWzBdIC0gMzU4NTM3MjIyO1xuICAgIGQgPSAoZCA8PCAxMSB8IGQgPj4+IDIxKSArIGEgPDwgMDtcbiAgICBkYSA9IGQgXiBhO1xuICAgIGMgKz0gKGRhIF4gYikgKyBibG9ja3NbM10gLSA3MjI1MjE5Nzk7XG4gICAgYyA9IChjIDw8IDE2IHwgYyA+Pj4gMTYpICsgZCA8PCAwO1xuICAgIGIgKz0gKGRhIF4gYykgKyBibG9ja3NbNl0gKyA3NjAyOTE4OTtcbiAgICBiID0gKGIgPDwgMjMgfCBiID4+PiA5KSArIGMgPDwgMDtcbiAgICBiYyA9IGIgXiBjO1xuICAgIGEgKz0gKGJjIF4gZCkgKyBibG9ja3NbOV0gLSA2NDAzNjQ0ODc7XG4gICAgYSA9IChhIDw8IDQgfCBhID4+PiAyOCkgKyBiIDw8IDA7XG4gICAgZCArPSAoYmMgXiBhKSArIGJsb2Nrc1sxMl0gLSA0MjE4MTU4MzU7XG4gICAgZCA9IChkIDw8IDExIHwgZCA+Pj4gMjEpICsgYSA8PCAwO1xuICAgIGRhID0gZCBeIGE7XG4gICAgYyArPSAoZGEgXiBiKSArIGJsb2Nrc1sxNV0gKyA1MzA3NDI1MjA7XG4gICAgYyA9IChjIDw8IDE2IHwgYyA+Pj4gMTYpICsgZCA8PCAwO1xuICAgIGIgKz0gKGRhIF4gYykgKyBibG9ja3NbMl0gLSA5OTUzMzg2NTE7XG4gICAgYiA9IChiIDw8IDIzIHwgYiA+Pj4gOSkgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChiIHwgfmQpKSArIGJsb2Nrc1swXSAtIDE5ODYzMDg0NDtcbiAgICBhID0gKGEgPDwgNiB8IGEgPj4+IDI2KSArIGIgPDwgMDtcbiAgICBkICs9IChiIF4gKGEgfCB+YykpICsgYmxvY2tzWzddICsgMTEyNjg5MTQxNTtcbiAgICBkID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIDw8IDA7XG4gICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGJsb2Nrc1sxNF0gLSAxNDE2MzU0OTA1O1xuICAgIGMgPSAoYyA8PCAxNSB8IGMgPj4+IDE3KSArIGQgPDwgMDtcbiAgICBiICs9IChkIF4gKGMgfCB+YSkpICsgYmxvY2tzWzVdIC0gNTc0MzQwNTU7XG4gICAgYiA9IChiIDw8IDIxIHwgYiA+Pj4gMTEpICsgYyA8PCAwO1xuICAgIGEgKz0gKGMgXiAoYiB8IH5kKSkgKyBibG9ja3NbMTJdICsgMTcwMDQ4NTU3MTtcbiAgICBhID0gKGEgPDwgNiB8IGEgPj4+IDI2KSArIGIgPDwgMDtcbiAgICBkICs9IChiIF4gKGEgfCB+YykpICsgYmxvY2tzWzNdIC0gMTg5NDk4NjYwNjtcbiAgICBkID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIDw8IDA7XG4gICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGJsb2Nrc1sxMF0gLSAxMDUxNTIzO1xuICAgIGMgPSAoYyA8PCAxNSB8IGMgPj4+IDE3KSArIGQgPDwgMDtcbiAgICBiICs9IChkIF4gKGMgfCB+YSkpICsgYmxvY2tzWzFdIC0gMjA1NDkyMjc5OTtcbiAgICBiID0gKGIgPDwgMjEgfCBiID4+PiAxMSkgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChiIHwgfmQpKSArIGJsb2Nrc1s4XSArIDE4NzMzMTMzNTk7XG4gICAgYSA9IChhIDw8IDYgfCBhID4+PiAyNikgKyBiIDw8IDA7XG4gICAgZCArPSAoYiBeIChhIHwgfmMpKSArIGJsb2Nrc1sxNV0gLSAzMDYxMTc0NDtcbiAgICBkID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIDw8IDA7XG4gICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGJsb2Nrc1s2XSAtIDE1NjAxOTgzODA7XG4gICAgYyA9IChjIDw8IDE1IHwgYyA+Pj4gMTcpICsgZCA8PCAwO1xuICAgIGIgKz0gKGQgXiAoYyB8IH5hKSkgKyBibG9ja3NbMTNdICsgMTMwOTE1MTY0OTtcbiAgICBiID0gKGIgPDwgMjEgfCBiID4+PiAxMSkgKyBjIDw8IDA7XG4gICAgYSArPSAoYyBeIChiIHwgfmQpKSArIGJsb2Nrc1s0XSAtIDE0NTUyMzA3MDtcbiAgICBhID0gKGEgPDwgNiB8IGEgPj4+IDI2KSArIGIgPDwgMDtcbiAgICBkICs9IChiIF4gKGEgfCB+YykpICsgYmxvY2tzWzExXSAtIDExMjAyMTAzNzk7XG4gICAgZCA9IChkIDw8IDEwIHwgZCA+Pj4gMjIpICsgYSA8PCAwO1xuICAgIGMgKz0gKGEgXiAoZCB8IH5iKSkgKyBibG9ja3NbMl0gKyA3MTg3ODcyNTk7XG4gICAgYyA9IChjIDw8IDE1IHwgYyA+Pj4gMTcpICsgZCA8PCAwO1xuICAgIGIgKz0gKGQgXiAoYyB8IH5hKSkgKyBibG9ja3NbOV0gLSAzNDM0ODU1NTE7XG4gICAgYiA9IChiIDw8IDIxIHwgYiA+Pj4gMTEpICsgYyA8PCAwO1xuXG4gICAgaWYgKHRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuaDAgPSBhICsgMTczMjU4NDE5MyA8PCAwO1xuICAgICAgdGhpcy5oMSA9IGIgLSAyNzE3MzM4NzkgPDwgMDtcbiAgICAgIHRoaXMuaDIgPSBjIC0gMTczMjU4NDE5NCA8PCAwO1xuICAgICAgdGhpcy5oMyA9IGQgKyAyNzE3MzM4NzggPDwgMDtcbiAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oMCA9IHRoaXMuaDAgKyBhIDw8IDA7XG4gICAgICB0aGlzLmgxID0gdGhpcy5oMSArIGIgPDwgMDtcbiAgICAgIHRoaXMuaDIgPSB0aGlzLmgyICsgYyA8PCAwO1xuICAgICAgdGhpcy5oMyA9IHRoaXMuaDMgKyBkIDw8IDA7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGhleFxuICAgKiBAbWVtYmVyb2YgTWQ1XG4gICAqIEBpbnN0YW5jZVxuICAgKiBAZGVzY3JpcHRpb24gT3V0cHV0IGhhc2ggYXMgaGV4IHN0cmluZ1xuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBIZXggc3RyaW5nXG4gICAqIEBzZWUge0BsaW5rIG1kNS5oZXh9XG4gICAqIEBleGFtcGxlXG4gICAqIGhhc2guaGV4KCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDAgPSB0aGlzLmgwLCBoMSA9IHRoaXMuaDEsIGgyID0gdGhpcy5oMiwgaDMgPSB0aGlzLmgzO1xuXG4gICAgcmV0dXJuIEhFWF9DSEFSU1soaDAgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDAgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDAgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDAgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMSA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gxICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMSA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDEgPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMSA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMSA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDIgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMiA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDIgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDIgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDMgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMyAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDMgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMyA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDMgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMyA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDMgPj4gMjQpICYgMHgwRl07XG4gIH07XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgdG9TdHJpbmdcbiAgICogQG1lbWJlcm9mIE1kNVxuICAgKiBAaW5zdGFuY2VcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIGhleCBzdHJpbmdcbiAgICogQHJldHVybnMge1N0cmluZ30gSGV4IHN0cmluZ1xuICAgKiBAc2VlIHtAbGluayBtZDUuaGV4fVxuICAgKiBAZXhhbXBsZVxuICAgKiBoYXNoLnRvU3RyaW5nKCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLnRvU3RyaW5nID0gTWQ1LnByb3RvdHlwZS5oZXg7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgZGlnZXN0XG4gICAqIEBtZW1iZXJvZiBNZDVcbiAgICogQGluc3RhbmNlXG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBieXRlcyBhcnJheVxuICAgKiBAcmV0dXJucyB7QXJyYXl9IEJ5dGVzIGFycmF5XG4gICAqIEBzZWUge0BsaW5rIG1kNS5kaWdlc3R9XG4gICAqIEBleGFtcGxlXG4gICAqIGhhc2guZGlnZXN0KCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDAgPSB0aGlzLmgwLCBoMSA9IHRoaXMuaDEsIGgyID0gdGhpcy5oMiwgaDMgPSB0aGlzLmgzO1xuICAgIHJldHVybiBbXG4gICAgICBoMCAmIDB4RkYsIChoMCA+PiA4KSAmIDB4RkYsIChoMCA+PiAxNikgJiAweEZGLCAoaDAgPj4gMjQpICYgMHhGRixcbiAgICAgIGgxICYgMHhGRiwgKGgxID4+IDgpICYgMHhGRiwgKGgxID4+IDE2KSAmIDB4RkYsIChoMSA+PiAyNCkgJiAweEZGLFxuICAgICAgaDIgJiAweEZGLCAoaDIgPj4gOCkgJiAweEZGLCAoaDIgPj4gMTYpICYgMHhGRiwgKGgyID4+IDI0KSAmIDB4RkYsXG4gICAgICBoMyAmIDB4RkYsIChoMyA+PiA4KSAmIDB4RkYsIChoMyA+PiAxNikgJiAweEZGLCAoaDMgPj4gMjQpICYgMHhGRlxuICAgIF07XG4gIH07XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgYXJyYXlcbiAgICogQG1lbWJlcm9mIE1kNVxuICAgKiBAaW5zdGFuY2VcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIGJ5dGVzIGFycmF5XG4gICAqIEByZXR1cm5zIHtBcnJheX0gQnl0ZXMgYXJyYXlcbiAgICogQHNlZSB7QGxpbmsgbWQ1LmFycmF5fVxuICAgKiBAZXhhbXBsZVxuICAgKiBoYXNoLmFycmF5KCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLmFycmF5ID0gTWQ1LnByb3RvdHlwZS5kaWdlc3Q7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgYXJyYXlCdWZmZXJcbiAgICogQG1lbWJlcm9mIE1kNVxuICAgKiBAaW5zdGFuY2VcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBoYXNoIGFzIEFycmF5QnVmZmVyXG4gICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gQXJyYXlCdWZmZXJcbiAgICogQHNlZSB7QGxpbmsgbWQ1LmFycmF5QnVmZmVyfVxuICAgKiBAZXhhbXBsZVxuICAgKiBoYXNoLmFycmF5QnVmZmVyKCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLmFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTYpO1xuICAgIHZhciBibG9ja3MgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgICBibG9ja3NbMF0gPSB0aGlzLmgwO1xuICAgIGJsb2Nrc1sxXSA9IHRoaXMuaDE7XG4gICAgYmxvY2tzWzJdID0gdGhpcy5oMjtcbiAgICBibG9ja3NbM10gPSB0aGlzLmgzO1xuICAgIHJldHVybiBidWZmZXI7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgYnVmZmVyXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWF5YmUgY29uZnVzZSB3aXRoIEJ1ZmZlciBpbiBub2RlLmpzLiBQbGVhc2UgdXNlIGFycmF5QnVmZmVyIGluc3RlYWQuXG4gICAqIEBtZW1iZXJvZiBNZDVcbiAgICogQGluc3RhbmNlXG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBBcnJheUJ1ZmZlclxuICAgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IEFycmF5QnVmZmVyXG4gICAqIEBzZWUge0BsaW5rIG1kNS5idWZmZXJ9XG4gICAqIEBleGFtcGxlXG4gICAqIGhhc2guYnVmZmVyKCk7XG4gICAqL1xuICBNZDUucHJvdG90eXBlLmJ1ZmZlciA9IE1kNS5wcm90b3R5cGUuYXJyYXlCdWZmZXI7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgYmFzZTY0XG4gICAqIEBtZW1iZXJvZiBNZDVcbiAgICogQGluc3RhbmNlXG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgaGFzaCBhcyBiYXNlNjQgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IGJhc2U2NCBzdHJpbmdcbiAgICogQHNlZSB7QGxpbmsgbWQ1LmJhc2U2NH1cbiAgICogQGV4YW1wbGVcbiAgICogaGFzaC5iYXNlNjQoKTtcbiAgICovXG4gIE1kNS5wcm90b3R5cGUuYmFzZTY0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2MSwgdjIsIHYzLCBiYXNlNjRTdHIgPSAnJywgYnl0ZXMgPSB0aGlzLmFycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTspIHtcbiAgICAgIHYxID0gYnl0ZXNbaSsrXTtcbiAgICAgIHYyID0gYnl0ZXNbaSsrXTtcbiAgICAgIHYzID0gYnl0ZXNbaSsrXTtcbiAgICAgIGJhc2U2NFN0ciArPSBCQVNFNjRfRU5DT0RFX0NIQVJbdjEgPj4+IDJdICtcbiAgICAgICAgQkFTRTY0X0VOQ09ERV9DSEFSWyh2MSA8PCA0IHwgdjIgPj4+IDQpICYgNjNdICtcbiAgICAgICAgQkFTRTY0X0VOQ09ERV9DSEFSWyh2MiA8PCAyIHwgdjMgPj4+IDYpICYgNjNdICtcbiAgICAgICAgQkFTRTY0X0VOQ09ERV9DSEFSW3YzICYgNjNdO1xuICAgIH1cbiAgICB2MSA9IGJ5dGVzW2ldO1xuICAgIGJhc2U2NFN0ciArPSBCQVNFNjRfRU5DT0RFX0NIQVJbdjEgPj4+IDJdICtcbiAgICAgIEJBU0U2NF9FTkNPREVfQ0hBUlsodjEgPDwgNCkgJiA2M10gK1xuICAgICAgJz09JztcbiAgICByZXR1cm4gYmFzZTY0U3RyO1xuICB9O1xuXG4gIHZhciBleHBvcnRzID0gY3JlYXRlTWV0aG9kKCk7XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiAgfSBlbHNlIHtcbiAgICAvKipcbiAgICAgKiBAbWV0aG9kIG1kNVxiXG4gICAgICogQGRlc2NyaXB0aW9uIE1kNSBoYXNoIGZ1bmN0aW9uLCBleHBvcnQgdG8gZ2xvYmFsIGluIGJyb3dzZXJzLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fFVpbnQ4QXJyYXl8QXJyYXlCdWZmZXJ9IG1lc3NhZ2UgbWVzc2FnZSB0byBoYXNoXG4gICAgICogQHJldHVybnMge1N0cmluZ30gbWQ1IGhhc2hlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICogbWQ1KCcnKTsgLy8gZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2VcbiAgICAgKiBtZDUoJ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cnKTsgLy8gOWUxMDdkOWQzNzJiYjY4MjZiZDgxZDM1NDJhNDE5ZDZcbiAgICAgKiBtZDUoJ1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuJyk7IC8vIGU0ZDkwOWMyOTBkMGZiMWNhMDY4ZmZhZGRmMjJjYmQwXG4gICAgICpcbiAgICAgKiAvLyBJdCBhbHNvIHN1cHBvcnRzIFVURi04IGVuY29kaW5nXG4gICAgICogbWQ1KCfkuK3mlocnKTsgLy8gYTdiYWMyMjM5ZmNkY2IzYTA2NzkwM2Q4MDc3YzRhMDdcbiAgICAgKlxuICAgICAqIC8vIEl0IGFsc28gc3VwcG9ydHMgYnl0ZSBgQXJyYXlgLCBgVWludDhBcnJheWAsIGBBcnJheUJ1ZmZlcmBcbiAgICAgKiBtZDUoW10pOyAvLyBkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZVxuICAgICAqIG1kNShuZXcgVWludDhBcnJheShbXSkpOyAvLyBkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZVxuICAgICAqL1xuICAgIHJvb3QubWQ1ID0gZXhwb3J0cztcbiAgICBpZiAoQU1EKSB7XG4gICAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/js-md5/src/md5.js\n"); - -/***/ }), - -/***/ "./node_modules/process/browser.js": -/*!*****************************************!*\ - !*** ./node_modules/process/browser.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz9mMjhjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/process/browser.js\n"); - -/***/ }), - -/***/ "./node_modules/webpack/buildin/amd-options.js": -/*!****************************************!*\ - !*** (webpack)/buildin/amd-options.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n\n/* WEBPACK VAR INJECTION */}.call(this, {\"toUrlUndefined\":true}))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2FtZC1vcHRpb25zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2FtZC1vcHRpb25zLmpzPzAwODYiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXyAqL1xubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/amd-options.js\n"); - -/***/ }), - -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/Y2QwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/global.js\n"); - -/***/ }), - -/***/ "./src/BaseDialog/index.js": -/*!*********************************!*\ - !*** ./src/BaseDialog/index.js ***! - \*********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar BaseDialog = /*#__PURE__*/function () {\n function BaseDialog(container) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var only = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, BaseDialog);\n this.container = container;\n this.options = _objectSpread({}, options);\n this.options.ismove = true;\n if (options.ismove === false) {\n this.options.ismove = options.ismove;\n }\n this.closeCallBack = options.closeCallBack;\n this._element = {};\n this._element_style = undefined;\n this.only = only;\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(BaseDialog, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var _this2 = this;\n var curtain, closeBtnsBox, closeBtns, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (this.only) {\n this.closeAll();\n }\n DialogAll.push(this);\n this.isDestroy = false;\n // body\n this._element.body = document.createElement('div');\n this._element.body.className = 'YJ-custom-base-dialog';\n this._element.body.style.top = this.options.top;\n this._element.body.style.bottom = this.options.bottom;\n this._element.body.style.left = this.options.left;\n this._element.body.style.right = this.options.right;\n this.container.appendChild(this._element.body);\n\n //title\n this._element.title = document.createElement('div');\n this._element.title.className = 'title-box';\n this._element.title.innerHTML = \"\".concat(this.options.title || '', \"\") + \"\";\n this._element.body.appendChild(this._element.title);\n\n //content\n _context.next = 16;\n return document.createElement('div');\n case 16:\n this._element.content = _context.sent;\n this._element.content.className = 'content';\n this._element.body.appendChild(this._element.content);\n\n // foot\n _context.next = 21;\n return document.createElement('div');\n case 21:\n this._element.foot = _context.sent;\n this._element.foot.className = 'foot';\n // this._element.foot.innerHTML = `\n // \n // \n // \n // \n // `\n this._element.foot.innerHTML = \"\\n \\n \";\n this._element.body.appendChild(this._element.foot);\n _context.next = 27;\n return document.createElement('div');\n case 27:\n curtain = _context.sent;\n curtain.style.position = 'absolute';\n curtain.style.top = '0';\n curtain.style.left = '0';\n curtain.style.width = '100%';\n curtain.style.height = '100%';\n curtain.style.backdropFilter = 'blur(2px)';\n curtain.style.zIndex = '-999999';\n this._element.body.appendChild(curtain);\n\n // 关闭\n closeBtnsBox = this._element.body.getElementsByClassName('close-box')[0];\n closeBtnsBox.addEventListener('click', function () {\n _this2.close();\n });\n closeBtns = this._element.body.getElementsByClassName('close');\n for (i = 0; i < closeBtns.length; i++) {\n closeBtns[i].addEventListener('click', function () {\n _this2.close();\n });\n }\n if (this.options.ismove) {\n this.moveDiv();\n }\n case 41:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n }, {\n key: \"close\",\n value: function close() {\n var styles = document.getElementsByTagName(\"style\");\n for (var i = styles.length - 1; i >= 0; i--) {\n if (styles[i].dataset) {\n if (styles[i].dataset.name === 'YJ_style_dialog') {\n document.getElementsByTagName('head')[0].removeChild(styles[i]);\n }\n }\n }\n if (this._element.body && this._element.body.parentNode) {\n this.container.removeChild(this._element.body);\n }\n this._element.body = null;\n this._element.title = null;\n this._element.content = null;\n this._element.foot = null;\n this._element_style = null;\n this.isDestroy = true;\n if (this.closeCallBack) {\n this.closeCallBack();\n this.closeCallBack = null;\n }\n }\n }, {\n key: \"closeAll\",\n value: function closeAll() {\n for (var i = DialogAll.length - 1; i >= 0; i--) {\n DialogAll[i].close();\n DialogAll.splice(i, 1);\n }\n return;\n var styles = document.getElementsByTagName(\"style\");\n for (var _i = styles.length - 1; _i >= 0; _i--) {\n if (styles[_i].dataset) {\n if (styles[_i].dataset.name === 'YJ_style_dialog') {\n document.getElementsByTagName('head')[0].removeChild(styles[_i]);\n }\n }\n }\n if (this._element_style) {\n this._element_style = null;\n }\n var elms = this.container.getElementsByClassName('YJ-custom-base-dialog');\n for (var _i2 = elms.length - 1; _i2 >= 0; _i2--) {\n this.container.removeChild(elms[_i2]);\n }\n this._element.body = null;\n this._element.title = null;\n this._element.content = null;\n this._element.foot = null;\n }\n }, {\n key: \"titleAppChild\",\n value: function titleAppChild(node) {\n this._element.title.appendChild(node);\n }\n }, {\n key: \"contentAppChild\",\n value: function contentAppChild(node) {\n this._element.content.appendChild(node);\n }\n }, {\n key: \"footAppChild\",\n value: function footAppChild(node, target) {\n if (target) {\n this._element.foot.insertBefore(node, target);\n } else {\n this._element.foot.prepend(node);\n }\n }\n }, {\n key: \"moveDiv\",\n value: function moveDiv() {\n var _this3 = this;\n var x = 0;\n var y = 0;\n var l = 0;\n var t = 0;\n var oClickDiv = this._element.body;\n var _this = this;\n oClickDiv.onmousedown = function (e) {\n if (e.toElement.className !== 'title-box') {\n return;\n }\n // dialog的宽度、高度\n // let oMoveDivHeight = that.oMoveDiv.offsetHeight\n var oMoveDivHeight = _this3._element.body.offsetHeight;\n // let oMoveDivWidth = that.oMoveDiv.offsetWidth\n var oMoveDivWidth = _this3._element.body.offsetWidth;\n x = e.clientX;\n y = e.clientY;\n var leftPx = window.getComputedStyle(_this3._element.body).left;\n var topPx = window.getComputedStyle(_this3._element.body).top;\n l = leftPx.substr(0, leftPx.indexOf('px')) * 1;\n t = topPx.substr(0, topPx.indexOf('px')) * 1;\n // 视口大小\n var windowHeight = document.documentElement.clientHeight;\n var windowWidth = document.documentElement.clientWidth;\n\n //鼠标移动\n window.onmousemove = function (e) {\n e.preventDefault();\n //获取x和y\n var nx = e.clientX;\n var ny = e.clientY;\n //计算移动后的左偏移量和顶部的偏移量\n var leftPx = nx - (x - l);\n var topPx = ny - (y - t);\n if (leftPx < 0) {\n leftPx = 0;\n } else if (leftPx + oMoveDivWidth > windowWidth) {\n leftPx = windowWidth - oMoveDivWidth;\n }\n if (topPx <= 0) {\n topPx = 0;\n } else if (topPx + oMoveDivHeight > windowHeight) {\n topPx = windowHeight - oMoveDivHeight;\n }\n _this._element.body.style.left = leftPx + 'px';\n _this._element.body.style.top = topPx + 'px';\n _this._element.body.style.bottom = 'unset';\n _this._element.body.style.right = 'unset';\n };\n\n //鼠标抬起事件\n document.onmouseup = function (e) {\n window.onmousemove = null;\n };\n window.ondragend = function (e) {\n window.onmousemove = null;\n };\n };\n\n //鼠标抬起事件\n document.onmouseup = function (e) {\n window.onmousemove = null;\n };\n window.ondragend = function (e) {\n window.onmousemove = null;\n };\n }\n }]);\n}();\nvar DialogAll = [];\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseDialog);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQmFzZURpYWxvZy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9CYXNlRGlhbG9nL2luZGV4LmpzPzg2ZWQiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQmFzZURpYWxvZyB7XHJcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCBvcHRpb25zID0ge30sIG9ubHkgPSB0cnVlKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lclxyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMub3B0aW9ucy5pc21vdmUgPSB0cnVlXHJcbiAgICBpZiAob3B0aW9ucy5pc21vdmUgPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5pc21vdmUgPSBvcHRpb25zLmlzbW92ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZUNhbGxCYWNrID0gb3B0aW9ucy5jbG9zZUNhbGxCYWNrXHJcbiAgICB0aGlzLl9lbGVtZW50ID0ge31cclxuICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSB1bmRlZmluZWRcclxuICAgIHRoaXMub25seSA9IG9ubHlcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5vbmx5KSB7XHJcbiAgICAgIHRoaXMuY2xvc2VBbGwoKVxyXG4gICAgfVxyXG4gICAgRGlhbG9nQWxsLnB1c2godGhpcylcclxuICAgIHRoaXMuaXNEZXN0cm95ID0gZmFsc2VcclxuICAgIC8vIGJvZHlcclxuICAgIHRoaXMuX2VsZW1lbnQuYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9ICdZSi1jdXN0b20tYmFzZS1kaWFsb2cnO1xyXG4gICAgdGhpcy5fZWxlbWVudC5ib2R5LnN0eWxlLnRvcCA9IHRoaXMub3B0aW9ucy50b3BcclxuICAgIHRoaXMuX2VsZW1lbnQuYm9keS5zdHlsZS5ib3R0b20gPSB0aGlzLm9wdGlvbnMuYm90dG9tXHJcbiAgICB0aGlzLl9lbGVtZW50LmJvZHkuc3R5bGUubGVmdCA9IHRoaXMub3B0aW9ucy5sZWZ0XHJcbiAgICB0aGlzLl9lbGVtZW50LmJvZHkuc3R5bGUucmlnaHQgPSB0aGlzLm9wdGlvbnMucmlnaHRcclxuICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQuYm9keSlcclxuXHJcbiAgICAvL3RpdGxlXHJcbiAgICB0aGlzLl9lbGVtZW50LnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLl9lbGVtZW50LnRpdGxlLmNsYXNzTmFtZSA9ICd0aXRsZS1ib3gnO1xyXG4gICAgdGhpcy5fZWxlbWVudC50aXRsZS5pbm5lckhUTUwgPSBgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPiR7KHRoaXMub3B0aW9ucy50aXRsZSB8fCAnJyl9PC9zcGFuPmAgKyBgPHNwYW4gY2xhc3M9XCJjbG9zZS1ib3hcIj48c3BhbiBjbGFzcz1cImNsb3NlXCI+PC9zcGFuPjxpPiYjMTAwMDU8L2k+PC9zcGFuPmBcclxuICAgIHRoaXMuX2VsZW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50LnRpdGxlKVxyXG5cclxuICAgIC8vY29udGVudFxyXG4gICAgdGhpcy5fZWxlbWVudC5jb250ZW50ID0gYXdhaXQgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLl9lbGVtZW50LmNvbnRlbnQuY2xhc3NOYW1lID0gJ2NvbnRlbnQnO1xyXG4gICAgdGhpcy5fZWxlbWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQuY29udGVudClcclxuXHJcbiAgICAvLyBmb290XHJcbiAgICB0aGlzLl9lbGVtZW50LmZvb3QgPSBhd2FpdCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuX2VsZW1lbnQuZm9vdC5jbGFzc05hbWUgPSAnZm9vdCc7XHJcbiAgICAvLyB0aGlzLl9lbGVtZW50LmZvb3QuaW5uZXJIVE1MID0gYFxyXG4gICAgLy8gPGJ1dHRvbiBjbGFzcz1cInRyYW5zbGF0aW9uYWxcIj7lubPnp7s8L2J1dHRvbj5cclxuICAgIC8vIDxidXR0b24gY2xhc3M9XCJyZXNldHRpbmdcIj7ph43nva48L2J1dHRvbj5cclxuICAgIC8vIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIj7liKDpmaQ8L2J1dHRvbj5cclxuICAgIC8vIDxidXR0b24gY2xhc3M9XCJjbG9zZVwiPuWFs+mXrTwvYnV0dG9uPlxyXG4gICAgLy8gYFxyXG4gICAgdGhpcy5fZWxlbWVudC5mb290LmlubmVySFRNTCA9IGBcclxuICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZVwiPuWFs+mXrTwvYnV0dG9uPlxyXG4gICAgYFxyXG4gICAgdGhpcy5fZWxlbWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQuZm9vdClcclxuICAgIGxldCBjdXJ0YWluID0gYXdhaXQgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGN1cnRhaW4uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbiAgICBjdXJ0YWluLnN0eWxlLnRvcCA9ICcwJ1xyXG4gICAgY3VydGFpbi5zdHlsZS5sZWZ0ID0gJzAnXHJcbiAgICBjdXJ0YWluLnN0eWxlLndpZHRoID0gJzEwMCUnXHJcbiAgICBjdXJ0YWluLnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gICAgY3VydGFpbi5zdHlsZS5iYWNrZHJvcEZpbHRlciA9ICdibHVyKDJweCknXHJcbiAgICBjdXJ0YWluLnN0eWxlLnpJbmRleCA9ICctOTk5OTk5J1xyXG4gICAgdGhpcy5fZWxlbWVudC5ib2R5LmFwcGVuZENoaWxkKGN1cnRhaW4pXHJcblxyXG4gICAgLy8g5YWz6ZetXHJcbiAgICBsZXQgY2xvc2VCdG5zQm94ID0gdGhpcy5fZWxlbWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nsb3NlLWJveCcpWzBdO1xyXG4gICAgY2xvc2VCdG5zQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlKClcclxuICAgIH0pO1xyXG4gICAgbGV0IGNsb3NlQnRucyA9IHRoaXMuX2VsZW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbG9zZScpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbG9zZUJ0bnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY2xvc2VCdG5zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzbW92ZSkge1xyXG4gICAgICB0aGlzLm1vdmVEaXYoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBsZXQgc3R5bGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzdHlsZVwiKVxyXG4gICAgZm9yIChsZXQgaSA9IHN0eWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBpZiAoc3R5bGVzW2ldLmRhdGFzZXQpIHtcclxuICAgICAgICBpZiAoc3R5bGVzW2ldLmRhdGFzZXQubmFtZSA9PT0gJ1lKX3N0eWxlX2RpYWxvZycpIHtcclxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQoc3R5bGVzW2ldKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQuYm9keSAmJiB0aGlzLl9lbGVtZW50LmJvZHkucGFyZW50Tm9kZSkge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50LmJvZHkpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtZW50LmJvZHkgPSBudWxsXHJcbiAgICB0aGlzLl9lbGVtZW50LnRpdGxlID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudC5jb250ZW50ID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudC5mb290ID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgIHRoaXMuaXNEZXN0cm95ID0gdHJ1ZVxyXG4gICAgaWYgKHRoaXMuY2xvc2VDYWxsQmFjaykge1xyXG4gICAgICB0aGlzLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICB0aGlzLmNsb3NlQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbCgpIHtcclxuICAgIGZvciAobGV0IGkgPSBEaWFsb2dBbGwubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgRGlhbG9nQWxsW2ldLmNsb3NlKClcclxuICAgICAgRGlhbG9nQWxsLnNwbGljZShpLCAxKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgc3R5bGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzdHlsZVwiKVxyXG4gICAgZm9yIChsZXQgaSA9IHN0eWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBpZiAoc3R5bGVzW2ldLmRhdGFzZXQpIHtcclxuICAgICAgICBpZiAoc3R5bGVzW2ldLmRhdGFzZXQubmFtZSA9PT0gJ1lKX3N0eWxlX2RpYWxvZycpIHtcclxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQoc3R5bGVzW2ldKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgIH1cclxuICAgIGxldCBlbG1zID0gdGhpcy5jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWJhc2UtZGlhbG9nJylcclxuICAgIGZvciAobGV0IGkgPSBlbG1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKGVsbXNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtZW50LmJvZHkgPSBudWxsXHJcbiAgICB0aGlzLl9lbGVtZW50LnRpdGxlID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudC5jb250ZW50ID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudC5mb290ID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgdGl0bGVBcHBDaGlsZChub2RlKSB7XHJcbiAgICB0aGlzLl9lbGVtZW50LnRpdGxlLmFwcGVuZENoaWxkKG5vZGUpXHJcbiAgfVxyXG4gIGNvbnRlbnRBcHBDaGlsZChub2RlKSB7XHJcbiAgICB0aGlzLl9lbGVtZW50LmNvbnRlbnQuYXBwZW5kQ2hpbGQobm9kZSlcclxuICB9XHJcbiAgZm9vdEFwcENoaWxkKG5vZGUsIHRhcmdldCkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50LmZvb3QuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fZWxlbWVudC5mb290LnByZXBlbmQobm9kZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmVEaXYoKSB7XHJcbiAgICBsZXQgeCA9IDBcclxuICAgIGxldCB5ID0gMFxyXG4gICAgbGV0IGwgPSAwXHJcbiAgICBsZXQgdCA9IDBcclxuICAgIGxldCBvQ2xpY2tEaXYgPSB0aGlzLl9lbGVtZW50LmJvZHlcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIG9DbGlja0Rpdi5vbm1vdXNlZG93biA9IChlKSA9PiB7XHJcbiAgICAgIGlmIChlLnRvRWxlbWVudC5jbGFzc05hbWUgIT09ICd0aXRsZS1ib3gnKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgLy8gZGlhbG9n55qE5a695bqm44CB6auY5bqmXHJcbiAgICAgIC8vIGxldCBvTW92ZURpdkhlaWdodCA9IHRoYXQub01vdmVEaXYub2Zmc2V0SGVpZ2h0XHJcbiAgICAgIGxldCBvTW92ZURpdkhlaWdodCA9IHRoaXMuX2VsZW1lbnQuYm9keS5vZmZzZXRIZWlnaHRcclxuICAgICAgLy8gbGV0IG9Nb3ZlRGl2V2lkdGggPSB0aGF0Lm9Nb3ZlRGl2Lm9mZnNldFdpZHRoXHJcbiAgICAgIGxldCBvTW92ZURpdldpZHRoID0gdGhpcy5fZWxlbWVudC5ib2R5Lm9mZnNldFdpZHRoXHJcblxyXG4gICAgICB4ID0gZS5jbGllbnRYXHJcbiAgICAgIHkgPSBlLmNsaWVudFlcclxuXHJcbiAgICAgIGxldCBsZWZ0UHggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9lbGVtZW50LmJvZHkpLmxlZnRcclxuICAgICAgbGV0IHRvcFB4ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudC5ib2R5KS50b3BcclxuXHJcbiAgICAgIGwgPSBsZWZ0UHguc3Vic3RyKDAsIGxlZnRQeC5pbmRleE9mKCdweCcpKSAqIDFcclxuICAgICAgdCA9IHRvcFB4LnN1YnN0cigwLCB0b3BQeC5pbmRleE9mKCdweCcpKSAqIDFcclxuICAgICAgLy8g6KeG5Y+j5aSn5bCPXHJcbiAgICAgIGxldCB3aW5kb3dIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XHJcbiAgICAgIGxldCB3aW5kb3dXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aFxyXG5cclxuICAgICAgLy/pvKDmoIfnp7vliqhcclxuICAgICAgd2luZG93Lm9ubW91c2Vtb3ZlID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcclxuICAgICAgICAvL+iOt+WPlnjlkox5XHJcbiAgICAgICAgbGV0IG54ID0gZS5jbGllbnRYXHJcbiAgICAgICAgbGV0IG55ID0gZS5jbGllbnRZXHJcbiAgICAgICAgLy/orqHnrpfnp7vliqjlkI7nmoTlt6blgY/np7vph4/lkozpobbpg6jnmoTlgY/np7vph49cclxuICAgICAgICBsZXQgbGVmdFB4ID0gbnggLSAoeCAtIGwpXHJcbiAgICAgICAgbGV0IHRvcFB4ID0gbnkgLSAoeSAtIHQpXHJcbiAgICAgICAgaWYgKGxlZnRQeCA8IDApIHtcclxuICAgICAgICAgIGxlZnRQeCA9IDBcclxuICAgICAgICB9IGVsc2UgaWYgKGxlZnRQeCArIG9Nb3ZlRGl2V2lkdGggPiB3aW5kb3dXaWR0aCkge1xyXG4gICAgICAgICAgbGVmdFB4ID0gd2luZG93V2lkdGggLSBvTW92ZURpdldpZHRoXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodG9wUHggPD0gMCkge1xyXG4gICAgICAgICAgdG9wUHggPSAwXHJcbiAgICAgICAgfSBlbHNlIGlmICh0b3BQeCArIG9Nb3ZlRGl2SGVpZ2h0ID4gd2luZG93SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0b3BQeCA9IHdpbmRvd0hlaWdodCAtIG9Nb3ZlRGl2SGVpZ2h0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLl9lbGVtZW50LmJvZHkuc3R5bGUubGVmdCA9IGxlZnRQeCArICdweCdcclxuICAgICAgICBfdGhpcy5fZWxlbWVudC5ib2R5LnN0eWxlLnRvcCA9IHRvcFB4ICsgJ3B4J1xyXG4gICAgICAgIF90aGlzLl9lbGVtZW50LmJvZHkuc3R5bGUuYm90dG9tID0gJ3Vuc2V0J1xyXG4gICAgICAgIF90aGlzLl9lbGVtZW50LmJvZHkuc3R5bGUucmlnaHQgPSAndW5zZXQnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v6byg5qCH5oqs6LW35LqL5Lu2XHJcbiAgICAgIGRvY3VtZW50Lm9ubW91c2V1cCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgd2luZG93Lm9ubW91c2Vtb3ZlID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvdy5vbmRyYWdlbmQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1vdXNlbW92ZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6byg5qCH5oqs6LW35LqL5Lu2XHJcbiAgICBkb2N1bWVudC5vbm1vdXNldXAgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICB3aW5kb3cub25tb3VzZW1vdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgICB3aW5kb3cub25kcmFnZW5kID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgd2luZG93Lm9ubW91c2Vtb3ZlID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxubGV0IERpYWxvZ0FsbCA9IFtdXHJcblxyXG5leHBvcnQgZGVmYXVsdCBCYXNlRGlhbG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaEVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/BaseDialog/index.js\n"); - -/***/ }), - -/***/ "./src/BaseDialog/rule.js": -/*!********************************!*\ - !*** ./src/BaseDialog/rule.js ***! - \********************************/ -/*! exports provided: check */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"check\", function() { return check; });\nfunction check(elm, rule) {\n var input = elm.getElementsByTagName('input')[0];\n rules[rule.validator](input, rule.trigger, function (s, error) {\n if (s) {\n elm.className = 'input-box';\n var eElm = elm.getElementsByClassName('input-error-text')[0];\n if (eElm) {\n elm.removeChild(eElm);\n }\n } else {\n elm.className = 'input-box error';\n var e = rule.message || error;\n var _eElm = document.createElement('span');\n _eElm.className = 'input-error-text';\n _eElm.innerHTML = e;\n elm.appendChild(_eElm);\n }\n });\n}\nvar rules = {\n notEmpty: function notEmpty(input, trigger, cd) {\n input.addEventListener(trigger, function () {\n if (input.value) {\n cd(true);\n } else {\n cd(false, '不能为空!');\n }\n });\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQmFzZURpYWxvZy9ydWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0Jhc2VEaWFsb2cvcnVsZS5qcz82NWJlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNoZWNrKGVsbSwgcnVsZSkge1xyXG4gIGxldCBpbnB1dCA9IGVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gIHJ1bGVzW3J1bGUudmFsaWRhdG9yXShpbnB1dCwgcnVsZS50cmlnZ2VyLCAocywgZXJyb3IpID0+IHtcclxuICAgIGlmIChzKSB7XHJcbiAgICAgIGVsbS5jbGFzc05hbWUgPSAnaW5wdXQtYm94J1xyXG4gICAgICBsZXQgZUVsbSA9IGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1lcnJvci10ZXh0JylbMF1cclxuICAgICAgaWYoZUVsbSkge1xyXG4gICAgICAgIGVsbS5yZW1vdmVDaGlsZChlRWxtKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1ib3ggZXJyb3InXHJcbiAgICAgIGxldCBlID0gcnVsZS5tZXNzYWdlIHx8IGVycm9yXHJcbiAgICAgIGxldCBlRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICBlRWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1lcnJvci10ZXh0J1xyXG4gICAgICBlRWxtLmlubmVySFRNTCA9IGVcclxuICAgICAgZWxtLmFwcGVuZENoaWxkKGVFbG0pXHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgcnVsZXMgPSB7XHJcbiAgbm90RW1wdHk6IChpbnB1dCwgdHJpZ2dlciwgY2QpID0+IHtcclxuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIodHJpZ2dlciwgKCk9PntcclxuICAgICAgaWYgKGlucHV0LnZhbHVlKSB7XHJcbiAgICAgICAgY2QodHJ1ZSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjZChmYWxzZSwgJ+S4jeiDveS4uuepuu+8gScpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBjaGVjayB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/BaseDialog/rule.js\n"); - -/***/ }), - -/***/ "./src/Controller/index.js": -/*!*********************************!*\ - !*** ./src/Controller/index.js ***! - \*********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\r\n * @description 平移旋转-改\r\n */\n\nvar ControllerObject = /*#__PURE__*/function () {\n function ControllerObject(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, ControllerObject);\n this.sdk = sdk;\n this.viwer = this.sdk.viewer;\n this.options = options;\n this.options.position = options.position || {};\n this.options.rotate = options.rotate || {};\n this.options.position.lng = this.options.position.lng || 0;\n this.options.position.lat = this.options.position.lat || 0;\n this.options.position.alt = this.options.position.alt || 0;\n this.options.rotate.x = this.options.rotate.x || 0;\n this.options.rotate.y = this.options.rotate.y || 0;\n this.options.rotate.z = this.options.rotate.z || 0;\n this.activeAxis;\n this.activeCircle;\n this.activeModelParam;\n this.origin;\n this.rayX;\n this.rayY;\n this.rayZ;\n this.arrow = {};\n this.activeState;\n this.coordArrows = [];\n this.coordCircles = [];\n this.MapEvent = new _Event__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(ControllerObject, [{\n key: \"position\",\n get: function get() {\n return this.options.position;\n },\n set: function set(v) {\n this.options.position = v;\n this.againArrow();\n this.againCircle();\n }\n }, {\n key: \"rotate\",\n get: function get() {\n return this.options.rotate;\n },\n set: function set(v) {\n this.options.rotate = v;\n }\n }, {\n key: \"initParam\",\n value: function initParam() {\n this._params = {\n tx: this.options.position.lng,\n //模型中心X轴坐标(经度,单位:十进制度)\n ty: this.options.position.lat,\n //模型中心Y轴坐标(纬度,单位:十进制度)\n tz: this.options.position.alt,\n //模型中心Z轴坐标(高程,单位:米)\n rx: this.options.rotate.x,\n //X轴(经度)方向旋转角度(单位:度)\n ry: this.options.rotate.y,\n //Y轴(纬度)方向旋转角度(单位:度)\n rz: this.options.rotate.z //Z轴(高程)方向旋转角度(单位:度)\n };\n return _objectSpread(_objectSpread({}, this.options.position), this.options.rotate);\n }\n\n /**\r\n * 开始编辑平移\r\n */\n }, {\n key: \"editTranslational\",\n value: (function () {\n var _editTranslational = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var _this2 = this;\n var _this, param, lng, lat, h, viewer, directionVectorX, directionVectorY, directionVectorZ, matrix, cameraPosition, distance, newRadius, scale, axisArrowX, axisArrowY, axisArrowZ, positions, radius, coordinatesDiffer, lastPickTime, timeoutEvent, moveEvent;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n moveEvent = function _moveEvent(movement) {\n if (!_this.activeAxis) {\n var now = Date.now();\n if (now - lastPickTime < 100) {\n clearTimeout(timeoutEvent);\n timeoutEvent = setTimeout(function () {\n moveEvent(movement);\n }, 100);\n return;\n }\n clearTimeout(timeoutEvent);\n lastPickTime = now;\n var primitives = _this.coordArrows;\n for (var i = 0; i < primitives.length; i++) {\n if (primitives[i].getGeometryInstanceAttributes) {\n switch (primitives[i]._name) {\n case 'model_edit_xAxis':\n primitives[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.RED\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n case 'model_edit_yAxis':\n primitives[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.LIME\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n case 'model_edit_zAxis':\n primitives[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.BLUE\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n default:\n }\n }\n }\n var pickedObjectArray = _this.viwer.scene.drillPick(movement.endPosition, 10);\n for (var _i = pickedObjectArray.length - 1; _i >= 0; _i--) {\n var pick = pickedObjectArray[_i];\n if (pick && pick.primitive && pick.id) {\n switch (pick.primitive._name) {\n case 'model_edit_xAxis':\n case 'model_edit_yAxis':\n case 'model_edit_zAxis':\n pick.primitive.appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.YELLOW\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n return;\n default:\n }\n }\n }\n } else {\n var y = movement.startPosition.y - movement.endPosition.y; //负数往下\n\n var endPosition = {\n x: movement.endPosition.x - coordinatesDiffer.x,\n y: movement.endPosition.y - coordinatesDiffer.y\n };\n var ray = viewer.camera.getPickRay(endPosition); //获取一条射线\n var position = viewer.scene.globe.pick(ray, viewer.scene);\n var finalPosition = new Cesium.Cartesian3();\n var matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(viewer.camera.position);\n Cesium.Matrix4.inverse(matrix4, matrix4);\n Cesium.Matrix4.multiplyByPoint(matrix4, position, finalPosition);\n Cesium.Cartesian3.normalize(finalPosition, finalPosition);\n var _param = _this.initParam();\n var pitch = 90 + Cesium.Math.toDegrees(Math.asin(finalPosition.z));\n var camera_cartographic = Cesium.Cartographic.fromCartesian(viewer.camera.position);\n var a = camera_cartographic.height;\n var b = _this.activeModelParam.alt;\n // let d = Cesium.Cartesian3.distance(viewer.camera.position, position);\n var d = a / Math.cos(Cesium.Math.toRadians(pitch));\n var geodesic = new Cesium.EllipsoidGeodesic(Cesium.Cartographic.fromCartesian(position), Cesium.Cartographic.fromCartesian(viewer.camera.position));\n position = Cesium.Ray.getPoint(ray, d * (1 - b / a));\n var cartographic = Cesium.Cartographic.fromCartesian(position);\n var _lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度\n var _lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度\n var m;\n switch (_this.activeAxis._name) {\n case 'model_edit_xAxis':\n _this._params.tx = _lng;\n _this._params.ty = _this.activeModelParam.lat;\n _this._params.tz = b;\n _this.origin = Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _param.alt);\n // 计算xyz轴方向\n var _directionVectorX = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng - 0.001, _param.lat, _param.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var _directionVectorY = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat - 0.001, _param.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var _directionVectorZ = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _param.alt - 1), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n _this.rayX = new Cesium.Ray(_this.origin, _directionVectorX);\n _this.rayY = new Cesium.Ray(_this.origin, _directionVectorY);\n _this.rayZ = new Cesium.Ray(_this.origin, _directionVectorZ);\n break;\n case 'model_edit_yAxis':\n _this._params.tx = _this.activeModelParam.lng;\n _this._params.ty = _lat;\n _this._params.tz = b;\n _this.origin = Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _param.alt);\n // 计算xyz轴方向\n var directionVectorX2 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng - 0.001, _param.lat, _param.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var directionVectorY2 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat - 0.001, _param.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var directionVectorZ2 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _param.alt - 1), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n _this.rayX = new Cesium.Ray(_this.origin, directionVectorX2);\n _this.rayY = new Cesium.Ray(_this.origin, directionVectorY2);\n _this.rayZ = new Cesium.Ray(_this.origin, directionVectorZ2);\n break;\n case 'model_edit_zAxis':\n _this.activeModelParam.alt += Cesium.Cartesian3.distance(viewer.camera.position, Cesium.Cartesian3.fromDegrees(_this.options.position.lng, _this.options.position.lat, _this.options.position.alt)) / 4300 * y * 3;\n _this._params.tx = _this.activeModelParam.lng;\n _this._params.ty = _this.activeModelParam.lat;\n _this._params.tz = _this.activeModelParam.alt;\n _this.origin = Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _this.activeModelParam.alt);\n // 计算xyz轴方向\n var directionVectorX3 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng - 0.001, _param.lat, _this.activeModelParam.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var directionVectorY3 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat - 0.001, _this.activeModelParam.alt), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var directionVectorZ3 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(_this.origin, Cesium.Cartesian3.fromDegrees(_param.lng, _param.lat, _this.activeModelParam.alt - 1), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n _this.rayX = new Cesium.Ray(_this.origin, directionVectorX3);\n _this.rayY = new Cesium.Ray(_this.origin, directionVectorY3);\n _this.rayZ = new Cesium.Ray(_this.origin, directionVectorZ3);\n break;\n default:\n }\n _this.updateModel(_this._params.tx, _this._params.ty, _this._params.tz, _this._params.rx, _this._params.ry, _this._params.rz);\n _this.againArrow();\n }\n };\n this.destroy();\n this.activeState = 'translational';\n this.MapEvent = new _Event__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk);\n // this.viwer.scene.camera.flyTo({\n // destination: new Cesium.Cartesian3.fromDegrees(104.17401, 30.63593, 1000),\n // orientation: {\n // pitch: Cesium.Math.toRadians(-35.0)\n // },\n // duration: 1\n // })\n /**\r\n * 创建一条射线\r\n */\n _this = this;\n param = this.initParam();\n lng = param.lng;\n lat = param.lat;\n h = param.alt;\n viewer = this.viwer; // let lon = 104.17401\n // let lat = 30.64593\n // let h = 0\n // 原点\n this.origin = Cesium.Cartesian3.fromDegrees(lng, lat, h);\n // 计算xyz轴方向\n directionVectorX = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin, Cesium.Cartesian3.fromDegrees(lng - 0.001, lat, h), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n directionVectorY = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin, Cesium.Cartesian3.fromDegrees(lng, lat - 0.001, h), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n directionVectorZ = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin, Cesium.Cartesian3.fromDegrees(lng, lat, h - 1), new Cesium.Cartesian3()), new Cesium.Cartesian3());\n this.rayX = new Cesium.Ray(this.origin, directionVectorX);\n this.rayY = new Cesium.Ray(this.origin, directionVectorY);\n this.rayZ = new Cesium.Ray(this.origin, directionVectorZ);\n this.arrow.positionX = Cesium.Ray.getPoint(this.rayX, 0);\n this.arrow.positionY = Cesium.Ray.getPoint(this.rayY, 0);\n this.arrow.positionZ = Cesium.Ray.getPoint(this.rayZ, 0);\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(lng, lat, h)); // 获取相机的位置\n cameraPosition = viewer.camera.position; // 计算相机与目标坐标之间的距离\n distance = Cesium.Cartesian3.distance(cameraPosition, this.origin);\n newRadius = distance / 15;\n scale = newRadius;\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(scale, scale, scale), matrix);\n axisArrowX = this.createAxisArrow('model_edit_xAxis', [new Cesium.Cartesian3(0, 0.001, 0), new Cesium.Cartesian3(1, 0, 0)], matrix, Cesium.Color.RED);\n axisArrowY = this.createAxisArrow('model_edit_yAxis', [new Cesium.Cartesian3(0, 0.001, 0), new Cesium.Cartesian3(0, 1, 0)], matrix, Cesium.Color.LIME);\n axisArrowZ = this.createAxisArrow('model_edit_zAxis', [new Cesium.Cartesian3(0, 0.001, 0), new Cesium.Cartesian3(0, 0, 1)], matrix, Cesium.Color.BLUE);\n positions = [];\n radius = 1; // for (let i = 0; i <= 360; i += 3) {\n // const sin = Math.sin(Cesium.Math.toRadians(i))\n // const cos = Math.cos(Cesium.Math.toRadians(i))\n // const x = radius * cos\n // const y = radius * sin\n // positions.push(new Cesium.Cartesian3(x, y, 0))\n // }\n // console.log('positions', positions)\n // let axisCircular = this.createAxisCircular('model_edit_circular', positions, matrix)\n this.viwer.scene.primitives.add(axisArrowX);\n this.viwer.scene.primitives.add(axisArrowY);\n this.viwer.scene.primitives.add(axisArrowZ);\n // this.viwer.scene.primitives.add(axisCircular)\n\n this.againArrow();\n\n // this.viwer.entities.add({\n // id: \"tool-position_plane_xy\",\n // rectangle: {\n // coordinates: new Cesium.CallbackProperty(function () {\n // return Cesium.Rectangle.fromCartesianArray([positionX, positionY])\n // }, false),\n // material: Cesium.Color.YELLOW.withAlpha(0),\n // }\n // });\n\n // 监听相机移动\n this.viwer.camera.percentageChanged = 0.001;\n this.viwer.camera.changed.addEventListener(this.againArrow, {\n _that: this\n });\n coordinatesDiffer = {\n x: 0,\n y: 0\n };\n lastPickTime = 0;\n this.MapEvent.mouse_move(function (e, cartesian) {\n moveEvent(e);\n });\n this.MapEvent.mouse_left_down(function (event, cartesian) {\n var canvasCoordinates = viewer.scene.cartesianToCanvasCoordinates(_this2.origin);\n coordinatesDiffer.x = event.position.x - Math.floor(canvasCoordinates.x);\n coordinatesDiffer.y = event.position.y - Math.floor(canvasCoordinates.y);\n var pickedObjectArray = viewer.scene.drillPick(event.position, 10);\n for (var i = pickedObjectArray.length - 1; i >= 0; i--) {\n var pickedObject = pickedObjectArray[i];\n if (pickedObject && pickedObject.primitive && pickedObject.primitive._name) {\n if (_this.activeAxis) {\n _this.activeAxis = null;\n _this.activeModelParam = null;\n _this.controllerCallBack;\n } else {\n switch (pickedObject.primitive._name) {\n case 'model_edit_xAxis':\n case 'model_edit_yAxis':\n case 'model_edit_zAxis':\n viewer.scene.screenSpaceCameraController.enableRotate = false;\n _this.activeAxis = pickedObject.primitive;\n _this.activeModelParam = _this.initParam();\n pickedObject.primitive.appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.YELLOW\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n return;\n default:\n }\n }\n }\n }\n });\n this.MapEvent.mouse_left_up(function (event) {\n viewer.scene.screenSpaceCameraController.enableRotate = true;\n for (var i = 0; i < _this.coordArrows.length; i++) {\n switch (_this.coordArrows[i]._name) {\n case 'model_edit_xAxis':\n _this.coordArrows[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.RED\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n case 'model_edit_yAxis':\n _this.coordArrows[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.LIME\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n case 'model_edit_zAxis':\n _this.coordArrows[i].appearance = new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: Cesium.Color.BLUE\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n });\n break;\n default:\n }\n }\n if (_this.activeAxis) {\n _this.activeAxis = null;\n _this.activeModelParam = null;\n _this.controllerCallBack;\n }\n });\n case 42:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function editTranslational() {\n return _editTranslational.apply(this, arguments);\n }\n return editTranslational;\n }() // 重新计算箭头位置\n )\n }, {\n key: \"againArrow\",\n value: function againArrow() {\n var _that = this._that || this;\n if (!_that.origin) {\n return;\n }\n _that.initParam();\n _that.origin = new Cesium.Cartesian3.fromDegrees(_that._params.tx, _that._params.ty, _that._params.tz);\n var viewer = _that.viwer;\n // 获取相机的位置\n var cameraPosition = viewer.camera.position;\n // 计算相机与目标坐标之间的距离\n var distance = Cesium.Cartesian3.distance(cameraPosition, _that.origin);\n var scale = distance / 15;\n var matrix = Cesium.Transforms.eastNorthUpToFixedFrame(_that.origin);\n var primitives = _that.coordArrows;\n for (var i = 0; i < primitives.length; i++) {\n switch (primitives[i]._name) {\n case 'model_edit_xAxis':\n case 'model_edit_yAxis':\n case 'model_edit_zAxis':\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(scale, scale, scale), primitives[i].modelMatrix);\n break;\n default:\n }\n }\n }\n\n //重新计算圆\n }, {\n key: \"againCircle\",\n value: function againCircle() {\n var _that = this._that || this;\n if (!_that.origin) {\n return;\n }\n _that.initParam();\n _that.origin = new Cesium.Cartesian3.fromDegrees(_that._params.tx, _that._params.ty, _that._params.tz);\n var viewer = _that.viwer;\n // 获取相机的位置\n var cameraPosition = viewer.camera.position;\n // 计算相机与目标坐标之间的距离\n var distance = Cesium.Cartesian3.distance(cameraPosition, _that.origin);\n var radius = distance / 15;\n var matrix = Cesium.Transforms.eastNorthUpToFixedFrame(_that.origin);\n var primitives = _that.coordCircles;\n for (var i = 0; i < primitives.length; i++) {\n // _that.viwer.scene.primitives.lowerToBottom(primitives[i])\n switch (primitives[i]._name) {\n case 'model_edit_zCircle':\n case 'model_edit_yCircle':\n case 'model_edit_xCircle':\n var scale = radius / 20;\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(scale, scale, scale), primitives[i].modelMatrix);\n primitives[i]._radius = radius;\n break;\n default:\n }\n }\n }\n\n /**\r\n * 开始旋转编辑\r\n */\n }, {\n key: \"editRtation\",\n value: (function () {\n var _editRtation = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n var param;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.destroy();\n this.activeState = 'rtation';\n this.MapEvent = new _Event__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk);\n param = this.initParam();\n this.origin = Cesium.Cartesian3.fromDegrees(param.lng, param.lat, param.alt);\n this.createCircle(param.lng, param.lat, param.alt, 20);\n // 监听相机移动\n this.viwer.camera.percentageChanged = 0.001;\n this.viwer.camera.changed.addEventListener(this.againCircle, {\n _that: this\n });\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function editRtation() {\n return _editRtation.apply(this, arguments);\n }\n return editRtation;\n }())\n }, {\n key: \"createCircle\",\n value: function () {\n var _createCircle = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3(lng, lat, height, radius) {\n var _that, _this, viewer, position, i, sin, cos, x, y, matrix, cameraPosition, distance, newRadius, scale, axisSphereZ, axisSphereY, my, rotationY, axisSphereX, mx, rotationX, lastPickTime, timeoutEvent, moveEvent;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n moveEvent = function _moveEvent2(movement) {\n if (!_this.activeCircle) {\n var now = Date.now();\n if (now - lastPickTime < 100) {\n clearTimeout(timeoutEvent);\n timeoutEvent = setTimeout(function () {\n moveEvent(movement);\n }, 100);\n return;\n }\n clearTimeout(timeoutEvent);\n lastPickTime = now;\n var primitives = _that.coordCircles;\n for (var _i2 = 0; _i2 < primitives.length; _i2++) {\n if (primitives[_i2].getGeometryInstanceAttributes) {\n var attributes = primitives[_i2].getGeometryInstanceAttributes(primitives[_i2]._name);\n switch (primitives[_i2]._name) {\n case 'model_edit_zCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED).value;\n break;\n case 'model_edit_yCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE).value;\n break;\n case 'model_edit_xCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.LIME).value;\n break;\n default:\n }\n }\n }\n var pickedObjectArray = viewer.scene.drillPick(movement.endPosition, 10);\n for (var _i3 = 0; _i3 < pickedObjectArray.length; _i3++) {\n var pick = pickedObjectArray[_i3];\n if (pick && pick.primitive && pick.id) {\n var _attributes = pick.primitive.getGeometryInstanceAttributes(pick.id);\n switch (pick.primitive._name) {\n case 'model_edit_zCircle':\n _attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW).value;\n return;\n case 'model_edit_yCircle':\n _attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW).value;\n return;\n case 'model_edit_xCircle':\n _attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW).value;\n return;\n default:\n }\n }\n }\n } else {\n var position1 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, _that.ciclkPosition);\n var _rx = 0,\n _ry = 0,\n _rz = 0; //xyz方向的旋转量(度)\n if (!position1) {\n return;\n }\n var _yPix = movement.startPosition.y - movement.endPosition.y;\n var _xPix = movement.startPosition.x - movement.endPosition.x;\n switch (_this.activeCircle._name) {\n case 'model_edit_xCircle':\n _ry = 1 * _xPix;\n break;\n case 'model_edit_yCircle':\n _rx = 1 * _yPix;\n break;\n case 'model_edit_zCircle':\n _rz = 1 * _xPix;\n break;\n default:\n }\n _this._params.rx -= _rx;\n if (_this._params.rx > 360) {\n _this._params.rx = 1;\n }\n if (_this._params.rx < 0) {\n _this._params.rx = 360;\n }\n var _mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(_this._params.rx));\n _this._params.ry -= _ry;\n if (_this._params.ry > 360) {\n _this._params.ry = 1;\n }\n if (_this._params.ry < 0) {\n _this._params.ry = 360;\n }\n _this._params.rz -= _rz;\n if (_this._params.rz > 360) {\n _this._params.rz = 1;\n }\n if (_this._params.rz < 0) {\n _this._params.rz = 360;\n }\n _this.updateModel(_this._params.tx, _this._params.ty, _this._params.tz, _this._params.rx, _this._params.ry, _this._params.rz);\n }\n };\n _that = this._that || this;\n _this = this;\n viewer = this.viwer;\n position = [];\n for (i = 0; i <= 360; i += 3) {\n sin = Math.sin(Cesium.Math.toRadians(i));\n cos = Math.cos(Cesium.Math.toRadians(i));\n x = radius * cos;\n y = radius * sin;\n position.push(new Cesium.Cartesian3(x, y, 0));\n }\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(lng, lat, height)); // 获取相机的位置\n cameraPosition = viewer.camera.position; // 计算相机与目标坐标之间的距离\n distance = Cesium.Cartesian3.distance(cameraPosition, this.origin);\n newRadius = distance / 15;\n scale = newRadius / radius;\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(scale, scale, scale), matrix);\n // Cesium.Matrix4.multiply(\n // matrix,\n // x,\n // matrix\n // )\n //绕Z轴\n _context3.next = 14;\n return this.createAxisSphere('model_edit_zCircle', position, matrix, Cesium.Color.RED, newRadius);\n case 14:\n axisSphereZ = _context3.sent;\n viewer.scene.primitives.add(axisSphereZ);\n\n //绕Y周\n _context3.next = 18;\n return this.createAxisSphere('model_edit_yCircle', position, matrix, Cesium.Color.BLUE, newRadius);\n case 18:\n axisSphereY = _context3.sent;\n viewer.scene.primitives.add(axisSphereY);\n my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(90));\n rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n Cesium.Matrix4.multiply(axisSphereY.geometryInstances.modelMatrix, rotationY, axisSphereY.geometryInstances.modelMatrix);\n\n //绕X周\n _context3.next = 25;\n return this.createAxisSphere('model_edit_xCircle', position, matrix, Cesium.Color.LIME, newRadius);\n case 25:\n axisSphereX = _context3.sent;\n viewer.scene.primitives.add(axisSphereX);\n mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(90));\n rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n Cesium.Matrix4.multiply(axisSphereX.geometryInstances.modelMatrix, rotationX, axisSphereX.geometryInstances.modelMatrix);\n lastPickTime = 0;\n this.MapEvent.mouse_move(function (movement) {\n moveEvent(movement);\n });\n this.MapEvent.mouse_left_down(function (event) {\n var cartesian = viewer.scene.pickPosition(event.position);\n _that.ciclkPosition = cartesian;\n var pickedObjectArray = viewer.scene.drillPick(event.position, 10);\n for (var _i4 = 0; _i4 < pickedObjectArray.length; _i4++) {\n var pickedObject = pickedObjectArray[_i4];\n if (pickedObject && pickedObject.primitive && pickedObject.id) {\n switch (pickedObject.primitive._name) {\n case 'model_edit_xCircle':\n case 'model_edit_yCircle':\n case 'model_edit_zCircle':\n viewer.scene.screenSpaceCameraController.enableRotate = false;\n var attributes = pickedObject.primitive.getGeometryInstanceAttributes(pickedObject.primitive._name);\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW).value;\n _this.activeCircle = pickedObject.primitive;\n _this.activeModelParam = _this.initParam();\n return;\n default:\n }\n }\n }\n _this.activeCircle = null;\n _this.activeModelParam = null;\n viewer.scene.screenSpaceCameraController.enableRotate = true;\n });\n this.MapEvent.mouse_left_up(function (event) {\n viewer.scene.screenSpaceCameraController.enableRotate = true;\n var primitives = _this.coordCircles;\n _this.activeCircle = null;\n _this.activeModelParam = null;\n for (var _i5 = 0; _i5 < primitives.length; _i5++) {\n if (primitives[_i5].getGeometryInstanceAttributes) {\n var attributes = primitives[_i5].getGeometryInstanceAttributes(primitives[_i5]._name);\n switch (primitives[_i5]._name) {\n case 'model_edit_zCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED).value;\n break;\n case 'model_edit_yCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE).value;\n break;\n case 'model_edit_xCircle':\n attributes.color = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.LIME).value;\n break;\n default:\n }\n }\n }\n });\n case 34:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function createCircle(_x, _x2, _x3, _x4) {\n return _createCircle.apply(this, arguments);\n }\n return createCircle;\n }() //更新模型位置\n }, {\n key: \"updateModel\",\n value: function updateModel(_tx, _ty, _tz) {\n var _rx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var _ry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var _rz = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n this._params.tx = _tx = parseFloat(parseFloat(_tx).toFixed(8));\n this._params.ty = _ty = parseFloat(parseFloat(_ty).toFixed(8));\n this._params.tz = _tz = parseFloat(parseFloat(_tz).toFixed(2));\n this._params.rx = _rx = parseFloat(_rx);\n this._params.ry = _ry = parseFloat(_ry);\n this._params.rz = _rz = parseFloat(_rz);\n this.options.position.lng = _tx;\n this.options.position.lat = _ty;\n this.options.position.alt = _tz;\n this.options.rotate = {\n x: _rx,\n y: _ry,\n z: _rz\n };\n // this.model.position = new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz)\n // this.model.rotate = { x: _rx, y: _ry, z: _rz }\n // let mx = Cesium.Matrix3.fromRotationX(\n // Cesium.Math.toRadians(_rx)\n // )\n // let my = Cesium.Matrix3.fromRotationY(\n // Cesium.Math.toRadians(_ry)\n // )\n // let mz = Cesium.Matrix3.fromRotationZ(\n // Cesium.Math.toRadians(_rz)\n // )\n // // 平移\n // let m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz))\n // // 旋转\n // let rotationX = Cesium.Matrix4.fromRotationTranslation(mx)\n // let rotationY = Cesium.Matrix4.fromRotationTranslation(my)\n // let rotationZ = Cesium.Matrix4.fromRotationTranslation(mz)\n // let originalMatrix = new Cesium.Matrix4()\n // Cesium.Matrix4.multiply(m, rotationX, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationZ, this.model.modelMatrix)\n this.controllerCallBack;\n }\n }, {\n key: \"controllerCallBack\",\n get: function get() {\n this._controllerCallBack && this._controllerCallBack(this.options, this.activeAxis ? false : true);\n },\n set: function set(callback) {\n this._controllerCallBack = callback;\n }\n }, {\n key: \"createAxisArrow\",\n value: function createAxisArrow(name, position, matrix, color) {\n var result = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: name,\n geometry: new Cesium.PolylineGeometry({\n positions: position,\n width: 20\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(color)\n }\n }),\n releaseGeometryInstances: false,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {\n color: color\n }),\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n }),\n modelMatrix: matrix\n });\n result._name = name;\n this.coordArrows.push(result);\n return result;\n }\n }, {\n key: \"createAxisCircular\",\n value: function createAxisCircular(name, position, matrix, color) {\n var result = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: new Cesium.EllipseGeometry({\n center: {\n x: 1,\n y: 1,\n z: 1\n },\n semiMinorAxis: 500000.0,\n semiMajorAxis: 1000000.0,\n rotation: Cesium.Math.PI_OVER_FOUR,\n vertexFormat: Cesium.VertexFormat.POSITION_AND_ST\n })\n }),\n releaseGeometryInstances: false,\n appearance: new Cesium.EllipsoidSurfaceAppearance({\n material: new Cesium.Material({\n fabric: {\n type: 'Color',\n uniforms: {\n color: Cesium.Color.YELLOW\n }\n }\n })\n }),\n modelMatrix: matrix\n });\n result._name = name;\n this.coordArrows.push(result);\n return result;\n }\n }, {\n key: \"createAxisSphere\",\n value: function createAxisSphere(name, position, matrix, color, radius) {\n var result = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: name,\n geometry: new Cesium.PolylineGeometry({\n positions: position,\n width: 5\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(color)\n }\n }),\n releaseGeometryInstances: false,\n appearance: new Cesium.PolylineColorAppearance({\n translucent: true,\n renderState: {\n depthTest: {\n enabled: false\n },\n depthMask: false,\n depthFunction: Cesium.DepthFunction.ALWAYS\n }\n }),\n modelMatrix: matrix\n });\n result._radius = radius;\n result._name = name;\n this.coordCircles.push(result);\n return result;\n }\n }, {\n key: \"removeCoordArrows\",\n value: function removeCoordArrows() {\n for (var i = 0; i < this.coordArrows.length; i++) {\n this.viwer.scene.primitives.remove(this.coordArrows[i]);\n }\n this.coordArrows = [];\n }\n }, {\n key: \"removeCoordCircle\",\n value: function removeCoordCircle() {\n for (var i = 0; i < this.coordCircles.length; i++) {\n this.viwer.scene.primitives.remove(this.coordCircles[i]);\n }\n this.coordCircles = [];\n }\n }, {\n key: \"removeAllTools\",\n value: function removeAllTools() {\n this.removeCoordArrows();\n this.removeCoordCircle();\n }\n\n /**\r\n * 关闭/注销\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.removeAllTools();\n this.activeAxis = undefined;\n this.activeState = undefined;\n this.MapEvent && this.MapEvent.destroy();\n this.viwer.camera.changed.removeEventListener(this.againArrow);\n this.viwer.camera.changed.removeEventListener(this.againCircle);\n }\n }, {\n key: \"getActiveState\",\n value: function getActiveState() {\n return this.activeState;\n }\n }, {\n key: \"update\",\n value: function update() {\n this.againArrow();\n this.againCircle();\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (ControllerObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvQ29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9Db250cm9sbGVyL2luZGV4LmpzPzc1NGMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDlubPnp7vml4vovawt5pS5XHJcbiAqL1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuY2xhc3MgQ29udHJvbGxlck9iamVjdCB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHRoaXMuc2RrID0gc2RrXHJcbiAgICB0aGlzLnZpd2VyID0gdGhpcy5zZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSBvcHRpb25zLnBvc2l0aW9uIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlID0gb3B0aW9ucy5yb3RhdGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0IHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueCA9IHRoaXMub3B0aW9ucy5yb3RhdGUueCB8fCAwXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnkgPSB0aGlzLm9wdGlvbnMucm90YXRlLnkgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZS56ID0gdGhpcy5vcHRpb25zLnJvdGF0ZS56IHx8IDBcclxuICAgIHRoaXMuYWN0aXZlQXhpc1xyXG4gICAgdGhpcy5hY3RpdmVDaXJjbGVcclxuICAgIHRoaXMuYWN0aXZlTW9kZWxQYXJhbVxyXG4gICAgdGhpcy5vcmlnaW5cclxuICAgIHRoaXMucmF5WFxyXG4gICAgdGhpcy5yYXlZXHJcbiAgICB0aGlzLnJheVpcclxuICAgIHRoaXMuYXJyb3cgPSB7fVxyXG4gICAgdGhpcy5hY3RpdmVTdGF0ZVxyXG4gICAgdGhpcy5jb29yZEFycm93cyA9IFtdXHJcbiAgICB0aGlzLmNvb3JkQ2lyY2xlcyA9IFtdXHJcblxyXG4gICAgdGhpcy5NYXBFdmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvblxyXG4gIH1cclxuICBzZXQgcG9zaXRpb24odikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gdlxyXG4gICAgdGhpcy5hZ2FpbkFycm93KClcclxuICAgIHRoaXMuYWdhaW5DaXJjbGUoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucm90YXRlXHJcbiAgfVxyXG4gIHNldCByb3RhdGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZSA9IHZcclxuICB9XHJcblxyXG4gIGluaXRQYXJhbSgpIHtcclxuICAgIHRoaXMuX3BhcmFtcyA9IHtcclxuICAgICAgdHg6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIC8v5qih5Z6L5Lit5b+DWOi9tOWdkOagh++8iOe7j+W6pu+8jOWNleS9je+8muWNgei/m+WItuW6pu+8iVxyXG4gICAgICB0eTogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgLy/mqKHlnovkuK3lv4NZ6L205Z2Q5qCH77yI57qs5bqm77yM5Y2V5L2N77ya5Y2B6L+b5Yi25bqm77yJXHJcbiAgICAgIHR6OiB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0LCAvL+aooeWei+S4reW/g1rovbTlnZDmoIfvvIjpq5jnqIvvvIzljZXkvY3vvJrnsbPvvIlcclxuICAgICAgcng6IHRoaXMub3B0aW9ucy5yb3RhdGUueCwgLy9Y6L2077yI57uP5bqm77yJ5pa55ZCR5peL6L2s6KeS5bqm77yI5Y2V5L2N77ya5bqm77yJXHJcbiAgICAgIHJ5OiB0aGlzLm9wdGlvbnMucm90YXRlLnksIC8vWei9tO+8iOe6rOW6pu+8ieaWueWQkeaXi+i9rOinkuW6pu+8iOWNleS9je+8muW6pu+8iVxyXG4gICAgICByejogdGhpcy5vcHRpb25zLnJvdGF0ZS56IC8vWui9tO+8iOmrmOeoi++8ieaWueWQkeaXi+i9rOinkuW6pu+8iOWNleS9je+8muW6pu+8iVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uLCAuLi50aGlzLm9wdGlvbnMucm90YXRlIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW8gOWni+e8lui+keW5s+enu1xyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXRUcmFuc2xhdGlvbmFsKCkge1xyXG4gICAgdGhpcy5kZXN0cm95KClcclxuICAgIHRoaXMuYWN0aXZlU3RhdGUgPSAndHJhbnNsYXRpb25hbCdcclxuICAgIHRoaXMuTWFwRXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIC8vIHRoaXMudml3ZXIuc2NlbmUuY2FtZXJhLmZseVRvKHtcclxuICAgIC8vICAgZGVzdGluYXRpb246IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygxMDQuMTc0MDEsIDMwLjYzNTkzLCAxMDAwKSxcclxuICAgIC8vICAgb3JpZW50YXRpb246IHtcclxuICAgIC8vICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0zNS4wKVxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBkdXJhdGlvbjogMVxyXG4gICAgLy8gfSlcclxuICAgIC8qKlxyXG4gICAgICog5Yib5bu65LiA5p2h5bCE57q/XHJcbiAgICAgKi9cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGxldCBwYXJhbSA9IHRoaXMuaW5pdFBhcmFtKClcclxuICAgIGxldCBsbmcgPSBwYXJhbS5sbmdcclxuICAgIGxldCBsYXQgPSBwYXJhbS5sYXRcclxuICAgIGxldCBoID0gcGFyYW0uYWx0XHJcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aXdlclxyXG4gICAgLy8gbGV0IGxvbiA9IDEwNC4xNzQwMVxyXG4gICAgLy8gbGV0IGxhdCA9IDMwLjY0NTkzXHJcbiAgICAvLyBsZXQgaCA9IDBcclxuICAgIC8vIOWOn+eCuVxyXG4gICAgdGhpcy5vcmlnaW4gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgaClcclxuICAgIC8vIOiuoeeul3h5eui9tOaWueWQkVxyXG4gICAgY29uc3QgZGlyZWN0aW9uVmVjdG9yWCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdCh0aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nIC0gMC4wMDEsIGxhdCwgaCksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgZGlyZWN0aW9uVmVjdG9yWSA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdCh0aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQgLSAwLjAwMSwgaCksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgZGlyZWN0aW9uVmVjdG9yWiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdCh0aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGggLSAxKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICB0aGlzLnJheVggPSBuZXcgQ2VzaXVtLlJheSh0aGlzLm9yaWdpbiwgZGlyZWN0aW9uVmVjdG9yWClcclxuICAgIHRoaXMucmF5WSA9IG5ldyBDZXNpdW0uUmF5KHRoaXMub3JpZ2luLCBkaXJlY3Rpb25WZWN0b3JZKVxyXG4gICAgdGhpcy5yYXlaID0gbmV3IENlc2l1bS5SYXkodGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclopXHJcbiAgICB0aGlzLmFycm93LnBvc2l0aW9uWCA9IENlc2l1bS5SYXkuZ2V0UG9pbnQodGhpcy5yYXlYLCAwKVxyXG4gICAgdGhpcy5hcnJvdy5wb3NpdGlvblkgPSBDZXNpdW0uUmF5LmdldFBvaW50KHRoaXMucmF5WSwgMClcclxuICAgIHRoaXMuYXJyb3cucG9zaXRpb25aID0gQ2VzaXVtLlJheS5nZXRQb2ludCh0aGlzLnJheVosIDApXHJcblxyXG4gICAgY29uc3QgbWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoXHJcbiAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgaClcclxuICAgIClcclxuICAgIC8vIOiOt+WPluebuOacuueahOS9jee9rlxyXG4gICAgdmFyIGNhbWVyYVBvc2l0aW9uID0gdmlld2VyLmNhbWVyYS5wb3NpdGlvbjtcclxuICAgIC8vIOiuoeeul+ebuOacuuS4juebruagh+WdkOagh+S5i+mXtOeahOi3neemu1xyXG4gICAgdmFyIGRpc3RhbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UoY2FtZXJhUG9zaXRpb24sIHRoaXMub3JpZ2luKTtcclxuICAgIGxldCBuZXdSYWRpdXMgPSBkaXN0YW5jZSAvIDE1XHJcbiAgICBsZXQgc2NhbGUgPSBuZXdSYWRpdXNcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhzY2FsZSwgc2NhbGUsIHNjYWxlKSwgbWF0cml4KVxyXG4gICAgbGV0IGF4aXNBcnJvd1ggPSB0aGlzLmNyZWF0ZUF4aXNBcnJvdygnbW9kZWxfZWRpdF94QXhpcycsIFtuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMCwgMC4wMDEsIDApLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMSwgMCwgMCldLCBtYXRyaXgsIENlc2l1bS5Db2xvci5SRUQpXHJcbiAgICBsZXQgYXhpc0Fycm93WSA9IHRoaXMuY3JlYXRlQXhpc0Fycm93KCdtb2RlbF9lZGl0X3lBeGlzJywgW25ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAwLjAwMSwgMCksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAxLCAwKV0sIG1hdHJpeCwgQ2VzaXVtLkNvbG9yLkxJTUUpXHJcbiAgICBsZXQgYXhpc0Fycm93WiA9IHRoaXMuY3JlYXRlQXhpc0Fycm93KCdtb2RlbF9lZGl0X3pBeGlzJywgW25ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAwLjAwMSwgMCksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAwLCAxKV0sIG1hdHJpeCwgQ2VzaXVtLkNvbG9yLkJMVUUpXHJcbiAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgIGxldCByYWRpdXMgPSAxXHJcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8PSAzNjA7IGkgKz0gMykge1xyXG4gICAgLy8gICBjb25zdCBzaW4gPSBNYXRoLnNpbihDZXNpdW0uTWF0aC50b1JhZGlhbnMoaSkpXHJcbiAgICAvLyAgIGNvbnN0IGNvcyA9IE1hdGguY29zKENlc2l1bS5NYXRoLnRvUmFkaWFucyhpKSlcclxuICAgIC8vICAgY29uc3QgeCA9IHJhZGl1cyAqIGNvc1xyXG4gICAgLy8gICBjb25zdCB5ID0gcmFkaXVzICogc2luXHJcbiAgICAvLyAgIHBvc2l0aW9ucy5wdXNoKG5ldyBDZXNpdW0uQ2FydGVzaWFuMyh4LCB5LCAwKSlcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKCdwb3NpdGlvbnMnLCBwb3NpdGlvbnMpXHJcbiAgICAvLyBsZXQgYXhpc0NpcmN1bGFyID0gdGhpcy5jcmVhdGVBeGlzQ2lyY3VsYXIoJ21vZGVsX2VkaXRfY2lyY3VsYXInLCBwb3NpdGlvbnMsIG1hdHJpeClcclxuICAgIHRoaXMudml3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoYXhpc0Fycm93WClcclxuICAgIHRoaXMudml3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoYXhpc0Fycm93WSlcclxuICAgIHRoaXMudml3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoYXhpc0Fycm93WilcclxuICAgIC8vIHRoaXMudml3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoYXhpc0NpcmN1bGFyKVxyXG5cclxuICAgIHRoaXMuYWdhaW5BcnJvdygpXHJcblxyXG4gICAgLy8gdGhpcy52aXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgLy8gICBpZDogXCJ0b29sLXBvc2l0aW9uX3BsYW5lX3h5XCIsXHJcbiAgICAvLyAgIHJlY3RhbmdsZToge1xyXG4gICAgLy8gICAgIGNvb3JkaW5hdGVzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gICAgICAgcmV0dXJuIENlc2l1bS5SZWN0YW5nbGUuZnJvbUNhcnRlc2lhbkFycmF5KFtwb3NpdGlvblgsIHBvc2l0aW9uWV0pXHJcbiAgICAvLyAgICAgfSwgZmFsc2UpLFxyXG4gICAgLy8gICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuWUVMTE9XLndpdGhBbHBoYSgwKSxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8g55uR5ZCs55u45py656e75YqoXHJcbiAgICB0aGlzLnZpd2VyLmNhbWVyYS5wZXJjZW50YWdlQ2hhbmdlZCA9IDAuMDAxXHJcbiAgICB0aGlzLnZpd2VyLmNhbWVyYS5jaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5hZ2FpbkFycm93LCB7IF90aGF0OiB0aGlzIH0pO1xyXG5cclxuICAgIGxldCBjb29yZGluYXRlc0RpZmZlciA9IHsgeDogMCwgeTogMCB9XHJcbiAgICBsZXQgbGFzdFBpY2tUaW1lID0gMDtcclxuICAgIGxldCB0aW1lb3V0RXZlbnRcclxuICAgIHRoaXMuTWFwRXZlbnQubW91c2VfbW92ZSgoZSwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIG1vdmVFdmVudChlKVxyXG4gICAgfSlcclxuICAgIGZ1bmN0aW9uIG1vdmVFdmVudChtb3ZlbWVudCkge1xyXG4gICAgICBpZiAoIV90aGlzLmFjdGl2ZUF4aXMpIHtcclxuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGlmIChub3cgLSBsYXN0UGlja1RpbWUgPCAxMDApIHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0RXZlbnQpXHJcbiAgICAgICAgICB0aW1lb3V0RXZlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbW92ZUV2ZW50KG1vdmVtZW50KVxyXG4gICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEV2ZW50KVxyXG4gICAgICAgIGxhc3RQaWNrVGltZSA9IG5vdztcclxuICAgICAgICBsZXQgcHJpbWl0aXZlcyA9IF90aGlzLmNvb3JkQXJyb3dzXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmltaXRpdmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAocHJpbWl0aXZlc1tpXS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZXNbaV0uX25hbWUpIHtcclxuICAgICAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3hBeGlzJzpcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZXNbaV0uYXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKENlc2l1bS5NYXRlcmlhbC5Qb2x5bGluZUFycm93VHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoTWFzazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeUF4aXMnOlxyXG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlc1tpXS5hcHBlYXJhbmNlID0gbmV3IENlc2l1bS5Qb2x5bGluZU1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoQ2VzaXVtLk1hdGVyaWFsLlBvbHlsaW5lQXJyb3dUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5MSU1FLFxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoTWFzazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekF4aXMnOlxyXG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlc1tpXS5hcHBlYXJhbmNlID0gbmV3IENlc2l1bS5Qb2x5bGluZU1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoQ2VzaXVtLk1hdGVyaWFsLlBvbHlsaW5lQXJyb3dUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5CTFVFLFxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoTWFzazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBwaWNrZWRPYmplY3RBcnJheSA9IF90aGlzLnZpd2VyLnNjZW5lLmRyaWxsUGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbiwgMTApO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBwaWNrZWRPYmplY3RBcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgbGV0IHBpY2sgPSBwaWNrZWRPYmplY3RBcnJheVtpXVxyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5wcmltaXRpdmUgJiYgcGljay5pZCkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHBpY2sucHJpbWl0aXZlLl9uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF94QXhpcyc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95QXhpcyc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF96QXhpcyc6XHJcbiAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5hcHBlYXJhbmNlID0gbmV3IENlc2l1bS5Qb2x5bGluZU1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoQ2VzaXVtLk1hdGVyaWFsLlBvbHlsaW5lQXJyb3dUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5ZRUxMT1csXHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBkZXB0aFRlc3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhNYXNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZXB0aEZ1bmN0aW9uOiBDZXNpdW0uRGVwdGhGdW5jdGlvbi5BTFdBWVMsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgeSA9IG1vdmVtZW50LnN0YXJ0UG9zaXRpb24ueSAtIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLy/otJ/mlbDlvoDkuItcclxuXHJcbiAgICAgICAgbGV0IGVuZFBvc2l0aW9uID0geyB4OiBtb3ZlbWVudC5lbmRQb3NpdGlvbi54IC0gY29vcmRpbmF0ZXNEaWZmZXIueCwgeTogbW92ZW1lbnQuZW5kUG9zaXRpb24ueSAtIGNvb3JkaW5hdGVzRGlmZmVyLnkgfVxyXG4gICAgICAgIGxldCByYXkgPSB2aWV3ZXIuY2FtZXJhLmdldFBpY2tSYXkoZW5kUG9zaXRpb24pOy8v6I635Y+W5LiA5p2h5bCE57q/XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB2aWV3ZXIuc2NlbmUpO1xyXG4gICAgICAgIGxldCBmaW5hbFBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICAgICAgbGV0IG1hdHJpeDQgPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh2aWV3ZXIuY2FtZXJhLnBvc2l0aW9uKTtcclxuICAgICAgICBDZXNpdW0uTWF0cml4NC5pbnZlcnNlKG1hdHJpeDQsIG1hdHJpeDQpO1xyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlQb2ludChtYXRyaXg0LCBwb3NpdGlvbiwgZmluYWxQb3NpdGlvbik7XHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGZpbmFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pO1xyXG4gICAgICAgIGxldCBwYXJhbSA9IF90aGlzLmluaXRQYXJhbSgpXHJcbiAgICAgICAgbGV0IHBpdGNoID0gOTAgKyBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoTWF0aC5hc2luKGZpbmFsUG9zaXRpb24ueikpXHJcbiAgICAgICAgbGV0IGNhbWVyYV9jYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4odmlld2VyLmNhbWVyYS5wb3NpdGlvbik7XHJcbiAgICAgICAgbGV0IGEgPSBjYW1lcmFfY2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgICAgIGxldCBiID0gX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5hbHRcclxuICAgICAgICAvLyBsZXQgZCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHZpZXdlci5jYW1lcmEucG9zaXRpb24sIHBvc2l0aW9uKTtcclxuICAgICAgICBsZXQgZCA9IGEgLyBNYXRoLmNvcyhDZXNpdW0uTWF0aC50b1JhZGlhbnMocGl0Y2gpKVxyXG4gICAgICAgIGxldCBnZW9kZXNpYyA9IG5ldyBDZXNpdW0uRWxsaXBzb2lkR2VvZGVzaWMoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHBvc2l0aW9uKSwgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHZpZXdlci5jYW1lcmEucG9zaXRpb24pKVxyXG5cclxuICAgICAgICBwb3NpdGlvbiA9IENlc2l1bS5SYXkuZ2V0UG9pbnQocmF5LCBkICogKDEgLSAoYiAvIGEpKSlcclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHBvc2l0aW9uKTtcclxuICAgICAgICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpOyAvLyDnu4/luqZcclxuICAgICAgICBsZXQgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSk7IC8vIOe6rOW6plxyXG4gICAgICAgIGxldCBtXHJcbiAgICAgICAgc3dpdGNoIChfdGhpcy5hY3RpdmVBeGlzLl9uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3hBeGlzJzpcclxuICAgICAgICAgICAgX3RoaXMuX3BhcmFtcy50eCA9IGxuZ1xyXG4gICAgICAgICAgICBfdGhpcy5fcGFyYW1zLnR5ID0gX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5sYXRcclxuICAgICAgICAgICAgX3RoaXMuX3BhcmFtcy50eiA9IGJcclxuXHJcbiAgICAgICAgICAgIF90aGlzLm9yaWdpbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBhcmFtLmxuZywgcGFyYW0ubGF0LCBwYXJhbS5hbHQpXHJcbiAgICAgICAgICAgIC8vIOiuoeeul3h5eui9tOaWueWQkVxyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25WZWN0b3JYID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KF90aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nIC0gMC4wMDEsIHBhcmFtLmxhdCwgcGFyYW0uYWx0KSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvblZlY3RvclkgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoX3RoaXMub3JpZ2luLCBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwYXJhbS5sbmcsIHBhcmFtLmxhdCAtIDAuMDAxLCBwYXJhbS5hbHQpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uVmVjdG9yWiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChfdGhpcy5vcmlnaW4sIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBhcmFtLmxuZywgcGFyYW0ubGF0LCBwYXJhbS5hbHQgLSAxKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnJheVggPSBuZXcgQ2VzaXVtLlJheShfdGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclgpXHJcbiAgICAgICAgICAgIF90aGlzLnJheVkgPSBuZXcgQ2VzaXVtLlJheShfdGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclkpXHJcbiAgICAgICAgICAgIF90aGlzLnJheVogPSBuZXcgQ2VzaXVtLlJheShfdGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclopXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3lBeGlzJzpcclxuICAgICAgICAgICAgX3RoaXMuX3BhcmFtcy50eCA9IF90aGlzLmFjdGl2ZU1vZGVsUGFyYW0ubG5nXHJcbiAgICAgICAgICAgIF90aGlzLl9wYXJhbXMudHkgPSBsYXRcclxuICAgICAgICAgICAgX3RoaXMuX3BhcmFtcy50eiA9IGJcclxuICAgICAgICAgICAgX3RoaXMub3JpZ2luID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nLCBwYXJhbS5sYXQsIHBhcmFtLmFsdClcclxuICAgICAgICAgICAgLy8g6K6h566XeHl66L205pa55ZCRXHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvblZlY3RvclgyID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KF90aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nIC0gMC4wMDEsIHBhcmFtLmxhdCwgcGFyYW0uYWx0KSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvblZlY3RvclkyID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KF90aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nLCBwYXJhbS5sYXQgLSAwLjAwMSwgcGFyYW0uYWx0KSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvblZlY3RvcloyID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KF90aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nLCBwYXJhbS5sYXQsIHBhcmFtLmFsdCAtIDEpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgICAgICAgX3RoaXMucmF5WCA9IG5ldyBDZXNpdW0uUmF5KF90aGlzLm9yaWdpbiwgZGlyZWN0aW9uVmVjdG9yWDIpXHJcbiAgICAgICAgICAgIF90aGlzLnJheVkgPSBuZXcgQ2VzaXVtLlJheShfdGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclkyKVxyXG4gICAgICAgICAgICBfdGhpcy5yYXlaID0gbmV3IENlc2l1bS5SYXkoX3RoaXMub3JpZ2luLCBkaXJlY3Rpb25WZWN0b3JaMilcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekF4aXMnOlxyXG4gICAgICAgICAgICBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtLmFsdCArPSAoQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2Uodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoX3RoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIF90aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCBfdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCkpIC8gNDMwMCkgKiB5ICogM1xyXG4gICAgICAgICAgICBfdGhpcy5fcGFyYW1zLnR4ID0gX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5sbmdcclxuICAgICAgICAgICAgX3RoaXMuX3BhcmFtcy50eSA9IF90aGlzLmFjdGl2ZU1vZGVsUGFyYW0ubGF0XHJcbiAgICAgICAgICAgIF90aGlzLl9wYXJhbXMudHogPSBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtLmFsdFxyXG4gICAgICAgICAgICBfdGhpcy5vcmlnaW4gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwYXJhbS5sbmcsIHBhcmFtLmxhdCwgX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5hbHQpXHJcbiAgICAgICAgICAgIC8vIOiuoeeul3h5eui9tOaWueWQkVxyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25WZWN0b3JYMyA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChfdGhpcy5vcmlnaW4sIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBhcmFtLmxuZyAtIDAuMDAxLCBwYXJhbS5sYXQsIF90aGlzLmFjdGl2ZU1vZGVsUGFyYW0uYWx0KSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvblZlY3RvclkzID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KF90aGlzLm9yaWdpbiwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW0ubG5nLCBwYXJhbS5sYXQgLSAwLjAwMSwgX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5hbHQpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uVmVjdG9yWjMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoX3RoaXMub3JpZ2luLCBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwYXJhbS5sbmcsIHBhcmFtLmxhdCwgX3RoaXMuYWN0aXZlTW9kZWxQYXJhbS5hbHQgLSAxKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnJheVggPSBuZXcgQ2VzaXVtLlJheShfdGhpcy5vcmlnaW4sIGRpcmVjdGlvblZlY3RvclgzKVxyXG4gICAgICAgICAgICBfdGhpcy5yYXlZID0gbmV3IENlc2l1bS5SYXkoX3RoaXMub3JpZ2luLCBkaXJlY3Rpb25WZWN0b3JZMylcclxuICAgICAgICAgICAgX3RoaXMucmF5WiA9IG5ldyBDZXNpdW0uUmF5KF90aGlzLm9yaWdpbiwgZGlyZWN0aW9uVmVjdG9yWjMpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMudXBkYXRlTW9kZWwoX3RoaXMuX3BhcmFtcy50eCwgX3RoaXMuX3BhcmFtcy50eSwgX3RoaXMuX3BhcmFtcy50eiwgX3RoaXMuX3BhcmFtcy5yeCwgX3RoaXMuX3BhcmFtcy5yeSwgX3RoaXMuX3BhcmFtcy5yeilcclxuICAgICAgICBfdGhpcy5hZ2FpbkFycm93KClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuTWFwRXZlbnQubW91c2VfbGVmdF9kb3duKChldmVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIGxldCBjYW52YXNDb29yZGluYXRlcyA9IHZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHRoaXMub3JpZ2luKVxyXG4gICAgICBjb29yZGluYXRlc0RpZmZlci54ID0gZXZlbnQucG9zaXRpb24ueCAtIE1hdGguZmxvb3IoY2FudmFzQ29vcmRpbmF0ZXMueClcclxuICAgICAgY29vcmRpbmF0ZXNEaWZmZXIueSA9IGV2ZW50LnBvc2l0aW9uLnkgLSBNYXRoLmZsb29yKGNhbnZhc0Nvb3JkaW5hdGVzLnkpXHJcbiAgICAgIGxldCBwaWNrZWRPYmplY3RBcnJheSA9IHZpZXdlci5zY2VuZS5kcmlsbFBpY2soZXZlbnQucG9zaXRpb24sIDEwKTtcclxuICAgICAgZm9yIChsZXQgaSA9IHBpY2tlZE9iamVjdEFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgbGV0IHBpY2tlZE9iamVjdCA9IHBpY2tlZE9iamVjdEFycmF5W2ldXHJcbiAgICAgICAgaWYgKHBpY2tlZE9iamVjdCAmJiBwaWNrZWRPYmplY3QucHJpbWl0aXZlICYmIHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX25hbWUpIHtcclxuICAgICAgICAgIGlmIChfdGhpcy5hY3RpdmVBeGlzKSB7XHJcbiAgICAgICAgICAgIF90aGlzLmFjdGl2ZUF4aXMgPSBudWxsXHJcbiAgICAgICAgICAgIF90aGlzLmFjdGl2ZU1vZGVsUGFyYW0gPSBudWxsXHJcbiAgICAgICAgICAgIF90aGlzLmNvbnRyb2xsZXJDYWxsQmFja1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocGlja2VkT2JqZWN0LnByaW1pdGl2ZS5fbmFtZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeEF4aXMnOlxyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeUF4aXMnOlxyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekF4aXMnOlxyXG4gICAgICAgICAgICAgICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVSb3RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF90aGlzLmFjdGl2ZUF4aXMgPSBwaWNrZWRPYmplY3QucHJpbWl0aXZlXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtID0gX3RoaXMuaW5pdFBhcmFtKClcclxuICAgICAgICAgICAgICAgIHBpY2tlZE9iamVjdC5wcmltaXRpdmUuYXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKENlc2l1bS5NYXRlcmlhbC5Qb2x5bGluZUFycm93VHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoTWFzazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5NYXBFdmVudC5tb3VzZV9sZWZ0X3VwKChldmVudCkgPT4ge1xyXG4gICAgICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVJvdGF0ZSA9IHRydWU7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3RoaXMuY29vcmRBcnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBzd2l0Y2ggKF90aGlzLmNvb3JkQXJyb3dzW2ldLl9uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3hBeGlzJzpcclxuICAgICAgICAgICAgX3RoaXMuY29vcmRBcnJvd3NbaV0uYXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoQ2VzaXVtLk1hdGVyaWFsLlBvbHlsaW5lQXJyb3dUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgICAgICAgICByZW5kZXJTdGF0ZToge1xyXG4gICAgICAgICAgICAgICAgZGVwdGhUZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRlcHRoTWFzazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZXB0aEZ1bmN0aW9uOiBDZXNpdW0uRGVwdGhGdW5jdGlvbi5BTFdBWVMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3lBeGlzJzpcclxuICAgICAgICAgICAgX3RoaXMuY29vcmRBcnJvd3NbaV0uYXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoQ2VzaXVtLk1hdGVyaWFsLlBvbHlsaW5lQXJyb3dUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLkxJTUUsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGU6IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoVGVzdDoge1xyXG4gICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZXB0aE1hc2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF96QXhpcyc6XHJcbiAgICAgICAgICAgIF90aGlzLmNvb3JkQXJyb3dzW2ldLmFwcGVhcmFuY2UgPSBuZXcgQ2VzaXVtLlBvbHlsaW5lTWF0ZXJpYWxBcHBlYXJhbmNlKHtcclxuICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKENlc2l1bS5NYXRlcmlhbC5Qb2x5bGluZUFycm93VHlwZSwge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5CTFVFLFxyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxyXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICBkZXB0aFRlc3Q6IHtcclxuICAgICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZGVwdGhNYXNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGRlcHRoRnVuY3Rpb246IENlc2l1bS5EZXB0aEZ1bmN0aW9uLkFMV0FZUyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChfdGhpcy5hY3RpdmVBeGlzKSB7XHJcbiAgICAgICAgX3RoaXMuYWN0aXZlQXhpcyA9IG51bGxcclxuICAgICAgICBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtID0gbnVsbFxyXG4gICAgICAgIF90aGlzLmNvbnRyb2xsZXJDYWxsQmFja1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g6YeN5paw6K6h566X566t5aS05L2N572uXHJcbiAgYWdhaW5BcnJvdygpIHtcclxuICAgIGxldCBfdGhhdCA9ICh0aGlzLl90aGF0IHx8IHRoaXMpXHJcbiAgICBpZiAoIV90aGF0Lm9yaWdpbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIF90aGF0LmluaXRQYXJhbSgpXHJcbiAgICBfdGhhdC5vcmlnaW4gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoX3RoYXQuX3BhcmFtcy50eCwgX3RoYXQuX3BhcmFtcy50eSwgX3RoYXQuX3BhcmFtcy50eilcclxuICAgIGxldCB2aWV3ZXIgPSBfdGhhdC52aXdlclxyXG4gICAgLy8g6I635Y+W55u45py655qE5L2N572uXHJcbiAgICB2YXIgY2FtZXJhUG9zaXRpb24gPSB2aWV3ZXIuY2FtZXJhLnBvc2l0aW9uO1xyXG4gICAgLy8g6K6h566X55u45py65LiO55uu5qCH5Z2Q5qCH5LmL6Ze055qE6Led56a7XHJcbiAgICB2YXIgZGlzdGFuY2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShjYW1lcmFQb3NpdGlvbiwgX3RoYXQub3JpZ2luKTtcclxuICAgIGxldCBzY2FsZSA9IGRpc3RhbmNlIC8gMTVcclxuICAgIGNvbnN0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKF90aGF0Lm9yaWdpbilcclxuXHJcbiAgICBsZXQgcHJpbWl0aXZlcyA9IF90aGF0LmNvb3JkQXJyb3dzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgc3dpdGNoIChwcmltaXRpdmVzW2ldLl9uYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF94QXhpcyc6XHJcbiAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95QXhpcyc6XHJcbiAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF96QXhpcyc6XHJcbiAgICAgICAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5U2NhbGUobWF0cml4LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoc2NhbGUsIHNjYWxlLCBzY2FsZSksIHByaW1pdGl2ZXNbaV0ubW9kZWxNYXRyaXgpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+mHjeaWsOiuoeeul+WchlxyXG4gIGFnYWluQ2lyY2xlKCkge1xyXG4gICAgbGV0IF90aGF0ID0gKHRoaXMuX3RoYXQgfHwgdGhpcylcclxuICAgIGlmICghX3RoYXQub3JpZ2luKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgX3RoYXQuaW5pdFBhcmFtKClcclxuICAgIF90aGF0Lm9yaWdpbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdGhhdC5fcGFyYW1zLnR4LCBfdGhhdC5fcGFyYW1zLnR5LCBfdGhhdC5fcGFyYW1zLnR6KVxyXG4gICAgbGV0IHZpZXdlciA9IF90aGF0LnZpd2VyXHJcbiAgICAvLyDojrflj5bnm7jmnLrnmoTkvY3nva5cclxuICAgIHZhciBjYW1lcmFQb3NpdGlvbiA9IHZpZXdlci5jYW1lcmEucG9zaXRpb247XHJcbiAgICAvLyDorqHnrpfnm7jmnLrkuI7nm67moIflnZDmoIfkuYvpl7TnmoTot53nprtcclxuICAgIHZhciBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGNhbWVyYVBvc2l0aW9uLCBfdGhhdC5vcmlnaW4pO1xyXG4gICAgbGV0IHJhZGl1cyA9IGRpc3RhbmNlIC8gMTVcclxuICAgIGNvbnN0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKF90aGF0Lm9yaWdpbilcclxuICAgIGxldCBwcmltaXRpdmVzID0gX3RoYXQuY29vcmRDaXJjbGVzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gX3RoYXQudml3ZXIuc2NlbmUucHJpbWl0aXZlcy5sb3dlclRvQm90dG9tKHByaW1pdGl2ZXNbaV0pXHJcbiAgICAgIHN3aXRjaCAocHJpbWl0aXZlc1tpXS5fbmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekNpcmNsZSc6XHJcbiAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95Q2lyY2xlJzpcclxuICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3hDaXJjbGUnOlxyXG4gICAgICAgICAgbGV0IHNjYWxlID0gcmFkaXVzIC8gMjBcclxuICAgICAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhzY2FsZSwgc2NhbGUsIHNjYWxlKSwgcHJpbWl0aXZlc1tpXS5tb2RlbE1hdHJpeClcclxuICAgICAgICAgIHByaW1pdGl2ZXNbaV0uX3JhZGl1cyA9IHJhZGl1c1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byA5aeL5peL6L2s57yW6L6RXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdFJ0YXRpb24oKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5hY3RpdmVTdGF0ZSA9ICdydGF0aW9uJ1xyXG4gICAgdGhpcy5NYXBFdmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgY29uc3QgcGFyYW0gPSB0aGlzLmluaXRQYXJhbSgpXHJcbiAgICB0aGlzLm9yaWdpbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBhcmFtLmxuZywgcGFyYW0ubGF0LCBwYXJhbS5hbHQpXHJcbiAgICB0aGlzLmNyZWF0ZUNpcmNsZShcclxuICAgICAgcGFyYW0ubG5nLFxyXG4gICAgICBwYXJhbS5sYXQsXHJcbiAgICAgIHBhcmFtLmFsdCxcclxuICAgICAgMjBcclxuICAgIClcclxuICAgIC8vIOebkeWQrOebuOacuuenu+WKqFxyXG4gICAgdGhpcy52aXdlci5jYW1lcmEucGVyY2VudGFnZUNoYW5nZWQgPSAwLjAwMVxyXG4gICAgdGhpcy52aXdlci5jYW1lcmEuY2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKHRoaXMuYWdhaW5DaXJjbGUsIHsgX3RoYXQ6IHRoaXMgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVDaXJjbGUobG5nLCBsYXQsIGhlaWdodCwgcmFkaXVzKSB7XHJcbiAgICBsZXQgX3RoYXQgPSAodGhpcy5fdGhhdCB8fCB0aGlzKVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgbGV0IHZpZXdlciA9IHRoaXMudml3ZXJcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDM2MDsgaSArPSAzKSB7XHJcbiAgICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKENlc2l1bS5NYXRoLnRvUmFkaWFucyhpKSlcclxuICAgICAgY29uc3QgY29zID0gTWF0aC5jb3MoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGkpKVxyXG4gICAgICBjb25zdCB4ID0gcmFkaXVzICogY29zXHJcbiAgICAgIGNvbnN0IHkgPSByYWRpdXMgKiBzaW5cclxuICAgICAgcG9zaXRpb24ucHVzaChuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoeCwgeSwgMCkpXHJcbiAgICB9XHJcbiAgICBjb25zdCBtYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShcclxuICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBoZWlnaHQpXHJcbiAgICApXHJcbiAgICAvLyDojrflj5bnm7jmnLrnmoTkvY3nva5cclxuICAgIHZhciBjYW1lcmFQb3NpdGlvbiA9IHZpZXdlci5jYW1lcmEucG9zaXRpb247XHJcbiAgICAvLyDorqHnrpfnm7jmnLrkuI7nm67moIflnZDmoIfkuYvpl7TnmoTot53nprtcclxuICAgIHZhciBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGNhbWVyYVBvc2l0aW9uLCB0aGlzLm9yaWdpbik7XHJcbiAgICBsZXQgbmV3UmFkaXVzID0gZGlzdGFuY2UgLyAxNVxyXG4gICAgbGV0IHNjYWxlID0gbmV3UmFkaXVzIC8gcmFkaXVzXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5U2NhbGUobWF0cml4LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoc2NhbGUsIHNjYWxlLCBzY2FsZSksIG1hdHJpeClcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KFxyXG4gICAgLy8gICBtYXRyaXgsXHJcbiAgICAvLyAgIHgsXHJcbiAgICAvLyAgIG1hdHJpeFxyXG4gICAgLy8gKVxyXG4gICAgLy/nu5Va6L20XHJcbiAgICBjb25zdCBheGlzU3BoZXJlWiA9IGF3YWl0IHRoaXMuY3JlYXRlQXhpc1NwaGVyZShcclxuICAgICAgJ21vZGVsX2VkaXRfekNpcmNsZScsXHJcbiAgICAgIHBvc2l0aW9uLFxyXG4gICAgICBtYXRyaXgsXHJcbiAgICAgIENlc2l1bS5Db2xvci5SRUQsXHJcbiAgICAgIG5ld1JhZGl1c1xyXG4gICAgKVxyXG4gICAgdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKGF4aXNTcGhlcmVaKVxyXG5cclxuICAgIC8v57uVWeWRqFxyXG4gICAgY29uc3QgYXhpc1NwaGVyZVkgPSBhd2FpdCB0aGlzLmNyZWF0ZUF4aXNTcGhlcmUoXHJcbiAgICAgICdtb2RlbF9lZGl0X3lDaXJjbGUnLFxyXG4gICAgICBwb3NpdGlvbixcclxuICAgICAgbWF0cml4LFxyXG4gICAgICBDZXNpdW0uQ29sb3IuQkxVRSxcclxuICAgICAgbmV3UmFkaXVzXHJcbiAgICApXHJcbiAgICB2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoYXhpc1NwaGVyZVkpXHJcbiAgICBsZXQgbXkgPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25ZKENlc2l1bS5NYXRoLnRvUmFkaWFucyg5MCkpXHJcbiAgICBsZXQgcm90YXRpb25ZID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obXkpXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShcclxuICAgICAgYXhpc1NwaGVyZVkuZ2VvbWV0cnlJbnN0YW5jZXMubW9kZWxNYXRyaXgsXHJcbiAgICAgIHJvdGF0aW9uWSxcclxuICAgICAgYXhpc1NwaGVyZVkuZ2VvbWV0cnlJbnN0YW5jZXMubW9kZWxNYXRyaXhcclxuICAgIClcclxuXHJcbiAgICAvL+e7lVjlkahcclxuICAgIGNvbnN0IGF4aXNTcGhlcmVYID0gYXdhaXQgdGhpcy5jcmVhdGVBeGlzU3BoZXJlKFxyXG4gICAgICAnbW9kZWxfZWRpdF94Q2lyY2xlJyxcclxuICAgICAgcG9zaXRpb24sXHJcbiAgICAgIG1hdHJpeCxcclxuICAgICAgQ2VzaXVtLkNvbG9yLkxJTUUsXHJcbiAgICAgIG5ld1JhZGl1c1xyXG4gICAgKVxyXG4gICAgdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKGF4aXNTcGhlcmVYKVxyXG4gICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChDZXNpdW0uTWF0aC50b1JhZGlhbnMoOTApKVxyXG4gICAgbGV0IHJvdGF0aW9uWCA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG14KVxyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkoXHJcbiAgICAgIGF4aXNTcGhlcmVYLmdlb21ldHJ5SW5zdGFuY2VzLm1vZGVsTWF0cml4LFxyXG4gICAgICByb3RhdGlvblgsXHJcbiAgICAgIGF4aXNTcGhlcmVYLmdlb21ldHJ5SW5zdGFuY2VzLm1vZGVsTWF0cml4XHJcbiAgICApXHJcblxyXG4gICAgbGV0IGxhc3RQaWNrVGltZSA9IDA7XHJcbiAgICBsZXQgdGltZW91dEV2ZW50XHJcbiAgICB0aGlzLk1hcEV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIG1vdmVFdmVudChtb3ZlbWVudClcclxuICAgIH0pXHJcblxyXG4gICAgZnVuY3Rpb24gbW92ZUV2ZW50KG1vdmVtZW50KSB7XHJcbiAgICAgIGlmICghX3RoaXMuYWN0aXZlQ2lyY2xlKSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobm93IC0gbGFzdFBpY2tUaW1lIDwgMTAwKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEV2ZW50KVxyXG4gICAgICAgICAgdGltZW91dEV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vdmVFdmVudChtb3ZlbWVudClcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRFdmVudClcclxuICAgICAgICBsYXN0UGlja1RpbWUgPSBub3c7XHJcbiAgICAgICAgbGV0IHByaW1pdGl2ZXMgPSBfdGhhdC5jb29yZENpcmNsZXNcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChwcmltaXRpdmVzW2ldLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVzID0gcHJpbWl0aXZlc1tpXS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcyhwcmltaXRpdmVzW2ldLl9uYW1lKTtcclxuICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVzW2ldLl9uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF96Q2lyY2xlJzpcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuY29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuUkVEKS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95Q2lyY2xlJzpcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuY29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuQkxVRSkudmFsdWVcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeENpcmNsZSc6XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmNvbG9yID0gQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoQ2VzaXVtLkNvbG9yLkxJTUUpLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwaWNrZWRPYmplY3RBcnJheSA9IHZpZXdlci5zY2VuZS5kcmlsbFBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24sIDEwKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgcGljayA9IHBpY2tlZE9iamVjdEFycmF5W2ldXHJcbiAgICAgICAgICBpZiAocGljayAmJiBwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLmlkKSB7XHJcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVzID0gcGljay5wcmltaXRpdmUuZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMocGljay5pZCk7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocGljay5wcmltaXRpdmUuX25hbWUpIHtcclxuICAgICAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3pDaXJjbGUnOlxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcy5jb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKENlc2l1bS5Db2xvci5ZRUxMT1cpLnZhbHVlXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95Q2lyY2xlJzpcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuY29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuWUVMTE9XKS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeENpcmNsZSc6XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmNvbG9yID0gQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoQ2VzaXVtLkNvbG9yLllFTExPVykudmFsdWVcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbjEgPSBDZXNpdW0uU2NlbmVUcmFuc2Zvcm1zLndnczg0VG9XaW5kb3dDb29yZGluYXRlcyh2aWV3ZXIuc2NlbmUsIF90aGF0LmNpY2xrUG9zaXRpb24pO1xyXG5cclxuICAgICAgICBsZXQgX3J4ID0gMCxcclxuICAgICAgICAgIF9yeSA9IDAsXHJcbiAgICAgICAgICBfcnogPSAwIC8veHl65pa55ZCR55qE5peL6L2s6YeP77yI5bqm77yJXHJcbiAgICAgICAgaWYgKCFwb3NpdGlvbjEpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBfeVBpeCA9IG1vdmVtZW50LnN0YXJ0UG9zaXRpb24ueSAtIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICBjb25zdCBfeFBpeCA9IG1vdmVtZW50LnN0YXJ0UG9zaXRpb24ueCAtIG1vdmVtZW50LmVuZFBvc2l0aW9uLnhcclxuICAgICAgICBzd2l0Y2ggKF90aGlzLmFjdGl2ZUNpcmNsZS5fbmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF94Q2lyY2xlJzpcclxuICAgICAgICAgICAgX3J5ID0gMSAqIF94UGl4XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF95Q2lyY2xlJzpcclxuICAgICAgICAgICAgX3J4ID0gMSAqIF95UGl4XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbW9kZWxfZWRpdF96Q2lyY2xlJzpcclxuICAgICAgICAgICAgX3J6ID0gMSAqIF94UGl4XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMuX3BhcmFtcy5yeCAtPSBfcnhcclxuICAgICAgICBpZiAoX3RoaXMuX3BhcmFtcy5yeCA+IDM2MCkge1xyXG4gICAgICAgICAgX3RoaXMuX3BhcmFtcy5yeCA9IDFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKF90aGlzLl9wYXJhbXMucnggPCAwKSB7XHJcbiAgICAgICAgICBfdGhpcy5fcGFyYW1zLnJ4ID0gMzYwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBteCA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblgoXHJcbiAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3RoaXMuX3BhcmFtcy5yeClcclxuICAgICAgICApXHJcbiAgICAgICAgX3RoaXMuX3BhcmFtcy5yeSAtPSBfcnlcclxuICAgICAgICBpZiAoX3RoaXMuX3BhcmFtcy5yeSA+IDM2MCkge1xyXG4gICAgICAgICAgX3RoaXMuX3BhcmFtcy5yeSA9IDFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKF90aGlzLl9wYXJhbXMucnkgPCAwKSB7XHJcbiAgICAgICAgICBfdGhpcy5fcGFyYW1zLnJ5ID0gMzYwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLl9wYXJhbXMucnogLT0gX3J6XHJcbiAgICAgICAgaWYgKF90aGlzLl9wYXJhbXMucnogPiAzNjApIHtcclxuICAgICAgICAgIF90aGlzLl9wYXJhbXMucnogPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChfdGhpcy5fcGFyYW1zLnJ6IDwgMCkge1xyXG4gICAgICAgICAgX3RoaXMuX3BhcmFtcy5yeiA9IDM2MFxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy51cGRhdGVNb2RlbChfdGhpcy5fcGFyYW1zLnR4LCBfdGhpcy5fcGFyYW1zLnR5LCBfdGhpcy5fcGFyYW1zLnR6LCBfdGhpcy5fcGFyYW1zLnJ4LCBfdGhpcy5fcGFyYW1zLnJ5LCBfdGhpcy5fcGFyYW1zLnJ6KVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuTWFwRXZlbnQubW91c2VfbGVmdF9kb3duKChldmVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihldmVudC5wb3NpdGlvbik7XHJcbiAgICAgIF90aGF0LmNpY2xrUG9zaXRpb24gPSBjYXJ0ZXNpYW5cclxuICAgICAgbGV0IHBpY2tlZE9iamVjdEFycmF5ID0gdmlld2VyLnNjZW5lLmRyaWxsUGljayhldmVudC5wb3NpdGlvbiwgMTApO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBpY2tlZE9iamVjdCA9IHBpY2tlZE9iamVjdEFycmF5W2ldXHJcbiAgICAgICAgaWYgKHBpY2tlZE9iamVjdCAmJiBwaWNrZWRPYmplY3QucHJpbWl0aXZlICYmIHBpY2tlZE9iamVjdC5pZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChwaWNrZWRPYmplY3QucHJpbWl0aXZlLl9uYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeENpcmNsZSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeUNpcmNsZSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekNpcmNsZSc6XHJcbiAgICAgICAgICAgICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVSb3RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlcyA9IHBpY2tlZE9iamVjdC5wcmltaXRpdmUuZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMocGlja2VkT2JqZWN0LnByaW1pdGl2ZS5fbmFtZSk7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlcy5jb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKENlc2l1bS5Db2xvci5ZRUxMT1cpLnZhbHVlXHJcbiAgICAgICAgICAgICAgX3RoaXMuYWN0aXZlQ2lyY2xlID0gcGlja2VkT2JqZWN0LnByaW1pdGl2ZVxyXG4gICAgICAgICAgICAgIF90aGlzLmFjdGl2ZU1vZGVsUGFyYW0gPSBfdGhpcy5pbml0UGFyYW0oKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgX3RoaXMuYWN0aXZlQ2lyY2xlID0gbnVsbFxyXG4gICAgICBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtID0gbnVsbFxyXG4gICAgICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVJvdGF0ZSA9IHRydWVcclxuICAgIH0pXHJcbiAgICB0aGlzLk1hcEV2ZW50Lm1vdXNlX2xlZnRfdXAoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlUm90YXRlID0gdHJ1ZTtcclxuICAgICAgbGV0IHByaW1pdGl2ZXMgPSBfdGhpcy5jb29yZENpcmNsZXNcclxuICAgICAgX3RoaXMuYWN0aXZlQ2lyY2xlID0gbnVsbFxyXG4gICAgICBfdGhpcy5hY3RpdmVNb2RlbFBhcmFtID0gbnVsbFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocHJpbWl0aXZlc1tpXS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBwcmltaXRpdmVzW2ldLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKHByaW1pdGl2ZXNbaV0uX25hbWUpO1xyXG4gICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVzW2ldLl9uYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfekNpcmNsZSc6XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlcy5jb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKENlc2l1bS5Db2xvci5SRUQpLnZhbHVlXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGVsX2VkaXRfeUNpcmNsZSc6XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlcy5jb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKENlc2l1bS5Db2xvci5CTFVFKS52YWx1ZVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdtb2RlbF9lZGl0X3hDaXJjbGUnOlxyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMuY29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuTElNRSkudmFsdWVcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvL+abtOaWsOaooeWei+S9jee9rlxyXG4gIHVwZGF0ZU1vZGVsKF90eCwgX3R5LCBfdHosIF9yeCA9IDAsIF9yeSA9IDAsIF9yeiA9IDApIHtcclxuICAgIHRoaXMuX3BhcmFtcy50eCA9IF90eCA9IHBhcnNlRmxvYXQocGFyc2VGbG9hdChfdHgpLnRvRml4ZWQoOCkpXHJcbiAgICB0aGlzLl9wYXJhbXMudHkgPSBfdHkgPSBwYXJzZUZsb2F0KHBhcnNlRmxvYXQoX3R5KS50b0ZpeGVkKDgpKVxyXG4gICAgdGhpcy5fcGFyYW1zLnR6ID0gX3R6ID0gcGFyc2VGbG9hdChwYXJzZUZsb2F0KF90eikudG9GaXhlZCgyKSlcclxuICAgIHRoaXMuX3BhcmFtcy5yeCA9IF9yeCA9IHBhcnNlRmxvYXQoX3J4KVxyXG4gICAgdGhpcy5fcGFyYW1zLnJ5ID0gX3J5ID0gcGFyc2VGbG9hdChfcnkpXHJcbiAgICB0aGlzLl9wYXJhbXMucnogPSBfcnogPSBwYXJzZUZsb2F0KF9yeilcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSBfdHhcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSBfdHlcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBfdHpcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUgPSB7IHg6IF9yeCwgeTogX3J5LCB6OiBfcnogfVxyXG4gICAgLy8gdGhpcy5tb2RlbC5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KVxyXG4gICAgLy8gdGhpcy5tb2RlbC5yb3RhdGUgPSB7IHg6IF9yeCwgeTogX3J5LCB6OiBfcnogfVxyXG4gICAgLy8gbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgIC8vICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeClcclxuICAgIC8vIClcclxuICAgIC8vIGxldCBteSA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblkoXHJcbiAgICAvLyAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnkpXHJcbiAgICAvLyApXHJcbiAgICAvLyBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgLy8gICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J6KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gLy8g5bmz56e7XHJcbiAgICAvLyBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KSlcclxuICAgIC8vIC8vIOaXi+i9rFxyXG4gICAgLy8gbGV0IHJvdGF0aW9uWCA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG14KVxyXG4gICAgLy8gbGV0IHJvdGF0aW9uWSA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG15KVxyXG4gICAgLy8gbGV0IHJvdGF0aW9uWiA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG16KVxyXG4gICAgLy8gbGV0IG9yaWdpbmFsTWF0cml4ID0gbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG0sIHJvdGF0aW9uWCwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICAvLyBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25ZLCBvcmlnaW5hbE1hdHJpeClcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIHRoaXMubW9kZWwubW9kZWxNYXRyaXgpXHJcbiAgICB0aGlzLmNvbnRyb2xsZXJDYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRyb2xsZXJDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgdGhpcy5fY29udHJvbGxlckNhbGxCYWNrID0gY2FsbGJhY2tcclxuICB9XHJcbiAgZ2V0IGNvbnRyb2xsZXJDYWxsQmFjaygpIHtcclxuICAgIHRoaXMuX2NvbnRyb2xsZXJDYWxsQmFjayAmJiB0aGlzLl9jb250cm9sbGVyQ2FsbEJhY2sodGhpcy5vcHRpb25zLCB0aGlzLmFjdGl2ZUF4aXMgPyBmYWxzZSA6IHRydWUpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVBeGlzQXJyb3cobmFtZSwgcG9zaXRpb24sIG1hdHJpeCwgY29sb3IpIHtcclxuICAgIGxldCByZXN1bHQgPSBuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgIGlkOiBuYW1lLFxyXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgQ2VzaXVtLlBvbHlsaW5lR2VvbWV0cnkoe1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbixcclxuICAgICAgICAgIHdpZHRoOiAyMFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihjb2xvcilcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICByZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXM6IGZhbHNlLFxyXG4gICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBvbHlsaW5lTWF0ZXJpYWxBcHBlYXJhbmNlKHtcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKENlc2l1bS5NYXRlcmlhbC5Qb2x5bGluZUFycm93VHlwZSwge1xyXG4gICAgICAgICAgY29sb3I6IGNvbG9yLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxyXG4gICAgICAgIHJlbmRlclN0YXRlOiB7XHJcbiAgICAgICAgICBkZXB0aFRlc3Q6IHtcclxuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGVwdGhNYXNrOiBmYWxzZSxcclxuICAgICAgICAgIGRlcHRoRnVuY3Rpb246IENlc2l1bS5EZXB0aEZ1bmN0aW9uLkFMV0FZUyxcclxuICAgICAgICB9LFxyXG4gICAgICB9KSxcclxuICAgICAgbW9kZWxNYXRyaXg6IG1hdHJpeFxyXG4gICAgfSlcclxuICAgIHJlc3VsdC5fbmFtZSA9IG5hbWVcclxuICAgIHRoaXMuY29vcmRBcnJvd3MucHVzaChyZXN1bHQpXHJcbiAgICByZXR1cm4gcmVzdWx0XHJcbiAgfVxyXG4gIGNyZWF0ZUF4aXNDaXJjdWxhcihuYW1lLCBwb3NpdGlvbiwgbWF0cml4LCBjb2xvcikge1xyXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uRWxsaXBzZUdlb21ldHJ5KFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBjZW50ZXI6IHsgeDogMSwgeTogMSwgejogMSB9LFxyXG4gICAgICAgICAgICBzZW1pTWlub3JBeGlzOiA1MDAwMDAuMCxcclxuICAgICAgICAgICAgc2VtaU1ham9yQXhpczogMTAwMDAwMC4wLFxyXG4gICAgICAgICAgICByb3RhdGlvbjogQ2VzaXVtLk1hdGguUElfT1ZFUl9GT1VSLFxyXG4gICAgICAgICAgICB2ZXJ0ZXhGb3JtYXQ6IENlc2l1bS5WZXJ0ZXhGb3JtYXQuUE9TSVRJT05fQU5EX1NUXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9KSxcclxuICAgICAgcmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOiBmYWxzZSxcclxuICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5FbGxpcHNvaWRTdXJmYWNlQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uTWF0ZXJpYWwoe1xyXG4gICAgICAgICAgZmFicmljOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdDb2xvcicsXHJcbiAgICAgICAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5ZRUxMT1dcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pLFxyXG4gICAgICBtb2RlbE1hdHJpeDogbWF0cml4XHJcbiAgICB9KVxyXG4gICAgcmVzdWx0Ll9uYW1lID0gbmFtZVxyXG4gICAgdGhpcy5jb29yZEFycm93cy5wdXNoKHJlc3VsdClcclxuICAgIHJldHVybiByZXN1bHRcclxuICB9XHJcblxyXG4gIGNyZWF0ZUF4aXNTcGhlcmUobmFtZSwgcG9zaXRpb24sIG1hdHJpeCwgY29sb3IsIHJhZGl1cykge1xyXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgaWQ6IG5hbWUsXHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uUG9seWxpbmVHZW9tZXRyeSh7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IHBvc2l0aW9uLFxyXG4gICAgICAgICAgd2lkdGg6IDVcclxuICAgICAgICB9KSxcclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoY29sb3IpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgcmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOiBmYWxzZSxcclxuICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZUNvbG9yQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXHJcbiAgICAgICAgcmVuZGVyU3RhdGU6IHtcclxuICAgICAgICAgIGRlcHRoVGVzdDoge1xyXG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkZXB0aE1hc2s6IGZhbHNlLFxyXG4gICAgICAgICAgZGVwdGhGdW5jdGlvbjogQ2VzaXVtLkRlcHRoRnVuY3Rpb24uQUxXQVlTLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLFxyXG4gICAgICBtb2RlbE1hdHJpeDogbWF0cml4XHJcbiAgICB9KVxyXG4gICAgcmVzdWx0Ll9yYWRpdXMgPSByYWRpdXNcclxuICAgIHJlc3VsdC5fbmFtZSA9IG5hbWVcclxuICAgIHRoaXMuY29vcmRDaXJjbGVzLnB1c2gocmVzdWx0KVxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ29vcmRBcnJvd3MoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29vcmRBcnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy52aXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmNvb3JkQXJyb3dzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jb29yZEFycm93cyA9IFtdXHJcbiAgfVxyXG5cclxuICByZW1vdmVDb29yZENpcmNsZSgpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb29yZENpcmNsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy52aXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmNvb3JkQ2lyY2xlc1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMuY29vcmRDaXJjbGVzID0gW11cclxuICB9XHJcblxyXG4gIHJlbW92ZUFsbFRvb2xzKCkge1xyXG4gICAgdGhpcy5yZW1vdmVDb29yZEFycm93cygpXHJcbiAgICB0aGlzLnJlbW92ZUNvb3JkQ2lyY2xlKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWFs+mXrS/ms6jplIBcclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZW1vdmVBbGxUb29scygpXHJcbiAgICB0aGlzLmFjdGl2ZUF4aXMgPSB1bmRlZmluZWRcclxuICAgIHRoaXMuYWN0aXZlU3RhdGUgPSB1bmRlZmluZWRcclxuICAgIHRoaXMuTWFwRXZlbnQgJiYgdGhpcy5NYXBFdmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudml3ZXIuY2FtZXJhLmNoYW5nZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmFnYWluQXJyb3cpXHJcbiAgICB0aGlzLnZpd2VyLmNhbWVyYS5jaGFuZ2VkLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5hZ2FpbkNpcmNsZSlcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlU3RhdGVcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuYWdhaW5BcnJvdygpXHJcbiAgICB0aGlzLmFnYWluQ2lyY2xlKClcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlck9iamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQXVGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF3S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaldBO0FBQUE7QUFBQTtBQUFBO0FBbVdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUJBO0FBNkVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQWhMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQU9BO0FBTkE7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBT0E7QUFOQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFPQTtBQU5BO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQXdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW5PQTtBQUFBO0FBQUE7QUFBQTtBQXFPQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFBQTtBQUpBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Controller/index.js\n"); - -/***/ }), - -/***/ "./src/DZ/XJ/BatchLoadObjModel/index.js": -/*!**********************************************!*\ - !*** ./src/DZ/XJ/BatchLoadObjModel/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BatchLoadObjModel; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Obj_Base_LoadObjModel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Obj/Base/LoadObjModel */ \"./src/Obj/Base/LoadObjModel/index.js\");\n/* harmony import */ var _LoadObjModel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LoadObjModel */ \"./src/DZ/XJ/LoadObjModel/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\nvar BatchLoadObjModel = /*#__PURE__*/function () {\n function BatchLoadObjModel(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, BatchLoadObjModel);\n this.sdk = sdk;\n this.options = _objectSpread({}, options);\n this.options.show = options.show || options.show === false ? options.show : true;\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getHost\"])();\n this.objModelObject = [];\n this._loaded = false;\n this._loadEvent = void 0;\n this.on();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(BatchLoadObjModel, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n var _this = this;\n if (typeof v === \"boolean\") {\n this.options.show = v;\n var _loop = function _loop(i) {\n _this.objModelObject[i].load(function () {\n _this.objModelObject[i].show = v;\n });\n };\n for (var i = 0; i < this.objModelObject.length; i++) {\n _loop(i);\n }\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"on\",\n value: function () {\n var _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var url, res, i, options, object;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) url = this.options.host + '/api/v1/source/obj';else url = this.options.host + '/yjearth4.0/api/v1/source/obj';\n if (this.options.code) {\n url = url + '?code=' + this.options.code;\n }\n _context.next = 5;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])()\n }\n });\n case 5:\n res = _context.sent;\n if (!res.ok) {\n _context.next = 15;\n break;\n }\n this.objModelObject = [];\n _context.next = 10;\n return res.json();\n case 10:\n this.list = _context.sent.data;\n if (this.options.count) {\n this.list = this.list.splice(0, this.options.count);\n }\n for (i = 0; i < this.list.length; i++) {\n options = JSON.parse(this.list[i].detail);\n options.host = this.options.host;\n if (this.options.show || this.options.show === false) {\n options.show = this.options.show;\n }\n object = new _LoadObjModel__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sdk, options);\n this.objModelObject.push(object);\n }\n this._loaded = true;\n if (this._loadEvent) {\n this._loadEvent();\n }\n case 15:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function on() {\n return _on.apply(this, arguments);\n }\n return on;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n var _this2 = this;\n var _loop2 = function _loop2(i) {\n _this2.objModelObject[i].load(function () {\n _this2.objModelObject[i].remove();\n });\n };\n for (var i = 0; i < this.objModelObject.length; i++) {\n _loop2(i);\n }\n }\n }, {\n key: \"load\",\n value: function load(callback) {\n if (this._loaded) {\n callback();\n } else {\n this._loadEvent = callback;\n }\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRFovWEovQmF0Y2hMb2FkT2JqTW9kZWwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRFovWEovQmF0Y2hMb2FkT2JqTW9kZWwvaW5kZXguanM/ZmUyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRIb3N0LCBnZXRUb2tlbiB9IGZyb20gXCIuLi8uLi8uLi9vblwiO1xyXG5pbXBvcnQgQmFzZUxvYWRPYmpNb2RlbCBmcm9tICcuLi8uLi8uLi9PYmovQmFzZS9Mb2FkT2JqTW9kZWwnXHJcbmltcG9ydCBMb2FkT2JqTW9kZWwgZnJvbSAnLi4vTG9hZE9iak1vZGVsJ1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXRjaExvYWRPYmpNb2RlbCB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHRoaXMuc2RrID0gc2RrXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmhvc3QgPSB0aGlzLm9wdGlvbnMuaG9zdCB8fCBnZXRIb3N0KClcclxuICAgIHRoaXMub2JqTW9kZWxPYmplY3QgPSBbXVxyXG4gICAgdGhpcy5fbG9hZGVkID0gZmFsc2VcclxuICAgIHRoaXMuX2xvYWRFdmVudCA9IHZvaWQgMFxyXG4gICAgdGhpcy5vbigpXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHZcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9iak1vZGVsT2JqZWN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5vYmpNb2RlbE9iamVjdFtpXS5sb2FkKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub2JqTW9kZWxPYmplY3RbaV0uc2hvdyA9IHZcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb24oKSB7XHJcbiAgICBsZXQgdXJsID0gXCJcIlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSlcclxuICAgICAgdXJsID0gdGhpcy5vcHRpb25zLmhvc3QgKyAnL2FwaS92MS9zb3VyY2Uvb2JqJ1xyXG4gICAgZWxzZVxyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcveWplYXJ0aDQuMC9hcGkvdjEvc291cmNlL29iaidcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29kZSkge1xyXG4gICAgICB1cmwgPSB1cmwgKyAnP2NvZGU9JyArIHRoaXMub3B0aW9ucy5jb2RlXHJcbiAgICB9XHJcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnZ2V0JyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgXCJ0b2tlblwiOiBnZXRUb2tlbigpLFxyXG4gICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGdldFRva2VuKCksXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHJlcy5vaykge1xyXG4gICAgICB0aGlzLm9iak1vZGVsT2JqZWN0ID0gW11cclxuICAgICAgdGhpcy5saXN0ID0gKGF3YWl0IHJlcy5qc29uKCkpLmRhdGE7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY291bnQpIHtcclxuICAgICAgICB0aGlzLmxpc3QgPSB0aGlzLmxpc3Quc3BsaWNlKDAsIHRoaXMub3B0aW9ucy5jb3VudClcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBvcHRpb25zID0gSlNPTi5wYXJzZSh0aGlzLmxpc3RbaV0uZGV0YWlsKVxyXG4gICAgICAgIG9wdGlvbnMuaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93IHx8IHRoaXMub3B0aW9ucy5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgb3B0aW9ucy5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG9iamVjdCA9IG5ldyBMb2FkT2JqTW9kZWwodGhpcy5zZGssIG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMub2JqTW9kZWxPYmplY3QucHVzaChvYmplY3QpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZVxyXG4gICAgICBpZiAodGhpcy5fbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fbG9hZEV2ZW50KClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9iak1vZGVsT2JqZWN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMub2JqTW9kZWxPYmplY3RbaV0ubG9hZCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vYmpNb2RlbE9iamVjdFtpXS5yZW1vdmUoKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZChjYWxsYmFjaykge1xyXG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xvYWRFdmVudCA9IGNhbGxiYWNrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQVBBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXJDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/DZ/XJ/BatchLoadObjModel/index.js\n"); - -/***/ }), - -/***/ "./src/DZ/XJ/LoadObjModel/index.js": -/*!*****************************************!*\ - !*** ./src/DZ/XJ/LoadObjModel/index.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LoadObjModel; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Obj_Base_LoadObjModel_AModelLoader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Obj/Base/LoadObjModel/AModelLoader */ \"./src/Obj/Base/LoadObjModel/AModelLoader.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Obj_Base_LoadObjModel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Obj/Base/LoadObjModel */ \"./src/Obj/Base/LoadObjModel/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar LoadObjModel = /*#__PURE__*/function (_BaseLoadObjModel) {\n function LoadObjModel(sdk, options, CallBack) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, LoadObjModel);\n _this = _callSuper(this, LoadObjModel, [sdk, options, CallBack]);\n _this._loadEvent = void 0;\n _this._loaded = false;\n _this.options.objId = options.objId;\n _this.options.videoId = options.videoId;\n _this.options.videoType = options.videoType || 'flv';\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(LoadObjModel, _BaseLoadObjModel);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(LoadObjModel, [{\n key: \"addResource\",\n value: function () {\n var _addResource = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var that, xml, xmlString, parser, xmlDoc, position, crs, result, scene, origin, obj_modelMatrix, objLoader, obj;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n that = this;\n that.options.xmlURL = that.options.objUrl.replace('.obj', '.xml');\n if (!(that.options.xmlURL !== '')) {\n _context.next = 35;\n break;\n }\n _context.next = 5;\n return fetch(that.options.xmlURL);\n case 5:\n xml = _context.sent;\n if (!xml.ok) {\n _context.next = 33;\n break;\n }\n _context.next = 9;\n return xml.text();\n case 9:\n xmlString = _context.sent;\n parser = new DOMParser();\n xmlDoc = parser.parseFromString(xmlString, 'text/xml'); // console.log('xmlDocxmlDocxmlDoc', xmlDoc)\n position = xmlDoc.getElementsByTagName('Position')[0].textContent.split(','); // const bbox = xmlDoc.getElementsByTagName('bbox')[0]\n crs = xmlDoc.getElementsByTagName('Crs')[0].textContent;\n result = that.convert([{\n x: position[0],\n y: position[1],\n z: position[2]\n }], crs, 'EPSG:4326');\n that.options.position = that.options.position || {\n lng: result.points[0].x,\n lat: result.points[0].y,\n alt: result.points[0].z\n };\n that.ControllerObject.position = that.options.position;\n scene = that.viwer.scene;\n origin = Cesium.Cartesian3.fromDegrees(that.options.position.lng, that.options.position.lat, that.options.position.alt);\n obj_modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(origin, new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(0.85), Cesium.Math.toRadians(0), Cesium.Math.toRadians(0)));\n objLoader = new _Obj_Base_LoadObjModel_AModelLoader__WEBPACK_IMPORTED_MODULE_8__[\"default\"](that.viwer.scene.context);\n _context.next = 23;\n return objLoader.Load(that.options.objUrl, that.options.videoId, that.options.host);\n case 23:\n obj = _context.sent;\n obj.modelMatrix = obj_modelMatrix;\n obj.show = that.options.show;\n obj.setFlvVideo(that.options.videoUrl);\n scene.primitives.add(obj);\n that.primitive = obj;\n that.controllerCallBack({\n rotate: {\n x: that.options.roll,\n y: -that.options.pitch,\n z: -that.options.heading\n },\n position: _objectSpread({}, that.options.position)\n });\n that.loaded = true;\n that._loaded = true;\n if (that._loadEvent) {\n that._loadEvent();\n }\n case 33:\n _context.next = 36;\n break;\n case 35:\n return _context.abrupt(\"return\");\n case 36:\n if (!(that.options.objUrl === '')) {\n _context.next = 38;\n break;\n }\n return _context.abrupt(\"return\");\n case 38:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function addResource() {\n return _addResource.apply(this, arguments);\n }\n return addResource;\n }()\n }, {\n key: \"requestResource\",\n value: function () {\n var _requestResource = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var that;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n that = this;\n if (that._loaded) {\n _context2.next = 12;\n break;\n }\n if (!that.options.objId) {\n _context2.next = 6;\n break;\n }\n _context2.next = 5;\n return that.requestObjResource();\n case 5:\n that.options.objUrl = _context2.sent;\n case 6:\n if (!that.options.videoId) {\n _context2.next = 10;\n break;\n }\n _context2.next = 9;\n return that.requestVideoResource();\n case 9:\n that.options.videoUrl = _context2.sent;\n case 10:\n _context2.next = 12;\n return that.addResource();\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function requestResource() {\n return _requestResource.apply(this, arguments);\n }\n return requestResource;\n }()\n }, {\n key: \"requestObjResource\",\n value: function requestObjResource() {\n var host = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) host = this.options.host;else host = this.options.host + '/yjearth4.0';\n var url = host + '/obj/' + this.options.objId;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])()\n }\n }).then(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3(res) {\n var text;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return res.text();\n case 2:\n text = _context3.sent;\n text = JSON.parse(text);\n if (![0, 200].includes(text.code)) {\n _context3.next = 13;\n break;\n }\n if (!text.data.objPath.length) {\n _context3.next = 9;\n break;\n }\n return _context3.abrupt(\"return\", host + '/obj/wirte/file/' + text.data.objPath);\n case 9:\n console.warn('资源不存在');\n case 10:\n return _context3.abrupt(\"return\");\n case 13:\n console.warn(text.msg || text.message);\n return _context3.abrupt(\"return\");\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n }, {\n key: \"requestVideoResource\",\n value: function requestVideoResource() {\n var host = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) host = this.options.host;else host = this.options.host + '/yjearth4.0';\n var url = host + '/videoFusion/' + this.options.videoId;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])()\n }\n }).then(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee5(res) {\n var text;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return res.text();\n case 2:\n text = _context5.sent;\n text = JSON.parse(text);\n if (![0, 200].includes(text.code)) {\n _context5.next = 13;\n break;\n }\n if (!text.data.deviceCode.length) {\n _context5.next = 9;\n break;\n }\n return _context5.abrupt(\"return\", fetch(host + '/videoFusion/vide/stream', {\n method: 'post',\n body: JSON.stringify({\n type: 'flv',\n deviceCode: text.data.deviceCode\n }),\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])()\n }\n }).then(/*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee4(res2) {\n var text2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return res2.text();\n case 2:\n text2 = _context4.sent;\n text2 = JSON.parse(text2);\n if (![0, 200].includes(text2.code)) {\n _context4.next = 13;\n break;\n }\n if (!(text2.data.flv && text2.data.flv.length)) {\n _context4.next = 9;\n break;\n }\n return _context4.abrupt(\"return\", text2.data.flv);\n case 9:\n console.warn('地址不存在');\n case 10:\n return _context4.abrupt(\"return\");\n case 13:\n console.warn(text2.msg || text2.message);\n return _context4.abrupt(\"return\");\n case 15:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }()));\n case 9:\n console.warn('设备不存在');\n case 10:\n return _context5.abrupt(\"return\");\n case 13:\n console.warn(text.msg || text.message);\n return _context5.abrupt(\"return\");\n case 15:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n }, {\n key: \"load\",\n value: function load(callback) {\n if (this._loaded) {\n callback();\n } else {\n this._loadEvent = callback;\n }\n }\n }]);\n}(_Obj_Base_LoadObjModel__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRFovWEovTG9hZE9iak1vZGVsL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RaL1hKL0xvYWRPYmpNb2RlbC9pbmRleC5qcz9iZTM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBTW9kZWxMb2FkZXIgZnJvbSAnLi4vLi4vLi4vT2JqL0Jhc2UvTG9hZE9iak1vZGVsL0FNb2RlbExvYWRlcidcclxuaW1wb3J0IHsgZ2V0SG9zdCwgZ2V0VG9rZW4gfSBmcm9tIFwiLi4vLi4vLi4vb25cIjtcclxuaW1wb3J0IEJhc2VMb2FkT2JqTW9kZWwgZnJvbSAnLi4vLi4vLi4vT2JqL0Jhc2UvTG9hZE9iak1vZGVsJ1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2FkT2JqTW9kZWwgZXh0ZW5kcyBCYXNlTG9hZE9iak1vZGVsIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIENhbGxCYWNrKSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMsIENhbGxCYWNrKVxyXG4gICAgdGhpcy5fbG9hZEV2ZW50ID0gdm9pZCAwXHJcbiAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLm9iaklkID0gb3B0aW9ucy5vYmpJZFxyXG4gICAgdGhpcy5vcHRpb25zLnZpZGVvSWQgPSBvcHRpb25zLnZpZGVvSWRcclxuICAgIHRoaXMub3B0aW9ucy52aWRlb1R5cGUgPSBvcHRpb25zLnZpZGVvVHlwZSB8fCAnZmx2J1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkUmVzb3VyY2UoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIHRoYXQub3B0aW9ucy54bWxVUkwgPSB0aGF0Lm9wdGlvbnMub2JqVXJsLnJlcGxhY2UoJy5vYmonLCAnLnhtbCcpXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnhtbFVSTCAhPT0gJycpIHtcclxuICAgICAgY29uc3QgeG1sID0gYXdhaXQgZmV0Y2godGhhdC5vcHRpb25zLnhtbFVSTClcclxuICAgICAgaWYgKHhtbC5vaykge1xyXG4gICAgICAgIGNvbnN0IHhtbFN0cmluZyA9IGF3YWl0IHhtbC50ZXh0KClcclxuICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKClcclxuICAgICAgICBjb25zdCB4bWxEb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbFN0cmluZywgJ3RleHQveG1sJylcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygneG1sRG9jeG1sRG9jeG1sRG9jJywgeG1sRG9jKVxyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0geG1sRG9jXHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ1Bvc2l0aW9uJylbMF1cclxuICAgICAgICAgIC50ZXh0Q29udGVudC5zcGxpdCgnLCcpXHJcbiAgICAgICAgLy8gY29uc3QgYmJveCA9IHhtbERvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmJveCcpWzBdXHJcbiAgICAgICAgY29uc3QgY3JzID0geG1sRG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdDcnMnKVswXS50ZXh0Q29udGVudFxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoYXQuY29udmVydChcclxuICAgICAgICAgIFt7IHg6IHBvc2l0aW9uWzBdLCB5OiBwb3NpdGlvblsxXSwgejogcG9zaXRpb25bMl0gfV0sXHJcbiAgICAgICAgICBjcnMsXHJcbiAgICAgICAgICAnRVBTRzo0MzI2J1xyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uIHx8IHsgbG5nOiByZXN1bHQucG9pbnRzWzBdLngsIGxhdDogcmVzdWx0LnBvaW50c1swXS55LCBhbHQ6IHJlc3VsdC5wb2ludHNbMF0ueiB9XHJcbiAgICAgICAgdGhhdC5Db250cm9sbGVyT2JqZWN0LnBvc2l0aW9uID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uXHJcbiAgICAgICAgY29uc3Qgc2NlbmUgPSB0aGF0LnZpd2VyLnNjZW5lXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICApXHJcbiAgICAgICAgY29uc3Qgb2JqX21vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuaGVhZGluZ1BpdGNoUm9sbFRvRml4ZWRGcmFtZShcclxuICAgICAgICAgIG9yaWdpbixcclxuICAgICAgICAgIG5ldyBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbChcclxuICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuODUpLFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMCksXHJcbiAgICAgICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucygwKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgICBsZXQgb2JqTG9hZGVyID0gbmV3IEFNb2RlbExvYWRlcih0aGF0LnZpd2VyLnNjZW5lLmNvbnRleHQpXHJcbiAgICAgICAgbGV0IG9iaiA9IGF3YWl0IG9iakxvYWRlci5Mb2FkKHRoYXQub3B0aW9ucy5vYmpVcmwsIHRoYXQub3B0aW9ucy52aWRlb0lkLCB0aGF0Lm9wdGlvbnMuaG9zdClcclxuICAgICAgICBvYmoubW9kZWxNYXRyaXggPSBvYmpfbW9kZWxNYXRyaXhcclxuICAgICAgICBvYmouc2hvdyA9IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgICAgb2JqLnNldEZsdlZpZGVvKHRoYXQub3B0aW9ucy52aWRlb1VybClcclxuICAgICAgICBzY2VuZS5wcmltaXRpdmVzLmFkZChvYmopXHJcbiAgICAgICAgdGhhdC5wcmltaXRpdmUgPSBvYmpcclxuICAgICAgICB0aGF0LmNvbnRyb2xsZXJDYWxsQmFjayh7XHJcbiAgICAgICAgICByb3RhdGU6IHsgeDogdGhhdC5vcHRpb25zLnJvbGwsIHk6IC10aGF0Lm9wdGlvbnMucGl0Y2gsIHo6IC10aGF0Lm9wdGlvbnMuaGVhZGluZyB9LFxyXG4gICAgICAgICAgcG9zaXRpb246IHsgLi4udGhhdC5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoYXQubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoYXQuX2xvYWRlZCA9IHRydWVcclxuICAgICAgICBpZiAodGhhdC5fbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgICB0aGF0Ll9sb2FkRXZlbnQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhhdC5vcHRpb25zLm9ialVybCA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZXF1ZXN0UmVzb3VyY2UoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGlmKCF0aGF0Ll9sb2FkZWQpIHtcclxuICAgICAgaWYodGhhdC5vcHRpb25zLm9iaklkKSB7XHJcbiAgICAgICAgdGhhdC5vcHRpb25zLm9ialVybCA9IGF3YWl0IHRoYXQucmVxdWVzdE9ialJlc291cmNlKClcclxuICAgICAgfVxyXG4gICAgICBpZih0aGF0Lm9wdGlvbnMudmlkZW9JZCkge1xyXG4gICAgICAgIHRoYXQub3B0aW9ucy52aWRlb1VybCA9IGF3YWl0IHRoYXQucmVxdWVzdFZpZGVvUmVzb3VyY2UoKVxyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoYXQuYWRkUmVzb3VyY2UoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVxdWVzdE9ialJlc291cmNlKCkge1xyXG4gICAgbGV0IGhvc3QgPSBcIlwiXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhvc3QuZW5kc1dpdGgoXCJ5amVhcnRoNC4wXCIpKVxyXG4gICAgICBob3N0ID0gdGhpcy5vcHRpb25zLmhvc3RcclxuICAgIGVsc2VcclxuICAgICAgaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0ICsgJy95amVhcnRoNC4wJ1xyXG4gICAgbGV0IHVybCA9IGhvc3QgKyAnL29iai8nICsgdGhpcy5vcHRpb25zLm9iaklkXHJcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ2dldCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICB9XHJcbiAgICB9KS50aGVuKGFzeW5jIChyZXMpID0+IHtcclxuICAgICAgbGV0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpXHJcbiAgICAgIHRleHQgPSBKU09OLnBhcnNlKHRleHQpXHJcbiAgICAgIGlmIChbMCwgMjAwXS5pbmNsdWRlcyh0ZXh0LmNvZGUpKSB7XHJcbiAgICAgICAgaWYgKHRleHQuZGF0YS5vYmpQYXRoLmxlbmd0aClcclxuICAgICAgICAgIHJldHVybiBob3N0ICsgJy9vYmovd2lydGUvZmlsZS8nICsgdGV4dC5kYXRhLm9ialBhdGhcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ+i1hOa6kOS4jeWtmOWcqCcpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKHRleHQubXNnIHx8IHRleHQubWVzc2FnZSlcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlcXVlc3RWaWRlb1Jlc291cmNlKCkge1xyXG4gICAgbGV0IGhvc3QgPSBcIlwiXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhvc3QuZW5kc1dpdGgoXCJ5amVhcnRoNC4wXCIpKVxyXG4gICAgICBob3N0ID0gdGhpcy5vcHRpb25zLmhvc3RcclxuICAgIGVsc2VcclxuICAgICAgaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0ICsgJy95amVhcnRoNC4wJ1xyXG4gICAgbGV0IHVybCA9IGhvc3QgKyAnL3ZpZGVvRnVzaW9uLycgKyB0aGlzLm9wdGlvbnMudmlkZW9JZFxyXG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgZ2V0VG9rZW4oKSxcclxuICAgICAgfVxyXG4gICAgfSkudGhlbihhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgIGxldCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKVxyXG4gICAgICB0ZXh0ID0gSlNPTi5wYXJzZSh0ZXh0KVxyXG4gICAgICBpZiAoWzAsIDIwMF0uaW5jbHVkZXModGV4dC5jb2RlKSkge1xyXG4gICAgICAgIGlmICh0ZXh0LmRhdGEuZGV2aWNlQ29kZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBmZXRjaChob3N0KycvdmlkZW9GdXNpb24vdmlkZS9zdHJlYW0nLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7dHlwZTogJ2ZsdicsIGRldmljZUNvZGU6IHRleHQuZGF0YS5kZXZpY2VDb2RlfSksXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KS50aGVuKGFzeW5jIChyZXMyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0MiA9IGF3YWl0IHJlczIudGV4dCgpXHJcbiAgICAgICAgICAgIHRleHQyID0gSlNPTi5wYXJzZSh0ZXh0MilcclxuICAgICAgICAgICAgaWYgKFswLCAyMDBdLmluY2x1ZGVzKHRleHQyLmNvZGUpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRleHQyLmRhdGEuZmx2ICYmIHRleHQyLmRhdGEuZmx2Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHQyLmRhdGEuZmx2XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign5Zyw5Z2A5LiN5a2Y5ZyoJylcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4odGV4dDIubXNnIHx8IHRleHQyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGNvbnNvbGUud2Fybign6K6+5aSH5LiN5a2Y5ZyoJylcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLndhcm4odGV4dC5tc2cgfHwgdGV4dC5tZXNzYWdlKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbG9hZChjYWxsYmFjaykge1xyXG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xvYWRFdmVudCA9IGNhbGxiYWNrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBUUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/DZ/XJ/LoadObjModel/index.js\n"); - -/***/ }), - -/***/ "./src/Draw/draw.js": -/*!**************************!*\ - !*** ./src/Draw/draw.js ***! - \**************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: draw\r\n * @author: Administrator\r\n * @date: 2022-06-14 16:29\r\n * @description:draw\r\n * @update: 2022-06-14 16:29\r\n */\n\n\nvar Draw = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor\r\n * */\n function Draw(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var is2D = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Draw);\n _this = _callSuper(this, Draw, [sdk, options]);\n _this.viewer = sdk.viewer;\n _this.entityHasCreated = false;\n _this.event = null;\n _this._tipText = options.tipText;\n _this.tip = null;\n _this.points_ids = [];\n _this.color = options.color || 'rgba(185,14,14,0.58)';\n _this._is2D = is2D;\n _this._sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__[\"get2DView\"])();\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Draw, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Draw, [{\n key: \"tipText\",\n get: function get() {\n return this._tipText || '';\n },\n set: function set(text) {\n this._tipText = text;\n if (this.tip) {\n this.tip.set_text(text);\n }\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.viewer;\n var id = this.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n position: cartesian,\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n // disableDepthTestDistance: 1000000\n }\n }));\n return id;\n }\n }, {\n key: \"remove_entity\",\n value: function remove_entity(id) {\n this.viewer.entities.removeById(id);\n if (!this._is2D && this._sdk2D && this._sdk2D.viewer && this._sdk2D.viewer.entities) {\n this._sdk2D.viewer.entities.removeById(id);\n }\n }\n }, {\n key: \"start\",\n value: function start() {\n // this.setPickStatus(false)\n }\n }, {\n key: \"end\",\n value: function end() {\n var _this2 = this;\n // this.setPickStatus(true)\n\n YJ.Measure.SetMeasureStatus(false);\n this.entityHasCreated = false;\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n this.tip && this.tip.destroy();\n this.points_ids.forEach(function (id) {\n _this2.remove_entity(id);\n });\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Draw);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhdy5qcz9kYmU3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogZHJhd1xyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE0IDE2OjI5XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNCAxNjoyOVxyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uL1Rvb2xzJ1xyXG5pbXBvcnQgeyBnZXQyRFZpZXcgfSBmcm9tICcuLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcblxyXG5jbGFzcyBEcmF3IGV4dGVuZHMgVG9vbHMge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIGlzMkQgPSBmYWxzZSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLmVudGl0eUhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5ldmVudCA9IG51bGxcclxuICAgIHRoaXMuX3RpcFRleHQgPSBvcHRpb25zLnRpcFRleHRcclxuICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgdGhpcy5wb2ludHNfaWRzID0gW11cclxuICAgIHRoaXMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICdyZ2JhKDE4NSwxNCwxNCwwLjU4KSdcclxuICAgIHRoaXMuX2lzMkQgPSBpczJEXHJcbiAgICB0aGlzLl9zZGsyRCA9IGdldDJEVmlldygpXHJcbiAgfVxyXG5cclxuICBnZXQgdGlwVGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLl90aXBUZXh0IHx8ICcnXHJcbiAgfVxyXG5cclxuICBzZXQgdGlwVGV4dCh0ZXh0KSB7XHJcbiAgICB0aGlzLl90aXBUZXh0ID0gdGV4dFxyXG4gICAgaWYodGhpcy50aXApIHtcclxuICAgICAgdGhpcy50aXAuc2V0X3RleHQodGV4dClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHZpZXdlciA9IHRoaXMudmlld2VyKSB7XHJcbiAgICBsZXQgaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvc2l0aW9uOiBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICBpbWFnZTogdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgIC8vIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgIC8vIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogMTAwMDAwMFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHJlbW92ZV9lbnRpdHkoaWQpIHtcclxuICAgIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZUJ5SWQoaWQpXHJcbiAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQgJiYgdGhpcy5fc2RrMkQudmlld2VyICYmIHRoaXMuX3NkazJELnZpZXdlci5lbnRpdGllcykge1xyXG4gICAgICB0aGlzLl9zZGsyRC52aWV3ZXIuZW50aXRpZXMucmVtb3ZlQnlJZChpZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0KCkge1xyXG4gICAgLy8gdGhpcy5zZXRQaWNrU3RhdHVzKGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgZW5kKCkge1xyXG4gICAgLy8gdGhpcy5zZXRQaWNrU3RhdHVzKHRydWUpXHJcblxyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5lbnRpdHlIYXNDcmVhdGVkID0gZmFsc2VcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQyRCAmJiB0aGlzLmV2ZW50MkQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMucG9pbnRzX2lkcy5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJhd1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/draw.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawAssemble.js": -/*!**********************************!*\ - !*** ./src/Draw/drawAssemble.js ***! - \**********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\nvar transformCartesianToWGS84 = function transformCartesianToWGS84(cartesian) {\n var ellipsoid = Cesium.Ellipsoid.WGS84;\n var cartographic = ellipsoid.cartesianToCartographic(cartesian);\n var x = Cesium.Math.toDegrees(cartographic.longitude);\n var y = Cesium.Math.toDegrees(cartographic.latitude);\n var z = cartographic.height;\n return {\n x: x,\n y: y,\n z: z\n };\n};\n\n/**\r\n * @extends Draw*/\nvar DrawAssemble = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawAssemble(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawAssemble);\n _this = _callSuper(this, DrawAssemble, [sdk, options]);\n _this.points = null;\n _this.polygonHasCreated = false;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawAssemble, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawAssemble, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n var that = this;\n // eslint-disable-next-line no-undef\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawAssemble, \"start\", this, 3)([]);\n // eslint-disable-next-line no-undef\n YJ.Measure.SetMeasureStatus(true);\n var into;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确定,右键取消;', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.anchorpoints = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n if (!cartesian) return;\n if (_this2.anchorpoints.length === 3) {\n _this2.anchorpoints[1] = cartesian;\n } else {\n _this2.anchorpoints.push(cartesian);\n }\n cache_positions.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n if (_this2.points_ids.length === 3) {\n var array = [cache_positions[0], cache_positions[2], cache_positions[1]];\n cb(null, array);\n _this2.end();\n } else {\n cb(cache_positions.length);\n }\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) return;\n if (cache_positions.length > 1) {\n _this2.positions = [cache_positions[0], _this2.cartesian3Towgs84(cartesian, _this2.viewer), cache_positions[1]];\n } else {\n _this2.positions = [cache_positions[0], _this2.cartesian3Towgs84(cartesian, _this2.viewer)];\n }\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.assemblePolygon)) {\n _this2.assemblePolygon = DrawAssemble.polygon(_this2);\n }\n if (_this2.anchorpoints.length >= 2) {\n if (_this2.points_ids.length === 1) {\n var pnts = new Array();\n _this2.positions.forEach(function (item) {\n pnts.push([item.lng, item.lat]);\n });\n var mid = P.PlotUtils.mid(pnts[0], pnts[1]);\n var d = P.PlotUtils.distance(pnts[0], mid) / 0.9;\n var pnt = P.PlotUtils.getThirdPoint(pnts[0], mid, P.Constants.HALF_PI, d, true);\n _this2.positions = [_this2.positions[0], {\n lng: pnt[0],\n lat: pnt[1]\n }, _this2.positions[1]];\n }\n //替换中间点\n _this2.anchorpoints[1] = cartesian;\n } else {\n _this2.anchorpoints.push(cartesian);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n if (_this2.points_ids.length === 1) {\n _this2.viewer.entities.remove(_this2.assemblePolygon);\n _this2.assemblePolygon = undefined;\n }\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.anchorpoints.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.assemblePolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.assemblePolygon = DrawAssemble.polygon(_this2);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n cb(cache_positions.length);\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!cartesian) return;\n if (_this2.anchorpoints.length === 3) {\n _this2.anchorpoints[1] = cartesian;\n } else {\n _this2.anchorpoints.push(cartesian);\n }\n cache_positions.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n if (_this2.points_ids.length === 3) {\n var array = [cache_positions[0], cache_positions[2], cache_positions[1]];\n cb(null, array);\n _this2.end();\n } else {\n cb(cache_positions.length);\n }\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) return;\n if (cache_positions.length > 1) {\n _this2.positions = [cache_positions[0], _this2.cartesian3Towgs84(cartesian, _this2.viewer), cache_positions[1]];\n } else {\n _this2.positions = [cache_positions[0], _this2.cartesian3Towgs84(cartesian, _this2.viewer)];\n }\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.assemblePolygon)) {\n _this2.assemblePolygon = DrawAssemble.polygon(_this2, _this2._sdk2D.viewer);\n }\n if (_this2.anchorpoints.length >= 2) {\n if (_this2.points_ids.length === 1) {\n var pnts = new Array();\n _this2.positions.forEach(function (item) {\n pnts.push([item.lng, item.lat]);\n });\n var mid = P.PlotUtils.mid(pnts[0], pnts[1]);\n var d = P.PlotUtils.distance(pnts[0], mid) / 0.9;\n var pnt = P.PlotUtils.getThirdPoint(pnts[0], mid, P.Constants.HALF_PI, d, true);\n _this2.positions = [_this2.positions[0], {\n lng: pnt[0],\n lat: pnt[1]\n }, _this2.positions[1]];\n }\n //替换中间点\n _this2.anchorpoints[1] = cartesian;\n } else {\n _this2.anchorpoints.push(cartesian);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n if (_this2.points_ids.length === 1) {\n _this2.viewer.entities.remove(_this2.assemblePolygon);\n _this2.assemblePolygon = undefined;\n }\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.anchorpoints.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.assemblePolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.assemblePolygon = DrawAssemble.polygon(_this2, _this2._sdk2D.viewer);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n cb(cache_positions.length);\n }\n }\n });\n });\n }\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(DrawAssemble, \"end\", this, 3)([]);\n this.viewer.entities.remove(this.assemblePolygon);\n if (!this._is2D && this._sdk2D) {\n this._sdk2D.viewer.entities.remove(this.assemblePolygon);\n }\n }\n\n // computeAssemblePoints(anchorpoints) {\n // let points = []\n\n // let originP = transformCartesianToWGS84(anchorpoints[0])\n // let lastP = anchorpoints[1]\n // ? transformCartesianToWGS84(anchorpoints[1])\n // : { x: originP.x + 0.00001, y: originP.y + 0.00001, z: originP.z }\n // let vectorOL = { x: lastP.x - originP.x, y: lastP.y - originP.y }\n // let dOL = Math.sqrt(vectorOL.x * vectorOL.x + vectorOL.y * vectorOL.y)\n // let v_O_P1_lr = this.calculateVector(\n // vectorOL,\n // Math.PI / 3,\n // (Math.sqrt(3) / 12) * dOL\n // )\n // let originP_P1 = v_O_P1_lr[1]\n // let p1 = { x: originP.x + originP_P1.x, y: originP.y + originP_P1.y }\n // let p2 = { x: (originP.x + lastP.x) / 2, y: (originP.y + lastP.y) / 2 }\n // let v_L_P3_lr = this.calculateVector(\n // vectorOL,\n // (Math.PI * 2) / 3,\n // (Math.sqrt(3) / 12) * dOL\n // )\n // let lastP_P3 = v_L_P3_lr[1]\n // let p3 = { x: lastP.x + lastP_P3.x, y: lastP.y + lastP_P3.y }\n // let v_O_P5_lr = this.calculateVector(vectorOL, Math.PI / 2, (1 / 2) * dOL)\n // let v_O_P5 = v_O_P5_lr[0]\n // let p5 = { x: v_O_P5.x + p2.x, y: v_O_P5.y + p2.y }\n // let p0 = originP\n // let p4 = lastP\n // points.push(p0, p1, p2, p3, p4, p5)\n // const closeCardinal = this.createCloseCardinal(points)\n // const fb_points = this.calculatePointsFBZ3(closeCardinal, 100)\n // let result = []\n // let result2 = []\n // for (let index = 0; index < fb_points.length; index++) {\n // const ele = fb_points[index]\n // let obj = {\n // lng: ele.x,\n // lat: ele.y,\n // alt: 0\n // }\n // result.push(ele.x, ele.y, 0)\n // result2.push(obj)\n // }\n // this.position = result2\n // this.points = result\n // }\n\n // computeAssemblePoints2(anchorpoints) {\n // let points = anchorpoints.length;\n // if (points < 2) {\n // return false\n // } else {\n // let pnts = new Array();\n // anchorpoints.forEach((item) => {\n // let posLonLat = this.cartesian3Towgs84(item, this.viewer);;\n // pnts.push([posLonLat.lng, posLonLat.lat]);\n // });\n // //console.log(\"pnts6666\",pnts);\n // // pnts.push(tailPoint);\n // // pnts.push(headerPoint);\n\n // if (pnts.length === 2) {\n // let mid = P.PlotUtils.mid(pnts[0], pnts[1])\n // //let d = utils.MathDistance(pnts[0], mid) / 0.9\n // let d = P.PlotUtils.distance(pnts[0], mid) / 0.9\n // //console.log(\"d\",d);\n // let pnt = P.PlotUtils.getThirdPoint(pnts[0], mid, P.Constants.HALF_PI, d, true)\n // pnts = [pnts[0], pnt, pnts[1]];\n // //console.log(\"pnt\",pnt);\n // //createPoint(Cesium.Cartesian3.fromDegrees(pnt[0], pnt[1]));\n // }\n // let mid = P.PlotUtils.mid(pnts[0], pnts[2])\n // pnts.push(mid, pnts[0], pnts[1])\n\n // let [normals, pnt1, pnt2, pnt3, result, result2] = [[], undefined, undefined, undefined, [], []]\n // for (let i = 0; i < pnts.length - 2; i++) {\n // pnt1 = pnts[i]\n // pnt2 = pnts[i + 1]\n // pnt3 = pnts[i + 2]\n // let normalPoints = P.PlotUtils.getBisectorNormals(0.4, pnt1, pnt2, pnt3)\n // normals = normals.concat(normalPoints)\n // }\n // let count = normals.length\n // normals = [normals[count - 1]].concat(normals.slice(0, count - 1))\n // for (let i = 0; i < pnts.length - 2; i++) {\n // pnt1 = pnts[i]\n // pnt2 = pnts[i + 1]\n // result = result.concat([...pnt1, 0])\n // result2.push(\n // {\n // lng: pnt1[0],\n // lat: pnt1[1],\n // alt: 0\n // }\n // )\n // for (let t = 0; t <= P.Constants.FITTING_COUNT; t++) {\n // let pnt = P.PlotUtils.getCubicValue(t / P.Constants.FITTING_COUNT, pnt1, normals[i * 2], normals[i * 2 + 1], pnt2)\n // result = result.concat([...pnt, 0])\n // result2.push(\n // {\n // lng: pnt[0],\n // lat: pnt[1],\n // alt: 0\n // }\n // )\n // }\n // result = result.concat([...pnt2, 0])\n // result2.push(\n // {\n // lng: pnt2[0],\n // lat: pnt2[1],\n // alt: 0\n // }\n // )\n // }\n // this.position = result2\n // this.points = result\n // }\n // }\n }, {\n key: \"calculateVector\",\n value: function calculateVector(v, theta, d) {\n if (!theta) theta = Math.PI / 2;\n if (!d) d = 1;\n var x_1;\n var x_2;\n var y_1;\n var y_2;\n var v_l;\n var v_r;\n var d_v = Math.sqrt(v.x * v.x + v.y * v.y);\n if (v.y == 0) {\n x_1 = x_2 = d_v * d * Math.cos(theta) / v.x;\n if (v.x > 0) {\n y_1 = Math.sqrt(d * d - x_1 * x_1);\n y_2 = -y_1;\n } else if (v.x < 0) {\n y_2 = Math.sqrt(d * d - x_1 * x_1);\n y_1 = -y_2;\n }\n v_l = {\n x: x_1,\n y: y_1\n };\n v_r = {\n x: x_2,\n y: y_2\n };\n } else {\n var n = -v.x / v.y;\n var m = d * d_v * Math.cos(theta) / v.y;\n var a = 1 + n * n;\n var b = 2 * n * m;\n var c = m * m - d * d;\n x_1 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n x_2 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n y_1 = n * x_1 + m;\n y_2 = n * x_2 + m;\n if (v.y >= 0) {\n v_l = {\n x: x_1,\n y: y_1\n };\n v_r = {\n x: x_2,\n y: y_2\n };\n } else if (v.y < 0) {\n v_l = {\n x: x_2,\n y: y_2\n };\n v_r = {\n x: x_1,\n y: y_1\n };\n }\n }\n return [v_l, v_r];\n }\n }, {\n key: \"createCloseCardinal\",\n value: function createCloseCardinal(points) {\n if (points == null || points.length < 3) {\n return points;\n }\n //获取起点,作为终点,以闭合曲线。\n var lastP = points[0];\n points.push(lastP);\n //定义传入的点数组,将在点数组中央(每两个点)插入两个控制点\n var cPoints = points;\n //包含输入点和控制点的数组\n var cardinalPoints = [];\n //至少三个点以上\n //这些都是相关资料测出的经验数值\n //定义张力系数,取值在0 0) {\n scale = 1 / part;\n }\n for (var i = 0; i < points.length - 3;) {\n //起始点\n var pointS = points[i];\n //第一个控制点\n var pointC1 = points[i + 1];\n //第二个控制点\n var pointC2 = points[i + 2];\n //结束点\n var pointE = points[i + 3];\n bezierPts.push(pointS);\n for (var t = 0; t < 1;) {\n //三次贝塞尔曲线公式\n var x = (1 - t) * (1 - t) * (1 - t) * pointS.x + 3 * t * (1 - t) * (1 - t) * pointC1.x + 3 * t * t * (1 - t) * pointC2.x + t * t * t * pointE.x;\n var y = (1 - t) * (1 - t) * (1 - t) * pointS.y + 3 * t * (1 - t) * (1 - t) * pointC1.y + 3 * t * t * (1 - t) * pointC2.y + t * t * t * pointE.y;\n var point = {\n x: x,\n y: y\n };\n bezierPts.push(point);\n t += scale;\n }\n i += 3;\n if (i >= points.length) {\n bezierPts.push(pointS);\n }\n }\n return bezierPts;\n }\n }], [{\n key: \"polygon\",\n value: function polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n return viewer.entities.add(new Cesium.Entity({\n name: 'AssemblePolygon',\n id: id,\n polygon: {\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeAssemble(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n outline: true,\n outlineColor: Cesium.Color.GREEN,\n zIndex: 99999999\n }\n }));\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawAssemble);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3QXNzZW1ibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3QXNzZW1ibGUuanM/YjkwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcblxyXG5jb25zdCB0cmFuc2Zvcm1DYXJ0ZXNpYW5Ub1dHUzg0ID0gY2FydGVzaWFuID0+IHtcclxuICBsZXQgZWxsaXBzb2lkID0gQ2VzaXVtLkVsbGlwc29pZC5XR1M4NFxyXG4gIGxldCBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuKVxyXG4gIGNvbnN0IHggPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSlcclxuICBjb25zdCB5ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICBjb25zdCB6ID0gY2FydG9ncmFwaGljLmhlaWdodFxyXG4gIHJldHVybiB7IHgsIHksIHogfVxyXG59XHJcblxyXG4vKipcclxuICogQGV4dGVuZHMgRHJhdyovXHJcbmNsYXNzIERyYXdBc3NlbWJsZSBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0gW29wdGlvbnNdIHtvYmplY3R9IOmdouWxnuaAp1xyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5jb2xvcj1yZ2JhKDE4NSwxNCwxNCwwLjU4KV0ge29iamVjdH0g57q/5bGe5oCnXHJcblxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMucG9pbnRzID0gbnVsbFxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgcmV0dXJuIHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBuYW1lOiAnQXNzZW1ibGVQb2x5Z29uJyxcclxuICAgICAgICBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZUFzc2VtYmxlKHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkdSRUVOLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgee7mOWItumdolxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvbHlnb25cclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu5Y+W5raI77ybJywgdGhhdC5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGF0LnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBjYWNoZV84NF9wb3NpdGlvbiA9IFtdXHJcbiAgICAgIHRoaXMuYW5jaG9ycG9pbnRzID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghY2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgIGxldCBhcnJheSA9IFtjYWNoZV9wb3NpdGlvbnNbMF0sIGNhY2hlX3Bvc2l0aW9uc1syXSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgY2IobnVsbCwgYXJyYXkpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCB0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAwKSByZXR1cm5cclxuICAgICAgICBpZiAoY2FjaGVfcG9zaXRpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKV1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEgJiYgIUNlc2l1bS5kZWZpbmVkKHRoaXMuYXNzZW1ibGVQb2x5Z29uKSkge1xyXG4gICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSBEcmF3QXNzZW1ibGUucG9seWdvbih0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIGxldCBwbnRzID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICBwbnRzLnB1c2goW2l0ZW0ubG5nLCBpdGVtLmxhdF0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAgICAgICAgICAgbGV0IGQgPSBQLlBsb3RVdGlscy5kaXN0YW5jZShwbnRzWzBdLCBtaWQpIC8gMC45XHJcbiAgICAgICAgICAgIGxldCBwbnQgPSBQLlBsb3RVdGlscy5nZXRUaGlyZFBvaW50KHBudHNbMF0sIG1pZCwgUC5Db25zdGFudHMuSEFMRl9QSSwgZCwgdHJ1ZSlcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbdGhpcy5wb3NpdGlvbnNbMF0sIHsgbG5nOiBwbnRbMF0sIGxhdDogcG50WzFdIH0sIHRoaXMucG9zaXRpb25zWzFdXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8v5pu/5o2i5Lit6Ze054K5XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgIGlmKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuYXNzZW1ibGVQb2x5Z29uKVxyXG4gICAgICAgICAgICB0aGlzLmFzc2VtYmxlUG9seWdvbiA9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wb3AoKVxyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYihudWxsLCB0aGlzLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hc3NlbWJsZVBvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIHRoaXMuYXNzZW1ibGVQb2x5Z29uID0gRHJhd0Fzc2VtYmxlLnBvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnRvID0gJzJEJ1xyXG4gICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHJldHVyblxyXG4gICAgICAgICAgaWYgKHRoaXMuYW5jaG9ycG9pbnRzLmxlbmd0aCA9PT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5ID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgY2FjaGVfcG9zaXRpb25zWzJdLCBjYWNoZV9wb3NpdGlvbnNbMV1dXHJcbiAgICAgICAgICAgIGNiKG51bGwsIGFycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDApIHJldHVyblxyXG4gICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKV1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxICYmICFDZXNpdW0uZGVmaW5lZCh0aGlzLmFzc2VtYmxlUG9seWdvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSBEcmF3QXNzZW1ibGUucG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICBsZXQgcG50cyA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHBudHMucHVzaChbaXRlbS5sbmcsIGl0ZW0ubGF0XSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAgICAgICAgICAgICBsZXQgZCA9IFAuUGxvdFV0aWxzLmRpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAgICAgICAgICAgICBsZXQgcG50ID0gUC5QbG90VXRpbHMuZ2V0VGhpcmRQb2ludChwbnRzWzBdLCBtaWQsIFAuQ29uc3RhbnRzLkhBTEZfUEksIGQsIHRydWUpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbdGhpcy5wb3NpdGlvbnNbMF0sIHsgbG5nOiBwbnRbMF0sIGxhdDogcG50WzFdIH0sIHRoaXMucG9zaXRpb25zWzFdXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+abv+aNouS4remXtOeCuVxyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYihudWxsKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hc3NlbWJsZVBvbHlnb24pXHJcbiAgICAgICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hc3NlbWJsZVBvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3Jwb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2VtYmxlUG9seWdvbiA9IERyYXdBc3NlbWJsZS5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuYXNzZW1ibGVQb2x5Z29uKVxyXG4gICAgaWYgKCF0aGlzLl9pczJEICYmIHRoaXMuX3NkazJEKSB7XHJcbiAgICAgIHRoaXMuX3NkazJELnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hc3NlbWJsZVBvbHlnb24pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjb21wdXRlQXNzZW1ibGVQb2ludHMoYW5jaG9ycG9pbnRzKSB7XHJcbiAgLy8gICBsZXQgcG9pbnRzID0gW11cclxuXHJcbiAgLy8gICBsZXQgb3JpZ2luUCA9IHRyYW5zZm9ybUNhcnRlc2lhblRvV0dTODQoYW5jaG9ycG9pbnRzWzBdKVxyXG4gIC8vICAgbGV0IGxhc3RQID0gYW5jaG9ycG9pbnRzWzFdXHJcbiAgLy8gICAgID8gdHJhbnNmb3JtQ2FydGVzaWFuVG9XR1M4NChhbmNob3Jwb2ludHNbMV0pXHJcbiAgLy8gICAgIDogeyB4OiBvcmlnaW5QLnggKyAwLjAwMDAxLCB5OiBvcmlnaW5QLnkgKyAwLjAwMDAxLCB6OiBvcmlnaW5QLnogfVxyXG4gIC8vICAgbGV0IHZlY3Rvck9MID0geyB4OiBsYXN0UC54IC0gb3JpZ2luUC54LCB5OiBsYXN0UC55IC0gb3JpZ2luUC55IH1cclxuICAvLyAgIGxldCBkT0wgPSBNYXRoLnNxcnQodmVjdG9yT0wueCAqIHZlY3Rvck9MLnggKyB2ZWN0b3JPTC55ICogdmVjdG9yT0wueSlcclxuICAvLyAgIGxldCB2X09fUDFfbHIgPSB0aGlzLmNhbGN1bGF0ZVZlY3RvcihcclxuICAvLyAgICAgdmVjdG9yT0wsXHJcbiAgLy8gICAgIE1hdGguUEkgLyAzLFxyXG4gIC8vICAgICAoTWF0aC5zcXJ0KDMpIC8gMTIpICogZE9MXHJcbiAgLy8gICApXHJcbiAgLy8gICBsZXQgb3JpZ2luUF9QMSA9IHZfT19QMV9sclsxXVxyXG4gIC8vICAgbGV0IHAxID0geyB4OiBvcmlnaW5QLnggKyBvcmlnaW5QX1AxLngsIHk6IG9yaWdpblAueSArIG9yaWdpblBfUDEueSB9XHJcbiAgLy8gICBsZXQgcDIgPSB7IHg6IChvcmlnaW5QLnggKyBsYXN0UC54KSAvIDIsIHk6IChvcmlnaW5QLnkgKyBsYXN0UC55KSAvIDIgfVxyXG4gIC8vICAgbGV0IHZfTF9QM19sciA9IHRoaXMuY2FsY3VsYXRlVmVjdG9yKFxyXG4gIC8vICAgICB2ZWN0b3JPTCxcclxuICAvLyAgICAgKE1hdGguUEkgKiAyKSAvIDMsXHJcbiAgLy8gICAgIChNYXRoLnNxcnQoMykgLyAxMikgKiBkT0xcclxuICAvLyAgIClcclxuICAvLyAgIGxldCBsYXN0UF9QMyA9IHZfTF9QM19sclsxXVxyXG4gIC8vICAgbGV0IHAzID0geyB4OiBsYXN0UC54ICsgbGFzdFBfUDMueCwgeTogbGFzdFAueSArIGxhc3RQX1AzLnkgfVxyXG4gIC8vICAgbGV0IHZfT19QNV9sciA9IHRoaXMuY2FsY3VsYXRlVmVjdG9yKHZlY3Rvck9MLCBNYXRoLlBJIC8gMiwgKDEgLyAyKSAqIGRPTClcclxuICAvLyAgIGxldCB2X09fUDUgPSB2X09fUDVfbHJbMF1cclxuICAvLyAgIGxldCBwNSA9IHsgeDogdl9PX1A1LnggKyBwMi54LCB5OiB2X09fUDUueSArIHAyLnkgfVxyXG4gIC8vICAgbGV0IHAwID0gb3JpZ2luUFxyXG4gIC8vICAgbGV0IHA0ID0gbGFzdFBcclxuICAvLyAgIHBvaW50cy5wdXNoKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpXHJcbiAgLy8gICBjb25zdCBjbG9zZUNhcmRpbmFsID0gdGhpcy5jcmVhdGVDbG9zZUNhcmRpbmFsKHBvaW50cylcclxuICAvLyAgIGNvbnN0IGZiX3BvaW50cyA9IHRoaXMuY2FsY3VsYXRlUG9pbnRzRkJaMyhjbG9zZUNhcmRpbmFsLCAxMDApXHJcbiAgLy8gICBsZXQgcmVzdWx0ID0gW11cclxuICAvLyAgIGxldCByZXN1bHQyID0gW11cclxuICAvLyAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmYl9wb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgLy8gICAgIGNvbnN0IGVsZSA9IGZiX3BvaW50c1tpbmRleF1cclxuICAvLyAgICAgbGV0IG9iaiA9IHtcclxuICAvLyAgICAgICBsbmc6IGVsZS54LFxyXG4gIC8vICAgICAgIGxhdDogZWxlLnksXHJcbiAgLy8gICAgICAgYWx0OiAwXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmVzdWx0LnB1c2goZWxlLngsIGVsZS55LCAwKVxyXG4gIC8vICAgICByZXN1bHQyLnB1c2gob2JqKVxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdDJcclxuICAvLyAgIHRoaXMucG9pbnRzID0gcmVzdWx0XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjb21wdXRlQXNzZW1ibGVQb2ludHMyKGFuY2hvcnBvaW50cykge1xyXG4gIC8vICAgbGV0IHBvaW50cyA9IGFuY2hvcnBvaW50cy5sZW5ndGg7XHJcbiAgLy8gICBpZiAocG9pbnRzIDwgMikge1xyXG4gIC8vICAgICByZXR1cm4gZmFsc2VcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGxldCBwbnRzID0gbmV3IEFycmF5KCk7XHJcbiAgLy8gICAgIGFuY2hvcnBvaW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgLy8gICAgICAgbGV0IHBvc0xvbkxhdCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpOztcclxuICAvLyAgICAgICBwbnRzLnB1c2goW3Bvc0xvbkxhdC5sbmcsIHBvc0xvbkxhdC5sYXRdKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICAgIC8vY29uc29sZS5sb2coXCJwbnRzNjY2NlwiLHBudHMpO1xyXG4gIC8vICAgICAvLyBwbnRzLnB1c2godGFpbFBvaW50KTtcclxuICAvLyAgICAgLy8gcG50cy5wdXNoKGhlYWRlclBvaW50KTtcclxuXHJcbiAgLy8gICAgIGlmIChwbnRzLmxlbmd0aCA9PT0gMikge1xyXG4gIC8vICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAvLyAgICAgICAvL2xldCBkID0gdXRpbHMuTWF0aERpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAvLyAgICAgICBsZXQgZCA9IFAuUGxvdFV0aWxzLmRpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAvLyAgICAgICAvL2NvbnNvbGUubG9nKFwiZFwiLGQpO1xyXG4gIC8vICAgICAgIGxldCBwbnQgPSBQLlBsb3RVdGlscy5nZXRUaGlyZFBvaW50KHBudHNbMF0sIG1pZCwgUC5Db25zdGFudHMuSEFMRl9QSSwgZCwgdHJ1ZSlcclxuICAvLyAgICAgICBwbnRzID0gW3BudHNbMF0sIHBudCwgcG50c1sxXV07XHJcbiAgLy8gICAgICAgLy9jb25zb2xlLmxvZyhcInBudFwiLHBudCk7XHJcbiAgLy8gICAgICAgLy9jcmVhdGVQb2ludChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwbnRbMF0sIHBudFsxXSkpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1syXSlcclxuICAvLyAgICAgcG50cy5wdXNoKG1pZCwgcG50c1swXSwgcG50c1sxXSlcclxuXHJcbiAgLy8gICAgIGxldCBbbm9ybWFscywgcG50MSwgcG50MiwgcG50MywgcmVzdWx0LCByZXN1bHQyXSA9IFtbXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW10sIFtdXVxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBudHMubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgLy8gICAgICAgcG50MSA9IHBudHNbaV1cclxuICAvLyAgICAgICBwbnQyID0gcG50c1tpICsgMV1cclxuICAvLyAgICAgICBwbnQzID0gcG50c1tpICsgMl1cclxuICAvLyAgICAgICBsZXQgbm9ybWFsUG9pbnRzID0gUC5QbG90VXRpbHMuZ2V0QmlzZWN0b3JOb3JtYWxzKDAuNCwgcG50MSwgcG50MiwgcG50MylcclxuICAvLyAgICAgICBub3JtYWxzID0gbm9ybWFscy5jb25jYXQobm9ybWFsUG9pbnRzKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGxldCBjb3VudCA9IG5vcm1hbHMubGVuZ3RoXHJcbiAgLy8gICAgIG5vcm1hbHMgPSBbbm9ybWFsc1tjb3VudCAtIDFdXS5jb25jYXQobm9ybWFscy5zbGljZSgwLCBjb3VudCAtIDEpKVxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBudHMubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgLy8gICAgICAgcG50MSA9IHBudHNbaV1cclxuICAvLyAgICAgICBwbnQyID0gcG50c1tpICsgMV1cclxuICAvLyAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFsuLi5wbnQxLCAwXSlcclxuICAvLyAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICB7XHJcbiAgLy8gICAgICAgICAgIGxuZzogcG50MVswXSxcclxuICAvLyAgICAgICAgICAgbGF0OiBwbnQxWzFdLFxyXG4gIC8vICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPD0gUC5Db25zdGFudHMuRklUVElOR19DT1VOVDsgdCsrKSB7XHJcbiAgLy8gICAgICAgICBsZXQgcG50ID0gUC5QbG90VXRpbHMuZ2V0Q3ViaWNWYWx1ZSh0IC8gUC5Db25zdGFudHMuRklUVElOR19DT1VOVCwgcG50MSwgbm9ybWFsc1tpICogMl0sIG5vcm1hbHNbaSAqIDIgKyAxXSwgcG50MilcclxuICAvLyAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoWy4uLnBudCwgMF0pXHJcbiAgLy8gICAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICAgIHtcclxuICAvLyAgICAgICAgICAgICBsbmc6IHBudFswXSxcclxuICAvLyAgICAgICAgICAgICBsYXQ6IHBudFsxXSxcclxuICAvLyAgICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFsuLi5wbnQyLCAwXSlcclxuICAvLyAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICB7XHJcbiAgLy8gICAgICAgICAgIGxuZzogcG50MlswXSxcclxuICAvLyAgICAgICAgICAgbGF0OiBwbnQyWzFdLFxyXG4gIC8vICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdDJcclxuICAvLyAgICAgdGhpcy5wb2ludHMgPSByZXN1bHRcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNhbGN1bGF0ZVZlY3Rvcih2LCB0aGV0YSwgZCkge1xyXG4gICAgaWYgKCF0aGV0YSkgdGhldGEgPSBNYXRoLlBJIC8gMlxyXG4gICAgaWYgKCFkKSBkID0gMVxyXG4gICAgbGV0IHhfMVxyXG4gICAgbGV0IHhfMlxyXG4gICAgbGV0IHlfMVxyXG4gICAgbGV0IHlfMlxyXG4gICAgbGV0IHZfbFxyXG4gICAgbGV0IHZfclxyXG4gICAgbGV0IGRfdiA9IE1hdGguc3FydCh2LnggKiB2LnggKyB2LnkgKiB2LnkpXHJcbiAgICBpZiAodi55ID09IDApIHtcclxuICAgICAgeF8xID0geF8yID0gKGRfdiAqIGQgKiBNYXRoLmNvcyh0aGV0YSkpIC8gdi54XHJcbiAgICAgIGlmICh2LnggPiAwKSB7XHJcbiAgICAgICAgeV8xID0gTWF0aC5zcXJ0KGQgKiBkIC0geF8xICogeF8xKVxyXG4gICAgICAgIHlfMiA9IC15XzFcclxuICAgICAgfSBlbHNlIGlmICh2LnggPCAwKSB7XHJcbiAgICAgICAgeV8yID0gTWF0aC5zcXJ0KGQgKiBkIC0geF8xICogeF8xKVxyXG4gICAgICAgIHlfMSA9IC15XzJcclxuICAgICAgfVxyXG4gICAgICB2X2wgPSB7IHg6IHhfMSwgeTogeV8xIH1cclxuICAgICAgdl9yID0geyB4OiB4XzIsIHk6IHlfMiB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbiA9IC12LnggLyB2LnlcclxuICAgICAgbGV0IG0gPSAoZCAqIGRfdiAqIE1hdGguY29zKHRoZXRhKSkgLyB2LnlcclxuICAgICAgbGV0IGEgPSAxICsgbiAqIG5cclxuICAgICAgbGV0IGIgPSAyICogbiAqIG1cclxuICAgICAgbGV0IGMgPSBtICogbSAtIGQgKiBkXHJcbiAgICAgIHhfMSA9ICgtYiAtIE1hdGguc3FydChiICogYiAtIDQgKiBhICogYykpIC8gKDIgKiBhKVxyXG4gICAgICB4XzIgPSAoLWIgKyBNYXRoLnNxcnQoYiAqIGIgLSA0ICogYSAqIGMpKSAvICgyICogYSlcclxuICAgICAgeV8xID0gbiAqIHhfMSArIG1cclxuICAgICAgeV8yID0gbiAqIHhfMiArIG1cclxuICAgICAgaWYgKHYueSA+PSAwKSB7XHJcbiAgICAgICAgdl9sID0geyB4OiB4XzEsIHk6IHlfMSB9XHJcbiAgICAgICAgdl9yID0geyB4OiB4XzIsIHk6IHlfMiB9XHJcbiAgICAgIH0gZWxzZSBpZiAodi55IDwgMCkge1xyXG4gICAgICAgIHZfbCA9IHsgeDogeF8yLCB5OiB5XzIgfVxyXG4gICAgICAgIHZfciA9IHsgeDogeF8xLCB5OiB5XzEgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3ZfbCwgdl9yXVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ2xvc2VDYXJkaW5hbChwb2ludHMpIHtcclxuICAgIGlmIChwb2ludHMgPT0gbnVsbCB8fCBwb2ludHMubGVuZ3RoIDwgMykge1xyXG4gICAgICByZXR1cm4gcG9pbnRzXHJcbiAgICB9XHJcbiAgICAvL+iOt+WPlui1t+eCue+8jOS9nOS4uue7iOeCue+8jOS7pemXreWQiOabsue6v+OAglxyXG4gICAgbGV0IGxhc3RQID0gcG9pbnRzWzBdXHJcbiAgICBwb2ludHMucHVzaChsYXN0UClcclxuICAgIC8v5a6a5LmJ5Lyg5YWl55qE54K55pWw57uE77yM5bCG5Zyo54K55pWw57uE5Lit5aSu77yI5q+P5Lik5Liq54K577yJ5o+S5YWl5Lik5Liq5o6n5Yi254K5XHJcbiAgICBsZXQgY1BvaW50cyA9IHBvaW50c1xyXG4gICAgLy/ljIXlkKvovpPlhaXngrnlkozmjqfliLbngrnnmoTmlbDnu4RcclxuICAgIGxldCBjYXJkaW5hbFBvaW50cyA9IFtdXHJcbiAgICAvL+iHs+WwkeS4ieS4queCueS7peS4ilxyXG4gICAgLy/ov5nkupvpg73mmK/nm7jlhbPotYTmlpnmtYvlh7rnmoTnu4/pqozmlbDlgLxcclxuICAgIC8v5a6a5LmJ5byg5Yqb57O75pWw77yM5Y+W5YC85ZyoMDx0PDAuNVxyXG4gICAgbGV0IHQgPSAwLjRcclxuICAgIC8v5Li656uv54K55byg5Yqb57O75pWw5Zug5a2Q77yM5Y+W5YC85ZyoMDxiPDFcclxuICAgIC8vIGxldCBiID0gMC41O1xyXG4gICAgLy/or6/lt67mjqfliLbvvIzmmK/kuIDkuKrlpKfkuo7nrYnkuo4w55qE5pWw77yM55So5LqO5LiJ54K56Z2e5bi46LaL6L+R5LiO5LiA5p2h55u057q/5pe277yM5YeP5bCR6K6h566X6YePXHJcbiAgICBsZXQgZSA9IDAuMDA1XHJcbiAgICAvL+S8oOWFpeeahOeCueaVsOmHj++8jOiHs+WwkeacieS4ieS4qu+8jG7oh7PlsJHkuLoyXHJcbiAgICBsZXQgbiA9IGNQb2ludHMubGVuZ3RoIC0gMVxyXG4gICAgLy/ku47lvIDlp4vpgY3ljobliLDlgJLmlbDnrKzkuozkuKrvvIzlhbbkuK3lgJLmlbDnrKzkuozkuKrnlKjkuo7orqHnrpfotbfngrnvvIjnu4jngrnvvInnmoTmj5LlgLzmjqfliLbngrlcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDw9IG4gLSAxOyBrKyspIHtcclxuICAgICAgbGV0IHAwLCBwMSwgcDJcclxuICAgICAgLy/orqHnrpfotbfngrnvvIjnu4jngrnvvInnmoTlt6blj7PmjqfliLbngrlcclxuICAgICAgaWYgKGsgPT0gbiAtIDEpIHtcclxuICAgICAgICAvL+S4ieS4quWfuuehgOi+k+WFpeeCuVxyXG4gICAgICAgIHAwID0gY1BvaW50c1tuIC0gMV1cclxuICAgICAgICBwMSA9IGNQb2ludHNbMF1cclxuICAgICAgICBwMiA9IGNQb2ludHNbMV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwMCA9IGNQb2ludHNba11cclxuICAgICAgICBwMSA9IGNQb2ludHNbayArIDFdXHJcbiAgICAgICAgcDIgPSBjUG9pbnRzW2sgKyAyXVxyXG4gICAgICB9XHJcbiAgICAgIC8v5a6a5LmJcDHnmoTlt6bmjqfliLbngrnlkozlj7PmjqfliLbngrlcclxuICAgICAgbGV0IHAxbCA9IHsgeDogdW5kZWZpbmVkLCB5OiB1bmRlZmluZWQgfVxyXG4gICAgICBsZXQgcDFyID0geyB4OiB1bmRlZmluZWQsIHk6IHVuZGVmaW5lZCB9XHJcbiAgICAgIC8v6YCa6L+HcDDjgIFwMeOAgXAy6K6h566XcDHngrnnmoTlgZrmjqfliLbngrlwMWzlkozlj4jmjqfliLbngrlwMXJcclxuICAgICAgLy/orqHnrpflkJHph49wMF9wMeWSjHAxX3AyXHJcbiAgICAgIGxldCBwMF9wMSA9IHsgeDogcDEueCAtIHAwLngsIHk6IHAxLnkgLSBwMC55IH1cclxuICAgICAgbGV0IHAxX3AyID0geyB4OiBwMi54IC0gcDEueCwgeTogcDIueSAtIHAxLnkgfVxyXG4gICAgICAvL+W5tuiuoeeul+aooVxyXG4gICAgICBsZXQgZDAxID0gTWF0aC5zcXJ0KHAwX3AxLnggKiBwMF9wMS54ICsgcDBfcDEueSAqIHAwX3AxLnkpXHJcbiAgICAgIGxldCBkMTIgPSBNYXRoLnNxcnQocDFfcDIueCAqIHAxX3AyLnggKyBwMV9wMi55ICogcDFfcDIueSlcclxuICAgICAgLy/lkJHph4/ljZXkvY3ljJZcclxuICAgICAgbGV0IHAwX3AxXzEgPSB7IHg6IHAwX3AxLnggLyBkMDEsIHk6IHAwX3AxLnkgLyBkMDEgfVxyXG4gICAgICBsZXQgcDFfcDJfMSA9IHsgeDogcDFfcDIueCAvIGQxMiwgeTogcDFfcDIueSAvIGQxMiB9XHJcbiAgICAgIC8v6K6h566X5ZCR6YePcDBfcDHlkoxwMV9wMueahOWkueinkuW5s+WIhue6v+WQkemHj1xyXG4gICAgICBsZXQgcDBfcDFfcDIgPSB7IHg6IHAwX3AxXzEueCArIHAxX3AyXzEueCwgeTogcDBfcDFfMS55ICsgcDFfcDJfMS55IH1cclxuICAgICAgLy/orqHnrpflkJHph48gcDBfcDFfcDIg55qE5qihXHJcbiAgICAgIGxldCBkMDEyID0gTWF0aC5zcXJ0KHAwX3AxX3AyLnggKiBwMF9wMV9wMi54ICsgcDBfcDFfcDIueSAqIHAwX3AxX3AyLnkpXHJcbiAgICAgIC8v5Y2V5L2N5YyW5ZCR6YePcDBfcDFfcDJcclxuICAgICAgbGV0IHAwX3AxX3AyXzEgPSB7IHg6IHAwX3AxX3AyLnggLyBkMDEyLCB5OiBwMF9wMV9wMi55IC8gZDAxMiB9XHJcbiAgICAgIC8v5Yik5patcDDjgIFwMeOAgXAy5piv5ZCm5YWx57q/77yM6L+Z6YeM5Yik5a6a5ZCR6YePcDBfcDHlkoxwMV9wMueahOWkueinkueahOS9meW8puWSjDHnmoTlt67lgLzlsI/kuo5l5bCx6K6k5Li65LiJ54K55YWx57q/XHJcbiAgICAgIGxldCBjb3NFX3AwcDFwMiA9IChwMF9wMV8xLnggKiBwMV9wMl8xLnggKyBwMF9wMV8xLnkgKiBwMV9wMl8xLnkpIC8gMVxyXG4gICAgICAvL+WFsee6v1xyXG4gICAgICBpZiAoTWF0aC5hYnMoMSAtIGNvc0VfcDBwMXAyKSA8IGUpIHtcclxuICAgICAgICAvL+iuoeeul3AxbOeahOWdkOagh1xyXG4gICAgICAgIHAxbC54ID0gcDEueCAtIHAxX3AyXzEueCAqIGQwMSAqIHRcclxuICAgICAgICBwMWwueSA9IHAxLnkgLSBwMV9wMl8xLnkgKiBkMDEgKiB0XHJcbiAgICAgICAgLy/orqHnrpdwMXLnmoTlnZDmoIdcclxuICAgICAgICBwMXIueCA9IHAxLnggKyBwMF9wMV8xLnggKiBkMTIgKiB0XHJcbiAgICAgICAgcDFyLnkgPSBwMS55ICsgcDBfcDFfMS55ICogZDEyICogdFxyXG4gICAgICB9XHJcbiAgICAgIC8v6Z2e5YWx57q/XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8v6K6h566XcDFs55qE5Z2Q5qCHXHJcbiAgICAgICAgcDFsLnggPSBwMS54IC0gcDBfcDFfcDJfMS54ICogZDAxICogdFxyXG4gICAgICAgIHAxbC55ID0gcDEueSAtIHAwX3AxX3AyXzEueSAqIGQwMSAqIHRcclxuICAgICAgICAvL+iuoeeul3AxcueahOWdkOagh1xyXG4gICAgICAgIHAxci54ID0gcDEueCArIHAwX3AxX3AyXzEueCAqIGQxMiAqIHRcclxuICAgICAgICBwMXIueSA9IHAxLnkgKyBwMF9wMV9wMl8xLnkgKiBkMTIgKiB0XHJcbiAgICAgIH1cclxuICAgICAgLy/orrDlvZXotbfngrnvvIjnu4jngrnvvInnmoTlt6blj7Pmj5LlgLzmjqfliLbngrnlj4rlgJLmlbDnrKzkuozkuKrmjqfliLbngrlcclxuICAgICAgaWYgKGsgPT0gbiAtIDEpIHtcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1swXSA9IHAxXHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbMV0gPSBwMXJcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1sobiAtIDIpICogMyArIDIgKyAzXSA9IHAxbFxyXG4gICAgICAgIGNhcmRpbmFsUG9pbnRzWyhuIC0gMikgKiAzICsgMiArIDRdID0gY1BvaW50c1tuXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8v6K6w5b2V5LiL6L+Z5LiJ5Liq5o6n5Yi254K5XHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbayAqIDMgKyAyICsgMF0gPSBwMWxcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1trICogMyArIDIgKyAxXSA9IHAxXHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbayAqIDMgKyAyICsgMl0gPSBwMXJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhcmRpbmFsUG9pbnRzXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVQb2ludHNGQlozKHBvaW50cywgcGFydCkge1xyXG4gICAgaWYgKCFwYXJ0KSBwYXJ0ID0gMjBcclxuICAgIC8v6I635Y+W5b6F5ouG5YiG55qE54K5XHJcbiAgICBsZXQgYmV6aWVyUHRzID0gW11cclxuICAgIGxldCBzY2FsZSA9IDAuMDVcclxuICAgIGlmIChwYXJ0ID4gMCkge1xyXG4gICAgICBzY2FsZSA9IDEgLyBwYXJ0XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAzOykge1xyXG4gICAgICAvL+i1t+Wni+eCuVxyXG4gICAgICBsZXQgcG9pbnRTID0gcG9pbnRzW2ldXHJcbiAgICAgIC8v56ys5LiA5Liq5o6n5Yi254K5XHJcbiAgICAgIGxldCBwb2ludEMxID0gcG9pbnRzW2kgKyAxXVxyXG4gICAgICAvL+esrOS6jOS4quaOp+WItueCuVxyXG4gICAgICBsZXQgcG9pbnRDMiA9IHBvaW50c1tpICsgMl1cclxuICAgICAgLy/nu5PmnZ/ngrlcclxuICAgICAgbGV0IHBvaW50RSA9IHBvaW50c1tpICsgM11cclxuICAgICAgYmV6aWVyUHRzLnB1c2gocG9pbnRTKVxyXG4gICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IDE7KSB7XHJcbiAgICAgICAgLy/kuInmrKHotJ3loZ7lsJTmm7Lnur/lhazlvI9cclxuICAgICAgICBsZXQgeCA9XHJcbiAgICAgICAgICAoMSAtIHQpICogKDEgLSB0KSAqICgxIC0gdCkgKiBwb2ludFMueCArXHJcbiAgICAgICAgICAzICogdCAqICgxIC0gdCkgKiAoMSAtIHQpICogcG9pbnRDMS54ICtcclxuICAgICAgICAgIDMgKiB0ICogdCAqICgxIC0gdCkgKiBwb2ludEMyLnggK1xyXG4gICAgICAgICAgdCAqIHQgKiB0ICogcG9pbnRFLnhcclxuICAgICAgICBsZXQgeSA9XHJcbiAgICAgICAgICAoMSAtIHQpICogKDEgLSB0KSAqICgxIC0gdCkgKiBwb2ludFMueSArXHJcbiAgICAgICAgICAzICogdCAqICgxIC0gdCkgKiAoMSAtIHQpICogcG9pbnRDMS55ICtcclxuICAgICAgICAgIDMgKiB0ICogdCAqICgxIC0gdCkgKiBwb2ludEMyLnkgK1xyXG4gICAgICAgICAgdCAqIHQgKiB0ICogcG9pbnRFLnlcclxuICAgICAgICBsZXQgcG9pbnQgPSB7IHg6IHgsIHk6IHkgfVxyXG4gICAgICAgIGJlemllclB0cy5wdXNoKHBvaW50KVxyXG4gICAgICAgIHQgKz0gc2NhbGVcclxuICAgICAgfVxyXG4gICAgICBpICs9IDNcclxuICAgICAgaWYgKGkgPj0gcG9pbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGJlemllclB0cy5wdXNoKHBvaW50UylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJlemllclB0c1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJhd0Fzc2VtYmxlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXpsQkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFva0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawAssemble.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawAttackArrow.js": -/*!*************************************!*\ - !*** ./src/Draw/drawAttackArrow.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawAttackArrow; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawAttackArrow\r\n * @author: Administrator\r\n * @date: 2022-06-15 16:38\r\n * @description:drawAttackArrow\r\n * @update: 2022-06-15 16:38\r\n */\n\n\n\nvar DrawAttackArrow = /*#__PURE__*/function (_Draw) {\n function DrawAttackArrow(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawAttackArrow);\n return _callSuper(this, DrawAttackArrow, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawAttackArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawAttackArrow, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawAttackArrow, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var isMove = false;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n var lastPos84 = cache_positions[cache_positions.length - 1];\n if (lastPos84 && lastPos84.lng === pos84.lng && lastPos84.lat === pos84.lat) {\n return;\n }\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(pos84);\n isMove = false;\n cb(cache_positions.length);\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n if (isMove) {\n _this.positions.pop();\n }\n cb(null, _this.positions, c);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n isMove = true;\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, _this.positions, c);\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n isMove = false;\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n if (isMove) {\n _this.positions.pop();\n }\n cb(null, _this.positions, c);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n isMove = true;\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, _this.positions, c);\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_arrow_polygon\",\n value: function create_arrow_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeAttackArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3QXR0YWNrQXJyb3cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3QXR0YWNrQXJyb3cuanM/ZGQ0YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGRyYXdBdHRhY2tBcnJvd1xyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE2OjM4XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdBdHRhY2tBcnJvd1xyXG4gKiBAdXBkYXRlOiAyMDIyLTA2LTE1IDE2OjM4XHJcbiAqL1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3QXR0YWNrQXJyb3cgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LmVudGl0eUhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZUF0dGFja0Fycm93KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcblxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7nu5PmnZ/vvJtDVFJMK+WPs+mUruaSpOmUgCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgaXNNb3ZlID0gZmFsc2VcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGludG8gPSAnM0QnXHJcbiAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGxldCBsYXN0UG9zODQgPSBjYWNoZV9wb3NpdGlvbnNbY2FjaGVfcG9zaXRpb25zLmxlbmd0aCAtIDFdXHJcbiAgICAgICAgaWYobGFzdFBvczg0ICYmIChsYXN0UG9zODQubG5nID09PSBwb3M4NC5sbmcgJiYgbGFzdFBvczg0LmxhdCA9PT0gcG9zODQubGF0KSkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHBvczg0KVxyXG4gICAgICAgIGlzTW92ZSA9IGZhbHNlXHJcbiAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYyA9IFtdXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgIGMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0LCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgaWYgKGlzTW92ZSkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMsIGMpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpc01vdmUgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMsIGMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICBpc01vdmUgPSBmYWxzZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmV2ZW50MkQudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5wb2ludHNfaWRzWzBdKS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZSgpLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGlmIChpc01vdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNiKG51bGwsIHRoaXMucG9zaXRpb25zLCBjKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpc01vdmUgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMucG9pbnRzX2lkc1swXSkucG9seWdvbi5oaWVyYXJjaHkuZ2V0VmFsdWUoKS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKGl0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgICBjYihudWxsLCB0aGlzLnBvc2l0aW9ucywgYylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd0F0dGFja0Fycm93LmNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTVQQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawAttackArrow.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawCircle.js": -/*!********************************!*\ - !*** ./src/Draw/drawCircle.js ***! - \********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawCircle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawCircle\r\n * @author: Administrator\r\n * @date: 2022-06-15 14:55\r\n * @description:drawCircle\r\n * @update: 2022-06-15 14:55\r\n */\n\n\n\nvar DrawCircle = /*#__PURE__*/function (_Draw) {\n function DrawCircle(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawCircle);\n return _callSuper(this, DrawCircle, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawCircle, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawCircle, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createCirclePolygon = function createCirclePolygon() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : that.viewer;\n var a = viewer.entities.add(new Cesium.Entity({\n id: that.circle_id,\n position: new Cesium.CallbackProperty(function (e) {\n if (endpoint) {\n var c = that.computeMidpoint(center, endpoint);\n return Cesium.Cartesian3.fromDegrees(c.lng, c.lat, endpoint.alt);\n } else {\n return Cesium.Cartesian3();\n }\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function (e) {\n if (radius > 1000) {\n return '半径:' + (radius / 1000).toFixed(2) + ' 公里';\n }\n return '半径:' + radius + ' 米';\n }, false),\n font: '20px Microsoft YaHei',\n distanceDisplayCondition: 10000000,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n fillColor: Cesium.Color.fromCssColorString('#f5ce0a'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE\n },\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(positions));\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return radius_points;\n }, false),\n width: 2,\n material: Cesium.Color.fromCssColorString('#c1c505').withAlpha(0.5),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n };\n _superPropGet(DrawCircle, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键开始,右键取消', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var clickNum = 0;\n this.circle_id = this.randomString(); //圆id\n var radius_points = [];\n var cache_points = [];\n var radius = 1; //默认半径\n var positions = [];\n var center = {};\n var endpoint = null;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n positions = _this.createCircle(center, 0.01);\n cache_points.push(cartesian);\n createCirclePolygon();\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (clickNum) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.point_id) {\n _this.remove_entity(_this.circle_id);\n _this.remove_entity(_this.point_id);\n _this.point_id = null;\n cache_points = [];\n radius_points = [];\n positions = [];\n center = {};\n endpoint = null;\n clickNum = 0;\n cb(clickNum);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_points.push(cartesian);\n createCirclePolygon();\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian, _this._sdk2D.viewer);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n positions = _this.createCircle(center, 0.01);\n cache_points.push(cartesian);\n createCirclePolygon(_this._sdk2D.viewer);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n if (clickNum) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian, _this._sdk2D.viewer);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_points.push(cartesian);\n createCirclePolygon(_this._sdk2D.viewer);\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n }\n });\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.point_id) {\n _this.remove_entity(_this.circle_id);\n _this.remove_entity(_this.point_id);\n _this.point_id = null;\n cache_points = [];\n radius_points = [];\n positions = [];\n center = {};\n endpoint = null;\n clickNum = 0;\n cb(clickNum);\n }\n });\n }\n var that = this;\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n this.remove_entity(this.circle_id);\n this.remove_entity(this.point_id);\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3Q2lyY2xlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd0NpcmNsZS5qcz9jYmFmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogZHJhd0NpcmNsZVxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE0OjU1XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdDaXJjbGVcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNSAxNDo1NVxyXG4gKi9cclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhd0NpcmNsZSBleHRlbmRzIERyYXcge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICBzdGFydChjYikge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7lvIDlp4vvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICBsZXQgY2xpY2tOdW0gPSAwXHJcbiAgICAgIHRoaXMuY2lyY2xlX2lkID0gdGhpcy5yYW5kb21TdHJpbmcoKSAvL+WchmlkXHJcbiAgICAgIGxldCByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgbGV0IGNhY2hlX3BvaW50cyA9IFtdXHJcbiAgICAgIGxldCByYWRpdXMgPSAxIC8v6buY6K6k5Y2K5b6EXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2VudGVyID0ge31cclxuICAgICAgbGV0IGVuZHBvaW50ID0gbnVsbFxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGludG8gPSAnM0QnXHJcbiAgICAgICAgdGhpcy50aXAuc2V0X3RleHQodGhpcy50aXBUZXh0IHx8ICflho3mrKHlt6bplK7vvIzlrozmiJDnu5jliLbvvJvlj7PplK7lj5bmtognKVxyXG4gICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMucG9pbnRfaWQgPSB0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjZW50ZXIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIDAuMDEpXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjcmVhdGVDaXJjbGVQb2x5Z29uKClcclxuICAgICAgICAgIGNiKGNsaWNrTnVtKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBjYWNoZV9wb2ludHMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoY2xpY2tOdW0pIHtcclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBjYWNoZV9wb2ludHMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludF9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuY2lyY2xlX2lkKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRfaWQpXHJcbiAgICAgICAgICB0aGlzLnBvaW50X2lkID0gbnVsbFxyXG4gICAgICAgICAgY2FjaGVfcG9pbnRzID0gW11cclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBbXVxyXG4gICAgICAgICAgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgIGNlbnRlciA9IHt9XHJcbiAgICAgICAgICBlbmRwb2ludCA9IG51bGxcclxuICAgICAgICAgIGNsaWNrTnVtID0gMFxyXG4gICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KHRoaXMudGlwVGV4dCB8fCAn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICAgICAgY2xpY2tOdW0rK1xyXG4gICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50X2lkID0gdGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgY3JlYXRlQ2lyY2xlUG9seWdvbigpXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCh0aGlzLnRpcFRleHQgfHwgJ+WGjeasoeW3pumUru+8jOWujOaIkOe7mOWItu+8m+WPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICBjbGlja051bSsrXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2ludF9pZCA9IHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICBjZW50ZXIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgMC4wMSlcclxuICAgICAgICAgICAgY2FjaGVfcG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBjcmVhdGVDaXJjbGVQb2x5Z29uKHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gdGhpcy5jcmVhdGVDaXJjbGUoY2VudGVyLCByYWRpdXMpXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0pIHtcclxuICAgICAgICAgICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gdGhpcy5jcmVhdGVDaXJjbGUoY2VudGVyLCByYWRpdXMpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQodGhpcy50aXBUZXh0IHx8ICflho3mrKHlt6bplK7vvIzlrozmiJDnu5jliLbvvJvlj7PplK7lj5bmtognKVxyXG4gICAgICAgICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRfaWQgPSB0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3BvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICAgIGNyZWF0ZUNpcmNsZVBvbHlnb24odGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGNsaWNrTnVtID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHJhZGl1cyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgICAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5wb2ludF9pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5jaXJjbGVfaWQpXHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50X2lkKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50X2lkID0gbnVsbFxyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbXVxyXG4gICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgICAgICAgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgY2VudGVyID0ge31cclxuICAgICAgICAgICAgZW5kcG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgIGNsaWNrTnVtID0gMFxyXG4gICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNpcmNsZVBvbHlnb24odmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgICAgICBsZXQgYSA9IHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGF0LmNpcmNsZV9pZCxcclxuICAgICAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChlbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGMgPSB0aGF0LmNvbXB1dGVNaWRwb2ludChjZW50ZXIsIGVuZHBvaW50KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGMubG5nLCBjLmxhdCwgZW5kcG9pbnQuYWx0KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICAgIHRleHQ6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhZGl1cyA+IDEwMDApIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuICfljYrlvoTvvJonICsgKHJhZGl1cyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIOWFrOmHjCdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2K5b6E77yaJyArIHJhZGl1cyArICcg57GzJ1xyXG4gICAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgICBmb250OiAnMjBweCBNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgICAgICAgICAgIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogMTAwMDAwMDAsXHJcbiAgICAgICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2Y1Y2UwYScpLFxyXG4gICAgICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgICAgICBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhZGl1c19wb2ludHNcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICAgICAgbWF0ZXJpYWw6XHJcbiAgICAgICAgICAgICAgICBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjYzFjNTA1Jykud2l0aEFscGhhKDAuNSksXHJcbiAgICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQoKSB7XHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5jaXJjbGVfaWQpXHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludF9pZClcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudDJEICYmIHRoaXMuZXZlbnQyRC5kZXN0cm95KClcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBcU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQXJSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFvREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawCircle.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawElliptic.js": -/*!**********************************!*\ - !*** ./src/Draw/drawElliptic.js ***! - \**********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawElliptic; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\nvar DrawElliptic = /*#__PURE__*/function (_Draw) {\n function DrawElliptic(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawElliptic);\n return _callSuper(this, DrawElliptic, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawElliptic, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawElliptic, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var calculateElliptic = function calculateElliptic() {\n var pointA = Cesium.Cartesian3.fromDegrees(cache_84_position[0].lng, cache_84_position[0].lat);\n var pointB = Cesium.Cartesian3.fromDegrees(cache_84_position[1].lng, cache_84_position[1].lat);\n var pointC = Cesium.Cartesian3.fromDegrees(cache_84_position[2].lng, cache_84_position[2].lat);\n if (clickNum === 1) {\n distanceAB = Cesium.Cartesian3.distance(pointA, pointB);\n semiMajorAxis = distanceAB;\n semiMinorAxis = semiMajorAxis / 2;\n var _start = {\n x: center.lng,\n y: center.lat\n };\n var end = {\n x: cache_84_position[1].lng,\n y: cache_84_position[1].lat\n };\n var rad = Math.PI / 180,\n lat1 = _start.y * rad,\n lat2 = end.y * rad,\n lon1 = _start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI);\n }\n if (clickNum === 2) {\n distanceAC = Cesium.Cartesian3.distance(pointA, pointC);\n distanceBC = Cesium.Cartesian3.distance(pointB, pointC);\n var point1 = turf.point([cache_84_position[0].lng, cache_84_position[0].lat]);\n var point2 = turf.point([cache_84_position[1].lng, cache_84_position[1].lat]);\n var point3 = turf.point([cache_84_position[2].lng, cache_84_position[2].lat]);\n var bearing1 = turf.rhumbBearing(point1, point2);\n var bearing2 = turf.rhumbBearing(point2, point3);\n var angleDiff = Math.abs(bearing1 - bearing2);\n var finalAngle = angleDiff > 180 ? 360 - angleDiff : angleDiff;\n finalAngle = 180 - finalAngle;\n semiMinorAxis = distanceBC * Math.sin(Cesium.Math.toRadians(finalAngle));\n }\n };\n var createEllipticPolygon = function createEllipticPolygon() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : that.viewer;\n viewer.entities.add(new Cesium.Entity({\n id: that.elliptic_id,\n position: Cesium.Cartesian3.fromDegrees(center.lng, center.lat),\n ellipse: {\n semiMinorAxis: new Cesium.CallbackProperty(function (e) {\n return semiMinorAxis;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function (e) {\n return semiMajorAxis;\n }, false),\n granularity: Cesium.Math.toRadians(0.1),\n rotation: new Cesium.CallbackProperty(function (e) {\n return Cesium.Math.toRadians(bearing);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n };\n _superPropGet(DrawElliptic, \"start\", this, 3)([]);\n var into;\n this.entity_ids = [];\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键开始,右键取消', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var clickNum = 0;\n this.elliptic_id = this.randomString(); //圆id\n var radius_points = [];\n var cache_points = [];\n var cache_84_position = [];\n var radius = 1; //默认半径\n var positions = [];\n var center;\n var semiMinorAxis = 0;\n var semiMajorAxis = 0;\n var endpoint = null;\n var distanceAB = 0;\n var distanceAC = 0;\n var distanceBC = 0;\n var bearing = 0;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this.tip.set_text('再次左键,完成绘制;右键取消');\n clickNum++;\n _this.points_ids.push(_this.create_point(cartesian));\n cache_points.push(cartesian);\n if (clickNum === 1) {\n cache_points = [cartesian, cartesian, cartesian];\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n center = pos84;\n cache_84_position = [pos84, pos84, pos84];\n calculateElliptic();\n createEllipticPolygon();\n }\n if (clickNum === 2) {\n cache_points[1] = cartesian;\n cache_points[2] = cartesian;\n var _pos = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_84_position[1] = _pos;\n cache_84_position[2] = _pos;\n }\n if (clickNum >= 3) {\n _this.end();\n cb(null, {\n center: center,\n bearing: bearing,\n semiMajorAxis: semiMajorAxis,\n semiMinorAxis: semiMinorAxis\n });\n } else {\n cb(clickNum);\n }\n // if (clickNum === 2) {\n // radius_points = cache_points.concat(cartesian)\n // endpoint = this.cartesian3Towgs84(cartesian, this.viewer)\n // radius = this.computeDistance([center, endpoint])\n // positions = this.createCircle(center, radius)\n // this.end()\n // cb(null, { center, radius: Number(radius) })\n // }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n cache_points[clickNum] = cartesian;\n cache_84_position[clickNum] = _this.cartesian3Towgs84(cartesian, _this.viewer);\n if (clickNum !== 0) {\n calculateElliptic();\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.remove_entity(_this.points_ids.pop());\n clickNum--;\n cb(clickNum);\n if (clickNum == 0) {\n _this.remove_entity(_this.elliptic_id);\n }\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this.tip.set_text('再次左键,完成绘制;右键取消');\n clickNum++;\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_points.push(cartesian);\n if (clickNum === 1) {\n cache_points = [cartesian, cartesian, cartesian];\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n center = pos84;\n cache_84_position = [pos84, pos84, pos84];\n calculateElliptic();\n createEllipticPolygon(_this._sdk2D.viewer);\n }\n if (clickNum === 2) {\n cache_points[1] = cartesian;\n cache_points[2] = cartesian;\n var _pos2 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_84_position[1] = _pos2;\n cache_84_position[2] = _pos2;\n }\n if (clickNum >= 3) {\n _this.end();\n cb(null, {\n center: center,\n bearing: bearing,\n semiMajorAxis: semiMajorAxis,\n semiMinorAxis: semiMinorAxis\n });\n } else {\n cb(clickNum);\n }\n // if (clickNum === 2) {\n // radius_points = cache_points.concat(cartesian)\n // endpoint = this.cartesian3Towgs84(cartesian, this.viewer)\n // radius = this.computeDistance([center, endpoint])\n // positions = this.createCircle(center, radius)\n // this.end()\n // cb(null, { center, radius: Number(radius) })\n // }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n cache_points[clickNum] = cartesian;\n cache_84_position[clickNum] = _this.cartesian3Towgs84(cartesian, _this.viewer);\n if (clickNum !== 0) {\n calculateElliptic();\n }\n });\n }\n var that = this;\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n var _this2 = this;\n this.remove_entity(this.elliptic_id);\n this.points_ids.forEach(function (id) {\n _this2.remove_entity(id);\n });\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3RWxsaXB0aWMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3RWxsaXB0aWMuanM/NmYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3RWxsaXB0aWMgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgbGV0IGludG9cclxuICAgICAgdGhpcy5lbnRpdHlfaWRzID0gW11cclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu5byA5aeL77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgbGV0IGNsaWNrTnVtID0gMFxyXG4gICAgICB0aGlzLmVsbGlwdGljX2lkID0gdGhpcy5yYW5kb21TdHJpbmcoKSAvL+WchmlkXHJcbiAgICAgIGxldCByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgbGV0IGNhY2hlX3BvaW50cyA9IFtdXHJcbiAgICAgIGxldCBjYWNoZV84NF9wb3NpdGlvbiA9IFtdXHJcbiAgICAgIGxldCByYWRpdXMgPSAxIC8v6buY6K6k5Y2K5b6EXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2VudGVyXHJcbiAgICAgIGxldCBzZW1pTWlub3JBeGlzID0gMFxyXG4gICAgICBsZXQgc2VtaU1ham9yQXhpcyA9IDBcclxuICAgICAgbGV0IGVuZHBvaW50ID0gbnVsbFxyXG4gICAgICBsZXQgZGlzdGFuY2VBQiA9IDBcclxuICAgICAgbGV0IGRpc3RhbmNlQUMgPSAwXHJcbiAgICAgIGxldCBkaXN0YW5jZUJDID0gMFxyXG4gICAgICBsZXQgYmVhcmluZyA9IDBcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICBjbGlja051bSsrXHJcbiAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSlcclxuICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgaWYgKGNsaWNrTnVtID09PSAxKSB7XHJcbiAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbY2FydGVzaWFuLCBjYXJ0ZXNpYW4sIGNhcnRlc2lhbl1cclxuICAgICAgICAgIGxldCBwb3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGNlbnRlciA9IHBvczg0XHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbiA9IFtwb3M4NCwgcG9zODQsIHBvczg0XVxyXG5cclxuICAgICAgICAgIGNhbGN1bGF0ZUVsbGlwdGljKClcclxuICAgICAgICAgIGNyZWF0ZUVsbGlwdGljUG9seWdvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgICAgY2FjaGVfcG9pbnRzWzFdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHNbMl0gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgIGxldCBwb3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzFdID0gcG9zODRcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzJdID0gcG9zODRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNsaWNrTnVtID49IDMpIHtcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwsIHsgY2VudGVyLCBiZWFyaW5nLCBzZW1pTWFqb3JBeGlzLCBzZW1pTWlub3JBeGlzIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgIC8vICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIC8vICAgZW5kcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICByYWRpdXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZShbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgLy8gICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAvLyAgIHRoaXMuZW5kKClcclxuICAgICAgICAvLyAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBjYWNoZV9wb2ludHNbY2xpY2tOdW1dID0gY2FydGVzaWFuXHJcbiAgICAgICAgY2FjaGVfODRfcG9zaXRpb25bY2xpY2tOdW1dID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGlmIChjbGlja051bSAhPT0gMCkge1xyXG4gICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICBjbGlja051bS0tXHJcbiAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgaWYoY2xpY2tOdW09PTApIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLmVsbGlwdGljX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGNhY2hlX3BvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIGlmIChjbGlja051bSA9PT0gMSkge1xyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbY2FydGVzaWFuLCBjYXJ0ZXNpYW4sIGNhcnRlc2lhbl1cclxuICAgICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjZW50ZXIgPSBwb3M4NFxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbiA9IFtwb3M4NCwgcG9zODQsIHBvczg0XVxyXG5cclxuICAgICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgICAgICBjcmVhdGVFbGxpcHRpY1BvbHlnb24odGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNsaWNrTnVtID09PSAyKSB7XHJcbiAgICAgICAgICAgIGNhY2hlX3BvaW50c1sxXSA9IGNhcnRlc2lhblxyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHNbMl0gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvblsxXSA9IHBvczg0XHJcbiAgICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzJdID0gcG9zODRcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjbGlja051bSA+PSAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIGJlYXJpbmcsIHNlbWlNYWpvckF4aXMsIHNlbWlNaW5vckF4aXMgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgICAgLy8gICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAvLyAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gICByYWRpdXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZShbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgICAvLyAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgICAgLy8gICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAvLyAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHNbY2xpY2tOdW1dID0gY2FydGVzaWFuXHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbltjbGlja051bV0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gIT09IDApIHtcclxuICAgICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUVsbGlwdGljKCkge1xyXG4gICAgICAgIGxldCBwb2ludEEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjYWNoZV84NF9wb3NpdGlvblswXS5sbmcsIGNhY2hlXzg0X3Bvc2l0aW9uWzBdLmxhdCk7XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0KTtcclxuICAgICAgICBsZXQgcG9pbnRDID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY2FjaGVfODRfcG9zaXRpb25bMl0ubG5nLCBjYWNoZV84NF9wb3NpdGlvblsyXS5sYXQpO1xyXG4gICAgICAgIGlmIChjbGlja051bSA9PT0gMSkge1xyXG4gICAgICAgICAgZGlzdGFuY2VBQiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICAgIHNlbWlNYWpvckF4aXMgPSBkaXN0YW5jZUFCXHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzID0gc2VtaU1ham9yQXhpcyAvIDI7XHJcblxyXG4gICAgICAgICAgbGV0IHN0YXJ0ID0geyB4OiBjZW50ZXIubG5nLCB5OiBjZW50ZXIubGF0IH1cclxuICAgICAgICAgIGxldCBlbmQgPSB7IHg6IGNhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgeTogY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0IH1cclxuXHJcbiAgICAgICAgICBsZXQgcmFkID0gTWF0aC5QSSAvIDE4MCxcclxuICAgICAgICAgICAgbGF0MSA9IHN0YXJ0LnkgKiByYWQsXHJcbiAgICAgICAgICAgIGxhdDIgPSBlbmQueSAqIHJhZCxcclxuICAgICAgICAgICAgbG9uMSA9IHN0YXJ0LnggKiByYWQsXHJcbiAgICAgICAgICAgIGxvbjIgPSBlbmQueCAqIHJhZDtcclxuICAgICAgICAgIGNvbnN0IGEgPSBNYXRoLnNpbihsb24yIC0gbG9uMSkgKiBNYXRoLmNvcyhsYXQyKTtcclxuICAgICAgICAgIGNvbnN0IGIgPVxyXG4gICAgICAgICAgICBNYXRoLmNvcyhsYXQxKSAqIE1hdGguc2luKGxhdDIpIC1cclxuICAgICAgICAgICAgTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhsYXQyKSAqIE1hdGguY29zKGxvbjIgLSBsb24xKTtcclxuICAgICAgICAgIGNvbnN0IHJhZGlhbnMgPSBNYXRoLmF0YW4yKGEsIGIpXHJcbiAgICAgICAgICBjb25zdCBkZWdyZWVzID0gcmFkaWFucyAlICgyICogTWF0aC5QSSk7XHJcbiAgICAgICAgICBiZWFyaW5nID0gNDUwIC0gKChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkgPCAwXHJcbiAgICAgICAgICAgID8gMzYwICsgKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSVxyXG4gICAgICAgICAgICA6IChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgIGRpc3RhbmNlQUMgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb2ludEEsIHBvaW50Qyk7XHJcbiAgICAgICAgICBkaXN0YW5jZUJDID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9pbnRCLCBwb2ludEMpO1xyXG5cclxuICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFtjYWNoZV84NF9wb3NpdGlvblswXS5sbmcsIGNhY2hlXzg0X3Bvc2l0aW9uWzBdLmxhdF0pO1xyXG4gICAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoW2NhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0XSk7XHJcbiAgICAgICAgICBsZXQgcG9pbnQzID0gdHVyZi5wb2ludChbY2FjaGVfODRfcG9zaXRpb25bMl0ubG5nLCBjYWNoZV84NF9wb3NpdGlvblsyXS5sYXRdKTtcclxuICAgICAgICAgIGNvbnN0IGJlYXJpbmcxID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQxLCBwb2ludDIpO1xyXG4gICAgICAgICAgY29uc3QgYmVhcmluZzIgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDIsIHBvaW50Myk7XHJcbiAgICAgICAgICBjb25zdCBhbmdsZURpZmYgPSBNYXRoLmFicyhiZWFyaW5nMSAtIGJlYXJpbmcyKTtcclxuICAgICAgICAgIGxldCBmaW5hbEFuZ2xlID0gYW5nbGVEaWZmID4gMTgwID8gMzYwIC0gYW5nbGVEaWZmIDogYW5nbGVEaWZmO1xyXG4gICAgICAgICAgZmluYWxBbmdsZSA9IDE4MCAtIGZpbmFsQW5nbGVcclxuXHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzID0gZGlzdGFuY2VCQyAqIE1hdGguc2luKENlc2l1bS5NYXRoLnRvUmFkaWFucyhmaW5hbEFuZ2xlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVFbGxpcHRpY1BvbHlnb24odmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgICAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgICAgICBpZDogdGhhdC5lbGxpcHRpY19pZCxcclxuICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQpLFxyXG4gICAgICAgICAgICBlbGxpcHNlOiB7XHJcbiAgICAgICAgICAgICAgc2VtaU1pbm9yQXhpczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VtaU1pbm9yQXhpc1xyXG4gICAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgICBzZW1pTWFqb3JBeGlzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZW1pTWFqb3JBeGlzXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIGdyYW51bGFyaXR5OiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4xKSxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJlYXJpbmcpXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLmVsbGlwdGljX2lkKVxyXG4gICAgdGhpcy5wb2ludHNfaWRzLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQyRCAmJiB0aGlzLmV2ZW50MkQuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEwS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUF6T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFvRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawElliptic.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawPincerArrow.js": -/*!*************************************!*\ - !*** ./src/Draw/drawPincerArrow.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawPincerArrow; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawPincerArrow\r\n * @author: Administrator\r\n * @date: 2022-06-15 17:12\r\n * @description:drawPincerArrow\r\n * @update: 2022-06-15 17:12\r\n */\n\n\n\nvar DrawPincerArrow = /*#__PURE__*/function (_Draw) {\n function DrawPincerArrow(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPincerArrow);\n return _callSuper(this, DrawPincerArrow, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawPincerArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPincerArrow, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawPincerArrow, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键取消;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb('取消绘制');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb('取消绘制');\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb('取消绘制');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb('取消绘制');\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_arrow_polygon\",\n value: function create_arrow_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computePincerArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UGluY2VyQXJyb3cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UGluY2VyQXJyb3cuanM/ZjQ3NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGRyYXdQaW5jZXJBcnJvd1xyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE3OjEyXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdQaW5jZXJBcnJvd1xyXG4gKiBAdXBkYXRlOiAyMDIyLTA2LTE1IDE3OjEyXHJcbiAqL1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3UGluY2VyQXJyb3cgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LmVudGl0eUhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZVBpbmNlckFycm93KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruWumu+8jOWPs+mUruWPlua2iO+8m0NUUkwr5Y+z6ZSu5pKk6ZSAJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UGluY2VyQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT09IDUpIHtcclxuICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKGl0ID0+IHtcclxuICAgICAgICAgICAgICBjLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgY2FjaGVfcG9zaXRpb25zLCBjKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICApXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydF9rZXlib2FyZF9jdHJsKCgpID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID09PSA1KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5wb2ludHNfaWRzWzBdKS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZSgpLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIGNhY2hlX3Bvc2l0aW9ucywgYylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID09PSA1KSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuZXZlbnQyRC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfcG9zaXRpb25zLCBjKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoJ+WPlua2iOe7mOWIticpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT09IDUpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5ldmVudDJELnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMucG9pbnRzX2lkc1swXSkucG9seWdvbi5oaWVyYXJjaHkuZ2V0VmFsdWUoKS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0LCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgICBjYihudWxsLCBjYWNoZV9wb3NpdGlvbnMsIGMpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTdRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawPincerArrow.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawPoint.js": -/*!*******************************!*\ - !*** ./src/Draw/drawPoint.js ***! - \*******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar DrawPoint = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @desc 获取坐标点\r\n * */\n function DrawPoint(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var is2D = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPoint);\n return _callSuper(this, DrawPoint, [sdk, options, is2D]);\n }\n\n /**\r\n * @desc 开始动态获取坐标点\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPoint\r\n * @example draw.start((err,position)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(DrawPoint, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPoint, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var car = undefined;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.tipText || '左键确定,右键结束;', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.event.mouse_left(function (movement, cartesian) {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p, Cesium);\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p, Cesium);\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p);\n }\n });\n });\n }\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n this.tip && this.tip.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPoint);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9pbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UG9pbnQuanM/ZmVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tIFwiLi9kcmF3XCI7XHJcblxyXG5cclxuY2xhc3MgRHJhd1BvaW50IGV4dGVuZHMgRHJhdyB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2Mg6I635Y+W5Z2Q5qCH54K5XHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgaXMyRCA9IGZhbHNlKSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMsIGlzMkQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDlvIDlp4vliqjmgIHojrflj5blnZDmoIfngrlcclxuICAgKiBAbWV0aG9kIHN0YXJ0XHJcbiAgICogQHBhcmFtIGNiIHtmdW5jdGlvbn0g5Zue6LCD5Ye95pWwXHJcbiAgICogQG1lbWJlck9mIERyYXdQb2ludFxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbik9PntcclxuICAgKlxyXG4gICAqIH0pXHJcbiAgICogKi9cclxuXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBjYXIgPSB1bmRlZmluZWRcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu57uT5p2f77ybJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICBjYihudWxsLCBwLCBDZXNpdW0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGNhciA9IGNhcnRlc2lhblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgY2IobnVsbCwgcClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciB8fCBjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgY2IobnVsbCwgcCwgQ2VzaXVtKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBjYXIgPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICBjYihudWxsLCBwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQyRCAmJiB0aGlzLmV2ZW50MkQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdQb2ludFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPoint.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawPolygon.js": -/*!*********************************!*\ - !*** ./src/Draw/drawPolygon.js ***! - \*********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawPolygon = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawPolygon(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, DrawPolygon);\n _this = _callSuper(this, DrawPolygon, [sdk, options]);\n _this.color = options.color || 'rgba(255,0,0,0.5)';\n _this.polygonHasCreated = false;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(DrawPolygon, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(DrawPolygon, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n this.polygonHasCreated = false;\n _superPropGet(DrawPolygon, \"start\", this, 3)([]);\n YJ.Measure.SetMeasureStatus(true);\n var into;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n cb(cache_positions.length);\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n cb(null, cache_84_position);\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n cb(cache_positions.length);\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n cb(null, cache_84_position);\n _this2.end();\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.polygonHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions.concat(that.positions[0]);\n }),\n width: 3,\n material: Cesium.Color.fromCssColorString(that.color).withAlpha(1),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPolygon);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9seWdvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdQb2x5Z29uLmpzPzllZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3UG9seWdvbiBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g6Z2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlnb24odGhhdCwgdmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgIHRoYXQucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9ucylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5jb2xvciksXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zLmNvbmNhdCh0aGF0LnBvc2l0aW9uc1swXSlcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKS53aXRoQWxwaGEoMSksXHJcbiAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgee7mOWItumdolxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvbHlnb25cclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBvbHlnb25IYXNDcmVhdGVkID0gZmFsc2VcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgbGV0IGludG9cclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7nu5PmnZ/vvJtDVFJMK+WPs+mUruaSpOmUgCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FjaGVfODRfcG9zaXRpb24gPSBbXVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSlcclxuICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGNhY2hlX3Bvc2l0aW9ucylcclxuICAgICAgICAvLyBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIC8vICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0pXHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhpdGVtKVxyXG4gICAgICAgIC8vICAgcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIGNiKG51bGwsIGNhY2hlXzg0X3Bvc2l0aW9uKVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNhY2hlX3Bvc2l0aW9ucylcclxuICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5Z29uLmNyZWF0ZV9wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAvLyBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSlcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coaXRlbSlcclxuICAgICAgICAgIC8vICAgcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICBjYihudWxsLCBjYWNoZV84NF9wb3NpdGlvbilcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICBjYihudWxsLCBjYWNoZV84NF9wb3NpdGlvbilcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAoKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMikgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdQb2x5Z29uXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0UUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBK09BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPolygon.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawPolyline.js": -/*!**********************************!*\ - !*** ./src/Draw/drawPolyline.js ***! - \**********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw\r\n */\nvar DrawPolyline = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 线属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n *\r\n * */\n function DrawPolyline(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPolyline);\n _this = _callSuper(this, DrawPolyline, [sdk, options]);\n _this.options.curve = options.curve || false;\n var number = Number(options.number);\n if (!isNaN(number)) {\n if (number < 2) {\n _this.options.number = 2;\n } else {\n _this.options.number = number;\n }\n } else {\n _this.options.number = Infinity;\n }\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawPolyline, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPolyline, [{\n key: \"smoothHandle\",\n value:\n // 平滑处理\n function smoothHandle(positions) {\n if (positions.length > 1) {\n var newPositions = [];\n var time = [];\n for (var i = 0; i < positions.length; i++) {\n time.push(i / (positions.length - 1));\n }\n var spline = new Cesium.CatmullRomSpline({\n times: time,\n points: positions\n });\n var length = positions.length * 20;\n for (var _i = 0; _i <= length; _i++) {\n var cartesian3 = spline.evaluate(_i / length);\n newPositions.push(cartesian3);\n }\n return newPositions;\n } else {\n return positions;\n }\n }\n\n /**\r\n * @desc 开始动态获绘制线\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolyline\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n }, {\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawPolyline, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n\n var cache_positions = [];\n var car = undefined;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2.viewer));\n if (cache_positions.length >= _this2.options.number) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n cb(cache_positions.length);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polyline\",\n value: function create_polyline(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.options.curve) {\n var positions = that.smoothHandle(that.positions);\n return positions;\n } else {\n return that.positions;\n }\n }, false),\n width: 5,\n material: Cesium.Color.fromCssColorString(that.color),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPolyline);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9seWxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UG9seWxpbmUuanM/MTAyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcblxyXG4vKipcclxuICogQGV4dGVuZHMgRHJhd1xyXG4gKi9cclxuXHJcbmNsYXNzIERyYXdQb2x5bGluZSBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g57q/5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuICAgKlxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUgfHwgZmFsc2VcclxuICAgIGxldCBudW1iZXIgPSBOdW1iZXIob3B0aW9ucy5udW1iZXIpXHJcbiAgICBpZiAoIWlzTmFOKG51bWJlcikpIHtcclxuICAgICAgaWYgKG51bWJlciA8IDIpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubnVtYmVyID0gMlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5udW1iZXIgPSBudW1iZXJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5udW1iZXIgPSBJbmZpbml0eVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5bGluZSh0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgdGhhdC5lbnRpdHlIYXNDcmVhdGVkID0gdHJ1ZVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmN1cnZlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuc21vb3RoSGFuZGxlKHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbnNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvLyDlubPmu5HlpITnkIZcclxuICBzbW9vdGhIYW5kbGUocG9zaXRpb25zKSB7XHJcbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IG5ld1Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCB0aW1lID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aW1lLnB1c2goaSAvIChwb3NpdGlvbnMubGVuZ3RoIC0gMSkpXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHNwbGluZSA9IG5ldyBDZXNpdW0uQ2F0bXVsbFJvbVNwbGluZSh7XHJcbiAgICAgICAgdGltZXM6IHRpbWUsXHJcbiAgICAgICAgcG9pbnRzOiBwb3NpdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbnMubGVuZ3RoICogMjBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2FydGVzaWFuMyA9IHNwbGluZS5ldmFsdWF0ZShpIC8gbGVuZ3RoKTtcclxuICAgICAgICBuZXdQb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3UG9zaXRpb25zXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB6I6357uY5Yi257q/XHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWxpbmVcclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruWumu+8jOWPs+mUrue7k+adn++8m0NUUkwr5Y+z6ZSu5pKk6ZSAJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FyID0gdW5kZWZpbmVkXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5bGluZS5jcmVhdGVfcG9seWxpbmUodGhpcywgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID49IHRoaXMub3B0aW9ucy5udW1iZXIpIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBzbW9vdGhQb3NcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmN1cnZlKSB7XHJcbiAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgc21vb3RoUG9zID0gW11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGxldCBzbW9vdGhQb3NcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLnNtb290aEhhbmRsZShjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgc21vb3RoUG9zID0gW11cclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc21vb3RoUG9zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NbaV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYihudWxsLCBwb3NpdGlvbnMsIHNtb290aFBvcylcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5bGluZS5jcmVhdGVfcG9seWxpbmUodGhpcywgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlsaW5lLmNyZWF0ZV9wb2x5bGluZSh0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3VydmUpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLnNtb290aEhhbmRsZShjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgc21vb3RoUG9zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NbaV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjYihudWxsLCBwb3NpdGlvbnMsIHNtb290aFBvcylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAoKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMikgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UG9seWxpbmUuY3JlYXRlX3BvbHlsaW5lKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3UG9seWxpbmVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUEvVEE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBMFNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPolyline.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawRect.js": -/*!******************************!*\ - !*** ./src/Draw/drawRect.js ***! - \******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawRect = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawRect(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawRect);\n _this = _callSuper(this, DrawRect, [sdk, options]);\n _this.rhumb = options.rhumb;\n _this.polygonHasCreated = false;\n _this.rect = [];\n _this.rectObj = [];\n _this.entity = null;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawRect, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawRect, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawRect\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawRect, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确定,右键取消', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n var cnt = 0;\n var firstPoint = null;\n var secondtPoint = null;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (cnt == 1) {\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.calrect(firstPoint, wgs84);\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n _this2.polygonHasCreated = false;\n _this2.rect = [];\n cnt--;\n cb(cnt);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb('取消', '');\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n _this2.calrect(firstPoint, wgs84);\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (cnt == 1) {\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.calrect(firstPoint, wgs84);\n }\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n _this2.polygonHasCreated = false;\n _this2.rect = [];\n cnt--;\n cb(cnt);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb('取消', '');\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n _this2.calrect(firstPoint, wgs84);\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n }\n });\n });\n }\n }\n }\n }, {\n key: \"calrect\",\n value: function calrect(firstPoint, secondPoint) {\n var positions = [];\n var arr = [];\n var arr2 = [];\n positions.push([firstPoint.lng, firstPoint.lat, firstPoint.alt], [secondPoint.lng, secondPoint.lat, secondPoint.alt]);\n var bboxPolygon;\n if (positions.length === 2) {\n var line = turf.lineString(positions);\n var bbox = turf.bbox(line);\n bboxPolygon = turf.bboxPolygon(bbox);\n }\n if (bboxPolygon) {\n // console.log('bboxPolygon',bboxPolygon.geometry.coordinates[0])\n bboxPolygon.geometry.coordinates[0].forEach(function (item) {\n arr.push(item[0]);\n arr.push(item[1]);\n var obj = {\n lng: item[0],\n lat: item[1],\n alt: firstPoint.alt\n };\n arr2.push(obj);\n });\n this.rect = [].concat(arr);\n this.rectObj = [].concat(arr2);\n this.rectObj.pop();\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n viewer.entities.add(this.entity = new Cesium.Entity({\n id: id,\n polygon: {\n // classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(that.rect));\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n arcType: that.rhumb ? Cesium.ArcType.RHUMB : Cesium.ArcType.GEODESIC,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawRect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UmVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdSZWN0LmpzPzYzYjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3UmVjdCBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g6Z2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5yaHVtYiA9IG9wdGlvbnMucmh1bWJcclxuICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5yZWN0ID0gW11cclxuICAgIHRoaXMucmVjdE9iaiA9IFtdXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgKHRoaXMuZW50aXR5ID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICAvLyBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkodGhhdC5yZWN0KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9LGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgYXJjVHlwZTogdGhhdC5yaHVtYiA/IENlc2l1bS5BcmNUeXBlLlJIVU1CIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UmVjdFxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG4gICAgICBsZXQgY2FjaGVfcG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IGNhY2hlXzg0X3Bvc2l0aW9uID0gW11cclxuICAgICAgbGV0IGNudCA9IDBcclxuICAgICAgbGV0IGZpcnN0UG9pbnQgPSBudWxsXHJcbiAgICAgIGxldCBzZWNvbmR0UG9pbnQgPSBudWxsXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGNudCsrXHJcbiAgICAgICAgbGV0IHdnczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UmVjdC5jcmVhdGVfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICBmaXJzdFBvaW50ID0gd2dzODRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjbnQgPT0gMikge1xyXG4gICAgICAgICAgc2Vjb25kdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwsIHRoYXQucmVjdE9iaiwgW2ZpcnN0UG9pbnQsIHNlY29uZHRQb2ludF0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY250KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoY250ID09IDEpIHtcclxuICAgICAgICAgIGxldCB3Z3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMuY2FscmVjdChmaXJzdFBvaW50LCB3Z3M4NClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnJlY3QgPSBbXVxyXG4gICAgICAgICAgY250LS1cclxuICAgICAgICAgIGNiKGNudClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIGNiKCflj5bmtognLCAnJylcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBjbnQrK1xyXG4gICAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbilcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1JlY3QuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICBmaXJzdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNudCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxyZWN0KGZpcnN0UG9pbnQsIHdnczg0KVxyXG4gICAgICAgICAgICAgIHNlY29uZHRQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIHRoYXQucmVjdE9iaiwgW2ZpcnN0UG9pbnQsIHNlY29uZHRQb2ludF0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY2IoY250KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGNudCsrXHJcbiAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgXHJcbiAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IHRydWVcclxuICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1JlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgZmlyc3RQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgc2Vjb25kdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihudWxsLCB0aGF0LnJlY3RPYmosIFtmaXJzdFBvaW50LCBzZWNvbmR0UG9pbnRdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNiKGNudClcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKCflj5bmtognLCAnJylcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKGNudCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGxldCB3Z3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5jYWxyZWN0KGZpcnN0UG9pbnQsIHdnczg0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLnJlY3QgPSBbXVxyXG4gICAgICAgICAgICBjbnQtLVxyXG4gICAgICAgICAgICBjYihjbnQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgY250KytcclxuICAgICAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbilcclxuICBcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UmVjdC5jcmVhdGVfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICAgIGZpcnN0UG9pbnQgPSB3Z3M4NFxyXG4gICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FscmVjdChmaXJzdFBvaW50LCB3Z3M4NClcclxuICAgICAgICAgICAgICAgIHNlY29uZHRQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgICBjYihudWxsLCB0aGF0LnJlY3RPYmosIFtmaXJzdFBvaW50LCBzZWNvbmR0UG9pbnRdKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNiKGNudClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbHJlY3QoZmlyc3RQb2ludCwgc2Vjb25kUG9pbnQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgbGV0IGFyciA9IFtdXHJcbiAgICBsZXQgYXJyMiA9IFtdXHJcbiAgICBwb3NpdGlvbnMucHVzaChcclxuICAgICAgW2ZpcnN0UG9pbnQubG5nLCBmaXJzdFBvaW50LmxhdCwgZmlyc3RQb2ludC5hbHRdLFxyXG4gICAgICBbc2Vjb25kUG9pbnQubG5nLCBzZWNvbmRQb2ludC5sYXQsIHNlY29uZFBvaW50LmFsdF1cclxuICAgIClcclxuICAgIGxldCBiYm94UG9seWdvblxyXG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcocG9zaXRpb25zKVxyXG4gICAgICBsZXQgYmJveCA9IHR1cmYuYmJveChsaW5lKVxyXG4gICAgICBiYm94UG9seWdvbiA9IHR1cmYuYmJveFBvbHlnb24oYmJveClcclxuICAgIH1cclxuICAgIGlmIChiYm94UG9seWdvbikge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnYmJveFBvbHlnb24nLGJib3hQb2x5Z29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKVxyXG4gICAgICBiYm94UG9seWdvbi5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGFyci5wdXNoKGl0ZW1bMF0pXHJcbiAgICAgICAgYXJyLnB1c2goaXRlbVsxXSlcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgbG5nOiBpdGVtWzBdLFxyXG4gICAgICAgICAgbGF0OiBpdGVtWzFdLFxyXG4gICAgICAgICAgYWx0OiBmaXJzdFBvaW50LmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBhcnIyLnB1c2gob2JqKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnJlY3QgPSBbLi4uYXJyXVxyXG4gICAgICB0aGlzLnJlY3RPYmogPSBbLi4uYXJyMl1cclxuICAgICAgdGhpcy5yZWN0T2JqLnBvcCgpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3UmVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBM1JBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQTJRQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Draw/drawRect.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawSector.js": -/*!********************************!*\ - !*** ./src/Draw/drawSector.js ***! - \********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawSector = /*#__PURE__*/function (_Draw) {\n function DrawSector(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawSector);\n return _callSuper(this, DrawSector, [sdk, options]);\n }\n\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawRect\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawSector, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawSector, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawSector, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确认,右键取消', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this._sector_id = null; //扇形\n this._positions = []; //活动点\n this.points_ids = []; //脏数据\n this._entities_sector = []; //脏数据\n this._radius = 0; //半径\n this._startAngle = 0; //起始角度\n this._endAngle = 0; //结束角度\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n // if(that._positions.length == 3) return\n\n if (_this._positions.length < 3) {\n _this.points_ids.push(_this.create_point(cartesian));\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n cb(_this._positions.length);\n } else {\n _this.end();\n cb(null, {\n center: _this._positions[0],\n radius: _this._radius,\n startAngle: _this._startAngle,\n endAngle: _this._endAngle\n });\n }\n if (_this._positions.length === 2) {\n var pointA = Cesium.Cartesian3.fromDegrees(_this._positions[0].lng, _this._positions[0].lat, _this._positions[0].alt);\n var pointB = cartesian;\n _this._radius = Cesium.Cartesian3.distance(pointA, pointB);\n }\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (_this._positions.length < 2) return;\n if (_this._positions.length == 2) {\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n if (_this._positions.length == 3) {\n _this._positions.pop();\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (!Cesium.defined(_this._sector_id)) {\n _this._sector_id = _this.createsector();\n _this.points_ids.push(_this._sector_id);\n }\n var options = that.calculateAangle(that._positions);\n that._startAngle = options.angle1;\n that._endAngle = options.angle2;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(null);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this._positions.length >= 1) {\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this._sector_id);\n _this._sector_id = undefined;\n _this._positions.pop();\n _this._positions.pop();\n cb(_this._positions.length);\n }\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n // if(that._positions.length == 3) return\n\n if (_this._positions.length < 3) {\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n cb(_this._positions.length);\n } else {\n _this.end();\n cb(null, {\n center: _this._positions[0],\n radius: _this._radius,\n startAngle: _this._startAngle,\n endAngle: _this._endAngle\n });\n }\n if (_this._positions.length === 2) {\n var pointA = Cesium.Cartesian3.fromDegrees(_this._positions[0].lng, _this._positions[0].lat, _this._positions[0].alt);\n var pointB = cartesian;\n _this._radius = Cesium.Cartesian3.distance(pointA, pointB);\n }\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n if (_this._positions.length < 2) return;\n if (_this._positions.length == 2) {\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n if (_this._positions.length == 3) {\n _this._positions.pop();\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (!Cesium.defined(_this._sector_id)) {\n _this._sector_id = _this.createsector(_this._sdk2D.viewer);\n _this.points_ids.push(_this._sector_id);\n }\n var options = that.calculateAangle(that._positions);\n that._startAngle = options.angle1;\n that._endAngle = options.angle2;\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(null);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this._positions.length >= 1) {\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this._sector_id);\n _this._sector_id = undefined;\n _this._positions.pop();\n _this._positions.pop();\n cb(_this._positions.length);\n }\n });\n }\n }\n }\n\n //创建直线扇形\n }, {\n key: \"createsector\",\n value: function createsector() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.viewer;\n // console.log(this._positions)\n var that = this;\n var angle;\n var hierarchy = new Cesium.CallbackProperty(function () {\n var pList = that.calSector(that._positions[0], that._radius, that._startAngle, that._endAngle);\n return new Cesium.PolygonHierarchy(pList);\n });\n // let text = new Cesium.CallbackProperty(\n // () => {\n // angle = that._endAngle - that._startAngle\n // if (angle < 0) {\n // angle = 360 + angle\n // }\n // return angle.toFixed(2) + '°';\n // })\n var id = that.randomString();\n var arrowEntity = viewer.entities.add({\n id: id,\n position: Cesium.Cartesian3.fromDegrees(that._positions[0].lng, that._positions[0].lat),\n // label: {\n // text,\n // font: \"24px Helvetica\",\n // fillColor: Cesium.Color.SKYBLUE,\n // outlineColor: Cesium.Color.BLACK,\n // outlineWidth: 2,\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // pixelOffset: new Cesium.Cartesian2(0, -12),\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // },\n polygon: {\n hierarchy: hierarchy,\n show: true,\n fill: true,\n clampToGround: true,\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n });\n that._entities_sector.push(arrowEntity);\n return id;\n }\n }, {\n key: \"cartesianToLatlng\",\n value: function cartesianToLatlng(cartesian) {\n var latlng = this.viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);\n var lat = Cesium.Math.toDegrees(latlng.latitude);\n var lng = Cesium.Math.toDegrees(latlng.longitude);\n return [lng, lat];\n }\n\n /**\r\n * 经纬度坐标转墨卡托坐标\r\n */\n // 墨卡托坐标系:展开地球,赤道作为x轴,向东为x轴正方,本初子午线作为y轴,向北为y轴正方向。\n // 数字20037508.34是地球赤道周长的一半:地球半径6378137米,赤道周长2*PI*r = 2 * 20037508.3427892,墨卡托坐标x轴区间[-20037508.3427892,20037508.3427892]\n }, {\n key: \"lonLatToMercator\",\n value: function lonLatToMercator(Latlng) {\n var E = Latlng[0];\n var N = Latlng[1];\n var x = E * 20037508.34 / 180;\n var y = Math.log(Math.tan((90 + N) * Math.PI / 360)) / (Math.PI / 180);\n y = y * 20037508.34 / 180;\n return [x, y];\n }\n }, {\n key: \"WebMercator2lonLat\",\n value: function WebMercator2lonLat(mercator) {\n var x = mercator[0] / 20037508.34 * 180;\n var ly = mercator[1] / 20037508.34 * 180;\n var y = 180 / Math.PI * (2 * Math.atan(Math.exp(ly * Math.PI / 180)) - Math.PI / 2);\n return [x, y];\n }\n\n //计算角度\n }, {\n key: \"calculateAangle\",\n value: function calculateAangle(arr) {\n function getAangle(start, end) {\n var rad = Math.PI / 180,\n lat1 = start.y * rad,\n lat2 = end.y * rad,\n lon1 = start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n var bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI) - 90;\n return 360 - bearing % 360;\n }\n var center = arr[0];\n var pos84_1 = arr[1];\n var pos84_2 = arr[2];\n var start = {\n x: center.lng,\n y: center.lat\n };\n var end1 = {\n x: pos84_1.lng,\n y: pos84_1.lat\n };\n var end2 = {\n x: pos84_2.lng,\n y: pos84_2.lat\n };\n var angle1 = getAangle(start, end1);\n var angle2 = getAangle(start, end2);\n return {\n angle1: angle1,\n angle2: angle2\n };\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawSector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3U2VjdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd1NlY3Rvci5qcz9jODRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcbmltcG9ydCBEcmF3IGZyb20gJy4vZHJhdydcclxuXHJcbi8qKlxyXG4gKiBAZXh0ZW5kcyBEcmF3Ki9cclxuY2xhc3MgRHJhd1NlY3RvciBleHRlbmRzIERyYXcge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDlvIDlp4vliqjmgIHnu5jliLbpnaJcclxuICAgKiBAbWV0aG9kIHN0YXJ0XHJcbiAgICogQHBhcmFtIGNiIHtmdW5jdGlvbn0g5Zue6LCD5Ye95pWwXHJcbiAgICogQG1lbWJlck9mIERyYXdSZWN0XHJcbiAgICogQGV4YW1wbGUgZHJhdy5zdGFydCgoZXJyLHBvc2l0aW9ucyk9PntcclxuICAgKlxyXG4gICAqIH0pXHJcbiAgICogKi9cclxuICBzdGFydChjYikge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoaXMuX3NlY3Rvcl9pZCA9IG51bGw7IC8v5omH5b2iXHJcbiAgICAgIHRoaXMuX3Bvc2l0aW9ucyA9IFtdOyAgLy/mtLvliqjngrlcclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW107ICAvL+iEj+aVsOaNrlxyXG4gICAgICB0aGlzLl9lbnRpdGllc19zZWN0b3IgPSBbXTsgIC8v6ISP5pWw5o2uXHJcbiAgICAgIHRoaXMuX3JhZGl1cyA9IDA7IC8v5Y2K5b6EXHJcbiAgICAgIHRoaXMuX3N0YXJ0QW5nbGUgPSAwOyAvL+i1t+Wni+inkuW6plxyXG4gICAgICB0aGlzLl9lbmRBbmdsZSA9IDA7IC8v57uT5p2f6KeS5bqmXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIC8vIGlmKHRoYXQuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykgcmV0dXJuXHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSk7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKTtcclxuICAgICAgICAgIGNiKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXI6IHRoaXMuX3Bvc2l0aW9uc1swXSwgcmFkaXVzOiB0aGlzLl9yYWRpdXMsIHN0YXJ0QW5nbGU6IHRoaXMuX3N0YXJ0QW5nbGUsIGVuZEFuZ2xlOiB0aGlzLl9lbmRBbmdsZSB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgbGV0IHBvaW50QSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuX3Bvc2l0aW9uc1swXS5sbmcsIHRoaXMuX3Bvc2l0aW9uc1swXS5sYXQsIHRoaXMuX3Bvc2l0aW9uc1swXS5hbHQpO1xyXG4gICAgICAgICAgbGV0IHBvaW50QiA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIHRoaXMuX3JhZGl1cyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoIDwgMikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKCk7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKTtcclxuICAgICAgICAgIGlmICghQ2VzaXVtLmRlZmluZWQodGhpcy5fc2VjdG9yX2lkKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zZWN0b3JfaWQgPSB0aGlzLmNyZWF0ZXNlY3RvcigpO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLl9zZWN0b3JfaWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBvcHRpb25zID0gdGhhdC5jYWxjdWxhdGVBYW5nbGUodGhhdC5fcG9zaXRpb25zKVxyXG4gICAgICAgICAgdGhhdC5fc3RhcnRBbmdsZSA9IG9wdGlvbnMuYW5nbGUxO1xyXG4gICAgICAgICAgdGhhdC5fZW5kQW5nbGUgPSBvcHRpb25zLmFuZ2xlMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICBjYihudWxsKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5fc2VjdG9yX2lkKVxyXG4gICAgICAgICAgdGhpcy5fc2VjdG9yX2lkID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2IodGhpcy5fcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIC8vIGlmKHRoYXQuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykgcmV0dXJuXHJcbiAgXHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSk7XHJcbiAgICAgICAgICAgIGNiKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihudWxsLCB7IGNlbnRlcjogdGhpcy5fcG9zaXRpb25zWzBdLCByYWRpdXM6IHRoaXMuX3JhZGl1cywgc3RhcnRBbmdsZTogdGhpcy5fc3RhcnRBbmdsZSwgZW5kQW5nbGU6IHRoaXMuX2VuZEFuZ2xlIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICBsZXQgcG9pbnRBID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5fcG9zaXRpb25zWzBdLmxuZywgdGhpcy5fcG9zaXRpb25zWzBdLmxhdCwgdGhpcy5fcG9zaXRpb25zWzBdLmFsdCk7XHJcbiAgICAgICAgICAgIGxldCBwb2ludEIgPSBjYXJ0ZXNpYW47XHJcbiAgICAgICAgICAgIHRoaXMuX3JhZGl1cyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPCAyKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgICAgICBpZiAoIUNlc2l1bS5kZWZpbmVkKHRoaXMuX3NlY3Rvcl9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9zZWN0b3JfaWQgPSB0aGlzLmNyZWF0ZXNlY3Rvcih0aGlzLl9zZGsyRC52aWV3ZXIpO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuX3NlY3Rvcl9pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGF0LmNhbGN1bGF0ZUFhbmdsZSh0aGF0Ll9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIHRoYXQuX3N0YXJ0QW5nbGUgPSBvcHRpb25zLmFuZ2xlMTtcclxuICAgICAgICAgICAgdGhhdC5fZW5kQW5nbGUgPSBvcHRpb25zLmFuZ2xlMjtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuX3NlY3Rvcl9pZClcclxuICAgICAgICAgICAgdGhpcy5fc2VjdG9yX2lkID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgICAgY2IodGhpcy5fcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+WIm+W7uuebtOe6v+aJh+W9olxyXG4gIGNyZWF0ZXNlY3Rvcih2aWV3ZXIgPSB0aGlzLnZpZXdlcikge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5fcG9zaXRpb25zKVxyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgbGV0IGFuZ2xlXHJcbiAgICBsZXQgaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHBMaXN0ID0gdGhhdC5jYWxTZWN0b3IodGhhdC5fcG9zaXRpb25zWzBdLCB0aGF0Ll9yYWRpdXMsIHRoYXQuX3N0YXJ0QW5nbGUsIHRoYXQuX2VuZEFuZ2xlKVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkocExpc3QpO1xyXG4gICAgICB9KVxyXG4gICAgLy8gbGV0IHRleHQgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoXHJcbiAgICAvLyAgICgpID0+IHtcclxuICAgIC8vICAgICBhbmdsZSA9IHRoYXQuX2VuZEFuZ2xlIC0gdGhhdC5fc3RhcnRBbmdsZVxyXG4gICAgLy8gICAgIGlmIChhbmdsZSA8IDApIHtcclxuICAgIC8vICAgICAgIGFuZ2xlID0gMzYwICsgYW5nbGVcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIGFuZ2xlLnRvRml4ZWQoMikgKyAnwrAnO1xyXG4gICAgLy8gICB9KVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IGFycm93RW50aXR5ID0gdmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiBpZCxcclxuICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQuX3Bvc2l0aW9uc1swXS5sbmcsIHRoYXQuX3Bvc2l0aW9uc1swXS5sYXQpLFxyXG4gICAgICAvLyBsYWJlbDoge1xyXG4gICAgICAvLyAgIHRleHQsXHJcbiAgICAgIC8vICAgZm9udDogXCIyNHB4IEhlbHZldGljYVwiLFxyXG4gICAgICAvLyAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLlNLWUJMVUUsXHJcbiAgICAgIC8vICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgIC8vICAgb3V0bGluZVdpZHRoOiAyLFxyXG4gICAgICAvLyAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvLyAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTEyKSxcclxuICAgICAgLy8gICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgIC8vICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIC8vICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgLy8gfSxcclxuICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgIGhpZXJhcmNoeSxcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIGZpbGw6IHRydWUsXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKSxcclxuICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIClcclxuICAgIHRoYXQuX2VudGl0aWVzX3NlY3Rvci5wdXNoKGFycm93RW50aXR5KTtcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgY2FydGVzaWFuVG9MYXRsbmcoY2FydGVzaWFuKSB7XHJcbiAgICBsZXQgbGF0bG5nID0gdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbik7XHJcbiAgICBsZXQgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGxhdGxuZy5sYXRpdHVkZSk7XHJcbiAgICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGxhdGxuZy5sb25naXR1ZGUpO1xyXG4gICAgcmV0dXJuIFtsbmcsIGxhdF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnu4/nuqzluqblnZDmoIfovazloqjljaHmiZjlnZDmoIdcclxuICAgKi9cclxuICAvLyDloqjljaHmiZjlnZDmoIfns7vvvJrlsZXlvIDlnLDnkIPvvIzotaTpgZPkvZzkuLp46L2077yM5ZCR5Lic5Li6eOi9tOato+aWue+8jOacrOWIneWtkOWNiOe6v+S9nOS4unnovbTvvIzlkJHljJfkuLp56L205q2j5pa55ZCR44CCXHJcbiAgLy8g5pWw5a2XMjAwMzc1MDguMzTmmK/lnLDnkIPotaTpgZPlkajplb/nmoTkuIDljYrvvJrlnLDnkIPljYrlvoQ2Mzc4MTM357Gz77yM6LWk6YGT5ZGo6ZW/MipQSSpyID0gMiAqIDIwMDM3NTA4LjM0Mjc4OTLvvIzloqjljaHmiZjlnZDmoId46L205Yy66Ze0Wy0yMDAzNzUwOC4zNDI3ODkyLDIwMDM3NTA4LjM0Mjc4OTJdXHJcbiAgbG9uTGF0VG9NZXJjYXRvcihMYXRsbmcpIHtcclxuICAgIGxldCBFID0gTGF0bG5nWzBdO1xyXG4gICAgbGV0IE4gPSBMYXRsbmdbMV07XHJcbiAgICBsZXQgeCA9IEUgKiAyMDAzNzUwOC4zNCAvIDE4MDtcclxuICAgIGxldCB5ID0gTWF0aC5sb2coTWF0aC50YW4oKDkwICsgTikgKiBNYXRoLlBJIC8gMzYwKSkgLyAoTWF0aC5QSSAvIDE4MCk7XHJcbiAgICB5ID0geSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gICAgcmV0dXJuIFt4LCB5XVxyXG4gIH1cclxuXHJcbiAgV2ViTWVyY2F0b3IybG9uTGF0KG1lcmNhdG9yKSB7XHJcbiAgICBsZXQgeCA9IG1lcmNhdG9yWzBdIC8gMjAwMzc1MDguMzQgKiAxODA7XHJcbiAgICBsZXQgbHkgPSBtZXJjYXRvclsxXSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gICAgbGV0IHkgPSAxODAgLyBNYXRoLlBJICogKDIgKiBNYXRoLmF0YW4oTWF0aC5leHAobHkgKiBNYXRoLlBJIC8gMTgwKSkgLSBNYXRoLlBJIC8gMilcclxuICAgIHJldHVybiBbeCwgeV07XHJcbiAgfVxyXG5cclxuICAvL+iuoeeul+inkuW6plxyXG4gIGNhbGN1bGF0ZUFhbmdsZShhcnIpIHtcclxuICAgIGZ1bmN0aW9uIGdldEFhbmdsZShzdGFydCwgZW5kKSB7XHJcbiAgICAgIGxldCByYWQgPSBNYXRoLlBJIC8gMTgwLFxyXG4gICAgICAgIGxhdDEgPSBzdGFydC55ICogcmFkLFxyXG4gICAgICAgIGxhdDIgPSBlbmQueSAqIHJhZCxcclxuICAgICAgICBsb24xID0gc3RhcnQueCAqIHJhZCxcclxuICAgICAgICBsb24yID0gZW5kLnggKiByYWQ7XHJcbiAgICAgIGNvbnN0IGEgPSBNYXRoLnNpbihsb24yIC0gbG9uMSkgKiBNYXRoLmNvcyhsYXQyKTtcclxuICAgICAgY29uc3QgYiA9XHJcbiAgICAgICAgTWF0aC5jb3MobGF0MSkgKiBNYXRoLnNpbihsYXQyKSAtXHJcbiAgICAgICAgTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhsYXQyKSAqIE1hdGguY29zKGxvbjIgLSBsb24xKTtcclxuICAgICAgY29uc3QgcmFkaWFucyA9IE1hdGguYXRhbjIoYSwgYilcclxuICAgICAgY29uc3QgZGVncmVlcyA9IHJhZGlhbnMgJSAoMiAqIE1hdGguUEkpO1xyXG4gICAgICBsZXQgYmVhcmluZyA9IDQ1MCAtICgoZGVncmVlcyAqIDE4MCkgLyBNYXRoLlBJIDwgMFxyXG4gICAgICAgID8gMzYwICsgKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSVxyXG4gICAgICAgIDogKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSSkgLSA5MDtcclxuICAgICAgcmV0dXJuIDM2MCAtIChiZWFyaW5nICUgMzYwKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjZW50ZXIgPSBhcnJbMF1cclxuICAgIGxldCBwb3M4NF8xID0gYXJyWzFdXHJcbiAgICBsZXQgcG9zODRfMiA9IGFyclsyXVxyXG5cclxuICAgIGxldCBzdGFydCA9IHsgeDogY2VudGVyLmxuZywgeTogY2VudGVyLmxhdCB9XHJcbiAgICBsZXQgZW5kMSA9IHsgeDogcG9zODRfMS5sbmcsIHk6IHBvczg0XzEubGF0IH1cclxuICAgIGxldCBlbmQyID0geyB4OiBwb3M4NF8yLmxuZywgeTogcG9zODRfMi5sYXQgfVxyXG5cclxuICAgIGxldCBhbmdsZTEgPSBnZXRBYW5nbGUoc3RhcnQsIGVuZDEpXHJcbiAgICBsZXQgYW5nbGUyID0gZ2V0QWFuZ2xlKHN0YXJ0LCBlbmQyKVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFuZ2xlMSxcclxuICAgICAgYW5nbGUyXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3U2VjdG9yXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawSector.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawStraightArrow.js": -/*!***************************************!*\ - !*** ./src/Draw/drawStraightArrow.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\nvar transformCartesianToWGS84 = function transformCartesianToWGS84(cartesian) {\n var ellipsoid = Cesium.Ellipsoid.WGS84;\n var cartographic = ellipsoid.cartesianToCartographic(cartesian);\n var x = Cesium.Math.toDegrees(cartographic.longitude);\n var y = Cesium.Math.toDegrees(cartographic.latitude);\n var z = cartographic.height;\n return {\n x: x,\n y: y,\n z: z\n };\n};\n\n/**\r\n * @extends Draw*/\nvar DrawStraightArrow = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawStraightArrow(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawStraightArrow);\n _this = _callSuper(this, DrawStraightArrow, [sdk, options]);\n _this.points = null;\n _this.polygonHasCreated = false;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawStraightArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawStraightArrow, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n var that = this;\n // eslint-disable-next-line no-undef\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawStraightArrow, \"start\", this, 3)([]);\n // eslint-disable-next-line no-undef\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"]('左键确定,右键取消;', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.anchorpoints = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n if (!cartesian || _this2.anchorpoints[0] === cartesian) return;\n _this2.anchorpoints.push(cartesian);\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n p.lng = Number(p.lng.toFixed(8));\n p.lat = Number(p.lat.toFixed(8));\n if (cache_positions[0] && p.lng === cache_positions[0].lng && p.lat === cache_positions[0].lat) return;\n cache_positions.push(p);\n _this2.positions.push(p);\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n if (_this2.points_ids.length === 2) {\n var array = [cache_positions[0], cache_positions[1]];\n cb(null, array);\n _this2.end();\n }\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) {\n return;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.positions = [_this2.positions[0], p];\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.arrowPolygon)) {\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.arrowPolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!cartesian || _this2.anchorpoints[0] === cartesian) return;\n _this2.anchorpoints.push(cartesian);\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n p.lng = Number(p.lng.toFixed(8));\n p.lat = Number(p.lat.toFixed(8));\n if (cache_positions[0] && p.lng === cache_positions[0].lng && p.lat === cache_positions[0].lat) return;\n cache_positions.push(p);\n _this2.positions.push(p);\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n if (_this2.points_ids.length === 2) {\n var array = [cache_positions[0], cache_positions[1]];\n cb(null, array);\n _this2.end();\n }\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) {\n return;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.positions = [_this2.positions[0], p];\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.arrowPolygon)) {\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2, _this2._sdk2D.viewer);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.arrowPolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2, _this2._sdk2D.viewer);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n }\n }\n });\n });\n }\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(DrawStraightArrow, \"end\", this, 3)([]);\n this.viewer.entities.remove(this.arrowPolygon);\n if (!this._is2D && this._sdk2D) {\n this._sdk2D.viewer.entities.remove(this.arrowPolygon);\n }\n }\n }], [{\n key: \"polygon\",\n value: function polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n return viewer.entities.add(new Cesium.Entity({\n name: 'ArrowPolygon',\n id: id,\n polygon: {\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeStraightArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n outline: true,\n outlineColor: Cesium.Color.GREEN,\n zIndex: 99999999\n }\n }));\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawStraightArrow);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3U3RyYWlnaHRBcnJvdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdTdHJhaWdodEFycm93LmpzPzE3ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuY29uc3QgdHJhbnNmb3JtQ2FydGVzaWFuVG9XR1M4NCA9IGNhcnRlc2lhbiA9PiB7XHJcbiAgbGV0IGVsbGlwc29pZCA9IENlc2l1bS5FbGxpcHNvaWQuV0dTODRcclxuICBsZXQgY2FydG9ncmFwaGljID0gZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbilcclxuICBjb25zdCB4ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgY29uc3QgeSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpXHJcbiAgY29uc3QgeiA9IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4geyB4LCB5LCB6IH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3U3RyYWlnaHRBcnJvdyBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0gW29wdGlvbnNdIHtvYmplY3R9IOmdouWxnuaAp1xyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5jb2xvcj1yZ2JhKDE4NSwxNCwxNCwwLjU4KV0ge29iamVjdH0g57q/5bGe5oCnXHJcblxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMucG9pbnRzID0gbnVsbFxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgcmV0dXJuIHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBuYW1lOiAnQXJyb3dQb2x5Z29uJyxcclxuICAgICAgICBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZVN0cmFpZ2h0QXJyb3codGhhdC5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzTmFOKGFycltpXS54KSkge1xyXG4gICAgICAgICAgICAgICAgYXJyID0gW11cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoYXJyKVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5jb2xvciksXHJcbiAgICAgICAgICBvdXRsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuR1JFRU4sXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWdvblxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+W3pumUruehruWumu+8jOWPs+mUruWPlua2iO+8mycsIHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FjaGVfODRfcG9zaXRpb24gPSBbXVxyXG4gICAgICB0aGlzLmFuY2hvcnBvaW50cyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMuYW5jaG9ycG9pbnRzWzBdPT09Y2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuXHJcbiAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgcC5sbmcgPSBOdW1iZXIocC5sbmcudG9GaXhlZCg4KSlcclxuICAgICAgICBwLmxhdCA9IE51bWJlcihwLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgIGlmKGNhY2hlX3Bvc2l0aW9uc1swXSAmJiAocC5sbmcgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sbmcgJiYgcC5sYXQgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sYXQpKSByZXR1cm47XHJcbiAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHApXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIGxldCBhcnJheSA9IFtjYWNoZV9wb3NpdGlvbnNbMF0sIGNhY2hlX3Bvc2l0aW9uc1sxXV1cclxuICAgICAgICAgIGNiKG51bGwsIGFycmF5KVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgdGhpcy5wb2ludHNfaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gW3RoaXMucG9zaXRpb25zWzBdLCBwXTtcclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA9PT0gMSAmJiAhQ2VzaXVtLmRlZmluZWQodGhpcy5hcnJvd1BvbHlnb24pKSB7XHJcbiAgICAgICAgICB0aGlzLmFycm93UG9seWdvbiA9IERyYXdTdHJhaWdodEFycm93LnBvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbClcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYW5jaG9ycG9pbnRzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIHRoaXMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCBDZXNpdW0uZGVmaW5lZCh0aGlzLmFycm93UG9seWdvbikpIHJldHVyblxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgdGhpcy5hbmNob3Jwb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMpXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMuYW5jaG9ycG9pbnRzWzBdPT09Y2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gIFxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBwLmxuZyA9IE51bWJlcihwLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgcC5sYXQgPSBOdW1iZXIocC5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGlmKGNhY2hlX3Bvc2l0aW9uc1swXSAmJiAocC5sbmcgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sbmcgJiYgcC5sYXQgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sYXQpKSByZXR1cm47XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChwKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChwKVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5ID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgICBjYihudWxsLCBhcnJheSlcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCB0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW3RoaXMucG9zaXRpb25zWzBdLCBwXTtcclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxICYmICFDZXNpdW0uZGVmaW5lZCh0aGlzLmFycm93UG9seWdvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hcnJvd1BvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKCk7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hcnJvd1BvbHlnb24pXHJcbiAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgdGhpcy5fc2RrMkQudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmFycm93UG9seWdvbilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdTdHJhaWdodEFycm93XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXJPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQWdOQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Draw/drawStraightArrow.js\n"); - -/***/ }), - -/***/ "./src/Draw/drawThreeRect.js": -/*!***********************************!*\ - !*** ./src/Draw/drawThreeRect.js ***! - \***********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawThreeRect = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 三点矩形属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawThreeRect(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, DrawThreeRect);\n _this = _callSuper(this, DrawThreeRect, [sdk, options]);\n _this.polygonHasCreated = false;\n _this.rectObject = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(DrawThreeRect, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(DrawThreeRect, [{\n key: \"computedLastPoint\",\n value: function computedLastPoint(arr) {\n var start = arr[0];\n var end = arr[1];\n // 计算点到线的距离\n var directionVector = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3());\n var pointToStart = Cesium.Cartesian3.subtract(arr[2], start, new Cesium.Cartesian3());\n var projectionLength = Cesium.Cartesian3.dot(pointToStart, directionVector) / Cesium.Cartesian3.magnitudeSquared(directionVector);\n var projectionVector = Cesium.Cartesian3.multiplyByScalar(directionVector, projectionLength, new Cesium.Cartesian3());\n var projectionPoint = Cesium.Cartesian3.add(start, projectionVector, new Cesium.Cartesian3());\n var distance = Cesium.Cartesian3.distance(arr[2], projectionPoint);\n var perp = Cesium.Cartesian3.subtract(arr[2], projectionPoint, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perp, perp);\n // 生成偏移向量\n var offset = Cesium.Cartesian3.multiplyByScalar(perp, distance, new Cesium.Cartesian3());\n var threePoint = Cesium.Cartesian3.add(end, offset, new Cesium.Cartesian3());\n var lastPoint = Cesium.Cartesian3.add(start, offset, new Cesium.Cartesian3());\n return [_objectSpread({}, threePoint), _objectSpread({}, lastPoint)];\n }\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n }, {\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n this.polygonHasCreated = false;\n _superPropGet(DrawThreeRect, \"start\", this, 3)([]);\n YJ.Measure.SetMeasureStatus(true);\n var into;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var cnt = 0;\n this.positions = [];\n this.positionsLine = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n cnt++;\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian));\n if (cnt == 3) {\n _this2.end();\n cb(null, _this2.rectObject);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n _this2.end();\n cb('取消', '');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n\n // this.positions = cache_positions.concat({ ...cartesian })\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (cnt == 2) {\n var arr = JSON.parse(JSON.stringify(cache_positions));\n var arr1 = arr.concat(_objectSpread({}, cartesian));\n var pointArr = _this2.computedLastPoint(arr1);\n arr = arr.concat(pointArr);\n _this2.positions = arr;\n var arr_84 = arr.map(function (item) {\n return _this2.cartesian3Towgs84(item, _this2.viewer);\n });\n _this2.rectObject = arr_84;\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian));\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n cnt++;\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n if (cnt == 3) {\n _this2.end();\n cb(null, _this2.rectObject);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n // this.positions = cache_positions.concat({ ...cartesian })\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (cnt == 2) {\n var arr = JSON.parse(JSON.stringify(cache_positions));\n var arr1 = arr.concat(_objectSpread({}, cartesian));\n var pointArr = _this2.computedLastPoint(arr1);\n arr = arr.concat(pointArr);\n _this2.positions = arr;\n var arr_84 = arr.map(function (item) {\n return _this2.cartesian3Towgs84(item, _this2.viewer);\n });\n _this2.rectObject = arr_84;\n }\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.polygonHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions.concat(that.positions[0]);\n }),\n width: 2,\n material: Cesium.Color.fromCssColorString('#c1c505').withAlpha(0.5),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawThreeRect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3VGhyZWVSZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd1RocmVlUmVjdC5qcz8yODRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcbmltcG9ydCBEcmF3IGZyb20gJy4vZHJhdydcclxuXHJcbi8qKlxyXG4gKiBAZXh0ZW5kcyBEcmF3Ki9cclxuY2xhc3MgRHJhd1RocmVlUmVjdCBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g5LiJ54K555+p5b2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnJlY3RPYmplY3QgPSBbXVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LnBvbHlnb25IYXNDcmVhdGVkID0gdHJ1ZVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9ucy5jb25jYXQodGhhdC5wb3NpdGlvbnNbMF0pXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNjMWM1MDUnKS53aXRoQWxwaGEoMC41KSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuICBjb21wdXRlZExhc3RQb2ludChhcnIpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gYXJyWzBdO1xyXG4gICAgY29uc3QgZW5kID0gYXJyWzFdO1xyXG4gICAgLy8g6K6h566X54K55Yiw57q/55qE6Led56a7XHJcbiAgICBjb25zdCBkaXJlY3Rpb25WZWN0b3IgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChlbmQsIHN0YXJ0LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBwb2ludFRvU3RhcnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChhcnJbMl0sIHN0YXJ0LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBwcm9qZWN0aW9uTGVuZ3RoID0gQ2VzaXVtLkNhcnRlc2lhbjMuZG90KHBvaW50VG9TdGFydCwgZGlyZWN0aW9uVmVjdG9yKSAvIENlc2l1bS5DYXJ0ZXNpYW4zLm1hZ25pdHVkZVNxdWFyZWQoZGlyZWN0aW9uVmVjdG9yKTtcclxuICAgIGNvbnN0IHByb2plY3Rpb25WZWN0b3IgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKGRpcmVjdGlvblZlY3RvciwgcHJvamVjdGlvbkxlbmd0aCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgcHJvamVjdGlvblBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHN0YXJ0LCBwcm9qZWN0aW9uVmVjdG9yLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGFyclsyXSwgcHJvamVjdGlvblBvaW50KVxyXG5cclxuICAgIGNvbnN0IHBlcnAgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChhcnJbMl0sIHByb2plY3Rpb25Qb2ludCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKHBlcnAsIHBlcnApO1xyXG4gICAgLy8g55Sf5oiQ5YGP56e75ZCR6YePXHJcbiAgICBjb25zdCBvZmZzZXQgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKHBlcnAsIGRpc3RhbmNlLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBsZXQgdGhyZWVQb2ludCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChlbmQsIG9mZnNldCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpXHJcbiAgICBsZXQgbGFzdFBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHN0YXJ0LCBvZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKVxyXG4gICAgcmV0dXJuIFt7IC4uLnRocmVlUG9pbnQgfSwgeyAuLi5sYXN0UG9pbnQgfV1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWdvblxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu57uT5p2f77ybQ1RSTCvlj7PplK7mkqTplIAnLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICBsZXQgY250ID0gMFxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb25zTGluZSA9IFtdXHJcbiAgICAgIHRoaXMucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG4gICAgICBsZXQgY2FjaGVfcG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IGNhY2hlXzg0X3Bvc2l0aW9uID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGNudCsrXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKGNudCA9PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYihudWxsLCB0aGlzLnJlY3RPYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgLy8gY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAvLyAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtKVxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coaXRlbSlcclxuICAgICAgICAvLyAgIHBvc2l0aW9ucy5wdXNoKHApXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhY2hlX3Bvc2l0aW9ucykpXHJcbiAgICAgICAgICBsZXQgYXJyMSA9IGFyci5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICAgIGxldCBwb2ludEFyciA9IHRoaXMuY29tcHV0ZWRMYXN0UG9pbnQoYXJyMSlcclxuICAgICAgICAgIGFyciA9IGFyci5jb25jYXQocG9pbnRBcnIpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGFyclxyXG4gICAgICAgICAgbGV0IGFycl84NCA9IGFyci5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMucmVjdE9iamVjdCA9IGFycl84NFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1RocmVlUmVjdC5jcmVhdGVfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnRvID0gJzJEJ1xyXG4gICAgICAgICAgY250KytcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGlmIChjbnQgPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKG51bGwsIHRoaXMucmVjdE9iamVjdClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYign5Y+W5raIJywgJycpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FjaGVfcG9zaXRpb25zKSlcclxuICAgICAgICAgICAgbGV0IGFycjEgPSBhcnIuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgICAgIGxldCBwb2ludEFyciA9IHRoaXMuY29tcHV0ZWRMYXN0UG9pbnQoYXJyMSlcclxuICAgICAgICAgICAgYXJyID0gYXJyLmNvbmNhdChwb2ludEFycilcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBhcnJcclxuICAgICAgICAgICAgbGV0IGFycl84NCA9IGFyci5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMucmVjdE9iamVjdCA9IGFycl84NFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJhd1RocmVlUmVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0U0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBK1FBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawThreeRect.js\n"); - -/***/ }), - -/***/ "./src/Event/index.js": -/*!****************************!*\ - !*** ./src/Event/index.js ***! - \****************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MouseEvent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-06-14 14:44\r\n * @description:index\r\n * @update: 2022-06-14 14:44\r\n */\nvar MouseEvent = /*#__PURE__*/function () {\n function MouseEvent(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MouseEvent);\n this.sdk = sdk;\n this.viewer = sdk.viewer;\n this.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.canvas);\n }\n\n /*事件*/\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MouseEvent, [{\n key: \"mouse_left\",\n value: function mouse_left(cb) {\n var _this = this;\n // //左键点击事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this.getcartesian(movement);\n // cartesian = this.earth.czm.viewer.scene.pickPosition(movement.position)\n // if (!cartesian) {\n // cartesian = this.viewer.scene.camera.pickEllipsoid(\n // movement.position,\n // this.viewer.scene.globe.ellipsoid\n // )\n // }\n // if (cartesian) {\n // cb(movement, cartesian)\n // }\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n }\n }, {\n key: \"mouse_left_down\",\n value: function mouse_left_down(cb) {\n var _this2 = this;\n // //左键按下事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this2.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n }\n }, {\n key: \"mouse_left_up\",\n value: function mouse_left_up(cb) {\n var _this3 = this;\n // //左键抬起事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this3.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_UP);\n }\n }, {\n key: \"mouse_move\",\n value: function mouse_move(cb) {\n var _this4 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this4.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n }\n }, {\n key: \"mouse_right\",\n value: function mouse_right(cb) {\n var _this5 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this5.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n }\n }, {\n key: \"mouse_right_down\",\n value: function mouse_right_down(cb) {\n var _this6 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this6.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n }\n }, {\n key: \"mouse_right_up\",\n value: function mouse_right_up(cb) {\n var _this7 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this7.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_UP);\n }\n }, {\n key: \"mouse_wheel\",\n value: function mouse_wheel(cb) {\n this.handler && this.handler.setInputAction(function () {\n cb();\n }, Cesium.ScreenSpaceEventType.WHEEL);\n }\n }, {\n key: \"getcartesian\",\n value: function getcartesian(movement) {\n // if (movement.endPosition) {\n // movement.endPosition.y -= 2\n // }\n var position = movement.position || movement.endPosition;\n if (movement.position1 && movement.position2) {\n position = {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n };\n }\n var cartesian = this.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = this.viewer.camera.getPickRay(position); //相交的射线\n var pickedObjects = this.viewer.scene.drillPickFromRay(ray, 10);\n var result = {};\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].position) {\n result = pickedObjects[i];\n break;\n }\n }\n cartesian = result.position;\n if (!cartesian) {\n cartesian = this.viewer.scene.globe.pick(ray, this.viewer.scene);\n }\n }\n return cartesian;\n // return this.earth.czm.viewer.scene.pickPosition(position)\n }\n\n //鼠标右键+键盘ctrl\n }, {\n key: \"mouse_right_keyboard_ctrl\",\n value: function mouse_right_keyboard_ctrl(cb) {\n var _this8 = this;\n // //左键点击事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this8.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK, Cesium.KeyboardEventModifier.CTRL);\n }\n\n // 手势-双指触摸开始\n }, {\n key: \"gesture_pinck_start\",\n value: function gesture_pinck_start(cb) {\n var _this9 = this;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this9.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.PINCH_START);\n }\n\n //手势-双指触摸开始+键盘ctrl\n }, {\n key: \"gesture_pinck_start_keyboard_ctrl\",\n value: function gesture_pinck_start_keyboard_ctrl(cb) {\n var _this10 = this;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this10.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.PINCH_START, Cesium.KeyboardEventModifier.CTRL);\n }\n\n // 手势-双指触摸结束\n }, {\n key: \"gesture_pinck_end\",\n value: function gesture_pinck_end(cb) {\n this.handler && this.handler.setInputAction(function (movement) {\n cb();\n }, Cesium.ScreenSpaceEventType.PINCH_END);\n }\n\n // 手势-双指触摸修改\n }, {\n key: \"gesture_pinck_move\",\n value: function gesture_pinck_move(cb) {\n this.handler && this.handler.setInputAction(function (movement) {\n // let cartesian = this.getcartesian(movement)\n // if (cartesian) {\n // cb(movement, cartesian)\n // }\n }, Cesium.ScreenSpaceEventType.PINCH_MOVE);\n }\n }, {\n key: \"keyboard_ctrl_z\",\n value: function keyboard_ctrl_z(cb) {\n // // this.sdk.viewer.canvas.tabindex = 0\n // // this.sdk.viewer.canvas.focus()\n // let mapElm = this.sdk.viewer.canvas\n // mapElm.addEventListener('keydown', function(e) {\n // if (e.ctrlKey && e.key === 'z') {\n // e.preventDefault();\n // console.log('编辑器内触发 Ctrl + Z');\n // }\n // });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.handler) this.handler.destroy(); //关闭事件句柄\n this.handler = null;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRXZlbnQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRXZlbnQvaW5kZXguanM/MzM1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDYtMTQgMTQ6NDRcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNCAxNDo0NFxyXG4gKi9cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vdXNlRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy5oYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihcclxuICAgICAgdGhpcy52aWV3ZXIuY2FudmFzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKuS6i+S7tiovXHJcbiAgbW91c2VfbGVmdChjYikge1xyXG4gICAgLy8gLy/lt6bplK7ngrnlh7vkuovku7ZcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgLy8gY2FydGVzaWFuID0gdGhpcy5lYXJ0aC5jem0udmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgLy8gaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgLy8gICBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgLy8gICAgIG1vdmVtZW50LnBvc2l0aW9uLFxyXG4gICAgICAvLyAgICAgdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkXHJcbiAgICAgIC8vICAgKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgLy8gICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICB9XHJcblxyXG4gIG1vdXNlX2xlZnRfZG93bihjYikge1xyXG4gICAgLy8gLy/lt6bplK7mjInkuIvkuovku7ZcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgfVxyXG4gIG1vdXNlX2xlZnRfdXAoY2IpIHtcclxuICAgIC8vIC8v5bem6ZSu5oqs6LW35LqL5Lu2XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9VUClcclxuICB9XHJcblxyXG4gIG1vdXNlX21vdmUoY2IsIGFsbG93TnVsbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcblxyXG4gICAgICBpZiAoY2FydGVzaWFuIHx8IGFsbG93TnVsbCkge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKVxyXG4gIH1cclxuXHJcbiAgbW91c2VfcmlnaHQoY2IsIGFsbG93TnVsbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4gfHwgYWxsb3dOdWxsKSB7XHJcbiAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG4gIH1cclxuXHJcbiAgbW91c2VfcmlnaHRfZG93bihjYiwgYWxsb3dOdWxsID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgaWYgKGNhcnRlc2lhbiB8fCBhbGxvd051bGwpIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfRE9XTilcclxuICB9XHJcblxyXG4gIG1vdXNlX3JpZ2h0X3VwKGNiLCBhbGxvd051bGwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgbGV0IGNhcnRlc2lhbiA9IHRoaXMuZ2V0Y2FydGVzaWFuKG1vdmVtZW50KVxyXG4gICAgICBpZiAoY2FydGVzaWFuIHx8IGFsbG93TnVsbCkge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9VUClcclxuICB9XHJcblxyXG4gIG1vdXNlX3doZWVsKGNiKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgICAgY2IoKVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLldIRUVMKVxyXG4gIH1cclxuXHJcbiAgZ2V0Y2FydGVzaWFuKG1vdmVtZW50KSB7XHJcbiAgICAvLyBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIC8vICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSAtPSAyXHJcbiAgICAvLyB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgaWYobW92ZW1lbnQucG9zaXRpb24xICYmIG1vdmVtZW50LnBvc2l0aW9uMikge1xyXG4gICAgICBwb3NpdGlvbiA9IHtcclxuICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDIsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9zaXRpb24pXHJcbiAgICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgICBjb25zdCByYXkgPSB0aGlzLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGxldCBwaWNrZWRPYmplY3RzID0gdGhpcy52aWV3ZXIuc2NlbmUuZHJpbGxQaWNrRnJvbVJheShyYXksIDEwKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHt9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjYXJ0ZXNpYW4gPSByZXN1bHQucG9zaXRpb25cclxuICAgICAgaWYoIWNhcnRlc2lhbikge1xyXG4gICAgICAgIGNhcnRlc2lhbiA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0aGlzLnZpZXdlci5zY2VuZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjYXJ0ZXNpYW5cclxuICAgIC8vIHJldHVybiB0aGlzLmVhcnRoLmN6bS52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKHBvc2l0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy/pvKDmoIflj7PplK4r6ZSu55uYY3RybFxyXG4gIG1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoY2IpIHtcclxuICAgIC8vIC8v5bem6ZSu54K55Ye75LqL5Lu2XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKFxyXG4gICAgICAobW92ZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9DTElDSyxcclxuICAgICAgQ2VzaXVtLktleWJvYXJkRXZlbnRNb2RpZmllci5DVFJMXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvLyDmiYvlir8t5Y+M5oyH6Kem5pG45byA5aeLXHJcbiAgZ2VzdHVyZV9waW5ja19zdGFydChjYikge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgbGV0IGNhcnRlc2lhbiA9IHRoaXMuZ2V0Y2FydGVzaWFuKG1vdmVtZW50KVxyXG4gICAgICBpZiAoY2FydGVzaWFuKSB7XHJcbiAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX1NUQVJUKVxyXG4gIH1cclxuXHJcbiAgLy/miYvlir8t5Y+M5oyH6Kem5pG45byA5aeLK+mUruebmGN0cmxcclxuICBnZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoY2IpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oXHJcbiAgICAgIChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgICBpZiAoY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX1NUQVJULFxyXG4gICAgICBDZXNpdW0uS2V5Ym9hcmRFdmVudE1vZGlmaWVyLkNUUkxcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vIOaJi+WKvy3lj4zmjIfop6bmkbjnu5PmnZ9cclxuICBnZXN0dXJlX3BpbmNrX2VuZChjYikge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgY2IoKVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX0VORClcclxuICB9XHJcblxyXG4gIC8vIOaJi+WKvy3lj4zmjIfop6bmkbjkv67mlLlcclxuICBnZXN0dXJlX3BpbmNrX21vdmUoY2IpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIC8vIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgLy8gaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAvLyAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIC8vIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5QSU5DSF9NT1ZFKVxyXG4gIH1cclxuXHJcbiAga2V5Ym9hcmRfY3RybF96KGNiKSB7XHJcbiAgICAvLyAvLyB0aGlzLnNkay52aWV3ZXIuY2FudmFzLnRhYmluZGV4ID0gMFxyXG4gICAgLy8gLy8gdGhpcy5zZGsudmlld2VyLmNhbnZhcy5mb2N1cygpXHJcbiAgICAvLyBsZXQgbWFwRWxtID0gdGhpcy5zZGsudmlld2VyLmNhbnZhc1xyXG4gICAgLy8gbWFwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAvLyAgIGlmIChlLmN0cmxLZXkgJiYgZS5rZXkgPT09ICd6Jykge1xyXG4gICAgLy8gICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZygn57yW6L6R5Zmo5YaF6Kem5Y+RIEN0cmwgKyBaJyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmhhbmRsZXIpXHJcbiAgICAgIHRoaXMuaGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHRoaXMuaGFuZGxlciA9IG51bGxcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Event/index.js\n"); - -/***/ }), - -/***/ "./src/Global/ClickCallback/index.js": -/*!*******************************************!*\ - !*** ./src/Global/ClickCallback/index.js ***! - \*******************************************/ -/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that && obj.that.show) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj && _obj.that && _obj.that.picking && _obj.that.geojson && _obj.that.show) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2 && _obj2.that && _obj2.that.picking && _obj2.that.show) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3 && _obj3.that && _obj3.that.picking && _obj3.that.show) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4 && _obj4.that && _obj4.that.picking && _obj4.that.show) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n if (_obj5 && _obj5.that && _obj5.that.picking && _obj5.that.show) {\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6 && _obj6.that && _obj6.that.picking && _obj6.that.show) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7 && _obj7.that && _obj7.that.picking && _obj7.that.show) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj && obj.that && obj.that.picking && obj.that.geojson && obj.that.show) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8 && _obj8.that && _obj8.that.picking && _obj8.that.show) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9 && _obj9.that && _obj9.that.picking && _obj9.that.show) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/Mzc4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgLy8g5piv5ZCm5Li65aSa6L655b2iXHJcbiAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnR5cGUgPT09ICdQb2x5Z29uT2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgLy8g5piv5ZCm5Y+v54K55Ye7eVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zICYmIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOiBmumbhuWcsFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBc3NlbWJsZU9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlQXNzZW1ibGUob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW2kgKyAxXVxyXG4gICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5Y2V566t5aS0XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ0F0dGFja0Fycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zICYmIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUF0dGFja0Fycm93KG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5UG9zID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW21dLCBzZGsudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWPjOeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVQaW5jZXJBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODRfMCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0XzAubG5nLCBwb3M4NF8wLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5ZyGXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ0NpcmNsZU9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjZW50ZXIgPSBbb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubG5nLCBvYmoudGhhdC5vcHRpb25zLmNlbnRlci5sYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYWRpdXMgPSBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAvIDEwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHN0ZXBzOiAzNjAsIHVuaXRzOiAna2lsb21ldGVycycgfTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2lyY2xlID0gdHVyZi5jaXJjbGUoY2VudGVyLCByYWRpdXMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIGNpcmNsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDmiYflvaJcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnU2VjdG9yT2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMuY2VudGVyICYmIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzICYmIG9iai50aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSAmJiBvYmoudGhhdC5vcHRpb25zLmVuZEFuZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNhbFNlY3RvcihvYmoudGhhdC5vcHRpb25zLmNlbnRlciwgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMsIG9iai50aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSwgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSwgdW5kZWZpbmVkLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5UG9zID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3NpdGlvbnNbbV0ubG5nLCBwb3NpdGlvbnNbbV0ubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgICAgIGlmIChwaWNrKSB7XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGVudGl0eUlkXHJcbiAgICAgICAgICAgICAgLy8g55+i6YePXHJcbiAgICAgICAgICAgICAgaWYgKHBpY2suaWQudHlwZSAmJiBwaWNrLmlkLnR5cGUgPT09ICd2ZWN0b3InICYmIHBpY2suaWQucGFyZW50SWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZC5wYXJlbnRJZClcclxuICAgICAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uICYmIG9iai50aGF0LnNob3cpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQgPT09IHBpY2suaWQuX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBpY2suaWQuaWQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IHBpY2suaWQuaWQuc3BsaXQoJy0nKVxyXG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGFycmF5Lmxlbmd0aCAtIDEsIDEpXHJcbiAgICAgICAgICAgICAgICBlbnRpdHlJZCA9IGFycmF5LmpvaW4oJy0nKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHBpY2suaWQucHJvcGVydGllcyAmJiBwaWNrLmlkLnByb3BlcnRpZXMuaWQgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGljay5pZC5wcm9wZXJ0aWVzLmlkLl92YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAobGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGljay5pZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5SWQgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKGVudGl0eUlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChlbnRpdHlJZClcclxuICAgICAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlJZCxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAocGljay5wcmltaXRpdmUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PSAnc3RyaW5nJyAmJiBsZWZ0Q2xpY2tDYWxsYmFja01hcC5oYXMocGljay5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkKVxyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGljay5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iaiAmJiBvYmoudGhhdCAmJiBvYmoudGhhdC5waWNraW5nICYmIG9iai50aGF0LnNob3cpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iaiAmJiBvYmoudGhhdCAmJiBvYmoudGhhdC5waWNraW5nICYmIG9iai50aGF0Lmdlb2pzb24gJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/ClickCallback/index.js\n"); - -/***/ }), - -/***/ "./src/Global/Contour/_element.js": -/*!****************************************!*\ - !*** ./src/Global/Contour/_element.js ***! - \****************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u7B49\\u9AD8\\u7EBF\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7B49\\u9AD8\\u8DDD\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9009\\u4E2D\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u8BA1\\u66F2\\u7EBF\\n \\n
\\n
\\n \\u8BA1\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8BA1\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9996\\u66F2\\u7EBF\\n \\n
\\n
\\n \\u9996\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u9996\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u95F4\\u66F2\\u7EBF\\n \\n
\\n
\\n \\u95F4\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u95F4\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u52A9\\u66F2\\u7EBF\\n \\n
\\n
\\n \\u52A9\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u52A9\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NvbnRvdXIvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NvbnRvdXIvX2VsZW1lbnQuanM/ZGJmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuetiemrmOe6vzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2ggc2hvd1wiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nrYnpq5jot508L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBlcXVhbC1oZWlnaHQtZGlzdGFuY2VcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTAwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiAgc3R5bGU9XCJmbGV4OiAwIDAgNjBweDtcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCIgc3R5bGU9XCJmbGV4OiAwIDAgMTU3cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6YCJ5Lit57q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2ZS1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTIwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6K6h5puy57q/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaCBpbmRleC1jb250b3VyLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orqHmm7Lnur/popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kZXgtY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orqHmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbmRleC1jb250b3VyLXdpZHRoXCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgc3RlcD1cIjAuMVwiIG1pbj1cIjFcIiBtYXg9XCIxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppbmm7Lnur88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoIGludGVybWVkaWF0ZS1jb250b3VyLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppbmm7Lnur/popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJtZWRpYXRlLWNvbnRvdXItY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6aaW5puy57q/5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW50ZXJtZWRpYXRlLWNvbnRvdXItd2lkdGhcIiB0eXBlPVwibnVtYmVyXCIgc3RlcD1cIjAuMVwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumXtOabsue6vzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2ggaGFsZkludGVydmFsLWNvbnRvdXItc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC11bml0LWJveFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumXtOabsue6v+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYWxmSW50ZXJ2YWwtY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pl7Tmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBoYWxmSW50ZXJ2YWwtY29udG91ci13aWR0aFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCIxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqnmm7Lnur88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoIHN1cHBsZW1lbnRhcnktY29udG91ci1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCIgc3R5bGU9XCJmbGV4OiAwIDAgMTIwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Yqp5puy57q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cHBsZW1lbnRhcnktY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqnmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBzdXBwbGVtZW50YXJ5LWNvbnRvdXItd2lkdGhcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5R0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/Contour/_element.js\n"); - -/***/ }), - -/***/ "./src/Global/Contour/index.js": -/*!*************************************!*\ - !*** ./src/Global/Contour/index.js ***! - \*************************************/ -/*! exports provided: dialog, startDraw, reset, setVal */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dialog\", function() { return dialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startDraw\", function() { return startDraw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return reset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVal\", function() { return setVal; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Obj/Element/yj-color-picker */ \"./src/Obj/Element/yj-color-picker.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_element */ \"./src/Global/Contour/_element.js\");\n\n\n/**\r\n * 等高线\r\n */\n\n\n\n\n\nvar _DialogObject = null;\nvar material = null;\nvar handler = null;\nvar activeHeightElm = null;\nvar tools;\nvar _sdk;\nvar secondaryLinesCount = 19;\nvar show = true;\nvar equalHeightDistance = 10;\nvar activeColor = '#ffd000';\nvar indexContourShow = true;\nvar indexContourWidth = 2.5;\nvar indexContourColor = '#43cf7c';\nvar intermediateContourShow = true;\nvar intermediateContourWidth = 1.8;\nvar intermediateContourColor = '#ff0000';\nvar halfIntervalContourShow = false;\nvar halfIntervalContourWidth = 1.0;\nvar halfIntervalContourColor = '#64b6d9';\nvar supplementaryContourShow = false;\nvar supplementaryContourWidth = 1.0;\nvar supplementaryContourColor = '#d084d1';\nvar paramData = {};\nactiveHeightElm = document.createElement('div');\nactiveHeightElm.className = 'YJ-customize-active-height-elm';\nactiveHeightElm.style.position = 'absolute';\nactiveHeightElm.style.left = '10px';\nactiveHeightElm.style.top = '10px';\nactiveHeightElm.style.width = '100px';\n// activeHeightElm.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\nactiveHeightElm.style.textAlign = 'center';\nactiveHeightElm.style.pointerEvents = 'none';\nactiveHeightElm.style.color = '#ff0000';\nactiveHeightElm.style.display = 'none';\nfunction accordingToCameraHeight() {\n if (_sdk) {\n var camera = _sdk.viewer.camera;\n var position = camera.positionCartographic;\n\n // 计算相机高度(相对于椭球面)\n var cameraHeight = Cesium.Math.toDegrees(position.height);\n if (cameraHeight < 1000000) {\n if (!_sdk.viewer.scene.globe.material && show === true) {\n showContour(_sdk);\n }\n // if (material) {\n // if (cameraHeight > 450000) {\n // material.uniforms.supplementaryContourShow = false\n // }\n // else if (supplementaryContourShow) {\n // material.uniforms.supplementaryContourShow = true\n // }\n // }\n } else {\n hideContour(_sdk);\n }\n // console.log(cameraHeight)\n }\n}\nfunction startDraw(sdk, showData) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n if (showData) {\n var terrainAvailability = sdk.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n }\n show = showData;\n Object.keys(paramData).forEach(function (item) {\n material.uniforms[item] = paramData[item];\n });\n if (show) {\n var height = sdk.viewer.camera.positionCartographic.height;\n if (height > 16360) {\n var cartographic = sdk.viewer.camera.positionCartographic;\n var options = {\n position: {\n lng: Cesium.Math.toDegrees(cartographic.longitude),\n lat: Cesium.Math.toDegrees(cartographic.latitude),\n alt: 16360\n }\n };\n Object(_global__WEBPACK_IMPORTED_MODULE_4__[\"flyTo\"])(sdk, options, 0.5);\n }\n showContour(sdk);\n } else {\n hideContour(sdk);\n }\n}\nfunction reset() {\n // if (handler) {\n // handler.destroy()\n // }\n secondaryLinesCount = 19;\n // show = true\n equalHeightDistance = 10;\n activeColor = '#ffd000';\n indexContourShow = true;\n indexContourWidth = 2.5;\n indexContourColor = '#43cf7c';\n intermediateContourShow = true;\n intermediateContourWidth = 1.8;\n intermediateContourColor = '#ff0000';\n halfIntervalContourShow = false;\n halfIntervalContourWidth = 1.0;\n halfIntervalContourColor = '#64b6d9';\n supplementaryContourShow = false;\n supplementaryContourWidth = 1.0;\n supplementaryContourColor = '#d084d1';\n}\nfunction setVal(data) {\n secondaryLinesCount = data['secondaryLinesCount'];\n // show = true\n equalHeightDistance = data['equalHeightDistance'];\n activeColor = rgbaFromObject(data['activeColor']);\n indexContourShow = data['indexContourShow'];\n indexContourWidth = data['indexContourWidth'];\n indexContourColor = rgbaFromObject(data['indexContourColor']);\n intermediateContourShow = data['intermediateContourShow'];\n intermediateContourWidth = data['intermediateContourWidth'];\n intermediateContourColor = rgbaFromObject(data['intermediateContourColor']);\n halfIntervalContourShow = data['halfIntervalContourShow'];\n halfIntervalContourWidth = data['halfIntervalContourWidth'];\n halfIntervalContourColor = rgbaFromObject(data['halfIntervalContourColor']);\n supplementaryContourShow = data['supplementaryContourShow'];\n supplementaryContourWidth = data['supplementaryContourWidth'];\n supplementaryContourColor = rgbaFromObject(data['supplementaryContourColor']);\n}\nfunction rgbaFromObject(colorObj) {\n var red = colorObj.red,\n green = colorObj.green,\n blue = colorObj.blue,\n _colorObj$alpha = colorObj.alpha,\n alpha = _colorObj$alpha === void 0 ? 1 : _colorObj$alpha;\n return \"rgba(\".concat(red * 255, \", \").concat(green * 255, \", \").concat(blue * 255, \", \").concat(alpha, \")\");\n}\nfunction dialog(_x) {\n return _dialog.apply(this, arguments);\n}\nfunction _dialog() {\n _dialog = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(sdk) {\n var contentElm, equalHeightDistanceInput, activeColorPicker, indexContourSwitch, indexContourColorPicker, indexContourWidthInput, intermediateContourSwitch, intermediateContourColorPicker, intermediateContourWidthInput, halfIntervalContourSwitch, halfIntervalContourColorPicker, halfIntervalContourWidthInput, supplementaryContourSwitch, supplementaryContourColorPicker, supplementaryContourWidthInput, initInputValue;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n initInputValue = function _initInputValue(e) {\n var value = e.target.value;\n if (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n return value;\n };\n _sdk = sdk;\n if (!(!sdk || _DialogObject)) {\n _context.next = 4;\n break;\n }\n return _context.abrupt(\"return\");\n case 4:\n if (!material) {\n createMaterial();\n }\n if (!tools) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n }\n\n // _DialogObject = await new Dialog(sdk, {}, {\n // title: \"全局等高线\", left: '180px',\n // top: '100px',\n // closeCallBack: () => {\n // _DialogObject = null\n // }\n // });\n\n // _DialogObject._element.body.className =\n // _DialogObject._element.body.className + ' contour'\n // let contentElm = document.createElement('div')\n // contentElm.innerHTML = html(this)\n\n // _DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('contour')[0];\n sdk.viewer.scene.postRender.removeEventListener(accordingToCameraHeight);\n sdk.viewer.scene.postRender.addEventListener(accordingToCameraHeight);\n\n // 显示\n // let showBtn = contentElm.getElementsByClassName('show')[0]\n // showBtn.checked = show\n // if (showBtn.checked) {\n // let height = sdk.viewer.camera.positionCartographic.height\n // if (height > 16360) {\n // let cartographic = sdk.viewer.camera.positionCartographic\n // let options = {\n // position: {\n // lng: Cesium.Math.toDegrees(cartographic.longitude),\n // lat: Cesium.Math.toDegrees(cartographic.latitude),\n // alt: 16360,\n // },\n // }\n // flyTo(sdk, options, 0.5)\n // }\n // showContour(sdk)\n // }\n // showBtn.addEventListener('change', (e) => {\n // if (e.target.checked) {\n // show = true\n // let height = sdk.viewer.camera.positionCartographic.height\n // if (height > 16360) {\n // let cartographic = sdk.viewer.camera.positionCartographic\n // let options = {\n // position: {\n // lng: Cesium.Math.toDegrees(cartographic.longitude),\n // lat: Cesium.Math.toDegrees(cartographic.latitude),\n // alt: 16360,\n // },\n // }\n // flyTo(sdk, options, 0.5)\n // }\n // showContour(sdk)\n // } else {\n // show = false\n // hideContour(sdk)\n // }\n // })\n // 等高距\n equalHeightDistanceInput = contentElm.getElementsByClassName('equal-height-distance')[0];\n equalHeightDistanceInput.value = equalHeightDistance;\n equalHeightDistanceInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n equalHeightDistance = value;\n equalHeightDistanceInput.value = value;\n if (material) {\n // material.uniforms.spacing = equalHeightDistance * 5\n paramData.spacing = equalHeightDistance * 5;\n }\n });\n\n // 选中颜色\n // let activeColorPicker = new YJColorPicker({\n // el: contentElm.getElementsByClassName('active-color')[0],\n // size: \"mini\",\n // isLog: false,\n // alpha: true, //是否开启透明度\n // disabled: false, //是否禁止打开颜色选择器\n // predefineColor: true, // 预定义颜色\n // defaultColor: '#ffffff',\n // sure: color => {\n // activeColor = color\n // if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n // }\n // },\n // clear: () => {\n // activeColor = 'rgba(255,255,255,1)'\n // if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n // }\n // }\n // })\n activeColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('active-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: activeColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n activeColor = color;\n if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n paramData.activeColor = Cesium.Color.fromCssColorString(activeColor);\n }\n },\n clear: function clear() {\n activeColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n paramData.activeColor = Cesium.Color.fromCssColorString(activeColor);\n }\n }\n }); // 计曲线开关\n indexContourSwitch = contentElm.getElementsByClassName('index-contour-switch')[0];\n indexContourSwitch.checked = indexContourShow;\n indexContourSwitch.addEventListener('change', function (e) {\n indexContourShow = e.target.checked;\n if (material) {\n // material.uniforms.indexContourShow = indexContourShow\n paramData.indexContourShow = indexContourShow;\n }\n });\n // 计曲线颜色\n indexContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('index-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: indexContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n indexContourColor = color;\n if (material) {\n // material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)\n paramData.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor);\n }\n },\n clear: function clear() {\n indexContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)\n paramData.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor);\n }\n }\n }); // 计曲线宽度\n indexContourWidthInput = contentElm.getElementsByClassName('index-contour-width')[0];\n indexContourWidthInput.value = indexContourWidth;\n indexContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n indexContourWidth = value;\n indexContourWidthInput.value = value;\n if (material) {\n // material.uniforms.indexContourWidth = indexContourWidth\n paramData.indexContourWidth = indexContourWidth;\n }\n });\n\n // 首曲线开关\n intermediateContourSwitch = contentElm.getElementsByClassName('intermediate-contour-switch')[0];\n intermediateContourSwitch.checked = intermediateContourShow;\n intermediateContourSwitch.addEventListener('change', function (e) {\n intermediateContourShow = e.target.checked;\n if (material) {\n // material.uniforms.intermediateContourShow = intermediateContourShow\n paramData.intermediateContourShow = intermediateContourShow;\n }\n });\n // 首曲线颜色\n intermediateContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('intermediate-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: intermediateContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n intermediateContourColor = color;\n if (material) {\n // material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)\n paramData.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor);\n }\n },\n clear: function clear() {\n intermediateContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)\n paramData.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor);\n }\n }\n }); // 首曲线宽度\n intermediateContourWidthInput = contentElm.getElementsByClassName('intermediate-contour-width')[0];\n intermediateContourWidthInput.value = intermediateContourWidth;\n intermediateContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n intermediateContourWidth = value;\n intermediateContourWidthInput.value = value;\n if (material) {\n // material.uniforms.intermediateContourWidth = intermediateContourWidth\n paramData.intermediateContourWidth = intermediateContourWidth;\n }\n });\n\n // 间曲线开关\n halfIntervalContourSwitch = contentElm.getElementsByClassName('halfInterval-contour-switch')[0];\n halfIntervalContourSwitch.checked = halfIntervalContourShow;\n halfIntervalContourSwitch.addEventListener('change', function (e) {\n halfIntervalContourShow = e.target.checked;\n if (material) {\n // material.uniforms.halfIntervalContourShow = halfIntervalContourShow\n paramData.halfIntervalContourShow = halfIntervalContourShow;\n }\n });\n // 间曲线颜色\n halfIntervalContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('halfInterval-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: halfIntervalContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n halfIntervalContourColor = color;\n if (material) {\n // material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)\n paramData.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor);\n }\n },\n clear: function clear() {\n halfIntervalContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)\n paramData.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor);\n }\n }\n }); // 间曲线宽度\n halfIntervalContourWidthInput = contentElm.getElementsByClassName('halfInterval-contour-width')[0];\n halfIntervalContourWidthInput.value = halfIntervalContourWidth;\n halfIntervalContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n halfIntervalContourWidth = value;\n halfIntervalContourWidthInput.value = value;\n if (material) {\n // material.uniforms.halfIntervalContourWidth = halfIntervalContourWidth\n paramData.halfIntervalContourWidth = halfIntervalContourWidth;\n }\n });\n\n // 助曲线开关\n supplementaryContourSwitch = contentElm.getElementsByClassName('supplementary-contour-switch')[0];\n supplementaryContourSwitch.checked = supplementaryContourShow;\n supplementaryContourSwitch.addEventListener('change', function (e) {\n supplementaryContourShow = e.target.checked;\n if (material) {\n // material.uniforms.supplementaryContourShow = supplementaryContourShow\n paramData.supplementaryContourShow = supplementaryContourShow;\n }\n });\n // 助曲线颜色\n supplementaryContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('supplementary-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: supplementaryContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n supplementaryContourColor = color;\n if (material) {\n // material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)\n paramData.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor);\n }\n },\n clear: function clear() {\n supplementaryContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)\n paramData.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor);\n }\n }\n }); // 助曲线宽度\n supplementaryContourWidthInput = contentElm.getElementsByClassName('supplementary-contour-width')[0];\n supplementaryContourWidthInput.value = supplementaryContourWidth;\n supplementaryContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n supplementaryContourWidth = value;\n supplementaryContourWidthInput.value = value;\n if (material) {\n // material.uniforms.supplementaryContourWidth = supplementaryContourWidth\n paramData.supplementaryContourWidth = supplementaryContourWidth;\n }\n });\n case 41:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _dialog.apply(this, arguments);\n}\nfunction showContour(sdk) {\n var camera = sdk.viewer.camera;\n var position = camera.positionCartographic;\n // 计算相机高度(相对于椭球面)\n var cameraHeight = Cesium.Math.toDegrees(position.height);\n if (cameraHeight > 1000000) {\n return;\n }\n if (handler) {\n handler.destroy();\n }\n if (!sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {\n sdk.viewer.container.appendChild(activeHeightElm);\n }\n handler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n handler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.endPosition);\n if (cartesian) {\n var top = 0;\n var left = 0;\n if (sdk.viewer && sdk.viewer._element) {\n var element = sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0];\n top = element.getBoundingClientRect().top + window.scrollY;\n left = element.getBoundingClientRect().left + window.scrollX;\n }\n activeHeightElm.style.left = movement.endPosition.x - 50 + left + 'px';\n activeHeightElm.style.top = movement.endPosition.y - 40 + top + 'px';\n activeHeightElm.style.display = 'block';\n // let pos = sdk.viewer.scene.clampToHeight(cartesian)\n var pos84 = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n // pos84.alt = height\n var mainContourHeight = Math.floor(pos84.alt / material.uniforms.spacing) * material.uniforms.spacing;\n var gap = pos84.alt - mainContourHeight;\n var gap2 = material.uniforms.spacing / (material.uniforms.secondaryLinesCount + 1);\n var activeHeight = Math.floor(gap / gap2) * gap2 + mainContourHeight;\n if (pos84.alt < 0) {\n pos84.alt = 0;\n }\n if (pos84.alt - activeHeight > gap2 / 2) {\n activeHeight = activeHeight + gap2;\n }\n material.uniforms.mouseHeight = pos84.alt;\n material.uniforms.mousePosition = cartesian;\n activeHeightElm.innerHTML = \"\".concat(activeHeight.toFixed(0));\n } else {\n activeHeightElm.style.display = 'none';\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n sdk.viewer.scene.globe.material = material;\n}\nfunction hideContour(sdk) {\n if (handler) {\n handler.destroy();\n handler = null;\n }\n if (sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {\n activeHeightElm.style.display = 'none';\n sdk.viewer.container.removeChild(activeHeightElm);\n }\n sdk.viewer.scene.globe.material = null;\n}\nfunction createMaterial() {\n Cesium.Material._materialCache._materials.ElevationContour.fabric.source = \"\\nuniform vec4 activeColor; // \\u9009\\u4E2D\\u989C\\u8272\\nuniform float spacing; // \\u7B49\\u9AD8\\u8DDD\\n\\n// \\u8BA1\\u66F2\\u7EBF\\nuniform bool indexContourShow;\\nuniform float indexContourWidth;\\nuniform vec4 indexContourColor;\\n// \\u9996\\u66F2\\u7EBF\\nuniform bool intermediateContourShow;\\nuniform float intermediateContourWidth;\\nuniform vec4 intermediateContourColor;\\n// \\u95F4\\u66F2\\u7EBF\\nuniform bool halfIntervalContourShow;\\nuniform float halfIntervalContourWidth;\\nuniform vec4 halfIntervalContourColor;\\n// \\u52A9\\u66F2\\u7EBF\\nuniform bool supplementaryContourShow;\\nuniform float supplementaryContourWidth;\\nuniform vec4 supplementaryContourColor;\\n\\nuniform float mouseHeight;\\n\\nuniform float secondaryLinesCount; // 0=\\u65E0\\u6B21\\u7EBF, 1=1\\u6761\\u6B21\\u7EBF, 2=2\\u6761\\u6B21\\u7EBF...\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput)\\n{\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n\\n // \\u4E3B\\u7B49\\u9AD8\\u7EBF\\u8BA1\\u7B97\\n float distanceToMainContour = mod(materialInput.height, spacing);\\n\\n // \\u6297\\u952F\\u9F7F\\u8BA1\\u7B97\\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\\n float dxc = abs(dFdx(materialInput.height));\\n float dyc = abs(dFdy(materialInput.height));\\n float dFMain = max(dxc, dyc) * czm_pixelRatio * indexContourWidth;\\n#else\\n float dFMain = czm_pixelRatio * indexContourWidth;\\n#endif\\n\\n bool isMainContour = distanceToMainContour < dFMain;\\n bool isSecondaryContour = false;\\n float dFSecondary = 0.0;\\n float secondarySpacing = 0.0;\\n bool isHalfInterval = false;\\n bool isIntermediate= false;\\n\\n // \\u8BA1\\u7B97\\u5F53\\u524D\\u9AD8\\u5EA6\\u6240\\u5C5E\\u7684\\u7B49\\u9AD8\\u7EBF\\u9AD8\\u5EA6\\n float mainContourHeight = floor(materialInput.height / spacing) * spacing;\\n float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);\\n\\n // \\u8BA1\\u7B97\\u6B21\\u7EBF\\u5728\\u4E24\\u6761\\u4E3B\\u7B49\\u9AD8\\u7EBF\\u4E4B\\u95F4\\u7684\\u76F8\\u5BF9\\u4F4D\\u7F6E\\n float relativeHeight = materialInput.height - mainContourHeight;\\n float normalizedPosition = relativeHeight / spacing;\\n\\n // \\u8BA1\\u7B97\\u6B21\\u7EBF\\u7D22\\u5F15\\uFF08\\u4ECE\\u4E3B\\u7B49\\u9AD8\\u7EBF\\u5F00\\u59CB\\u8BA1\\u6570\\uFF09\\n float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));\\n\\n // \\u53EA\\u6709\\u5F53\\u5B58\\u5728\\u6B21\\u7EBF\\u65F6\\u624D\\u8BA1\\u7B97\\u6B21\\u7EBF\\n if(secondaryLinesCount > 0.0) {\\n float secondaryLinesWidth = supplementaryContourWidth;\\n secondarySpacing = spacing / (secondaryLinesCount + 1.0);\\n float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);\\n\\n // \\u786E\\u4FDD\\u6B21\\u7EBF\\u4E0D\\u4F1A\\u4E0E\\u4E3B\\u7EBF\\u91CD\\u53E0\\n float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);\\n bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2\\u500D\\u7EBF\\u5BBD\\u7F13\\u51B2\\n\\n\\n if (lineIndex > 0.0 && lineIndex < secondaryLinesCount) {\\n // \\u4F7F\\u7528mod\\u51FD\\u6570\\u68C0\\u67E5\\u4F59\\u6570\\u662F\\u5426\\u63A5\\u8FD10\\uFF08\\u8003\\u8651\\u6D6E\\u70B9\\u6570\\u7CBE\\u5EA6\\u95EE\\u9898\\uFF09\\n isHalfInterval = abs(mod(lineIndex, 2.0)) < 0.01;\\n if(isHalfInterval) {\\n secondaryLinesWidth = halfIntervalContourWidth;\\n }\\n // \\u4F7F\\u7528mod\\u51FD\\u6570\\u68C0\\u67E5\\u4F59\\u6570\\u662F\\u5426\\u63A5\\u8FD10\\uFF08\\u8003\\u8651\\u6D6E\\u70B9\\u6570\\u7CBE\\u5EA6\\u95EE\\u9898\\uFF09\\n isIntermediate = abs(mod(lineIndex, 4.0)) < 0.01;\\n if(isIntermediate) {\\n secondaryLinesWidth = intermediateContourWidth;\\n }\\n }\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\\n dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;\\n#else\\n dFSecondary = czm_pixelRatio * secondaryLinesWidth;\\n#endif\\n\\n isSecondaryContour = (distanceToSecondaryContour < dFSecondary) && notCloseToMain;\\n }\\n\\n // \\u9AD8\\u4EAE\\u5224\\u65AD\\n bool shouldHighlight = false;\\n if(isMainContour && abs(mainContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\\n shouldHighlight = true;\\n } else if(isSecondaryContour && abs(secondaryContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\\n shouldHighlight = true;\\n }\\n\\n // \\u989C\\u8272\\u8F93\\u51FA\\n vec4 outColor;\\n if(shouldHighlight) {\\n outColor = czm_gammaCorrect(vec4(activeColor.rgb, activeColor.a));\\n } else if(isMainContour) {\\n float a = indexContourColor.a;\\n if(!indexContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(indexContourColor.rgb, a));\\n } else if(isSecondaryContour) {\\n float a = supplementaryContourColor.a;\\n if(!supplementaryContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(supplementaryContourColor.rgb, a));\\n if(isHalfInterval) {\\n float a = halfIntervalContourColor.a;\\n if(!halfIntervalContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(halfIntervalContourColor.rgb, a));\\n }\\n if(isIntermediate) {\\n float a = intermediateContourColor.a;\\n if(!intermediateContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(intermediateContourColor.rgb, a));\\n }\\n } else {\\n outColor = vec4(0.0);\\n }\\n\\n if(materialInput.height<0.0) {\\n outColor = vec4(0.0);\\n }\\n\\n material.diffuse = outColor.rgb;\\n material.alpha = outColor.a;\\n return material;\\n}\\n\";\n material = new Cesium.Material({\n fabric: {\n type: \"ElevationContour\",\n uniforms: {\n spacing: 10 * 5,\n activeColor: Cesium.Color.fromCssColorString(activeColor),\n mouseHeight: -100000,\n mousePosition: new Cesium.Cartesian3(0, 0, 0),\n secondaryLinesCount: secondaryLinesCount,\n cameraHeight: 0,\n indexContourShow: indexContourShow,\n indexContourWidth: indexContourWidth,\n indexContourColor: Cesium.Color.fromCssColorString(indexContourColor),\n intermediateContourShow: intermediateContourShow,\n intermediateContourWidth: intermediateContourWidth,\n intermediateContourColor: Cesium.Color.fromCssColorString(intermediateContourColor),\n halfIntervalContourShow: halfIntervalContourShow,\n halfIntervalContourWidth: halfIntervalContourWidth,\n halfIntervalContourColor: Cesium.Color.fromCssColorString(halfIntervalContourColor),\n supplementaryContourShow: supplementaryContourShow,\n supplementaryContourWidth: supplementaryContourWidth,\n supplementaryContourColor: Cesium.Color.fromCssColorString(supplementaryContourColor)\n }\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NvbnRvdXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NvbnRvdXIvaW5kZXguanM/MDkxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog562J6auY57q/XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gXCIuLi8uLi9PYmovRWxlbWVudC9EaWFsb2dcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBmbHlUbyB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IFlKQ29sb3JQaWNrZXIgZnJvbSBcIi4uLy4uL09iai9FbGVtZW50L3lqLWNvbG9yLXBpY2tlclwiO1xyXG5cclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcblxyXG5sZXQgX0RpYWxvZ09iamVjdCA9IG51bGw7XHJcbmxldCBtYXRlcmlhbCA9IG51bGw7XHJcbmxldCBoYW5kbGVyID0gbnVsbDtcclxubGV0IGFjdGl2ZUhlaWdodEVsbSA9IG51bGw7XHJcbmxldCB0b29sc1xyXG5sZXQgX3Nka1xyXG5sZXQgc2Vjb25kYXJ5TGluZXNDb3VudCA9IDE5XHJcbmxldCBzaG93ID0gdHJ1ZVxyXG5sZXQgZXF1YWxIZWlnaHREaXN0YW5jZSA9IDEwXHJcbmxldCBhY3RpdmVDb2xvciA9ICcjZmZkMDAwJ1xyXG5sZXQgaW5kZXhDb250b3VyU2hvdyA9IHRydWVcclxubGV0IGluZGV4Q29udG91cldpZHRoID0gMi41XHJcbmxldCBpbmRleENvbnRvdXJDb2xvciA9ICcjNDNjZjdjJ1xyXG5sZXQgaW50ZXJtZWRpYXRlQ29udG91clNob3cgPSB0cnVlXHJcbmxldCBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSAxLjhcclxubGV0IGludGVybWVkaWF0ZUNvbnRvdXJDb2xvciA9ICcjZmYwMDAwJ1xyXG5sZXQgaGFsZkludGVydmFsQ29udG91clNob3cgPSBmYWxzZVxyXG5sZXQgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gMS4wXHJcbmxldCBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSAnIzY0YjZkOSdcclxubGV0IHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IGZhbHNlXHJcbmxldCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gMS4wXHJcbmxldCBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gJyNkMDg0ZDEnXHJcbmxldCBwYXJhbURhdGEgPSB7fVxyXG5cclxuXHJcbmFjdGl2ZUhlaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbmFjdGl2ZUhlaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9taXplLWFjdGl2ZS1oZWlnaHQtZWxtJ1xyXG5hY3RpdmVIZWlnaHRFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5sZWZ0ID0gJzEwcHgnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS50b3AgPSAnMTBweCdcclxuYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLndpZHRoID0gJzEwMHB4J1xyXG4vLyBhY3RpdmVIZWlnaHRFbG0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSdcclxuYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5jb2xvciA9ICcjZmYwMDAwJ1xyXG5hY3RpdmVIZWlnaHRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBhY2NvcmRpbmdUb0NhbWVyYUhlaWdodCgpIHtcclxuICBpZiAoX3Nkaykge1xyXG4gICAgY29uc3QgY2FtZXJhID0gX3Nkay52aWV3ZXIuY2FtZXJhO1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSBjYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWM7XHJcblxyXG4gICAgLy8g6K6h566X55u45py66auY5bqm77yI55u45a+55LqO5qSt55CD6Z2i77yJXHJcbiAgICBsZXQgY2FtZXJhSGVpZ2h0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uLmhlaWdodCk7XHJcbiAgICBpZiAoY2FtZXJhSGVpZ2h0IDwgMTAwMDAwMCkge1xyXG4gICAgICBpZiAoIV9zZGsudmlld2VyLnNjZW5lLmdsb2JlLm1hdGVyaWFsICYmIHNob3cgPT09IHRydWUpIHtcclxuICAgICAgICBzaG93Q29udG91cihfc2RrKVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyAgIGlmIChjYW1lcmFIZWlnaHQgPiA0NTAwMDApIHtcclxuICAgICAgLy8gICAgIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IGZhbHNlXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2UgaWYgKHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdykge1xyXG4gICAgICAvLyAgICAgbWF0ZXJpYWwudW5pZm9ybXMuc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gdHJ1ZVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGhpZGVDb250b3VyKF9zZGspXHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhjYW1lcmFIZWlnaHQpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnREcmF3KHNkaywgc2hvd0RhdGEpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzaG93RGF0YSkge1xyXG4gICAgbGV0IHRlcnJhaW5BdmFpbGFiaWxpdHkgPSBzZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHk7XHJcbiAgICBpZiAoIXRlcnJhaW5BdmFpbGFiaWxpdHkpIHtcclxuICAgICAgcmV0dXJuICfmnKrliqDovb3lnLDlvaLmlbDmja7vvIEnXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3cgPSBzaG93RGF0YVxyXG5cclxuICBPYmplY3Qua2V5cyhwYXJhbURhdGEpLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICBtYXRlcmlhbC51bmlmb3Jtc1tpdGVtXSA9IHBhcmFtRGF0YVtpdGVtXVxyXG4gIH0pXHJcblxyXG4gIGlmIChzaG93KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICBpZiAoaGVpZ2h0ID4gMTYzNjApIHtcclxuICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljXHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICBsbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgICAgICBhbHQ6IDE2MzYwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgZmx5VG8oc2RrLCBvcHRpb25zLCAwLjUpXHJcbiAgICB9XHJcbiAgICBzaG93Q29udG91cihzZGspXHJcbiAgfSBlbHNlIHtcclxuICAgIGhpZGVDb250b3VyKHNkaylcclxuICB9XHJcbn1cclxuZnVuY3Rpb24gcmVzZXQoKSB7XHJcbiAgLy8gaWYgKGhhbmRsZXIpIHtcclxuICAvLyAgIGhhbmRsZXIuZGVzdHJveSgpXHJcbiAgLy8gfVxyXG4gIHNlY29uZGFyeUxpbmVzQ291bnQgPSAxOVxyXG4gIC8vIHNob3cgPSB0cnVlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZSA9IDEwXHJcbiAgYWN0aXZlQ29sb3IgPSAnI2ZmZDAwMCdcclxuICBpbmRleENvbnRvdXJTaG93ID0gdHJ1ZVxyXG4gIGluZGV4Q29udG91cldpZHRoID0gMi41XHJcbiAgaW5kZXhDb250b3VyQ29sb3IgPSAnIzQzY2Y3YydcclxuICBpbnRlcm1lZGlhdGVDb250b3VyU2hvdyA9IHRydWVcclxuICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSAxLjhcclxuICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSAnI2ZmMDAwMCdcclxuICBoYWxmSW50ZXJ2YWxDb250b3VyU2hvdyA9IGZhbHNlXHJcbiAgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gMS4wXHJcbiAgaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gJyM2NGI2ZDknXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gZmFsc2VcclxuICBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gMS4wXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciA9ICcjZDA4NGQxJ1xyXG59XHJcbmZ1bmN0aW9uIHNldFZhbChkYXRhKSB7XHJcbiAgc2Vjb25kYXJ5TGluZXNDb3VudCA9IGRhdGFbJ3NlY29uZGFyeUxpbmVzQ291bnQnXVxyXG4gIC8vIHNob3cgPSB0cnVlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZSA9IGRhdGFbJ2VxdWFsSGVpZ2h0RGlzdGFuY2UnXVxyXG4gIGFjdGl2ZUNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnYWN0aXZlQ29sb3InXSlcclxuICBpbmRleENvbnRvdXJTaG93ID0gZGF0YVsnaW5kZXhDb250b3VyU2hvdyddXHJcbiAgaW5kZXhDb250b3VyV2lkdGggPSBkYXRhWydpbmRleENvbnRvdXJXaWR0aCddXHJcbiAgaW5kZXhDb250b3VyQ29sb3IgPSByZ2JhRnJvbU9iamVjdChkYXRhWydpbmRleENvbnRvdXJDb2xvciddKVxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gZGF0YVsnaW50ZXJtZWRpYXRlQ29udG91clNob3cnXVxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCA9IGRhdGFbJ2ludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCddXHJcbiAgaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yJ10pXHJcbiAgaGFsZkludGVydmFsQ29udG91clNob3cgPSBkYXRhWydoYWxmSW50ZXJ2YWxDb250b3VyU2hvdyddXHJcbiAgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gZGF0YVsnaGFsZkludGVydmFsQ29udG91cldpZHRoJ11cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSByZ2JhRnJvbU9iamVjdChkYXRhWydoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3InXSlcclxuICBzdXBwbGVtZW50YXJ5Q29udG91clNob3cgPSBkYXRhWydzdXBwbGVtZW50YXJ5Q29udG91clNob3cnXVxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGggPSBkYXRhWydzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoJ11cclxuICBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciddKVxyXG59XHJcbmZ1bmN0aW9uIHJnYmFGcm9tT2JqZWN0KGNvbG9yT2JqKSB7XHJcbiAgY29uc3QgeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSA9IDEgfSA9IGNvbG9yT2JqO1xyXG4gIHJldHVybiBgcmdiYSgke3JlZCAqIDI1NX0sICR7Z3JlZW4gKiAyNTV9LCAke2JsdWUgKiAyNTV9LCAke2FscGhhfSlgO1xyXG59XHJcbmFzeW5jIGZ1bmN0aW9uIGRpYWxvZyhzZGspIHtcclxuICBfc2RrID0gc2RrXHJcblxyXG4gIGlmICghc2RrIHx8IF9EaWFsb2dPYmplY3QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoIW1hdGVyaWFsKSB7XHJcbiAgICBjcmVhdGVNYXRlcmlhbCgpXHJcbiAgfVxyXG4gIGlmICghdG9vbHMpIHtcclxuICAgIHRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICB9XHJcblxyXG4gIC8vIF9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHNkaywge30sIHtcclxuICAvLyAgIHRpdGxlOiBcIuWFqOWxgOetiemrmOe6v1wiLCBsZWZ0OiAnMTgwcHgnLFxyXG4gIC8vICAgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICBfRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG5cclxuICAvLyBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAvLyAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGNvbnRvdXInXHJcbiAgLy8gbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG5cclxuICAvLyBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29udG91cicpWzBdXHJcblxyXG4gIHNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKGFjY29yZGluZ1RvQ2FtZXJhSGVpZ2h0KVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKGFjY29yZGluZ1RvQ2FtZXJhSGVpZ2h0KVxyXG5cclxuICAvLyDmmL7npLpcclxuICAvLyBsZXQgc2hvd0J0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2hvdycpWzBdXHJcbiAgLy8gc2hvd0J0bi5jaGVja2VkID0gc2hvd1xyXG4gIC8vIGlmIChzaG93QnRuLmNoZWNrZWQpIHtcclxuICAvLyAgIGxldCBoZWlnaHQgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAvLyAgIGlmIChoZWlnaHQgPiAxNjM2MCkge1xyXG4gIC8vICAgICBsZXQgY2FydG9ncmFwaGljID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWNcclxuICAvLyAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgLy8gICAgICAgcG9zaXRpb246IHtcclxuICAvLyAgICAgICAgIGxuZzogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gIC8vICAgICAgICAgbGF0OiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKSxcclxuICAvLyAgICAgICAgIGFsdDogMTYzNjAsXHJcbiAgLy8gICAgICAgfSxcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBmbHlUbyhzZGssIG9wdGlvbnMsIDAuNSlcclxuICAvLyAgIH1cclxuICAvLyAgIHNob3dDb250b3VyKHNkaylcclxuICAvLyB9XHJcbiAgLy8gc2hvd0J0bi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gIC8vICAgaWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAvLyAgICAgc2hvdyA9IHRydWVcclxuICAvLyBsZXQgaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgLy8gaWYgKGhlaWdodCA+IDE2MzYwKSB7XHJcbiAgLy8gICBsZXQgY2FydG9ncmFwaGljID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWNcclxuICAvLyAgIGxldCBvcHRpb25zID0ge1xyXG4gIC8vICAgICBwb3NpdGlvbjoge1xyXG4gIC8vICAgICAgIGxuZzogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gIC8vICAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgLy8gICAgICAgYWx0OiAxNjM2MCxcclxuICAvLyAgICAgfSxcclxuICAvLyAgIH1cclxuICAvLyAgIGZseVRvKHNkaywgb3B0aW9ucywgMC41KVxyXG4gIC8vIH1cclxuICAvLyBzaG93Q29udG91cihzZGspXHJcbiAgLy8gfSBlbHNlIHtcclxuICAvLyBzaG93ID0gZmFsc2VcclxuICAvLyBoaWRlQ29udG91cihzZGspXHJcbiAgLy8gfVxyXG4gIC8vIH0pXHJcbiAgLy8g562J6auY6LedXHJcbiAgbGV0IGVxdWFsSGVpZ2h0RGlzdGFuY2VJbnB1dCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZXF1YWwtaGVpZ2h0LWRpc3RhbmNlJylbMF1cclxuICBlcXVhbEhlaWdodERpc3RhbmNlSW5wdXQudmFsdWUgPSBlcXVhbEhlaWdodERpc3RhbmNlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGVxdWFsSGVpZ2h0RGlzdGFuY2UgPSB2YWx1ZVxyXG4gICAgZXF1YWxIZWlnaHREaXN0YW5jZUlucHV0LnZhbHVlID0gdmFsdWVcclxuICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5zcGFjaW5nID0gZXF1YWxIZWlnaHREaXN0YW5jZSAqIDVcclxuICAgICAgcGFyYW1EYXRhLnNwYWNpbmcgPSBlcXVhbEhlaWdodERpc3RhbmNlICogNVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIC8vIOmAieS4reminOiJslxyXG4gIC8vIGxldCBhY3RpdmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAvLyAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGl2ZS1jb2xvcicpWzBdLFxyXG4gIC8vICAgc2l6ZTogXCJtaW5pXCIsXHJcbiAgLy8gICBpc0xvZzogZmFsc2UsXHJcbiAgLy8gICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAvLyAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAvLyAgIHByZWRlZmluZUNvbG9yOiB0cnVlLCAvLyDpooTlrprkuYnpopzoibJcclxuICAvLyAgIGRlZmF1bHRDb2xvcjogJyNmZmZmZmYnLFxyXG4gIC8vICAgc3VyZTogY29sb3IgPT4ge1xyXG4gIC8vICAgICBhY3RpdmVDb2xvciA9IGNvbG9yXHJcbiAgLy8gICAgIGlmIChtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSxcclxuICAvLyAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgLy8gICAgIGFjdGl2ZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgLy8gICAgIGlmIChtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH0pXHJcbiAgbGV0IGFjdGl2ZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWN0aXZlLWNvbG9yJylbMF0sXHJcbiAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICBkZWZhdWx0Q29sb3I6IGFjdGl2ZUNvbG9yLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgYWN0aXZlQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5hY3RpdmVDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYWN0aXZlQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgIGFjdGl2ZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuYWN0aXZlQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGFjdGl2ZUNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgLy8g6K6h5puy57q/5byA5YWzXHJcbiAgbGV0IGluZGV4Q29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5kZXgtY29udG91ci1zd2l0Y2gnKVswXVxyXG4gIGluZGV4Q29udG91clN3aXRjaC5jaGVja2VkID0gaW5kZXhDb250b3VyU2hvd1xyXG4gIGluZGV4Q29udG91clN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgaW5kZXhDb250b3VyU2hvdyA9IGUudGFyZ2V0LmNoZWNrZWRcclxuICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5pbmRleENvbnRvdXJTaG93ID0gaW5kZXhDb250b3VyU2hvd1xyXG4gICAgICBwYXJhbURhdGEuaW5kZXhDb250b3VyU2hvdyA9IGluZGV4Q29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOiuoeabsue6v+minOiJslxyXG4gIGxldCBpbmRleENvbnRvdXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2luZGV4LWNvbnRvdXItY29sb3InKVswXSxcclxuICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgIGRlZmF1bHRDb2xvcjogaW5kZXhDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBpbmRleENvbnRvdXJDb2xvciA9IGNvbG9yXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmluZGV4Q29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbmRleENvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaW5kZXhDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgaW5kZXhDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW5kZXhDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKVxyXG4gICAgICAgIHBhcmFtRGF0YS5pbmRleENvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaW5kZXhDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOiuoeabsue6v+WuveW6plxyXG4gIGxldCBpbmRleENvbnRvdXJXaWR0aElucHV0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbmRleC1jb250b3VyLXdpZHRoJylbMF1cclxuICBpbmRleENvbnRvdXJXaWR0aElucHV0LnZhbHVlID0gaW5kZXhDb250b3VyV2lkdGhcclxuICBpbmRleENvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGluZGV4Q29udG91cldpZHRoID0gdmFsdWVcclxuICAgIGluZGV4Q29udG91cldpZHRoSW5wdXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmluZGV4Q29udG91cldpZHRoID0gaW5kZXhDb250b3VyV2lkdGhcclxuICAgICAgcGFyYW1EYXRhLmluZGV4Q29udG91cldpZHRoID0gaW5kZXhDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDpppbmm7Lnur/lvIDlhbNcclxuICBsZXQgaW50ZXJtZWRpYXRlQ29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW50ZXJtZWRpYXRlLWNvbnRvdXItc3dpdGNoJylbMF1cclxuICBpbnRlcm1lZGlhdGVDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBpbnRlcm1lZGlhdGVDb250b3VyU2hvd1xyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJTd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gaW50ZXJtZWRpYXRlQ29udG91clNob3dcclxuICAgICAgcGFyYW1EYXRhLmludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gaW50ZXJtZWRpYXRlQ29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOmmluabsue6v+minOiJslxyXG4gIGxldCBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnRlcm1lZGlhdGUtY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5pbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGludGVybWVkaWF0ZUNvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmludGVybWVkaWF0ZUNvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDpppbmm7Lnur/lrr3luqZcclxuICBsZXQgaW50ZXJtZWRpYXRlQ29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ludGVybWVkaWF0ZS1jb250b3VyLXdpZHRoJylbMF1cclxuICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aFxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCA9IHZhbHVlXHJcbiAgICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW50ZXJtZWRpYXRlQ29udG91cldpZHRoID0gaW50ZXJtZWRpYXRlQ29udG91cldpZHRoXHJcbiAgICAgIHBhcmFtRGF0YS5pbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDpl7Tmm7Lnur/lvIDlhbNcclxuICBsZXQgaGFsZkludGVydmFsQ29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGFsZkludGVydmFsLWNvbnRvdXItc3dpdGNoJylbMF1cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBoYWxmSW50ZXJ2YWxDb250b3VyU2hvd1xyXG4gIGhhbGZJbnRlcnZhbENvbnRvdXJTd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gaGFsZkludGVydmFsQ29udG91clNob3dcclxuICAgICAgcGFyYW1EYXRhLmhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gaGFsZkludGVydmFsQ29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOmXtOabsue6v+minOiJslxyXG4gIGxldCBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoYWxmSW50ZXJ2YWwtY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5oYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGhhbGZJbnRlcnZhbENvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmhhbGZJbnRlcnZhbENvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaGFsZkludGVydmFsQ29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDpl7Tmm7Lnur/lrr3luqZcclxuICBsZXQgaGFsZkludGVydmFsQ29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hhbGZJbnRlcnZhbC1jb250b3VyLXdpZHRoJylbMF1cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aFxyXG4gIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aCA9IHZhbHVlXHJcbiAgICBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaGFsZkludGVydmFsQ29udG91cldpZHRoID0gaGFsZkludGVydmFsQ29udG91cldpZHRoXHJcbiAgICAgIHBhcmFtRGF0YS5oYWxmSW50ZXJ2YWxDb250b3VyV2lkdGggPSBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDliqnmm7Lnur/lvIDlhbNcclxuICBsZXQgc3VwcGxlbWVudGFyeUNvbnRvdXJTd2l0Y2ggPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci1zd2l0Y2gnKVswXVxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBzdXBwbGVtZW50YXJ5Q29udG91clNob3dcclxuICBzdXBwbGVtZW50YXJ5Q29udG91clN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IHN1cHBsZW1lbnRhcnlDb250b3VyU2hvd1xyXG4gICAgICBwYXJhbURhdGEuc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDliqnmm7Lnur/popzoibJcclxuICBsZXQgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciA9IGNvbG9yXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOWKqeabsue6v+WuveW6plxyXG4gIGxldCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci13aWR0aCcpWzBdXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aElucHV0LnZhbHVlID0gc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aFxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgIGxldCB2YWx1ZSA9IGluaXRJbnB1dFZhbHVlKGUpXHJcbiAgICBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gdmFsdWVcclxuICAgIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aCA9IHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhcclxuICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGggPSBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBmdW5jdGlvbiBpbml0SW5wdXRWYWx1ZShlKSB7XHJcbiAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IChlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICd1bmRlZmluZWQnICYmIGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJycgJiYgIUJvb2xlYW4oZS50YXJnZXQuZGF0YXNldC5udWxsKSkpIHtcclxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93Q29udG91cihzZGspIHtcclxuICBjb25zdCBjYW1lcmEgPSBzZGsudmlld2VyLmNhbWVyYTtcclxuICBjb25zdCBwb3NpdGlvbiA9IGNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYztcclxuICAvLyDorqHnrpfnm7jmnLrpq5jluqbvvIjnm7jlr7nkuo7mpK3nkIPpnaLvvIlcclxuICBsZXQgY2FtZXJhSGVpZ2h0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uLmhlaWdodCk7XHJcbiAgaWYgKGNhbWVyYUhlaWdodCA+IDEwMDAwMDApIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoaGFuZGxlcikge1xyXG4gICAgaGFuZGxlci5kZXN0cm95KClcclxuICB9XHJcbiAgaWYgKCFzZGsudmlld2VyLmNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b21pemUtYWN0aXZlLWhlaWdodC1lbG0nKVswXSkge1xyXG4gICAgc2RrLnZpZXdlci5jb250YWluZXIuYXBwZW5kQ2hpbGQoYWN0aXZlSGVpZ2h0RWxtKVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGsudmlld2VyLmNhbnZhc1xyXG4gIClcclxuICBoYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LmVuZFBvc2l0aW9uKVxyXG4gICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICBsZXQgdG9wID0gMFxyXG4gICAgICBsZXQgbGVmdCA9IDBcclxuICAgICAgaWYgKHNkay52aWV3ZXIgJiYgc2RrLnZpZXdlci5fZWxlbWVudCkge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgICAgICAgdG9wID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWVxyXG4gICAgICAgIGxlZnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWFxyXG4gICAgICB9XHJcbiAgICAgIGFjdGl2ZUhlaWdodEVsbS5zdHlsZS5sZWZ0ID0gbW92ZW1lbnQuZW5kUG9zaXRpb24ueCAtIDUwICsgbGVmdCArICdweCdcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLnRvcCA9IG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLSA0MCArIHRvcCArICdweCdcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgICAgIC8vIGxldCBwb3MgPSBzZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoY2FydGVzaWFuKVxyXG4gICAgICBsZXQgcG9zODQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpXHJcbiAgICAgIC8vIHBvczg0LmFsdCA9IGhlaWdodFxyXG4gICAgICBsZXQgbWFpbkNvbnRvdXJIZWlnaHQgPSBNYXRoLmZsb29yKHBvczg0LmFsdCAvIG1hdGVyaWFsLnVuaWZvcm1zLnNwYWNpbmcpICogbWF0ZXJpYWwudW5pZm9ybXMuc3BhY2luZ1xyXG4gICAgICBsZXQgZ2FwID0gcG9zODQuYWx0IC0gbWFpbkNvbnRvdXJIZWlnaHRcclxuICAgICAgbGV0IGdhcDIgPSBtYXRlcmlhbC51bmlmb3Jtcy5zcGFjaW5nIC8gKG1hdGVyaWFsLnVuaWZvcm1zLnNlY29uZGFyeUxpbmVzQ291bnQgKyAxKVxyXG4gICAgICBsZXQgYWN0aXZlSGVpZ2h0ID0gTWF0aC5mbG9vcihnYXAgLyBnYXAyKSAqIGdhcDIgKyBtYWluQ29udG91ckhlaWdodFxyXG4gICAgICBpZiAocG9zODQuYWx0IDwgMCkge1xyXG4gICAgICAgIHBvczg0LmFsdCA9IDBcclxuICAgICAgfVxyXG4gICAgICBpZiAoKHBvczg0LmFsdCAtIGFjdGl2ZUhlaWdodCkgPiBnYXAyIC8gMikge1xyXG4gICAgICAgIGFjdGl2ZUhlaWdodCA9IGFjdGl2ZUhlaWdodCArIGdhcDJcclxuICAgICAgfVxyXG4gICAgICBtYXRlcmlhbC51bmlmb3Jtcy5tb3VzZUhlaWdodCA9IHBvczg0LmFsdFxyXG4gICAgICBtYXRlcmlhbC51bmlmb3Jtcy5tb3VzZVBvc2l0aW9uID0gY2FydGVzaWFuXHJcbiAgICAgIGFjdGl2ZUhlaWdodEVsbS5pbm5lckhUTUwgPSBgJHthY3RpdmVIZWlnaHQudG9GaXhlZCgwKX1gXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSlcclxuICBzZGsudmlld2VyLnNjZW5lLmdsb2JlLm1hdGVyaWFsID0gbWF0ZXJpYWw7XHJcbn1cclxuZnVuY3Rpb24gaGlkZUNvbnRvdXIoc2RrKSB7XHJcbiAgaWYgKGhhbmRsZXIpIHtcclxuICAgIGhhbmRsZXIuZGVzdHJveSgpXHJcbiAgICBoYW5kbGVyID0gbnVsbFxyXG4gIH1cclxuICBpZiAoc2RrLnZpZXdlci5jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9taXplLWFjdGl2ZS1oZWlnaHQtZWxtJylbMF0pIHtcclxuICAgIGFjdGl2ZUhlaWdodEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICBzZGsudmlld2VyLmNvbnRhaW5lci5yZW1vdmVDaGlsZChhY3RpdmVIZWlnaHRFbG0pXHJcbiAgfVxyXG4gIHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUubWF0ZXJpYWwgPSBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVNYXRlcmlhbCgpIHtcclxuICBDZXNpdW0uTWF0ZXJpYWwuX21hdGVyaWFsQ2FjaGUuX21hdGVyaWFscy5FbGV2YXRpb25Db250b3VyLmZhYnJpYy5zb3VyY2UgPSBgXHJcbnVuaWZvcm0gdmVjNCBhY3RpdmVDb2xvcjsgLy8g6YCJ5Lit6aKc6ImyXHJcbnVuaWZvcm0gZmxvYXQgc3BhY2luZzsgLy8g562J6auY6LedXHJcblxyXG4vLyDorqHmm7Lnur9cclxudW5pZm9ybSBib29sIGluZGV4Q29udG91clNob3c7XHJcbnVuaWZvcm0gZmxvYXQgaW5kZXhDb250b3VyV2lkdGg7XHJcbnVuaWZvcm0gdmVjNCBpbmRleENvbnRvdXJDb2xvcjtcclxuLy8g6aaW5puy57q/XHJcbnVuaWZvcm0gYm9vbCBpbnRlcm1lZGlhdGVDb250b3VyU2hvdztcclxudW5pZm9ybSBmbG9hdCBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGg7XHJcbnVuaWZvcm0gdmVjNCBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3I7XHJcbi8vIOmXtOabsue6v1xyXG51bmlmb3JtIGJvb2wgaGFsZkludGVydmFsQ29udG91clNob3c7XHJcbnVuaWZvcm0gZmxvYXQgaGFsZkludGVydmFsQ29udG91cldpZHRoO1xyXG51bmlmb3JtIHZlYzQgaGFsZkludGVydmFsQ29udG91ckNvbG9yO1xyXG4vLyDliqnmm7Lnur9cclxudW5pZm9ybSBib29sIHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdztcclxudW5pZm9ybSBmbG9hdCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoO1xyXG51bmlmb3JtIHZlYzQgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvcjtcclxuXHJcbnVuaWZvcm0gZmxvYXQgbW91c2VIZWlnaHQ7XHJcblxyXG51bmlmb3JtIGZsb2F0IHNlY29uZGFyeUxpbmVzQ291bnQ7IC8vIDA95peg5qyh57q/LCAxPTHmnaHmrKHnur8sIDI9Muadoeasoee6vy4uLlxyXG5cclxuY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KVxyXG57XHJcbiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpO1xyXG5cclxuICAgIC8vIOS4u+etiemrmOe6v+iuoeeul1xyXG4gICAgZmxvYXQgZGlzdGFuY2VUb01haW5Db250b3VyID0gbW9kKG1hdGVyaWFsSW5wdXQuaGVpZ2h0LCBzcGFjaW5nKTtcclxuXHJcbiAgICAvLyDmipfplK/pvb/orqHnrpdcclxuI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKVxyXG4gICAgZmxvYXQgZHhjID0gYWJzKGRGZHgobWF0ZXJpYWxJbnB1dC5oZWlnaHQpKTtcclxuICAgIGZsb2F0IGR5YyA9IGFicyhkRmR5KG1hdGVyaWFsSW5wdXQuaGVpZ2h0KSk7XHJcbiAgICBmbG9hdCBkRk1haW4gPSBtYXgoZHhjLCBkeWMpICogY3ptX3BpeGVsUmF0aW8gKiBpbmRleENvbnRvdXJXaWR0aDtcclxuI2Vsc2VcclxuICAgIGZsb2F0IGRGTWFpbiA9IGN6bV9waXhlbFJhdGlvICogaW5kZXhDb250b3VyV2lkdGg7XHJcbiNlbmRpZlxyXG5cclxuICAgIGJvb2wgaXNNYWluQ29udG91ciA9IGRpc3RhbmNlVG9NYWluQ29udG91ciA8IGRGTWFpbjtcclxuICAgIGJvb2wgaXNTZWNvbmRhcnlDb250b3VyID0gZmFsc2U7XHJcbiAgICBmbG9hdCBkRlNlY29uZGFyeSA9IDAuMDtcclxuICAgIGZsb2F0IHNlY29uZGFyeVNwYWNpbmcgPSAwLjA7XHJcbiAgICBib29sIGlzSGFsZkludGVydmFsID0gZmFsc2U7XHJcbiAgICBib29sIGlzSW50ZXJtZWRpYXRlPSBmYWxzZTtcclxuXHJcbiAgICAvLyDorqHnrpflvZPliY3pq5jluqbmiYDlsZ7nmoTnrYnpq5jnur/pq5jluqZcclxuICAgIGZsb2F0IG1haW5Db250b3VySGVpZ2h0ID0gZmxvb3IobWF0ZXJpYWxJbnB1dC5oZWlnaHQgLyBzcGFjaW5nKSAqIHNwYWNpbmc7XHJcbiAgICBmbG9hdCBzZWNvbmRhcnlDb250b3VySGVpZ2h0ID0gZmxvb3IobWF0ZXJpYWxJbnB1dC5oZWlnaHQgLyBzcGFjaW5nICogKHNlY29uZGFyeUxpbmVzQ291bnQgKyAxLjApKSAqIHNwYWNpbmcgLyAoc2Vjb25kYXJ5TGluZXNDb3VudCArIDEuMCk7XHJcblxyXG4gICAgLy8g6K6h566X5qyh57q/5Zyo5Lik5p2h5Li7562J6auY57q/5LmL6Ze055qE55u45a+55L2N572uXHJcbiAgICBmbG9hdCByZWxhdGl2ZUhlaWdodCA9IG1hdGVyaWFsSW5wdXQuaGVpZ2h0IC0gbWFpbkNvbnRvdXJIZWlnaHQ7XHJcbiAgICBmbG9hdCBub3JtYWxpemVkUG9zaXRpb24gPSByZWxhdGl2ZUhlaWdodCAvIHNwYWNpbmc7XHJcblxyXG4gICAgLy8g6K6h566X5qyh57q/57Si5byV77yI5LuO5Li7562J6auY57q/5byA5aeL6K6h5pWw77yJXHJcbiAgICBmbG9hdCBsaW5lSW5kZXggPSBmbG9vcihub3JtYWxpemVkUG9zaXRpb24gKiAoc2Vjb25kYXJ5TGluZXNDb3VudCArIDEuMCkpO1xyXG5cclxuICAgIC8vIOWPquacieW9k+WtmOWcqOasoee6v+aXtuaJjeiuoeeul+asoee6v1xyXG4gICAgaWYoc2Vjb25kYXJ5TGluZXNDb3VudCA+IDAuMCkge1xyXG4gICAgICBmbG9hdCBzZWNvbmRhcnlMaW5lc1dpZHRoID0gc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aDtcclxuICAgICAgICBzZWNvbmRhcnlTcGFjaW5nID0gc3BhY2luZyAvIChzZWNvbmRhcnlMaW5lc0NvdW50ICsgMS4wKTtcclxuICAgICAgICBmbG9hdCBkaXN0YW5jZVRvU2Vjb25kYXJ5Q29udG91ciA9IG1vZChtYXRlcmlhbElucHV0LmhlaWdodCwgc2Vjb25kYXJ5U3BhY2luZyk7XHJcblxyXG4gICAgICAgIC8vIOehruS/neasoee6v+S4jeS8muS4juS4u+e6v+mHjeWPoFxyXG4gICAgICAgIGZsb2F0IG1pbkRpc3RhbmNlVG9NYWluID0gbWluKGRpc3RhbmNlVG9NYWluQ29udG91ciwgc3BhY2luZyAtIGRpc3RhbmNlVG9NYWluQ29udG91cik7XHJcbiAgICAgICAgYm9vbCBub3RDbG9zZVRvTWFpbiA9IG1pbkRpc3RhbmNlVG9NYWluID4gZEZNYWluICogMi4wOyAvLyAy5YCN57q/5a6957yT5YayXHJcblxyXG5cclxuICAgICAgICBpZiAobGluZUluZGV4ID4gMC4wICYmIGxpbmVJbmRleCA8IHNlY29uZGFyeUxpbmVzQ291bnQpIHtcclxuICAgICAgICAgIC8vIOS9v+eUqG1vZOWHveaVsOajgOafpeS9meaVsOaYr+WQpuaOpei/kTDvvIjogIPomZHmta7ngrnmlbDnsr7luqbpl67popjvvIlcclxuICAgICAgICAgIGlzSGFsZkludGVydmFsID0gYWJzKG1vZChsaW5lSW5kZXgsIDIuMCkpIDwgMC4wMTtcclxuICAgICAgICAgIGlmKGlzSGFsZkludGVydmFsKSB7XHJcbiAgICAgICAgICAgIHNlY29uZGFyeUxpbmVzV2lkdGggPSBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDkvb/nlKhtb2Tlh73mlbDmo4Dmn6XkvZnmlbDmmK/lkKbmjqXov5Ew77yI6ICD6JmR5rWu54K55pWw57K+5bqm6Zeu6aKY77yJXHJcbiAgICAgICAgICBpc0ludGVybWVkaWF0ZSA9IGFicyhtb2QobGluZUluZGV4LCA0LjApKSA8IDAuMDE7XHJcbiAgICAgICAgICBpZihpc0ludGVybWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBzZWNvbmRhcnlMaW5lc1dpZHRoID0gaW50ZXJtZWRpYXRlQ29udG91cldpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKVxyXG4gICAgICAgIGRGU2Vjb25kYXJ5ID0gbWF4KGR4YywgZHljKSAqIGN6bV9waXhlbFJhdGlvICogc2Vjb25kYXJ5TGluZXNXaWR0aDtcclxuI2Vsc2VcclxuICAgICAgICBkRlNlY29uZGFyeSA9IGN6bV9waXhlbFJhdGlvICogc2Vjb25kYXJ5TGluZXNXaWR0aDtcclxuI2VuZGlmXHJcblxyXG4gICAgICAgIGlzU2Vjb25kYXJ5Q29udG91ciA9IChkaXN0YW5jZVRvU2Vjb25kYXJ5Q29udG91ciA8IGRGU2Vjb25kYXJ5KSAmJiBub3RDbG9zZVRvTWFpbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDpq5jkuq7liKTmlq1cclxuICAgIGJvb2wgc2hvdWxkSGlnaGxpZ2h0ID0gZmFsc2U7XHJcbiAgICBpZihpc01haW5Db250b3VyICYmIGFicyhtYWluQ29udG91ckhlaWdodCAtIG1vdXNlSGVpZ2h0KSA8IDAuNSAqIChzcGFjaW5nLyhzZWNvbmRhcnlMaW5lc0NvdW50KzEuMCkpKSB7XHJcbiAgICAgICAgc2hvdWxkSGlnaGxpZ2h0ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZihpc1NlY29uZGFyeUNvbnRvdXIgJiYgYWJzKHNlY29uZGFyeUNvbnRvdXJIZWlnaHQgLSBtb3VzZUhlaWdodCkgPCAwLjUgKiAoc3BhY2luZy8oc2Vjb25kYXJ5TGluZXNDb3VudCsxLjApKSkge1xyXG4gICAgICAgIHNob3VsZEhpZ2hsaWdodCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6aKc6Imy6L6T5Ye6XHJcbiAgICB2ZWM0IG91dENvbG9yO1xyXG4gICAgaWYoc2hvdWxkSGlnaGxpZ2h0KSB7XHJcbiAgICAgICAgb3V0Q29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZlYzQoYWN0aXZlQ29sb3IucmdiLCBhY3RpdmVDb2xvci5hKSk7XHJcbiAgICB9IGVsc2UgaWYoaXNNYWluQ29udG91cikge1xyXG4gICAgICAgIGZsb2F0IGEgPSBpbmRleENvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgIGlmKCFpbmRleENvbnRvdXJTaG93KSB7XHJcbiAgICAgICAgICBhID0gMC4wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QodmVjNChpbmRleENvbnRvdXJDb2xvci5yZ2IsIGEpKTtcclxuICAgIH0gZWxzZSBpZihpc1NlY29uZGFyeUNvbnRvdXIpIHtcclxuICAgICAgICBmbG9hdCBhID0gc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgIGlmKCFzdXBwbGVtZW50YXJ5Q29udG91clNob3cpIHtcclxuICAgICAgICAgIGEgPSAwLjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2ZWM0KHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IucmdiLCBhKSk7XHJcbiAgICAgICAgaWYoaXNIYWxmSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIGZsb2F0IGEgPSBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IuYTtcclxuICAgICAgICAgIGlmKCFoYWxmSW50ZXJ2YWxDb250b3VyU2hvdykge1xyXG4gICAgICAgICAgICBhID0gMC4wO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3V0Q29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZlYzQoaGFsZkludGVydmFsQ29udG91ckNvbG9yLnJnYiwgYSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihpc0ludGVybWVkaWF0ZSkge1xyXG4gICAgICAgICAgZmxvYXQgYSA9IGludGVybWVkaWF0ZUNvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgICAgaWYoIWludGVybWVkaWF0ZUNvbnRvdXJTaG93KSB7XHJcbiAgICAgICAgICAgIGEgPSAwLjA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QodmVjNChpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IucmdiLCBhKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBvdXRDb2xvciA9IHZlYzQoMC4wKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihtYXRlcmlhbElucHV0LmhlaWdodDwwLjApIHtcclxuICAgICAgb3V0Q29sb3IgPSB2ZWM0KDAuMCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWF0ZXJpYWwuZGlmZnVzZSA9IG91dENvbG9yLnJnYjtcclxuICAgIG1hdGVyaWFsLmFscGhhID0gb3V0Q29sb3IuYTtcclxuICAgIHJldHVybiBtYXRlcmlhbDtcclxufVxyXG5gXHJcblxyXG4gIG1hdGVyaWFsID0gbmV3IENlc2l1bS5NYXRlcmlhbCh7XHJcbiAgICBmYWJyaWM6IHtcclxuICAgICAgdHlwZTogXCJFbGV2YXRpb25Db250b3VyXCIsXHJcbiAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgc3BhY2luZzogMTAgKiA1LFxyXG4gICAgICAgIGFjdGl2ZUNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGFjdGl2ZUNvbG9yKSxcclxuICAgICAgICBtb3VzZUhlaWdodDogLTEwMDAwMCxcclxuICAgICAgICBtb3VzZVBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMCwgMCwgMCksXHJcbiAgICAgICAgc2Vjb25kYXJ5TGluZXNDb3VudDogc2Vjb25kYXJ5TGluZXNDb3VudCxcclxuICAgICAgICBjYW1lcmFIZWlnaHQ6IDAsXHJcblxyXG4gICAgICAgIGluZGV4Q29udG91clNob3c6IGluZGV4Q29udG91clNob3csXHJcbiAgICAgICAgaW5kZXhDb250b3VyV2lkdGg6IGluZGV4Q29udG91cldpZHRoLFxyXG4gICAgICAgIGluZGV4Q29udG91ckNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKSxcclxuICAgICAgICBpbnRlcm1lZGlhdGVDb250b3VyU2hvdzogaW50ZXJtZWRpYXRlQ29udG91clNob3csXHJcbiAgICAgICAgaW50ZXJtZWRpYXRlQ29udG91cldpZHRoOiBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGgsXHJcbiAgICAgICAgaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGludGVybWVkaWF0ZUNvbnRvdXJDb2xvciksXHJcbiAgICAgICAgaGFsZkludGVydmFsQ29udG91clNob3c6IGhhbGZJbnRlcnZhbENvbnRvdXJTaG93LFxyXG4gICAgICAgIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aDogaGFsZkludGVydmFsQ29udG91cldpZHRoLFxyXG4gICAgICAgIGhhbGZJbnRlcnZhbENvbnRvdXJDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpLFxyXG4gICAgICAgIHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdzogc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93LFxyXG4gICAgICAgIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGg6IHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGgsXHJcbiAgICAgICAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yKSxcclxuICAgICAgfSxcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IHsgZGlhbG9nLCBzdGFydERyYXcsIHJlc2V0LCBzZXRWYWwgfVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOFRBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNVVBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQXdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/Contour/index.js\n"); - -/***/ }), - -/***/ "./src/Global/DTH/index.js": -/*!*********************************!*\ - !*** ./src/Global/DTH/index.js ***! - \*********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../on */ \"./src/on/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nvar DTH = /*#__PURE__*/function () {\n function DTH(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, DTH);\n this.sdk = sdk;\n this.primitives = {\n building: [],\n unit: [],\n dth: []\n };\n this.options = _objectSpread({}, options);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getHost\"])();\n this.temporaryDth = [];\n this.dth = {};\n this.PickBuildingEvent = new Cesium.Event();\n this.initEvents();\n this.activeBuilding;\n }\n\n /**\r\n * @description 注册点击的事件回调\r\n * @memberOf DTH\r\n * */\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(DTH, [{\n key: \"PickCallback\",\n value: function PickCallback(that, cb) {\n this.PickBuildingEvent.addEventListener(cb, that);\n }\n\n //场景事件\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas).setInputAction(function (e) {\n if (YJ.Measure.GetMeasureStatus()) {\n return;\n }\n if (!_this2.isActivate) return;\n var pickFeature = _this2.sdk.viewer.scene.pick(e.position);\n if (pickFeature) {\n //点击了已有的分户单体化\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && (pickFeature.id.type == \"yj-dth-dth\" || pickFeature.id.type == \"yj-dth-highlight\")) {\n _this2.getIDBypickFeature(pickFeature); //处理点击到的楼层\n return;\n }\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type == \"yj-dth-unit\") {\n _this2.highlightPrimitive && _this2.sdk.viewer.scene.primitives.remove(_this2.highlightPrimitive);\n _this2.handlePickEvent(pickFeature.id);\n return;\n }\n\n // if (pickFeature.id && pickFeature.id.type === 'yj-dth-highlight') {\n // return;\n // }\n }\n _this2.highlightPrimitive && _this2.sdk.viewer.scene.primitives.remove(_this2.highlightPrimitive);\n var position = _this2.sdk.viewer.scene.pickPosition(e.position); //屏幕坐标转为笛卡尔空间坐标\n if (!position) return;\n var c = Cesium.Cartographic.fromCartesian(position); //笛卡尔坐标转为经纬度(弧度)\n var point = [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude)]; //转为经纬度点\n _this2.queryByPoint(point, c.height);\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n var coverLabelEntity = this.sdk.viewer.entities.getOrCreateEntity('yj-dth-cover-label');\n coverLabelEntity.show = false;\n // this.sdk.viewer.entities.add({\n // position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),\n // label: {\n // text: \"Philadelphia\",\n // font: \"24px Helvetica\",\n // fillColor: Cesium.Color.SKYBLUE,\n // outlineColor: Cesium.Color.BLACK,\n // outlineWidth: 2,\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // },\n // });\n var lastPickTime = 0;\n var _this = this;\n var timeoutEvent;\n new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas).setInputAction(function (movement) {\n if (YJ.Measure.GetMeasureStatus()) {\n return;\n }\n try {\n var now = Date.now();\n if (now - lastPickTime < 100) {\n clearTimeout(timeoutEvent);\n timeoutEvent = setTimeout(function () {\n pick(movement);\n }, 100);\n return;\n }\n clearTimeout(timeoutEvent);\n lastPickTime = now;\n pick(movement);\n } catch (error) {}\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n function pick(e) {\n var pickFeature = _this.sdk.viewer.scene.pick(e.endPosition);\n if (pickFeature) {\n var labelText = '';\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && (pickFeature.id.type === \"yj-dth-dth\" || pickFeature.id.type === \"yj-dth-highlight\")) {\n labelText = pickFeature.id.build_info.name + ' - ' + pickFeature.id.unit_info.name + ' - ' + pickFeature.id.room_num;\n } else if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type === \"yj-dth-unit\") {\n if (pickFeature.id.build_info.name) {\n labelText = pickFeature.id.build_info.name + ' - ' + pickFeature.id.name;\n }\n } else if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type === \"yj-dth-build\") {\n if (pickFeature.id.name) {\n labelText = pickFeature.id.name;\n }\n } else if (pickFeature.primitive && pickFeature.primitive.id && pickFeature.primitive.id.id && pickFeature.primitive.id.id === 'yj-dth-cover-label') {\n coverLabelEntity.position = _this.sdk.viewer.scene.pickPosition(e.endPosition);\n return;\n } else {\n coverLabelEntity.show = false;\n return;\n }\n if (labelText) {\n coverLabelEntity.position = _this.sdk.viewer.scene.pickPosition(e.endPosition);\n coverLabelEntity.label = new Cesium.LabelGraphics({\n text: labelText,\n font: \"20px Helvetica\",\n pixelOffset: {\n x: 0,\n y: -30\n },\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 1,\n showBackground: true,\n backgroundColor: Cesium.Color.fromCssColorString('#000000').withAlpha(0.8),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n });\n coverLabelEntity.show = true;\n }\n }\n }\n }\n\n /*根据用户信息查询单体化*/\n }, {\n key: \"queryByUserInfo\",\n value: function queryByUserInfo(data) {\n this.queryByPoint([data.position.lng, data.position.lat], data.position.alt, data.id);\n }\n\n //点查询 点击查询是查询分层的数据\n }, {\n key: \"queryByPoint\",\n value: function () {\n var _queryByPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(point) {\n var url, response, data;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) {\n url = this.options.host + '/api/v1/dth/build/query_by_point';\n } else {\n url = this.options.host + '/yjearth4.0/api/v1/dth/build/query_by_point';\n }\n url += '?point=' + JSON.stringify({\n 'lng': point[0],\n 'lat': point[1]\n });\n _context.next = 5;\n return fetch(url, {\n method: 'get',\n // body: JSON.stringify({point: {'lng': point[0],'lat': point[1]}}),\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])()\n }\n });\n case 5:\n response = _context.sent;\n if (!(response.status === 200)) {\n _context.next = 11;\n break;\n }\n _context.next = 9;\n return response.json();\n case 9:\n data = _context.sent;\n if (data.code === 200 || data.code === 0) {\n this.processQueryByPointResults(data.data);\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: data.msg || data.message,\n type: 'warning',\n duration: 1500\n });\n }\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function queryByPoint(_x) {\n return _queryByPoint.apply(this, arguments);\n }\n return queryByPoint;\n }() // 处理查询结果\n }, {\n key: \"processQueryByPointResults\",\n value: function () {\n var _processQueryByPointResults = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2(data, isflyto) {\n var offset,\n range,\n i,\n _i,\n _i2,\n primitivesData,\n pickFeature,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n offset = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {\n heading: 0.0,\n pitch: -90.0,\n roll: 0.0\n };\n data.build_info && this.handlePickEvent(data);\n this.clearAllDthPrimitive();\n this.clearAllUnitPrimitive();\n if (this.activeBuilding) {\n this.clearBuildingPrimitive(this.activeBuilding);\n this.activeBuilding = null;\n }\n if (!data.build_info) {\n _context2.next = 26;\n break;\n }\n range = JSON.parse(data.build_info.range);\n if (data.dan_yuan.length > 0) {\n for (i = 0; i < data.dan_yuan.length; i++) {\n if (data.dan_yuan[i].children.length > 0) {\n this.addDthPrimitive(data.dan_yuan[i].children, data.build_info, data.dan_yuan[i]);\n } else {\n this.addUnitPrimitive([data.dan_yuan[i]], data.build_info, data.dan_yuan[i]);\n }\n }\n } else {\n this.activeBuilding = data.build_info.ID || data.build_info.id;\n this.addBuildingPrimitive([data.build_info]);\n }\n if (!isflyto) {\n _context2.next = 26;\n break;\n }\n if (data.info && data.info.dan_yuan) {\n range = JSON.parse(data.info.dan_yuan.range);\n }\n if (!(data.info && data.info.hu)) {\n _context2.next = 25;\n break;\n }\n range = JSON.parse(data.info.hu.range);\n for (_i = 0; _i < range.length; _i++) {\n range[_i].alt = data.info.hu.bottom;\n }\n _i2 = 0;\n case 14:\n if (!(_i2 < this.primitives.dth.length)) {\n _context2.next = 25;\n break;\n }\n _context2.next = 17;\n return this.primitives.dth[_i2].readyPromise;\n case 17:\n primitivesData = this.primitives.dth[_i2]._primitiveOptions.geometryInstances[0].id;\n if (!(primitivesData.ID === data.info.hu.ID && primitivesData.room_num === data.info.hu.room_num)) {\n _context2.next = 22;\n break;\n }\n pickFeature = {\n id: _objectSpread(_objectSpread({}, data.info.hu), {}, {\n build_info: _objectSpread({}, data.build_info),\n unit_info: data.info.dan_yuan\n }),\n primitive: this.primitives.dth[_i2]\n };\n this.getIDBypickFeature(pickFeature);\n return _context2.abrupt(\"break\", 25);\n case 22:\n _i2++;\n _context2.next = 14;\n break;\n case 25:\n this.flyTo(range, offset);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function processQueryByPointResults(_x2, _x3) {\n return _processQueryByPointResults.apply(this, arguments);\n }\n return processQueryByPointResults;\n }() // 添加房屋Primitive\n }, {\n key: \"addBuildingPrimitive\",\n value: function () {\n var _addBuildingPrimitive = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3(array) {\n var i, fromDegreesArray, extrudedHeight, positions, m, polygonGeometry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n for (i = 0; i < array.length; i++) {\n fromDegreesArray = [];\n extrudedHeight = 0;\n positions = JSON.parse(array[i].range);\n for (m = 0; m < positions.length; m++) {\n if (extrudedHeight < positions[m].alt) {\n extrudedHeight = positions[m].alt;\n }\n fromDegreesArray.push(positions[m].lng, positions[m].lat, 0);\n }\n polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n // perPositionHeight: true, //使用z坐标 否则高度从0开始\n extrudedHeight: 100000000 //拉伸高度\n });\n this.primitives.building.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread({\n type: 'yj-dth-build'\n }, array[i]),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(255, 235, 59, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n }\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function addBuildingPrimitive(_x4) {\n return _addBuildingPrimitive.apply(this, arguments);\n }\n return addBuildingPrimitive;\n }() // 根据id删除房屋Primitive\n }, {\n key: \"clearBuildingPrimitive\",\n value: function clearBuildingPrimitive(id) {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n if (id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.building[i]);\n this.primitives.building.splice(i, 1);\n break;\n }\n }\n }\n // 删除全部房屋Primitive\n }, {\n key: \"clearAllBuildingPrimitive\",\n value: function clearAllBuildingPrimitive() {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.building[i]);\n }\n this.primitives.building = [];\n }\n\n // 添加单元Primitive\n }, {\n key: \"addUnitPrimitive\",\n value: function () {\n var _addUnitPrimitive = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee4(array, build_info, unit_info) {\n var i, fromDegreesArray, extrudedHeight, positions, m, polygonGeometry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n for (i = 0; i < array.length; i++) {\n fromDegreesArray = [];\n extrudedHeight = 0;\n positions = JSON.parse(array[i].range);\n for (m = 0; m < positions.length; m++) {\n if (extrudedHeight < positions[m].alt) {\n extrudedHeight = positions[m].alt;\n }\n fromDegreesArray.push(positions[m].lng, positions[m].lat, 0);\n }\n polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n // perPositionHeight: true, //使用z坐标 否则高度从0开始\n extrudedHeight: 100000000 //拉伸高度\n });\n this.primitives.unit.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({\n type: 'yj-dth-unit'\n }, array[i]), {}, {\n build_info: _objectSpread({}, build_info),\n unit_info: _objectSpread({}, unit_info)\n }),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(255, 235, 59, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n this.primitives.unit.push(this.sdk.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: new Cesium.GroundPolylineGeometry({\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n width: 2.0\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('#00ff0a').withAlpha(0.8))\n }\n }),\n appearance: new Cesium.PolylineColorAppearance()\n })));\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function addUnitPrimitive(_x5, _x6, _x7) {\n return _addUnitPrimitive.apply(this, arguments);\n }\n return addUnitPrimitive;\n }() // 根据id删除单元Primitive\n }, {\n key: \"clearUnitPrimitive\",\n value: function clearUnitPrimitive(id) {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n if (id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.unit[i]);\n this.primitives.unit.splice(i, 1);\n break;\n }\n }\n }\n\n // 删除全部单元Primitive\n }, {\n key: \"clearAllUnitPrimitive\",\n value: function clearAllUnitPrimitive() {\n for (var i = this.primitives.unit.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.unit[i]);\n }\n this.primitives.unit = [];\n }\n\n // 添加单体化Primitive\n }, {\n key: \"addDthPrimitive\",\n value: function addDthPrimitive(array, build_info, unit_info) {\n for (var i = 0; i < array.length; i++) {\n var positions = JSON.parse(array[i].range);\n var fromDegreesArray = [];\n for (var m = 0; m < positions.length; m++) {\n fromDegreesArray.push(positions[m].lng, positions[m].lat, array[i].bottom + 0.3);\n }\n var polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n perPositionHeight: true,\n //使用z坐标 否则高度从0开始\n extrudedHeight: array[i].height + array[i].bottom //拉伸高度\n });\n var polygonGeometryBorder = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n perPositionHeight: true,\n //使用z坐标 否则高度从0开始\n extrudedHeight: array[i].bottom //拉伸高度\n });\n this.primitives.dth.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({\n type: 'yj-dth-dth'\n }, array[i]), {}, {\n build_info: _objectSpread({}, build_info),\n unit_info: _objectSpread({}, unit_info)\n }),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(0, 64, 255, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n this.primitives.dth.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread({\n type: 'yj-dth-dth-border'\n }, array[i]),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometryBorder),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(0, 0, 0, 1)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n }\n }\n // 根据id删除单体化Primitive\n }, {\n key: \"clearDthPrimitive\",\n value: function clearDthPrimitive(id) {\n for (var i = this.primitives.dth.length - 1; i >= 0; i--) {\n if (id === this.primitives.dth[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.dth[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.dth[i]);\n this.primitives.dth.splice(i, 1);\n }\n }\n }\n\n // 删除全部单体化Primitive\n }, {\n key: \"clearAllDthPrimitive\",\n value: function clearAllDthPrimitive() {\n this.highlightPrimitive && this.sdk.viewer.scene.primitives.remove(this.highlightPrimitive);\n for (var i = this.primitives.dth.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.dth[i]);\n }\n this.primitives.dth = [];\n }\n }, {\n key: \"getIDBypickFeature\",\n value: function getIDBypickFeature(pickFeature) {\n //恢复上一个贴对象面显示\n if (this.clickHighlightPrimitive) {\n this.clickHighlightPrimitive.show = true;\n }\n this.highlightPrimitive && this.sdk.viewer.scene.primitives.remove(this.highlightPrimitive);\n this.highlightPrimitive = this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({}, pickFeature.id), {}, {\n type: 'yj-dth-highlight'\n }),\n geometry: pickFeature.primitive._primitiveOptions.geometryInstances[0].geometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('#ff9800').withAlpha(0.8)),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n }));\n this.highlightPrimitive.readyPromise.then(function () {\n //设置当前点击的贴对象面不显示\n pickFeature.primitive.show = false;\n });\n this.clickHighlightPrimitive = pickFeature.primitive;\n var range = pickFeature.id.range;\n if (typeof pickFeature.id.range === 'string') {\n range = JSON.parse(pickFeature.id.range);\n }\n this.getHilightArea(range);\n this.handlePickEvent(pickFeature.id);\n }\n\n //处理点击事件\n }, {\n key: \"handlePickEvent\",\n value: function handlePickEvent(id) {\n this.PickBuildingEvent.raiseEvent(id); //触发选中事件 通知界面更新\n }\n }, {\n key: \"getHilightArea\",\n value: function getHilightArea(points) {\n var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var arr = [];\n points.forEach(function (point) {\n arr.push([point.lng, point.lat]);\n });\n arr.push(arr[0]);\n var poly = turf.polygon([arr]);\n var buffered = turf.buffer(poly, Number(radius) / 1000);\n return buffered.geometry.coordinates;\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee5(positions) {\n var offset,\n tools,\n height,\n positionArray,\n i,\n a,\n BoundingSphere,\n _args5 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n offset = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {\n heading: 0.0,\n pitch: -90.0,\n roll: 0.0\n };\n tools = new YJ.Tools(this.sdk);\n height = 0;\n positionArray = [];\n i = 0;\n case 5:\n if (!(i < positions.length)) {\n _context5.next = 18;\n break;\n }\n if (!positions[i].alt) {\n _context5.next = 10;\n break;\n }\n height = positions[i].alt;\n _context5.next = 13;\n break;\n case 10:\n _context5.next = 12;\n return tools.getClampToHeight(positions[i]);\n case 12:\n height = _context5.sent;\n case 13:\n a = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 15:\n i++;\n _context5.next = 5;\n break;\n case 18:\n _context5.next = 20;\n return Cesium.BoundingSphere.fromVertices(positionArray);\n case 20:\n BoundingSphere = _context5.sent;\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(offset.heading || 0),\n pitch: Cesium.Math.toRadians(offset.pitch || offset.pitch === 0 ? offset.pitch : -90),\n roll: Cesium.Math.toRadians(offset.roll || 0)\n }\n });\n case 22:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function flyTo(_x8) {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"activate\",\n value: function activate() {\n this.isActivate = true;\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n this.isActivate = false;\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (DTH);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0RUSC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvRFRIL2luZGV4LmpzPzUzZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0SG9zdCwgZ2V0VG9rZW4gfSBmcm9tIFwiLi4vLi4vb25cIjtcclxuY2xhc3MgRFRIIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMucHJpbWl0aXZlcyA9IHtcclxuICAgICAgYnVpbGRpbmc6IFtdLFxyXG4gICAgICB1bml0OiBbXSxcclxuICAgICAgZHRoOiBbXVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB0aGlzLnRlbXBvcmFyeUR0aCA9IFtdXHJcbiAgICB0aGlzLmR0aCA9IHt9XHJcbiAgICB0aGlzLlBpY2tCdWlsZGluZ0V2ZW50ID0gbmV3IENlc2l1bS5FdmVudCgpO1xyXG4gICAgdGhpcy5pbml0RXZlbnRzKClcclxuICAgIHRoaXMuYWN0aXZlQnVpbGRpbmdcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDms6jlhozngrnlh7vnmoTkuovku7blm57osINcclxuICAgKiBAbWVtYmVyT2YgRFRIXHJcbiAgICogKi9cclxuICBQaWNrQ2FsbGJhY2sodGhhdCwgY2IpIHtcclxuICAgIHRoaXMuUGlja0J1aWxkaW5nRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgY2IsXHJcbiAgICAgIHRoYXRcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8v5Zy65pmv5LqL5Lu2XHJcbiAgaW5pdEV2ZW50cygpIHtcclxuICAgIG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIodGhpcy5zZGsudmlld2VyLnNjZW5lLmNhbnZhcykuc2V0SW5wdXRBY3Rpb24oKChlKSA9PiB7XHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2YXRlKSByZXR1cm47XHJcbiAgICAgIGxldCBwaWNrRmVhdHVyZSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKGUucG9zaXRpb24pO1xyXG4gICAgICBpZiAocGlja0ZlYXR1cmUpIHtcclxuICAgICAgICAvL+eCueWHu+S6huW3suacieeahOWIhuaIt+WNleS9k+WMllxyXG4gICAgICAgIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIChwaWNrRmVhdHVyZS5pZC50eXBlID09IFwieWotZHRoLWR0aFwiIHx8IHBpY2tGZWF0dXJlLmlkLnR5cGUgPT0gXCJ5ai1kdGgtaGlnaGxpZ2h0XCIpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldElEQnlwaWNrRmVhdHVyZShwaWNrRmVhdHVyZSk7IC8v5aSE55CG54K55Ye75Yiw55qE5qW85bGCXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIHBpY2tGZWF0dXJlLmlkLnR5cGUgPT0gXCJ5ai1kdGgtdW5pdFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSAmJiB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5oaWdobGlnaHRQcmltaXRpdmUpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVBpY2tFdmVudChwaWNrRmVhdHVyZS5pZClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmIChwaWNrRmVhdHVyZS5pZCAmJiBwaWNrRmVhdHVyZS5pZC50eXBlID09PSAneWotZHRoLWhpZ2hsaWdodCcpIHtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlICYmIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSlcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihlLnBvc2l0aW9uKTsgLy/lsY/luZXlnZDmoIfovazkuLrnrJvljaHlsJTnqbrpl7TlnZDmoIdcclxuICAgICAgaWYgKCFwb3NpdGlvbikgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9zaXRpb24pOyAvL+esm+WNoeWwlOWdkOagh+i9rOS4uue7j+e6rOW6pu+8iOW8p+W6pu+8iVxyXG4gICAgICBsZXQgcG9pbnQgPSBbQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGMubG9uZ2l0dWRlKSwgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGMubGF0aXR1ZGUpXTsgLy/ovazkuLrnu4/nuqzluqbngrlcclxuICAgICAgdGhpcy5xdWVyeUJ5UG9pbnQocG9pbnQsIGMuaGVpZ2h0KTtcclxuICAgIH0pLCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSyk7XHJcblxyXG4gICAgbGV0IGNvdmVyTGFiZWxFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuZ2V0T3JDcmVhdGVFbnRpdHkoJ3lqLWR0aC1jb3Zlci1sYWJlbCcpXHJcbiAgICBjb3ZlckxhYmVsRW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgLy8gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAvLyAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygtNzUuMTY0MTY2NywgMzkuOTUyMjIyMiksXHJcbiAgICAvLyAgIGxhYmVsOiB7XHJcbiAgICAvLyAgICAgdGV4dDogXCJQaGlsYWRlbHBoaWFcIixcclxuICAgIC8vICAgICBmb250OiBcIjI0cHggSGVsdmV0aWNhXCIsXHJcbiAgICAvLyAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuU0tZQkxVRSxcclxuICAgIC8vICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5CTEFDSyxcclxuICAgIC8vICAgICBvdXRsaW5lV2lkdGg6IDIsXHJcbiAgICAvLyAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyB9KTtcclxuICAgIGxldCBsYXN0UGlja1RpbWUgPSAwO1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgbGV0IHRpbWVvdXRFdmVudFxyXG4gICAgbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcih0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FudmFzKS5zZXRJbnB1dEFjdGlvbigoKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobm93IC0gbGFzdFBpY2tUaW1lIDwgMTAwKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEV2ZW50KVxyXG4gICAgICAgICAgdGltZW91dEV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHBpY2sobW92ZW1lbnQpXHJcbiAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0RXZlbnQpXHJcbiAgICAgICAgbGFzdFBpY2tUaW1lID0gbm93O1xyXG4gICAgICAgIHBpY2sobW92ZW1lbnQpXHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIH1cclxuICAgIH0pLCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbiAgICBmdW5jdGlvbiBwaWNrKGUpIHtcclxuICAgICAgbGV0IHBpY2tGZWF0dXJlID0gX3RoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKGUuZW5kUG9zaXRpb24pO1xyXG4gICAgICBpZiAocGlja0ZlYXR1cmUpIHtcclxuICAgICAgICBsZXQgbGFiZWxUZXh0ID0gJydcclxuICAgICAgICBpZiAocGlja0ZlYXR1cmUucHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZSBpbnN0YW5jZW9mIENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5pZCAmJiAocGlja0ZlYXR1cmUuaWQudHlwZSA9PT0gXCJ5ai1kdGgtZHRoXCIgfHwgcGlja0ZlYXR1cmUuaWQudHlwZSA9PT0gXCJ5ai1kdGgtaGlnaGxpZ2h0XCIpKSB7XHJcbiAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5idWlsZF9pbmZvLm5hbWUgKyAnIC0gJyArIHBpY2tGZWF0dXJlLmlkLnVuaXRfaW5mby5uYW1lICsgJyAtICcgKyBwaWNrRmVhdHVyZS5pZC5yb29tX251bVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIHBpY2tGZWF0dXJlLmlkLnR5cGUgPT09IFwieWotZHRoLXVuaXRcIikge1xyXG4gICAgICAgICAgaWYgKHBpY2tGZWF0dXJlLmlkLmJ1aWxkX2luZm8ubmFtZSkge1xyXG4gICAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5idWlsZF9pbmZvLm5hbWUgKyAnIC0gJyArIHBpY2tGZWF0dXJlLmlkLm5hbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGlja0ZlYXR1cmUucHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZSBpbnN0YW5jZW9mIENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5pZCAmJiBwaWNrRmVhdHVyZS5pZC50eXBlID09PSBcInlqLWR0aC1idWlsZFwiKSB7XHJcbiAgICAgICAgICBpZiAocGlja0ZlYXR1cmUuaWQubmFtZSkge1xyXG4gICAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5uYW1lXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBpY2tGZWF0dXJlLnByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5wcmltaXRpdmUuaWQgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlLmlkLmlkICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZS5pZC5pZCA9PT0gJ3lqLWR0aC1jb3Zlci1sYWJlbCcpIHtcclxuICAgICAgICAgIGNvdmVyTGFiZWxFbnRpdHkucG9zaXRpb24gPSBfdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihlLmVuZFBvc2l0aW9uKVxyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxhYmVsVGV4dCkge1xyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5wb3NpdGlvbiA9IF90aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKGUuZW5kUG9zaXRpb24pXHJcbiAgICAgICAgICBjb3ZlckxhYmVsRW50aXR5LmxhYmVsID0gbmV3IENlc2l1bS5MYWJlbEdyYXBoaWNzKHtcclxuICAgICAgICAgICAgdGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICBmb250OiBcIjIwcHggSGVsdmV0aWNhXCIsXHJcbiAgICAgICAgICAgIHBpeGVsT2Zmc2V0OiB7IHg6IDAsIHk6IC0zMCB9LFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmZmYnKSxcclxuICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMSxcclxuICAgICAgICAgICAgc2hvd0JhY2tncm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwMDAwMCcpLndpdGhBbHBoYSgwLjgpLFxyXG4gICAgICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyrmoLnmja7nlKjmiLfkv6Hmga/mn6Xor6LljZXkvZPljJYqL1xyXG4gIHF1ZXJ5QnlVc2VySW5mbyhkYXRhKSB7XHJcbiAgICB0aGlzLnF1ZXJ5QnlQb2ludChbZGF0YS5wb3NpdGlvbi5sbmcsIGRhdGEucG9zaXRpb24ubGF0XSwgZGF0YS5wb3NpdGlvbi5hbHQsIGRhdGEuaWQpXHJcbiAgfVxyXG5cclxuICAvL+eCueafpeivoiAg54K55Ye75p+l6K+i5piv5p+l6K+i5YiG5bGC55qE5pWw5o2uXHJcbiAgYXN5bmMgcXVlcnlCeVBvaW50KHBvaW50KSB7XHJcbiAgICBsZXQgdXJsID0gXCJcIlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSkge1xyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcvYXBpL3YxL2R0aC9idWlsZC9xdWVyeV9ieV9wb2ludCdcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcveWplYXJ0aDQuMC9hcGkvdjEvZHRoL2J1aWxkL3F1ZXJ5X2J5X3BvaW50J1xyXG4gICAgfVxyXG4gICAgdXJsICs9ICc/cG9pbnQ9JyArIEpTT04uc3RyaW5naWZ5KHsgJ2xuZyc6IHBvaW50WzBdLCAnbGF0JzogcG9pbnRbMV0gfSlcclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICAvLyBib2R5OiBKU09OLnN0cmluZ2lmeSh7cG9pbnQ6IHsnbG5nJzogcG9pbnRbMF0sJ2xhdCc6IHBvaW50WzFdfX0pLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgZ2V0VG9rZW4oKSxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxyXG4gICAgICBpZiAoZGF0YS5jb2RlID09PSAyMDAgfHwgZGF0YS5jb2RlID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzUXVlcnlCeVBvaW50UmVzdWx0cyhkYXRhLmRhdGEpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICBtZXNzYWdlOiBkYXRhLm1zZyB8fCBkYXRhLm1lc3NhZ2UsXHJcbiAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDlpITnkIbmn6Xor6Lnu5PmnpxcclxuICBhc3luYyBwcm9jZXNzUXVlcnlCeVBvaW50UmVzdWx0cyhkYXRhLCBpc2ZseXRvLCBvZmZzZXQgPSB7IGhlYWRpbmc6IDAuMCwgcGl0Y2g6IC05MC4wLCByb2xsOiAwLjAgfSkge1xyXG4gICAgZGF0YS5idWlsZF9pbmZvICYmIHRoaXMuaGFuZGxlUGlja0V2ZW50KGRhdGEpXHJcbiAgICBsZXQgcmFuZ2VcclxuICAgIHRoaXMuY2xlYXJBbGxEdGhQcmltaXRpdmUoKVxyXG4gICAgdGhpcy5jbGVhckFsbFVuaXRQcmltaXRpdmUoKVxyXG4gICAgaWYgKHRoaXMuYWN0aXZlQnVpbGRpbmcpIHtcclxuICAgICAgdGhpcy5jbGVhckJ1aWxkaW5nUHJpbWl0aXZlKHRoaXMuYWN0aXZlQnVpbGRpbmcpXHJcbiAgICAgIHRoaXMuYWN0aXZlQnVpbGRpbmcgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuYnVpbGRfaW5mbykge1xyXG4gICAgICByYW5nZSA9IEpTT04ucGFyc2UoZGF0YS5idWlsZF9pbmZvLnJhbmdlKVxyXG4gICAgICBpZiAoZGF0YS5kYW5feXVhbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmRhbl95dWFuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5kYW5feXVhbltpXS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRHRoUHJpbWl0aXZlKGRhdGEuZGFuX3l1YW5baV0uY2hpbGRyZW4sIGRhdGEuYnVpbGRfaW5mbywgZGF0YS5kYW5feXVhbltpXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFVuaXRQcmltaXRpdmUoW2RhdGEuZGFuX3l1YW5baV1dLCBkYXRhLmJ1aWxkX2luZm8sIGRhdGEuZGFuX3l1YW5baV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQnVpbGRpbmcgPSBkYXRhLmJ1aWxkX2luZm8uSUQgfHwgZGF0YS5idWlsZF9pbmZvLmlkXHJcbiAgICAgICAgdGhpcy5hZGRCdWlsZGluZ1ByaW1pdGl2ZShbZGF0YS5idWlsZF9pbmZvXSlcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNmbHl0bykge1xyXG4gICAgICAgIGlmIChkYXRhLmluZm8gJiYgZGF0YS5pbmZvLmRhbl95dWFuKSB7XHJcbiAgICAgICAgICByYW5nZSA9IEpTT04ucGFyc2UoZGF0YS5pbmZvLmRhbl95dWFuLnJhbmdlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5pbmZvICYmIGRhdGEuaW5mby5odSkge1xyXG4gICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKGRhdGEuaW5mby5odS5yYW5nZSlcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmFuZ2VbaV0uYWx0ID0gZGF0YS5pbmZvLmh1LmJvdHRvbVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByaW1pdGl2ZXMuZHRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJpbWl0aXZlcy5kdGhbaV0ucmVhZHlQcm9taXNlXHJcbiAgICAgICAgICAgIGxldCBwcmltaXRpdmVzRGF0YSA9IHRoaXMucHJpbWl0aXZlcy5kdGhbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWRcclxuICAgICAgICAgICAgaWYgKHByaW1pdGl2ZXNEYXRhLklEID09PSBkYXRhLmluZm8uaHUuSUQgJiYgcHJpbWl0aXZlc0RhdGEucm9vbV9udW0gPT09IGRhdGEuaW5mby5odS5yb29tX251bSkge1xyXG4gICAgICAgICAgICAgIGxldCBwaWNrRmVhdHVyZSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7IC4uLmRhdGEuaW5mby5odSwgYnVpbGRfaW5mbzogeyAuLi5kYXRhLmJ1aWxkX2luZm8gfSwgdW5pdF9pbmZvOiBkYXRhLmluZm8uZGFuX3l1YW4gfSxcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogdGhpcy5wcmltaXRpdmVzLmR0aFtpXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmdldElEQnlwaWNrRmVhdHVyZShwaWNrRmVhdHVyZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmx5VG8ocmFuZ2UsIG9mZnNldClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5re75Yqg5oi/5bGLUHJpbWl0aXZlXHJcbiAgYXN5bmMgYWRkQnVpbGRpbmdQcmltaXRpdmUoYXJyYXkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSAwXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKGFycmF5W2ldLnJhbmdlKVxyXG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIGlmIChleHRydWRlZEhlaWdodCA8IHBvc2l0aW9uc1ttXS5hbHQpIHtcclxuICAgICAgICAgIGV4dHJ1ZGVkSGVpZ2h0ID0gcG9zaXRpb25zW21dLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgMClcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5ID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogMTAwMDAwMDAwLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLmJ1aWxkaW5nLnB1c2godGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2xhc3NpZmljYXRpb25QcmltaXRpdmUoe1xyXG4gICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3lqLWR0aC1idWlsZCcsXHJcbiAgICAgICAgICAgICAgLi4uYXJyYXlbaV0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdlb21ldHJ5OiBDZXNpdW0uUG9seWdvbkdlb21ldHJ5LmNyZWF0ZUdlb21ldHJ5KHBvbHlnb25HZW9tZXRyeSksXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICAgICAgICBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCdyZ2IoMjU1LCAyMzUsIDU5LCAwLjQpJylcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHNob3c6IG5ldyBDZXNpdW0uU2hvd0dlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUodHJ1ZSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkNFU0lVTV8zRF9USUxFLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmoLnmja5pZOWIoOmZpOaIv+Wxi1ByaW1pdGl2ZVxyXG4gIGNsZWFyQnVpbGRpbmdQcmltaXRpdmUoaWQpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWQuSUQgfHwgaWQgPT09IHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXS5fcHJpbWl0aXZlT3B0aW9ucy5nZW9tZXRyeUluc3RhbmNlc1swXS5pZC5pZCkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0pXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVzLmJ1aWxkaW5nLnNwbGljZShpLCAxKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy8g5Yig6Zmk5YWo6YOo5oi/5bGLUHJpbWl0aXZlXHJcbiAgY2xlYXJBbGxCdWlsZGluZ1ByaW1pdGl2ZSgpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMucHJpbWl0aXZlcy5idWlsZGluZyA9IFtdXHJcbiAgfVxyXG5cclxuICAvLyDmt7vliqDljZXlhYNQcmltaXRpdmVcclxuICBhc3luYyBhZGRVbml0UHJpbWl0aXZlKGFycmF5LCBidWlsZF9pbmZvLCB1bml0X2luZm8pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSAwXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKGFycmF5W2ldLnJhbmdlKVxyXG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIGlmIChleHRydWRlZEhlaWdodCA8IHBvc2l0aW9uc1ttXS5hbHQpIHtcclxuICAgICAgICAgIGV4dHJ1ZGVkSGVpZ2h0ID0gcG9zaXRpb25zW21dLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgMClcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5ID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogMTAwMDAwMDAwLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLnVuaXQucHVzaCh0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAneWotZHRoLXVuaXQnLFxyXG4gICAgICAgICAgICAgIC4uLmFycmF5W2ldLFxyXG4gICAgICAgICAgICAgIGJ1aWxkX2luZm86IHsgLi4uYnVpbGRfaW5mbyB9LFxyXG4gICAgICAgICAgICAgIHVuaXRfaW5mbzogeyAuLi51bml0X2luZm8gfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZW9tZXRyeTogQ2VzaXVtLlBvbHlnb25HZW9tZXRyeS5jcmVhdGVHZW9tZXRyeShwb2x5Z29uR2VvbWV0cnkpLFxyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygncmdiKDI1NSwgMjM1LCA1OSwgMC40KScpXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgICB9KVxyXG4gICAgICApKVxyXG4gICAgICB0aGlzLnByaW1pdGl2ZXMudW5pdC5wdXNoKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAyLjBcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpLndpdGhBbHBoYSgwLjgpKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBvbHlsaW5lQ29sb3JBcHBlYXJhbmNlKClcclxuICAgICAgICB9KVxyXG4gICAgICApKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5qC55o2uaWTliKDpmaTljZXlhYNQcmltaXRpdmVcclxuICBjbGVhclVuaXRQcmltaXRpdmUoaWQpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWQuSUQgfHwgaWQgPT09IHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXS5fcHJpbWl0aXZlT3B0aW9ucy5nZW9tZXRyeUluc3RhbmNlc1swXS5pZC5pZCkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXMudW5pdFtpXSlcclxuICAgICAgICB0aGlzLnByaW1pdGl2ZXMudW5pdC5zcGxpY2UoaSwgMSlcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDliKDpmaTlhajpg6jljZXlhYNQcmltaXRpdmVcclxuICBjbGVhckFsbFVuaXRQcmltaXRpdmUoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gdGhpcy5wcmltaXRpdmVzLnVuaXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy51bml0W2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5wcmltaXRpdmVzLnVuaXQgPSBbXVxyXG4gIH1cclxuXHJcbiAgLy8g5re75Yqg5Y2V5L2T5YyWUHJpbWl0aXZlXHJcbiAgYWRkRHRoUHJpbWl0aXZlKGFycmF5LCBidWlsZF9pbmZvLCB1bml0X2luZm8pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IEpTT04ucGFyc2UoYXJyYXlbaV0ucmFuZ2UpXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgYXJyYXlbaV0uYm90dG9tICsgMC4zKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBwb2x5Z29uR2VvbWV0cnkgPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeSh7XHJcbiAgICAgICAgcG9seWdvbkhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICApLFxyXG4gICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiB0cnVlLCAvL+S9v+eUqHrlnZDmoIcg5ZCm5YiZ6auY5bqm5LuOMOW8gOWni1xyXG4gICAgICAgIGV4dHJ1ZGVkSGVpZ2h0OiBhcnJheVtpXS5oZWlnaHQgKyBhcnJheVtpXS5ib3R0b20sIC8v5ouJ5Ly46auY5bqmXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5Qm9yZGVyID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogYXJyYXlbaV0uYm90dG9tLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLmR0aC5wdXNoKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlKHtcclxuICAgICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICd5ai1kdGgtZHRoJyxcclxuICAgICAgICAgICAgICAuLi5hcnJheVtpXSxcclxuICAgICAgICAgICAgICBidWlsZF9pbmZvOiB7IC4uLmJ1aWxkX2luZm8gfSxcclxuICAgICAgICAgICAgICB1bml0X2luZm86IHsgLi4udW5pdF9pbmZvIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2VvbWV0cnk6IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5KSxcclxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJ3JnYigwLCA2NCwgMjU1LCAwLjQpJylcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHNob3c6IG5ldyBDZXNpdW0uU2hvd0dlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUodHJ1ZSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkNFU0lVTV8zRF9USUxFLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkpO1xyXG4gICAgICB0aGlzLnByaW1pdGl2ZXMuZHRoLnB1c2godGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2xhc3NpZmljYXRpb25QcmltaXRpdmUoe1xyXG4gICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3lqLWR0aC1kdGgtYm9yZGVyJyxcclxuICAgICAgICAgICAgICAuLi5hcnJheVtpXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2VvbWV0cnk6IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5Qm9yZGVyKSxcclxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJ3JnYigwLCAwLCAwLCAxKScpXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgICB9KVxyXG4gICAgICApKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5qC55o2uaWTliKDpmaTljZXkvZPljJZQcmltaXRpdmVcclxuICBjbGVhckR0aFByaW1pdGl2ZShpZCkge1xyXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucHJpbWl0aXZlcy5kdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuZHRoW2ldLl9wcmltaXRpdmVPcHRpb25zLmdlb21ldHJ5SW5zdGFuY2VzWzBdLmlkLklEIHx8IGlkID09PSB0aGlzLnByaW1pdGl2ZXMuZHRoW2ldLl9wcmltaXRpdmVPcHRpb25zLmdlb21ldHJ5SW5zdGFuY2VzWzBdLmlkLmlkKSB7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy5kdGhbaV0pXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVzLmR0aC5zcGxpY2UoaSwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5Yig6Zmk5YWo6YOo5Y2V5L2T5YyWUHJpbWl0aXZlXHJcbiAgY2xlYXJBbGxEdGhQcmltaXRpdmUoKSB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSAmJiB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5oaWdobGlnaHRQcmltaXRpdmUpXHJcbiAgICBmb3IgKGxldCBpID0gdGhpcy5wcmltaXRpdmVzLmR0aC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5wcmltaXRpdmVzLmR0aFtpXSlcclxuICAgIH1cclxuICAgIHRoaXMucHJpbWl0aXZlcy5kdGggPSBbXVxyXG4gIH1cclxuXHJcbiAgZ2V0SURCeXBpY2tGZWF0dXJlKHBpY2tGZWF0dXJlKSB7XHJcbiAgICAvL+aBouWkjeS4iuS4gOS4qui0tOWvueixoemdouaYvuekulxyXG4gICAgaWYgKHRoaXMuY2xpY2tIaWdobGlnaHRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy5jbGlja0hpZ2hsaWdodFByaW1pdGl2ZS5zaG93ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlICYmIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSlcclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgIC4uLnBpY2tGZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICB0eXBlOiAneWotZHRoLWhpZ2hsaWdodCcsXHJcblxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGdlb21ldHJ5OiBwaWNrRmVhdHVyZS5wcmltaXRpdmUuX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uZ2VvbWV0cnksXHJcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmY5ODAwJykud2l0aEFscGhhKDAuOCkpLFxyXG4gICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlLnJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgLy/orr7nva7lvZPliY3ngrnlh7vnmoTotLTlr7nosaHpnaLkuI3mmL7npLpcclxuICAgICAgcGlja0ZlYXR1cmUucHJpbWl0aXZlLnNob3cgPSBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmNsaWNrSGlnaGxpZ2h0UHJpbWl0aXZlID0gcGlja0ZlYXR1cmUucHJpbWl0aXZlO1xyXG5cclxuICAgIGxldCByYW5nZSA9IHBpY2tGZWF0dXJlLmlkLnJhbmdlXHJcbiAgICBpZiAodHlwZW9mIHBpY2tGZWF0dXJlLmlkLnJhbmdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByYW5nZSA9IEpTT04ucGFyc2UocGlja0ZlYXR1cmUuaWQucmFuZ2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEhpbGlnaHRBcmVhKHJhbmdlKVxyXG4gICAgdGhpcy5oYW5kbGVQaWNrRXZlbnQocGlja0ZlYXR1cmUuaWQpXHJcbiAgfVxyXG5cclxuICAvL+WkhOeQhueCueWHu+S6i+S7tlxyXG4gIGhhbmRsZVBpY2tFdmVudChpZCkge1xyXG4gICAgdGhpcy5QaWNrQnVpbGRpbmdFdmVudC5yYWlzZUV2ZW50KGlkKTsgLy/op6blj5HpgInkuK3kuovku7Yg6YCa55+l55WM6Z2i5pu05pawXHJcbiAgfVxyXG5cclxuICBnZXRIaWxpZ2h0QXJlYShwb2ludHMsIHJhZGl1cyA9IDEpIHtcclxuICAgIGxldCBhcnIgPSBbXVxyXG4gICAgcG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XHJcbiAgICAgIGFyci5wdXNoKFsocG9pbnQubG5nKSwgKHBvaW50LmxhdCldKVxyXG4gICAgfSlcclxuICAgIGFyci5wdXNoKGFyclswXSlcclxuICAgIHZhciBwb2x5ID0gdHVyZi5wb2x5Z29uKFthcnJdKVxyXG4gICAgdmFyIGJ1ZmZlcmVkID0gdHVyZi5idWZmZXIocG9seSwgTnVtYmVyKHJhZGl1cykgLyAxMDAwKVxyXG4gICAgcmV0dXJuIGJ1ZmZlcmVkLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhwb3NpdGlvbnMsIG9mZnNldCA9IHsgaGVhZGluZzogMC4wLCBwaXRjaDogLTkwLjAsIHJvbGw6IDAuMCB9KSB7XHJcbiAgICBsZXQgdG9vbHMgPSBuZXcgWUouVG9vbHModGhpcy5zZGspXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICBoZWlnaHQgPSBwb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaGVpZ2h0ID0gYXdhaXQgdG9vbHMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbnNbaV0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBoZWlnaHQpXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgfVxyXG4gICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gYXdhaXQgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgIG9mZnNldDoge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyhvZmZzZXQuaGVhZGluZyB8fCAwKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKChvZmZzZXQucGl0Y2ggfHwgb2Zmc2V0LnBpdGNoID09PSAwKSA/IG9mZnNldC5waXRjaCA6IC05MCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKG9mZnNldC5yb2xsIHx8IDApXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMuaXNBY3RpdmF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5pc0FjdGl2YXRlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBUkE7QUFBQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUEvQkE7QUFBQTtBQUFBO0FBQUE7QUFpQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQW5EQTtBQUFBO0FBQUE7QUFBQTtBQXFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBdUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXJEQTtBQUFBO0FBQUE7QUFBQTtBQXVEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/DTH/index.js\n"); - -/***/ }), - -/***/ "./src/Global/ExportKml/index.js": -/*!***************************************!*\ - !*** ./src/Global/ExportKml/index.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Obj_Base_BillboardObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Obj/Base/BillboardObject */ \"./src/Obj/Base/BillboardObject/index.js\");\n/* harmony import */ var _Obj_Base_PolygonObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Obj/Base/PolygonObject */ \"./src/Obj/Base/PolygonObject/index.js\");\n/* harmony import */ var _Obj_Base_PolylineObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Obj/Base/PolylineObject */ \"./src/Obj/Base/PolylineObject/index.js\");\n/* harmony import */ var _Obj_Base_CircleDiffuse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Obj/Base/CircleDiffuse */ \"./src/Obj/Base/CircleDiffuse/index.js\");\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-09-11 16:41\r\n * @description:index\r\n * @update: 2023-09-11 16:41\r\n */\n\n\n\n\nfunction exportKml() {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var entities = new Cesium.EntityCollection();\n list.forEach(function (entity) {\n if (entity instanceof _Obj_Base_BillboardObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || entity instanceof _Obj_Base_PolygonObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || entity instanceof _Obj_Base_CircleDiffuse__WEBPACK_IMPORTED_MODULE_3__[\"default\"] || entity instanceof _Obj_Base_PolylineObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) {\n entities.add(entity.entity);\n }\n });\n if (entities.values.length) {\n var promise = Cesium.exportKml({\n entities: entities\n });\n promise.then(function (e) {\n // Cesium.exportKml(e.kml,)\n funDownload(e.kml, new Date().getTime() + \".kml\");\n });\n } else {\n console.error(\"允许导出为kml的对象为空\");\n }\n}\nfunction funDownload(content, filename) {\n var eleLink = document.createElement(\"a\");\n eleLink.download = filename;\n eleLink.style.display = \"none\";\n // 字符内容转变成blob地址\n var blob = new Blob([content]);\n eleLink.href = URL.createObjectURL(blob);\n // 触发点击\n document.body.appendChild(eleLink);\n eleLink.click();\n // 然后移除\n document.body.removeChild(eleLink);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (exportKml);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0V4cG9ydEttbC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvRXhwb3J0S21sL2luZGV4LmpzPzU3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTA5LTExIDE2OjQxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMDktMTEgMTY6NDFcclxuICovXHJcbmltcG9ydCBCaWxsYm9hcmRPYmplY3QgZnJvbSBcIi4uLy4uL09iai9CYXNlL0JpbGxib2FyZE9iamVjdFwiO1xyXG5pbXBvcnQgUG9seWdvbk9iamVjdCBmcm9tIFwiLi4vLi4vT2JqL0Jhc2UvUG9seWdvbk9iamVjdFwiO1xyXG5pbXBvcnQgUG9seWxpbmVPYmplY3QgZnJvbSBcIi4uLy4uL09iai9CYXNlL1BvbHlsaW5lT2JqZWN0XCI7XHJcbmltcG9ydCBDaXJjbGUgZnJvbSBcIi4uLy4uL09iai9CYXNlL0NpcmNsZURpZmZ1c2VcIjtcclxuXHJcbmZ1bmN0aW9uIGV4cG9ydEttbChsaXN0ID0gW10pIHtcclxuXHJcbiAgbGV0IGVudGl0aWVzID0gbmV3IENlc2l1bS5FbnRpdHlDb2xsZWN0aW9uKCk7XHJcbiAgbGlzdC5mb3JFYWNoKGVudGl0eSA9PiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGVudGl0eSBpbnN0YW5jZW9mIEJpbGxib2FyZE9iamVjdCB8fFxyXG4gICAgICBlbnRpdHkgaW5zdGFuY2VvZiBQb2x5Z29uT2JqZWN0IHx8XHJcbiAgICAgIGVudGl0eSBpbnN0YW5jZW9mIENpcmNsZSB8fFxyXG4gICAgICBlbnRpdHkgaW5zdGFuY2VvZiBQb2x5bGluZU9iamVjdFxyXG4gICAgKSB7XHJcbiAgICAgIGVudGl0aWVzLmFkZChlbnRpdHkuZW50aXR5KVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgaWYgKGVudGl0aWVzLnZhbHVlcy5sZW5ndGgpIHtcclxuICAgIGxldCBwcm9taXNlID0gQ2VzaXVtLmV4cG9ydEttbCh7ZW50aXRpZXN9KVxyXG4gICAgcHJvbWlzZS50aGVuKGUgPT4ge1xyXG4gICAgICAvLyBDZXNpdW0uZXhwb3J0S21sKGUua21sLClcclxuICAgICAgZnVuRG93bmxvYWQoZS5rbWwsIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgXCIua21sXCIpXHJcbiAgICB9KVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFwi5YWB6K645a+85Ye65Li6a21s55qE5a+56LGh5Li656m6XCIpXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmdW5Eb3dubG9hZChjb250ZW50LCBmaWxlbmFtZSkge1xyXG4gIGxldCBlbGVMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgZWxlTGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gIGVsZUxpbmsuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIC8vIOWtl+espuWGheWuuei9rOWPmOaIkGJsb2LlnLDlnYBcclxuICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtjb250ZW50XSk7XHJcbiAgZWxlTGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAvLyDop6blj5Hngrnlh7tcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZUxpbmspO1xyXG4gIGVsZUxpbmsuY2xpY2soKTtcclxuICAvLyDnhLblkI7np7vpmaRcclxuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZUxpbmspO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0S21sXHJcblxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/ExportKml/index.js\n"); - -/***/ }), - -/***/ "./src/Global/FlyRoam/_element.js": -/*!****************************************!*\ - !*** ./src/Global/FlyRoam/_element.js ***! - \****************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\u8BBE\\u7F6E\\u603B\\u65F6\\u957F\\n
\\n \\n \\u79D2(s)\\n \\n
\\n
\\n
\\n \\n \\u662F\\u5426\\u5FAA\\u73AF\\u64AD\\u653E\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\u5E8F\\u53F7
\\n
\\u65F6\\u957F(s)
\\n
\\u64CD\\u4F5C
\\n
\\n
\\n
\\n
\\n
\\n

\\u6682\\u65E0\\u6570\\u636E

\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0ZseVJvYW0vX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0ZseVJvYW0vX2VsZW1lbnQuanM/OGY3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJpc1RvdGFsVGltZVwiIHN0eWxlPVwid2lkdGg6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxNXB4OyBoZWlnaHQ6IDE1cHg7IGN1cnNvcjogcG9pbnRlcjsgd2lkdGg6IGF1dG87IG1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuiuvue9ruaAu+aXtumVvzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHRvdGFsLXRpbWVcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTk5Ljk5XCIgc3RlcD1cIjAuMDFcIiBuYW1lPVwidG90YWxUaW1lXCIgdmFsdWU9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCIgc3R5bGU9XCJ0b3A6IDZweDtcIj7np5Iocyk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJyZXBlYXRcIiBzdHlsZT1cIndpZHRoOiAxNnB4OyBsaW5lLWhlaWdodDogMTVweDsgaGVpZ2h0OiAxNXB4OyBjdXJzb3I6IHBvaW50ZXI7IHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mmK/lkKblvqrnjq/mkq3mlL48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLXBvaW50XCI+PHN2ZyBjbGFzcz1cImljb24tYWRkXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tYWRkXCI+PC91c2U+PC9zdmc+5aKe5Yqg6KeG54K5PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibW9kaWZ5LXBvaW50XCI+PHN2ZyBjbGFzcz1cImljb24tZWRpdFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWVkaXRcIj48L3VzZT48L3N2Zz7osIPmlbTop4bngrk8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhZnJlc2hQbGF5XCI+PHN2ZyBjbGFzcz1cImljb24tcGxheVwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXBsYXlcIj48L3VzZT48L3N2Zz7mkq3mlL48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjZWFzZVwiPjxzdmcgY2xhc3M9XCJpY29uLXBhdXNlXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tcGF1c2VcIj48L3VzZT48L3N2Zz7nu5PmnZ88L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7luo/lj7c8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7ml7bplb8ocyk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7mk43kvZw8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cD7mmoLml6DmlbDmja48L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQStEQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/FlyRoam/_element.js\n"); - -/***/ }), - -/***/ "./src/Global/FlyRoam/index.js": -/*!*************************************!*\ - !*** ./src/Global/FlyRoam/index.js ***! - \*************************************/ -/*! exports provided: open, close, flyTo, setRepeat, cease */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"open\", function() { return open; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"close\", function() { return close; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flyTo\", function() { return flyTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setRepeat\", function() { return setRepeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cease\", function() { return cease; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_element */ \"./src/Global/FlyRoam/_element.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n\n\n/**\r\n * @description 飞行漫游\r\n */\n\n\n\n\nvar _DialogObject = null;\nvar clickHandler;\nvar repeat = 0;\nvar currentRepeat = 0;\nvar open = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(sdk) {\n var options,\n _Dialog,\n func,\n name,\n _contentElm,\n _contentElm2,\n viewer,\n tools,\n active,\n contentElm,\n all_elm,\n tableBody,\n tableEmpty,\n handler,\n i,\n points,\n nameElm,\n defaultTimeDom,\n addListBtn,\n endBtn,\n flyBtn,\n addBtn,\n totalTimeElm,\n isTotalTimeElm,\n repeatElm,\n addTrElm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n addTrElm = function _addTrElm(data) {\n var trList = tableBody.getElementsByClassName('tr');\n if (trList.length > 0) {\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = undefined;\n }\n var tr_active = tableBody.getElementsByClassName('tr active')[0];\n tr_active && (tr_active.className = 'tr');\n var tr = document.createElement('div');\n tr.className = 'tr active';\n tr.innerHTML = \"\\n
\\u89C6\\u70B9\".concat(i + 1, \"
\\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n \");\n tr.addEventListener('click', function (v) {\n if (v.target.parentNode === tr) {\n var _tr_active = tableBody.getElementsByClassName('tr active')[0];\n _tr_active && (_tr_active.className = 'tr');\n tr.className = 'tr active';\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n active = m + 1;\n break;\n }\n }\n }\n });\n tr.addEventListener('dblclick', function (v) {\n if (v.target.parentNode === tr) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[m].position.lng, points[m].position.lat, points[m].position.alt),\n orientation: points[m].orientation,\n duration: 1\n });\n break;\n }\n }\n }\n });\n var e_play = tr.getElementsByClassName('play')[0];\n var e_delete = tr.getElementsByClassName('delete')[0];\n var e_time = tr.querySelector(\"input[name='time']\");\n var modifyBtn = tr.getElementsByClassName('modify-point')[0];\n modifyBtn.addEventListener('click', function () {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode.parentNode) {\n var position = tools.cartesian3Towgs84(viewer.camera.position, viewer);\n points[m].position = position;\n points[m].orientation = {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n };\n tools.message({\n text: '更新视角成功'\n });\n }\n }\n });\n e_play.addEventListener('click', function () {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_play.parentNode.parentNode.parentNode) {\n flyTo(sdk, points, m);\n }\n }\n });\n e_delete.addEventListener(\"click\", function (v) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode.parentNode) {\n points.splice(m, 1);\n points[points.length - 1] && (points[points.length - 1].duration = 0);\n tableBody.removeChild(tr);\n if (active > m + 1) {\n active--;\n trList[active - 1].className = 'tr active';\n } else if (active == m + 1) {\n if (trList.length == m) {\n active -= 1;\n }\n if (trList.length != 0) {\n trList[active - 1].className = 'tr active';\n }\n }\n // else if(active == m) {\n // console.log(trList.length-1, active)\n // if (trList.length == active-1) {\n // trList[active-2].className = 'tr active'\n // }\n // else {\n // trList[active-1].className = 'tr active'\n // }\n // }\n if (trList.length > 0) {\n var lastElm = trList[trList.length - 1].querySelector(\"input[name='time']\");\n lastElm.disabled = 'disabled';\n lastElm.value = 0;\n }\n break;\n }\n }\n // points.splice(i, 1)\n // tableBody.removeChild(tr)\n // if (trList.length > 0) {\n // trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled'\n // }\n\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n e_time.addEventListener('input', function (v) {\n isTotalTimeElm.checked = false;\n data.duration = Number(e_time.value);\n if (data.duration < 0) {\n data.duration = 0;\n }\n });\n e_time.addEventListener('blur', function () {\n e_time.value = Number(Number(e_time.value).toFixed(2));\n if (e_time.value < 0) {\n e_time.value = 0;\n }\n });\n tableBody.insertBefore(tr, trList[active]);\n active++;\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled';\n };\n options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n _Dialog = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};\n func = _args.length > 3 ? _args[3] : undefined;\n name = options.name || '漫游路径';\n options.points || (options.points = []);\n if (options.repeat) {\n repeat = Number(options.repeat);\n }\n if (options.defaultTime) {\n _contentElm = document.getElementsByClassName('fly-roam')[0];\n _contentElm.querySelector(\"input[name='defaultTime']\").value = options.defaultTime;\n }\n if (options.totalTime) {\n _contentElm2 = document.getElementsByClassName('fly-roam')[0];\n _contentElm2.querySelector(\"input[name='totalTime']\").value = options.totalTime;\n }\n viewer = sdk.viewer;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n active = 0; // if (_DialogObject && _DialogObject.close) {\n // _DialogObject.close()\n // _DialogObject = null\n // }\n // _DialogObject = await new Dialog(viewer._container, {\n // title: '飞行漫游', left: '180px', top: '100px',\n // closeCallBack: () => {\n // cease({ viewer })\n // },\n // })\n // await _DialogObject.init()\n // let contentElm = document.createElement('div');\n // contentElm.className = 'fly-roam'\n // contentElm.innerHTML = html()\n // _DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('fly-roam')[0];\n all_elm = contentElm.getElementsByTagName(\"*\"); // EventBinding(all_elm)\n tableBody = contentElm.getElementsByClassName('table-body')[0];\n tableEmpty = contentElm.getElementsByClassName('table-empty')[0];\n handler = {\n set: function set(target, prop, value) {\n target[prop] = value;\n if (target.length > 0) {\n tableEmpty.style.display = 'none';\n } else {\n tableEmpty.style.display = 'flex';\n }\n return true;\n }\n };\n i = 0;\n points = new Proxy([], handler);\n for (i = 0; i < options.points.length; i++) {\n points.push(options.points[i]);\n addTrElm(options.points[i]);\n }\n\n // let nameImputBoxElm = contentElm.getElementsByClassName('input-box')[0]\n // check(nameImputBoxElm, { validator: 'notEmpty', message: '名称不能为空!', trigger: 'input' })\n nameElm = contentElm.querySelector(\"input[name='name']\");\n nameElm.value = name;\n nameElm.addEventListener('input', function () {\n name = nameElm.value;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n defaultTimeDom = contentElm.querySelector(\"input[name='defaultTime']\");\n nameElm.addEventListener('input', function () {\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n\n // let addListBtn = document.createElement('button');\n addListBtn = document.getElementsByClassName('saveRoam')[0]; // addListBtn.innerHTML = '保存'\n addListBtn.addEventListener('click', function () {\n if (!name) {\n name = '漫游路径';\n nameElm.value = name;\n }\n var newPoints = [];\n points.map(function (item) {\n newPoints.push(item);\n });\n func({\n name: name,\n points: newPoints,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n // _Dialog.clickSavePath && _Dialog.clickSavePath(\n // {\n // name: name,\n // points: newPoints,\n // repeat: repeat + ''\n // }\n // )\n });\n // _DialogObject.footAppChild(addListBtn)\n endBtn = contentElm.getElementsByClassName('cease')[0];\n endBtn.addEventListener('click', function () {\n viewer.camera.cancelFlight();\n });\n flyBtn = contentElm.getElementsByClassName('afreshPlay')[0];\n flyBtn.addEventListener('click', function () {\n if (points.length > 0) {\n flyTo(sdk, points, 0);\n }\n });\n addBtn = contentElm.getElementsByClassName('add-point')[0];\n addBtn.addEventListener('click', function () {\n var position = tools.cartesian3Towgs84(viewer.camera.position, viewer);\n var defaultTime = Number(contentElm.querySelector(\"input[name='defaultTime']\").value);\n var time = points.length === active ? 0 : defaultTime;\n var data = {\n duration: time,\n position: position,\n orientation: {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n }\n };\n if (points.length === active && active !== 0) {\n points[points.length - 1].duration = defaultTime;\n var trList = tableBody.getElementsByClassName('tr');\n trList[points.length - 1].querySelector(\"input[name='time']\").value = defaultTime;\n }\n points.splice(active, 0, data);\n addTrElm(data);\n i++;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n // let modifyBtn = contentElm.getElementsByClassName('modify-point')[0]\n // modifyBtn.addEventListener('click', () => {\n // if (!active) {\n // return\n // }\n // let position = tools.cartesian3Towgs84(viewer.camera.position, viewer)\n // points[active - 1].position = position\n // points[active - 1].orientation = {\n // heading: viewer.camera.heading,\n // pitch: viewer.camera.pitch,\n // roll: viewer.camera.roll\n // }\n // tools.message({ text: '操作成功' })\n // })\n totalTimeElm = contentElm.querySelector(\"input[name='totalTime']\"); // let isTotalTimeElm = contentElm.querySelector(\"input[name='isTotalTime']\")\n isTotalTimeElm = contentElm.getElementsByClassName('isTotalTime')[0];\n repeatElm = contentElm.querySelector(\"input[name='repeat']\");\n isTotalTimeElm.addEventListener('click', function () {\n var trList = tableBody.getElementsByClassName('tr');\n // if (isTotalTimeElm.checked && trList.length > 0) {\n if (trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i = 0; _i < trList.length - 1; _i++) {\n points[_i].duration = time;\n trList[_i].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n totalTimeElm.value = 0; //点击应用后默认时间清零\n }\n });\n totalTimeElm.addEventListener('blur', function () {\n var trList = tableBody.getElementsByClassName('tr');\n totalTimeElm.value = Number(totalTimeElm.value);\n if (totalTimeElm.value < 0) {\n totalTimeElm.value = 0;\n }\n if (isTotalTimeElm.checked && trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i2 = 0; _i2 < trList.length - 1; _i2++) {\n points[_i2].duration = time;\n trList[_i2].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n }\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n repeatElm.checked = repeat === Infinity ? true : false;\n repeatElm.addEventListener('change', function () {\n if (repeatElm.checked) {\n repeat = Infinity;\n } else {\n repeat = 0;\n }\n currentRepeat = repeat;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n _Dialog.changeRepeatStateCallBack && _Dialog.changeRepeatStateCallBack(repeatElm.checked);\n });\n\n // Object.defineProperty(options, 'points', {\n // get() {\n // return e_allArea.value\n // },\n // set(value) {\n // e_allArea.value = value\n // }\n // })\n case 40:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function open(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nvar close = function close() {\n // if (_DialogObject && _DialogObject.close) {\n // _DialogObject.close()\n // _DialogObject = null\n // }\n var contentElm = document.getElementsByClassName('fly-roam')[0];\n if (contentElm) {\n var _tableBody = contentElm.getElementsByClassName('table-body')[0];\n var trList = _tableBody.getElementsByClassName('tr');\n for (var _i3 = trList.length - 1; _i3 >= 0; _i3--) {\n _tableBody.removeChild(trList[_i3]);\n }\n }\n repeat = 0;\n currentRepeat = 0;\n};\nvar _executeFlyTo = function executeFlyTo(sdk) {\n var points = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var noStart = arguments.length > 3 ? arguments[3] : undefined;\n if (clickHandler) {\n clickHandler.destroy();\n }\n clickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n clickHandler.setInputAction(function (movement) {\n cease(sdk);\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n var viewer = sdk.viewer;\n viewer.camera.cancelFlight();\n // function pauseExecution(seconds) {\n // return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n // }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_5__[\"closeViewFollow\"])(sdk);\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[index].position.lng, points[index].position.lat, points[index].position.alt),\n orientation: points[index].orientation,\n duration: noStart ? points[index - 1].duration : 0.5,\n maximumHeight: points[index].position.alt,\n complete: function () {\n var _complete = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!noStart) {\n // await pauseExecution(2)\n }\n index++;\n if (index <= points.length - 1) {\n _executeFlyTo(sdk, points, index, true);\n } else if (currentRepeat && points.length > 1) {\n currentRepeat--;\n _executeFlyTo(sdk, points, 0);\n } else {\n if (clickHandler) {\n clickHandler.destroy();\n }\n }\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function complete() {\n return _complete.apply(this, arguments);\n }\n return complete;\n }(),\n easingFunction: noStart ? Cesium.EasingFunction.LINEAR_NONE : Cesium.EasingFunction.EXPONENTIAL_OUT\n });\n};\nvar flyTo = function flyTo(sdk) {\n var points = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var noStart = arguments.length > 3 ? arguments[3] : undefined;\n currentRepeat = repeat;\n _executeFlyTo(sdk, points, index, noStart);\n};\n\n/**设置循环次数 (Infinity: 无限循环)*/\nvar setRepeat = function setRepeat(v) {\n if (repeat != Number(v)) {\n repeat = Number(v);\n currentRepeat = repeat;\n if (_DialogObject && _DialogObject._element && _DialogObject._element.content) {\n var repeatElm = _DialogObject._element.content.querySelector(\"input[name='repeat']\");\n if (v === Infinity) {\n repeatElm.checked = true;\n } else {\n repeatElm.checked = false;\n }\n }\n }\n};\n\n/** 停止 */\nvar cease = function cease(sdk) {\n sdk && sdk.viewer && sdk.viewer.camera.cancelFlight();\n if (clickHandler) {\n clickHandler.destroy();\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0ZseVJvYW0vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0ZseVJvYW0vaW5kZXguanM/NzA4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDpo57ooYzmvKvmuLhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCB7IGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5sZXQgX0RpYWxvZ09iamVjdCA9IG51bGxcclxubGV0IGNsaWNrSGFuZGxlclxyXG5sZXQgcmVwZWF0ID0gMFxyXG5sZXQgY3VycmVudFJlcGVhdCA9IDBcclxuXHJcblxyXG5jb25zdCBvcGVuID0gYXN5bmMgKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30sIGZ1bmMpID0+IHtcclxuICBsZXQgbmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5ryr5ri46Lev5b6EJ1xyXG4gIG9wdGlvbnMucG9pbnRzIHx8IChvcHRpb25zLnBvaW50cyA9IFtdKVxyXG4gIGlmIChvcHRpb25zLnJlcGVhdCkge1xyXG4gICAgcmVwZWF0ID0gTnVtYmVyKG9wdGlvbnMucmVwZWF0KVxyXG4gIH1cclxuICBpZiAob3B0aW9ucy5kZWZhdWx0VGltZSkge1xyXG4gICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbHktcm9hbScpWzBdXHJcbiAgICBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdkZWZhdWx0VGltZSddXCIpLnZhbHVlID0gb3B0aW9ucy5kZWZhdWx0VGltZVxyXG4gIH1cclxuICBpZiAob3B0aW9ucy50b3RhbFRpbWUpIHtcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gICAgY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndG90YWxUaW1lJ11cIikudmFsdWUgPSBvcHRpb25zLnRvdGFsVGltZVxyXG4gIH1cclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIGxldCB0b29scyA9IG5ldyBUb29scyhzZGspXHJcbiAgbGV0IGFjdGl2ZSA9IDBcclxuXHJcbiAgLy8gaWYgKF9EaWFsb2dPYmplY3QgJiYgX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gIC8vICAgX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgLy8gICBfRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vIH1cclxuXHJcbiAgLy8gX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codmlld2VyLl9jb250YWluZXIsIHtcclxuICAvLyAgIHRpdGxlOiAn6aOe6KGM5ryr5ri4JywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICBjZWFzZSh7IHZpZXdlciB9KVxyXG4gIC8vICAgfSxcclxuICAvLyB9KVxyXG4gIC8vIGF3YWl0IF9EaWFsb2dPYmplY3QuaW5pdCgpXHJcbiAgLy8gbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAvLyBjb250ZW50RWxtLmNsYXNzTmFtZSA9ICdmbHktcm9hbSdcclxuICAvLyBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gIC8vIF9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAvLyBFdmVudEJpbmRpbmcoYWxsX2VsbSlcclxuXHJcbiAgbGV0IHRhYmxlQm9keSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdO1xyXG4gIGxldCB0YWJsZUVtcHR5ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdXHJcblxyXG4gIGxldCBoYW5kbGVyID0ge1xyXG4gICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xyXG4gICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGFibGVFbXB0eS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGFibGVFbXB0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gIH07XHJcbiAgbGV0IGkgPSAwXHJcbiAgbGV0IHBvaW50cyA9IG5ldyBQcm94eShbXSwgaGFuZGxlcik7XHJcbiAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMucG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBwb2ludHMucHVzaChvcHRpb25zLnBvaW50c1tpXSlcclxuICAgIGFkZFRyRWxtKG9wdGlvbnMucG9pbnRzW2ldKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGxldCBuYW1lSW1wdXRCb3hFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWJveCcpWzBdXHJcbiAgLy8gY2hlY2sobmFtZUltcHV0Qm94RWxtLCB7IHZhbGlkYXRvcjogJ25vdEVtcHR5JywgbWVzc2FnZTogJ+WQjeensOS4jeiDveS4uuepuu+8gScsIHRyaWdnZXI6ICdpbnB1dCcgfSlcclxuICBsZXQgbmFtZUVsbSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J25hbWUnXVwiKVxyXG4gIG5hbWVFbG0udmFsdWUgPSBuYW1lXHJcbiAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgIG5hbWUgPSBuYW1lRWxtLnZhbHVlXHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgfSlcclxuICBsZXQgZGVmYXVsdFRpbWVEb20gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdkZWZhdWx0VGltZSddXCIpXHJcbiAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgIGZ1bmMoe1xyXG4gICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgcmVwZWF0OiByZXBlYXQgKyAnJyxcclxuICAgICAgZGVmYXVsdFRpbWU6IGRlZmF1bHRUaW1lRG9tLnZhbHVlLFxyXG4gICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICB9KVxyXG5cclxuICAvLyBsZXQgYWRkTGlzdEJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gIGxldCBhZGRMaXN0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2F2ZVJvYW0nKVswXTtcclxuICAvLyBhZGRMaXN0QnRuLmlubmVySFRNTCA9ICfkv53lrZgnXHJcbiAgYWRkTGlzdEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGlmICghbmFtZSkge1xyXG4gICAgICBuYW1lID0gJ+a8q+a4uOi3r+W+hCdcclxuICAgICAgbmFtZUVsbS52YWx1ZSA9IG5hbWVcclxuICAgIH1cclxuICAgIGxldCBuZXdQb2ludHMgPSBbXVxyXG4gICAgcG9pbnRzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBuZXdQb2ludHMucHVzaChpdGVtKVxyXG4gICAgfSlcclxuXHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBuZXdQb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgICAvLyBfRGlhbG9nLmNsaWNrU2F2ZVBhdGggJiYgX0RpYWxvZy5jbGlja1NhdmVQYXRoKFxyXG4gICAgLy8gICB7XHJcbiAgICAvLyAgICAgbmFtZTogbmFtZSxcclxuICAgIC8vICAgICBwb2ludHM6IG5ld1BvaW50cyxcclxuICAgIC8vICAgICByZXBlYXQ6IHJlcGVhdCArICcnXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIClcclxuICB9KVxyXG4gIC8vIF9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKGFkZExpc3RCdG4pXHJcblxyXG4gIGxldCBlbmRCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NlYXNlJylbMF1cclxuICBlbmRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICB2aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgfSlcclxuXHJcbiAgbGV0IGZseUJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWZyZXNoUGxheScpWzBdXHJcbiAgZmx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZseVRvKHNkaywgcG9pbnRzLCAwKVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIGxldCBhZGRCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FkZC1wb2ludCcpWzBdXHJcbiAgYWRkQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgbGV0IGRlZmF1bHRUaW1lID0gTnVtYmVyKGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J2RlZmF1bHRUaW1lJ11cIikudmFsdWUpXHJcbiAgICBsZXQgdGltZSA9IHBvaW50cy5sZW5ndGggPT09IGFjdGl2ZSA/IDAgOiBkZWZhdWx0VGltZVxyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGR1cmF0aW9uOiB0aW1lLFxyXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXHJcbiAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICAgIHBpdGNoOiB2aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gICAgICAgIHJvbGw6IHZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gYWN0aXZlICYmIGFjdGl2ZSAhPT0gMCkge1xyXG4gICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLmR1cmF0aW9uID0gZGVmYXVsdFRpbWVcclxuXHJcbiAgICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICB0ckxpc3RbcG9pbnRzLmxlbmd0aCAtIDFdLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSBkZWZhdWx0VGltZVxyXG5cclxuICAgIH1cclxuICAgIHBvaW50cy5zcGxpY2UoYWN0aXZlLCAwLCBkYXRhKVxyXG4gICAgYWRkVHJFbG0oZGF0YSlcclxuICAgIGkrK1xyXG5cclxuICAgIGZ1bmMoe1xyXG4gICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgcmVwZWF0OiByZXBlYXQgKyAnJyxcclxuICAgICAgZGVmYXVsdFRpbWU6IGRlZmF1bHRUaW1lRG9tLnZhbHVlLFxyXG4gICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICB9KVxyXG4gIC8vIGxldCBtb2RpZnlCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZGlmeS1wb2ludCcpWzBdXHJcbiAgLy8gbW9kaWZ5QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gIC8vICAgaWYgKCFhY3RpdmUpIHtcclxuICAvLyAgICAgcmV0dXJuXHJcbiAgLy8gICB9XHJcbiAgLy8gICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NCh2aWV3ZXIuY2FtZXJhLnBvc2l0aW9uLCB2aWV3ZXIpXHJcbiAgLy8gICBwb2ludHNbYWN0aXZlIC0gMV0ucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gIC8vICAgcG9pbnRzW2FjdGl2ZSAtIDFdLm9yaWVudGF0aW9uID0ge1xyXG4gIC8vICAgICBoZWFkaW5nOiB2aWV3ZXIuY2FtZXJhLmhlYWRpbmcsXHJcbiAgLy8gICAgIHBpdGNoOiB2aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gIC8vICAgICByb2xsOiB2aWV3ZXIuY2FtZXJhLnJvbGxcclxuICAvLyAgIH1cclxuICAvLyAgIHRvb2xzLm1lc3NhZ2UoeyB0ZXh0OiAn5pON5L2c5oiQ5YqfJyB9KVxyXG4gIC8vIH0pXHJcblxyXG4gIGxldCB0b3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0b3RhbFRpbWUnXVwiKVxyXG4gIC8vIGxldCBpc1RvdGFsVGltZUVsbSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J2lzVG90YWxUaW1lJ11cIilcclxuICBsZXQgaXNUb3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lzVG90YWxUaW1lJylbMF1cclxuICBsZXQgcmVwZWF0RWxtID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ncmVwZWF0J11cIilcclxuICBpc1RvdGFsVGltZUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgLy8gaWYgKGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgJiYgdHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgdGltZSA9IE51bWJlcigoTnVtYmVyKHRvdGFsVGltZUVsbS52YWx1ZSkgLyAodHJMaXN0Lmxlbmd0aCAtIDEpKS50b0ZpeGVkKDIpKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyTGlzdC5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBwb2ludHNbaV0uZHVyYXRpb24gPSB0aW1lXHJcbiAgICAgICAgdHJMaXN0W2ldLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSB0aW1lXHJcbiAgICAgIH1cclxuICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLnZhbHVlID0gMFxyXG5cclxuICAgICAgdG90YWxUaW1lRWxtLnZhbHVlID0gMC8v54K55Ye75bqU55So5ZCO6buY6K6k5pe26Ze05riF6Zu2XHJcbiAgICB9XHJcbiAgfSlcclxuICB0b3RhbFRpbWVFbG0uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgdG90YWxUaW1lRWxtLnZhbHVlID0gTnVtYmVyKHRvdGFsVGltZUVsbS52YWx1ZSlcclxuICAgIGlmICh0b3RhbFRpbWVFbG0udmFsdWUgPCAwKSB7XHJcbiAgICAgIHRvdGFsVGltZUVsbS52YWx1ZSA9IDBcclxuICAgIH1cclxuICAgIGlmIChpc1RvdGFsVGltZUVsbS5jaGVja2VkICYmIHRyTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCB0aW1lID0gTnVtYmVyKChOdW1iZXIodG90YWxUaW1lRWxtLnZhbHVlKSAvICh0ckxpc3QubGVuZ3RoIC0gMSkpLnRvRml4ZWQoMikpXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJMaXN0Lmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIHBvaW50c1tpXS5kdXJhdGlvbiA9IHRpbWVcclxuICAgICAgICB0ckxpc3RbaV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IHRpbWVcclxuICAgICAgfVxyXG4gICAgICB0ckxpc3RbdHJMaXN0Lmxlbmd0aCAtIDFdLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSAwXHJcbiAgICB9XHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgfSlcclxuICByZXBlYXRFbG0uY2hlY2tlZCA9IChyZXBlYXQgPT09IEluZmluaXR5ID8gdHJ1ZSA6IGZhbHNlKVxyXG4gIHJlcGVhdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICBpZiAocmVwZWF0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgcmVwZWF0ID0gSW5maW5pdHlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXBlYXQgPSAwXHJcbiAgICB9XHJcbiAgICBjdXJyZW50UmVwZWF0ID0gcmVwZWF0XHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgICBfRGlhbG9nLmNoYW5nZVJlcGVhdFN0YXRlQ2FsbEJhY2sgJiYgX0RpYWxvZy5jaGFuZ2VSZXBlYXRTdGF0ZUNhbGxCYWNrKHJlcGVhdEVsbS5jaGVja2VkKVxyXG4gIH0pXHJcblxyXG4gIC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRpb25zLCAncG9pbnRzJywge1xyXG4gIC8vICAgZ2V0KCkge1xyXG4gIC8vICAgICByZXR1cm4gZV9hbGxBcmVhLnZhbHVlXHJcbiAgLy8gICB9LFxyXG4gIC8vICAgc2V0KHZhbHVlKSB7XHJcbiAgLy8gICAgIGVfYWxsQXJlYS52YWx1ZSA9IHZhbHVlXHJcbiAgLy8gICB9XHJcbiAgLy8gfSlcclxuXHJcbiAgZnVuY3Rpb24gYWRkVHJFbG0oZGF0YSkge1xyXG4gICAgbGV0IHRyTGlzdCA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICBpZiAodHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICBsZXQgdHJfYWN0aXZlID0gdGFibGVCb2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyIGFjdGl2ZScpWzBdXHJcbiAgICB0cl9hY3RpdmUgJiYgKHRyX2FjdGl2ZS5jbGFzc05hbWUgPSAndHInKVxyXG4gICAgbGV0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0ci5jbGFzc05hbWUgPSAndHIgYWN0aXZlJ1xyXG4gICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPuinhueCuSR7aSArIDF9PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHRpbWVcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5Ljk5XCIgc3RlcD1cIjAuMDFcIiBuYW1lPVwidGltZVwiIHZhbHVlPVwiJHtkYXRhLmR1cmF0aW9ufVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRkIGFjdGlvblwiPlxyXG4gICAgICAgIDxidXR0b24gdGl0bGU9XCLmm7TmlrDop4bop5JcIiBjbGFzcz0naWNvbkJ1dCc+PHN2ZyBjbGFzcz1cImljb24tcmVzZXRWaWV3IG1vZGlmeS1wb2ludFwiIHN0eWxlPSd3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2N1cnNvcjogcG9pbnRlcjsnPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXJlc2V0Vmlld1wiPjwvdXNlPjwvc3ZnPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdGl0bGU9XCLmkq3mlL5cIiBjbGFzcz0naWNvbkJ1dCc+PHN2ZyBjbGFzcz1cImljb24tcGxheSBwbGF5XCIgc3R5bGU9J3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Y3Vyc29yOiBwb2ludGVyO21hcmdpbi10b3A6IC00cHg7Jz48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1wbGF5XCI+PC91c2U+PC9zdmc+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0aXRsZT1cIuWIoOmZpFwiIGNsYXNzPSdpY29uQnV0Jz48c3ZnIGNsYXNzPVwiaWNvbi1kZWxldGUgZGVsZXRlXCIgc3R5bGU9J3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Y3Vyc29yOiBwb2ludGVyOyc+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tZGVsZXRlXCI+PC91c2U+PC9zdmc+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBgXHJcbiAgICB0ci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICh2KSA9PiB7XHJcbiAgICAgIGlmICh2LnRhcmdldC5wYXJlbnROb2RlID09PSB0cikge1xyXG4gICAgICAgIGxldCB0cl9hY3RpdmUgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHIgYWN0aXZlJylbMF1cclxuICAgICAgICB0cl9hY3RpdmUgJiYgKHRyX2FjdGl2ZS5jbGFzc05hbWUgPSAndHInKVxyXG4gICAgICAgIHRyLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgIGlmICh0ckxpc3RbbV0gPT09IHRyKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZSA9IG0gKyAxXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdHIuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAodikgPT4ge1xyXG4gICAgICBpZiAodi50YXJnZXQucGFyZW50Tm9kZSA9PT0gdHIpIHtcclxuICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHRyTGlzdC5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgaWYgKHRyTGlzdFttXSA9PT0gdHIpIHtcclxuICAgICAgICAgICAgdmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvaW50c1ttXS5wb3NpdGlvbi5sbmcsIHBvaW50c1ttXS5wb3NpdGlvbi5sYXQsIHBvaW50c1ttXS5wb3NpdGlvbi5hbHQpLFxyXG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBwb2ludHNbbV0ub3JpZW50YXRpb24sXHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDFcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBsZXQgZV9wbGF5ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGxheScpWzBdXHJcbiAgICBsZXQgZV9kZWxldGUgPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkZWxldGUnKVswXVxyXG4gICAgbGV0IGVfdGltZSA9IHRyLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIilcclxuXHJcbiAgICBsZXQgbW9kaWZ5QnRuID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kaWZ5LXBvaW50JylbMF1cclxuICAgIG1vZGlmeUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBpZiAodHJMaXN0W21dID09PSBlX2RlbGV0ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgICAgICAgcG9pbnRzW21dLnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgICAgICAgIHBvaW50c1ttXS5vcmllbnRhdGlvbiA9IHtcclxuICAgICAgICAgICAgaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICAgICAgICBwaXRjaDogdmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAgICAgICAgICAgcm9sbDogdmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0b29scy5tZXNzYWdlKHsgdGV4dDogJ+abtOaWsOinhuinkuaIkOWKnycgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuXHJcbiAgICBlX3BsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdHJMaXN0Lmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgaWYgKHRyTGlzdFttXSA9PT0gZV9wbGF5LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKSB7XHJcbiAgICAgICAgICBmbHlUbyhzZGssIHBvaW50cywgbSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBlX2RlbGV0ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKHYpID0+IHtcclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBpZiAodHJMaXN0W21dID09PSBlX2RlbGV0ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgcG9pbnRzLnNwbGljZShtLCAxKVxyXG4gICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSAmJiAocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS5kdXJhdGlvbiA9IDApXHJcbiAgICAgICAgICB0YWJsZUJvZHkucmVtb3ZlQ2hpbGQodHIpXHJcbiAgICAgICAgICBpZiAoYWN0aXZlID4gbSArIDEpIHtcclxuICAgICAgICAgICAgYWN0aXZlLS1cclxuICAgICAgICAgICAgdHJMaXN0W2FjdGl2ZSAtIDFdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhY3RpdmUgPT0gbSArIDEpIHtcclxuICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggPT0gbSkge1xyXG4gICAgICAgICAgICAgIGFjdGl2ZSAtPSAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgIHRyTGlzdFthY3RpdmUgLSAxXS5jbGFzc05hbWUgPSAndHIgYWN0aXZlJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBlbHNlIGlmKGFjdGl2ZSA9PSBtKSB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKHRyTGlzdC5sZW5ndGgtMSwgYWN0aXZlKVxyXG4gICAgICAgICAgLy8gICBpZiAodHJMaXN0Lmxlbmd0aCA9PSBhY3RpdmUtMSkge1xyXG4gICAgICAgICAgLy8gICAgIHRyTGlzdFthY3RpdmUtMl0uY2xhc3NOYW1lID0gJ3RyIGFjdGl2ZSdcclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgIC8vICAgICB0ckxpc3RbYWN0aXZlLTFdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVsbSA9IHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKVxyXG4gICAgICAgICAgICBsYXN0RWxtLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gICAgICAgICAgICBsYXN0RWxtLnZhbHVlID0gMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gcG9pbnRzLnNwbGljZShpLCAxKVxyXG4gICAgICAvLyB0YWJsZUJvZHkucmVtb3ZlQ2hpbGQodHIpXHJcbiAgICAgIC8vIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyAgIHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS5kaXNhYmxlZCA9ICdkaXNhYmxlZCdcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgZnVuYyh7XHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgICByZXBlYXQ6IHJlcGVhdCArICcnLFxyXG4gICAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIGVfdGltZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICh2KSA9PiB7XHJcbiAgICAgIGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gICAgICBkYXRhLmR1cmF0aW9uID0gTnVtYmVyKGVfdGltZS52YWx1ZSlcclxuICAgICAgaWYgKGRhdGEuZHVyYXRpb24gPCAwKSB7XHJcbiAgICAgICAgZGF0YS5kdXJhdGlvbiA9IDBcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGVfdGltZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICBlX3RpbWUudmFsdWUgPSBOdW1iZXIoTnVtYmVyKGVfdGltZS52YWx1ZSkudG9GaXhlZCgyKSlcclxuICAgICAgaWYgKGVfdGltZS52YWx1ZSA8IDApIHtcclxuICAgICAgICBlX3RpbWUudmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGFibGVCb2R5Lmluc2VydEJlZm9yZSh0ciwgdHJMaXN0W2FjdGl2ZV0pXHJcbiAgICBhY3RpdmUrK1xyXG4gICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG5jb25zdCBjbG9zZSA9ICgpID0+IHtcclxuICAvLyBpZiAoX0RpYWxvZ09iamVjdCAmJiBfRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgLy8gICBfRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAvLyAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgLy8gfVxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gIGlmIChjb250ZW50RWxtKSB7XHJcbiAgICBsZXQgdGFibGVCb2R5ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF07XHJcbiAgICBsZXQgdHJMaXN0ID0gdGFibGVCb2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGZvciAobGV0IGkgPSB0ckxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGFibGVCb2R5LnJlbW92ZUNoaWxkKHRyTGlzdFtpXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcGVhdCA9IDBcclxuICBjdXJyZW50UmVwZWF0ID0gMFxyXG59XHJcblxyXG5jb25zdCBleGVjdXRlRmx5VG8gPSAoc2RrLCBwb2ludHMgPSBbXSwgaW5kZXggPSAwLCBub1N0YXJ0KSA9PiB7XHJcbiAgaWYgKGNsaWNrSGFuZGxlcikge1xyXG4gICAgY2xpY2tIYW5kbGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuICBjbGlja0hhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIGNsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGNlYXNlKHNkaylcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfQ0xJQ0spXHJcbiAgbGV0IHZpZXdlciA9IHNkay52aWV3ZXJcclxuICB2aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgLy8gZnVuY3Rpb24gcGF1c2VFeGVjdXRpb24oc2Vjb25kcykge1xyXG4gIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMTAwMCkpO1xyXG4gIC8vIH1cclxuICBjbG9zZVJvdGF0ZUFyb3VuZChzZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHNkaylcclxuICB2aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb2ludHNbaW5kZXhdLnBvc2l0aW9uLmxuZywgcG9pbnRzW2luZGV4XS5wb3NpdGlvbi5sYXQsIHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0KSxcclxuICAgIG9yaWVudGF0aW9uOiBwb2ludHNbaW5kZXhdLm9yaWVudGF0aW9uLFxyXG4gICAgZHVyYXRpb246IG5vU3RhcnQgPyBwb2ludHNbaW5kZXggLSAxXS5kdXJhdGlvbiA6IDAuNSxcclxuICAgIG1heGltdW1IZWlnaHQ6IHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0LFxyXG4gICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcclxuICAgICAgaWYgKCFub1N0YXJ0KSB7XHJcbiAgICAgICAgLy8gYXdhaXQgcGF1c2VFeGVjdXRpb24oMilcclxuICAgICAgfVxyXG4gICAgICBpbmRleCsrXHJcbiAgICAgIGlmIChpbmRleCA8PSBwb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGV4ZWN1dGVGbHlUbyhzZGssIHBvaW50cywgaW5kZXgsIHRydWUpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoY3VycmVudFJlcGVhdCAmJiBwb2ludHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGN1cnJlbnRSZXBlYXQtLVxyXG4gICAgICAgIGV4ZWN1dGVGbHlUbyhzZGssIHBvaW50cywgMClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoY2xpY2tIYW5kbGVyKSB7XHJcbiAgICAgICAgICBjbGlja0hhbmRsZXIuZGVzdHJveSgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSxcclxuICAgIGVhc2luZ0Z1bmN0aW9uOiBub1N0YXJ0ID8gQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkxJTkVBUl9OT05FIDogQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkVYUE9ORU5USUFMX09VVFxyXG4gIH0pXHJcbn1cclxuXHJcbmNvbnN0IGZseVRvID0gKHNkaywgcG9pbnRzID0gW10sIGluZGV4ID0gMCwgbm9TdGFydCkgPT4ge1xyXG4gIGN1cnJlbnRSZXBlYXQgPSByZXBlYXRcclxuICBleGVjdXRlRmx5VG8oc2RrLCBwb2ludHMsIGluZGV4LCBub1N0YXJ0KVxyXG59XHJcblxyXG4vKirorr7nva7lvqrnjq/mrKHmlbAgKEluZmluaXR5OiDml6DpmZDlvqrnjq8pKi9cclxuY29uc3Qgc2V0UmVwZWF0ID0gKHYpID0+IHtcclxuICBpZiAocmVwZWF0ICE9IE51bWJlcih2KSkge1xyXG4gICAgcmVwZWF0ID0gTnVtYmVyKHYpXHJcbiAgICBjdXJyZW50UmVwZWF0ID0gcmVwZWF0XHJcbiAgICBpZiAoX0RpYWxvZ09iamVjdCAmJiBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgcmVwZWF0RWxtID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdyZXBlYXQnXVwiKVxyXG4gICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICByZXBlYXRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXBlYXRFbG0uY2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKiog5YGc5q2iICovXHJcbmNvbnN0IGNlYXNlID0gKHNkaykgPT4ge1xyXG4gIHNkayAmJiBzZGsudmlld2VyICYmIHNkay52aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgaWYgKGNsaWNrSGFuZGxlcikge1xyXG4gICAgY2xpY2tIYW5kbGVyLmRlc3Ryb3koKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHsgb3BlbiwgY2xvc2UsIGZseVRvLCBzZXRSZXBlYXQsIGNlYXNlIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbFlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtKQTtBQXJZQTtBQUFBO0FBQUE7QUF1WUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQW1CQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/FlyRoam/index.js\n"); - -/***/ }), - -/***/ "./src/Global/KeyBoard/index.js": -/*!**************************************!*\ - !*** ./src/Global/KeyBoard/index.js ***! - \**************************************/ -/*! exports provided: keyboardMapRoamingInit */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyboardMapRoamingInit\", function() { return keyboardMapRoamingInit; });\n/*\r\n * @Description: 使用键盘控制地图漫游\r\n * @Version: 1.0\r\n * @Author: Julian\r\n * @Date: 2022-04-07 16:04:07\r\n * @LastEditors: Julian\r\n * @LastEditTime: 2022-04-07 18:40:40\r\n */\n\n/**\r\n * @description: 使用键盘控制地图漫游初始化\r\n * @param {*} _viewer\r\n * @return {*}\r\n */\nfunction keyboardMapRoamingInit(_viewer) {\n // 添加键盘监听事件\n document.addEventListener('keydown', keyDown.bind(_viewer), false);\n document.addEventListener('keyup', keyUp.bind(_viewer), false);\n\n // 为每一帧添加监听事件\n _viewer && _viewer.clock.onTick.addEventListener(function () {\n keyboardMapRoamingRender(_viewer);\n });\n}\n\n// 定义事件组\nvar flags = {\n // 相机位置\n moveForward: false,\n moveBackward: false,\n moveLeft: false,\n moveRight: false,\n moveUp: false,\n moveDown: false,\n // 相机姿态\n lookUp: false,\n lookDown: false,\n lookLeft: false,\n lookRight: false,\n twistLeft: false,\n twistRight: false,\n // 缩放\n zoomIn: false,\n zoomOut: false\n};\n\n// 相机位置:W:向前;S:向后;D:向右;A:向左;Q:升高;E:降低;\n// 相机姿态:↑:抬头;↓:低头;←:左转;→:右转;0:顺时针;.:逆时针\n// 缩放:+:放大,-:缩小;\n\n/**\r\n * @description: 根据键盘输入字符返回事件信息\r\n * @param {*} key\r\n * @return {*}\r\n */\nfunction getFlagFromKeyboard(key) {\n switch (key) {\n // 按字符的Unicode编码\n // 相机位置\n case 87:\n return 'moveForward';\n case 83:\n return 'moveBackward';\n case 68:\n return 'moveRight';\n case 65:\n return 'moveLeft';\n case 81:\n return 'moveUp';\n case 69:\n return 'moveDown';\n // 相机姿态\n case 38:\n return 'lookUp';\n case 40:\n return 'lookDown';\n case 37:\n return 'lookLeft';\n case 39:\n return 'lookRight';\n case 96:\n return 'twistLeft';\n case 110:\n return 'twistRight';\n // 缩放\n case 107:\n return 'zoomIn';\n case 109:\n return 'zoomOut';\n default:\n return undefined;\n }\n}\n\n/**\r\n * @description: 键盘按下\r\n * @param {*} event\r\n * @return {*}\r\n */\nfunction keyDown(event) {\n var _viewer = this;\n\n // 判断是否有输入框聚焦\n function isInputFocused() {\n var activeElement = document.activeElement;\n return activeElement.tagName.toLowerCase() === 'input' && activeElement.type !== 'checkbox' || activeElement.tagName.toLowerCase() === 'textarea' || activeElement.getAttribute('role') === 'textarea';\n }\n if (isInputFocused()) {\n // console.log('页面上有输入框已经获取焦点');\n } else if (_viewer.trackedEntity) {\n // console.log('视角跟随中');\n } else if (_viewer._firstPersonView) {\n // console.log('第一人称视角中');\n } else if (_viewer._disableKeyboardEvent) {\n // console.log('禁用键盘事件');\n } else if (event.ctrlKey && event.altKey) {\n if (event.key === 'v' || event.key === 'V') {\n var camera = _viewer.camera;\n _viewer._CAMERA_SHORTCUT_VIEW = {\n orientation: {\n heading: camera.heading,\n pitch: camera.pitch,\n roll: camera.roll\n },\n position: {\n x: camera.position.x,\n y: camera.position.y,\n z: camera.position.z\n }\n };\n localStorage.setItem('CAMERA_SHORTCUT_VIEW', JSON.stringify(_viewer._CAMERA_SHORTCUT_VIEW));\n }\n if (event.key === 'f' || event.key === 'F') {\n var CAMERA_SHORTCUT_VIEW = localStorage.getItem('CAMERA_SHORTCUT_VIEW');\n _viewer._CAMERA_SHORTCUT_VIEW = JSON.parse(CAMERA_SHORTCUT_VIEW);\n if (_viewer._CAMERA_SHORTCUT_VIEW && _viewer._CAMERA_SHORTCUT_VIEW.position && _viewer._CAMERA_SHORTCUT_VIEW.orientation) {\n _viewer.camera.flyTo({\n destination: _viewer._CAMERA_SHORTCUT_VIEW.position,\n orientation: _viewer._CAMERA_SHORTCUT_VIEW.orientation\n });\n }\n }\n } else {\n // console.log('页面上没有输入框获取焦点');\n var flagName = getFlagFromKeyboard(event.keyCode);\n if (typeof flagName !== 'undefined') {\n flags[flagName] = true;\n }\n }\n}\n\n/**\r\n * @description: 键盘弹起\r\n * @param {*} event\r\n * @return {*}\r\n */\nfunction keyUp(event) {\n var flagName = getFlagFromKeyboard(event.keyCode);\n if (typeof flagName !== 'undefined') {\n flags[flagName] = false;\n }\n}\n\n/**\r\n * @description: 根据事件调整相机\r\n * @param {*} _viewer\r\n * @return {*}\r\n */\nfunction keyboardMapRoamingRender(_viewer) {\n if (!_viewer || !_viewer.scene || !_viewer.scene.screenSpaceCameraController.enableTilt) {\n return;\n }\n var camera = _viewer.camera;\n var ellipsoid = _viewer.scene.globe.ellipsoid;\n var cameraHeight = ellipsoid.cartesianToCartographic(camera.position).height;\n var cameraHeight2 = camera.positionCartographic.height;\n\n // 根据相机高度设置移动距离,比默认距离移动效果更好\n var moveRate = cameraHeight / 20.0;\n var rotationRate = moveRate / 500000 / Cesium.Math.toDegrees(camera.pitch);\n var moveRate2 = cameraHeight2 / 100.0;\n if (flags.moveForward) {\n if (_viewer.scene.mode == 2) {\n camera.moveUp(moveRate2);\n } else {\n camera.rotate(camera.right, -rotationRate);\n }\n }\n if (flags.moveBackward) {\n if (_viewer.scene.mode == 2) {\n camera.moveDown(moveRate2);\n } else {\n camera.rotate(camera.right, rotationRate);\n }\n }\n if (flags.moveLeft) {\n if (_viewer.scene.mode == 2) {\n camera.moveLeft(moveRate2);\n } else {\n camera.rotate(camera.up, -rotationRate);\n }\n }\n if (flags.moveRight) {\n if (_viewer.scene.mode == 2) {\n camera.moveRight(moveRate2);\n } else {\n camera.rotate(camera.up, rotationRate);\n }\n }\n if (flags.moveUp) {\n camera.moveUp(moveRate);\n }\n if (flags.moveDown) {\n camera.moveDown(moveRate);\n }\n if (flags.lookUp) {\n camera.lookUp();\n }\n if (flags.lookDown) {\n camera.lookDown();\n }\n if (flags.lookLeft) {\n camera.lookLeft();\n }\n if (flags.lookRight) {\n camera.lookRight();\n }\n if (flags.twistLeft) {\n camera.twistLeft();\n }\n if (flags.twistRight) {\n camera.twistRight();\n }\n // 根据相机高度设置缩放参数\n if (flags.zoomIn) {\n var height = cameraHeight / 2;\n if (height < 1) {\n height = 0;\n }\n camera.zoomIn(height);\n }\n if (flags.zoomOut) {\n var _height = cameraHeight / 2;\n if (cameraHeight + cameraHeight >= 50000000) {\n _height = 50000000 - cameraHeight;\n }\n camera.zoomOut(_height);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0tleUJvYXJkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9LZXlCb2FyZC9pbmRleC5qcz82MGQwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdGlvbjog5L2/55So6ZSu55uY5o6n5Yi25Zyw5Zu+5ryr5ri4XHJcbiAqIEBWZXJzaW9uOiAxLjBcclxuICogQEF1dGhvcjogSnVsaWFuXHJcbiAqIEBEYXRlOiAyMDIyLTA0LTA3IDE2OjA0OjA3XHJcbiAqIEBMYXN0RWRpdG9yczogSnVsaWFuXHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjItMDQtMDcgMTg6NDA6NDBcclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog5L2/55So6ZSu55uY5o6n5Yi25Zyw5Zu+5ryr5ri45Yid5aeL5YyWXHJcbiAqIEBwYXJhbSB7Kn0gX3ZpZXdlclxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5Ym9hcmRNYXBSb2FtaW5nSW5pdChfdmlld2VyKSB7XHJcbiAgLy8g5re75Yqg6ZSu55uY55uR5ZCs5LqL5Lu2XHJcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleURvd24uYmluZChfdmlld2VyKSwgZmFsc2UpO1xyXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywga2V5VXAuYmluZChfdmlld2VyKSwgZmFsc2UpO1xyXG5cclxuICAvLyDkuLrmr4/kuIDluKfmt7vliqDnm5HlkKzkuovku7ZcclxuICBfdmlld2VyICYmIF92aWV3ZXIuY2xvY2sub25UaWNrLmFkZEV2ZW50TGlzdGVuZXIoZnVuY3Rpb24gKCkge1xyXG4gICAga2V5Ym9hcmRNYXBSb2FtaW5nUmVuZGVyKF92aWV3ZXIpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrprkuYnkuovku7bnu4RcclxubGV0IGZsYWdzID0ge1xyXG4gIC8vIOebuOacuuS9jee9rlxyXG4gIG1vdmVGb3J3YXJkOiBmYWxzZSxcclxuICBtb3ZlQmFja3dhcmQ6IGZhbHNlLFxyXG4gIG1vdmVMZWZ0OiBmYWxzZSxcclxuICBtb3ZlUmlnaHQ6IGZhbHNlLFxyXG4gIG1vdmVVcDogZmFsc2UsXHJcbiAgbW92ZURvd246IGZhbHNlLFxyXG4gIC8vIOebuOacuuWnv+aAgVxyXG4gIGxvb2tVcDogZmFsc2UsXHJcbiAgbG9va0Rvd246IGZhbHNlLFxyXG4gIGxvb2tMZWZ0OiBmYWxzZSxcclxuICBsb29rUmlnaHQ6IGZhbHNlLFxyXG4gIHR3aXN0TGVmdDogZmFsc2UsXHJcbiAgdHdpc3RSaWdodDogZmFsc2UsXHJcbiAgLy8g57yp5pS+XHJcbiAgem9vbUluOiBmYWxzZSxcclxuICB6b29tT3V0OiBmYWxzZVxyXG59XHJcblxyXG5cclxuLy8g55u45py65L2N572u77yaV++8muWQkeWJje+8m1PvvJrlkJHlkI7vvJtE77ya5ZCR5Y+z77ybQe+8muWQkeW3pu+8m1HvvJrljYfpq5jvvJtF77ya6ZmN5L2O77ybXHJcbi8vIOebuOacuuWnv+aAge+8muKGke+8muaKrOWktO+8m+KGk++8muS9juWktO+8m+KGkO+8muW3pui9rO+8m+KGku+8muWPs+i9rO+8mzDvvJrpobrml7bpkojvvJsu77ya6YCG5pe26ZKIXHJcbi8vIOe8qeaUvu+8mivvvJrmlL7lpKfvvIwt77ya57yp5bCP77ybXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uOiDmoLnmja7plK7nm5jovpPlhaXlrZfnrKbov5Tlm57kuovku7bkv6Hmga9cclxuICogQHBhcmFtIHsqfSBrZXlcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmZ1bmN0aW9uIGdldEZsYWdGcm9tS2V5Ym9hcmQoa2V5KSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIC8vIOaMieWtl+espueahFVuaWNvZGXnvJbnoIFcclxuICAgIC8vIOebuOacuuS9jee9rlxyXG4gICAgY2FzZSA4NzpcclxuICAgICAgcmV0dXJuICdtb3ZlRm9yd2FyZCc7XHJcbiAgICBjYXNlIDgzOlxyXG4gICAgICByZXR1cm4gJ21vdmVCYWNrd2FyZCc7XHJcbiAgICBjYXNlIDY4OlxyXG4gICAgICByZXR1cm4gJ21vdmVSaWdodCc7XHJcbiAgICBjYXNlIDY1OlxyXG4gICAgICByZXR1cm4gJ21vdmVMZWZ0JztcclxuICAgIGNhc2UgODE6XHJcbiAgICAgIHJldHVybiAnbW92ZVVwJztcclxuICAgIGNhc2UgNjk6XHJcbiAgICAgIHJldHVybiAnbW92ZURvd24nO1xyXG4gICAgLy8g55u45py65ae/5oCBXHJcbiAgICBjYXNlIDM4OlxyXG4gICAgICByZXR1cm4gJ2xvb2tVcCc7XHJcbiAgICBjYXNlIDQwOlxyXG4gICAgICByZXR1cm4gJ2xvb2tEb3duJztcclxuICAgIGNhc2UgMzc6XHJcbiAgICAgIHJldHVybiAnbG9va0xlZnQnO1xyXG4gICAgY2FzZSAzOTpcclxuICAgICAgcmV0dXJuICdsb29rUmlnaHQnO1xyXG4gICAgY2FzZSA5NjpcclxuICAgICAgcmV0dXJuICd0d2lzdExlZnQnO1xyXG4gICAgY2FzZSAxMTA6XHJcbiAgICAgIHJldHVybiAndHdpc3RSaWdodCc7XHJcbiAgICAvLyDnvKnmlL5cclxuICAgIGNhc2UgMTA3OlxyXG4gICAgICByZXR1cm4gJ3pvb21Jbic7XHJcbiAgICBjYXNlIDEwOTpcclxuICAgICAgcmV0dXJuICd6b29tT3V0JztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uOiDplK7nm5jmjInkuItcclxuICogQHBhcmFtIHsqfSBldmVudFxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5RG93bihldmVudCkge1xyXG4gIGxldCBfdmlld2VyID0gdGhpc1xyXG5cclxuICAvLyDliKTmlq3mmK/lkKbmnInovpPlhaXmoYbogZrnhKZcclxuICBmdW5jdGlvbiBpc0lucHV0Rm9jdXNlZCgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIChhY3RpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiBhY3RpdmVFbGVtZW50LnR5cGUgIT09ICdjaGVja2JveCcpIHx8XHJcbiAgICAgIGFjdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGV4dGFyZWEnIHx8XHJcbiAgICAgIGFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykgPT09ICd0ZXh0YXJlYSc7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJbnB1dEZvY3VzZWQoKSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ+mhtemdouS4iuaciei+k+WFpeahhuW3sue7j+iOt+WPlueEpueCuScpO1xyXG4gIH0gZWxzZSBpZiAoX3ZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn6KeG6KeS6Lef6ZqP5LitJyk7XHJcbiAgfSBlbHNlIGlmIChfdmlld2VyLl9maXJzdFBlcnNvblZpZXcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfnrKzkuIDkurrnp7Dop4bop5LkuK0nKTtcclxuICB9IGVsc2UgaWYgKF92aWV3ZXIuX2Rpc2FibGVLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn56aB55So6ZSu55uY5LqL5Lu2Jyk7XHJcbiAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmFsdEtleSkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ3YnIHx8IGV2ZW50LmtleSA9PT0gJ1YnKSB7XHJcbiAgICAgIGxldCBjYW1lcmEgPSBfdmlld2VyLmNhbWVyYVxyXG4gICAgICBfdmlld2VyLl9DQU1FUkFfU0hPUlRDVVRfVklFVyA9IHtcclxuICAgICAgICBvcmllbnRhdGlvbjogeyBoZWFkaW5nOiBjYW1lcmEuaGVhZGluZywgcGl0Y2g6IGNhbWVyYS5waXRjaCwgcm9sbDogY2FtZXJhLnJvbGwgfSxcclxuICAgICAgICBwb3NpdGlvbjogeyB4OiBjYW1lcmEucG9zaXRpb24ueCwgeTogY2FtZXJhLnBvc2l0aW9uLnksIHo6IGNhbWVyYS5wb3NpdGlvbi56IH1cclxuICAgICAgfVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcnLCBKU09OLnN0cmluZ2lmeShfdmlld2VyLl9DQU1FUkFfU0hPUlRDVVRfVklFVykpXHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZicgfHwgZXZlbnQua2V5ID09PSAnRicpIHtcclxuICAgICAgbGV0IENBTUVSQV9TSE9SVENVVF9WSUVXID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NBTUVSQV9TSE9SVENVVF9WSUVXJylcclxuICAgICAgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcgPSBKU09OLnBhcnNlKENBTUVSQV9TSE9SVENVVF9WSUVXKVxyXG4gICAgICBpZiAoX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcgJiYgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcucG9zaXRpb24gJiYgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcub3JpZW50YXRpb24pIHtcclxuICAgICAgICBfdmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbjogX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcucG9zaXRpb24sXHJcbiAgICAgICAgICBvcmllbnRhdGlvbjogX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcub3JpZW50YXRpb25cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfpobXpnaLkuIrmsqHmnInovpPlhaXmoYbojrflj5bnhKbngrknKTtcclxuICAgIGxldCBmbGFnTmFtZSA9IGdldEZsYWdGcm9tS2V5Ym9hcmQoZXZlbnQua2V5Q29kZSk7XHJcbiAgICBpZiAodHlwZW9mIGZsYWdOYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBmbGFnc1tmbGFnTmFtZV0gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog6ZSu55uY5by56LW3XHJcbiAqIEBwYXJhbSB7Kn0gZXZlbnRcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmZ1bmN0aW9uIGtleVVwKGV2ZW50KSB7XHJcbiAgbGV0IGZsYWdOYW1lID0gZ2V0RmxhZ0Zyb21LZXlib2FyZChldmVudC5rZXlDb2RlKTtcclxuICBpZiAodHlwZW9mIGZsYWdOYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgZmxhZ3NbZmxhZ05hbWVdID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog5qC55o2u5LqL5Lu26LCD5pW055u45py6XHJcbiAqIEBwYXJhbSB7Kn0gX3ZpZXdlclxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5Ym9hcmRNYXBSb2FtaW5nUmVuZGVyKF92aWV3ZXIpIHtcclxuICBpZighX3ZpZXdlciB8fCAhX3ZpZXdlci5zY2VuZSB8fCAhX3ZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVGlsdCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjYW1lcmEgPSBfdmlld2VyLmNhbWVyYTtcclxuICBsZXQgZWxsaXBzb2lkID0gX3ZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQ7XHJcbiAgbGV0IGNhbWVyYUhlaWdodCA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhjYW1lcmEucG9zaXRpb24pLmhlaWdodDtcclxuICBsZXQgY2FtZXJhSGVpZ2h0MiA9IGNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcblxyXG5cclxuICAvLyDmoLnmja7nm7jmnLrpq5jluqborr7nva7np7vliqjot53nprvvvIzmr5Tpu5jorqTot53nprvnp7vliqjmlYjmnpzmm7Tlpb1cclxuICBsZXQgbW92ZVJhdGUgPSBjYW1lcmFIZWlnaHQgLyAyMC4wO1xyXG4gIGxldCByb3RhdGlvblJhdGUgPSBtb3ZlUmF0ZSAvIDUwMDAwMCAvIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYW1lcmEucGl0Y2gpO1xyXG4gIGxldCBtb3ZlUmF0ZTIgPSBjYW1lcmFIZWlnaHQyIC8gMTAwLjA7XHJcblxyXG4gIGlmIChmbGFncy5tb3ZlRm9yd2FyZCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVVcChtb3ZlUmF0ZTIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNhbWVyYS5yb3RhdGUoY2FtZXJhLnJpZ2h0LCAtcm90YXRpb25SYXRlKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKGZsYWdzLm1vdmVCYWNrd2FyZCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVEb3duKG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEucmlnaHQsIHJvdGF0aW9uUmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChmbGFncy5tb3ZlTGVmdCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVMZWZ0KG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEudXAsIC1yb3RhdGlvblJhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoZmxhZ3MubW92ZVJpZ2h0KSB7XHJcbiAgICBpZihfdmlld2VyLnNjZW5lLm1vZGUgPT0gMikge1xyXG4gICAgICBjYW1lcmEubW92ZVJpZ2h0KG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEudXAsIHJvdGF0aW9uUmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChmbGFncy5tb3ZlVXApIHtcclxuICAgIGNhbWVyYS5tb3ZlVXAobW92ZVJhdGUpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3MubW92ZURvd24pIHtcclxuICAgIGNhbWVyYS5tb3ZlRG93bihtb3ZlUmF0ZSk7XHJcbiAgfVxyXG4gIGlmIChmbGFncy5sb29rVXApIHtcclxuICAgIGNhbWVyYS5sb29rVXAoKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tEb3duKSB7XHJcbiAgICBjYW1lcmEubG9va0Rvd24oKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tMZWZ0KSB7XHJcbiAgICBjYW1lcmEubG9va0xlZnQoKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tSaWdodCkge1xyXG4gICAgY2FtZXJhLmxvb2tSaWdodCgpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3MudHdpc3RMZWZ0KSB7XHJcbiAgICBjYW1lcmEudHdpc3RMZWZ0KCk7XHJcbiAgfVxyXG4gIGlmIChmbGFncy50d2lzdFJpZ2h0KSB7XHJcbiAgICBjYW1lcmEudHdpc3RSaWdodCgpO1xyXG4gIH1cclxuICAvLyDmoLnmja7nm7jmnLrpq5jluqborr7nva7nvKnmlL7lj4LmlbBcclxuICBpZiAoZmxhZ3Muem9vbUluKSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gY2FtZXJhSGVpZ2h0IC8gMlxyXG4gICAgaWYgKGhlaWdodCA8IDEpIHtcclxuICAgICAgaGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgY2FtZXJhLnpvb21JbihoZWlnaHQpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3Muem9vbU91dCkge1xyXG4gICAgbGV0IGhlaWdodCA9IGNhbWVyYUhlaWdodCAvIDJcclxuICAgIGlmICgoY2FtZXJhSGVpZ2h0ICsgY2FtZXJhSGVpZ2h0KSA+PSA1MDAwMDAwMCkge1xyXG4gICAgICBoZWlnaHQgPSA1MDAwMDAwMCAtIGNhbWVyYUhlaWdodFxyXG4gICAgfVxyXG4gICAgY2FtZXJhLnpvb21PdXQoaGVpZ2h0KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IGtleWJvYXJkTWFwUm9hbWluZ0luaXQgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/KeyBoard/index.js\n"); - -/***/ }), - -/***/ "./src/Global/MapPrint/dataSource.js": -/*!*******************************************!*\ - !*** ./src/Global/MapPrint/dataSource.js ***! - \*******************************************/ -/*! exports provided: getTemplateData */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTemplateData\", function() { return getTemplateData; });\nfunction getTemplateData(tools) {\n return [{\n \"name\": \"模板一\",\n \"value\": \"模板一\",\n \"id\": \"1\",\n margin: 0.03,\n title: {\n text: '标题一',\n height: 0.05,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n },\n border: {\n show: false,\n url: '/custom/img/map-border1.svg',\n width: 0.01,\n color: ''\n },\n plottingScale: {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 0.87,\n y: 0.97\n },\n data: [{\n text: '',\n x: 0.02,\n y: 0.93,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n text: '',\n x: 0.02,\n y: 0.97,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n x: 0.02,\n y: 0.1,\n show: false,\n isSelected: false,\n url: '/custom/img/icon-compass1.svg',\n width: 0.1,\n height: 0.1\n }]\n }, {\n \"name\": \"模板二\",\n \"value\": \"模板二\",\n \"id\": \"2\",\n margin: 0.03,\n border: {\n show: true,\n url: '/custom/img/map-border2.svg',\n width: 0.01\n },\n title: {\n text: '标题二',\n height: 0.05,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n },\n plottingScale: {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 0.02,\n y: 0.97\n },\n data: [{\n text: '',\n x: 0.88,\n y: 0.93,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n text: '',\n x: 0.87,\n y: 0.97,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n x: 0.91,\n y: 0.1,\n show: true,\n isSelected: false,\n url: '/custom/img/icon-compass4.svg',\n width: 0.1,\n height: 0.1\n }]\n }];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFByaW50L2RhdGFTb3VyY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL01hcFByaW50L2RhdGFTb3VyY2UuanM/NWI1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBnZXRUZW1wbGF0ZURhdGEodG9vbHMpIHtcclxuICByZXR1cm4gW1xyXG4gICAge1xyXG4gICAgICBcIm5hbWVcIjogXCLmqKHmnb/kuIBcIixcclxuICAgICAgXCJ2YWx1ZVwiOiBcIuaooeadv+S4gFwiLFxyXG4gICAgICBcImlkXCI6IFwiMVwiLFxyXG4gICAgICBtYXJnaW46IDAuMDMsXHJcbiAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgdGV4dDogJ+agh+mimOS4gCcsXHJcbiAgICAgICAgaGVpZ2h0OiAwLjA1LFxyXG4gICAgICAgIGJnQ29sb3I6ICcjNWQ1ZDVkJyxcclxuICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgIHNob3c6IGZhbHNlLFxyXG4gICAgICAgIHVybDogJy9jdXN0b20vaW1nL21hcC1ib3JkZXIxLnN2ZycsXHJcbiAgICAgICAgd2lkdGg6IDAuMDEsXHJcbiAgICAgICAgY29sb3I6ICcnXHJcbiAgICAgIH0sXHJcbiAgICAgIHBsb3R0aW5nU2NhbGU6IHtcclxuICAgICAgICBjZWxsOiAyLFxyXG4gICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICB4OiAwLjg3LFxyXG4gICAgICAgIHk6IDAuOTcsXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGE6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgICB5OiAwLjkzLFxyXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgIGhlaWdodDogMC4wM1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJycsXHJcbiAgICAgICAgICB4OiAwLjAyLFxyXG4gICAgICAgICAgeTogMC45NyxcclxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgICBoZWlnaHQ6IDAuMDNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgICB5OiAwLjEsXHJcbiAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgdXJsOiAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMS5zdmcnLFxyXG4gICAgICAgICAgd2lkdGg6IDAuMSxcclxuICAgICAgICAgIGhlaWdodDogMC4xXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcIm5hbWVcIjogXCLmqKHmnb/kuoxcIixcclxuICAgICAgXCJ2YWx1ZVwiOiBcIuaooeadv+S6jFwiLFxyXG4gICAgICBcImlkXCI6IFwiMlwiLFxyXG4gICAgICBtYXJnaW46IDAuMDMsXHJcbiAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgdXJsOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjIuc3ZnJyxcclxuICAgICAgICB3aWR0aDogMC4wMSxcclxuICAgICAgfSxcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICB0ZXh0OiAn5qCH6aKY5LqMJyxcclxuICAgICAgICBoZWlnaHQ6IDAuMDUsXHJcbiAgICAgICAgYmdDb2xvcjogJyM1ZDVkNWQnLFxyXG4gICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgcGxvdHRpbmdTY2FsZToge1xyXG4gICAgICAgIGNlbGw6IDIsXHJcbiAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgeTogMC45NyxcclxuICAgICAgfSxcclxuICAgICAgZGF0YTogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICcnLFxyXG4gICAgICAgICAgeDogMC44OCxcclxuICAgICAgICAgIHk6IDAuOTMsXHJcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgaGVpZ2h0OiAwLjAzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgIHg6IDAuODcsXHJcbiAgICAgICAgICB5OiAwLjk3LFxyXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgIGhlaWdodDogMC4wM1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgeDogMC45MSxcclxuICAgICAgICAgIHk6IDAuMSxcclxuICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgIHVybDogJy9jdXN0b20vaW1nL2ljb24tY29tcGFzczQuc3ZnJyxcclxuICAgICAgICAgIHdpZHRoOiAwLjEsXHJcbiAgICAgICAgICBoZWlnaHQ6IDAuMVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfVxyXG4gIF1cclxufVxyXG5cclxuZXhwb3J0IHsgZ2V0VGVtcGxhdGVEYXRhIH07Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MapPrint/dataSource.js\n"); - -/***/ }), - -/***/ "./src/Global/MapPrint/index.js": -/*!**************************************!*\ - !*** ./src/Global/MapPrint/index.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Obj/Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _dataSource_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dataSource.js */ \"./src/Global/MapPrint/dataSource.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\nvar tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\nvar MapPrint = /*#__PURE__*/function () {\n function MapPrint(sdk, thumbnailImg, rectangle, originalImg, modify) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MapPrint);\n this.sdk = sdk;\n this.thumbnailImg = thumbnailImg;\n this.rectangle = rectangle;\n this.originalImg = originalImg;\n this.modify = modify;\n this.load();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MapPrint, [{\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n var _this, exporting, templateData, _DialogObject, template, unitDistance, isLoad, borderImage, margin, svgText, title, border, data, plottingScale, compassList, contentElm, leftElm, rightElm, titleInputElm, titleCheckboxElm, unitInputElm, unitCheckboxElm, compassCheckboxElm, compassRadiosElm, plottingScaleCheckboxElm, mapBorderCheckboxElm, canvas, ctx, imgElm, _loop, i, borderColorPicker, jeDateObject, printDateCheckboxElm, mapBorderDataLegpElm, mapBorderObject, iActiveElm, closeBtn, exportBtn, initData, changeTemplate, changeMapBorder, changeMapBorderColor, isDragging, triggerRange, selectedElement, isDraggingElement, isResizingElement, resizeCorner, startX, startY, startY2, startX2, elementOffsetX, elementOffsetY, elementWidth, elementHeight, currentFontSize, getCanvasMouseY, getCanvasMouseX, getCorners, updateCanvas, drawBorder, drawSelectionBorder, getPlottingScale, getDateTimeString, exportMap;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n exportMap = function _exportMap() {\n var unitDistance2;\n var canvas2 = document.createElement('canvas');\n var ctx2 = canvas2.getContext('2d');\n var imgElm2 = new Image();\n imgElm2.src = _this.originalImg;\n imgElm2.onload = function () {\n if (isLoad) {\n return;\n }\n var title2 = _objectSpread({}, title);\n var data2 = JSON.parse(JSON.stringify(data));\n var plottingScale2 = _objectSpread({}, plottingScale);\n var border2 = _objectSpread({}, border);\n border2.width = border.width / imgElm.width * imgElm2.width;\n var margin2 = margin / imgElm.width * imgElm2.width;\n var allmargin = margin2;\n if (border2.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border2.width;\n }\n canvas2.width = imgElm2.width + allmargin * 2;\n canvas2.height = imgElm2.height + allmargin * 2;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n ctx2.rect(0, 0, canvas2.width, canvas2.height);\n ctx2.fillStyle = \"#ffffff\";\n ctx2.fill();\n ctx2.drawImage(imgElm2, allmargin, allmargin, imgElm2.width, imgElm2.height);\n // 标题内容\n if (title2.show) {\n var text = title2.text;\n var fontSize = Math.max(5, title2.height * imgElm2.height * 0.5);\n ctx2.font = \"\".concat(fontSize, \"px serif\");\n ctx2.fillStyle = title2.bgColor || '#5d5d5d';\n ctx2.fillRect(allmargin, allmargin, canvas2.width - allmargin * 2, title2.height * imgElm2.height);\n ctx2.fillStyle = title2.color || 'white';\n ctx2.textAlign = 'center';\n ctx2.textBaseline = 'middle';\n ctx2.fillText(text, canvas2.width / 2, title2.height * imgElm2.height / 2 + allmargin);\n }\n\n // 其他内容\n var _loop3 = function _loop3(_i15) {\n if (data2[_i15].show) {\n if ('text' in data2[_i15]) {\n ctx2.font = \"\".concat(imgElm2.height * data2[_i15].height, \"px serif\");\n ctx2.fillStyle = data2[_i15].color || 'white';\n ctx2.textAlign = 'left';\n ctx2.textBaseline = 'bottom';\n data2[_i15].width = ctx2.measureText(data2[_i15].text).width / imgElm2.height;\n ctx2.fillText(data2[_i15].text, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin);\n } else if ('url' in data2[_i15]) {\n if (data[_i15].svg && data[_i15].svg.complete) {\n ctx2.drawImage(data[_i15].svg, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin, imgElm2.height * data2[_i15].width, imgElm2.height * data2[_i15].height);\n } else {\n var svg = new Image();\n svg.src = tools.getSourceRootPath() + data2[_i15].url;\n svg.onload = function () {\n data2[_i15].svg = svg;\n ctx2.drawImage(svg, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin, imgElm2.height * data2[_i15].width, imgElm2.height * data2[_i15].height);\n };\n }\n }\n }\n };\n for (var _i15 = 0; _i15 < data2.length; _i15++) {\n _loop3(_i15);\n }\n\n // 比例尺\n if (plottingScale2.show) {\n getPlottingScale();\n var plottingScale2X = imgElm2.width * plottingScale2.x + allmargin;\n var plottingScale2Y = imgElm2.height * plottingScale2.y + allmargin;\n var unit = 'm';\n // const fontSize = plottingScale2.width * 0.12;\n var _fontSize2 = imgElm2.width * 0.08 * 0.12;\n var spacing = imgElm2.width * 0.08 / plottingScale2.cell;\n var spacingDistance = Math.round(unitDistance2 * spacing);\n var spacingDistanceString = spacingDistance + '';\n if (spacingDistance < 10) {} else {\n spacingDistance = Number(spacingDistanceString[0]);\n for (var _i16 = 0; _i16 < spacingDistanceString.length - 1; _i16++) {\n spacingDistance = spacingDistance * 10;\n }\n spacing = spacingDistance / unitDistance2;\n }\n plottingScale2.width = spacing * plottingScale2.cell;\n plottingScale2.height = plottingScale2.width * 0.2;\n if (spacingDistance >= 1000) {\n unit = '㎞';\n spacingDistance = Math.round(spacingDistance / 1000);\n }\n var scaleY = plottingScale2Y;\n ctx2.beginPath();\n ctx2.moveTo(plottingScale2X, scaleY);\n ctx2.lineTo(plottingScale2X + plottingScale2.width, scaleY);\n ctx2.strokeStyle = plottingScale2.color;\n ctx2.lineWidth = plottingScale2.width * 0.01;\n ctx2.stroke();\n var tickX = 0;\n for (var _i17 = 0; _i17 <= plottingScale2.cell; _i17++) {\n tickX = plottingScale2X + _i17 * spacing;\n ctx2.beginPath();\n ctx2.moveTo(tickX, scaleY - plottingScale2.width * 0.1);\n ctx2.lineTo(tickX, scaleY);\n ctx2.strokeStyle = plottingScale2.color;\n ctx2.lineWidth = plottingScale2.width * 0.01;\n ctx2.stroke();\n ctx2.font = \"\".concat(_fontSize2, \"px Arial\");\n ctx2.fillStyle = plottingScale2.color;\n ctx2.textAlign = 'center';\n ctx2.textBaseline = 'bottom';\n ctx2.fillText(_i17 * spacingDistance, tickX, scaleY - plottingScale2.width * 0.1);\n }\n ctx2.font = \"\".concat(_fontSize2, \"px Arial\");\n ctx2.fillStyle = plottingScale2.color;\n ctx2.textAlign = 'left';\n ctx2.textBaseline = 'bottom';\n ctx2.fillText(unit, tickX + _fontSize2 * 1.2, scaleY - plottingScale2.width * 0.1);\n }\n\n // 边框\n if (border2.show && borderImage && borderImage.complete) {\n // 绘制四个角(裁剪成45度角)\n drawBorder2(ctx2, borderImage, margin2, margin2, border2.width, 'top', 1);\n drawBorder2(ctx2, borderImage, canvas2.width - border2.width - margin2, margin2, border2.width, 'right', 1);\n drawBorder2(ctx2, borderImage, canvas2.width - border2.width - margin2, canvas2.height - border2.width - margin2, border2.width, 'bottom', 1);\n drawBorder2(ctx2, borderImage, margin2, canvas2.height - border2.width - margin2, border2.width, 'left', 1);\n }\n function getPlottingScale() {\n if (!_this.rectangle) {\n return;\n }\n var westLng = Cesium.Math.toDegrees(_this.rectangle.west);\n var eastLng = Cesium.Math.toDegrees(_this.rectangle.east);\n var northLat = Cesium.Math.toDegrees(_this.rectangle.north);\n var southLat = Cesium.Math.toDegrees(_this.rectangle.south);\n var from = turf.point([westLng, northLat]);\n var to = turf.point([eastLng, northLat]);\n var distance = turf.distance(from, to, {\n units: 'kilometers'\n });\n unitDistance2 = distance * 1000 / imgElm2.width;\n }\n\n // 绘制边框\n function drawBorder2(ctx2, img, x, y, size, position) {\n var isStart = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n ctx2.save();\n ctx2.translate(x + size / 2, y + size / 2);\n\n // 根据位置设置旋转角度\n switch (position) {\n case 'right':\n ctx2.rotate(Math.PI / 2);\n break;\n case 'bottom':\n ctx2.rotate(Math.PI);\n break;\n case 'left':\n ctx2.rotate(3 * Math.PI / 2);\n break;\n }\n // 创建45度角的裁剪路径\n ctx2.beginPath();\n ctx2.moveTo(-size * isStart / 2, -size / 2);\n if (position === 'top' || position === 'bottom') {\n ctx2.lineTo(canvas2.width - margin2 * 2 - size / 2, -size / 2);\n ctx2.lineTo(canvas2.width - (margin2 + size) * 2 + size / 2, size / 2);\n } else {\n ctx2.lineTo(canvas2.height - margin2 * 2 - size / 2, -size / 2);\n ctx2.lineTo(canvas2.height - (margin2 + size) * 2 + size / 2, size / 2);\n }\n ctx2.lineTo(size * isStart / 2, size / 2);\n ctx2.closePath();\n ctx2.clip();\n var imgWidth = img.width / img.height * size;\n\n // 绘制图片\n ctx2.drawImage(img, -size / 2, -size / 2, imgWidth, size);\n var count;\n if (position === 'top' || position === 'bottom') {\n count = Math.ceil((canvas2.width - margin2 * 2 - border2.width * 2) / border2.width);\n } else {\n count = Math.ceil((canvas2.height - margin2 * 2 - border2.width * 2) / border2.width);\n }\n count++;\n for (var _i18 = 1; _i18 <= count; _i18++) {\n ctx2.drawImage(img, -size / 2 + imgWidth * _i18, -size / 2, imgWidth, size);\n }\n ctx2.restore();\n }\n\n // let dataURL = canvas2.toDataURL('image/jpeg', 0.95)\n // let downloadElement = document.createElement('a');\n // downloadElement.href = dataURL;\n // downloadElement.download = `高清出图-${getDateTimeString()}.jpg`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // console.log('dataURL', dataURL)\n // URL.revokeObjectURL(dataURL);\n\n // 在释放资源后执行回调\n\n canvas2.toBlob(function (blob) {\n var url = URL.createObjectURL(blob);\n var downloadElement = document.createElement('a');\n downloadElement.href = url;\n downloadElement.download = \"\\u9AD8\\u6E05\\u51FA\\u56FE-\".concat(getDateTimeString(), \".png\");\n document.body.appendChild(downloadElement);\n downloadElement.click();\n document.body.removeChild(downloadElement);\n setTimeout(function () {\n exporting = false;\n exportBtn.innerHTML = '打印';\n }, 100);\n }, 'image/png', 0.95);\n\n // canvas2.toBlob(function (blob) {\n // let imgBlobData = URL.createObjectURL(blob);\n // let downloadElement = document.createElement('a');\n // downloadElement.href = imgBlobData;\n // downloadElement.download = `高清出图-${getDateTimeString()}.png`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // URL.revokeObjectURL(imgBlobData);\n\n // // 在释放资源后执行回调\n // exporting = false;\n // exportBtn.innerHTML = '打印';\n // });\n };\n };\n getDateTimeString = function _getDateTimeString() {\n // 创建一个表示当前时间的 Date 对象\n var now = new Date();\n // 获取年份\n var year = now.getFullYear();\n // 获取月份(从 0 开始,所以要加 1),并将其转换为两位字符串,不足两位在前面补零\n var month = String(now.getMonth() + 1).padStart(2, '0');\n // 获取日期,并将其转换为两位字符串,不足两位在前面补零\n var day = String(now.getDate()).padStart(2, '0');\n // 获取小时,并将其转换为两位字符串,不足两位在前面补零\n var hours = String(now.getHours()).padStart(2, '0');\n // 获取分钟,并将其转换为两位字符串,不足两位在前面补零\n var minutes = String(now.getMinutes()).padStart(2, '0');\n // 获取秒,并将其转换为两位字符串,不足两位在前面补零\n var seconds = String(now.getSeconds()).padStart(2, '0');\n // 获取毫秒,并将其转换为三位字符串,不足三位在前面补零\n var milliseconds = String(now.getMilliseconds()).padStart(3, '0');\n // 将年、月、日、时、分、秒、毫秒拼接成所需的字符串\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n };\n getPlottingScale = function _getPlottingScale() {\n if (!_this.rectangle) {\n return;\n }\n var westLng = Cesium.Math.toDegrees(_this.rectangle.west);\n var eastLng = Cesium.Math.toDegrees(_this.rectangle.east);\n var northLat = Cesium.Math.toDegrees(_this.rectangle.north);\n var southLat = Cesium.Math.toDegrees(_this.rectangle.south);\n var from = turf.point([westLng, northLat]);\n var to = turf.point([eastLng, northLat]);\n var distance = turf.distance(from, to, {\n units: 'kilometers'\n });\n unitDistance = distance * 1000 / imgElm.width;\n };\n drawSelectionBorder = function _drawSelectionBorder(element) {\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n var cornerRadius = canvas.height * 0.005;\n ctx.strokeStyle = 'red';\n ctx.lineWidth = canvas.height * 0.002;\n if ('text' in element) {\n ctx.strokeRect(imgElm.width * element.x + allmargin, imgElm.height * element.y + allmargin - imgElm.height * element.height, imgElm.height * element.width, imgElm.height * element.height);\n } else if ('url' in element) {\n ctx.strokeRect(imgElm.width * element.x + allmargin, imgElm.height * element.y + allmargin, imgElm.height * element.width, imgElm.height * element.height);\n } else if (element === plottingScale) {\n ctx.strokeRect(imgElm.width * element.x + allmargin - plottingScale.width * 0.2, imgElm.height * element.y + allmargin - element.height - plottingScale.height * 0.5, element.width + plottingScale.width * 0.6, element.height + plottingScale.height);\n return;\n }\n var corners = getCorners(element, allmargin);\n ctx.fillStyle = 'red';\n corners.forEach(function (corner) {\n ctx.beginPath();\n ctx.arc(corner.x, corner.y, cornerRadius, 0, 2 * Math.PI);\n ctx.fill();\n });\n };\n drawBorder = function _drawBorder(ctx, img, x, y, size, position) {\n var isStart = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n ctx.save();\n ctx.translate(x + size / 2, y + size / 2);\n\n // 根据位置设置旋转角度\n switch (position) {\n case 'right':\n ctx.rotate(Math.PI / 2);\n break;\n case 'bottom':\n ctx.rotate(Math.PI);\n break;\n case 'left':\n ctx.rotate(3 * Math.PI / 2);\n break;\n }\n // 创建45度角的裁剪路径\n ctx.beginPath();\n ctx.moveTo(-size * isStart / 2, -size / 2);\n if (position === 'top' || position === 'bottom') {\n ctx.lineTo(canvas.width - margin * 2 - size / 2, -size / 2);\n ctx.lineTo(canvas.width - (margin + size) * 2 + size / 2, size / 2);\n } else {\n ctx.lineTo(canvas.height - margin * 2 - size / 2, -size / 2);\n ctx.lineTo(canvas.height - (margin + size) * 2 + size / 2, size / 2);\n }\n ctx.lineTo(size * isStart / 2, size / 2);\n ctx.closePath();\n ctx.clip();\n var imgWidth = img.width / img.height * size;\n\n // 绘制图片\n ctx.drawImage(img, -size / 2, -size / 2, imgWidth, size);\n var count;\n if (position === 'top' || position === 'bottom') {\n count = Math.ceil((canvas.width - margin * 2 - border.width * 2) / border.width);\n } else {\n count = Math.ceil((canvas.height - margin * 2 - border.width * 2) / border.width);\n }\n count++;\n for (var _i10 = 1; _i10 <= count; _i10++) {\n ctx.drawImage(img, -size / 2 + imgWidth * _i10, -size / 2, imgWidth, size);\n }\n ctx.restore();\n };\n updateCanvas = function _updateCanvas() {\n if (isLoad) {\n return;\n }\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n canvas.width = imgElm.width + allmargin * 2;\n canvas.height = imgElm.height + allmargin * 2;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.rect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = \"#ffffff\";\n ctx.fill();\n ctx.drawImage(imgElm, allmargin, allmargin, imgElm.width, imgElm.height);\n\n // 标题内容\n if (title.show) {\n var text = title.text;\n var fontSize = Math.max(5, title.height * imgElm.height * 0.5);\n ctx.font = \"\".concat(fontSize, \"px serif\");\n // const textWidth = ctx.measureText(text).width;\n ctx.fillStyle = title.bgColor || '#5d5d5d';\n ctx.fillRect(allmargin, allmargin, canvas.width - allmargin * 2, title.height * imgElm.height);\n ctx.fillStyle = title.color || 'white';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, canvas.width / 2, title.height * imgElm.height / 2 + allmargin);\n }\n\n // 其他内容\n var _loop2 = function _loop2(_i7) {\n if (data[_i7].show) {\n if ('text' in data[_i7]) {\n ctx.font = \"\".concat(imgElm.height * data[_i7].height, \"px serif\");\n ctx.fillStyle = data[_i7].color || 'white';\n ctx.textAlign = 'left';\n ctx.textBaseline = 'bottom';\n data[_i7].width = ctx.measureText(data[_i7].text).width / imgElm.height;\n ctx.fillText(data[_i7].text, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n } else if ('url' in data[_i7]) {\n if (data[_i7].svg && data[_i7].svg.complete) {\n ctx.drawImage(data[_i7].svg, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin, imgElm.height * data[_i7].width, imgElm.height * data[_i7].height);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n } else {\n var svg = new Image();\n svg.src = tools.getSourceRootPath() + data[_i7].url;\n svg.onload = function () {\n data[_i7].svg = svg;\n ctx.drawImage(svg, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin, imgElm.height * data[_i7].width, imgElm.height * data[_i7].height);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n };\n }\n }\n }\n };\n for (var _i7 = 0; _i7 < data.length; _i7++) {\n _loop2(_i7);\n }\n\n // 比例尺\n if (plottingScale.show) {\n var _allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n _allmargin = _allmargin + border.width;\n }\n var plottingScaleX = imgElm.width * plottingScale.x + _allmargin;\n var plottingScaleY = imgElm.height * plottingScale.y + _allmargin;\n var unit = 'm';\n // const fontSize = plottingScale.width * 0.12;\n var _fontSize = imgElm.width * 0.08 * 0.12;\n var spacing = imgElm.width * 0.08 / plottingScale.cell;\n var spacingDistance = Math.round(unitDistance * spacing);\n var spacingDistanceString = spacingDistance + '';\n if (spacingDistance < 10) {} else {\n spacingDistance = Number(spacingDistanceString[0]);\n for (var _i8 = 0; _i8 < spacingDistanceString.length - 1; _i8++) {\n spacingDistance = spacingDistance * 10;\n }\n spacing = spacingDistance / unitDistance;\n }\n plottingScale.width = spacing * plottingScale.cell;\n plottingScale.height = plottingScale.width * 0.2;\n if (spacingDistance >= 1000) {\n unit = '㎞';\n spacingDistance = Math.round(spacingDistance / 1000);\n }\n var scaleY = plottingScaleY;\n ctx.beginPath();\n ctx.moveTo(plottingScaleX, scaleY);\n ctx.lineTo(plottingScaleX + plottingScale.width, scaleY);\n ctx.strokeStyle = plottingScale.color;\n ctx.lineWidth = plottingScale.width * 0.01;\n ctx.stroke();\n var tickX = 0;\n for (var _i9 = 0; _i9 <= plottingScale.cell; _i9++) {\n tickX = plottingScaleX + _i9 * spacing;\n ctx.beginPath();\n ctx.moveTo(tickX, scaleY - plottingScale.width * 0.1);\n ctx.lineTo(tickX, scaleY);\n ctx.strokeStyle = plottingScale.color;\n ctx.lineWidth = plottingScale.width * 0.01;\n ctx.stroke();\n ctx.font = \"\".concat(_fontSize, \"px Arial\");\n ctx.fillStyle = plottingScale.color;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'bottom';\n ctx.fillText(_i9 * spacingDistance, tickX, scaleY - plottingScale.width * 0.1);\n }\n ctx.font = \"\".concat(_fontSize, \"px Arial\");\n ctx.fillStyle = plottingScale.color;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'bottom';\n ctx.fillText(unit, tickX + _fontSize * 1.2, scaleY - plottingScale.width * 0.1);\n if (plottingScale.isSelected) {\n drawSelectionBorder(plottingScale);\n }\n }\n\n // 边框\n if (border.show && borderImage && borderImage.complete) {\n // 绘制四个角(裁剪成45度角)\n drawBorder(ctx, borderImage, margin, margin, border.width, 'top', 1);\n drawBorder(ctx, borderImage, canvas.width - border.width - margin, margin, border.width, 'right', 1);\n drawBorder(ctx, borderImage, canvas.width - border.width - margin, canvas.height - border.width - margin, border.width, 'bottom', 1);\n drawBorder(ctx, borderImage, margin, canvas.height - border.width - margin, border.width, 'left', 1);\n }\n };\n getCorners = function _getCorners(element, allmargin) {\n var elementX = element.x * imgElm.width + allmargin;\n var elementY = element.y * imgElm.height + allmargin;\n var elementWidth = element.width * imgElm.height;\n var elementHeight = element.height * imgElm.height;\n if ('text' in element) {\n return [{\n x: elementX,\n y: elementY - elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY - elementHeight\n }, {\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }];\n } else if ('url' in element) {\n return [{\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }, {\n x: elementX,\n y: elementY + elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY + elementHeight\n }];\n } else {\n // 比例尺\n return [{\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }, {\n x: elementX,\n y: elementY + elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY + elementHeight\n }];\n }\n };\n getCanvasMouseX = function _getCanvasMouseX(e) {\n var rect = canvas.getBoundingClientRect();\n var containerWidth = rect.width;\n var containerHeight = rect.height;\n var canvasWidth = canvas.width;\n var canvasHeight = canvas.height;\n var scale;\n if (canvasWidth / canvasHeight > containerWidth / containerHeight) {\n scale = containerWidth / canvasWidth;\n } else {\n scale = containerHeight / canvasHeight;\n }\n var scaledWidth = canvasWidth * scale;\n var scaledHeight = canvasHeight * scale;\n var offsetX = (containerWidth - scaledWidth) / 2;\n var offsetY = (containerHeight - scaledHeight) / 2;\n var clientX = e.clientX - rect.left - offsetX;\n return clientX / scale;\n };\n getCanvasMouseY = function _getCanvasMouseY(e) {\n var rect = canvas.getBoundingClientRect();\n var containerWidth = rect.width;\n var containerHeight = rect.height;\n var canvasWidth = canvas.width;\n var canvasHeight = canvas.height;\n var scale;\n if (canvasWidth / canvasHeight > containerWidth / containerHeight) {\n scale = containerWidth / canvasWidth;\n } else {\n scale = containerHeight / canvasHeight;\n }\n var scaledWidth = canvasWidth * scale;\n var scaledHeight = canvasHeight * scale;\n var offsetX = (containerWidth - scaledWidth) / 2;\n var offsetY = (containerHeight - scaledHeight) / 2;\n var clientY = e.clientY - rect.top - offsetY;\n return clientY / scale;\n };\n changeMapBorderColor = function _changeMapBorderColor(color) {\n border.color = color || '#000000';\n new YJColorPicker({\n el: contentElm.getElementsByClassName('border-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: border.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n changeMapBorderColor(color);\n },\n //点击确认按钮事件回调\n clear: function clear() {\n changeMapBorderColor('rgba(0,0,0,1)');\n } //点击清空按钮事件回调\n });\n var currentSvg;\n var svgDataUrl;\n if (color) {\n var colorRegex = /fill=\"[^\"]+\"/g;\n currentSvg = svgText.replace(colorRegex, \"fill=\\\"\".concat(color, \"\\\"\"));\n } else {\n currentSvg = svgText;\n }\n svgDataUrl = 'data:image/svg+xml;base64,' + btoa(Array.from(new TextEncoder().encode(currentSvg), function (byte) {\n return String.fromCharCode(byte);\n }).join(''));\n borderImage = new Image();\n borderImage.setAttribute('crossOrigin', 'anonymous');\n borderImage.src = svgDataUrl;\n borderImage.onload = function () {\n if (border.show) {\n updateCanvas();\n }\n };\n };\n changeMapBorder = function _changeMapBorder(v) {\n border.url = v;\n if (!border.url) {\n return;\n }\n borderImage = new Image();\n borderImage.setAttribute('crossOrigin', 'anonymous');\n if (border.url.endsWith('svg')) {\n fetch(tools.getSourceRootPath() + border.url).then(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!response.ok) {\n _context.next = 5;\n break;\n }\n _context.next = 3;\n return response.text();\n case 3:\n svgText = _context.sent;\n changeMapBorderColor(border.color);\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n borderImage.src = tools.getSourceRootPath() + border.url;\n borderImage.onload = function () {\n if (border.show) {\n updateCanvas();\n }\n };\n }\n };\n changeTemplate = function _changeTemplate(v) {\n template = v;\n templateData = Object(_dataSource_js__WEBPACK_IMPORTED_MODULE_8__[\"getTemplateData\"])(tools);\n for (var _i6 = 0; _i6 < templateData.length; _i6++) {\n if (templateData[_i6].id === template) {\n title = templateData[_i6].title || title;\n margin = !templateData[_i6].margin && templateData[_i6].margin != 0 ? margin : templateData[_i6].margin;\n data = templateData[_i6].data || data;\n border = templateData[_i6].border || border;\n border.show = _this.modify;\n border.color = border.color || '#000000';\n plottingScale = templateData[_i6].plottingScale || plottingScale;\n break;\n }\n }\n initData();\n updateCanvas();\n };\n initData = function _initData() {\n if (isLoad) {\n return;\n }\n margin = margin * imgElm.width;\n triggerRange = imgElm.height / 140;\n titleInputElm.value = title.text;\n titleCheckboxElm.checked = title.show;\n unitInputElm.value = data[1].text;\n unitCheckboxElm.checked = data[1].show;\n compassCheckboxElm.checked = data[2].show;\n for (var _i5 = 0; _i5 < compassList.length; _i5++) {\n if (compassList[_i5] === data[2].url) {\n compassRadiosElm[_i5].checked = true;\n }\n }\n plottingScaleCheckboxElm.checked = plottingScale.show;\n border.width = imgElm.width * border.width;\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n canvas.width = imgElm.width + allmargin * 2;\n canvas.height = imgElm.height + allmargin * 2;\n printDateCheckboxElm && (printDateCheckboxElm.checked = data[0].show);\n if (jeDateObject) {\n if (data[0].text) {\n jeDateObject.setValue(data[0].text);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n data[0].text = jeDateObject.getValue();\n }\n }\n\n // plottingScale.x = imgElm.width * plottingScale.x;\n // plottingScale.y = imgElm.height * plottingScale.y;\n\n if (mapBorderObject && mapBorderDataLegpElm && iActiveElm) {\n mapBorderDataLegpElm.value = border.url;\n mapBorderObject.legp_searchActive(border.url);\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + border.url, \")\");\n }\n mapBorderCheckboxElm.checked = border.show;\n borderImage = null;\n if (border && border.url) {\n changeMapBorder(border.url);\n }\n };\n _this = this;\n exporting = false;\n templateData = Object(_dataSource_js__WEBPACK_IMPORTED_MODULE_8__[\"getTemplateData\"])(tools);\n template = '1';\n isLoad = true;\n margin = 0;\n title = {\n text: '标题',\n height: 40,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n };\n border = {\n show: true,\n url: tools.getSourceRootPath() + '/custom/img/map-border1.svg',\n width: 20\n };\n data = [{\n text: '',\n x: 10,\n y: 100,\n height: 24,\n fontSize: 24,\n isSelected: false,\n show: true,\n color: '#ffffff'\n }, {\n text: '-',\n x: 10,\n y: 100,\n height: 24,\n fontSize: 24,\n isSelected: false,\n show: true,\n color: '#ffffff'\n }, {\n x: 10,\n y: 100,\n width: 100,\n height: 100,\n show: false,\n isSelected: false,\n url: tools.getSourceRootPath() + '/custom/img/icon-compass1.svg'\n }]; // 比例尺\n plottingScale = {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 10,\n y: 100,\n width: 100\n };\n compassList = ['/custom/img/icon-compass1.svg', '/custom/img/icon-compass2.svg', '/custom/img/icon-compass3.svg', '/custom/img/icon-compass4.svg'];\n if (_DialogObject) {\n _DialogObject.close();\n _DialogObject = null;\n }\n _context3.next = 27;\n return new _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk, {}, {\n title: '地图打印',\n left: '5%',\n top: '10%',\n ismove: false\n });\n case 27:\n _DialogObject = _context3.sent;\n _DialogObject._element.body.className = _DialogObject._element.body.className + ' map-print';\n contentElm = document.createElement('div');\n contentElm.innerHTML = \"\\n
\\n
\\n
\\u56FE\\u4EF6\\u4FE1\\u606F
\\n
\\n
\\n \\u6A21\\u677F\\n
\\n
\\n
\\n
\\n
\\n \\u6807\\u9898\\n \\n \\n
\\n
\\n
\\n
\\n \\u5236\\u56FE\\u65E5\\u671F\\n \\n \\n
\\n
\\n
\\n
\\n \\u5236\\u56FE\\u5355\\u4F4D\\n \\n \\n
\\n
\\n
\\n
\\n \\u56FE\\u6846\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\u5730\\u56FE\\u8981\\u7D20
\\n
\\n
\\n \\u6307\\u5317\\u9488\\n \\n
\\n
\\n \".concat(function () {\n var str = '';\n for (var i = 0; i < compassList.length; i++) {\n var compass = tools.getSourceRootPath() + compassList[i];\n str += \"
\\n \\n \\\"\\\"\\n
\");\n }\n return str;\n }(), \"\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6BD4\\u4F8B\\u5C3A\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \");\n _DialogObject.contentAppChild(contentElm);\n leftElm = contentElm.getElementsByClassName('left')[0];\n rightElm = contentElm.getElementsByClassName('right')[0]; // let mapImgBoxElm = rightElm.getElementsByClassName('map-img-box')[0]\n titleInputElm = leftElm.getElementsByClassName('title-input')[0];\n titleCheckboxElm = leftElm.getElementsByClassName('title-checkbox')[0];\n unitInputElm = leftElm.getElementsByClassName('unit-input')[0];\n unitCheckboxElm = leftElm.getElementsByClassName('unit-checkbox')[0];\n compassCheckboxElm = leftElm.getElementsByClassName('compass-checkbox')[0];\n compassRadiosElm = leftElm.getElementsByClassName('compass-radio');\n plottingScaleCheckboxElm = leftElm.getElementsByClassName('plotting-scale-checkbox')[0];\n mapBorderCheckboxElm = leftElm.getElementsByClassName('map-border-checkbox')[0];\n canvas = document.createElement('canvas');\n ctx = canvas.getContext('2d');\n rightElm.appendChild(canvas);\n imgElm = new Image();\n imgElm.src = this.thumbnailImg;\n imgElm.onload = function () {\n isLoad = false;\n getPlottingScale();\n changeTemplate(template);\n };\n\n // 标题\n titleInputElm.value = title.text;\n titleCheckboxElm.checked = title.show;\n titleInputElm.addEventListener('input', function () {\n title.text = this.value;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n titleCheckboxElm.addEventListener('change', function () {\n title.show = this.checked;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 制图单位\n unitInputElm.value = data[1].text;\n unitCheckboxElm.checked = data[1].show;\n unitInputElm.addEventListener('input', function () {\n data[1].text = this.value;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n unitCheckboxElm.addEventListener('change', function () {\n data[1].show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 指北针\n compassCheckboxElm.checked = data[2].show;\n compassCheckboxElm.addEventListener('change', function () {\n data[2].show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _loop(i) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _loop$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n compassRadiosElm[i].addEventListener('change', function () {\n if (this.checked) {\n data[2].svg = null;\n data[2].url = compassList[i];\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n }\n });\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _loop);\n });\n i = 0;\n case 60:\n if (!(i < compassRadiosElm.length)) {\n _context3.next = 65;\n break;\n }\n return _context3.delegateYield(_loop(i), \"t0\", 62);\n case 62:\n i++;\n _context3.next = 60;\n break;\n case 65:\n // 比例尺\n plottingScaleCheckboxElm.checked = plottingScale.show;\n plottingScaleCheckboxElm.addEventListener('change', function () {\n plottingScale.show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 图框\n mapBorderCheckboxElm.checked = border.show;\n mapBorderCheckboxElm.addEventListener('change', function () {\n border.show = this.checked;\n if (borderImage && borderImage.complete) {\n updateCanvas();\n }\n });\n borderColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('border-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: border.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n changeMapBorderColor(color);\n },\n //点击确认按钮事件回调\n clear: function clear() {\n changeMapBorderColor('rgba(0,0,0,1)');\n } //点击清空按钮事件回调\n });\n setTimeout(function () {\n closeBtn = _DialogObject._element.foot.getElementsByClassName('close')[0];\n exportBtn = document.createElement('button');\n exportBtn.className = 'export';\n exportBtn.innerHTML = '打印';\n leftElm.appendChild(closeBtn);\n leftElm.appendChild(exportBtn);\n exportBtn.addEventListener('click', function () {\n if (exporting) {\n return;\n }\n exporting = true;\n exportBtn.innerHTML = '打印';\n exportMap();\n // exporting = true\n // exportBtn.innerHTML = '打印'\n // let imgBlobData = canvas.toDataURL();\n // let downloadElement = document.createElement('a');\n // downloadElement.href = imgBlobData;\n // downloadElement.download = `高清出图-${getDateTimeString()}.png`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // URL.revokeObjectURL(imgBlobData);\n });\n\n // 时间\n var printDateElm = contentElm.getElementsByClassName('print-date')[0];\n printDateCheckboxElm = contentElm.getElementsByClassName('print-date-checkbox')[0];\n printDateCheckboxElm.checked = data[0].show;\n printDateCheckboxElm.addEventListener('change', function () {\n data[0].show = this.checked;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n jeDateObject = jeDate(printDateElm, {\n format: \"YYYY-MM-DD\",\n isinitVal: true,\n isClear: false,\n donefun: function donefun(obj) {\n data[0].text = obj.val;\n if (imgElm.complete) {\n updateCanvas();\n }\n }\n });\n if (data[0].text) {\n jeDateObject.setValue(data[0].text);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n data[0].text = jeDateObject.getValue();\n updateCanvas();\n }\n\n // 模板\n // let templateData = templateData\n var templateObject = Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__[\"legp\"])(_DialogObject._element.content.getElementsByClassName('template-box')[0], '.template');\n if (templateObject) {\n templateObject.legp_search(templateData);\n var templateDataLegpElm = _DialogObject._element.content.getElementsByClassName('template')[0].getElementsByTagName('input')[0];\n for (var _i = 0; _i < templateData.length; _i++) {\n if (templateData[_i].id == template) {\n templateDataLegpElm.value = templateData[_i].value;\n templateObject.legp_searchActive(templateData[_i].value);\n break;\n }\n }\n templateDataLegpElm.addEventListener('input', function () {\n for (var _i2 = 0; _i2 < templateData.length; _i2++) {\n if (templateData[_i2].value === templateDataLegpElm.value) {\n changeTemplate(templateData[_i2].id);\n break;\n }\n }\n });\n }\n\n // 图框\n var mapBorderData = [{\n name: \"\"),\n value: '/custom/img/map-border1.svg',\n key: 0\n }, {\n name: \"\"),\n value: '/custom/img/map-border2.svg',\n key: 1\n }, {\n name: \"\"),\n value: '/custom/img/map-border3.svg',\n key: 2\n }, {\n name: \"\"),\n value: '/custom/img/map-border4.svg',\n key: 3\n }, {\n name: \"\"),\n value: '/custom/img/map-border5.svg',\n key: 4\n }, {\n name: \"\"),\n value: '/custom/img/map-border6.svg',\n key: 5\n }];\n mapBorderObject = Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__[\"legp\"])(_DialogObject._element.content.getElementsByClassName('map-border-box')[0], '.map-border');\n if (mapBorderObject) {\n mapBorderObject.legp_search(mapBorderData);\n iActiveElm = document.createElement('span');\n iActiveElm.className = \"icon icon-active\";\n iActiveElm.style.width = 'calc(100% - 40px)';\n iActiveElm.style.height = 'calc(100% - 12px)';\n iActiveElm.style.position = 'absolute';\n iActiveElm.style.top = '6px';\n iActiveElm.style.left = '10px';\n iActiveElm.style.pointerEvents = 'none';\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + border.url, \")\");\n iActiveElm.style.backgroundSize = 'auto 100%';\n iActiveElm.style.backgroundRepeat = 'repeat-x';\n _DialogObject._element.content.getElementsByClassName('map-border')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm);\n mapBorderDataLegpElm = _DialogObject._element.content.getElementsByClassName('map-border')[0].getElementsByTagName('input')[0];\n mapBorderDataLegpElm.style.fontSize = 0;\n mapBorderDataLegpElm.style.color = 'transparent';\n for (var _i3 = 0; _i3 < mapBorderData.length; _i3++) {\n if (mapBorderData[_i3].value == border.url) {\n mapBorderDataLegpElm.value = mapBorderData[_i3].value;\n mapBorderObject.legp_searchActive(mapBorderData[_i3].value);\n break;\n }\n }\n mapBorderDataLegpElm.addEventListener('input', function () {\n for (var _i4 = 0; _i4 < mapBorderData.length; _i4++) {\n if (mapBorderData[_i4].value === mapBorderDataLegpElm.value) {\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + mapBorderData[_i4].value, \")\");\n changeMapBorder(mapBorderData[_i4].value);\n break;\n }\n }\n });\n }\n }, 0);\n isDragging = false;\n triggerRange = 5;\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null; // 记录当前字体大小\n // 绘制边框\n canvas.addEventListener('mousedown', function (e) {\n var x = getCanvasMouseX(e);\n var y = getCanvasMouseY(e);\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n if (title.show) {\n // 检查是否点击了标题编辑触发区域\n if (y >= title.height * imgElm.height + allmargin - triggerRange && y <= title.height * imgElm.height + allmargin + triggerRange) {\n isDragging = true;\n\n // 先将所有元素的选中状态置为 false\n for (var _i11 = 0; _i11 < data.length; _i11++) {\n data[_i11].isSelected = false;\n }\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n return;\n }\n }\n\n // 检查是否点击了边框角上的小圆点\n if (selectedElement && selectedElement !== plottingScale) {\n var cornerRadius = canvas.height * 0.005;\n var corners = getCorners(selectedElement, allmargin);\n corners.forEach(function (corner, index) {\n if (x >= corner.x - cornerRadius && x <= corner.x + cornerRadius && y >= corner.y - cornerRadius && y <= corner.y + cornerRadius) {\n isResizingElement = true;\n isDraggingElement = false;\n resizeCorner = index;\n startX = x;\n startY = y;\n elementWidth = selectedElement.width * imgElm.height;\n elementHeight = selectedElement.height * imgElm.height;\n if ('text' in selectedElement) {\n elementWidth = selectedElement.width * imgElm.height;\n currentFontSize = selectedElement.height;\n }\n }\n });\n }\n if (isResizingElement) {\n return;\n }\n\n // 先将所有元素的选中状态置为 false\n for (var _i12 = 0; _i12 < data.length; _i12++) {\n data[_i12].isSelected = false;\n }\n plottingScale.isSelected = false;\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n for (var _i13 = data.length - 1; _i13 >= 0; _i13--) {\n if (data[_i13].show) {\n if ('text' in data[_i13]) {\n if (x >= imgElm.width * data[_i13].x + allmargin && x <= imgElm.width * data[_i13].x + allmargin + imgElm.height * data[_i13].width && y >= imgElm.height * data[_i13].y + allmargin - imgElm.height * data[_i13].height && y <= imgElm.height * data[_i13].y + allmargin) {\n selectedElement = data[_i13];\n data[_i13].isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * data[_i13].y - imgElm.height * data[_i13].height;\n startX2 = imgElm.width * data[_i13].x + imgElm.height * data[_i13].width;\n elementOffsetX = imgElm.width * data[_i13].x + allmargin;\n elementOffsetY = imgElm.height * data[_i13].y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n break;\n }\n }\n if ('url' in data[_i13]) {\n if (data[_i13].svg && data[_i13].svg.complete && data[_i13].show) {\n if (x >= imgElm.width * data[_i13].x + allmargin && x <= imgElm.width * data[_i13].x + allmargin + imgElm.height * data[_i13].width && y >= imgElm.height * data[_i13].y + allmargin && y <= imgElm.height * data[_i13].y + allmargin + imgElm.height * data[_i13].height) {\n selectedElement = data[_i13];\n data[_i13].isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * data[_i13].y + imgElm.height * data[_i13].height;\n startX2 = imgElm.width * data[_i13].x + imgElm.height * data[_i13].width;\n elementOffsetX = imgElm.width * data[_i13].x + allmargin;\n elementOffsetY = imgElm.height * data[_i13].y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n break;\n }\n }\n }\n }\n }\n if (plottingScale.show) {\n if (x >= imgElm.width * plottingScale.x + allmargin - plottingScale.width * 0.2 && x <= imgElm.width * plottingScale.x + allmargin - plottingScale.width * 0.2 + plottingScale.width + plottingScale.width * 0.6 && y >= imgElm.height * plottingScale.y + allmargin - plottingScale.height - plottingScale.height * 0.5 && y <= imgElm.height * plottingScale.y + allmargin - plottingScale.height * 0.5 + plottingScale.height) {\n selectedElement = plottingScale;\n plottingScale.isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * plottingScale.y + allmargin + plottingScale.height;\n startX2 = imgElm.width * plottingScale.x + allmargin + plottingScale.width;\n elementOffsetX = imgElm.width * plottingScale.x + allmargin;\n elementOffsetY = imgElm.height * plottingScale.y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n }\n }\n\n // 如果点击在内容以外,重新绘制画布以移除边框\n if (!selectedElement) {\n updateCanvas();\n }\n });\n canvas.addEventListener('mousemove', function (e) {\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n var x = getCanvasMouseX(e);\n var y = getCanvasMouseY(e);\n if (x < 0 || y < 0 || x > canvas.width || y > canvas.height) {\n return;\n }\n if (title.show) {\n var _allmargin2 = margin;\n if (border.show && borderImage && borderImage.complete) {\n _allmargin2 = _allmargin2 + border.width;\n }\n if (y >= title.height * imgElm.height + _allmargin2 - triggerRange && y <= title.height * imgElm.height + _allmargin2 + triggerRange) {\n canvas.style.cursor = 'n-resize';\n } else {\n canvas.style.cursor = 'default';\n }\n if (isDragging) {\n title.height = Math.min(Math.max(y - _allmargin2, 30) / imgElm.height, 1);\n updateCanvas();\n }\n }\n if (isDraggingElement) {\n var dx = x - startX;\n var dy = y - startY;\n selectedElement.x = (elementOffsetX + dx - allmargin) / imgElm.width;\n selectedElement.y = (elementOffsetY + dy - allmargin) / imgElm.height;\n updateCanvas();\n }\n if (isResizingElement) {\n var _dx = x - startX;\n var _dy = y - startY;\n var scaleFactor;\n switch (resizeCorner) {\n case 0:\n // 左上角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth - _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n } else if ('url' in selectedElement) {\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.y = (startY2 - selectedElement.height * imgElm.height) / imgElm.height;\n selectedElement.width = Math.max(10, elementWidth - _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight - _dy) / imgElm.height;\n }\n break;\n case 1:\n // 右上角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth + _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n } else if ('url' in selectedElement) {\n selectedElement.width = Math.max(10, elementWidth + _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight - _dy) / imgElm.height;\n selectedElement.y = (startY2 - selectedElement.height * imgElm.height) / imgElm.height;\n }\n break;\n case 2:\n // 左下角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth - _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.y = (startY2 + selectedElement.height * imgElm.height) / imgElm.height;\n } else if ('url' in selectedElement) {\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.width = Math.max(10, elementWidth - _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight + _dy) / imgElm.height;\n }\n break;\n case 3:\n // 右下角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth + _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.y = (startY2 + selectedElement.height * imgElm.height) / imgElm.height;\n } else if ('url' in selectedElement) {\n selectedElement.width = Math.max(10, elementWidth + _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight + _dy) / imgElm.height;\n }\n break;\n }\n updateCanvas();\n }\n });\n document.addEventListener('mouseup', function () {\n isDragging = false;\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n for (var _i14 = 0; _i14 < data.length; _i14++) {\n if (data[_i14].show && data[_i14].isSelected) {\n startY2 = imgElm.height * data[_i14].y - imgElm.height * data[_i14].height;\n startX2 = imgElm.width * data[_i14].x + imgElm.height * data[_i14].width;\n if ('url' in data[_i14]) {\n startY2 = imgElm.height * data[_i14].y + imgElm.height * data[_i14].height;\n startX2 = imgElm.width * data[_i14].x + imgElm.height * data[_i14].width;\n }\n elementOffsetX = data[_i14].x;\n elementOffsetY = data[_i14].y;\n }\n }\n if (plottingScale.show && plottingScale.isSelected) {\n startY2 = plottingScale.y + plottingScale.height;\n startX2 = plottingScale.x + plottingScale.width;\n elementOffsetX = plottingScale.x;\n elementOffsetY = plottingScale.y;\n }\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n });\n case 80:\n case \"end\":\n return _context3.stop();\n }\n }, _callee2, this);\n }));\n function load() {\n return _load.apply(this, arguments);\n }\n return load;\n }()\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (MapPrint);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFByaW50L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9NYXBQcmludC9pbmRleC5qcz8yYjVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vT2JqL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJztcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL09iai9FbGVtZW50L2RhdGFsaXN0J1xyXG5pbXBvcnQgeyBnZXRUZW1wbGF0ZURhdGEgfSBmcm9tICcuL2RhdGFTb3VyY2UuanMnXHJcblxyXG5sZXQgdG9vbHMgPSBuZXcgVG9vbHMoKTtcclxuXHJcblxyXG5jbGFzcyBNYXBQcmludCB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCB0aHVtYm5haWxJbWcsIHJlY3RhbmdsZSwgb3JpZ2luYWxJbWcsIG1vZGlmeSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMudGh1bWJuYWlsSW1nID0gdGh1bWJuYWlsSW1nXHJcbiAgICB0aGlzLnJlY3RhbmdsZSA9IHJlY3RhbmdsZVxyXG4gICAgdGhpcy5vcmlnaW5hbEltZyA9IG9yaWdpbmFsSW1nXHJcbiAgICB0aGlzLm1vZGlmeSA9IG1vZGlmeVxyXG4gICAgdGhpcy5sb2FkKClcclxuICB9XHJcbiAgYXN5bmMgbG9hZCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGxldCBleHBvcnRpbmcgPSBmYWxzZTtcclxuICAgIGxldCB0ZW1wbGF0ZURhdGEgPSBnZXRUZW1wbGF0ZURhdGEodG9vbHMpXHJcbiAgICBsZXQgX0RpYWxvZ09iamVjdFxyXG4gICAgbGV0IHRlbXBsYXRlID0gJzEnXHJcbiAgICBsZXQgdW5pdERpc3RhbmNlXHJcbiAgICBsZXQgaXNMb2FkID0gdHJ1ZVxyXG4gICAgbGV0IGJvcmRlckltYWdlXHJcbiAgICBsZXQgbWFyZ2luID0gMFxyXG4gICAgbGV0IHN2Z1RleHRcclxuICAgIGxldCB0aXRsZSA9IHtcclxuICAgICAgdGV4dDogJ+agh+mimCcsXHJcbiAgICAgIGhlaWdodDogNDAsXHJcbiAgICAgIGJnQ29sb3I6ICcjNWQ1ZDVkJyxcclxuICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYm9yZGVyID0ge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICB1cmw6IHRvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjEuc3ZnJyxcclxuICAgICAgd2lkdGg6IDIwLFxyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJycsXHJcbiAgICAgICAgeDogMTAsXHJcbiAgICAgICAgeTogMTAwLFxyXG4gICAgICAgIGhlaWdodDogMjQsXHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICctJyxcclxuICAgICAgICB4OiAxMCxcclxuICAgICAgICB5OiAxMDAsXHJcbiAgICAgICAgaGVpZ2h0OiAyNCxcclxuICAgICAgICBmb250U2l6ZTogMjQsXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgeDogMTAsXHJcbiAgICAgICAgeTogMTAwLFxyXG4gICAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgICAgaGVpZ2h0OiAxMDAsXHJcbiAgICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgdXJsOiB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9jdXN0b20vaW1nL2ljb24tY29tcGFzczEuc3ZnJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcblxyXG4gICAgLy8g5q+U5L6L5bC6XHJcbiAgICBsZXQgcGxvdHRpbmdTY2FsZSA9IHtcclxuICAgICAgY2VsbDogMixcclxuICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHg6IDEwLFxyXG4gICAgICB5OiAxMDAsXHJcbiAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBhc3NMaXN0ID0gW1xyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMS5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMi5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMy5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzNC5zdmcnXHJcbiAgICBdXHJcblxyXG4gICAgaWYgKF9EaWFsb2dPYmplY3QpIHtcclxuICAgICAgX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBfRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywge30sIHtcclxuICAgICAgdGl0bGU6ICflnLDlm77miZPljbAnLCBsZWZ0OiAnNSUnLCB0b3A6ICcxMCUnLCBpc21vdmU6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIG1hcC1wcmludCdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGBcclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPuWbvuS7tuS/oeaBrzwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB0ZW1wbGF0ZS1ib3hcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+5qih5p2/PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGVcIiBzdHlsZT1cIndpZHRoOiAyMTNweDtcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7moIfpopg8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRpdGxlLWlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGl0bGUtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWItuWbvuaXpeacnzwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicHJpbnQtZGF0ZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJZWVlZLU1NLUREXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInByaW50LWRhdGUtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWItuWbvuWNleS9jTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidW5pdC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInVuaXQtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIG1hcC1ib3JkZXItYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWbvuahhjwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC1ib3JkZXJcIiBzdHlsZT1cIndpZHRoOiAxNzNweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1jb2xvclwiIHN0eWxlPVwibWFyZ2luLXRvcDogM3B4O21hcmdpbi1sZWZ0OiAxMnB4O1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtYXAtYm9yZGVyLWNoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+5Zyw5Zu+6KaB57SgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7bWFyZ2luLXRvcDogOXB4O1wiPuaMh+WMl+mSiDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiY29tcGFzcy1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTFweDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O2ZsZXgtd3JhcDogd3JhcDtcIj5cclxuICAgICAgICAgICAgICAkeygoKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0ciA9ICcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcGFzc0xpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IGNvbXBhc3MgPSB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgY29tcGFzc0xpc3RbaV07XHJcbiAgICAgICAgICBzdHIgKz0gYDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiY29tcGFzcy1yYWRpb1wiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7Y29tcGFzc31cIiBhbHQ9XCJcIiBzdHlsZT1cIndpZHRoOiAzOHB4OyBoZWlnaHQ6IDM4cHg7IG1hcmdpbjogMCA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0clxyXG4gICAgICB9KSgpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O21hcmdpbi10b3A6IDlweDtcIj7mr5TkvovlsLo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInBsb3R0aW5nLXNjYWxlLWNoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1hcC1pbWctYm94XCI+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGA7XHJcbiAgICBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgbGV0IGxlZnRFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xlZnQnKVswXVxyXG4gICAgbGV0IHJpZ2h0RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyaWdodCcpWzBdXHJcbiAgICAvLyBsZXQgbWFwSW1nQm94RWxtID0gcmlnaHRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWFwLWltZy1ib3gnKVswXVxyXG4gICAgbGV0IHRpdGxlSW5wdXRFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RpdGxlLWlucHV0JylbMF1cclxuICAgIGxldCB0aXRsZUNoZWNrYm94RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aXRsZS1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgdW5pdElucHV0RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd1bml0LWlucHV0JylbMF1cclxuICAgIGxldCB1bml0Q2hlY2tib3hFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3VuaXQtY2hlY2tib3gnKVswXVxyXG4gICAgbGV0IGNvbXBhc3NDaGVja2JveEVsbSA9IGxlZnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29tcGFzcy1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgY29tcGFzc1JhZGlvc0VsbSA9IGxlZnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29tcGFzcy1yYWRpbycpXHJcbiAgICBsZXQgcGxvdHRpbmdTY2FsZUNoZWNrYm94RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwbG90dGluZy1zY2FsZS1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgbWFwQm9yZGVyQ2hlY2tib3hFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hcC1ib3JkZXItY2hlY2tib3gnKVswXVxyXG5cclxuXHJcbiAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICByaWdodEVsbS5hcHBlbmRDaGlsZChjYW52YXMpXHJcbiAgICBsZXQgaW1nRWxtID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWdFbG0uc3JjID0gdGhpcy50aHVtYm5haWxJbWdcclxuXHJcbiAgICBpbWdFbG0ub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBpc0xvYWQgPSBmYWxzZVxyXG4gICAgICBnZXRQbG90dGluZ1NjYWxlKClcclxuICAgICAgY2hhbmdlVGVtcGxhdGUodGVtcGxhdGUpXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLyDmoIfpophcclxuICAgIHRpdGxlSW5wdXRFbG0udmFsdWUgPSB0aXRsZS50ZXh0O1xyXG4gICAgdGl0bGVDaGVja2JveEVsbS5jaGVja2VkID0gdGl0bGUuc2hvdztcclxuICAgIHRpdGxlSW5wdXRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRpdGxlLnRleHQgPSB0aGlzLnZhbHVlO1xyXG4gICAgICBpZiAoaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aXRsZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGl0bGUuc2hvdyA9IHRoaXMuY2hlY2tlZDtcclxuICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOWItuWbvuWNleS9jVxyXG4gICAgdW5pdElucHV0RWxtLnZhbHVlID0gZGF0YVsxXS50ZXh0O1xyXG4gICAgdW5pdENoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzFdLnNob3c7XHJcbiAgICB1bml0SW5wdXRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGRhdGFbMV0udGV4dCA9IHRoaXMudmFsdWU7XHJcbiAgICAgIGlmIChpbWdFbG0gJiYgaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB1bml0Q2hlY2tib3hFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBkYXRhWzFdLnNob3cgPSB0aGlzLmNoZWNrZWQ7XHJcbiAgICAgIGlmIChpbWdFbG0gJiYgaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDmjIfljJfpkohcclxuICAgIGNvbXBhc3NDaGVja2JveEVsbS5jaGVja2VkID0gZGF0YVsyXS5zaG93O1xyXG4gICAgY29tcGFzc0NoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgZGF0YVsyXS5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBhc3NSYWRpb3NFbG0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29tcGFzc1JhZGlvc0VsbVtpXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICAgICAgZGF0YVsyXS5zdmcgPSBudWxsXHJcbiAgICAgICAgICBkYXRhWzJdLnVybCA9IGNvbXBhc3NMaXN0W2ldXHJcbiAgICAgICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvLyDmr5TkvovlsLpcclxuICAgIHBsb3R0aW5nU2NhbGVDaGVja2JveEVsbS5jaGVja2VkID0gcGxvdHRpbmdTY2FsZS5zaG93O1xyXG4gICAgcGxvdHRpbmdTY2FsZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgcGxvdHRpbmdTY2FsZS5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5Zu+5qGGXHJcbiAgICBtYXBCb3JkZXJDaGVja2JveEVsbS5jaGVja2VkID0gYm9yZGVyLnNob3c7XHJcbiAgICBtYXBCb3JkZXJDaGVja2JveEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGJvcmRlci5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IGJvcmRlckNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3JkZXItY29sb3InKVswXSxcclxuICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICBhbHBoYTogZmFsc2UsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgIGRlZmF1bHRDb2xvcjogYm9yZGVyLmNvbG9yLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKVxyXG4gICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKCdyZ2JhKDAsMCwwLDEpJylcclxuICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgfSlcclxuXHJcblxyXG5cclxuICAgIGxldCBqZURhdGVPYmplY3RcclxuXHJcblxyXG4gICAgbGV0IHByaW50RGF0ZUNoZWNrYm94RWxtXHJcbiAgICBsZXQgbWFwQm9yZGVyRGF0YUxlZ3BFbG1cclxuICAgIGxldCBtYXBCb3JkZXJPYmplY3RcclxuICAgIGxldCBpQWN0aXZlRWxtXHJcblxyXG4gICAgbGV0IGNsb3NlQnRuXHJcbiAgICBsZXQgZXhwb3J0QnRuXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNsb3NlQnRuID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nsb3NlJylbMF1cclxuICAgICAgZXhwb3J0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcclxuICAgICAgZXhwb3J0QnRuLmNsYXNzTmFtZSA9ICdleHBvcnQnO1xyXG4gICAgICBleHBvcnRCdG4uaW5uZXJIVE1MID0gJ+aJk+WNsCc7XHJcbiAgICAgIGxlZnRFbG0uYXBwZW5kQ2hpbGQoY2xvc2VCdG4pXHJcbiAgICAgIGxlZnRFbG0uYXBwZW5kQ2hpbGQoZXhwb3J0QnRuKVxyXG4gICAgICBleHBvcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKGV4cG9ydGluZykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV4cG9ydGluZyA9IHRydWVcclxuICAgICAgICBleHBvcnRCdG4uaW5uZXJIVE1MID0gJzxzcGFuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOiAwO2xlZnQ6IDA7Ym9yZGVyLXJhZGl1czogM3B4O2JhY2tncm91bmQtY29sb3I6ICM2Zjg5ODQ4ZjtcIj48c3ZnIGNsYXNzPVwiaWNvbi1sb2FkXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tbG9hZFwiPjwvdXNlPjwvc3ZnPjwvc3Bhbj7miZPljbAnXHJcbiAgICAgICAgZXhwb3J0TWFwKClcclxuICAgICAgICAvLyBleHBvcnRpbmcgPSB0cnVlXHJcbiAgICAgICAgLy8gZXhwb3J0QnRuLmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDogMDtsZWZ0OiAwO2JvcmRlci1yYWRpdXM6IDNweDtiYWNrZ3JvdW5kLWNvbG9yOiAjNmY4OTg0OGY7XCI+PHN2ZyBjbGFzcz1cImljb24tbG9hZFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWxvYWRcIj48L3VzZT48L3N2Zz48L3NwYW4+5omT5Y2wJ1xyXG4gICAgICAgIC8vIGxldCBpbWdCbG9iRGF0YSA9IGNhbnZhcy50b0RhdGFVUkwoKTtcclxuICAgICAgICAvLyBsZXQgZG93bmxvYWRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5ocmVmID0gaW1nQmxvYkRhdGE7XHJcbiAgICAgICAgLy8gZG93bmxvYWRFbGVtZW50LmRvd25sb2FkID0gYOmrmOa4heWHuuWbvi0ke2dldERhdGVUaW1lU3RyaW5nKCl9LnBuZ2A7XHJcbiAgICAgICAgLy8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIC8vIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyBVUkwucmV2b2tlT2JqZWN0VVJMKGltZ0Jsb2JEYXRhKTtcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICAvLyDml7bpl7RcclxuICAgICAgbGV0IHByaW50RGF0ZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncHJpbnQtZGF0ZScpWzBdXHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcmludC1kYXRlLWNoZWNrYm94JylbMF1cclxuXHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzBdLnNob3c7XHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkYXRhWzBdLnNob3cgPSB0aGlzLmNoZWNrZWQ7XHJcbiAgICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGplRGF0ZU9iamVjdCA9IGplRGF0ZShwcmludERhdGVFbG0sIHtcclxuICAgICAgICBmb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gICAgICAgIGlzaW5pdFZhbDogdHJ1ZSxcclxuICAgICAgICBpc0NsZWFyOiBmYWxzZSxcclxuICAgICAgICBkb25lZnVuOiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgICBkYXRhWzBdLnRleHQgPSBvYmoudmFsO1xyXG4gICAgICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChkYXRhWzBdLnRleHQpIHtcclxuICAgICAgICBqZURhdGVPYmplY3Quc2V0VmFsdWUoZGF0YVswXS50ZXh0KVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGplRGF0ZU9iamVjdC5ub3dCdG4gJiYgamVEYXRlT2JqZWN0Lm5vd0J0bigpXHJcbiAgICAgICAgZGF0YVswXS50ZXh0ID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy8g5qih5p2/XHJcbiAgICAgIC8vIGxldCB0ZW1wbGF0ZURhdGEgPSB0ZW1wbGF0ZURhdGFcclxuICAgICAgbGV0IHRlbXBsYXRlT2JqZWN0ID0gbGVncChcclxuICAgICAgICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICd0ZW1wbGF0ZS1ib3gnXHJcbiAgICAgICAgKVswXSxcclxuICAgICAgICAnLnRlbXBsYXRlJ1xyXG4gICAgICApXHJcbiAgICAgIGlmICh0ZW1wbGF0ZU9iamVjdCkge1xyXG4gICAgICAgIHRlbXBsYXRlT2JqZWN0LmxlZ3Bfc2VhcmNoKHRlbXBsYXRlRGF0YSlcclxuICAgICAgICBsZXQgdGVtcGxhdGVEYXRhTGVncEVsbSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RlbXBsYXRlJylbMF1cclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcGxhdGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGVtcGxhdGVEYXRhW2ldLmlkID09IHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YUxlZ3BFbG0udmFsdWUgPSB0ZW1wbGF0ZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgdGVtcGxhdGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgICAgICAgdGVtcGxhdGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcGxhdGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcGxhdGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZURhdGFbaV0udmFsdWUgPT09IHRlbXBsYXRlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBjaGFuZ2VUZW1wbGF0ZSh0ZW1wbGF0ZURhdGFbaV0uaWQpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWbvuahhlxyXG4gICAgICBsZXQgbWFwQm9yZGVyRGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpfS9jdXN0b20vaW1nL21hcC1ib3JkZXIxLnN2Zyk7YmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1wiPjwvc3Bhbj5gLFxyXG4gICAgICAgICAgdmFsdWU6ICcvY3VzdG9tL2ltZy9tYXAtYm9yZGVyMS5zdmcnLFxyXG4gICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogYDxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKX0vY3VzdG9tL2ltZy9tYXAtYm9yZGVyMi5zdmcpO2JhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO2JhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcIj48L3NwYW4+YCxcclxuICAgICAgICAgIHZhbHVlOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjIuc3ZnJyxcclxuICAgICAgICAgIGtleTogMSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IGA8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2N1c3RvbS9pbWcvbWFwLWJvcmRlcjMuc3ZnKTtiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XCI+PC9zcGFuPmAsXHJcbiAgICAgICAgICB2YWx1ZTogJy9jdXN0b20vaW1nL21hcC1ib3JkZXIzLnN2ZycsXHJcbiAgICAgICAgICBrZXk6IDIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpfS9jdXN0b20vaW1nL21hcC1ib3JkZXI0LnN2Zyk7YmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1wiPjwvc3Bhbj5gLFxyXG4gICAgICAgICAgdmFsdWU6ICcvY3VzdG9tL2ltZy9tYXAtYm9yZGVyNC5zdmcnLFxyXG4gICAgICAgICAga2V5OiAzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogYDxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKX0vY3VzdG9tL2ltZy9tYXAtYm9yZGVyNS5zdmcpO2JhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO2JhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcIj48L3NwYW4+YCxcclxuICAgICAgICAgIHZhbHVlOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjUuc3ZnJyxcclxuICAgICAgICAgIGtleTogNCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IGA8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2N1c3RvbS9pbWcvbWFwLWJvcmRlcjYuc3ZnKTtiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XCI+PC9zcGFuPmAsXHJcbiAgICAgICAgICB2YWx1ZTogJy9jdXN0b20vaW1nL21hcC1ib3JkZXI2LnN2ZycsXHJcbiAgICAgICAgICBrZXk6IDUsXHJcbiAgICAgICAgfSxcclxuICAgICAgXVxyXG4gICAgICBtYXBCb3JkZXJPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ21hcC1ib3JkZXItYm94J1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgJy5tYXAtYm9yZGVyJ1xyXG4gICAgICApXHJcbiAgICAgIGlmIChtYXBCb3JkZXJPYmplY3QpIHtcclxuICAgICAgICBtYXBCb3JkZXJPYmplY3QubGVncF9zZWFyY2gobWFwQm9yZGVyRGF0YSlcclxuICAgICAgICBpQWN0aXZlRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5jbGFzc05hbWUgPSBcImljb24gaWNvbi1hY3RpdmVcIlxyXG4gICAgICAgIGlBY3RpdmVFbG0uc3R5bGUud2lkdGggPSAnY2FsYygxMDAlIC0gNDBweCknXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5oZWlnaHQgPSAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLnRvcCA9ICc2cHgnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5sZWZ0ID0gJzEwcHgnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmx9KWBcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRTaXplID0gJ2F1dG8gMTAwJSdcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXgnXHJcbiAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWFwLWJvcmRlcicpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N5X2RhdGFsaXN0JylbMF0uYXBwZW5kQ2hpbGQoaUFjdGl2ZUVsbSlcclxuICAgICAgICBtYXBCb3JkZXJEYXRhTGVncEVsbSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hcC1ib3JkZXInKVswXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgbWFwQm9yZGVyRGF0YUxlZ3BFbG0uc3R5bGUuZm9udFNpemUgPSAwXHJcbiAgICAgICAgbWFwQm9yZGVyRGF0YUxlZ3BFbG0uc3R5bGUuY29sb3IgPSAndHJhbnNwYXJlbnQnXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBCb3JkZXJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobWFwQm9yZGVyRGF0YVtpXS52YWx1ZSA9PSBib3JkZXIudXJsKSB7XHJcbiAgICAgICAgICAgIG1hcEJvcmRlckRhdGFMZWdwRWxtLnZhbHVlID0gbWFwQm9yZGVyRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBtYXBCb3JkZXJPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgICAgICAgbWFwQm9yZGVyRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hcEJvcmRlckRhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBCb3JkZXJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBCb3JkZXJEYXRhW2ldLnZhbHVlID09PSBtYXBCb3JkZXJEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGlBY3RpdmVFbG0uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyBtYXBCb3JkZXJEYXRhW2ldLnZhbHVlfSlgXHJcbiAgICAgICAgICAgICAgY2hhbmdlTWFwQm9yZGVyKG1hcEJvcmRlckRhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG5cclxuICAgIGZ1bmN0aW9uIGluaXREYXRhKCkge1xyXG4gICAgICBpZiAoaXNMb2FkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luID0gbWFyZ2luICogaW1nRWxtLndpZHRoXHJcbiAgICAgIHRyaWdnZXJSYW5nZSA9IGltZ0VsbS5oZWlnaHQgLyAxNDA7XHJcblxyXG4gICAgICB0aXRsZUlucHV0RWxtLnZhbHVlID0gdGl0bGUudGV4dDtcclxuICAgICAgdGl0bGVDaGVja2JveEVsbS5jaGVja2VkID0gdGl0bGUuc2hvdztcclxuICAgICAgdW5pdElucHV0RWxtLnZhbHVlID0gZGF0YVsxXS50ZXh0O1xyXG4gICAgICB1bml0Q2hlY2tib3hFbG0uY2hlY2tlZCA9IGRhdGFbMV0uc2hvdztcclxuICAgICAgY29tcGFzc0NoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzJdLnNob3c7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcGFzc0xpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY29tcGFzc0xpc3RbaV0gPT09IGRhdGFbMl0udXJsKSB7XHJcbiAgICAgICAgICBjb21wYXNzUmFkaW9zRWxtW2ldLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHBsb3R0aW5nU2NhbGVDaGVja2JveEVsbS5jaGVja2VkID0gcGxvdHRpbmdTY2FsZS5zaG93O1xyXG5cclxuICAgICAgYm9yZGVyLndpZHRoID0gaW1nRWxtLndpZHRoICogYm9yZGVyLndpZHRoXHJcbiAgICAgIGxldCBhbGxtYXJnaW4gPSBtYXJnaW5cclxuICAgICAgaWYgKGJvcmRlci5zaG93ICYmIGJvcmRlckltYWdlICYmIGJvcmRlckltYWdlLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgYWxsbWFyZ2luID0gYWxsbWFyZ2luICsgYm9yZGVyLndpZHRoXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhbnZhcy53aWR0aCA9IGltZ0VsbS53aWR0aCArIChhbGxtYXJnaW4gKiAyKVxyXG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nRWxtLmhlaWdodCArIChhbGxtYXJnaW4gKiAyKVxyXG5cclxuICAgICAgcHJpbnREYXRlQ2hlY2tib3hFbG0gJiYgKHByaW50RGF0ZUNoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzBdLnNob3cpO1xyXG4gICAgICBpZiAoamVEYXRlT2JqZWN0KSB7XHJcbiAgICAgICAgaWYgKGRhdGFbMF0udGV4dCkge1xyXG4gICAgICAgICAgamVEYXRlT2JqZWN0LnNldFZhbHVlKGRhdGFbMF0udGV4dClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBqZURhdGVPYmplY3Qubm93QnRuICYmIGplRGF0ZU9iamVjdC5ub3dCdG4oKVxyXG4gICAgICAgICAgZGF0YVswXS50ZXh0ID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHBsb3R0aW5nU2NhbGUueCA9IGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueDtcclxuICAgICAgLy8gcGxvdHRpbmdTY2FsZS55ID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueTtcclxuXHJcblxyXG4gICAgICBpZiAobWFwQm9yZGVyT2JqZWN0ICYmIG1hcEJvcmRlckRhdGFMZWdwRWxtICYmIGlBY3RpdmVFbG0pIHtcclxuICAgICAgICBtYXBCb3JkZXJEYXRhTGVncEVsbS52YWx1ZSA9IGJvcmRlci51cmw7XHJcbiAgICAgICAgbWFwQm9yZGVyT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgICAgYm9yZGVyLnVybFxyXG4gICAgICAgIClcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgYm9yZGVyLnVybH0pYFxyXG4gICAgICB9XHJcbiAgICAgIG1hcEJvcmRlckNoZWNrYm94RWxtLmNoZWNrZWQgPSBib3JkZXIuc2hvdztcclxuICAgICAgYm9yZGVySW1hZ2UgPSBudWxsXHJcbiAgICAgIGlmIChib3JkZXIgJiYgYm9yZGVyLnVybCkge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlcihib3JkZXIudXJsKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2hhbmdlVGVtcGxhdGUodikge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZcclxuICAgICAgdGVtcGxhdGVEYXRhID0gZ2V0VGVtcGxhdGVEYXRhKHRvb2xzKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBsYXRlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0ZW1wbGF0ZURhdGFbaV0uaWQgPT09IHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICB0aXRsZSA9IHRlbXBsYXRlRGF0YVtpXS50aXRsZSB8fCB0aXRsZVxyXG4gICAgICAgICAgbWFyZ2luID0gKCghdGVtcGxhdGVEYXRhW2ldLm1hcmdpbiAmJiB0ZW1wbGF0ZURhdGFbaV0ubWFyZ2luICE9IDApID8gbWFyZ2luIDogdGVtcGxhdGVEYXRhW2ldLm1hcmdpbilcclxuICAgICAgICAgIGRhdGEgPSB0ZW1wbGF0ZURhdGFbaV0uZGF0YSB8fCBkYXRhXHJcbiAgICAgICAgICBib3JkZXIgPSB0ZW1wbGF0ZURhdGFbaV0uYm9yZGVyIHx8IGJvcmRlclxyXG4gICAgICAgICAgYm9yZGVyLnNob3cgPSBfdGhpcy5tb2RpZnlcclxuICAgICAgICAgIGJvcmRlci5jb2xvciA9IGJvcmRlci5jb2xvciB8fCAnIzAwMDAwMCdcclxuICAgICAgICAgIHBsb3R0aW5nU2NhbGUgPSB0ZW1wbGF0ZURhdGFbaV0ucGxvdHRpbmdTY2FsZSB8fCBwbG90dGluZ1NjYWxlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpbml0RGF0YSgpXHJcbiAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2hhbmdlTWFwQm9yZGVyKHYpIHtcclxuICAgICAgYm9yZGVyLnVybCA9IHZcclxuICAgICAgaWYgKCFib3JkZXIudXJsKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgYm9yZGVySW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcclxuICAgICAgaWYgKGJvcmRlci51cmwuZW5kc1dpdGgoJ3N2ZycpKSB7XHJcbiAgICAgICAgZmV0Y2godG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmwpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgc3ZnVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcclxuICAgICAgICAgICAgY2hhbmdlTWFwQm9yZGVyQ29sb3IoYm9yZGVyLmNvbG9yKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYm9yZGVySW1hZ2Uuc3JjID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmw7XHJcbiAgICAgICAgYm9yZGVySW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGJvcmRlci5zaG93KSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKSB7XHJcbiAgICAgIGJvcmRlci5jb2xvciA9IGNvbG9yIHx8ICcjMDAwMDAwJ1xyXG4gICAgICBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm9yZGVyLWNvbG9yJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiBmYWxzZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IGJvcmRlci5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKVxyXG4gICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKCdyZ2JhKDAsMCwwLDEpJylcclxuICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBjdXJyZW50U3ZnXHJcbiAgICAgIGxldCBzdmdEYXRhVXJsXHJcbiAgICAgIGlmIChjb2xvcikge1xyXG4gICAgICAgIGNvbnN0IGNvbG9yUmVnZXggPSAvZmlsbD1cIlteXCJdK1wiL2c7XHJcbiAgICAgICAgY3VycmVudFN2ZyA9IHN2Z1RleHQucmVwbGFjZShjb2xvclJlZ2V4LCBgZmlsbD1cIiR7Y29sb3J9XCJgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdXJyZW50U3ZnID0gc3ZnVGV4dFxyXG4gICAgICB9XHJcbiAgICAgIHN2Z0RhdGFVcmwgPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnICtcclxuICAgICAgICBidG9hKEFycmF5LmZyb20obmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGN1cnJlbnRTdmcpLFxyXG4gICAgICAgICAgKGJ5dGUpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZSkpLmpvaW4oJycpKTtcclxuICAgICAgYm9yZGVySW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc3JjID0gc3ZnRGF0YVVybDtcclxuICAgICAgYm9yZGVySW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChib3JkZXIuc2hvdykge1xyXG4gICAgICAgICAgdXBkYXRlQ2FudmFzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBsZXQgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgbGV0IHRyaWdnZXJSYW5nZSA9IDU7XHJcbiAgICBsZXQgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgIGxldCBpc0RyYWdnaW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgbGV0IGlzUmVzaXppbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICBsZXQgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuICAgIGxldCBzdGFydFgsIHN0YXJ0WSwgc3RhcnRZMiwgc3RhcnRYMjtcclxuICAgIGxldCBlbGVtZW50T2Zmc2V0WCwgZWxlbWVudE9mZnNldFk7XHJcbiAgICBsZXQgZWxlbWVudFdpZHRoLCBlbGVtZW50SGVpZ2h0O1xyXG4gICAgbGV0IGN1cnJlbnRGb250U2l6ZTsgLy8g6K6w5b2V5b2T5YmN5a2X5L2T5aSn5bCPXHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q2FudmFzTW91c2VZKGUpIHtcclxuICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgY29uc3QgY2FudmFzV2lkdGggPSBjYW52YXMud2lkdGg7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgc2NhbGU7XHJcbiAgICAgIGlmIChjYW52YXNXaWR0aCAvIGNhbnZhc0hlaWdodCA+IGNvbnRhaW5lcldpZHRoIC8gY29udGFpbmVySGVpZ2h0KSB7XHJcbiAgICAgICAgc2NhbGUgPSBjb250YWluZXJXaWR0aCAvIGNhbnZhc1dpZHRoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjYWxlID0gY29udGFpbmVySGVpZ2h0IC8gY2FudmFzSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGNhbnZhc1dpZHRoICogc2NhbGU7XHJcbiAgICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHNjYWxlO1xyXG4gICAgICBjb25zdCBvZmZzZXRYID0gKGNvbnRhaW5lcldpZHRoIC0gc2NhbGVkV2lkdGgpIC8gMjtcclxuICAgICAgY29uc3Qgb2Zmc2V0WSA9IChjb250YWluZXJIZWlnaHQgLSBzY2FsZWRIZWlnaHQpIC8gMjtcclxuXHJcbiAgICAgIGNvbnN0IGNsaWVudFkgPSBlLmNsaWVudFkgLSByZWN0LnRvcCAtIG9mZnNldFk7XHJcbiAgICAgIHJldHVybiBjbGllbnRZIC8gc2NhbGU7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q2FudmFzTW91c2VYKGUpIHtcclxuICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgY29uc3QgY2FudmFzV2lkdGggPSBjYW52YXMud2lkdGg7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgc2NhbGU7XHJcbiAgICAgIGlmIChjYW52YXNXaWR0aCAvIGNhbnZhc0hlaWdodCA+IGNvbnRhaW5lcldpZHRoIC8gY29udGFpbmVySGVpZ2h0KSB7XHJcbiAgICAgICAgc2NhbGUgPSBjb250YWluZXJXaWR0aCAvIGNhbnZhc1dpZHRoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjYWxlID0gY29udGFpbmVySGVpZ2h0IC8gY2FudmFzSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGNhbnZhc1dpZHRoICogc2NhbGU7XHJcbiAgICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHNjYWxlO1xyXG4gICAgICBjb25zdCBvZmZzZXRYID0gKGNvbnRhaW5lcldpZHRoIC0gc2NhbGVkV2lkdGgpIC8gMjtcclxuICAgICAgY29uc3Qgb2Zmc2V0WSA9IChjb250YWluZXJIZWlnaHQgLSBzY2FsZWRIZWlnaHQpIC8gMjtcclxuXHJcbiAgICAgIGNvbnN0IGNsaWVudFggPSBlLmNsaWVudFggLSByZWN0LmxlZnQgLSBvZmZzZXRYO1xyXG4gICAgICByZXR1cm4gY2xpZW50WCAvIHNjYWxlO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvcm5lcnMoZWxlbWVudCwgYWxsbWFyZ2luKSB7XHJcbiAgICAgIGxldCBlbGVtZW50WCA9IGVsZW1lbnQueCAqIGltZ0VsbS53aWR0aCArIGFsbG1hcmdpbjtcclxuICAgICAgbGV0IGVsZW1lbnRZID0gZWxlbWVudC55ICogaW1nRWxtLmhlaWdodCArIGFsbG1hcmdpbjtcclxuICAgICAgbGV0IGVsZW1lbnRXaWR0aCA9IGVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0O1xyXG4gICAgICBsZXQgZWxlbWVudEhlaWdodCA9IGVsZW1lbnQuaGVpZ2h0ICogaW1nRWxtLmhlaWdodDtcclxuICAgICAgaWYgKCd0ZXh0JyBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZIC0gZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgLSBlbGVtZW50SGVpZ2h0IH0sXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIH0gZWxzZSBpZiAoJ3VybCcgaW4gZWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfSxcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZICsgZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgKyBlbGVtZW50SGVpZ2h0IH1cclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOavlOS+i+WwulxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfSxcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZICsgZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgKyBlbGVtZW50SGVpZ2h0IH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVDYW52YXMoKSB7XHJcbiAgICAgIGlmIChpc0xvYWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FudmFzLndpZHRoID0gaW1nRWxtLndpZHRoICsgKGFsbG1hcmdpbiAqIDIpXHJcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWdFbG0uaGVpZ2h0ICsgKGFsbG1hcmdpbiAqIDIpXHJcbiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgICAgY3R4LnJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9IFwiI2ZmZmZmZlwiO1xyXG4gICAgICBjdHguZmlsbCgpO1xyXG4gICAgICBjdHguZHJhd0ltYWdlKGltZ0VsbSwgYWxsbWFyZ2luLCBhbGxtYXJnaW4sIGltZ0VsbS53aWR0aCwgaW1nRWxtLmhlaWdodCk7XHJcblxyXG4gICAgICAvLyDmoIfpopjlhoXlrrlcclxuICAgICAgaWYgKHRpdGxlLnNob3cpIHtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gdGl0bGUudGV4dDtcclxuICAgICAgICBjb25zdCBmb250U2l6ZSA9IE1hdGgubWF4KDUsICh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSAqIDAuNSk7XHJcbiAgICAgICAgY3R4LmZvbnQgPSBgJHtmb250U2l6ZX1weCBzZXJpZmA7XHJcbiAgICAgICAgLy8gY29uc3QgdGV4dFdpZHRoID0gY3R4Lm1lYXN1cmVUZXh0KHRleHQpLndpZHRoO1xyXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aXRsZS5iZ0NvbG9yIHx8ICcjNWQ1ZDVkJztcclxuXHJcbiAgICAgICAgY3R4LmZpbGxSZWN0KGFsbG1hcmdpbiwgYWxsbWFyZ2luLCBjYW52YXMud2lkdGggLSAoYWxsbWFyZ2luICogMiksICh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSk7XHJcblxyXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aXRsZS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XHJcbiAgICAgICAgY3R4LmZpbGxUZXh0KHRleHQsIGNhbnZhcy53aWR0aCAvIDIsICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgLyAyKSArIGFsbG1hcmdpbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWFtuS7luWGheWuuVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS5zaG93KSB7XHJcbiAgICAgICAgICBpZiAoJ3RleHQnIGluIGRhdGFbaV0pIHtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSBgJHtpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHR9cHggc2VyaWZgO1xyXG4gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZGF0YVtpXS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgIGRhdGFbaV0ud2lkdGggPSBjdHgubWVhc3VyZVRleHQoZGF0YVtpXS50ZXh0KS53aWR0aCAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGN0eC5maWxsVGV4dChkYXRhW2ldLnRleHQsIChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4pO1xyXG4gICAgICAgICAgICBpZiAoZGF0YVtpXS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgZHJhd1NlbGVjdGlvbkJvcmRlcihkYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gZGF0YVtpXSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YVtpXS5zdmcgJiYgZGF0YVtpXS5zdmcuY29tcGxldGUpIHtcclxuICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGRhdGFbaV0uc3ZnLCAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIGFsbG1hcmdpbiwgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luLCBpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS53aWR0aCwgaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KTtcclxuICAgICAgICAgICAgICBpZiAoZGF0YVtpXS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uQm9yZGVyKGRhdGFbaV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBzdmcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICAgICAgICBzdmcuc3JjID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGRhdGFbaV0udXJsO1xyXG4gICAgICAgICAgICAgIHN2Zy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW2ldLnN2ZyA9IHN2Z1xyXG4gICAgICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShzdmcsIChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4sIGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLndpZHRoLCBpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaV0uaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uQm9yZGVyKGRhdGFbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g5q+U5L6L5bC6XHJcbiAgICAgIGlmIChwbG90dGluZ1NjYWxlLnNob3cpIHtcclxuICAgICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgICAgaWYgKGJvcmRlci5zaG93ICYmIGJvcmRlckltYWdlICYmIGJvcmRlckltYWdlLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBsb3R0aW5nU2NhbGVYID0gaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luXHJcbiAgICAgICAgbGV0IHBsb3R0aW5nU2NhbGVZID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueSArIGFsbG1hcmdpblxyXG4gICAgICAgIGxldCB1bml0ID0gJ20nXHJcbiAgICAgICAgLy8gY29uc3QgZm9udFNpemUgPSBwbG90dGluZ1NjYWxlLndpZHRoICogMC4xMjtcclxuICAgICAgICBjb25zdCBmb250U2l6ZSA9IGltZ0VsbS53aWR0aCAqIDAuMDggKiAwLjEyO1xyXG4gICAgICAgIGxldCBzcGFjaW5nID0gaW1nRWxtLndpZHRoICogMC4wOCAvIHBsb3R0aW5nU2NhbGUuY2VsbDtcclxuICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZCh1bml0RGlzdGFuY2UgKiBzcGFjaW5nKTtcclxuICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nID0gc3BhY2luZ0Rpc3RhbmNlICsgJydcclxuICAgICAgICBpZiAoc3BhY2luZ0Rpc3RhbmNlIDwgMTApIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzcGFjaW5nRGlzdGFuY2UgPSBOdW1iZXIoc3BhY2luZ0Rpc3RhbmNlU3RyaW5nWzBdKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGFjaW5nRGlzdGFuY2VTdHJpbmcubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IHNwYWNpbmdEaXN0YW5jZSAqIDEwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzcGFjaW5nID0gc3BhY2luZ0Rpc3RhbmNlIC8gdW5pdERpc3RhbmNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBsb3R0aW5nU2NhbGUud2lkdGggPSBzcGFjaW5nICogcGxvdHRpbmdTY2FsZS5jZWxsO1xyXG4gICAgICAgIHBsb3R0aW5nU2NhbGUuaGVpZ2h0ID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMjtcclxuICAgICAgICBpZiAoc3BhY2luZ0Rpc3RhbmNlID49IDEwMDApIHtcclxuICAgICAgICAgIHVuaXQgPSAn446eJ1xyXG4gICAgICAgICAgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZChzcGFjaW5nRGlzdGFuY2UgLyAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2NhbGVZID0gcGxvdHRpbmdTY2FsZVk7XHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5tb3ZlVG8ocGxvdHRpbmdTY2FsZVgsIHNjYWxlWSk7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhwbG90dGluZ1NjYWxlWCArIHBsb3R0aW5nU2NhbGUud2lkdGgsIHNjYWxlWSk7XHJcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICBjdHgubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xyXG5cclxuICAgICAgICBsZXQgdGlja1ggPSAwXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcGxvdHRpbmdTY2FsZS5jZWxsOyBpKyspIHtcclxuICAgICAgICAgIHRpY2tYID0gcGxvdHRpbmdTY2FsZVggKyBpICogc3BhY2luZztcclxuICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGN0eC5tb3ZlVG8odGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUud2lkdGggKiAwLjEpO1xyXG4gICAgICAgICAgY3R4LmxpbmVUbyh0aWNrWCwgc2NhbGVZKTtcclxuICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHBsb3R0aW5nU2NhbGUuY29sb3I7XHJcbiAgICAgICAgICBjdHgubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgICBjdHguc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgY3R4LmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcclxuICAgICAgICAgIGN0eC5maWxsVGV4dChpICogc3BhY2luZ0Rpc3RhbmNlLCB0aWNrWCwgc2NhbGVZIC0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdHguZm9udCA9IGAke2ZvbnRTaXplfXB4IEFyaWFsYDtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICBjdHgudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcclxuICAgICAgICBjdHguZmlsbFRleHQodW5pdCwgdGlja1ggKyAoZm9udFNpemUgKiAxLjIpLCBzY2FsZVkgLSBwbG90dGluZ1NjYWxlLndpZHRoICogMC4xKTtcclxuXHJcbiAgICAgICAgaWYgKHBsb3R0aW5nU2NhbGUuaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgZHJhd1NlbGVjdGlvbkJvcmRlcihwbG90dGluZ1NjYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOi+ueahhlxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAvLyDnu5jliLblm5vkuKrop5LvvIjoo4HliarmiJA0NeW6puinku+8iVxyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgbWFyZ2luLCBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ3RvcCcsIDEpO1xyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgY2FudmFzLndpZHRoIC0gYm9yZGVyLndpZHRoIC0gbWFyZ2luLCBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ3JpZ2h0JywgMSk7XHJcbiAgICAgICAgZHJhd0JvcmRlcihjdHgsIGJvcmRlckltYWdlLCBjYW52YXMud2lkdGggLSBib3JkZXIud2lkdGggLSBtYXJnaW4sIGNhbnZhcy5oZWlnaHQgLSBib3JkZXIud2lkdGggLSBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ2JvdHRvbScsIDEpO1xyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgbWFyZ2luLCBjYW52YXMuaGVpZ2h0IC0gYm9yZGVyLndpZHRoIC0gbWFyZ2luLCBib3JkZXIud2lkdGgsICdsZWZ0JywgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDnu5jliLbovrnmoYZcclxuICAgIGZ1bmN0aW9uIGRyYXdCb3JkZXIoY3R4LCBpbWcsIHgsIHksIHNpemUsIHBvc2l0aW9uLCBpc1N0YXJ0ID0gMSkge1xyXG4gICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICBjdHgudHJhbnNsYXRlKHggKyBzaXplIC8gMiwgeSArIHNpemUgLyAyKTtcclxuXHJcbiAgICAgIC8vIOagueaNruS9jee9ruiuvue9ruaXi+i9rOinkuW6plxyXG4gICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZShNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZShNYXRoLlBJKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZSgzICogTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8g5Yib5bu6NDXluqbop5LnmoToo4Hliarot6/lvoRcclxuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjdHgubW92ZVRvKCgtc2l6ZSAqIGlzU3RhcnQpIC8gMiwgLXNpemUgLyAyKTtcclxuICAgICAgaWYgKHBvc2l0aW9uID09PSAndG9wJyB8fCBwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICBjdHgubGluZVRvKGNhbnZhcy53aWR0aCAtIChtYXJnaW4gKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhjYW52YXMud2lkdGggLSAobWFyZ2luICsgc2l6ZSkgKiAyICsgKHNpemUgLyAyKSwgc2l6ZSAvIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGN0eC5saW5lVG8oY2FudmFzLmhlaWdodCAtIChtYXJnaW4gKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhjYW52YXMuaGVpZ2h0IC0gKG1hcmdpbiArIHNpemUpICogMiArIChzaXplIC8gMiksIHNpemUgLyAyKTtcclxuICAgICAgfVxyXG4gICAgICBjdHgubGluZVRvKChzaXplICogaXNTdGFydCkgLyAyLCBzaXplIC8gMik7XHJcbiAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgICAgY3R4LmNsaXAoKTtcclxuXHJcbiAgICAgIGxldCBpbWdXaWR0aCA9IGltZy53aWR0aCAvIGltZy5oZWlnaHQgKiBzaXplXHJcblxyXG4gICAgICAvLyDnu5jliLblm77niYdcclxuICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIC1zaXplIC8gMiwgLXNpemUgLyAyLCBpbWdXaWR0aCwgc2l6ZSk7XHJcblxyXG4gICAgICBsZXQgY291bnQ7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgY291bnQgPSBNYXRoLmNlaWwoKGNhbnZhcy53aWR0aCAtIChtYXJnaW4gKiAyKSAtIChib3JkZXIud2lkdGggKiAyKSkgLyBib3JkZXIud2lkdGgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvdW50ID0gTWF0aC5jZWlsKChjYW52YXMuaGVpZ2h0IC0gKG1hcmdpbiAqIDIpIC0gKGJvcmRlci53aWR0aCAqIDIpKSAvIGJvcmRlci53aWR0aCk7XHJcbiAgICAgIH1cclxuICAgICAgY291bnQrK1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAtc2l6ZSAvIDIgKyBpbWdXaWR0aCAqIGksIC1zaXplIC8gMiwgaW1nV2lkdGgsIHNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25Cb3JkZXIoZWxlbWVudCkge1xyXG4gICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgIGlmIChib3JkZXIuc2hvdyAmJiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS5jb21wbGV0ZSkge1xyXG4gICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvcm5lclJhZGl1cyA9IGNhbnZhcy5oZWlnaHQgKiAwLjAwNTtcclxuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgICAgIGN0eC5saW5lV2lkdGggPSBjYW52YXMuaGVpZ2h0ICogMC4wMDI7XHJcbiAgICAgIGlmICgndGV4dCcgaW4gZWxlbWVudCkge1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KChpbWdFbG0ud2lkdGggKiBlbGVtZW50LnggKyBhbGxtYXJnaW4pLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQueSArIGFsbG1hcmdpbikgLSAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQuaGVpZ2h0KSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LndpZHRoKSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LmhlaWdodCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKCd1cmwnIGluIGVsZW1lbnQpIHtcclxuICAgICAgICBjdHguc3Ryb2tlUmVjdCgoaW1nRWxtLndpZHRoICogZWxlbWVudC54ICsgYWxsbWFyZ2luKSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LnkgKyBhbGxtYXJnaW4pLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQud2lkdGgpLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQuaGVpZ2h0KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZWxlbWVudCA9PT0gcGxvdHRpbmdTY2FsZSkge1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KChpbWdFbG0ud2lkdGggKiBlbGVtZW50LnggKyBhbGxtYXJnaW4pIC0gKHBsb3R0aW5nU2NhbGUud2lkdGggKiAwLjIpLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQueSArIGFsbG1hcmdpbikgLSBlbGVtZW50LmhlaWdodCAtIChwbG90dGluZ1NjYWxlLmhlaWdodCAqIDAuNSksIGVsZW1lbnQud2lkdGggKyAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuNiksIGVsZW1lbnQuaGVpZ2h0ICsgKHBsb3R0aW5nU2NhbGUuaGVpZ2h0KSk7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29ybmVycyA9IGdldENvcm5lcnMoZWxlbWVudCwgYWxsbWFyZ2luKTtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICBjb3JuZXJzLmZvckVhY2goY29ybmVyID0+IHtcclxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY3R4LmFyYyhjb3JuZXIueCwgY29ybmVyLnksIGNvcm5lclJhZGl1cywgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIGN0eC5maWxsKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBjb25zdCB4ID0gZ2V0Q2FudmFzTW91c2VYKGUpO1xyXG4gICAgICBjb25zdCB5ID0gZ2V0Q2FudmFzTW91c2VZKGUpO1xyXG4gICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgIGlmIChib3JkZXIuc2hvdyAmJiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS5jb21wbGV0ZSkge1xyXG4gICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGl0bGUuc2hvdykge1xyXG4gICAgICAgIC8vIOajgOafpeaYr+WQpueCueWHu+S6huagh+mimOe8lui+keinpuWPkeWMuuWfn1xyXG4gICAgICAgIGlmICh5ID49ICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgKyBhbGxtYXJnaW4pIC0gdHJpZ2dlclJhbmdlICYmIHkgPD0gKCh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSArIGFsbG1hcmdpbikgKyB0cmlnZ2VyUmFuZ2UpIHtcclxuICAgICAgICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahOmAieS4reeKtuaAgee9ruS4uiBmYWxzZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRhdGFbaV0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIOajgOafpeaYr+WQpueCueWHu+S6hui+ueahhuinkuS4iueahOWwj+WchueCuVxyXG4gICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50ICYmIHNlbGVjdGVkRWxlbWVudCAhPT0gcGxvdHRpbmdTY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IGNvcm5lclJhZGl1cyA9IGNhbnZhcy5oZWlnaHQgKiAwLjAwNTtcclxuICAgICAgICBjb25zdCBjb3JuZXJzID0gZ2V0Q29ybmVycyhzZWxlY3RlZEVsZW1lbnQsIGFsbG1hcmdpbik7XHJcbiAgICAgICAgY29ybmVycy5mb3JFYWNoKChjb3JuZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoeCA+PSBjb3JuZXIueCAtIGNvcm5lclJhZGl1cyAmJiB4IDw9IGNvcm5lci54ICsgY29ybmVyUmFkaXVzICYmXHJcbiAgICAgICAgICAgIHkgPj0gY29ybmVyLnkgLSBjb3JuZXJSYWRpdXMgJiYgeSA8PSBjb3JuZXIueSArIGNvcm5lclJhZGl1cykge1xyXG4gICAgICAgICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJlc2l6ZUNvcm5lciA9IGluZGV4O1xyXG4gICAgICAgICAgICBzdGFydFggPSB4O1xyXG4gICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICBlbGVtZW50V2lkdGggPSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRIZWlnaHQgPSAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpO1xyXG4gICAgICAgICAgICBpZiAoJ3RleHQnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnRXaWR0aCA9IChzZWxlY3RlZEVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0KTtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm9udFNpemUgPSBzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzUmVzaXppbmdFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahOmAieS4reeKtuaAgee9ruS4uiBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBkYXRhW2ldLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBwbG90dGluZ1NjYWxlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgICAgaXNEcmFnZ2luZ0VsZW1lbnQgPSBmYWxzZTtcclxuICAgICAgaXNSZXNpemluZ0VsZW1lbnQgPSBmYWxzZTtcclxuICAgICAgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0uc2hvdykge1xyXG4gICAgICAgICAgaWYgKCd0ZXh0JyBpbiBkYXRhW2ldKSB7XHJcbiAgICAgICAgICAgIGlmICh4ID49IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luICYmIHggPD0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyBhbGxtYXJnaW4gKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpICYmXHJcbiAgICAgICAgICAgICAgeSA+PSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4gLSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KSAmJiB5IDw9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbikge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudCA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgICAgZGF0YVtpXS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBpc0RyYWdnaW5nRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgc3RhcnRYID0geDtcclxuICAgICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICAgIHN0YXJ0WTIgPSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgLSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KVxyXG4gICAgICAgICAgICAgIHN0YXJ0WDIgPSAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS53aWR0aClcclxuICAgICAgICAgICAgICBlbGVtZW50T2Zmc2V0WCA9IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgIHVwZGF0ZUNhbnZhcygpOyAvLyDngrnlh7vml7bph43mlrDnu5jliLbnlLvluIPku6XmmL7npLrovrnmoYZcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCd1cmwnIGluIGRhdGFbaV0pIHtcclxuICAgICAgICAgICAgaWYgKGRhdGFbaV0uc3ZnICYmIGRhdGFbaV0uc3ZnLmNvbXBsZXRlICYmIGRhdGFbaV0uc2hvdykge1xyXG4gICAgICAgICAgICAgIGlmICh4ID49IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luICYmIHggPD0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyBhbGxtYXJnaW4gKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpICYmXHJcbiAgICAgICAgICAgICAgICB5ID49IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbiAmJiB5IDw9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbiArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQgPSBkYXRhW2ldO1xyXG4gICAgICAgICAgICAgICAgZGF0YVtpXS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7XHJcbiAgICAgICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICAgICAgc3RhcnRZMiA9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudE9mZnNldFggPSAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIGFsbG1hcmdpbjtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2FudmFzKCk7IC8vIOeCueWHu+aXtumHjeaWsOe7mOWItueUu+W4g+S7peaYvuekuui+ueahhlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocGxvdHRpbmdTY2FsZS5zaG93KSB7XHJcbiAgICAgICAgaWYgKHggPj0gKGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueCArIGFsbG1hcmdpbikgLSAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMikgJiYgeCA8PSAoaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luKSAtIChwbG90dGluZ1NjYWxlLndpZHRoICogMC4yKSArIHBsb3R0aW5nU2NhbGUud2lkdGggKyAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuNikgJiZcclxuICAgICAgICAgIHkgPj0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pIC0gcGxvdHRpbmdTY2FsZS5oZWlnaHQgLSAocGxvdHRpbmdTY2FsZS5oZWlnaHQgKiAwLjUpICYmIHkgPD0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pIC0gKHBsb3R0aW5nU2NhbGUuaGVpZ2h0ICogMC41KSArIChwbG90dGluZ1NjYWxlLmhlaWdodCkpIHtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudCA9IHBsb3R0aW5nU2NhbGU7XHJcbiAgICAgICAgICBwbG90dGluZ1NjYWxlLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgaXNEcmFnZ2luZ0VsZW1lbnQgPSB0cnVlO1xyXG4gICAgICAgICAgc3RhcnRYID0geDtcclxuICAgICAgICAgIHN0YXJ0WSA9IHk7XHJcbiAgICAgICAgICBzdGFydFkyID0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pICsgcGxvdHRpbmdTY2FsZS5oZWlnaHQ7XHJcbiAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueCArIGFsbG1hcmdpbikgKyBwbG90dGluZ1NjYWxlLndpZHRoO1xyXG4gICAgICAgICAgZWxlbWVudE9mZnNldFggPSAoaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luKTtcclxuICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueSArIGFsbG1hcmdpbjtcclxuICAgICAgICAgIHVwZGF0ZUNhbnZhcygpOyAvLyDngrnlh7vml7bph43mlrDnu5jliLbnlLvluIPku6XmmL7npLrovrnmoYZcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWmguaenOeCueWHu+WcqOWGheWuueS7peWklu+8jOmHjeaWsOe7mOWItueUu+W4g+S7peenu+mZpOi+ueahhlxyXG4gICAgICBpZiAoIXNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB4ID0gZ2V0Q2FudmFzTW91c2VYKGUpO1xyXG4gICAgICBjb25zdCB5ID0gZ2V0Q2FudmFzTW91c2VZKGUpO1xyXG4gICAgICBpZiAoeCA8IDAgfHwgeSA8IDAgfHwgeCA+IGNhbnZhcy53aWR0aCB8fCB5ID4gY2FudmFzLmhlaWdodCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGl0bGUuc2hvdykge1xyXG4gICAgICAgIGxldCBhbGxtYXJnaW4gPSBtYXJnaW5cclxuICAgICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoeSA+PSAoKHRpdGxlLmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpICsgYWxsbWFyZ2luKSAtIHRyaWdnZXJSYW5nZSAmJiB5IDw9ICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgKyBhbGxtYXJnaW4pICsgdHJpZ2dlclJhbmdlKSB7XHJcbiAgICAgICAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gJ24tcmVzaXplJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2FudmFzLnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0RyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aXRsZS5oZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heCh5IC0gYWxsbWFyZ2luLCAzMCkgLyBpbWdFbG0uaGVpZ2h0LCAxKTtcclxuICAgICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGlmIChpc0RyYWdnaW5nRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGR4ID0geCAtIHN0YXJ0WDtcclxuICAgICAgICBjb25zdCBkeSA9IHkgLSBzdGFydFk7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnggPSAoKGVsZW1lbnRPZmZzZXRYICsgZHgpIC0gYWxsbWFyZ2luKSAvIGltZ0VsbS53aWR0aDtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQueSA9ICgoZWxlbWVudE9mZnNldFkgKyBkeSkgLSBhbGxtYXJnaW4pIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICB1cGRhdGVDYW52YXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzUmVzaXppbmdFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgZHggPSB4IC0gc3RhcnRYO1xyXG4gICAgICAgIGNvbnN0IGR5ID0geSAtIHN0YXJ0WTtcclxuICAgICAgICBsZXQgc2NhbGVGYWN0b3I7XHJcblxyXG4gICAgICAgIHN3aXRjaCAocmVzaXplQ29ybmVyKSB7XHJcbiAgICAgICAgICBjYXNlIDA6IC8vIOW3puS4iuinklxyXG4gICAgICAgICAgICBpZiAoJ3RleHQnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNjYWxlRmFjdG9yID0gKGVsZW1lbnRXaWR0aCAtIGR4KSAvIGVsZW1lbnRXaWR0aDtcclxuICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0ID0gTWF0aC5tYXgoKDEwIC8gaW1nRWxtLmhlaWdodCksIGN1cnJlbnRGb250U2l6ZSAqIHNjYWxlRmFjdG9yKVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCd1cmwnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgLSAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCAtIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0IC0gZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMTogLy8g5Y+z5LiK6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoICsgZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCd1cmwnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC53aWR0aCA9IE1hdGgubWF4KDEwLCBlbGVtZW50V2lkdGggKyBkeCkgLyBpbWdFbG0uaGVpZ2h0O1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgxMCwgZWxlbWVudEhlaWdodCAtIGR5KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnkgPSAoc3RhcnRZMiAtIChzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMjogLy8g5bem5LiL6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoIC0gZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgKyAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnggPSAoc3RhcnRYMiAtIChzZWxlY3RlZEVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0KSkgLyBpbWdFbG0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCAtIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0ICsgZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzogLy8g5Y+z5LiL6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoICsgZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgKyAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCArIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0ICsgZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS5zaG93ICYmIGRhdGFbaV0uaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgc3RhcnRZMiA9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSAtIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpXHJcbiAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpXHJcbiAgICAgICAgICBpZiAoJ3VybCcgaW4gZGF0YVtpXSkge1xyXG4gICAgICAgICAgICBzdGFydFkyID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLmhlaWdodClcclxuICAgICAgICAgICAgc3RhcnRYMiA9IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLndpZHRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsZW1lbnRPZmZzZXRYID0gZGF0YVtpXS54O1xyXG4gICAgICAgICAgZWxlbWVudE9mZnNldFkgPSBkYXRhW2ldLnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwbG90dGluZ1NjYWxlLnNob3cgJiYgcGxvdHRpbmdTY2FsZS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgc3RhcnRZMiA9IHBsb3R0aW5nU2NhbGUueSArIHBsb3R0aW5nU2NhbGUuaGVpZ2h0XHJcbiAgICAgICAgc3RhcnRYMiA9IHBsb3R0aW5nU2NhbGUueCArIHBsb3R0aW5nU2NhbGUud2lkdGhcclxuICAgICAgICBlbGVtZW50T2Zmc2V0WCA9IHBsb3R0aW5nU2NhbGUueDtcclxuICAgICAgICBlbGVtZW50T2Zmc2V0WSA9IHBsb3R0aW5nU2NhbGUueTtcclxuICAgICAgfVxyXG4gICAgICBpc0RyYWdnaW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICByZXNpemVDb3JuZXIgPSBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0UGxvdHRpbmdTY2FsZSgpIHtcclxuICAgICAgaWYgKCFfdGhpcy5yZWN0YW5nbGUpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgd2VzdExuZyA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUud2VzdClcclxuICAgICAgbGV0IGVhc3RMbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLmVhc3QpXHJcbiAgICAgIGxldCBub3J0aExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUubm9ydGgpXHJcbiAgICAgIGxldCBzb3V0aExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUuc291dGgpXHJcblxyXG4gICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3dlc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgIGxldCB0byA9IHR1cmYucG9pbnQoW2Vhc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgIGxldCBkaXN0YW5jZSA9IHR1cmYuZGlzdGFuY2UoZnJvbSwgdG8sIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuXHJcbiAgICAgIHVuaXREaXN0YW5jZSA9IGRpc3RhbmNlICogMTAwMCAvIGltZ0VsbS53aWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXREYXRlVGltZVN0cmluZygpIHtcclxuICAgICAgLy8g5Yib5bu65LiA5Liq6KGo56S65b2T5YmN5pe26Ze055qEIERhdGUg5a+56LGhXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIOiOt+WPluW5tOS7vVxyXG4gICAgICBjb25zdCB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIC8vIOiOt+WPluaciOS7ve+8iOS7jiAwIOW8gOWni++8jOaJgOS7peimgeWKoCAx77yJ77yM5bm25bCG5YW26L2s5o2i5Li65Lik5L2N5a2X56ym5Liy77yM5LiN6Laz5Lik5L2N5Zyo5YmN6Z2i6KGl6Zu2XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgLy8g6I635Y+W5pel5pyf77yM5bm25bCG5YW26L2s5o2i5Li65Lik5L2N5a2X56ym5Liy77yM5LiN6Laz5Lik5L2N5Zyo5YmN6Z2i6KGl6Zu2XHJcbiAgICAgIGNvbnN0IGRheSA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAvLyDojrflj5blsI/ml7bvvIzlubblsIblhbbovazmjaLkuLrkuKTkvY3lrZfnrKbkuLLvvIzkuI3otrPkuKTkvY3lnKjliY3pnaLooaXpm7ZcclxuICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluWIhumSn++8jOW5tuWwhuWFtui9rOaNouS4uuS4pOS9jeWtl+espuS4su+8jOS4jei2s+S4pOS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKG5vdy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluenku+8jOW5tuWwhuWFtui9rOaNouS4uuS4pOS9jeWtl+espuS4su+8jOS4jei2s+S4pOS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBzZWNvbmRzID0gU3RyaW5nKG5vdy5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluavq+enku+8jOW5tuWwhuWFtui9rOaNouS4uuS4ieS9jeWtl+espuS4su+8jOS4jei2s+S4ieS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcobm93LmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCgzLCAnMCcpO1xyXG4gICAgICAvLyDlsIblubTjgIHmnIjjgIHml6XjgIHml7bjgIHliIbjgIHnp5LjgIHmr6vnp5Lmi7zmjqXmiJDmiYDpnIDnmoTlrZfnrKbkuLJcclxuICAgICAgcmV0dXJuIGAke3llYXJ9JHttb250aH0ke2RheX0ke2hvdXJzfSR7bWludXRlc30ke3NlY29uZHN9JHttaWxsaXNlY29uZHN9YDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBleHBvcnRNYXAoKSB7XHJcbiAgICAgIGxldCB1bml0RGlzdGFuY2UyXHJcbiAgICAgIGxldCBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgIGxldCBjdHgyID0gY2FudmFzMi5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICBsZXQgaW1nRWxtMiA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWdFbG0yLnNyYyA9IF90aGlzLm9yaWdpbmFsSW1nXHJcbiAgICAgIGltZ0VsbTIub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChpc0xvYWQpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGl0bGUyID0geyAuLi50aXRsZSB9XHJcbiAgICAgICAgbGV0IGRhdGEyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSlcclxuICAgICAgICBsZXQgcGxvdHRpbmdTY2FsZTIgPSB7IC4uLnBsb3R0aW5nU2NhbGUgfVxyXG4gICAgICAgIGxldCBib3JkZXIyID0geyAuLi5ib3JkZXIgfVxyXG4gICAgICAgIGJvcmRlcjIud2lkdGggPSBib3JkZXIud2lkdGggLyBpbWdFbG0ud2lkdGggKiBpbWdFbG0yLndpZHRoXHJcblxyXG4gICAgICAgIGxldCBtYXJnaW4yID0gbWFyZ2luIC8gaW1nRWxtLndpZHRoICogaW1nRWxtMi53aWR0aDtcclxuICAgICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luMlxyXG4gICAgICAgIGlmIChib3JkZXIyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlcjIud2lkdGhcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhbnZhczIud2lkdGggPSBpbWdFbG0yLndpZHRoICsgKGFsbG1hcmdpbiAqIDIpO1xyXG4gICAgICAgIGNhbnZhczIuaGVpZ2h0ID0gaW1nRWxtMi5oZWlnaHQgKyAoYWxsbWFyZ2luICogMik7XHJcblxyXG4gICAgICAgIGN0eDIuY2xlYXJSZWN0KDAsIDAsIGNhbnZhczIud2lkdGgsIGNhbnZhczIuaGVpZ2h0KTtcclxuICAgICAgICBjdHgyLnJlY3QoMCwgMCwgY2FudmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpO1xyXG4gICAgICAgIGN0eDIuZmlsbFN0eWxlID0gXCIjZmZmZmZmXCI7XHJcbiAgICAgICAgY3R4Mi5maWxsKCk7XHJcbiAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1nRWxtMiwgYWxsbWFyZ2luLCBhbGxtYXJnaW4sIGltZ0VsbTIud2lkdGgsIGltZ0VsbTIuaGVpZ2h0KTtcclxuICAgICAgICAvLyDmoIfpopjlhoXlrrlcclxuICAgICAgICBpZiAodGl0bGUyLnNob3cpIHtcclxuICAgICAgICAgIGNvbnN0IHRleHQgPSB0aXRsZTIudGV4dDtcclxuICAgICAgICAgIGNvbnN0IGZvbnRTaXplID0gTWF0aC5tYXgoNSwgKHRpdGxlMi5oZWlnaHQgKiBpbWdFbG0yLmhlaWdodCkgKiAwLjUpO1xyXG4gICAgICAgICAgY3R4Mi5mb250ID0gYCR7Zm9udFNpemV9cHggc2VyaWZgO1xyXG4gICAgICAgICAgY3R4Mi5maWxsU3R5bGUgPSB0aXRsZTIuYmdDb2xvciB8fCAnIzVkNWQ1ZCc7XHJcblxyXG4gICAgICAgICAgY3R4Mi5maWxsUmVjdChhbGxtYXJnaW4sIGFsbG1hcmdpbiwgY2FudmFzMi53aWR0aCAtIChhbGxtYXJnaW4gKiAyKSwgKHRpdGxlMi5oZWlnaHQgKiBpbWdFbG0yLmhlaWdodCkpO1xyXG5cclxuICAgICAgICAgIGN0eDIuZmlsbFN0eWxlID0gdGl0bGUyLmNvbG9yIHx8ICd3aGl0ZSc7XHJcbiAgICAgICAgICBjdHgyLnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG4gICAgICAgICAgY3R4Mi50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuICAgICAgICAgIGN0eDIuZmlsbFRleHQodGV4dCwgY2FudmFzMi53aWR0aCAvIDIsICgodGl0bGUyLmhlaWdodCAqIGltZ0VsbTIuaGVpZ2h0KSAvIDIpICsgYWxsbWFyZ2luKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOWFtuS7luWGheWuuVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YTIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChkYXRhMltpXS5zaG93KSB7XHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gZGF0YTJbaV0pIHtcclxuICAgICAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtpbWdFbG0yLmhlaWdodCAqIGRhdGEyW2ldLmhlaWdodH1weCBzZXJpZmA7XHJcbiAgICAgICAgICAgICAgY3R4Mi5maWxsU3R5bGUgPSBkYXRhMltpXS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgICAgICAgIGN0eDIudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgICAgICAgIGN0eDIudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgICAgZGF0YTJbaV0ud2lkdGggPSBjdHgyLm1lYXN1cmVUZXh0KGRhdGEyW2ldLnRleHQpLndpZHRoIC8gaW1nRWxtMi5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgY3R4Mi5maWxsVGV4dChkYXRhMltpXS50ZXh0LCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gZGF0YTJbaV0pIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YVtpXS5zdmcgJiYgZGF0YVtpXS5zdmcuY29tcGxldGUpIHtcclxuICAgICAgICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGRhdGFbaV0uc3ZnLCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbiwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS53aWR0aCwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgICAgICAgICAgc3ZnLnNyYyA9IHRvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyBkYXRhMltpXS51cmw7XHJcbiAgICAgICAgICAgICAgICBzdmcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhMltpXS5zdmcgPSBzdmdcclxuICAgICAgICAgICAgICAgICAgY3R4Mi5kcmF3SW1hZ2Uoc3ZnLCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbiwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS53aWR0aCwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmr5TkvovlsLpcclxuICAgICAgICBpZiAocGxvdHRpbmdTY2FsZTIuc2hvdykge1xyXG4gICAgICAgICAgZ2V0UGxvdHRpbmdTY2FsZSgpXHJcbiAgICAgICAgICBsZXQgcGxvdHRpbmdTY2FsZTJYID0gaW1nRWxtMi53aWR0aCAqIHBsb3R0aW5nU2NhbGUyLnggKyBhbGxtYXJnaW5cclxuICAgICAgICAgIGxldCBwbG90dGluZ1NjYWxlMlkgPSBpbWdFbG0yLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUyLnkgKyBhbGxtYXJnaW5cclxuICAgICAgICAgIGxldCB1bml0ID0gJ20nXHJcbiAgICAgICAgICAvLyBjb25zdCBmb250U2l6ZSA9IHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xMjtcclxuICAgICAgICAgIGNvbnN0IGZvbnRTaXplID0gaW1nRWxtMi53aWR0aCAqIDAuMDggKiAwLjEyO1xyXG4gICAgICAgICAgbGV0IHNwYWNpbmcgPSBpbWdFbG0yLndpZHRoICogMC4wOCAvIHBsb3R0aW5nU2NhbGUyLmNlbGw7XHJcbiAgICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZCh1bml0RGlzdGFuY2UyICogc3BhY2luZyk7XHJcbiAgICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nID0gc3BhY2luZ0Rpc3RhbmNlICsgJydcclxuICAgICAgICAgIGlmIChzcGFjaW5nRGlzdGFuY2UgPCAxMCkge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IE51bWJlcihzcGFjaW5nRGlzdGFuY2VTdHJpbmdbMF0pXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IHNwYWNpbmdEaXN0YW5jZSAqIDEwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3BhY2luZyA9IHNwYWNpbmdEaXN0YW5jZSAvIHVuaXREaXN0YW5jZTJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBsb3R0aW5nU2NhbGUyLndpZHRoID0gc3BhY2luZyAqIHBsb3R0aW5nU2NhbGUyLmNlbGw7XHJcbiAgICAgICAgICBwbG90dGluZ1NjYWxlMi5oZWlnaHQgPSBwbG90dGluZ1NjYWxlMi53aWR0aCAqIDAuMjtcclxuICAgICAgICAgIGlmIChzcGFjaW5nRGlzdGFuY2UgPj0gMTAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gJ+OOnidcclxuICAgICAgICAgICAgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZChzcGFjaW5nRGlzdGFuY2UgLyAxMDAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHNjYWxlWSA9IHBsb3R0aW5nU2NhbGUyWTtcclxuICAgICAgICAgIGN0eDIuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLm1vdmVUbyhwbG90dGluZ1NjYWxlMlgsIHNjYWxlWSk7XHJcbiAgICAgICAgICBjdHgyLmxpbmVUbyhwbG90dGluZ1NjYWxlMlggKyBwbG90dGluZ1NjYWxlMi53aWR0aCwgc2NhbGVZKTtcclxuICAgICAgICAgIGN0eDIuc3Ryb2tlU3R5bGUgPSBwbG90dGluZ1NjYWxlMi5jb2xvcjtcclxuICAgICAgICAgIGN0eDIubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZTIud2lkdGggKiAwLjAxO1xyXG4gICAgICAgICAgY3R4Mi5zdHJva2UoKTtcclxuXHJcbiAgICAgICAgICBsZXQgdGlja1ggPSAwXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwbG90dGluZ1NjYWxlMi5jZWxsOyBpKyspIHtcclxuICAgICAgICAgICAgdGlja1ggPSBwbG90dGluZ1NjYWxlMlggKyBpICogc3BhY2luZztcclxuICAgICAgICAgICAgY3R4Mi5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY3R4Mi5tb3ZlVG8odGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICAgICAgY3R4Mi5saW5lVG8odGlja1gsIHNjYWxlWSk7XHJcbiAgICAgICAgICAgIGN0eDIuc3Ryb2tlU3R5bGUgPSBwbG90dGluZ1NjYWxlMi5jb2xvcjtcclxuICAgICAgICAgICAgY3R4Mi5saW5lV2lkdGggPSBwbG90dGluZ1NjYWxlMi53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgICAgIGN0eDIuc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICAgIGN0eDIuZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZTIuY29sb3I7XHJcbiAgICAgICAgICAgIGN0eDIudGV4dEFsaWduID0gJ2NlbnRlcic7XHJcbiAgICAgICAgICAgIGN0eDIudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgIGN0eDIuZmlsbFRleHQoaSAqIHNwYWNpbmdEaXN0YW5jZSwgdGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICBjdHgyLmZpbGxTdHlsZSA9IHBsb3R0aW5nU2NhbGUyLmNvbG9yO1xyXG4gICAgICAgICAgY3R4Mi50ZXh0QWxpZ24gPSAnbGVmdCc7XHJcbiAgICAgICAgICBjdHgyLnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xyXG4gICAgICAgICAgY3R4Mi5maWxsVGV4dCh1bml0LCB0aWNrWCArIChmb250U2l6ZSAqIDEuMiksIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOi+ueahhlxyXG4gICAgICAgIGlmIChib3JkZXIyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIC8vIOe7mOWItuWbm+S4quinku+8iOijgeWJquaIkDQ15bqm6KeS77yJXHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgbWFyZ2luMiwgbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ3RvcCcsIDEpO1xyXG4gICAgICAgICAgZHJhd0JvcmRlcjIoY3R4MiwgYm9yZGVySW1hZ2UsIGNhbnZhczIud2lkdGggLSBib3JkZXIyLndpZHRoIC0gbWFyZ2luMiwgbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ3JpZ2h0JywgMSk7XHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgY2FudmFzMi53aWR0aCAtIGJvcmRlcjIud2lkdGggLSBtYXJnaW4yLCBjYW52YXMyLmhlaWdodCAtIGJvcmRlcjIud2lkdGggLSBtYXJnaW4yLCBib3JkZXIyLndpZHRoLCAnYm90dG9tJywgMSk7XHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgbWFyZ2luMiwgY2FudmFzMi5oZWlnaHQgLSBib3JkZXIyLndpZHRoIC0gbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ2xlZnQnLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFBsb3R0aW5nU2NhbGUoKSB7XHJcbiAgICAgICAgICBpZiAoIV90aGlzLnJlY3RhbmdsZSkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB3ZXN0TG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKF90aGlzLnJlY3RhbmdsZS53ZXN0KVxyXG4gICAgICAgICAgbGV0IGVhc3RMbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLmVhc3QpXHJcbiAgICAgICAgICBsZXQgbm9ydGhMYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLm5vcnRoKVxyXG4gICAgICAgICAgbGV0IHNvdXRoTGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKF90aGlzLnJlY3RhbmdsZS5zb3V0aClcclxuXHJcbiAgICAgICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3dlc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgICAgICBsZXQgdG8gPSB0dXJmLnBvaW50KFtlYXN0TG5nLCBub3J0aExhdF0pO1xyXG4gICAgICAgICAgbGV0IGRpc3RhbmNlID0gdHVyZi5kaXN0YW5jZShmcm9tLCB0bywgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG5cclxuICAgICAgICAgIHVuaXREaXN0YW5jZTIgPSBkaXN0YW5jZSAqIDEwMDAgLyBpbWdFbG0yLndpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g57uY5Yi26L655qGGXHJcbiAgICAgICAgZnVuY3Rpb24gZHJhd0JvcmRlcjIoY3R4MiwgaW1nLCB4LCB5LCBzaXplLCBwb3NpdGlvbiwgaXNTdGFydCA9IDEpIHtcclxuICAgICAgICAgIGN0eDIuc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Mi50cmFuc2xhdGUoeCArIHNpemUgLyAyLCB5ICsgc2l6ZSAvIDIpO1xyXG5cclxuICAgICAgICAgIC8vIOagueaNruS9jee9ruiuvue9ruaXi+i9rOinkuW6plxyXG4gICAgICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgY3R4Mi5yb3RhdGUoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgICAgICAgIGN0eDIucm90YXRlKE1hdGguUEkpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgICAgICBjdHgyLnJvdGF0ZSgzICogTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8g5Yib5bu6NDXluqbop5LnmoToo4Hliarot6/lvoRcclxuICAgICAgICAgIGN0eDIuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLm1vdmVUbygoLXNpemUgKiBpc1N0YXJ0KSAvIDIsIC1zaXplIC8gMik7XHJcbiAgICAgICAgICBpZiAocG9zaXRpb24gPT09ICd0b3AnIHx8IHBvc2l0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLndpZHRoIC0gKG1hcmdpbjIgKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgICAgIGN0eDIubGluZVRvKGNhbnZhczIud2lkdGggLSAobWFyZ2luMiArIHNpemUpICogMiArIChzaXplIC8gMiksIHNpemUgLyAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLmhlaWdodCAtIChtYXJnaW4yICogMikgLSAoc2l6ZSAvIDIpLCAtc2l6ZSAvIDIpO1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLmhlaWdodCAtIChtYXJnaW4yICsgc2l6ZSkgKiAyICsgKHNpemUgLyAyKSwgc2l6ZSAvIDIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4Mi5saW5lVG8oKHNpemUgKiBpc1N0YXJ0KSAvIDIsIHNpemUgLyAyKTtcclxuICAgICAgICAgIGN0eDIuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLmNsaXAoKTtcclxuXHJcbiAgICAgICAgICBsZXQgaW1nV2lkdGggPSBpbWcud2lkdGggLyBpbWcuaGVpZ2h0ICogc2l6ZVxyXG5cclxuICAgICAgICAgIC8vIOe7mOWItuWbvueJh1xyXG4gICAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1nLCAtc2l6ZSAvIDIsIC1zaXplIC8gMiwgaW1nV2lkdGgsIHNpemUpO1xyXG5cclxuICAgICAgICAgIGxldCBjb3VudDtcclxuICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgIGNvdW50ID0gTWF0aC5jZWlsKChjYW52YXMyLndpZHRoIC0gKG1hcmdpbjIgKiAyKSAtIChib3JkZXIyLndpZHRoICogMikpIC8gYm9yZGVyMi53aWR0aCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3VudCA9IE1hdGguY2VpbCgoY2FudmFzMi5oZWlnaHQgLSAobWFyZ2luMiAqIDIpIC0gKGJvcmRlcjIud2lkdGggKiAyKSkgLyBib3JkZXIyLndpZHRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvdW50KytcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGltZywgLXNpemUgLyAyICsgaW1nV2lkdGggKiBpLCAtc2l6ZSAvIDIsIGltZ1dpZHRoLCBzaXplKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjdHgyLnJlc3RvcmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxldCBkYXRhVVJMID0gY2FudmFzMi50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAwLjk1KVxyXG4gICAgICAgIC8vIGxldCBkb3dubG9hZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgLy8gZG93bmxvYWRFbGVtZW50LmhyZWYgPSBkYXRhVVJMO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5kb3dubG9hZCA9IGDpq5jmuIXlh7rlm74tJHtnZXREYXRlVGltZVN0cmluZygpfS5qcGdgO1xyXG4gICAgICAgIC8vIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyBkb3dubG9hZEVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAvLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvd25sb2FkRWxlbWVudCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGFVUkwnLCBkYXRhVVJMKVxyXG4gICAgICAgIC8vIFVSTC5yZXZva2VPYmplY3RVUkwoZGF0YVVSTCk7XHJcblxyXG4gICAgICAgIC8vIOWcqOmHiuaUvui1hOa6kOWQjuaJp+ihjOWbnuiwg1xyXG5cclxuICAgICAgICBjYW52YXMyLnRvQmxvYihmdW5jdGlvbiAoYmxvYikge1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgIGxldCBkb3dubG9hZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICBkb3dubG9hZEVsZW1lbnQuaHJlZiA9IHVybDtcclxuICAgICAgICAgIGRvd25sb2FkRWxlbWVudC5kb3dubG9hZCA9IGDpq5jmuIXlh7rlm74tJHtnZXREYXRlVGltZVN0cmluZygpfS5wbmdgO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgICAgZG93bmxvYWRFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvd25sb2FkRWxlbWVudCk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGV4cG9ydEJ0bi5pbm5lckhUTUwgPSAn5omT5Y2wJztcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSwgJ2ltYWdlL3BuZycsIDAuOTUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGNhbnZhczIudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XHJcbiAgICAgICAgLy8gICBsZXQgaW1nQmxvYkRhdGEgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIC8vICAgbGV0IGRvd25sb2FkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAvLyAgIGRvd25sb2FkRWxlbWVudC5ocmVmID0gaW1nQmxvYkRhdGE7XHJcbiAgICAgICAgLy8gICBkb3dubG9hZEVsZW1lbnQuZG93bmxvYWQgPSBg6auY5riF5Ye65Zu+LSR7Z2V0RGF0ZVRpbWVTdHJpbmcoKX0ucG5nYDtcclxuICAgICAgICAvLyAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyAgIGRvd25sb2FkRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIC8vICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgIC8vICAgVVJMLnJldm9rZU9iamVjdFVSTChpbWdCbG9iRGF0YSk7XHJcblxyXG4gICAgICAgIC8vICAgLy8g5Zyo6YeK5pS+6LWE5rqQ5ZCO5omn6KGM5Zue6LCDXHJcbiAgICAgICAgLy8gICBleHBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgICAvLyAgIGV4cG9ydEJ0bi5pbm5lckhUTUwgPSAn5omT5Y2wJztcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTWFwUHJpbnRcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdxQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBQ0E7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQS9SQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFuTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakNBO0FBQUE7QUFBQTtBQUNBO0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQW5EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXhFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9mQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUNBO0FBaURBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBbUJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUErSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbU9BO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnU0E7QUFqNkNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW82Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MapPrint/index.js\n"); - -/***/ }), - -/***/ "./src/Global/MapX/index.js": -/*!**********************************!*\ - !*** ./src/Global/MapX/index.js ***! - \**********************************/ -/*! exports provided: open, close, destroy */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"open\", function() { return open; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"close\", function() { return close; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"destroy\", function() { return destroy; });\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n\n\nvar tools;\nvar Xevent;\nvar mapx = {};\nvar curRectangle = undefined;\nvar centerResult = undefined;\nvar mouseStart = false;\nvar syncObject = {};\nvar init = function init(sdk) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var div = document.createElement('div');\n div.id = 'mapxDiv';\n div.style.width = '222px';\n div.style.height = '112px';\n div.style.position = 'absolute';\n div.style.right = '10px';\n div.style.bottom = '82px';\n div.style.zIndex = '1';\n document.getElementById(sdk.div_id).appendChild(div);\n var options = {\n imageryProvider: new Cesium.TileMapServiceImageryProvider({\n url: Cesium.buildModuleUrl(\"Assets/Textures/NaturalEarthII\")\n }),\n sceneMode: Cesium.SceneMode.SCENE2D,\n // mapMode2D: Cesium.MapMode2D.ROTATE,\n baseLayerPicker: false,\n geocoder: false,\n animation: false,\n fullscreenButton: false,\n navigationHelpButton: false,\n // vrButton?: boolean;\n homeButton: false,\n infoBox: false,\n sceneModePicker: false,\n selectionIndicator: false,\n timeline: false,\n shouldAnimate: true\n };\n mapx.viewer = new Cesium.Viewer('mapxDiv', options);\n mapx.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(0, 0, 40000000)\n });\n mapx.viewer.trackedEntity = undefined;\n mapx.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);\n mapx.viewer.scene.screenSpaceCameraController.enableRotate = false;\n mapx.viewer.scene.screenSpaceCameraController.enableTranslate = false;\n mapx.viewer.scene.screenSpaceCameraController.enableZoom = false;\n mapx.viewer.scene.screenSpaceCameraController.enableTilt = false;\n mapx.viewer.scene.screenSpaceCameraController.enableLook = false;\n\n // 创建范围框\n var entity = mapx.viewer.entities.add({\n name: 'mapX rectangle',\n position: new Cesium.CallbackProperty(function () {\n return centerResult || Cesium.Cartesian3.fromDegrees(0, 0, 0);\n }, false),\n rectangle: {\n coordinates: new Cesium.CallbackProperty(function () {\n return curRectangle || Cesium.Rectangle.fromDegrees(0.0, 0.0, 0.01, 0.01);\n }, false),\n material: Cesium.Color.RED.withAlpha(0.01),\n outline: true,\n outlineColor: Cesium.Color.RED,\n outlineWidth: 2,\n height: 1\n },\n billboard: {\n image: tools.getSourceRootPath() + '/img/cross.svg',\n scale: 1,\n width: 16,\n height: 16\n }\n });\n syncObject = {\n sdk: sdk,\n entity: entity\n };\n mapx.viewer.camera.percentageChanged = 0.001;\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject); // 鹰眼与主图同步\n var pick;\n Xevent = new _Event__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n viewer: mapx.viewer\n });\n Xevent.mouse_left_down(function (movement, cartesian) {\n mouseStart = true;\n pick = mapx.viewer.scene.pick(movement.position);\n });\n Xevent.mouse_left_up(function (movement, cartesian) {\n mouseStart = false;\n });\n Xevent.mouse_move(function (movement, cartesian) {\n if (pick && mouseStart) {\n var sdkCH = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n var pos84 = tools.cartesian3Towgs84(cartesian, mapx.viewer);\n // sdk.viewer.camera.position = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, sdkCH)\n sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, sdkCH),\n duration: 0\n });\n }\n });\n};\nfunction syncViewer() {\n if (!this.sdk || !this.sdk.viewer) {\n return;\n }\n // 视角中心点(伪)\n centerResult = this.sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(this.sdk.viewer.canvas.clientWidth / 2, this.sdk.viewer.canvas.clientHeight / (2 - (90 + this.sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = this.sdk.viewer.camera.position;\n }\n var height = tools.cartesian3Towgs84(this.sdk.viewer.camera.position, this.sdk.viewer).alt;\n var centerResult84 = tools.cartesian3Towgs84(centerResult, this.sdk.viewer);\n var stepX = 120000;\n var stepY = 280000;\n if (height > 9000000) {\n height = 9000000;\n }\n if (height < 400000) {\n this.entity.billboard.show = true;\n this.entity.rectangle.show = false;\n } else {\n this.entity.billboard.show = false;\n this.entity.rectangle.show = true;\n }\n curRectangle = new Cesium.Rectangle(Cesium.Math.toRadians(centerResult84.lng - height / stepX), Cesium.Math.toRadians(centerResult84.lat - height / stepY), Cesium.Math.toRadians(centerResult84.lng + height / stepX), Cesium.Math.toRadians(centerResult84.lat + height / stepY));\n}\n;\nfunction open(sdk) {\n if (!mapx.viewer) {\n init(sdk);\n } else {\n mapx.viewer.container.style.display = 'block';\n var entity;\n var entities = mapx.viewer.entities.values;\n for (var i = 0; i < entities.length; i++) {\n if (entities[i].name === 'mapX rectangle') {\n entity = entities[i];\n break;\n }\n }\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject); // 鹰眼与主图同步\n }\n}\nfunction close(sdk) {\n if (!mapx.viewer) {\n return;\n }\n mapx.viewer.container.style.display = 'none';\n var entity;\n var entities = mapx.viewer.entities.values;\n for (var i = 0; i < entities.length; i++) {\n if (entities[i].name === 'mapX rectangle') {\n entity = entities[i];\n break;\n }\n }\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n}\nfunction destroy(sdk) {\n if (mapx.viewer) {\n if (mapx.viewer.entities) {\n mapx.viewer.entities.removeAll();\n }\n mapx.viewer.destroy && mapx.viewer.destroy();\n }\n mapx = {};\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFgvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL01hcFgvaW5kZXguanM/ZTk0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9FdmVudCdcclxuXHJcbmxldCB0b29sc1xyXG5sZXQgWGV2ZW50XHJcbmxldCBtYXB4ID0ge31cclxubGV0IGN1clJlY3RhbmdsZSA9IHVuZGVmaW5lZDtcclxubGV0IGNlbnRlclJlc3VsdCA9IHVuZGVmaW5lZFxyXG5sZXQgbW91c2VTdGFydCA9IGZhbHNlXHJcbmxldCBzeW5jT2JqZWN0ID0ge31cclxuY29uc3QgaW5pdCA9IChzZGspID0+IHtcclxuICB0b29scyA9IG5ldyBUb29scygpXHJcbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIGRpdi5pZCA9ICdtYXB4RGl2J1xyXG4gIGRpdi5zdHlsZS53aWR0aCA9ICcyMjJweCc7XHJcbiAgZGl2LnN0eWxlLmhlaWdodCA9ICcxMTJweCc7XHJcbiAgZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICBkaXYuc3R5bGUucmlnaHQgPSAnMTBweCc7XHJcbiAgZGl2LnN0eWxlLmJvdHRvbSA9ICc4MnB4JztcclxuICBkaXYuc3R5bGUuekluZGV4ID0gJzEnO1xyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNkay5kaXZfaWQpLmFwcGVuZENoaWxkKGRpdilcclxuICBsZXQgb3B0aW9ucyA9IHtcclxuICAgIGltYWdlcnlQcm92aWRlcjogbmV3IENlc2l1bS5UaWxlTWFwU2VydmljZUltYWdlcnlQcm92aWRlcih7XHJcbiAgICAgIHVybDogQ2VzaXVtLmJ1aWxkTW9kdWxlVXJsKFwiQXNzZXRzL1RleHR1cmVzL05hdHVyYWxFYXJ0aElJXCIpLFxyXG4gICAgfSksXHJcbiAgICBzY2VuZU1vZGU6IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUyRCxcclxuICAgIC8vIG1hcE1vZGUyRDogQ2VzaXVtLk1hcE1vZGUyRC5ST1RBVEUsXHJcbiAgICBiYXNlTGF5ZXJQaWNrZXI6IGZhbHNlLFxyXG4gICAgZ2VvY29kZXI6IGZhbHNlLFxyXG4gICAgYW5pbWF0aW9uOiBmYWxzZSxcclxuICAgIGZ1bGxzY3JlZW5CdXR0b246IGZhbHNlLFxyXG4gICAgbmF2aWdhdGlvbkhlbHBCdXR0b246IGZhbHNlLFxyXG4gICAgLy8gdnJCdXR0b24/OiBib29sZWFuO1xyXG4gICAgaG9tZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBpbmZvQm94OiBmYWxzZSxcclxuICAgIHNjZW5lTW9kZVBpY2tlcjogZmFsc2UsXHJcbiAgICBzZWxlY3Rpb25JbmRpY2F0b3I6IGZhbHNlLFxyXG4gICAgdGltZWxpbmU6IGZhbHNlLFxyXG4gICAgc2hvdWxkQW5pbWF0ZTogdHJ1ZVxyXG4gIH1cclxuICBtYXB4LnZpZXdlciA9IG5ldyBDZXNpdW0uVmlld2VyKCdtYXB4RGl2Jywgb3B0aW9ucyk7XHJcbiAgbWFweC52aWV3ZXIuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKDAsIDAsIDQwMDAwMDAwKSxcclxuICB9KVxyXG4gIG1hcHgudmlld2VyLnRyYWNrZWRFbnRpdHkgPSB1bmRlZmluZWQ7XHJcbiAgbWFweC52aWV3ZXIuY2VzaXVtV2lkZ2V0LnNjcmVlblNwYWNlRXZlbnRIYW5kbGVyLnJlbW92ZUlucHV0QWN0aW9uKFxyXG4gICAgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLkxFRlRfRE9VQkxFX0NMSUNLXHJcbiAgKTtcclxuICBtYXB4LnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlUm90YXRlID0gZmFsc2U7XHJcbiAgbWFweC52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGZhbHNlO1xyXG4gIG1hcHgudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVab29tID0gZmFsc2U7XHJcbiAgbWFweC52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBmYWxzZTtcclxuICBtYXB4LnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlTG9vayA9IGZhbHNlO1xyXG5cclxuICAvLyDliJvlu7rojIPlm7TmoYZcclxuICBsZXQgZW50aXR5ID0gbWFweC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgIG5hbWU6ICdtYXBYIHJlY3RhbmdsZScsXHJcbiAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBjZW50ZXJSZXN1bHQgfHwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoMCwgMCwgMClcclxuICAgICAgKTtcclxuICAgIH0sIGZhbHNlKSxcclxuICAgIHJlY3RhbmdsZToge1xyXG4gICAgICBjb29yZGluYXRlczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgY3VyUmVjdGFuZ2xlIHx8IENlc2l1bS5SZWN0YW5nbGUuZnJvbURlZ3JlZXMoMC4wLCAwLjAsIDAuMDEsIDAuMDEpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLlJFRC53aXRoQWxwaGEoMC4wMSksXHJcbiAgICAgIG91dGxpbmU6IHRydWUsXHJcbiAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgb3V0bGluZVdpZHRoOiAyLFxyXG4gICAgICBoZWlnaHQ6IDEsXHJcbiAgICB9LFxyXG4gICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgIGltYWdlOiB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvY3Jvc3Muc3ZnJyxcclxuICAgICAgc2NhbGU6IDEsXHJcbiAgICAgIHdpZHRoOiAxNixcclxuICAgICAgaGVpZ2h0OiAxNlxyXG4gICAgfSxcclxuICB9KTtcclxuICBzeW5jT2JqZWN0ID0geyBzZGssIGVudGl0eSB9XHJcbiAgbWFweC52aWV3ZXIuY2FtZXJhLnBlcmNlbnRhZ2VDaGFuZ2VkID0gMC4wMDE7XHJcbiAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KTsgLy8g6bmw55y85LiO5Li75Zu+5ZCM5q2lXHJcbiAgbGV0IHBpY2tcclxuICBYZXZlbnQgPSBuZXcgRXZlbnQoeyB2aWV3ZXI6IG1hcHgudmlld2VyIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX2xlZnRfZG93bigobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgbW91c2VTdGFydCA9IHRydWVcclxuICAgIHBpY2sgPSBtYXB4LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX2xlZnRfdXAoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgIG1vdXNlU3RhcnQgPSBmYWxzZVxyXG4gIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgIGlmIChwaWNrICYmIG1vdXNlU3RhcnQpIHtcclxuICAgICAgbGV0IHNka0NIID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sIHNkay52aWV3ZXIpLmFsdFxyXG4gICAgICBsZXQgcG9zODQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIG1hcHgudmlld2VyKVxyXG4gICAgICAvLyBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCBzZGtDSClcclxuICAgICAgc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgc2RrQ0gpLFxyXG4gICAgICAgIGR1cmF0aW9uOiAwXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5mdW5jdGlvbiBzeW5jVmlld2VyKCkge1xyXG4gIGlmKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgLy8g6KeG6KeS5Lit5b+D54K5KOS8qilcclxuICBjZW50ZXJSZXN1bHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGggLyAyLFxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodCAvICgyIC0gKCg5MCArIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2ggLyAoQ2VzaXVtLk1hdGguUEkgLyAxODApKSAvIDExMCkpLFxyXG4gICAgKSxcclxuICApXHJcbiAgaWYgKCFjZW50ZXJSZXN1bHQpIHtcclxuICAgIGNlbnRlclJlc3VsdCA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25cclxuICB9XHJcbiAgbGV0IGhlaWdodCA9IHRvb2xzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2VudGVyUmVzdWx0LCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgbGV0IHN0ZXBYID0gMTIwMDAwXHJcbiAgbGV0IHN0ZXBZID0gMjgwMDAwXHJcbiAgaWYgKGhlaWdodCA+IDkwMDAwMDApIHtcclxuICAgIGhlaWdodCA9IDkwMDAwMDBcclxuICB9XHJcbiAgaWYgKGhlaWdodCA8IDQwMDAwMCkge1xyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSB0cnVlXHJcbiAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IGZhbHNlXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLnNob3cgPSB0cnVlXHJcbiAgfVxyXG4gIGN1clJlY3RhbmdsZSA9IG5ldyBDZXNpdW0uUmVjdGFuZ2xlKENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sbmcgLSAoaGVpZ2h0IC8gc3RlcFgpKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGNlbnRlclJlc3VsdDg0LmxhdCAtIChoZWlnaHQgLyBzdGVwWSkpLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubG5nICsgKGhlaWdodCAvIHN0ZXBYKSksIENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sYXQgKyAoaGVpZ2h0IC8gc3RlcFkpKSlcclxufTtcclxuZnVuY3Rpb24gb3BlbihzZGspIHtcclxuICBpZiAoIW1hcHgudmlld2VyKSB7XHJcbiAgICBpbml0KHNkaylcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBtYXB4LnZpZXdlci5jb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICBsZXQgZW50aXR5XHJcbiAgICBsZXQgZW50aXRpZXMgPSBtYXB4LnZpZXdlci5lbnRpdGllcy52YWx1ZXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGVudGl0aWVzW2ldLm5hbWUgPT09ICdtYXBYIHJlY3RhbmdsZScpIHtcclxuICAgICAgICBlbnRpdHkgPSBlbnRpdGllc1tpXVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdCk7IC8vIOm5sOecvOS4juS4u+WbvuWQjOatpVxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBjbG9zZShzZGspIHtcclxuICBpZiAoIW1hcHgudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbWFweC52aWV3ZXIuY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgbGV0IGVudGl0eVxyXG4gIGxldCBlbnRpdGllcyA9IG1hcHgudmlld2VyLmVudGl0aWVzLnZhbHVlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChlbnRpdGllc1tpXS5uYW1lID09PSAnbWFwWCByZWN0YW5nbGUnKSB7XHJcbiAgICAgIGVudGl0eSA9IGVudGl0aWVzW2ldXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdClcclxufVxyXG5mdW5jdGlvbiBkZXN0cm95KHNkaykge1xyXG4gIGlmIChtYXB4LnZpZXdlcikge1xyXG4gICAgaWYgKG1hcHgudmlld2VyLmVudGl0aWVzKSB7XHJcbiAgICAgIG1hcHgudmlld2VyLmVudGl0aWVzLnJlbW92ZUFsbCgpXHJcbiAgICB9XHJcbiAgICBtYXB4LnZpZXdlci5kZXN0cm95ICYmIG1hcHgudmlld2VyLmRlc3Ryb3koKVxyXG4gIH1cclxuICBtYXB4ID0ge31cclxuICBzZGsudmlld2VyLnNjZW5lLnByZVJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNWaWV3ZXIsIHN5bmNPYmplY3QpXHJcbn1cclxuXHJcbmV4cG9ydCB7IG9wZW4sIGNsb3NlLCBkZXN0cm95IH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/MapX/index.js\n"); - -/***/ }), - -/***/ "./src/Global/MouseCoordinate/index.js": -/*!*********************************************!*\ - !*** ./src/Global/MouseCoordinate/index.js ***! - \*********************************************/ -/*! exports provided: MouseCoordinate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MouseCoordinate\", function() { return MouseCoordinate; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\r\n * 鼠标坐标\r\n */\n\n\n\n\n\nvar event;\nvar event2;\nvar MouseCoordinateElm;\nvar requestAnimationFrameEventId;\nvar tmovement;\nvar targetSdk;\nvar sdkD;\nvar MouseCoordinate = function MouseCoordinate(sdk, status) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n targetSdk = sdk;\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__[\"getSdk\"])().sdkD;\n if (!sdkD) {\n sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__[\"getSdk\"])().sdkD;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_1__[\"default\"](sdk);\n var proj = sdk.proj;\n if (status) {\n var _animateUpdate = function animateUpdate() {\n requestAnimationFrameEventId = requestAnimationFrame(_animateUpdate);\n getPosition();\n };\n if (event) {\n event.destroy();\n }\n if (event2) {\n event2.destroy();\n event2 = undefined;\n }\n event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n tmovement = null;\n var position = {\n x: '',\n y: '',\n z: ''\n };\n var contentElm;\n if (MouseCoordinateElm) {\n contentElm = MouseCoordinateElm;\n } else {\n contentElm = document.createElement('div');\n contentElm.style.position = 'absolute';\n contentElm.style['z-index'] = 777;\n contentElm.style.color = '#ffffff';\n contentElm.style.left = '0px';\n contentElm.style.top = '0px';\n contentElm.style.width = '100%';\n contentElm.style.height = '100%';\n contentElm.style['font-size'] = '12px';\n contentElm.style['pointer-events'] = 'none';\n contentElm.style.background = \"url(\".concat(tools.getSourceRootPath(), \"/img/cross.png) no-repeat 100% 100%\");\n contentElm.style['background-size'] = \"200% 200%\";\n MouseCoordinateElm = contentElm;\n }\n sdk.viewer.container.appendChild(contentElm);\n event.mouse_move(function (movement, cartesian) {\n targetSdk = sdk;\n tmovement = _objectSpread({}, movement.endPosition);\n });\n var posiToCoordinate = function posiToCoordinate(coordinateSystem, position) {\n var type;\n switch (coordinateSystem) {\n case 'EPSG:32601':\n //WGS84 通用横轴墨卡托投影\n //带号 = ⌊(经度 + 180)/6⌋ + 1\n var dh = Math.round((position.lng + 180) / 6 + 1);\n if (position.lat > 0) {\n //北纬\n type = 32600 + dh;\n type = 'EPSG:' + type;\n } else {\n //南纬\n type = 32700 + dh;\n type = 'EPSG:' + type;\n }\n break;\n case 'EPSG:4534':\n //2000 坐标 3 度不带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4534\n\n var dh3y = Math.round(position.lng / 3);\n type = dh3y - 25 + 4534;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4513':\n //2000 坐标 3 度带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4513\n var dh3w = Math.round(position.lng / 3);\n type = dh3w - 25 + 4513;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4502':\n //2000 坐标 6 度不带代号\n var zoneNumber = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (zoneNumber < 13) zoneNumber = 13;\n if (zoneNumber > 23) zoneNumber = 23;\n type = zoneNumber - 13 + 4502;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4491':\n //2000 坐标 6 度带代号\n //N = floor(longitude/6) + 31\n var dh6 = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (dh6 < 13) dh6 = 13;\n if (dh6 > 23) dh6 = 23;\n type = dh6 - 13 + 4491;\n type = 'EPSG:' + type;\n break;\n default:\n break;\n }\n return type;\n };\n var getPosition = function getPosition() {\n if (!targetSdk) {\n return;\n }\n var canvas = sdk.viewer._element.getElementsByTagName('canvas')[0];\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__[\"getSdk\"])().sdkD;\n if (!sdkD) {\n sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__[\"getSdk\"])().sdkD;\n }\n if (!event2 && sdkD) {\n event2 = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdkD);\n event2.mouse_move(function (movement, cartesian) {\n targetSdk = sdkD;\n tmovement = {\n x: movement.endPosition.x,\n y: movement.endPosition.y\n };\n });\n }\n if (!tmovement) {\n return;\n }\n var left = tmovement.x;\n var top = tmovement.y;\n var cartesian;\n if (targetSdk.viewer.scene.mode === 2) {\n left = left + canvas.width;\n cartesian = targetSdk.viewer.camera.pickEllipsoid(tmovement, targetSdk.viewer.scene.globe.ellipsoid);\n } else {\n cartesian = targetSdk.viewer.scene.pickPosition(tmovement);\n if (!cartesian) {\n var ray = targetSdk.viewer.camera.getPickRay(position); //相交的射线\n var pickedObjects = targetSdk.viewer.scene.drillPickFromRay(ray, 10);\n var result = {};\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].position) {\n result = pickedObjects[i];\n break;\n }\n }\n cartesian = result.position;\n if (!cartesian) {\n cartesian = targetSdk.viewer.scene.globe.pick(ray, targetSdk.viewer.scene);\n }\n }\n }\n contentElm.style['background-position-x'] = \"\".concat(-sdk.viewer.container.clientWidth + left + 4, \"px\");\n contentElm.style['background-position-y'] = \"\".concat(-sdk.viewer.container.clientHeight + top - 2, \"px\");\n // this.entity.position = cartesian\n if (cartesian) {\n var degrees = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getCoordinateSystem\"])();\n var positionType = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getDMS\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n position = {\n x: degrees.lng,\n y: degrees.lat,\n z: degrees.alt\n };\n // contentElm.innerHTML = `

经度:${degrees.lng.toFixed(6)}°

维度:${degrees.lat.toFixed(6)}°

海拔:${degrees.alt.toFixed(2)} m

`\n switch (positionType || '度') {\n case '度':\n contentElm.innerHTML = \"

\\u7ECF\\u5EA6\\uFF1A\").concat(degrees.lng.toFixed(8), \"\\xB0

\\u7EF4\\u5EA6\\uFF1A\").concat(degrees.lat.toFixed(8), \"\\xB0

\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m

\");\n break;\n case '度分':\n contentElm.innerHTML = \"

\\u7ECF\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lng, true), \"

\\u7EF4\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lat, true), \"

\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m

\");\n break;\n case '度分秒':\n contentElm.innerHTML = \"

\\u7ECF\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lng, false), \"

\\u7EF4\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lat, false), \"

\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m

\");\n break;\n default:\n break;\n }\n } else {\n // let result = tools.convert([{ x: degrees.lng, y: degrees.lat, z: degrees.alt }], 'EPSG:4326', coordinateSystem)\n var _result = tools.convert([{\n x: degrees.lng,\n y: degrees.lat,\n z: degrees.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, degrees));\n position = _result.points[0];\n contentElm.innerHTML = \"

x\\uFF1A\").concat(position.x.toFixed(2), \"

y\\uFF1A\").concat(position.y.toFixed(2), \"

z\\uFF1A\").concat(Number(position.z.toFixed(2)), \"

\");\n }\n } else {\n var _coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getCoordinateSystem\"])();\n if (_coordinateSystem === 'EPSG:4326' || _coordinateSystem === 'EPSG:4490') {\n contentElm.innerHTML = \"

\\u7ECF\\u5EA6\\uFF1A-

\\u7EF4\\u5EA6\\uFF1A-

\\u6D77\\u62D4\\uFF1A-

\");\n } else {\n contentElm.innerHTML = \"

x\\uFF1A-

y\\uFF1A-

z\\uFF1A-

\");\n }\n }\n };\n _animateUpdate();\n } else {\n if (event) {\n event.destroy();\n }\n if (event2) {\n event2.destroy();\n event2 = undefined;\n }\n if (MouseCoordinateElm) {\n sdk.viewer.container.removeChild(MouseCoordinateElm);\n MouseCoordinateElm = undefined;\n }\n if (requestAnimationFrameEventId) {\n cancelAnimationFrame(requestAnimationFrameEventId);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01vdXNlQ29vcmRpbmF0ZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvTW91c2VDb29yZGluYXRlL2luZGV4LmpzP2RhZjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOm8oOagh+WdkOagh1xyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBnZXRDb29yZGluYXRlU3lzdGVtLCBnZXRETVMgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL2dsb2JhbFwiO1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IHsgZ2V0U2RrIGFzIGdldDJEU2RrIH0gZnJvbSAnLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBnZXRTZGsgYXMgZ2V0U3BsaXRTY3JlZW5TZGsgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuXCI7XHJcblxyXG5sZXQgZXZlbnRcclxubGV0IGV2ZW50MlxyXG5sZXQgTW91c2VDb29yZGluYXRlRWxtXHJcbmxldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudElkXHJcbmxldCB0bW92ZW1lbnRcclxubGV0IHRhcmdldFNka1xyXG5sZXQgc2RrRFxyXG5cclxuY29uc3QgTW91c2VDb29yZGluYXRlID0gKHNkaywgc3RhdHVzKSA9PiB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICB0YXJnZXRTZGsgPSBzZGtcclxuICBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgaWYgKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U3BsaXRTY3JlZW5TZGsoKS5zZGtEXHJcbiAgfVxyXG5cclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoc2RrKVxyXG4gIGxldCBwcm9qID0gc2RrLnByb2pcclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQyKSB7XHJcbiAgICAgIGV2ZW50Mi5kZXN0cm95KClcclxuICAgICAgZXZlbnQyID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICBldmVudCA9IG5ldyBNb3VzZUV2ZW50KHNkaylcclxuICAgIHRtb3ZlbWVudCA9IG51bGxcclxuICAgIGxldCBwb3NpdGlvbiA9IHtcclxuICAgICAgeDogJycsXHJcbiAgICAgIHk6ICcnLFxyXG4gICAgICB6OiAnJ1xyXG4gICAgfVxyXG4gICAgbGV0IGNvbnRlbnRFbG1cclxuICAgIGlmIChNb3VzZUNvb3JkaW5hdGVFbG0pIHtcclxuICAgICAgY29udGVudEVsbSA9IE1vdXNlQ29vcmRpbmF0ZUVsbVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGVbJ3otaW5kZXgnXSA9IDc3NztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5jb2xvciA9ICcjZmZmZmZmJztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5sZWZ0ID0gJzBweCc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUudG9wID0gJzBweCc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydmb250LXNpemUnXSA9ICcxMnB4JztcclxuICAgICAgY29udGVudEVsbS5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9ICdub25lJztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5iYWNrZ3JvdW5kID0gYHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2ltZy9jcm9zcy5wbmcpIG5vLXJlcGVhdCAxMDAlIDEwMCVgO1xyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydiYWNrZ3JvdW5kLXNpemUnXSA9IGAyMDAlIDIwMCVgO1xyXG4gICAgICBNb3VzZUNvb3JkaW5hdGVFbG0gPSBjb250ZW50RWxtXHJcbiAgICB9XHJcbiAgICBzZGsudmlld2VyLmNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgIGV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgdGFyZ2V0U2RrID0gc2RrXHJcbiAgICAgIHRtb3ZlbWVudCA9IHsgLi4ubW92ZW1lbnQuZW5kUG9zaXRpb24gfVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBwb3NpVG9Db29yZGluYXRlID0gKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSA9PiB7XHJcbiAgICAgIGxldCB0eXBlXHJcbiAgICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkge1xyXG4gICAgICAgIGNhc2UgJ0VQU0c6MzI2MDEnOi8vV0dTODQg6YCa55So5qiq6L205aKo5Y2h5omY5oqV5b2xXHJcbiAgICAgICAgICAvL+W4puWPtyA9IOKMiijnu4/luqYgKyAxODApLzbijIsgKyAxXHJcbiAgICAgICAgICB2YXIgZGggPSBNYXRoLnJvdW5kKChwb3NpdGlvbi5sbmcgKyAxODApIC8gNiArIDEpXHJcblxyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IDApIHsvL+WMl+e6rFxyXG4gICAgICAgICAgICB0eXBlID0gMzI2MDAgKyBkaFxyXG4gICAgICAgICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgICAgIH0gZWxzZSB7Ly/ljZfnuqxcclxuICAgICAgICAgICAgdHlwZSA9IDMyNzAwICsgZGhcclxuICAgICAgICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdFUFNHOjQ1MzQnOi8vMjAwMCDlnZDmoIcgMyDluqbkuI3luKbku6Plj7dcclxuICAgICAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAgICAgLy9FUFNHID0gTiAtIDI1ICsgNDUzNFxyXG5cclxuICAgICAgICAgIHZhciBkaDN5ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICAgICAgdHlwZSA9IGRoM3kgLSAyNSArIDQ1MzRcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRVBTRzo0NTEzJzovLzIwMDAg5Z2Q5qCHIDMg5bqm5bim5Luj5Y+3XHJcbiAgICAgICAgICAvL04gPSByb3VuZCjnu4/luqYvMylcclxuICAgICAgICAgIC8vRVBTRyA9IE4gLSAyNSArIDQ1MTNcclxuICAgICAgICAgIHZhciBkaDN3ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICAgICAgdHlwZSA9IGRoM3cgLSAyNSArIDQ1MTNcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRVBTRzo0NTAyJzovLzIwMDAg5Z2Q5qCHIDYg5bqm5LiN5bim5Luj5Y+3XHJcbiAgICAgICAgICBsZXQgem9uZU51bWJlciA9IE1hdGguZmxvb3IocG9zaXRpb24ubG5nIC8gNikgKyAzMVxyXG4gICAgICAgICAgLy8g5Lit5Zu95Yy65Z+fNuW6puW4puW4puWPt+iMg+WbtOS4ujEzLTIzXHJcbiAgICAgICAgICBpZiAoem9uZU51bWJlciA8IDEzKSB6b25lTnVtYmVyID0gMTM7XHJcbiAgICAgICAgICBpZiAoem9uZU51bWJlciA+IDIzKSB6b25lTnVtYmVyID0gMjM7XHJcbiAgICAgICAgICB0eXBlID0gKHpvbmVOdW1iZXIgLSAxMykgKyA0NTAyXHJcbiAgICAgICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0VQU0c6NDQ5MSc6Ly8yMDAwIOWdkOaghyA2IOW6puW4puS7o+WPt1xyXG4gICAgICAgICAgLy9OID0gZmxvb3IobG9uZ2l0dWRlLzYpICsgMzFcclxuICAgICAgICAgIHZhciBkaDYgPSBNYXRoLmZsb29yKHBvc2l0aW9uLmxuZyAvIDYpICsgMzFcclxuICAgICAgICAgIC8vIOS4reWbveWMuuWfnzbluqbluKbluKblj7fojIPlm7TkuLoxMy0yM1xyXG4gICAgICAgICAgaWYgKGRoNiA8IDEzKSBkaDYgPSAxMztcclxuICAgICAgICAgIGlmIChkaDYgPiAyMykgZGg2ID0gMjM7XHJcbiAgICAgICAgICB0eXBlID0gKGRoNiAtIDEzKSArIDQ0OTFcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0eXBlXHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXRQb3NpdGlvbiA9ICgpID0+IHtcclxuICAgICAgaWYgKCF0YXJnZXRTZGspIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgY2FudmFzID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF1cclxuICAgICAgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgICBpZiAoIXNka0QpIHtcclxuICAgICAgICBzZGtEID0gZ2V0U3BsaXRTY3JlZW5TZGsoKS5zZGtEXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFldmVudDIgJiYgc2RrRCkge1xyXG4gICAgICAgIGV2ZW50MiA9IG5ldyBNb3VzZUV2ZW50KHNka0QpXHJcbiAgICAgICAgZXZlbnQyLm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIHRhcmdldFNkayA9IHNka0RcclxuICAgICAgICAgIHRtb3ZlbWVudCA9IHsgeDogbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgeTogbW92ZW1lbnQuZW5kUG9zaXRpb24ueSB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRtb3ZlbWVudCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBsZWZ0ID0gdG1vdmVtZW50Lng7XHJcbiAgICAgIGxldCB0b3AgPSB0bW92ZW1lbnQueTtcclxuICAgICAgbGV0IGNhcnRlc2lhblxyXG4gICAgICBpZiAodGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgICAgbGVmdCA9IGxlZnQgKyBjYW52YXMud2lkdGhcclxuICAgICAgICBjYXJ0ZXNpYW4gPSB0YXJnZXRTZGsudmlld2VyLmNhbWVyYS5waWNrRWxsaXBzb2lkKHRtb3ZlbWVudCwgdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY2FydGVzaWFuID0gdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24odG1vdmVtZW50KVxyXG4gICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICBjb25zdCByYXkgPSB0YXJnZXRTZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvc2l0aW9uKTsgLy/nm7jkuqTnmoTlsITnur9cclxuICAgICAgICAgIGxldCBwaWNrZWRPYmplY3RzID0gdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSwgMTApO1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHt9XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBpY2tlZE9iamVjdHNbaV0ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FydGVzaWFuID0gcmVzdWx0LnBvc2l0aW9uXHJcbiAgICAgICAgICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4gPSB0YXJnZXRTZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0YXJnZXRTZGsudmlld2VyLnNjZW5lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udGVudEVsbS5zdHlsZVsnYmFja2dyb3VuZC1wb3NpdGlvbi14J10gPSBgJHstc2RrLnZpZXdlci5jb250YWluZXIuY2xpZW50V2lkdGggKyBsZWZ0ICsgNH1weGA7XHJcblxyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydiYWNrZ3JvdW5kLXBvc2l0aW9uLXknXSA9IGAkey1zZGsudmlld2VyLmNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyB0b3AgLSAyfXB4YDtcclxuICAgICAgLy8gdGhpcy5lbnRpdHkucG9zaXRpb24gPSBjYXJ0ZXNpYW5cclxuICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBkZWdyZWVzID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgIGxldCBjb29yZGluYXRlU3lzdGVtID0gZ2V0Q29vcmRpbmF0ZVN5c3RlbSgpXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uVHlwZSA9IGdldERNUygpXHJcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgeDogZGVncmVlcy5sbmcsXHJcbiAgICAgICAgICAgIHk6IGRlZ3JlZXMubGF0LFxyXG4gICAgICAgICAgICB6OiBkZWdyZWVzLmFsdFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT0nd2lkdGg6IDE1MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNzc3OyBjb2xvcjogI2ZmMDAwMDsgZm9udC1zaXplOiAxMnB4OyBsZWZ0OiR7bGVmdCArIDIwfXB4OyB0b3A6JHt0b3AgKyAxMH1weDsnPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu4/luqbvvJoke2RlZ3JlZXMubG5nLnRvRml4ZWQoNil9wrA8L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7tOW6pu+8miR7ZGVncmVlcy5sYXQudG9GaXhlZCg2KX3CsDwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+5rW35ouU77yaJHtkZWdyZWVzLmFsdC50b0ZpeGVkKDIpfSBtPC9wPjwvZGl2PmBcclxuICAgICAgICAgIHN3aXRjaCAocG9zaXRpb25UeXBlIHx8ICfluqYnKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6pic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTYwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7ZGVncmVlcy5sbmcudG9GaXhlZCg4KX3CsDwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+57u05bqm77yaJHtkZWdyZWVzLmxhdC50b0ZpeGVkKDgpfcKwPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJoke051bWJlcihkZWdyZWVzLmFsdC50b0ZpeGVkKDIpKX0gbTwvcD48L2Rpdj5gXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6puWIhic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTUwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sbmcsIHRydWUpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+57u05bqm77yaJHtwcm9qLmRlZ3JlZXNUb0RNUyhkZWdyZWVzLmxhdCwgdHJ1ZSl9PC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJoke051bWJlcihkZWdyZWVzLmFsdC50b0ZpeGVkKDIpKX0gbTwvcD48L2Rpdj5gXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6puWIhuenkic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTUwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sbmcsIGZhbHNlKX08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7tOW6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sYXQsIGZhbHNlKX08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPua1t+aLlO+8miR7TnVtYmVyKGRlZ3JlZXMuYWx0LnRvRml4ZWQoMikpfSBtPC9wPjwvZGl2PmBcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvLyBsZXQgcmVzdWx0ID0gdG9vbHMuY29udmVydChbeyB4OiBkZWdyZWVzLmxuZywgeTogZGVncmVlcy5sYXQsIHo6IGRlZ3JlZXMuYWx0IH1dLCAnRVBTRzo0MzI2JywgY29vcmRpbmF0ZVN5c3RlbSlcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0b29scy5jb252ZXJ0KFt7IHg6IGRlZ3JlZXMubG5nLCB5OiBkZWdyZWVzLmxhdCwgejogZGVncmVlcy5hbHQgfV0sICdFUFNHOjQzMjYnLCBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIGRlZ3JlZXMpKVxyXG4gICAgICAgICAgcG9zaXRpb24gPSByZXN1bHQucG9pbnRzWzBdXHJcbiAgICAgICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPSdtb3VzZVBvc2lXb3Jkcycgc3R5bGU9J3dpZHRoOiAxNTBweDtwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDc3NzsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTJweDsgbGVmdDoke2xlZnQgKyAyMH1weDsgdG9wOiR7dG9wICsgMTB9cHg7Jz48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eO+8miR7cG9zaXRpb24ueC50b0ZpeGVkKDIpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+ee+8miR7cG9zaXRpb24ueS50b0ZpeGVkKDIpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eu+8miR7TnVtYmVyKHBvc2l0aW9uLnoudG9GaXhlZCgyKSl9PC9wPjwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVTeXN0ZW0gPSBnZXRDb29yZGluYXRlU3lzdGVtKClcclxuICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9J21vdXNlUG9zaVdvcmRzJyBzdHlsZT0nd2lkdGg6IDE2MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNzc3OyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxMnB4OyBsZWZ0OiR7bGVmdCArIDIwfXB4OyB0b3A6JHt0b3AgKyAxMH1weDsnPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu4/luqbvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu7TluqbvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJotPC9wPjwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPSdtb3VzZVBvc2lXb3Jkcycgc3R5bGU9J3dpZHRoOiAxNTBweDtwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDc3NzsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTJweDsgbGVmdDoke2xlZnQgKyAyMH1weDsgdG9wOiR7dG9wICsgMTB9cHg7Jz48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eO+8mi08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPnnvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz5677yaLTwvcD48L2Rpdj5gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYW5pbWF0ZVVwZGF0ZSgpXHJcbiAgICBmdW5jdGlvbiBhbmltYXRlVXBkYXRlKCkge1xyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudElkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxyXG4gICAgICAgIGFuaW1hdGVVcGRhdGVcclxuICAgICAgKVxyXG4gICAgICBnZXRQb3NpdGlvbigpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LmRlc3Ryb3koKVxyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50Mikge1xyXG4gICAgICBldmVudDIuZGVzdHJveSgpXHJcbiAgICAgIGV2ZW50MiA9IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICAgaWYgKE1vdXNlQ29vcmRpbmF0ZUVsbSkge1xyXG4gICAgICBzZGsudmlld2VyLmNvbnRhaW5lci5yZW1vdmVDaGlsZChNb3VzZUNvb3JkaW5hdGVFbG0pXHJcbiAgICAgIE1vdXNlQ29vcmRpbmF0ZUVsbSA9IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICAgaWYgKHJlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQpIHtcclxuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IE1vdXNlQ29vcmRpbmF0ZSB9XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUEwTEE7QUFHQTtBQUNBO0FBN0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/MouseCoordinate/index.js\n"); - -/***/ }), - -/***/ "./src/Global/MultiViewportMode/ClickCallback/index.js": -/*!*************************************************************!*\ - !*** ./src/Global/MultiViewportMode/ClickCallback/index.js ***! - \*************************************************************/ -/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj.that.picking && _obj.that.geojson) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2.that.picking) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3.that.picking) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4.that.picking) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6.that.picking) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7.that.picking) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj.that.picking && obj.that.geojson) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8.that.picking) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9.that.picking) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/NzMyYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCkge1xyXG4gICAgICAgICAgICAgIC8vIOaYr+WQpuS4uuWkmui+ueW9olxyXG4gICAgICAgICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnUG9seWdvbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIOaYr+WQpuWPr+eCueWHu3lcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDogZrpm4blnLBcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnQXNzZW1ibGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUFzc2VtYmxlKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbaV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpICsgMV1cclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWNleeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDlj4znrq3lpLRcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnUGluY2VyQXJyb3dPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlUGluY2VyQXJyb3cob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgcG9zaXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODQgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbbV0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0XzAgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NF8wLmxuZywgcG9zODRfMC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWchlxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdDaXJjbGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIgJiYgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VudGVyID0gW29iai50aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubGF0XTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaXVzID0gb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMgLyAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBzdGVwczogMzYwLCB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpcmNsZSA9IHR1cmYuY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5omH5b2iXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ1NlY3Rvck9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAmJiBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUgJiYgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jYWxTZWN0b3Iob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIsIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzLCBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUsIG9iai50aGF0Lm9wdGlvbnMuZW5kQW5nbGUsIHVuZGVmaW5lZCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgIGNvbnN0IHBpY2sgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgICAgICAgICBpZiAocGljaykge1xyXG4gICAgICAgICAgICBpZiAocGljay5pZCkge1xyXG4gICAgICAgICAgICAgIGxldCBlbnRpdHlJZFxyXG4gICAgICAgICAgICAgIC8vIOefoumHj1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucGFyZW50SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkID09PSBwaWNrLmlkLl9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwaWNrLmlkLmlkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBwaWNrLmlkLmlkLnNwbGl0KCctJylcclxuICAgICAgICAgICAgICAgIGFycmF5LnNwbGljZShhcnJheS5sZW5ndGggLSAxLCAxKVxyXG4gICAgICAgICAgICAgICAgZW50aXR5SWQgPSBhcnJheS5qb2luKCctJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnByb3BlcnRpZXMgJiYgcGljay5pZC5wcm9wZXJ0aWVzLmlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLmlkKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eUlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhlbnRpdHlJZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHBpY2sucHJpbWl0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBpY2suaWQgPT0gJ3N0cmluZycgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZClcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuZ2VvanNvbikge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/MultiViewportMode/ClickCallback/index.js\n"); - -/***/ }), - -/***/ "./src/Global/MultiViewportMode/index.js": -/*!***********************************************!*\ - !*** ./src/Global/MultiViewportMode/index.js ***! - \***********************************************/ -/*! exports provided: on, off, syncData, syncEntities, syncDataSources, syncPrimitives, get2DView, get3DView, setActiveViewer, getSdk */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"off\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncData\", function() { return syncData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncEntities\", function() { return syncEntities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncDataSources\", function() { return syncDataSources; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncPrimitives\", function() { return syncPrimitives; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get2DView\", function() { return get2DView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get3DView\", function() { return get3DView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSdk\", function() { return getSdk; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _SheetIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SheetIndex */ \"./src/Global/SheetIndex/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ClickCallback */ \"./src/Global/MultiViewportMode/ClickCallback/index.js\");\n/* harmony import */ var _efflect__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../efflect */ \"./src/Global/efflect/index.js\");\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * 多视口模式 \r\n * */\n\n\n\n\n\n\n\n\n\nvar sdk2D = null;\nvar sdk3D = null;\nvar activeViewer;\nvar controlViewer;\nvar syncObject = {};\nvar handlers = [];\nfunction init(_x) {\n return _init.apply(this, arguments);\n}\nfunction _init() {\n _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(sdk) {\n var tools, sdk2, imageryLayers, i, entity, stages, _i2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n sdk3D = sdk;\n activeViewer = 0;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n _context.next = 5;\n return new YJ.YJEarth(sdk.div_id);\n case 5:\n sdk2 = _context.sent;\n sdk2.viewer._element.className = 'cesium-viewer 2d';\n Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_8__[\"SheetIndexStatusSwitch\"])(sdk2, Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_8__[\"getStatus\"])());\n // setTimeout(() => {\n // let switchCluster = new YJ.Global.switchCluster(sdk2, true)\n // }, 500);\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"CesiumContainer\"])(sdk2, {\n compass: false,\n // 罗盘\n // legend: false, // 比例尺\n info: false,\n // 信息栏\n frame: false // 刷新率\n });\n sdk2.viewer.scene.mode = Cesium.SceneMode.SCENE2D;\n _context.next = 12;\n return sdk2;\n case 12:\n sdk2D = _context.sent;\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getLeftClickState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openLeftClick\"])(sdk2D);\n }\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getRightClickState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openRightClick\"])(sdk2D);\n }\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getMoveState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openMove\"])(sdk2D);\n }\n window.sdk2D = sdk2D;\n solveBug();\n syncObject = {\n sdks: [sdk, sdk2],\n tools: tools\n };\n _context.next = 21;\n return eventBind(sdk, 0, syncObject);\n case 21:\n _context.next = 23;\n return eventBind(sdk2, 1, syncObject);\n case 23:\n _context.next = 25;\n return syncData(sdk);\n case 25:\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject);\n sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n imageryLayers = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sdk.viewer.imageryLayers._layers);\n imageryLayers.sort(function (a, b) {\n return a._layerIndex - b._layerIndex;\n });\n sdk2D.viewer.imageryLayers.removeAll();\n for (i = 0; i < imageryLayers.length; i++) {\n entity = sdk2D.viewer.imageryLayers.addImageryProvider(imageryLayers[i].imageryProvider, imageryLayers[i]._layerIndex);\n if (imageryLayers[i]._id) {\n entity._id = imageryLayers[i]._id;\n }\n entity.show = imageryLayers[i].show;\n entity.alpha = imageryLayers[i].alpha;\n if (imageryLayers[i]._objectState) {\n if (imageryLayers[i]._showView == 3) {\n entity.show = false;\n }\n }\n }\n // sdk.viewer.entities.collectionChanged.addEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.addEventListener(syncDataSources)\n\n if (Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"getFlwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"FlwStatusSwitch\"])(sdk2, true);\n }\n if (Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"getJwwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"JwwStatusSwitch\"])(sdk2, true);\n }\n // 雨雪雾夜视星空光照\n stages = sdk.viewer.scene.postProcessStages._stages;\n _i2 = 0;\n case 38:\n if (!(_i2 < stages.length)) {\n _context.next = 53;\n break;\n }\n _context.t0 = stages[_i2].name;\n _context.next = _context.t0 === 'rain' ? 42 : _context.t0 === 'snow' ? 44 : _context.t0 === 'fog' ? 46 : _context.t0 === 'czm_night_vision' ? 48 : 50;\n break;\n case 42:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"rain\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 44:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"snow\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 46:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"fog\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 48:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"nightVision\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 50:\n _i2++;\n _context.next = 38;\n break;\n case 53:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"skyStarry\"])(sdk2, !sdk.viewer.scene.skyAtmosphere.show);\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"illumination\"])(sdk2, sdk.viewer.shadows);\n sdk.entityMap.forEach(function (item, key) {\n if (item.showView == 2) {\n item.showView = 2;\n }\n });\n case 56:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _init.apply(this, arguments);\n}\nfunction on(_x2) {\n return _on.apply(this, arguments);\n}\nfunction _on() {\n _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2(sdk) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (sdk2D) {} else {\n init(sdk);\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_7__[\"off\"])();\n }\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _on.apply(this, arguments);\n}\nfunction off(sdk) {\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n sdk.viewer.imageryLayers.layerAdded.removeEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.removeEventListener(syncImageryLayerMoved);\n sdk.viewer.imageryLayers.layerRemoved.removeEventListener(syncImageryLayerRemoved);\n sdk.viewer.imageryLayers.layerShownOrHidden.removeEventListener(syncImageryLayerShownOrHidden);\n // sdk.viewer.entities.collectionChanged.removeEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.removeEventListener(syncDataSources)\n\n //primitiveAdded=undefined基元同步设置在add位置\n // sdk.viewer.scene.primitives.primitiveAdded.removeEventListener(syncPrimitivesAdded)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].destroy();\n }\n if (sdk2D) {\n sdk2D.destroy();\n handlers = [];\n sdk2D = null;\n sdk3D = null;\n activeViewer = null;\n syncObject = {};\n }\n sdk.entityMap.forEach(function (item, key) {\n if (item.showView) {\n item.show = item.show;\n }\n });\n}\nfunction syncData2(_x3, _x4, _x5) {\n return _syncData.apply(this, arguments);\n}\nfunction _syncData() {\n _syncData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee3(sdk, id, entityId) {\n var entityMap, that, that2, options, callback, newObject, state, _that, _iterator, _step, _step$value, key, obj, _that2, _iterator2, _step2, _loop;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee3$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(sdk && sdk.viewer && sdk.viewer._element && sdk.viewer._element.className === 'cesium-viewer 2d')) {\n _context4.next = 2;\n break;\n }\n return _context4.abrupt(\"return\");\n case 2:\n if (!(!sdk3D || !sdk2D)) {\n _context4.next = 4;\n break;\n }\n return _context4.abrupt(\"return\");\n case 4:\n entityMap = sdk3D.entityMap;\n if (!id) {\n _context4.next = 40;\n break;\n }\n that = entityMap.get(id);\n if (!that) {\n _context4.next = 34;\n break;\n }\n that2 = sdk2D.entityMap.get(id);\n if (!that2) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return that2.remove();\n case 12:\n options = syncObject.tools.deepCopyObj(that.options);\n if (that.type === 'BillboardObject') {\n options.heightReference = 1;\n }\n if (that.type === 'PolygonObject') {\n options.heightMode = 0;\n options.height = 0;\n }\n if (!(!that.type || that.type !== 'tileset' && that.type !== 'bim' && that.type !== 'glb' && that.type !== 'layer' && that.type !== 'wallStereoscopic')) {\n _context4.next = 32;\n break;\n }\n if (that.showView == 3) {\n options.show = false;\n }\n if (that.type === 'TextBox') {\n callback = that.callback;\n }\n _context4.next = 20;\n return new that.constructor(sdk2D, options, callback);\n case 20:\n newObject = _context4.sent;\n newObject.onClick = that.onClick;\n newObject.onRightClick = that.onRightClick;\n newObject.onMouseMove = that.onMouseMove;\n if (that.type === 'TrajectoryMotion') {\n that.firstPersonView = false;\n if (that.TweenAnimate) {\n state = that.state;\n if (state) {\n that.state = false;\n }\n if (!newObject.state) {\n setTimeout(function () {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)) + 0.00000001);\n setTimeout(function () {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)) + 0.00000002);\n }, 500);\n }, 500);\n } else {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)));\n }\n that.state = state;\n } else {\n setTimeout(function () {\n newObject.setMovePositionByDistance(0.00000001);\n setTimeout(function () {\n newObject.setMovePositionByDistance(0.00000002);\n }, 500);\n }, 500);\n }\n if (that.viewFollow) {\n newObject.viewFollow = true;\n }\n }\n if (that.type === 'AttackArrowObject' || that.type === 'StraightArrowObject') {\n if (that.spreadState && that.TweenAnimate && that.TweenAnimate._object) {\n newObject.setSpreadProgressByTime(that.TweenAnimate._object.distance / that.TweenAnimate._valuesEnd.distance * that.spreadTime);\n }\n }\n if (that.type === 'PincerArrowObject') {\n if (that.spreadState && that.TweenAnimate && that.TweenAnimate._object) {\n newObject.setSpreadProgressByTime(that.TweenAnimate._object.distance1 / that.TweenAnimate._valuesEnd.distance1 * that.spreadTime);\n }\n }\n if (that.type === 'Explosion') {\n newObject.entity.imgIndex = that.entity.imgIndex;\n }\n if (!(newObject.on && newObject.type !== 'glb')) {\n _context4.next = 32;\n break;\n }\n if (newObject.type === 'vector') {\n newObject.data = that.data;\n newObject.load(function () {\n if (newObject.entity) {\n for (var i = 0; i < newObject.entity.entities.values.length; i++) {\n newObject.entity.entities.values[i].show = that.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n });\n }\n _context4.next = 32;\n return newObject.on();\n case 32:\n _context4.next = 38;\n break;\n case 34:\n _that = sdk2D.entityMap.get(id);\n if (!_that) {\n _context4.next = 38;\n break;\n }\n _context4.next = 38;\n return _that.remove();\n case 38:\n _context4.next = 75;\n break;\n case 40:\n _iterator = _createForOfIteratorHelper(sdk2D.entityMap);\n _context4.prev = 41;\n _iterator.s();\n case 43:\n if ((_step = _iterator.n()).done) {\n _context4.next = 51;\n break;\n }\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2), key = _step$value[0], obj = _step$value[1];\n _that2 = sdk2D.entityMap.get(key);\n if (!_that2) {\n _context4.next = 49;\n break;\n }\n _context4.next = 49;\n return _that2.remove();\n case 49:\n _context4.next = 43;\n break;\n case 51:\n _context4.next = 56;\n break;\n case 53:\n _context4.prev = 53;\n _context4.t0 = _context4[\"catch\"](41);\n _iterator.e(_context4.t0);\n case 56:\n _context4.prev = 56;\n _iterator.f();\n return _context4.finish(56);\n case 59:\n _iterator2 = _createForOfIteratorHelper(entityMap);\n _context4.prev = 60;\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop() {\n var _step2$value, key, obj, options, target, _callback, _state;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step2.value, 2), key = _step2$value[0], obj = _step2$value[1];\n if (obj.type === 'BillboardObject') {\n obj.options.heightReference = 1;\n }\n options = syncObject.tools.deepCopyObj(obj.options);\n if (!(!obj.type || obj.type !== 'tileset' && obj.type !== 'bim' && obj.type !== 'glb' && obj.type !== 'layer' && obj.type !== 'wallStereoscopic')) {\n _context3.next = 26;\n break;\n }\n if (obj.showView == 3) {\n options.show = false;\n }\n _context3.next = 7;\n return sdk2D.entityMap.get(options.id);\n case 7:\n target = _context3.sent;\n if (!target) {\n _context3.next = 11;\n break;\n }\n _context3.next = 11;\n return target.remove();\n case 11:\n if (obj.type === 'TextBox') {\n _callback = obj.callback;\n }\n _context3.next = 14;\n return new obj.constructor(sdk2D, options, _callback);\n case 14:\n target = _context3.sent;\n target.onClick = obj.onClick;\n target.onRightClick = obj.onRightClick;\n target.onMouseMove = obj.onMouseMove;\n if (obj.type === 'TrajectoryMotion') {\n obj.firstPersonView = false;\n if (obj.TweenAnimate) {\n _state = obj.state;\n if (_state) {\n obj.state = false;\n }\n if (!target.state) {\n setTimeout(function () {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)) + 0.000000001);\n setTimeout(function () {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)) + 0.000000002);\n }, 1500);\n }, 1500);\n } else {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)));\n }\n obj.state = _state;\n } else {\n setTimeout(function () {\n target.setMovePositionByDistance(0.000000001);\n setTimeout(function () {\n target.setMovePositionByDistance(0.000000002);\n }, 1500);\n }, 1500);\n }\n if (obj.viewFollow) {\n target.viewFollow = true;\n }\n // else {\n // newObject.viewFollow = false\n // }\n }\n if (obj.type === 'AttackArrowObject' || obj.type === 'StraightArrowObject') {\n if (obj.spreadState && obj.TweenAnimate && obj.TweenAnimate._object) {\n target.setSpreadProgressByTime(obj.TweenAnimate._object.distance / obj.TweenAnimate._valuesEnd.distance * obj.spreadTime);\n }\n }\n if (obj.type === 'PincerArrowObject') {\n if (obj.spreadState && obj.TweenAnimate && obj.TweenAnimate._object) {\n target.setSpreadProgressByTime(obj.TweenAnimate._object.distance1 / obj.TweenAnimate._valuesEnd.distance1 * obj.spreadTime);\n }\n }\n if (obj.type === 'Explosion') {\n target.entity.imgIndex = obj.entity.imgIndex;\n }\n if (!(target.on && obj.type !== 'glb')) {\n _context3.next = 26;\n break;\n }\n if (target.type === 'vector') {\n target.data = obj.data;\n target.load(function () {\n if (target.entity) {\n for (var i = 0; i < target.entity.entities.values.length; i++) {\n target.entity.entities.values[i].show = obj.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n });\n }\n _context3.next = 26;\n return target.on();\n case 26:\n case \"end\":\n return _context3.stop();\n }\n }, _loop);\n });\n _iterator2.s();\n case 63:\n if ((_step2 = _iterator2.n()).done) {\n _context4.next = 67;\n break;\n }\n return _context4.delegateYield(_loop(), \"t1\", 65);\n case 65:\n _context4.next = 63;\n break;\n case 67:\n _context4.next = 72;\n break;\n case 69:\n _context4.prev = 69;\n _context4.t2 = _context4[\"catch\"](60);\n _iterator2.e(_context4.t2);\n case 72:\n _context4.prev = 72;\n _iterator2.f();\n return _context4.finish(72);\n case 75:\n case \"end\":\n return _context4.stop();\n }\n }, _callee3, null, [[41, 53, 56, 59], [60, 69, 72, 75]]);\n }));\n return _syncData.apply(this, arguments);\n}\nfunction syncData(_x6, _x7, _x8) {\n return _syncData2.apply(this, arguments);\n}\nfunction _syncData2() {\n _syncData2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee4(sdk, id, entityId) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee4$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n syncData2(sdk, id, entityId);\n // syncEntities()\n // syncDataSources()\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee4);\n }));\n return _syncData2.apply(this, arguments);\n}\nfunction syncEntities(entities1, entities2) {\n if (!sdk3D) {\n return;\n }\n if (sdk2D) {\n if (Array.isArray(entities1) || Array.isArray(entities2)) {\n entities1 = null;\n entities2 = null;\n }\n if (!entities1) {\n entities1 = sdk2D.viewer.entities;\n }\n if (!entities2) {\n entities2 = sdk3D.viewer.entities;\n }\n var entities2D = entities1;\n var entities3D = entities2;\n for (var i = entities2D.values.length - 1; i >= 0; i--) {\n var flag = false;\n for (var m = entities3D.values.length - 1; m >= 0; m--) {\n if (entities2D.values[i].id === entities3D.values[m].id) {\n flag = true;\n entities2D.values[i] === entities3D.values[m];\n }\n }\n if (!flag) {\n entities2D.remove(entities2D.values[i]);\n }\n }\n for (var _m = entities3D.values.length - 1; _m >= 0; _m--) {\n var _flag = false;\n for (var _i = entities2D.values.length - 1; _i >= 0; _i--) {\n if (entities2D.values[_i].id === entities3D.values[_m].id) {\n _flag = true;\n break;\n }\n }\n if (!_flag) {\n var entity = entities2D.add(entities3D.values[_m]);\n // if (entity.rectangle) {\n // // 设置高度,否则在某些位置无法显示,但色彩会变暗\n // entity.rectangle.height = 0\n // console.log('242342354235',entities3D.values[m])\n // }\n }\n }\n }\n}\nfunction syncDataSources(dataSources, type) {\n if (!sdk3D) {\n return;\n }\n if (sdk2D) {\n var dataSources2D = sdk2D.viewer.dataSources;\n if (dataSources) {\n for (var i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n if (dataSources2D._dataSources[i].name === dataSources.name) {\n if (type === 'entities') {\n syncEntities(dataSources2D._dataSources[i].entities, dataSources.entities);\n }\n if (type === 'clustering') {\n dataSources2D._dataSources[i].clustering.enabled = dataSources.clustering.enabled;\n }\n }\n }\n }\n // for (let m = dataSources3D._dataSources.length - 1; m >= 0; m--) {\n // let flag = false\n // for (let i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n // console.log(dataSources2D._dataSources[i].name, dataSources3D._dataSources[m].name)\n // if (dataSources2D._dataSources[i].name === dataSources3D._dataSources[m].name) {\n // flag = true\n // break\n // }\n // }\n // if (!flag) {\n // dataSources2D.add(dataSources3D._dataSources[m])\n // }\n // }\n }\n}\nfunction syncImageryLayerAdded(layer, index) {\n sdk2D.viewer.imageryLayers.addImageryProvider(layer.imageryProvider, index);\n}\nfunction syncImageryLayerMoved(layer, newindxe, oldindex) {\n var layer2d = sdk2D.viewer.imageryLayers._layers[oldindex];\n if (!layer2d) {\n return;\n }\n // 移到最底层\n if (newindxe === 0) {\n sdk2D.viewer.imageryLayers.lowerToBottom(layer2d);\n }\n // 移到最高层\n else if (newindxe >= sdk3D.viewer.imageryLayers._layers.length - 1) {\n sdk2D.viewer.imageryLayers.raiseToTop(layer2d);\n } else {\n if (newindxe < oldindex) {\n sdk2D.viewer.imageryLayers.lower(layer2d);\n } else {\n sdk2D.viewer.imageryLayers.raise(layer2d);\n }\n }\n}\nfunction syncImageryLayerRemoved(layer, index) {\n var layer2d = sdk2D.viewer.imageryLayers._layers[index];\n if (!layer2d) {\n return;\n }\n sdk2D.viewer.imageryLayers.remove(layer2d);\n}\nfunction syncImageryLayerShownOrHidden(layer, index, state) {\n return;\n var layer2d = sdk2D.viewer.imageryLayers._layers[index];\n var layer3d = sdk3D.viewer.imageryLayers._layers[index];\n console.log('layer2d', layer2d, sdk2D, layer3d);\n if (!layer2d) {\n return;\n }\n if (layer3d._objectState) {\n if (!layer3d._showView || layer3d._showView == 2) {\n layer2d.show = true;\n }\n if (layer3d._showView == 3) {\n layer2d.show = false;\n }\n } else {\n layer2d.show = state;\n }\n}\nfunction syncPrimitives(_x9) {\n return _syncPrimitives.apply(this, arguments);\n}\nfunction _syncPrimitives() {\n _syncPrimitives = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee5(primitive) {\n var primitives2D, primitives3D, i, flag, m, _m2, _flag2, _i3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee5$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (sdk3D) {\n _context6.next = 2;\n break;\n }\n return _context6.abrupt(\"return\");\n case 2:\n if (sdk2D) {\n // await sdk2D.viewer.scene.primitives.remove(primitive)\n // await sdk2D.viewer.scene.primitives.add(primitive)\n primitives2D = sdk2D.viewer.scene.primitives._primitives;\n primitives3D = sdk3D.viewer.scene.primitives._primitives; // console.log(primitives2D, primitives3D)\n // setTimeout(() => {\n // sdk2D.viewer.scene.primitives._primitives[1] = sdk3D.viewer.scene.primitives._primitives[1]\n // }, 2000);\n for (i = primitives2D.length - 1; i >= 1; i--) {\n flag = false;\n for (m = primitives3D.length - 1; m >= 1; m--) {\n if (primitives3D[m].id && primitives2D[i].id && primitives3D[m].id === primitives2D[i].id) {\n flag = true;\n }\n }\n // if (!flag) {\n // sdk2D.viewer.scene.primitives.remove(primitives2D[i])\n // }\n }\n for (_m2 = primitives3D.length - 1; _m2 >= 1; _m2--) {\n _flag2 = false;\n for (_i3 = primitives2D.length - 1; _i3 >= 1; _i3--) {\n if (primitives3D[_m2].id && primitives2D[_i3].id && primitives3D[_m2].id === primitives2D[_i3].id) {\n _flag2 = true;\n primitives2D[_i3].show = primitives3D[_m2].show;\n primitives2D[_i3].startColor = primitives3D[_m2].startColor;\n primitives2D[_i3].endColor = primitives3D[_m2].endColor;\n primitives2D[_i3].minimumSpeed = primitives3D[_m2].minimumSpeed;\n primitives2D[_i3].maximumSpeed = primitives3D[_m2].maximumSpeed;\n primitives2D[_i3].minimumParticleLife = primitives3D[_m2].minimumParticleLife;\n primitives2D[_i3].maximumParticleLife = primitives3D[_m2].maximumParticleLife;\n primitives2D[_i3].startScale = primitives3D[_m2].startScale;\n primitives2D[_i3].endScale = primitives3D[_m2].endScale;\n primitives2D[_i3].emissionRate = primitives3D[_m2].emissionRate;\n primitives2D[_i3].particleSize = primitives3D[_m2].particleSize;\n primitives2D[_i3].modelMatrix = primitives3D[_m2].modelMatrix;\n }\n }\n // if (!flag) {\n // sdk2D.viewer.scene.primitives.add(primitives3D[m])\n // }\n }\n }\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }, _callee5);\n }));\n return _syncPrimitives.apply(this, arguments);\n}\nfunction eventBind(sdk, i, syncObject) {\n var handler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler);\n}\nfunction syncViewer() {\n var sdk = this.sdks[activeViewer];\n var sdk2;\n if (activeViewer === 0) {\n sdk2 = this.sdks[1];\n } else if (activeViewer === 1) {\n sdk2 = this.sdks[0];\n }\n // this.sdks[0].viewer.trackedEntity = null\n // this.sdks[1].viewer.trackedEntity = null\n if (sdk.viewer.scene.mode === 2) {\n if (this.sdks[0].viewer.trackedEntity) {\n var distance = sdk.viewer.camera.positionCartographic.height;\n sdk2.viewer.camera.lookAt(Cesium.Cartesian3.fromRadians(sdk.viewer.camera.positionCartographic.longitude, sdk.viewer.camera.positionCartographic.latitude, 0), new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90), distance));\n } else {\n if (this.sdks[1].viewer.trackedEntity) {\n this.sdks[1].viewer.entities.remove(this.sdks[1].viewer.trackedEntity);\n this.sdks[1].viewer.trackedEntity = null;\n }\n var centerResult84 = this.tools.cartesian3Towgs84(Cesium.Cartesian3.fromRadians(sdk.viewer.camera.positionCartographic.longitude, sdk.viewer.camera.positionCartographic.latitude, sdk.viewer.camera.positionCartographic.height), sdk.viewer);\n sdk2.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(centerResult84.lng, centerResult84.lat, centerResult84.alt)\n });\n }\n } else {\n // 视角中心点(伪)\n var centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.positionWC;\n }\n var height = this.tools.cartesian3Towgs84(sdk.viewer.camera.positionWC, sdk.viewer).alt;\n var _centerResult = this.tools.cartesian3Towgs84(centerResult, sdk.viewer);\n\n // console.log('--------------', sdk.viewer.camera.position, sdk.viewer.camera.positionWC, centerResult84, height)\n\n sdk2.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(_centerResult.lng, _centerResult.lat, height)\n // orientation: {\n // heading: sdk2.viewer.camera.heading,\n // pitch: sdk2.viewer.camera.pitch,\n // roll: sdk2.viewer.camera.roll\n // }\n });\n }\n}\nfunction get2DView() {\n return sdk2D;\n}\nfunction get3DView() {\n return sdk3D;\n}\nfunction solveBug() {\n // 在能显示的地方加载一个多边形,解决二维模式下某些地方无法显示多边形的bug,原因不明\n sdk2D && sdk2D.viewer.entities.add({\n show: false,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray([100, 50, 100.0001, 50, 100.0001, 50.0001]))\n }\n });\n}\nfunction setActiveViewer(v) {\n activeViewer = v;\n}\nfunction getSdk() {\n return {\n sdkP: sdk3D,\n sdkD: sdk2D\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZS9pbmRleC5qcz9mYjYwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlpJrop4blj6PmqKHlvI8gXHJcbiAqICovXHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi4vLi4vVG9vbHNcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vRXZlbnQnXHJcbmltcG9ydCB7IENlc2l1bUNvbnRhaW5lciB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IHsgb2ZmIGFzIG9mZlNwbGl0U2NyZWVuIH0gZnJvbSBcIi4uL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IEZsd1N0YXR1c1N3aXRjaCwgSnd3U3RhdHVzU3dpdGNoLCBnZXRGbHdTdGF0dXMsIGdldEp3d1N0YXR1cyB9IGZyb20gXCIuLi9nbG9iYWxcIlxyXG5pbXBvcnQgeyBTaGVldEluZGV4U3RhdHVzU3dpdGNoLCBnZXRTdGF0dXMgfSBmcm9tICcuLi9TaGVldEluZGV4J1xyXG5pbXBvcnQgeyBnZXRMZWZ0Q2xpY2tTdGF0ZSwgZ2V0UmlnaHRDbGlja1N0YXRlLCBnZXRNb3ZlU3RhdGUgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL0NsaWNrQ2FsbGJhY2tcIlxyXG5pbXBvcnQgeyBvcGVuTGVmdENsaWNrLCBvcGVuUmlnaHRDbGljaywgb3Blbk1vdmUgfSBmcm9tIFwiLi9DbGlja0NhbGxiYWNrXCJcclxuaW1wb3J0IHsgcmFpbiwgc25vdywgZm9nLCBuaWdodFZpc2lvbiwgc2t5U3RhcnJ5LCBpbGx1bWluYXRpb24gfSBmcm9tICcuLi9lZmZsZWN0J1xyXG5cclxuXHJcbmxldCBzZGsyRCA9IG51bGxcclxubGV0IHNkazNEID0gbnVsbFxyXG5sZXQgYWN0aXZlVmlld2VyXHJcbmxldCBjb250cm9sVmlld2VyXHJcbmxldCBzeW5jT2JqZWN0ID0ge31cclxubGV0IGhhbmRsZXJzID0gW11cclxuYXN5bmMgZnVuY3Rpb24gaW5pdChzZGspIHtcclxuICBzZGszRCA9IHNka1xyXG4gIGFjdGl2ZVZpZXdlciA9IDBcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCBzZGsyID0gYXdhaXQgbmV3IFlKLllKRWFydGgoc2RrLmRpdl9pZClcclxuICBzZGsyLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPSAnY2VzaXVtLXZpZXdlciAyZCdcclxuICBTaGVldEluZGV4U3RhdHVzU3dpdGNoKHNkazIsIGdldFN0YXR1cygpKVxyXG4gIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgbGV0IHN3aXRjaENsdXN0ZXIgPSBuZXcgWUouR2xvYmFsLnN3aXRjaENsdXN0ZXIoc2RrMiwgdHJ1ZSlcclxuICAvLyB9LCA1MDApO1xyXG4gIENlc2l1bUNvbnRhaW5lcihzZGsyLCB7XHJcbiAgICBjb21wYXNzOiBmYWxzZSwgLy8g572X55uYXHJcbiAgICAvLyBsZWdlbmQ6IGZhbHNlLCAvLyDmr5TkvovlsLpcclxuICAgIGluZm86IGZhbHNlLCAvLyDkv6Hmga/moI9cclxuICAgIGZyYW1lOiBmYWxzZSAvLyDliLfmlrDnjodcclxuICB9KVxyXG4gIHNkazIudmlld2VyLnNjZW5lLm1vZGUgPSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkRcclxuICBzZGsyRCA9IGF3YWl0IHNkazJcclxuICBpZihnZXRMZWZ0Q2xpY2tTdGF0ZSgpKSB7XHJcbiAgICBvcGVuTGVmdENsaWNrKHNkazJEKVxyXG4gIH1cclxuICBpZihnZXRSaWdodENsaWNrU3RhdGUoKSkge1xyXG4gICAgb3BlblJpZ2h0Q2xpY2soc2RrMkQpXHJcbiAgfVxyXG4gIGlmKGdldE1vdmVTdGF0ZSgpKSB7XHJcbiAgICBvcGVuTW92ZShzZGsyRClcclxuICB9XHJcblxyXG4gIHdpbmRvdy5zZGsyRCA9IHNkazJEXHJcbiAgc29sdmVCdWcoKVxyXG4gIHN5bmNPYmplY3QgPSB7IHNka3M6IFtzZGssIHNkazJdLCB0b29scyB9XHJcbiAgYXdhaXQgZXZlbnRCaW5kKHNkaywgMCwgc3luY09iamVjdClcclxuICBhd2FpdCBldmVudEJpbmQoc2RrMiwgMSwgc3luY09iamVjdClcclxuICBhd2FpdCBzeW5jRGF0YShzZGspXHJcbiAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG5cclxuICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyTW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyTW92ZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclJlbW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZCk7XHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuICBsZXQgaW1hZ2VyeUxheWVycyA9IFsuLi5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc11cclxuICBpbWFnZXJ5TGF5ZXJzLnNvcnQoKGEsIGIpID0+IGEuX2xheWVySW5kZXggLSBiLl9sYXllckluZGV4KTtcclxuICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yZW1vdmVBbGwoKVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VyeUxheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGVudGl0eSA9IHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihpbWFnZXJ5TGF5ZXJzW2ldLmltYWdlcnlQcm92aWRlciwgaW1hZ2VyeUxheWVyc1tpXS5fbGF5ZXJJbmRleClcclxuICAgIGlmKGltYWdlcnlMYXllcnNbaV0uX2lkKSB7XHJcbiAgICAgIGVudGl0eS5faWQgPSBpbWFnZXJ5TGF5ZXJzW2ldLl9pZFxyXG4gICAgfVxyXG4gICAgZW50aXR5LnNob3cgPSBpbWFnZXJ5TGF5ZXJzW2ldLnNob3dcclxuICAgIGVudGl0eS5hbHBoYSA9IGltYWdlcnlMYXllcnNbaV0uYWxwaGFcclxuICAgIGlmIChpbWFnZXJ5TGF5ZXJzW2ldLl9vYmplY3RTdGF0ZSkge1xyXG4gICAgICBpZiAoaW1hZ2VyeUxheWVyc1tpXS5fc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICAgIGVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4gIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG5cclxuICBpZiAoZ2V0Rmx3U3RhdHVzKHNkaykpIHtcclxuICAgIEZsd1N0YXR1c1N3aXRjaChzZGsyLCB0cnVlKVxyXG4gIH1cclxuICBpZiAoZ2V0Snd3U3RhdHVzKHNkaykpIHtcclxuICAgIEp3d1N0YXR1c1N3aXRjaChzZGsyLCB0cnVlKVxyXG4gIH1cclxuICAvLyDpm6jpm6rpm77lpJzop4bmmJ/nqbrlhYnnhadcclxuICBsZXQgc3RhZ2VzID0gc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHN3aXRjaCAoc3RhZ2VzW2ldLm5hbWUpIHtcclxuICAgICAgY2FzZSAncmFpbic6XHJcbiAgICAgICAgcmFpbihzZGsyLCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ3Nub3cnOlxyXG4gICAgICAgIHNub3coc2RrMiwgdHJ1ZSlcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdmb2cnOlxyXG4gICAgICAgIGZvZyhzZGsyLCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2N6bV9uaWdodF92aXNpb24nOlxyXG4gICAgICAgIG5pZ2h0VmlzaW9uKHNkazIsIHRydWUpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgc2t5U3RhcnJ5KHNkazIsICFzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdylcclxuICBpbGx1bWluYXRpb24oc2RrMiwgc2RrLnZpZXdlci5zaGFkb3dzKVxyXG5cclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgaWYgKGl0ZW0uc2hvd1ZpZXcgPT0gMikge1xyXG4gICAgICBpdGVtLnNob3dWaWV3ID0gMlxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG59XHJcbmFzeW5jIGZ1bmN0aW9uIG9uKHNkaykge1xyXG4gIGlmIChzZGsyRCkge1xyXG5cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBpbml0KHNkaylcclxuICAgIG9mZlNwbGl0U2NyZWVuKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9mZihzZGspIHtcclxuICBzZGsudmlld2VyLnNjZW5lLnByZVJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNWaWV3ZXIsIHN5bmNPYmplY3QpXHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyQWRkZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyQWRkZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJSZW1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllclJlbW92ZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclNob3duT3JIaWRkZW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbik7XHJcbiAgLy8gc2RrLnZpZXdlci5lbnRpdGllcy5jb2xsZWN0aW9uQ2hhbmdlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNFbnRpdGllcylcclxuICAvLyBzZGsudmlld2VyLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNEYXRhU291cmNlcylcclxuXHJcbiAgLy9wcmltaXRpdmVBZGRlZD11bmRlZmluZWTln7rlhYPlkIzmraXorr7nva7lnKhhZGTkvY3nva5cclxuICAvLyBzZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucHJpbWl0aXZlQWRkZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jUHJpbWl0aXZlc0FkZGVkKVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGhhbmRsZXJzW2ldLmRlc3Ryb3koKVxyXG4gIH1cclxuICBpZiAoc2RrMkQpIHtcclxuICAgIHNkazJELmRlc3Ryb3koKVxyXG4gICAgaGFuZGxlcnMgPSBbXVxyXG4gICAgc2RrMkQgPSBudWxsXHJcbiAgICBzZGszRCA9IG51bGxcclxuICAgIGFjdGl2ZVZpZXdlciA9IG51bGxcclxuICAgIHN5bmNPYmplY3QgPSB7fVxyXG4gIH1cclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgaWYgKGl0ZW0uc2hvd1ZpZXcpIHtcclxuICAgICAgaXRlbS5zaG93ID0gaXRlbS5zaG93XHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY0RhdGEyKHNkaywgaWQsIGVudGl0eUlkKSB7XHJcbiAgaWYgKHNkayAmJiBzZGsudmlld2VyICYmIHNkay52aWV3ZXIuX2VsZW1lbnQgJiYgc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPT09ICdjZXNpdW0tdmlld2VyIDJkJykge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmICghc2RrM0QgfHwgIXNkazJEKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGVudGl0eU1hcCA9IHNkazNELmVudGl0eU1hcFxyXG4gIGlmIChpZCkge1xyXG4gICAgbGV0IHRoYXQgPSBlbnRpdHlNYXAuZ2V0KGlkKVxyXG4gICAgaWYgKHRoYXQpIHtcclxuICAgICAgbGV0IHRoYXQyID0gc2RrMkQuZW50aXR5TWFwLmdldChpZClcclxuICAgICAgaWYgKHRoYXQyKSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdDIucmVtb3ZlKClcclxuICAgICAgfVxyXG4gICAgICBsZXQgb3B0aW9ucyA9IHN5bmNPYmplY3QudG9vbHMuZGVlcENvcHlPYmoodGhhdC5vcHRpb25zKVxyXG4gICAgICBpZiAodGhhdC50eXBlID09PSAnQmlsbGJvYXJkT2JqZWN0Jykge1xyXG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0UmVmZXJlbmNlID0gMVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdQb2x5Z29uT2JqZWN0Jykge1xyXG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0TW9kZSA9IDBcclxuICAgICAgICBvcHRpb25zLmhlaWdodCA9IDBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGF0LnR5cGUgfHwgKHRoYXQudHlwZSAhPT0gJ3RpbGVzZXQnICYmIHRoYXQudHlwZSAhPT0gJ2JpbScgJiYgdGhhdC50eXBlICE9PSAnZ2xiJyAmJiB0aGF0LnR5cGUgIT09ICdsYXllcicgJiYgdGhhdC50eXBlICE9PSAnd2FsbFN0ZXJlb3Njb3BpYycpKSB7XHJcbiAgICAgICAgaWYgKHRoYXQuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICAgICAgb3B0aW9ucy5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNhbGxiYWNrXHJcbiAgICAgICAgaWYodGhhdC50eXBlID09PSAnVGV4dEJveCcpIHtcclxuICAgICAgICAgIGNhbGxiYWNrID0gdGhhdC5jYWxsYmFja1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG5ld09iamVjdCA9IGF3YWl0IG5ldyB0aGF0LmNvbnN0cnVjdG9yKHNkazJELCBvcHRpb25zLCBjYWxsYmFjaylcclxuICAgICAgICBuZXdPYmplY3Qub25DbGljayA9IHRoYXQub25DbGlja1xyXG4gICAgICAgIG5ld09iamVjdC5vblJpZ2h0Q2xpY2sgPSB0aGF0Lm9uUmlnaHRDbGlja1xyXG4gICAgICAgIG5ld09iamVjdC5vbk1vdXNlTW92ZSA9IHRoYXQub25Nb3VzZU1vdmVcclxuICAgICAgICBpZiAodGhhdC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgIHRoYXQuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgICAgIGlmICh0aGF0LlR3ZWVuQW5pbWF0ZSkge1xyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGF0LnN0YXRlXHJcbiAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgIHRoYXQuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghbmV3T2JqZWN0LnN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBuZXdPYmplY3Quc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZShOdW1iZXIodGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSArIDAuMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbmV3T2JqZWN0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UudG9GaXhlZCg4KSkgKyAwLjAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIG5ld09iamVjdC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKE51bWJlcih0aGF0LlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlLnRvRml4ZWQoOCkpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoYXQuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld09iamVjdC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKDAuMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBuZXdPYmplY3Quc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSgwLjAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgIH0sIDUwMClcclxuICAgICAgICAgICAgfSwgNTAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXQudmlld0ZvbGxvdykge1xyXG4gICAgICAgICAgICBuZXdPYmplY3Qudmlld0ZvbGxvdyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoYXQudHlwZSA9PT0gJ0F0dGFja0Fycm93T2JqZWN0JyB8fCB0aGF0LnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgaWYgKHRoYXQuc3ByZWFkU3RhdGUgJiYgdGhhdC5Ud2VlbkFuaW1hdGUgJiYgdGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdCkge1xyXG4gICAgICAgICAgICBuZXdPYmplY3Quc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIHRoYXQuVHdlZW5BbmltYXRlLl92YWx1ZXNFbmQuZGlzdGFuY2UgKiB0aGF0LnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmICh0aGF0LnNwcmVhZFN0YXRlICYmIHRoYXQuVHdlZW5BbmltYXRlICYmIHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UxIC8gdGhhdC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZTEgKiB0aGF0LnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICBuZXdPYmplY3QuZW50aXR5LmltZ0luZGV4ID0gdGhhdC5lbnRpdHkuaW1nSW5kZXhcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld09iamVjdC5vbiAmJiBuZXdPYmplY3QudHlwZSAhPT0gJ2dsYicpIHtcclxuICAgICAgICAgIGlmIChuZXdPYmplY3QudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0LmRhdGEgPSB0aGF0LmRhdGFcclxuICAgICAgICAgICAgbmV3T2JqZWN0LmxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChuZXdPYmplY3QuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld09iamVjdC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld09iamVjdC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXdhaXQgbmV3T2JqZWN0Lm9uKClcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKG5ld09iamVjdC50eXBlICYmIChuZXdPYmplY3QudHlwZSA9PT0gJ3RpbGVzZXQnIHx8IG5ld09iamVjdC50eXBlID09PSAnYmltJykpIHtcclxuICAgICAgICAvLyAgIG5ld09iamVjdC5oZWlnaHQgPSAtMTAwMDBcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gLy8gQ2VzaXVtMS45OOeJiOacrOS6jOe7tOaooeW8j+S4i+WIneasoeaYvuekuuaciemXrumimO+8jDEuMTEw5Lul5LiK54mI5pys5q2j5bi4XHJcbiAgICAgICAgLy8gaWYgKG5ld09iamVjdC50eXBlICYmIChuZXdPYmplY3QudHlwZSA9PT0gJ2dsYicpKSB7XHJcbiAgICAgICAgLy8gICBuZXdPYmplY3Qub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAwXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHRoYXQyID0gc2RrMkQuZW50aXR5TWFwLmdldChpZClcclxuICAgICAgaWYgKHRoYXQyKSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdDIucmVtb3ZlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGZvciAobGV0IFtrZXksIG9ial0gb2Ygc2RrMkQuZW50aXR5TWFwKSB7XHJcbiAgICAgIGxldCB0aGF0ID0gc2RrMkQuZW50aXR5TWFwLmdldChrZXkpXHJcbiAgICAgIGlmICh0aGF0KSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdC5yZW1vdmUoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBba2V5LCBvYmpdIG9mIGVudGl0eU1hcCkge1xyXG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdCaWxsYm9hcmRPYmplY3QnKSB7XHJcbiAgICAgICAgb2JqLm9wdGlvbnMuaGVpZ2h0UmVmZXJlbmNlID0gMVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBvcHRpb25zID0gc3luY09iamVjdC50b29scy5kZWVwQ29weU9iaihvYmoub3B0aW9ucylcclxuICAgICAgaWYgKCFvYmoudHlwZSB8fCAob2JqLnR5cGUgIT09ICd0aWxlc2V0JyAmJiBvYmoudHlwZSAhPT0gJ2JpbScgJiYgb2JqLnR5cGUgIT09ICdnbGInICYmIG9iai50eXBlICE9PSAnbGF5ZXInICYmIG9iai50eXBlICE9PSAnd2FsbFN0ZXJlb3Njb3BpYycpKSB7XHJcbiAgICAgICAgaWYgKG9iai5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgICAgICBvcHRpb25zLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGFyZ2V0ID0gYXdhaXQgc2RrMkQuZW50aXR5TWFwLmdldChvcHRpb25zLmlkKVxyXG4gICAgICAgIGlmKHRhcmdldCkge1xyXG4gICAgICAgICAgYXdhaXQgdGFyZ2V0LnJlbW92ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjYWxsYmFja1xyXG4gICAgICAgIGlmKG9iai50eXBlID09PSAnVGV4dEJveCcpIHtcclxuICAgICAgICAgIGNhbGxiYWNrID0gb2JqLmNhbGxiYWNrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IG5ldyBvYmouY29uc3RydWN0b3Ioc2RrMkQsIG9wdGlvbnMsIGNhbGxiYWNrKVxyXG4gICAgICAgIHRhcmdldC5vbkNsaWNrID0gb2JqLm9uQ2xpY2tcclxuICAgICAgICB0YXJnZXQub25SaWdodENsaWNrID0gb2JqLm9uUmlnaHRDbGlja1xyXG4gICAgICAgIHRhcmdldC5vbk1vdXNlTW92ZSA9IG9iai5vbk1vdXNlTW92ZVxyXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICBvYmouZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgICAgIGlmIChvYmouVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IG9iai5zdGF0ZVxyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICBvYmouc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGFyZ2V0LnN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZShOdW1iZXIob2JqLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlLnRvRml4ZWQoOCkpICsgMC4wMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSArIDAuMDAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvYmouc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRhcmdldC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKDAuMDAwMDAwMDAxKVxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoMC4wMDAwMDAwMDIpXHJcbiAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG9iai52aWV3Rm9sbG93KSB7XHJcbiAgICAgICAgICAgIHRhcmdldC52aWV3Rm9sbG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgICAvLyAgIG5ld09iamVjdC52aWV3Rm9sbG93ID0gZmFsc2VcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IG9iai50eXBlID09PSAnU3RyYWlnaHRBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChvYmouc3ByZWFkU3RhdGUgJiYgb2JqLlR3ZWVuQW5pbWF0ZSAmJiBvYmouVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIG9iai5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIG9iai5zcHJlYWRUaW1lKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChvYmouc3ByZWFkU3RhdGUgJiYgb2JqLlR3ZWVuQW5pbWF0ZSAmJiBvYmouVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZTEgLyBvYmouVHdlZW5BbmltYXRlLl92YWx1ZXNFbmQuZGlzdGFuY2UxICogb2JqLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0V4cGxvc2lvbicpIHtcclxuICAgICAgICAgIHRhcmdldC5lbnRpdHkuaW1nSW5kZXggPSBvYmouZW50aXR5LmltZ0luZGV4XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0YXJnZXQub24gJiYgb2JqLnR5cGUgIT09ICdnbGInKSB7XHJcbiAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5kYXRhID0gb2JqLmRhdGFcclxuICAgICAgICAgICAgdGFyZ2V0LmxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBvYmouZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhd2FpdCB0YXJnZXQub24oKVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiAob2JqLnR5cGUgJiYgKG9iai50eXBlID09PSAndGlsZXNldCcgfHwgb2JqLnR5cGUgPT09ICdiaW0nKSkge1xyXG4gICAgICAgIC8vICAgdGFyZ2V0LmhlaWdodCA9IC0xMDAwMFxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAob2JqLnR5cGUgJiYgKG9iai50eXBlID09PSAnZ2xiJykpIHtcclxuICAgICAgICAvLyAgIHRhcmdldC5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IDBcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHN5bmNEYXRhKHNkaywgaWQsIGVudGl0eUlkKSB7XHJcbiAgc3luY0RhdGEyKHNkaywgaWQsIGVudGl0eUlkKVxyXG4gIC8vIHN5bmNFbnRpdGllcygpXHJcbiAgLy8gc3luY0RhdGFTb3VyY2VzKClcclxufVxyXG5cclxuZnVuY3Rpb24gc3luY0VudGl0aWVzKGVudGl0aWVzMSwgZW50aXRpZXMyKSB7XHJcbiAgaWYgKCFzZGszRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXRpZXMxKSB8fCBBcnJheS5pc0FycmF5KGVudGl0aWVzMikpIHtcclxuICAgICAgZW50aXRpZXMxID0gbnVsbFxyXG4gICAgICBlbnRpdGllczIgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoIWVudGl0aWVzMSkge1xyXG4gICAgICBlbnRpdGllczEgPSBzZGsyRC52aWV3ZXIuZW50aXRpZXNcclxuICAgIH1cclxuICAgIGlmICghZW50aXRpZXMyKSB7XHJcbiAgICAgIGVudGl0aWVzMiA9IHNkazNELnZpZXdlci5lbnRpdGllc1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0aWVzMkQgPSBlbnRpdGllczFcclxuICAgIGxldCBlbnRpdGllczNEID0gZW50aXRpZXMyXHJcbiAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgZW50aXRpZXMyRC52YWx1ZXNbaV0gPT09IGVudGl0aWVzM0QudmFsdWVzW21dXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIGVudGl0aWVzMkQucmVtb3ZlKGVudGl0aWVzMkQudmFsdWVzW2ldKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IGVudGl0aWVzMkQuYWRkKGVudGl0aWVzM0QudmFsdWVzW21dKVxyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucmVjdGFuZ2xlKSB7XHJcbiAgICAgICAgLy8gICAvLyDorr7nva7pq5jluqbvvIzlkKbliJnlnKjmn5DkupvkvY3nva7ml6Dms5XmmL7npLrvvIzkvYboibLlvankvJrlj5jmmpdcclxuICAgICAgICAvLyAgIGVudGl0eS5yZWN0YW5nbGUuaGVpZ2h0ID0gMFxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzI0MjM0MjM1NDIzNScsZW50aXRpZXMzRC52YWx1ZXNbbV0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlcywgdHlwZSkge1xyXG4gIGlmICghc2RrM0QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoc2RrMkQpIHtcclxuICAgIGxldCBkYXRhU291cmNlczJEID0gc2RrMkQudmlld2VyLmRhdGFTb3VyY2VzXHJcbiAgICBpZiAoZGF0YVNvdXJjZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IGRhdGFTb3VyY2VzLm5hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZW50aXRpZXMnKSB7XHJcbiAgICAgICAgICAgIHN5bmNFbnRpdGllcyhkYXRhU291cmNlczJELl9kYXRhU291cmNlc1tpXS5lbnRpdGllcywgZGF0YVNvdXJjZXMuZW50aXRpZXMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NsdXN0ZXJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGRhdGFTb3VyY2VzLmNsdXN0ZXJpbmcuZW5hYmxlZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9yIChsZXQgbSA9IGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAvLyAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgIC8vICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSwgZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSlcclxuICAgIC8vICAgICBpZiAoZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSkge1xyXG4gICAgLy8gICAgICAgZmxhZyA9IHRydWVcclxuICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICghZmxhZykge1xyXG4gICAgLy8gICAgIGRhdGFTb3VyY2VzMkQuYWRkKGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzW21dKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZChsYXllciwgaW5kZXgpIHtcclxuICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIobGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLCBpbmRleClcclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyTW92ZWQobGF5ZXIsIG5ld2luZHhlLCBvbGRpbmRleCkge1xyXG4gIGxldCBsYXllcjJkID0gc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tvbGRpbmRleF1cclxuICBpZiAoIWxheWVyMmQpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICAvLyDnp7vliLDmnIDlupXlsYJcclxuICBpZiAobmV3aW5keGUgPT09IDApIHtcclxuICAgIHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxvd2VyVG9Cb3R0b20obGF5ZXIyZClcclxuICB9XHJcbiAgLy8g56e75Yiw5pyA6auY5bGCXHJcbiAgZWxzZSBpZiAobmV3aW5keGUgPj0gc2RrM0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGggLSAxKSB7XHJcbiAgICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZVRvVG9wKGxheWVyMmQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKG5ld2luZHhlIDwgb2xkaW5kZXgpIHtcclxuICAgICAgc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMubG93ZXIobGF5ZXIyZClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZShsYXllcjJkKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZChsYXllciwgaW5kZXgpIHtcclxuICBsZXQgbGF5ZXIyZCA9IHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaW5kZXhdXHJcbiAgaWYgKCFsYXllcjJkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyMmQpXHJcbn1cclxuZnVuY3Rpb24gc3luY0ltYWdlcnlMYXllclNob3duT3JIaWRkZW4obGF5ZXIsIGluZGV4LCBzdGF0ZSkge1xyXG4gIHJldHVyblxyXG4gIGxldCBsYXllcjJkID0gc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBsZXQgbGF5ZXIzZCA9IHNkazNELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaW5kZXhdXHJcbiAgY29uc29sZS5sb2coJ2xheWVyMmQnLCBsYXllcjJkLCBzZGsyRCwgbGF5ZXIzZClcclxuXHJcbiAgaWYgKCFsYXllcjJkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgaWYgKGxheWVyM2QuX29iamVjdFN0YXRlKSB7XHJcbiAgICBpZiAoIWxheWVyM2QuX3Nob3dWaWV3IHx8IGxheWVyM2QuX3Nob3dWaWV3ID09IDIpIHtcclxuICAgICAgbGF5ZXIyZC5zaG93ID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgaWYgKGxheWVyM2QuX3Nob3dWaWV3ID09IDMpIHtcclxuICAgICAgbGF5ZXIyZC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBsYXllcjJkLnNob3cgPSBzdGF0ZVxyXG4gIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY1ByaW1pdGl2ZXMocHJpbWl0aXZlKSB7XHJcbiAgaWYgKCFzZGszRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgLy8gYXdhaXQgc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHByaW1pdGl2ZSlcclxuICAgIC8vIGF3YWl0IHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChwcmltaXRpdmUpXHJcbiAgICBsZXQgcHJpbWl0aXZlczJEID0gc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNcclxuICAgIGxldCBwcmltaXRpdmVzM0QgPSBzZGszRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1xyXG4gICAgLy8gY29uc29sZS5sb2cocHJpbWl0aXZlczJELCBwcmltaXRpdmVzM0QpXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbMV0gPSBzZGszRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1sxXVxyXG4gICAgLy8gfSwgMjAwMCk7XHJcbiAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgZm9yIChsZXQgbSA9IHByaW1pdGl2ZXMzRC5sZW5ndGggLSAxOyBtID49IDE7IG0tLSkge1xyXG4gICAgICAgIGlmIChwcmltaXRpdmVzM0RbbV0uaWQgJiYgcHJpbWl0aXZlczJEW2ldLmlkICYmIChwcmltaXRpdmVzM0RbbV0uaWQgPT09IHByaW1pdGl2ZXMyRFtpXS5pZCkpIHtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmICghZmxhZykge1xyXG4gICAgICAvLyAgIHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShwcmltaXRpdmVzMkRbaV0pXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgICAgaWYgKHByaW1pdGl2ZXMzRFttXS5pZCAmJiBwcmltaXRpdmVzMkRbaV0uaWQgJiYgKHByaW1pdGl2ZXMzRFttXS5pZCA9PT0gcHJpbWl0aXZlczJEW2ldLmlkKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zaG93ID0gcHJpbWl0aXZlczNEW21dLnNob3dcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zdGFydENvbG9yID0gcHJpbWl0aXZlczNEW21dLnN0YXJ0Q29sb3JcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbmRDb2xvciA9IHByaW1pdGl2ZXMzRFttXS5lbmRDb2xvclxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1pbmltdW1TcGVlZCA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtU3BlZWRcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5tYXhpbXVtU3BlZWQgPSBwcmltaXRpdmVzM0RbbV0ubWF4aW11bVNwZWVkXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWluaW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWF4aW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uc3RhcnRTY2FsZSA9IHByaW1pdGl2ZXMzRFttXS5zdGFydFNjYWxlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uZW5kU2NhbGUgPSBwcmltaXRpdmVzM0RbbV0uZW5kU2NhbGVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbWlzc2lvblJhdGUgPSBwcmltaXRpdmVzM0RbbV0uZW1pc3Npb25SYXRlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ucGFydGljbGVTaXplID0gcHJpbWl0aXZlczNEW21dLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1vZGVsTWF0cml4ID0gcHJpbWl0aXZlczNEW21dLm1vZGVsTWF0cml4XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmICghZmxhZykge1xyXG4gICAgICAvLyAgIHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChwcmltaXRpdmVzM0RbbV0pXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV2ZW50QmluZChzZGssIGksIHN5bmNPYmplY3QpIHtcclxuICBsZXQgaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGsudmlld2VyLmNhbnZhc1xyXG4gIClcclxuICBoYW5kbGVyLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgIGFjdGl2ZVZpZXdlciA9IGlcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9ET1dOKVxyXG4gIGhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gaVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9ET1dOKVxyXG4gIGhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gaVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5XSEVFTClcclxuICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNWaWV3ZXIoKSB7XHJcbiAgbGV0IHNkayA9IHRoaXMuc2Rrc1thY3RpdmVWaWV3ZXJdXHJcbiAgbGV0IHNkazJcclxuXHJcbiAgaWYgKGFjdGl2ZVZpZXdlciA9PT0gMCkge1xyXG4gICAgc2RrMiA9IHRoaXMuc2Rrc1sxXVxyXG4gIH1cclxuICBlbHNlIGlmIChhY3RpdmVWaWV3ZXIgPT09IDEpIHtcclxuICAgIHNkazIgPSB0aGlzLnNka3NbMF1cclxuICB9XHJcbiAgLy8gdGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5ID0gbnVsbFxyXG4gIC8vIHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSA9IG51bGxcclxuICBpZiAoc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICBpZiAodGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgIGxldCBkaXN0YW5jZSA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgICBzZGsyLnZpZXdlci5jYW1lcmEubG9va0F0KFxyXG4gICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmxvbmdpdHVkZSwgc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMubGF0aXR1ZGUsIDApLFxyXG4gICAgICAgIG5ldyBDZXNpdW0uSGVhZGluZ1BpdGNoUmFuZ2UoMCwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MCksIGRpc3RhbmNlKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2Rrc1sxXS52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAgICAgICB0aGlzLnNka3NbMV0udmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdGhpcy50b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGUsIHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlLCBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQpLCBzZGsudmlld2VyKVxyXG4gICAgICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlclJlc3VsdDg0LmxuZywgY2VudGVyUmVzdWx0ODQubGF0LCBjZW50ZXJSZXN1bHQ4NC5hbHQpLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIC8vIOinhuinkuS4reW/g+eCuSjkvKopXHJcbiAgICBsZXQgY2VudGVyUmVzdWx0ID0gc2RrLnZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMixcclxuICAgICAgICBzZGsudmlld2VyLmNhbnZhcy5jbGllbnRIZWlnaHQgLyAoMiAtICgoOTAgKyBzZGsudmlld2VyLmNhbWVyYS5waXRjaCAvIChDZXNpdW0uTWF0aC5QSSAvIDE4MCkpIC8gMTEwKSksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgICBpZiAoIWNlbnRlclJlc3VsdCkge1xyXG4gICAgICBjZW50ZXJSZXN1bHQgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbldDXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMudG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25XQywgc2RrLnZpZXdlcikuYWx0XHJcbiAgICBsZXQgY2VudGVyUmVzdWx0ODQgPSB0aGlzLnRvb2xzLmNhcnRlc2lhbjNUb3dnczg0KGNlbnRlclJlc3VsdCwgc2RrLnZpZXdlcilcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0nLCBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25XQywgY2VudGVyUmVzdWx0ODQsIGhlaWdodClcclxuXHJcbiAgICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXJSZXN1bHQ4NC5sbmcsIGNlbnRlclJlc3VsdDg0LmxhdCwgaGVpZ2h0KSxcclxuICAgICAgLy8gb3JpZW50YXRpb246IHtcclxuICAgICAgLy8gICBoZWFkaW5nOiBzZGsyLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgLy8gICBwaXRjaDogc2RrMi52aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gICAgICAvLyAgIHJvbGw6IHNkazIudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgIC8vIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBnZXQyRFZpZXcoKSB7XHJcbiAgcmV0dXJuIHNkazJEXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldDNEVmlldygpIHtcclxuICByZXR1cm4gc2RrM0RcclxufVxyXG5cclxuZnVuY3Rpb24gc29sdmVCdWcoKSB7XHJcbiAgLy8g5Zyo6IO95pi+56S655qE5Zyw5pa55Yqg6L295LiA5Liq5aSa6L655b2i77yM6Kej5Yaz5LqM57u05qih5byP5LiL5p+Q5Lqb5Zyw5pa55peg5rOV5pi+56S65aSa6L655b2i55qEYnVn77yM5Y6f5Zug5LiN5piOXHJcbiAgc2RrMkQgJiYgc2RrMkQudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIHBvbHlnb246IHtcclxuICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShbMTAwLCA1MCwgMTAwLjAwMDEsIDUwLCAxMDAuMDAwMSwgNTAuMDAwMV0pKVxyXG4gICAgfVxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEFjdGl2ZVZpZXdlcih2KSB7XHJcbiAgYWN0aXZlVmlld2VyID0gdlxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZGsoKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNka1A6IHNkazNELFxyXG4gICAgc2RrRDogc2RrMkRcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgeyBvbiwgb2ZmLCBzeW5jRGF0YSwgc3luY0VudGl0aWVzLCBzeW5jRGF0YVNvdXJjZXMsIHN5bmNQcmltaXRpdmVzLCBnZXQyRFZpZXcsIGdldDNEVmlldywgc2V0QWN0aXZlVmlld2VyLCBnZXRTZGsgfSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBWUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MultiViewportMode/index.js\n"); - -/***/ }), - -/***/ "./src/Global/ScreenRecord/index.js": -/*!******************************************!*\ - !*** ./src/Global/ScreenRecord/index.js ***! - \******************************************/ -/*! exports provided: startScreenRecord, stopScreenRecord */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startScreenRecord\", function() { return startScreenRecord; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stopScreenRecord\", function() { return stopScreenRecord; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nvar ScreenRecord = /*#__PURE__*/function () {\n function ScreenRecord() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ScreenRecord);\n this.start();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ScreenRecord, [{\n key: \"start\",\n value: function start() {\n var _this = this;\n navigator.mediaDevices.getDisplayMedia({\n video: true\n }).then(function (stream) {\n // 需要更好的浏览器支持\n // const mime = MediaRecorder.isTypeSupported('video/webm; codecs=vp9')\n // ? 'video/webm; codecs=vp9'\n // : 'video/webm'\n _this.mediaRecorder = new MediaRecorder(stream, {\n // mimeType: mime,\n mimeType: 'video/webm'\n });\n var chunks = [];\n _this.mediaRecorder.addEventListener('dataavailable', function (e) {\n chunks.push(e.data);\n });\n _this.mediaRecorder.addEventListener('stop', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee() {\n var blob, opts, handle, writable;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n blob = new Blob(chunks, {\n type: 'video/mp4'\n });\n opts = {\n suggestedName: '视频录制.mp4',\n types: [{\n description: '文件类型',\n accept: {\n 'video/mp4': ['.mp4']\n }\n }],\n excludeAcceptAllOption: true\n };\n _context.next = 5;\n return window.showSaveFilePicker(opts);\n case 5:\n handle = _context.sent;\n _context.next = 8;\n return handle.createWritable();\n case 8:\n writable = _context.sent;\n // 创建可写入的文件对象\n // 写入视频内容\n writable.write(blob);\n _context.next = 12;\n return writable.close();\n case 12:\n YJ.Global.ScreenRecord.screenRecord = null;\n _context.next = 18;\n break;\n case 15:\n _context.prev = 15;\n _context.t0 = _context[\"catch\"](0);\n console.info('文件保存失败:', _context.t0);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 15]]);\n })));\n\n // 必须手动启动\n _this.mediaRecorder.start();\n }).catch(function (e) {\n console.info('取消录屏');\n console.info(e);\n YJ.Global.ScreenRecord.screenRecord = null;\n });\n }\n }]);\n}();\nfunction startScreenRecord() {\n if (YJ.Global.ScreenRecord.screenRecord) {\n return '录屏任务进行中';\n } else {\n YJ.Global.ScreenRecord.screenRecord = new ScreenRecord();\n }\n}\nfunction stopScreenRecord() {\n if (YJ.Global.ScreenRecord && YJ.Global.ScreenRecord.screenRecord && YJ.Global.ScreenRecord.screenRecord) {\n YJ.Global.ScreenRecord.screenRecord.mediaRecorder.stop();\n YJ.Global.ScreenRecord.screenRecord = null;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NjcmVlblJlY29yZC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvU2NyZWVuUmVjb3JkL2luZGV4LmpzPzVkMzYiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgU2NyZWVuUmVjb3JkIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc3RhcnQoKVxyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7XHJcbiAgICAgIHZpZGVvOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcclxuICAgICAgICAvLyDpnIDopoHmm7Tlpb3nmoTmtY/op4jlmajmlK/mjIFcclxuICAgICAgICAvLyBjb25zdCBtaW1lID0gTWVkaWFSZWNvcmRlci5pc1R5cGVTdXBwb3J0ZWQoJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknKVxyXG4gICAgICAgIC8vICAgPyAndmlkZW8vd2VibTsgY29kZWNzPXZwOSdcclxuICAgICAgICAvLyAgIDogJ3ZpZGVvL3dlYm0nXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCB7XHJcbiAgICAgICAgICAvLyBtaW1lVHlwZTogbWltZSxcclxuICAgICAgICAgIG1pbWVUeXBlOiAndmlkZW8vd2VibScsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGV0IGNodW5rcyA9IFtdXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgY2h1bmtzLnB1c2goZS5kYXRhKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdzdG9wJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHtcclxuICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICAgICAgICBzdWdnZXN0ZWROYW1lOiAn6KeG6aKR5b2V5Yi2Lm1wNCcsXHJcbiAgICAgICAgICAgICAgdHlwZXM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmlofku7bnsbvlnosnLFxyXG4gICAgICAgICAgICAgICAgICBhY2NlcHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAndmlkZW8vbXA0JzogWycubXA0J10sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRydWVcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGF3YWl0IHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIob3B0cyk7IC8vIOaJk+W8gOS/neWtmOaWh+S7tuWvueivneahhlxyXG4gICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGhhbmRsZS5jcmVhdGVXcml0YWJsZSgpOyAvLyDliJvlu7rlj6/lhpnlhaXnmoTmlofku7blr7nosaFcclxuICAgICAgICAgICAgLy8g5YaZ5YWl6KeG6aKR5YaF5a65XHJcbiAgICAgICAgICAgIHdyaXRhYmxlLndyaXRlKGJsb2IpO1xyXG4gICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpO1xyXG4gICAgICAgICAgICBZSi5HbG9iYWwuU2NyZWVuUmVjb3JkLnNjcmVlblJlY29yZCA9IG51bGxcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygn5paH5Lu25L+d5a2Y5aSx6LSlOicsIGVycm9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBsZXQgYmxvYiA9IG5ldyBCbG9iKGNodW5rcywge1xyXG4gICAgICAgICAgLy8gICB0eXBlOiBjaHVua3NbMF0udHlwZSxcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAvLyBsZXQgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxyXG5cclxuICAgICAgICAgIC8vIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgICAgICAvLyBhLmhyZWYgPSB1cmxcclxuICAgICAgICAgIC8vIGEuZG93bmxvYWQgPSAndmlkZW8ud2VibSdcclxuICAgICAgICAgIC8vIGEuY2xpY2soKVxyXG4gICAgICAgICAgLy8gdGhpcy5yZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgLy8gWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBudWxsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLy8g5b+F6aG75omL5Yqo5ZCv5YqoXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KClcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKCflj5bmtojlvZXlsY8nKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhlKVxyXG4gICAgICAgIFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkID0gbnVsbFxyXG4gICAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnRTY3JlZW5SZWNvcmQoKSB7XHJcbiAgaWYgKFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkKSB7XHJcbiAgICByZXR1cm4gJ+W9leWxj+S7u+WKoei/m+ihjOS4rSdcclxuICB9IGVsc2Uge1xyXG4gICAgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBuZXcgU2NyZWVuUmVjb3JkKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0b3BTY3JlZW5SZWNvcmQoKSB7XHJcbiAgaWYgKFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQgJiYgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgJiYgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQpIHtcclxuICAgIFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkLm1lZGlhUmVjb3JkZXIuc3RvcCgpXHJcbiAgICBZSi5HbG9iYWwuU2NyZWVuUmVjb3JkLnNjcmVlblJlY29yZCA9IG51bGxcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IHN0YXJ0U2NyZWVuUmVjb3JkLCBzdG9wU2NyZWVuUmVjb3JkIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/ScreenRecord/index.js\n"); - -/***/ }), - -/***/ "./src/Global/ScreenShot/index.js": -/*!****************************************!*\ - !*** ./src/Global/ScreenShot/index.js ***! - \****************************************/ -/*! exports provided: ScreenShot, ScreenShotHD */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScreenShot\", function() { return ScreenShot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScreenShotHD\", function() { return ScreenShotHD; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Obj/Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _MapPrint__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../MapPrint */ \"./src/Global/MapPrint/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n// 生成快照\nvar convertToImage = function convertToImage(container) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // 设置放大倍数\n var scale = window.devicePixelRatio;\n\n // 传入节点原始宽高\n var width = container.offsetWidth;\n var height = container.offsetHeight;\n\n // html2canvas配置项\n var ops = _objectSpread({\n scale: scale,\n //比例,越大分辨率越高,图片越小\n width: width,\n height: height,\n async: false,\n x: 0,\n y: 0,\n backgroundColor: 'rgb(20,47,65)',\n imageTimeout: 0,\n useCORS: true,\n //允许跨域\n allowTaint: false,\n //允许跨域数据污染'被污染'的canvas\n tainttest: true,\n foreignObjectRendering: true\n }, options);\n return html2canvas(container, ops).then(function (canvas) {\n // 返回图片的二进制数据\n return canvas.toDataURL(\"image/png\");\n });\n};\nfunction ScreenShot(_x) {\n return _ScreenShot.apply(this, arguments);\n}\nfunction _ScreenShot() {\n _ScreenShot = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(sdk) {\n var cd,\n imgBlobData,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n cd = _args.length > 1 && _args[1] !== undefined ? _args[1] : function () {};\n // const imgBlobData = await convertToImage(sdk.viewer.canvas);\n imgBlobData = sdk.viewer.canvas.toDataURL();\n cd && cd(imgBlobData);\n // try {\n // const imgBlobData = await convertToImage(sdk.viewer.canvas);\n // let arr = imgBlobData.split(','), mime = arr[0].match(/:(.*?);/)[1],\n // bstr = atob(arr[1]), i = bstr.length, u8arr = new Uint8Array(i);\n // while (i--) {\n // u8arr[i] = bstr.charCodeAt(i);\n // }\n\n // let blob = new Blob([u8arr], { type: mime });\n // const opts = {\n // suggestedName: '截图.png',\n // types: [\n // {\n // description: '文件类型',\n // accept: {\n // 'image/png': ['.png'],\n // 'image/jpg': ['.jpg']\n // }\n // }\n // ],\n // excludeAcceptAllOption: true\n // };\n\n // const handle = await window.showSaveFilePicker(opts); // 打开保存文件对话框\n // const writable = await handle.createWritable(); // 创建可写入的文件对象\n // // 写入视频内容\n // writable.write(blob);\n // await writable.close();\n // YJ.Global.ScreenRecord.screenRecord = null\n // } catch (error) {\n // console.info('文件保存失败:', error);\n // }\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _ScreenShot.apply(this, arguments);\n}\nvar _DialogObject;\nvar startScreenShotObject;\nfunction ScreenShotHD(_x2) {\n return _ScreenShotHD.apply(this, arguments);\n}\nfunction _ScreenShotHD() {\n _ScreenShotHD = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee4(sdk) {\n var confirm,\n params,\n cd,\n enableTranslate,\n enableTilt,\n enableLook,\n scale,\n level,\n progressInputElm,\n progressBarElm,\n rangeNodeActive,\n rangeNodeActiveText,\n tools,\n centerResult,\n height,\n centerResult84,\n scaleData,\n i,\n startScreenShot,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n confirm = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;\n params = _args4.length > 2 ? _args4[2] : undefined;\n cd = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : function () {};\n if (sdk) {\n _context4.next = 5;\n break;\n }\n return _context4.abrupt(\"return\");\n case 5:\n if (confirm) {\n _context4.next = 8;\n break;\n }\n if (startScreenShotObject) {\n startScreenShotObject.desist();\n startScreenShotObject = null;\n }\n return _context4.abrupt(\"return\");\n case 8:\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_9__[\"off\"])(sdk);\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_10__[\"off\"])(sdk);\n if (_DialogObject) {\n _DialogObject.close();\n _DialogObject = null;\n }\n enableTranslate = sdk.viewer.scene.screenSpaceCameraController.enableTranslate;\n enableTilt = sdk.viewer.scene.screenSpaceCameraController.enableTilt;\n enableLook = sdk.viewer.scene.screenSpaceCameraController.enableLook;\n scale = params.scaleV * 1;\n // let startScreenShotObject\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"](); // _DialogObject = await new Dialog(sdk, {}, {\n // title: '高清出图', left: '180px', top: '100px',\n // confirmCallBack: (options) => {\n // if (startScreenShotObject) {\n // startScreenShotObject.desist()\n // startScreenShotObject = null\n // }\n // progressInputElm && (progressInputElm.style.width = '0%')\n // rangeNodeActive && (rangeNodeActive.style.left = '0%')\n // progressBarElm && (progressBarElm.style.width = '0%')\n // rangeNodeActiveText && (rangeNodeActiveText.innerHTML = '0%')\n // startScreenShotObject = new startScreenShot()\n // },\n // closeCallBack: () => {\n // sdk.viewer.scene.screenSpaceCameraController.enableTranslate = enableTranslate;\n // sdk.viewer.scene.screenSpaceCameraController.enableTilt = enableTilt;\n // sdk.viewer.scene.screenSpaceCameraController.enableLook = enableLook;\n // sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'auto'\n // if (startScreenShotObject) {\n // startScreenShotObject.desist()\n // startScreenShotObject = null\n // }\n // _DialogObject = undefined\n // }\n // })\n // _DialogObject._element.body.className = _DialogObject._element.body.className + ' screenShotHD'\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = `\n // \n //
\n //
\n //
\n // 当前窗口长宽:${sdk.viewer.canvas.width}*${sdk.viewer.canvas.height}像素\n //
\n //
\n //
\n //
\n // 图片大小\n //
\n // 倍窗口\n //
\n //
\n //
\n //
\n // 输出图片长宽:${sdk.viewer.canvas.width * scale}*${sdk.viewer.canvas.height * scale}像素\n //
\n //
\n //
\n //
\n // 输出进度\n //
\n //
\n //
\n //
\n //
\n //
\n //
\n // 0%\n // 100%\n //
0%
\n //
\n // \n //
\n //
\n //
\n //
\n // \n // `\n // _DialogObject.contentAppChild(contentElm)\n sdk.viewer.scene.screenSpaceCameraController.enableTranslate = false;\n sdk.viewer.scene.screenSpaceCameraController.enableTilt = false;\n sdk.viewer.scene.screenSpaceCameraController.enableLook = false;\n sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'none';\n centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / 2));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.position;\n }\n }\n height = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n centerResult84 = tools.cartesian3Towgs84(centerResult, sdk.viewer);\n sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(centerResult84.lng, centerResult84.lat, height),\n orientation: {\n heading: 0,\n pitch: Cesium.Math.toRadians(-90),\n roll: 0\n },\n duration: 1\n });\n scaleData = [];\n for (i = 1; i <= 10; i++) {\n scaleData.push({\n name: i,\n value: i\n });\n }\n // progressInputElm = document.getElementsByClassName('progress-input')[0]\n // progressBarElm = document.getElementsByClassName('range-process')[0]\n // rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0]\n // rangeNodeActiveText = contentElm.getElementsByClassName('range-node-active-text')[0]\n // let scaleDataLegpObject = legp(_DialogObject._element.content.getElementsByClassName('scale-box')[0], \".scale\")\n // if (scaleDataLegpObject) {\n // scaleDataLegpObject.legp_search(scaleData)\n // let scaleDataLegpElm = _DialogObject._element.content.getElementsByClassName('scale')[0].getElementsByTagName('input')[0]\n // scale = scaleData[0].value\n // scaleDataLegpObject.legp_searchActive(scaleData[0].value)\n // scaleDataLegpElm.value = scaleData[0].value\n // scaleDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < scaleData.length; i++) {\n // if (scaleData[i].value == scaleDataLegpElm.value) {\n // scale = scaleData[i].value\n // _DialogObject._element.content.getElementsByClassName('output-width')[0].innerHTML = sdk.viewer.canvas.width * scale\n // _DialogObject._element.content.getElementsByClassName('output-height')[0].innerHTML = sdk.viewer.canvas.height * scale\n // break\n // }\n // }\n // })\n // }\n startScreenShot = /*#__PURE__*/function () {\n function startScreenShot() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, startScreenShot);\n this.state = false;\n this.start();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(startScreenShot, [{\n key: \"start\",\n value: function start() {\n if (sdk.viewer.scene.imageryLayers._layers.length <= 1) {\n this.error = '未加载底图!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: this.error\n });\n console.warn(this.error);\n return;\n }\n var haveBaseMap = false;\n for (var _i = 0; _i < sdk.viewer.scene.imageryLayers._layers.length; _i++) {\n var layer = sdk.viewer.scene.imageryLayers._layers[_i];\n if (layer && layer.show && (!layer.notes || layer.notes !== 'default-base-map')) {\n haveBaseMap = true;\n }\n }\n if (!haveBaseMap) {\n this.error = '未加载底图!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: this.error\n });\n console.warn(this.error);\n return;\n }\n var scaleZoom = 0;\n this.state = true;\n var _this = this;\n computeLayers(1);\n function computeLayers(s) {\n var num = s * 2;\n if (num <= scale) {\n scaleZoom++;\n computeLayers(num);\n }\n }\n scaleZoom = scaleZoom + 1;\n var centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.width / 2, sdk.viewer.canvas.height / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.position;\n }\n function altitudeToZoom(altitude) {\n var A = 40487.57;\n var B = 0.00007096758;\n var C = 91610.74;\n var D = -40467.74;\n return Math.round(D + (A - D) / (1 + Math.pow(altitude / C, B)));\n }\n var height = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n var zoom = altitudeToZoom(height) + 1;\n var rectangle = sdk.viewer.camera.computeViewRectangle();\n // if (height > 9000000) {\n // height = 9000000\n // }\n // let curRectangle = new Cesium.Rectangle(Cesium.Math.toRadians(centerResult84.lng - (height / stepX)), Cesium.Math.toRadians(centerResult84.lat - (height / stepY)), Cesium.Math.toRadians(centerResult84.lng + (height / stepX)), Cesium.Math.toRadians(centerResult84.lat + (height / stepY)))\n // for (let i = 1; i < sdk.viewer.scene.imageryLayers._layers.length; i++) {\n // let layer = sdk.viewer.scene.imageryLayers._layers[i]\n // createCanvas(layer)\n // }\n var total;\n var totalCount = 0;\n var progress = {};\n var index = 0;\n var layerLength = 0;\n var countIndex = 0;\n for (var _i2 = 0; _i2 < sdk.viewer.scene.imageryLayers._layers.length; _i2++) {\n var _layer = sdk.viewer.scene.imageryLayers._layers[_i2];\n if (_layer && _layer.show && _layer.imageryProvider && _layer.imageryProvider.url && Cesium.Rectangle.intersection(rectangle, _layer.imageryProvider.rectangle) && (!_layer.notes || _layer.notes !== 'default-base-map')) {\n layerLength++;\n }\n }\n var itemTotalProgress = 100 / layerLength;\n var flag = false;\n createCanvas(index);\n function createCanvas(i, totalCanvas) {\n var layer = sdk.viewer.scene.imageryLayers._layers[i];\n if (!layer) {\n if (!flag) {\n _this.error = '当前范围内未找到底图数据!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: _this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: _this.error\n });\n console.warn(_this.error);\n }\n return;\n }\n if (!layer.show || !layer.imageryProvider || !layer.imageryProvider.url || !Cesium.Rectangle.intersection(rectangle, layer.imageryProvider.rectangle) || layer.notes && layer.notes === 'default-base-map') {\n var m = i += 1;\n createCanvas(m, totalCanvas);\n return;\n }\n flag = true;\n countIndex++;\n progress[i] = {\n value: 0\n };\n var itemTotalCount = 0;\n var targetLevel;\n var imageryProvider = layer.imageryProvider;\n if (level || level === 0) {\n targetLevel = level;\n } else {\n targetLevel = zoom + scaleZoom - 1;\n if (targetLevel > imageryProvider.maximumLevel) {\n targetLevel = imageryProvider.maximumLevel;\n }\n if (targetLevel < imageryProvider.minimumLevel) {\n targetLevel = imageryProvider.minimumLevel;\n }\n }\n function readyPromise() {\n var MinTile = imageryProvider.tilingScheme.positionToTileXY(Cesium.Rectangle.northwest(rectangle), targetLevel);\n var MaxTile = imageryProvider.tilingScheme.positionToTileXY(Cesium.Rectangle.southeast(rectangle), targetLevel);\n if (!MinTile || !MaxTile) {\n var error = '超出地球范围!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: error\n });\n console.warn(error);\n return;\n }\n var OfXTilesAtLevel = imageryProvider.tilingScheme.getNumberOfXTilesAtLevel(targetLevel);\n var OfYTilesAtLevel = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(targetLevel);\n var MinTileX = MinTile.x;\n var MinTileY = MinTile.y;\n var MaxTileX = MaxTile.x;\n var MaxTileY = MaxTile.y;\n\n // if (MinTileX > MaxTileX) {\n // MinTileX = MinTileX - OfXTilesAtLevel\n // }\n\n var imgWidth = 256;\n var imgHeight = 256;\n var itemTotal = (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1);\n // var canvas = new fabric.Canvas();\n var canvas = document.createElement('canvas');\n canvas.width = (MaxTileX - MinTileX + 1) * imgWidth;\n canvas.height = (MaxTileY - MinTileY + 1) * imgHeight;\n var ctx = canvas.getContext('2d');\n var maxRectangle = imageryProvider.tilingScheme.tileXYToRectangle(MaxTileX, MaxTileY, targetLevel);\n var minRectangle = imageryProvider.tilingScheme.tileXYToRectangle(MinTileX, MinTileY, targetLevel);\n var canvasNativeRectangle = new Cesium.Rectangle(minRectangle.west, maxRectangle.south, maxRectangle.east, minRectangle.north);\n // sdk.viewer.entities.add({\n // rectangle: {\n // coordinates: canvasNativeRectangle,\n // material: Cesium.Color.YELLOW.withAlpha(0.2),\n // },\n // });\n // sdk.viewer.entities.add({\n // rectangle: {\n // coordinates: rectangle,\n // material: Cesium.Color.BLACK.withAlpha(0.2),\n // },\n // });\n var nativeRectangle = rectangle;\n var x1 = nativeRectangle.west - canvasNativeRectangle.west;\n var x2 = canvasNativeRectangle.east - nativeRectangle.east;\n var y1 = canvasNativeRectangle.north - nativeRectangle.north;\n var y2 = nativeRectangle.south - canvasNativeRectangle.south;\n var ratioX1 = x1 / (canvasNativeRectangle.east - canvasNativeRectangle.west);\n if (ratioX1 === Infinity) {\n ratioX1 = 0;\n }\n var ratioX2 = x2 / (canvasNativeRectangle.east - canvasNativeRectangle.west);\n if (ratioX2 === Infinity) {\n ratioX2 = 0;\n }\n var ratioY1 = y1 / (canvasNativeRectangle.north - canvasNativeRectangle.south);\n if (ratioY1 === Infinity) {\n ratioY1 = 0;\n }\n var ratioY2 = y2 / (canvasNativeRectangle.north - canvasNativeRectangle.south);\n if (ratioY2 === Infinity) {\n ratioY2 = 0;\n }\n var differenceX1 = canvas.width * ratioX1;\n var differenceY1 = canvas.height * ratioY1;\n var differenceX2 = canvas.width * ratioX2;\n var differenceY2 = canvas.height * ratioY2;\n canvas.width = canvas.width - differenceX1 - differenceX2;\n canvas.height = canvas.height - differenceY1 - differenceY2;\n if (canvas.width == 0) {\n canvas.width = 1;\n }\n if (canvas.height == 0) {\n canvas.height = 1;\n }\n var y = MaxTileY;\n var x = MaxTileX;\n var tileArray = [];\n for (var _y = MaxTileY; _y >= MinTileY; _y--) {\n for (var _x3 = MaxTileX; _x3 >= MinTileX; _x3--) {\n tileArray.push({\n x: _x3,\n y: _y\n });\n }\n }\n var speed = 30;\n var obj = {\n count: 0\n };\n var count = 0;\n var times = -1;\n var obj2 = {\n count: 0\n };\n var count2 = 0;\n Object.defineProperty(obj2, 'count', {\n get: function get() {\n return count2;\n },\n set: function set(newValue) {\n count2 = newValue;\n if (count2 >= speed) {\n traversal10();\n }\n }\n });\n Object.defineProperty(obj, 'count', {\n get: function get() {\n return count;\n },\n set: function set(newValue) {\n count = newValue;\n progress[i].value = itemTotalCount / itemTotal * itemTotalProgress;\n var totalProgress = 0;\n for (var key in progress) {\n totalProgress = totalProgress + progress[key].value;\n }\n // progressBarElm.style.width = totalProgress * 0.99 + '%';\n // rangeNodeActive.style.left = totalProgress * 0.99 + '%';\n // rangeNodeActiveText.innerHTML = Math.floor(totalProgress * 0.99 * 100) / 100 + '%';\n cd({\n width: totalProgress * 0.99,\n left: totalProgress * 0.99,\n value: Math.floor(totalProgress * 0.99 * 100) / 100\n });\n if (count === (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1)) {\n var _ctx = canvas.getContext('2d');\n var cloneCanvas = canvas.cloneNode(true);\n var cloneCtx = cloneCanvas.getContext('2d');\n var imageData = _ctx.getImageData(0, 0, canvas.width, canvas.height);\n cloneCtx.putImageData(imageData, 0, 0);\n canvas.width = sdk.viewer.canvas.width * scale;\n canvas.height = sdk.viewer.canvas.height * scale;\n _ctx.drawImage(cloneCanvas, 0, 0, canvas.width, canvas.height);\n if (totalCanvas) {\n var _ctx2 = totalCanvas.getContext('2d');\n _ctx2.drawImage(canvas, 0, 0);\n if (countIndex != layerLength) {\n var _m = i += 1;\n createCanvas(_m, totalCanvas);\n return;\n } else {\n var imgBlobData = totalCanvas.toDataURL('image/jpeg', 0.95);\n var tempCanvas = document.createElement('canvas');\n var tempCtx = tempCanvas.getContext('2d');\n tempCanvas.width = totalCanvas.width / scale;\n tempCanvas.height = totalCanvas.height / scale;\n tempCtx.drawImage(totalCanvas, 0, 0, tempCanvas.width, tempCanvas.height);\n new _MapPrint__WEBPACK_IMPORTED_MODULE_8__[\"default\"](sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData, params.modify);\n // progressBarElm.style.width = '100%';\n // rangeNodeActive.style.left = '100%';\n // rangeNodeActiveText.innerHTML = '100%';\n cd({\n value: 100\n });\n _this.state = false;\n }\n } else {\n if (countIndex != layerLength) {\n var _m2 = i += 1;\n createCanvas(_m2, canvas);\n return;\n } else {\n var _imgBlobData = canvas.toDataURL('image/jpeg', 0.95);\n var _tempCanvas = document.createElement('canvas');\n var _tempCtx = _tempCanvas.getContext('2d');\n _tempCanvas.width = canvas.width / scale;\n _tempCanvas.height = canvas.height / scale;\n _tempCtx.drawImage(canvas, 0, 0, _tempCanvas.width, _tempCanvas.height);\n // canvas.width = canvas.width / scale\n // canvas.height = canvas.height / scale\n new _MapPrint__WEBPACK_IMPORTED_MODULE_8__[\"default\"](sdk, _tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, _imgBlobData, params.modify);\n // progressBarElm.style.width = '100%';\n // rangeNodeActive.style.left = '100%';\n // rangeNodeActiveText.innerHTML = '100%';\n cd({\n value: 100\n });\n _this.state = false;\n }\n }\n }\n }\n });\n if (imageryProvider._readyError) {\n obj.count = (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1);\n } else {\n traversal10();\n }\n function traversal10() {\n obj2.count = 0;\n count2 = 0;\n times++;\n for (var _i3 = times * speed; _i3 < (times + 1) * speed; _i3++) {\n if (_i3 >= tileArray.length) {\n return;\n }\n traversal(_i3);\n }\n }\n function traversal(i) {\n if (!_this.state) {\n return;\n }\n try {\n var _x4 = tileArray[i].x;\n if (_x4 < 0) {\n _x4 = _x4 + OfXTilesAtLevel;\n }\n var img = new Image();\n img.setAttribute('crossOrigin', 'anonymous');\n img.onload = /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n ctx.drawImage(img, (tileArray[i].x - MinTileX) * imgWidth - parseFloat(differenceX1.toFixed(0)), (tileArray[i].y - MinTileY) * imgHeight - parseFloat(differenceY1.toFixed(0)), imgWidth, imgHeight);\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n img.onerror = function () {\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n };\n var url;\n if (imageryProvider.url.indexOf('{x}') !== -1 && imageryProvider.url.indexOf('{y}') !== -1 && imageryProvider.url.indexOf('{z}') !== -1) {\n url = imageryProvider.url.replace(/\\{x\\}/g, _x4).replace(/\\{y\\}/g, tileArray[i].y).replace(/\\{z\\}/g, targetLevel);\n } else if (imageryProvider.url.indexOf('{TileMatrix}') !== -1 && imageryProvider.url.indexOf('{TileRow}') !== -1 && imageryProvider.url.indexOf('{TileCol}') !== -1) {\n url = imageryProvider.url.replace(/\\{TileCol\\}/g, _x4).replace(/\\{TileRow\\}/g, tileArray[i].y).replace(/\\{TileMatrix\\}/g, targetLevel);\n } else if (imageryProvider._layer && imageryProvider._style && imageryProvider._tileMatrixSetID && imageryProvider._format) {\n url = imageryProvider.url + \"&tilematrix=\".concat(targetLevel, \"&layer=\").concat(imageryProvider._layer, \"&style=\").concat(imageryProvider._style, \"&tilerow=\").concat(y, \"&tilecol=\").concat(_x4, \"&tilematrixset=\").concat(imageryProvider._tileMatrixSetID, \"&format=\").concat(imageryProvider._format);\n } else {\n url = imageryProvider.url + \"tile/\".concat(targetLevel, \"/\").concat(tileArray[i].y, \"/\").concat(_x4);\n }\n img.src = url;\n } catch (error) {\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n }\n }\n function traversal2() {\n if (!_this.state) {\n return;\n }\n try {\n var img = new Image();\n img.setAttribute('crossOrigin', 'anonymous');\n img.onload = /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n ctx.drawImage(img, (x - MinTileX) * imgWidth - parseFloat(differenceX1.toFixed(0)), (y - MinTileY) * imgHeight - parseFloat(differenceY1.toFixed(0)), imgWidth, imgHeight);\n itemTotalCount++;\n obj.count++;\n if (!(x > MinTileX)) {\n _context3.next = 7;\n break;\n }\n x--;\n _context3.next = 13;\n break;\n case 7:\n if (!(y > MinTileY)) {\n _context3.next = 12;\n break;\n }\n y--;\n x = MaxTileX;\n _context3.next = 13;\n break;\n case 12:\n return _context3.abrupt(\"return\");\n case 13:\n traversal();\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n var url;\n if (imageryProvider.url.indexOf('{x}') !== -1 && imageryProvider.url.indexOf('{y}') !== -1 && imageryProvider.url.indexOf('{z}') !== -1) {\n url = imageryProvider.url.replace(/\\{x\\}/g, x).replace(/\\{y\\}/g, y).replace(/\\{z\\}/g, targetLevel);\n } else if (imageryProvider.url.indexOf('{TileMatrix}') !== -1 && imageryProvider.url.indexOf('{TileRow}') !== -1 && imageryProvider.url.indexOf('{TileCol}') !== -1) {\n url = imageryProvider.url.replace(/\\{TileCol\\}/g, x).replace(/\\{TileRow\\}/g, y).replace(/\\{TileMatrix\\}/g, targetLevel);\n } else if (imageryProvider._layer && imageryProvider._style && imageryProvider._tileMatrixSetID && imageryProvider._format) {\n url = imageryProvider.url + \"&tilematrix=\".concat(targetLevel, \"&layer=\").concat(imageryProvider._layer, \"&style=\").concat(imageryProvider._style, \"&tilerow=\").concat(y, \"&tilecol=\").concat(x, \"&tilematrixset=\").concat(imageryProvider._tileMatrixSetID, \"&format=\").concat(imageryProvider._format);\n } else {\n url = imageryProvider.url + \"tile/\".concat(targetLevel, \"/\").concat(y, \"/\").concat(x);\n }\n img.src = url;\n } catch (error) {\n itemTotalCount++;\n obj.count++;\n if (x >= MinTileX) {\n x--;\n } else {\n if (y >= MinTileY) {\n y--;\n x = MaxTileX;\n } else {\n return;\n }\n }\n traversal();\n }\n }\n }\n if (imageryProvider._readyError) {\n progress[i] = {\n value: itemTotalProgress\n };\n readyPromise();\n return;\n }\n imageryProvider.readyPromise.then(function () {\n readyPromise();\n }).catch(function (e) {\n imageryProvider._readyError = true;\n progress[i] = {\n value: itemTotalProgress\n };\n readyPromise();\n });\n }\n }\n }, {\n key: \"desist\",\n value: function desist() {\n this.state = false;\n }\n }]);\n }();\n startScreenShotObject = new startScreenShot();\n case 29:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _ScreenShotHD.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NjcmVlblNob3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NjcmVlblNob3QvaW5kZXguanM/ODQwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vT2JqL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL09iai9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IE1hcFByaW50IGZyb20gJy4uL01hcFByaW50JztcclxuaW1wb3J0IHsgb2ZmIGFzIG9mZlNwbGl0U2NyZWVuIH0gZnJvbSBcIi4uL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IG9mZiBhcyBvZmZNdWx0aVZpZXdwb3J0TW9kZSB9IGZyb20gXCIuLi9NdWx0aVZpZXdwb3J0TW9kZVwiO1xyXG5cclxuLy8g55Sf5oiQ5b+r54WnXHJcbmNvbnN0IGNvbnZlcnRUb0ltYWdlID0gKGNvbnRhaW5lciwgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgLy8g6K6+572u5pS+5aSn5YCN5pWwXHJcbiAgY29uc3Qgc2NhbGUgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcclxuXHJcbiAgLy8g5Lyg5YWl6IqC54K55Y6f5aeL5a696auYXHJcbiAgY29uc3Qgd2lkdGggPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcclxuXHJcbiAgLy8gaHRtbDJjYW52YXPphY3nva7poblcclxuICBjb25zdCBvcHMgPSB7XHJcbiAgICBzY2FsZSwvL+avlOS+i++8jOi2iuWkp+WIhui+qOeOh+i2iumrmO+8jOWbvueJh+i2iuWwj1xyXG4gICAgd2lkdGgsXHJcbiAgICBoZWlnaHQsXHJcbiAgICBhc3luYzogZmFsc2UsXHJcbiAgICB4OiAwLFxyXG4gICAgeTogMCxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYigyMCw0Nyw2NSknLFxyXG4gICAgaW1hZ2VUaW1lb3V0OiAwLFxyXG4gICAgdXNlQ09SUzogdHJ1ZSwvL+WFgeiuuOi3qOWfn1xyXG4gICAgYWxsb3dUYWludDogZmFsc2UsIC8v5YWB6K646Leo5Z+f5pWw5o2u5rGh5p+TJ+iiq+axoeafkyfnmoRjYW52YXNcclxuICAgIHRhaW50dGVzdDogdHJ1ZSxcclxuICAgIGZvcmVpZ25PYmplY3RSZW5kZXJpbmc6IHRydWUsICAgLy/lnKjmtY/op4jlmajmlK/mjIHnmoTmg4XlhrXkuIvkvb/nlKhGb3JlaWduT2JqZWN05qih5byP5riy5p+T5Zu+54mHXHJcbiAgICAuLi5vcHRpb25zXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIGh0bWwyY2FudmFzKGNvbnRhaW5lciwgb3BzKS50aGVuKGNhbnZhcyA9PiB7XHJcbiAgICAvLyDov5Tlm57lm77niYfnmoTkuozov5vliLbmlbDmja5cclxuICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBTY3JlZW5TaG90KHNkaywgY2QgPSAoKSA9PiB7IH0pIHtcclxuICAvLyBjb25zdCBpbWdCbG9iRGF0YSA9IGF3YWl0IGNvbnZlcnRUb0ltYWdlKHNkay52aWV3ZXIuY2FudmFzKTtcclxuICBjb25zdCBpbWdCbG9iRGF0YSA9IHNkay52aWV3ZXIuY2FudmFzLnRvRGF0YVVSTCgpXHJcbiAgY2QgJiYgY2QoaW1nQmxvYkRhdGEpXHJcbiAgLy8gdHJ5IHtcclxuICAvLyAgIGNvbnN0IGltZ0Jsb2JEYXRhID0gYXdhaXQgY29udmVydFRvSW1hZ2Uoc2RrLnZpZXdlci5jYW52YXMpO1xyXG4gIC8vICAgbGV0IGFyciA9IGltZ0Jsb2JEYXRhLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAvLyAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgaSA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KGkpO1xyXG4gIC8vICAgd2hpbGUgKGktLSkge1xyXG4gIC8vICAgICB1OGFycltpXSA9IGJzdHIuY2hhckNvZGVBdChpKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBsZXQgYmxvYiA9IG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KTtcclxuICAvLyAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgLy8gICAgIHN1Z2dlc3RlZE5hbWU6ICfmiKrlm74ucG5nJyxcclxuICAvLyAgICAgdHlwZXM6IFtcclxuICAvLyAgICAgICB7XHJcbiAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ+aWh+S7tuexu+WeiycsXHJcbiAgLy8gICAgICAgICBhY2NlcHQ6IHtcclxuICAvLyAgICAgICAgICAgJ2ltYWdlL3BuZyc6IFsnLnBuZyddLFxyXG4gIC8vICAgICAgICAgICAnaW1hZ2UvanBnJzogWycuanBnJ11cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIF0sXHJcbiAgLy8gICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRydWVcclxuICAvLyAgIH07XHJcblxyXG4gIC8vICAgY29uc3QgaGFuZGxlID0gYXdhaXQgd2luZG93LnNob3dTYXZlRmlsZVBpY2tlcihvcHRzKTsgLy8g5omT5byA5L+d5a2Y5paH5Lu25a+56K+d5qGGXHJcbiAgLy8gICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGhhbmRsZS5jcmVhdGVXcml0YWJsZSgpOyAvLyDliJvlu7rlj6/lhpnlhaXnmoTmlofku7blr7nosaFcclxuICAvLyAgIC8vIOWGmeWFpeinhumikeWGheWuuVxyXG4gIC8vICAgd3JpdGFibGUud3JpdGUoYmxvYik7XHJcbiAgLy8gICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpO1xyXG4gIC8vICAgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBudWxsXHJcbiAgLy8gfSBjYXRjaCAoZXJyb3IpIHtcclxuICAvLyAgIGNvbnNvbGUuaW5mbygn5paH5Lu25L+d5a2Y5aSx6LSlOicsIGVycm9yKTtcclxuICAvLyB9XHJcbn1cclxuXHJcbmxldCBfRGlhbG9nT2JqZWN0XHJcbmxldCBzdGFydFNjcmVlblNob3RPYmplY3RcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIFNjcmVlblNob3RIRChzZGssIGNvbmZpcm0gPSB0cnVlLCBwYXJhbXMsIGNkID0gKCkgPT4geyB9KSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoIWNvbmZpcm0pIHtcclxuICAgIGlmIChzdGFydFNjcmVlblNob3RPYmplY3QpIHtcclxuICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0LmRlc2lzdCgpXHJcbiAgICAgIHN0YXJ0U2NyZWVuU2hvdE9iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHJldHVyblxyXG4gIH1cclxuICBvZmZTcGxpdFNjcmVlbihzZGspXHJcbiAgb2ZmTXVsdGlWaWV3cG9ydE1vZGUoc2RrKVxyXG4gIGlmIChfRGlhbG9nT2JqZWN0KSB7XHJcbiAgICBfRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgfVxyXG5cclxuICBsZXQgZW5hYmxlVHJhbnNsYXRlID0gc2RrLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlXHJcbiAgbGV0IGVuYWJsZVRpbHQgPSBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVUaWx0XHJcbiAgbGV0IGVuYWJsZUxvb2sgPSBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rXHJcblxyXG4gIGxldCBzY2FsZSA9IHBhcmFtcy5zY2FsZVYgKiAxXHJcbiAgbGV0IGxldmVsXHJcblxyXG4gIGxldCBwcm9ncmVzc0lucHV0RWxtXHJcbiAgbGV0IHByb2dyZXNzQmFyRWxtXHJcbiAgbGV0IHJhbmdlTm9kZUFjdGl2ZVxyXG4gIGxldCByYW5nZU5vZGVBY3RpdmVUZXh0XHJcbiAgLy8gbGV0IHN0YXJ0U2NyZWVuU2hvdE9iamVjdFxyXG4gIGxldCB0b29scyA9IG5ldyBUb29scygpO1xyXG4gIC8vIF9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHNkaywge30sIHtcclxuICAvLyAgIHRpdGxlOiAn6auY5riF5Ye65Zu+JywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gIC8vICAgICBpZiAoc3RhcnRTY3JlZW5TaG90T2JqZWN0KSB7XHJcbiAgLy8gICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0LmRlc2lzdCgpXHJcbiAgLy8gICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHByb2dyZXNzSW5wdXRFbG0gJiYgKHByb2dyZXNzSW5wdXRFbG0uc3R5bGUud2lkdGggPSAnMCUnKVxyXG4gIC8vICAgICByYW5nZU5vZGVBY3RpdmUgJiYgKHJhbmdlTm9kZUFjdGl2ZS5zdHlsZS5sZWZ0ID0gJzAlJylcclxuICAvLyAgICAgcHJvZ3Jlc3NCYXJFbG0gJiYgKHByb2dyZXNzQmFyRWxtLnN0eWxlLndpZHRoID0gJzAlJylcclxuICAvLyAgICAgcmFuZ2VOb2RlQWN0aXZlVGV4dCAmJiAocmFuZ2VOb2RlQWN0aXZlVGV4dC5pbm5lckhUTUwgPSAnMCUnKVxyXG4gIC8vICAgICBzdGFydFNjcmVlblNob3RPYmplY3QgPSBuZXcgc3RhcnRTY3JlZW5TaG90KClcclxuICAvLyAgIH0sXHJcbiAgLy8gICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgLy8gICAgIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGVuYWJsZVRyYW5zbGF0ZTtcclxuICAvLyAgICAgc2RrLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVGlsdCA9IGVuYWJsZVRpbHQ7XHJcbiAgLy8gICAgIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZUxvb2sgPSBlbmFibGVMb29rO1xyXG4gIC8vICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NvbXBhc3MnKVswXS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nXHJcbiAgLy8gICAgIGlmIChzdGFydFNjcmVlblNob3RPYmplY3QpIHtcclxuICAvLyAgICAgICBzdGFydFNjcmVlblNob3RPYmplY3QuZGVzaXN0KClcclxuICAvLyAgICAgICBzdGFydFNjcmVlblNob3RPYmplY3QgPSBudWxsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgX0RpYWxvZ09iamVjdCA9IHVuZGVmaW5lZFxyXG4gIC8vICAgfVxyXG4gIC8vIH0pXHJcbiAgLy8gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHNjcmVlblNob3RIRCdcclxuICAvLyBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYFxyXG4gIC8vIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgLy8gPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgLy8gICAgICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4+5b2T5YmN56qX5Y+j6ZW/5a6977yaPHNwYW4gY2xhc3M9XCJpbnB1dC13aWR0aFwiPiR7c2RrLnZpZXdlci5jYW52YXMud2lkdGh9PC9zcGFuPio8c3BhbiBjbGFzcz1cImlucHV0LWhlaWdodFwiPiR7c2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0fTwvc3Bhbj7lg4/ntKA8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgc2NhbGUtYm94XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWbvueJh+Wkp+Wwjzwvc3Bhbj5cclxuICAvLyAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dCBpbnB1dC1zZWxlY3Qgc2NhbGVcIj48L2Rpdj5cclxuICAvLyAgICAgICAgICAgICAgIDxzcGFuPuWAjeeql+WPozwvc3Bhbj5cclxuICAvLyAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4+6L6T5Ye65Zu+54mH6ZW/5a6977yaPHNwYW4gY2xhc3M9XCJvdXRwdXQtd2lkdGhcIj4ke3Nkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGV9PC9zcGFuPio8c3BhbiBjbGFzcz1cIm91dHB1dC1oZWlnaHRcIj4ke3Nkay52aWV3ZXIuY2FudmFzLmhlaWdodCAqIHNjYWxlfTwvc3Bhbj7lg4/ntKA8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBtYXJnaW4tYm90dG9tOiAyMHB4O1wiPlxyXG4gIC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6T5Ye66L+b5bqmPC9zcGFuPlxyXG4gIC8vICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWJveFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1iZ1wiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtcHJvY2Vzcy1ib3hcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1wcm9jZXNzXCI+PC9kaXY+XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1ub2RlLWJveFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJhbmdlLW5vZGUtdGV4dFwiPjAlPC9zcGFuPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJhbmdlLW5vZGUtdGV4dFwiPjEwMCU8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1ub2RlLWFjdGl2ZVwiPjxzcGFuIGNsYXNzPVwicmFuZ2Utbm9kZS1hY3RpdmUtdGV4dFwiPjAlPC9zcGFuPjwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInByb2dyZXNzLWlucHV0XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTAwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPC9kaXY+XHJcbiAgLy8gICA8L2Rpdj5cclxuICAvLyAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgLy8gYFxyXG4gIC8vIF9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGZhbHNlO1xyXG4gIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBmYWxzZTtcclxuICBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gZmFsc2U7XHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF0uc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xyXG5cclxuXHJcbiAgbGV0IGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMixcclxuICAgICAgc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0IC8gMixcclxuICAgICksXHJcbiAgKVxyXG4gIGlmICghY2VudGVyUmVzdWx0KSB7XHJcbiAgICBjZW50ZXJSZXN1bHQgPSBzZGsudmlld2VyLmNhbWVyYS5waWNrRWxsaXBzb2lkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGggLyAyLFxyXG4gICAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodCAvICgyIC0gKCg5MCArIHNkay52aWV3ZXIuY2FtZXJhLnBpdGNoIC8gKENlc2l1bS5NYXRoLlBJIC8gMTgwKSkgLyAxMTApKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICAgIGlmICghY2VudGVyUmVzdWx0KSB7XHJcbiAgICAgIGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uXHJcbiAgICB9XHJcbiAgfVxyXG4gIGxldCBoZWlnaHQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlcikuYWx0XHJcbiAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2VudGVyUmVzdWx0LCBzZGsudmlld2VyKVxyXG4gIHNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXJSZXN1bHQ4NC5sbmcsIGNlbnRlclJlc3VsdDg0LmxhdCwgaGVpZ2h0KSxcclxuICAgIG9yaWVudGF0aW9uOiB7IGhlYWRpbmc6IDAsIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwKSwgcm9sbDogMCB9LFxyXG4gICAgZHVyYXRpb246IDEsXHJcbiAgfSlcclxuXHJcblxyXG4gIGxldCBzY2FsZURhdGEgPSBbXVxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IDEwOyBpKyspIHtcclxuICAgIHNjYWxlRGF0YS5wdXNoKHtcclxuICAgICAgbmFtZTogaSxcclxuICAgICAgdmFsdWU6IGlcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIHByb2dyZXNzSW5wdXRFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcm9ncmVzcy1pbnB1dCcpWzBdXHJcbiAgLy8gcHJvZ3Jlc3NCYXJFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1wcm9jZXNzJylbMF1cclxuICAvLyByYW5nZU5vZGVBY3RpdmUgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmdlLW5vZGUtYWN0aXZlJylbMF1cclxuICAvLyByYW5nZU5vZGVBY3RpdmVUZXh0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1ub2RlLWFjdGl2ZS10ZXh0JylbMF1cclxuICAvLyBsZXQgc2NhbGVEYXRhTGVncE9iamVjdCA9IGxlZ3AoX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjYWxlLWJveCcpWzBdLCBcIi5zY2FsZVwiKVxyXG4gIC8vIGlmIChzY2FsZURhdGFMZWdwT2JqZWN0KSB7XHJcbiAgLy8gICBzY2FsZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHNjYWxlRGF0YSlcclxuICAvLyAgIGxldCBzY2FsZURhdGFMZWdwRWxtID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjYWxlJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAvLyAgIHNjYWxlID0gc2NhbGVEYXRhWzBdLnZhbHVlXHJcbiAgLy8gICBzY2FsZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHNjYWxlRGF0YVswXS52YWx1ZSlcclxuICAvLyAgIHNjYWxlRGF0YUxlZ3BFbG0udmFsdWUgPSBzY2FsZURhdGFbMF0udmFsdWVcclxuICAvLyAgIHNjYWxlRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NhbGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgaWYgKHNjYWxlRGF0YVtpXS52YWx1ZSA9PSBzY2FsZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgLy8gICAgICAgICBzY2FsZSA9IHNjYWxlRGF0YVtpXS52YWx1ZVxyXG4gIC8vICAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ291dHB1dC13aWR0aCcpWzBdLmlubmVySFRNTCA9IHNkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGVcclxuICAvLyAgICAgICAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvdXRwdXQtaGVpZ2h0JylbMF0uaW5uZXJIVE1MID0gc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0ICogc2NhbGVcclxuICAvLyAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcblxyXG5cclxuICBjbGFzcyBzdGFydFNjcmVlblNob3Qge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgICB0aGlzLnN0YXJ0KClcclxuICAgIH1cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoIDw9IDEpIHtcclxuICAgICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veW6leWbvu+8gSdcclxuICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2U6IHRoaXMuZXJyb3IsXHJcbiAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgLy8gICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IHRoaXMuZXJyb3IgfSlcclxuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5lcnJvcilcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgaGF2ZUJhc2VNYXAgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuc2NlbmUuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGxheWVyID0gc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV07XHJcbiAgICAgICAgaWYgKGxheWVyICYmIGxheWVyLnNob3cgJiYgKCFsYXllci5ub3RlcyB8fCBsYXllci5ub3RlcyAhPT0gJ2RlZmF1bHQtYmFzZS1tYXAnKSkge1xyXG4gICAgICAgICAgaGF2ZUJhc2VNYXAgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaGF2ZUJhc2VNYXApIHtcclxuICAgICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veW6leWbvu+8gSdcclxuICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2U6IHRoaXMuZXJyb3IsXHJcbiAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgLy8gICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IHRoaXMuZXJyb3IgfSlcclxuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5lcnJvcilcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgc2NhbGVab29tID0gMDtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHRydWU7XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgICAgY29tcHV0ZUxheWVycygxKTtcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNvbXB1dGVMYXllcnMocykge1xyXG4gICAgICAgIGxldCBudW0gPSBzICogMjtcclxuICAgICAgICBpZiAobnVtIDw9IHNjYWxlKSB7XHJcbiAgICAgICAgICBzY2FsZVpvb20rKztcclxuICAgICAgICAgIGNvbXB1dGVMYXllcnMobnVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc2NhbGVab29tID0gc2NhbGVab29tICsgMTtcclxuICAgICAgbGV0IGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgc2RrLnZpZXdlci5jYW52YXMud2lkdGggLyAyLFxyXG4gICAgICAgICAgc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0IC8gKDIgLSAoKDkwICsgc2RrLnZpZXdlci5jYW1lcmEucGl0Y2ggLyAoQ2VzaXVtLk1hdGguUEkgLyAxODApKSAvIDExMCkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIWNlbnRlclJlc3VsdCkge1xyXG4gICAgICAgIGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGZ1bmN0aW9uIGFsdGl0dWRlVG9ab29tKGFsdGl0dWRlKSB7XHJcbiAgICAgICAgbGV0IEEgPSA0MDQ4Ny41NztcclxuICAgICAgICBsZXQgQiA9IDAuMDAwMDcwOTY3NTg7XHJcbiAgICAgICAgbGV0IEMgPSA5MTYxMC43NDtcclxuICAgICAgICBsZXQgRCA9IC00MDQ2Ny43NDtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChEICsgKEEgLSBEKSAvICgxICsgTWF0aC5wb3coYWx0aXR1ZGUgLyBDLCBCKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlcikuYWx0O1xyXG4gICAgICBsZXQgem9vbSA9IGFsdGl0dWRlVG9ab29tKGhlaWdodCkgKyAxO1xyXG5cclxuICAgICAgbGV0IHJlY3RhbmdsZSA9IHNkay52aWV3ZXIuY2FtZXJhLmNvbXB1dGVWaWV3UmVjdGFuZ2xlKCk7XHJcbiAgICAgIC8vIGlmIChoZWlnaHQgPiA5MDAwMDAwKSB7XHJcbiAgICAgIC8vICAgaGVpZ2h0ID0gOTAwMDAwMFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGxldCBjdXJSZWN0YW5nbGUgPSBuZXcgQ2VzaXVtLlJlY3RhbmdsZShDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubG5nIC0gKGhlaWdodCAvIHN0ZXBYKSksIENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sYXQgLSAoaGVpZ2h0IC8gc3RlcFkpKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGNlbnRlclJlc3VsdDg0LmxuZyArIChoZWlnaHQgLyBzdGVwWCkpLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubGF0ICsgKGhlaWdodCAvIHN0ZXBZKSkpXHJcbiAgICAgIC8vIGZvciAobGV0IGkgPSAxOyBpIDwgc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAvLyAgIGNyZWF0ZUNhbnZhcyhsYXllcilcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQgdG90YWw7XHJcbiAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcclxuICAgICAgbGV0IHByb2dyZXNzID0ge307XHJcbiAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgIGxldCBsYXllckxlbmd0aCA9IDBcclxuICAgICAgbGV0IGNvdW50SW5kZXggPSAwXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXTtcclxuICAgICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIuc2hvdyAmJiBsYXllci5pbWFnZXJ5UHJvdmlkZXIgJiYgbGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLnVybCAmJiBDZXNpdW0uUmVjdGFuZ2xlLmludGVyc2VjdGlvbihyZWN0YW5nbGUsIGxheWVyLmltYWdlcnlQcm92aWRlci5yZWN0YW5nbGUpICYmICghbGF5ZXIubm90ZXMgfHwgbGF5ZXIubm90ZXMgIT09ICdkZWZhdWx0LWJhc2UtbWFwJykpIHtcclxuICAgICAgICAgIGxheWVyTGVuZ3RoKytcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGl0ZW1Ub3RhbFByb2dyZXNzID0gMTAwIC8gbGF5ZXJMZW5ndGhcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBjcmVhdGVDYW52YXMoaW5kZXgpO1xyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVDYW52YXMoaSwgdG90YWxDYW52YXMpIHtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXTtcclxuICAgICAgICBpZiAoIWxheWVyKSB7XHJcbiAgICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgICAgX3RoaXMuZXJyb3IgPSAn5b2T5YmN6IyD5Zu05YaF5pyq5om+5Yiw5bqV5Zu+5pWw5o2u77yBJ1xyXG4gICAgICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgLy8gICBtZXNzYWdlOiBfdGhpcy5lcnJvcixcclxuICAgICAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIC8vICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IF90aGlzLmVycm9yIH0pXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihfdGhpcy5lcnJvcilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxheWVyLnNob3cgfHwgIWxheWVyLmltYWdlcnlQcm92aWRlciB8fCAhbGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLnVybCB8fCAhQ2VzaXVtLlJlY3RhbmdsZS5pbnRlcnNlY3Rpb24ocmVjdGFuZ2xlLCBsYXllci5pbWFnZXJ5UHJvdmlkZXIucmVjdGFuZ2xlKSB8fCAobGF5ZXIubm90ZXMgJiYgbGF5ZXIubm90ZXMgPT09ICdkZWZhdWx0LWJhc2UtbWFwJykpIHtcclxuICAgICAgICAgIGxldCBtID0gaSArPSAxO1xyXG4gICAgICAgICAgY3JlYXRlQ2FudmFzKG0sIHRvdGFsQ2FudmFzKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICBjb3VudEluZGV4KytcclxuICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgIHZhbHVlOiAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdGVtVG90YWxDb3VudCA9IDA7XHJcbiAgICAgICAgbGV0IHRhcmdldExldmVsXHJcbiAgICAgICAgbGV0IGltYWdlcnlQcm92aWRlciA9IGxheWVyLmltYWdlcnlQcm92aWRlcjtcclxuICAgICAgICBpZiAobGV2ZWwgfHwgbGV2ZWwgPT09IDApIHtcclxuICAgICAgICAgIHRhcmdldExldmVsID0gbGV2ZWxcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0YXJnZXRMZXZlbCA9ICh6b29tICsgc2NhbGVab29tIC0gMSlcclxuICAgICAgICAgIGlmICh0YXJnZXRMZXZlbCA+IGltYWdlcnlQcm92aWRlci5tYXhpbXVtTGV2ZWwpIHtcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWwgPSBpbWFnZXJ5UHJvdmlkZXIubWF4aW11bUxldmVsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGFyZ2V0TGV2ZWwgPCBpbWFnZXJ5UHJvdmlkZXIubWluaW11bUxldmVsKSB7XHJcbiAgICAgICAgICAgIHRhcmdldExldmVsID0gaW1hZ2VyeVByb3ZpZGVyLm1pbmltdW1MZXZlbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiByZWFkeVByb21pc2UoKSB7XHJcbiAgICAgICAgICBsZXQgTWluVGlsZSA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUucG9zaXRpb25Ub1RpbGVYWShcclxuICAgICAgICAgICAgQ2VzaXVtLlJlY3RhbmdsZS5ub3J0aHdlc3QocmVjdGFuZ2xlKSxcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBsZXQgTWF4VGlsZSA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUucG9zaXRpb25Ub1RpbGVYWShcclxuICAgICAgICAgICAgQ2VzaXVtLlJlY3RhbmdsZS5zb3V0aGVhc3QocmVjdGFuZ2xlKSxcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoIU1pblRpbGUgfHwgIU1heFRpbGUpIHtcclxuICAgICAgICAgICAgbGV0IGVycm9yID0gJ+i2heWHuuWcsOeQg+iMg+WbtO+8gSdcclxuICAgICAgICAgICAgLy8gd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgIC8vICAgbWVzc2FnZTogZXJyb3IsXHJcbiAgICAgICAgICAgIC8vICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICAvLyAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICB0b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiBlcnJvciB9KVxyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IE9mWFRpbGVzQXRMZXZlbCA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsKHRhcmdldExldmVsKVxyXG4gICAgICAgICAgbGV0IE9mWVRpbGVzQXRMZXZlbCA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKHRhcmdldExldmVsKVxyXG4gICAgICAgICAgbGV0IE1pblRpbGVYID0gTWluVGlsZS54O1xyXG4gICAgICAgICAgbGV0IE1pblRpbGVZID0gTWluVGlsZS55O1xyXG4gICAgICAgICAgbGV0IE1heFRpbGVYID0gTWF4VGlsZS54O1xyXG4gICAgICAgICAgbGV0IE1heFRpbGVZID0gTWF4VGlsZS55O1xyXG5cclxuICAgICAgICAgIC8vIGlmIChNaW5UaWxlWCA+IE1heFRpbGVYKSB7XHJcbiAgICAgICAgICAvLyAgIE1pblRpbGVYID0gTWluVGlsZVggLSBPZlhUaWxlc0F0TGV2ZWxcclxuICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICBsZXQgaW1nV2lkdGggPSAyNTY7XHJcbiAgICAgICAgICBsZXQgaW1nSGVpZ2h0ID0gMjU2O1xyXG5cclxuICAgICAgICAgIGxldCBpdGVtVG90YWwgPSAoTWF4VGlsZVggLSBNaW5UaWxlWCArIDEpICogKE1heFRpbGVZIC0gTWluVGlsZVkgKyAxKTtcclxuICAgICAgICAgIC8vIHZhciBjYW52YXMgPSBuZXcgZmFicmljLkNhbnZhcygpO1xyXG4gICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gKE1heFRpbGVYIC0gTWluVGlsZVggKyAxKSAqIGltZ1dpZHRoO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IChNYXhUaWxlWSAtIE1pblRpbGVZICsgMSkgKiBpbWdIZWlnaHQ7XHJcbiAgICAgICAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBsZXQgbWF4UmVjdGFuZ2xlID0gaW1hZ2VyeVByb3ZpZGVyLnRpbGluZ1NjaGVtZS50aWxlWFlUb1JlY3RhbmdsZShNYXhUaWxlWCwgTWF4VGlsZVksIHRhcmdldExldmVsKTtcclxuICAgICAgICAgIGxldCBtaW5SZWN0YW5nbGUgPSBpbWFnZXJ5UHJvdmlkZXIudGlsaW5nU2NoZW1lLnRpbGVYWVRvUmVjdGFuZ2xlKE1pblRpbGVYLCBNaW5UaWxlWSwgdGFyZ2V0TGV2ZWwpO1xyXG4gICAgICAgICAgbGV0IGNhbnZhc05hdGl2ZVJlY3RhbmdsZSA9IG5ldyBDZXNpdW0uUmVjdGFuZ2xlKG1pblJlY3RhbmdsZS53ZXN0LCBtYXhSZWN0YW5nbGUuc291dGgsIG1heFJlY3RhbmdsZS5lYXN0LCBtaW5SZWN0YW5nbGUubm9ydGgpO1xyXG4gICAgICAgICAgLy8gc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgLy8gICByZWN0YW5nbGU6IHtcclxuICAgICAgICAgIC8vICAgICBjb29yZGluYXRlczogY2FudmFzTmF0aXZlUmVjdGFuZ2xlLFxyXG4gICAgICAgICAgLy8gICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuWUVMTE9XLndpdGhBbHBoYSgwLjIpLFxyXG4gICAgICAgICAgLy8gICB9LFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAvLyAgIHJlY3RhbmdsZToge1xyXG4gICAgICAgICAgLy8gICAgIGNvb3JkaW5hdGVzOiByZWN0YW5nbGUsXHJcbiAgICAgICAgICAvLyAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5CTEFDSy53aXRoQWxwaGEoMC4yKSxcclxuICAgICAgICAgIC8vICAgfSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgbGV0IG5hdGl2ZVJlY3RhbmdsZSA9IHJlY3RhbmdsZTtcclxuICAgICAgICAgIGxldCB4MSA9IG5hdGl2ZVJlY3RhbmdsZS53ZXN0IC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLndlc3Q7XHJcbiAgICAgICAgICBsZXQgeDIgPSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuZWFzdCAtIG5hdGl2ZVJlY3RhbmdsZS5lYXN0O1xyXG4gICAgICAgICAgbGV0IHkxID0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLm5vcnRoIC0gbmF0aXZlUmVjdGFuZ2xlLm5vcnRoO1xyXG4gICAgICAgICAgbGV0IHkyID0gbmF0aXZlUmVjdGFuZ2xlLnNvdXRoIC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLnNvdXRoO1xyXG5cclxuICAgICAgICAgIGxldCByYXRpb1gxID0geDEgLyAoY2FudmFzTmF0aXZlUmVjdGFuZ2xlLmVhc3QgLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUud2VzdCk7XHJcbiAgICAgICAgICBpZiAocmF0aW9YMSA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmF0aW9YMSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcmF0aW9YMiA9IHgyIC8gKGNhbnZhc05hdGl2ZVJlY3RhbmdsZS5lYXN0IC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLndlc3QpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWDIgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWDIgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHJhdGlvWTEgPSB5MSAvIChjYW52YXNOYXRpdmVSZWN0YW5nbGUubm9ydGggLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuc291dGgpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWTEgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWTEgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHJhdGlvWTIgPSB5MiAvIChjYW52YXNOYXRpdmVSZWN0YW5nbGUubm9ydGggLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuc291dGgpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWTIgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWTIgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRpZmZlcmVuY2VYMSA9IGNhbnZhcy53aWR0aCAqIHJhdGlvWDE7XHJcbiAgICAgICAgICBsZXQgZGlmZmVyZW5jZVkxID0gY2FudmFzLmhlaWdodCAqIHJhdGlvWTE7XHJcbiAgICAgICAgICBsZXQgZGlmZmVyZW5jZVgyID0gY2FudmFzLndpZHRoICogcmF0aW9YMjtcclxuICAgICAgICAgIGxldCBkaWZmZXJlbmNlWTIgPSBjYW52YXMuaGVpZ2h0ICogcmF0aW9ZMjtcclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAtIGRpZmZlcmVuY2VYMSAtIGRpZmZlcmVuY2VYMjtcclxuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXMuaGVpZ2h0IC0gZGlmZmVyZW5jZVkxIC0gZGlmZmVyZW5jZVkyO1xyXG4gICAgICAgICAgaWYgKGNhbnZhcy53aWR0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDFcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjYW52YXMuaGVpZ2h0ID09IDApIHtcclxuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IDFcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgeSA9IE1heFRpbGVZO1xyXG4gICAgICAgICAgbGV0IHggPSBNYXhUaWxlWDtcclxuXHJcbiAgICAgICAgICBsZXQgdGlsZUFycmF5ID0gW11cclxuICAgICAgICAgIGZvciAobGV0IHkgPSBNYXhUaWxlWTsgeSA+PSBNaW5UaWxlWTsgeS0tKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSBNYXhUaWxlWDsgeCA+PSBNaW5UaWxlWDsgeC0tKSB7XHJcbiAgICAgICAgICAgICAgdGlsZUFycmF5LnB1c2goeyB4LCB5IH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgc3BlZWQgPSAzMFxyXG5cclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGNvdW50OiAwXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbGV0IGNvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICBsZXQgdGltZXMgPSAtMVxyXG4gICAgICAgICAgbGV0IG9iajIgPSB7XHJcbiAgICAgICAgICAgIGNvdW50OiAwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY291bnQyID0gMFxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iajIsICdjb3VudCcsIHtcclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNvdW50MjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgICBjb3VudDIgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAoY291bnQyID49IHNwZWVkKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzYWwxMCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICdjb3VudCcsIHtcclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNvdW50ID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgcHJvZ3Jlc3NbaV0udmFsdWUgPSBpdGVtVG90YWxDb3VudCAvIGl0ZW1Ub3RhbCAqIGl0ZW1Ub3RhbFByb2dyZXNzO1xyXG4gICAgICAgICAgICAgIGxldCB0b3RhbFByb2dyZXNzID0gMFxyXG4gICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0b3RhbFByb2dyZXNzID0gdG90YWxQcm9ncmVzcyArIHByb2dyZXNzW2tleV0udmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NCYXJFbG0uc3R5bGUud2lkdGggPSB0b3RhbFByb2dyZXNzICogMC45OSArICclJztcclxuICAgICAgICAgICAgICAvLyByYW5nZU5vZGVBY3RpdmUuc3R5bGUubGVmdCA9IHRvdGFsUHJvZ3Jlc3MgKiAwLjk5ICsgJyUnO1xyXG4gICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZVRleHQuaW5uZXJIVE1MID0gTWF0aC5mbG9vcih0b3RhbFByb2dyZXNzICogMC45OSAqIDEwMCkgLyAxMDAgKyAnJSc7XHJcbiAgICAgICAgICAgICAgY2QoeyB3aWR0aDogdG90YWxQcm9ncmVzcyAqIDAuOTksIGxlZnQ6IHRvdGFsUHJvZ3Jlc3MgKiAwLjk5LCB2YWx1ZTogTWF0aC5mbG9vcih0b3RhbFByb2dyZXNzICogMC45OSAqIDEwMCkgLyAxMDAgfSlcclxuICAgICAgICAgICAgICBpZiAoY291bnQgPT09IChNYXhUaWxlWCAtIE1pblRpbGVYICsgMSkgKiAoTWF4VGlsZVkgLSBNaW5UaWxlWSArIDEpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvbmVDYW52YXMgPSBjYW52YXMuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsb25lQ3R4ID0gY2xvbmVDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgIGxldCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcbiAgICAgICAgICAgICAgICBjbG9uZUN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHNkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0ICogc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGNsb25lQ2FudmFzLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsQ2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjdHggPSB0b3RhbENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjb3VudEluZGV4ICE9IGxheWVyTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBpICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FudmFzKG0sIHRvdGFsQ2FudmFzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGltZ0Jsb2JEYXRhID0gdG90YWxDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBDdHggPSB0ZW1wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcENhbnZhcy53aWR0aCA9IHRvdGFsQ2FudmFzLndpZHRoIC8gc2NhbGVcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wQ2FudmFzLmhlaWdodCA9IHRvdGFsQ2FudmFzLmhlaWdodCAvIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcEN0eC5kcmF3SW1hZ2UodG90YWxDYW52YXMsIDAsIDAsIHRlbXBDYW52YXMud2lkdGgsIHRlbXBDYW52YXMuaGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgTWFwUHJpbnQoc2RrLCB0ZW1wQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuOTUpLCByZWN0YW5nbGUsIGltZ0Jsb2JEYXRhLCBwYXJhbXMubW9kaWZ5KVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzQmFyRWxtLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZS5zdHlsZS5sZWZ0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZVRleHQuaW5uZXJIVE1MID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNkKHsgdmFsdWU6IDEwMCB9KVxyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoY291bnRJbmRleCAhPSBsYXllckxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtID0gaSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNhbnZhcyhtLCBjYW52YXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1nQmxvYkRhdGEgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBDdHggPSB0ZW1wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcENhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAvIHNjYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBDYW52YXMuaGVpZ2h0ID0gY2FudmFzLmhlaWdodCAvIHNjYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBDdHguZHJhd0ltYWdlKGNhbnZhcywgMCwgMCwgdGVtcENhbnZhcy53aWR0aCwgdGVtcENhbnZhcy5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAvIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGNhbnZhcy5oZWlnaHQgLyBzY2FsZVxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBNYXBQcmludChzZGssIHRlbXBDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSksIHJlY3RhbmdsZSwgaW1nQmxvYkRhdGEsIHBhcmFtcy5tb2RpZnkpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NCYXJFbG0uc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2VOb2RlQWN0aXZlLnN0eWxlLmxlZnQgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2VOb2RlQWN0aXZlVGV4dC5pbm5lckhUTUwgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2QoeyB2YWx1ZTogMTAwIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChpbWFnZXJ5UHJvdmlkZXIuX3JlYWR5RXJyb3IpIHtcclxuICAgICAgICAgICAgb2JqLmNvdW50ID0gKE1heFRpbGVYIC0gTWluVGlsZVggKyAxKSAqIChNYXhUaWxlWSAtIE1pblRpbGVZICsgMSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmF2ZXJzYWwxMCgpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZnVuY3Rpb24gdHJhdmVyc2FsMTAoKSB7XHJcbiAgICAgICAgICAgIG9iajIuY291bnQgPSAwXHJcbiAgICAgICAgICAgIGNvdW50MiA9IDBcclxuICAgICAgICAgICAgdGltZXMrK1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGltZXMgKiBzcGVlZDsgaSA8ICh0aW1lcyArIDEpICogc3BlZWQ7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpID49IHRpbGVBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0cmF2ZXJzYWwoaSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZ1bmN0aW9uIHRyYXZlcnNhbChpKSB7XHJcbiAgICAgICAgICAgIGlmICghX3RoaXMuc3RhdGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGxldCB4ID0gdGlsZUFycmF5W2ldLnhcclxuICAgICAgICAgICAgICBpZiAoeCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHggPSB4ICsgT2ZYVGlsZXNBdExldmVsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpO1xyXG4gICAgICAgICAgICAgIGltZy5vbmxvYWQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgKCh0aWxlQXJyYXlbaV0ueCAtIE1pblRpbGVYKSAqIGltZ1dpZHRoKSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVgxLnRvRml4ZWQoMCkpLCAoKHRpbGVBcnJheVtpXS55IC0gTWluVGlsZVkpICogaW1nSGVpZ2h0KSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVkxLnRvRml4ZWQoMCkpLCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQrKztcclxuICAgICAgICAgICAgICAgIG9iajIuY291bnQrKztcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbVRvdGFsQ291bnQrKztcclxuICAgICAgICAgICAgICAgIG9iai5jb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgb2JqMi5jb3VudCsrO1xyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIGxldCB1cmw7XHJcbiAgICAgICAgICAgICAgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3h9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3l9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3p9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce3hcXH0vZywgeCkucmVwbGFjZSgvXFx7eVxcfS9nLCB0aWxlQXJyYXlbaV0ueSkucmVwbGFjZSgvXFx7elxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVNYXRyaXh9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVSb3d9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVDb2x9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce1RpbGVDb2xcXH0vZywgeCkucmVwbGFjZSgvXFx7VGlsZVJvd1xcfS9nLCB0aWxlQXJyYXlbaV0ueSkucmVwbGFjZSgvXFx7VGlsZU1hdHJpeFxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci5fbGF5ZXIgJiYgaW1hZ2VyeVByb3ZpZGVyLl9zdHlsZSAmJiBpbWFnZXJ5UHJvdmlkZXIuX3RpbGVNYXRyaXhTZXRJRCAmJiBpbWFnZXJ5UHJvdmlkZXIuX2Zvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybCArIGAmdGlsZW1hdHJpeD0ke3RhcmdldExldmVsfSZsYXllcj0ke2ltYWdlcnlQcm92aWRlci5fbGF5ZXJ9JnN0eWxlPSR7aW1hZ2VyeVByb3ZpZGVyLl9zdHlsZX0mdGlsZXJvdz0ke3l9JnRpbGVjb2w9JHt4fSZ0aWxlbWF0cml4c2V0PSR7aW1hZ2VyeVByb3ZpZGVyLl90aWxlTWF0cml4U2V0SUR9JmZvcm1hdD0ke2ltYWdlcnlQcm92aWRlci5fZm9ybWF0fWA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybCArIGB0aWxlLyR7dGFyZ2V0TGV2ZWx9LyR7dGlsZUFycmF5W2ldLnl9LyR7eH1gO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpbWcuc3JjID0gdXJsO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgb2JqLmNvdW50Kys7XHJcbiAgICAgICAgICAgICAgb2JqMi5jb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZnVuY3Rpb24gdHJhdmVyc2FsMigpIHtcclxuICAgICAgICAgICAgaWYgKCFfdGhpcy5zdGF0ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgICAgaW1nLnNldEF0dHJpYnV0ZSgnY3Jvc3NPcmlnaW4nLCAnYW5vbnltb3VzJyk7XHJcbiAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAoKHggLSBNaW5UaWxlWCkgKiBpbWdXaWR0aCkgLSBwYXJzZUZsb2F0KGRpZmZlcmVuY2VYMS50b0ZpeGVkKDApKSwgKCh5IC0gTWluVGlsZVkpICogaW1nSGVpZ2h0KSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVkxLnRvRml4ZWQoMCkpLCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQrKztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoeCA+IE1pblRpbGVYKSB7XHJcbiAgICAgICAgICAgICAgICAgIHgtLVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh5ID4gTWluVGlsZVkpIHtcclxuICAgICAgICAgICAgICAgICAgICB5LS1cclxuICAgICAgICAgICAgICAgICAgICB4ID0gTWF4VGlsZVhcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2FsKClcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBsZXQgdXJsO1xyXG4gICAgICAgICAgICAgIGlmIChpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t4fScpICE9PSAtMSAmJiBpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t5fScpICE9PSAtMSAmJiBpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t6fScpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybC5yZXBsYWNlKC9cXHt4XFx9L2csIHgpLnJlcGxhY2UoL1xce3lcXH0vZywgeSkucmVwbGFjZSgvXFx7elxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVNYXRyaXh9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVSb3d9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVDb2x9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce1RpbGVDb2xcXH0vZywgeCkucmVwbGFjZSgvXFx7VGlsZVJvd1xcfS9nLCB5KS5yZXBsYWNlKC9cXHtUaWxlTWF0cml4XFx9L2csIHRhcmdldExldmVsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaW1hZ2VyeVByb3ZpZGVyLl9sYXllciAmJiBpbWFnZXJ5UHJvdmlkZXIuX3N0eWxlICYmIGltYWdlcnlQcm92aWRlci5fdGlsZU1hdHJpeFNldElEICYmIGltYWdlcnlQcm92aWRlci5fZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsICsgYCZ0aWxlbWF0cml4PSR7dGFyZ2V0TGV2ZWx9JmxheWVyPSR7aW1hZ2VyeVByb3ZpZGVyLl9sYXllcn0mc3R5bGU9JHtpbWFnZXJ5UHJvdmlkZXIuX3N0eWxlfSZ0aWxlcm93PSR7eX0mdGlsZWNvbD0ke3h9JnRpbGVtYXRyaXhzZXQ9JHtpbWFnZXJ5UHJvdmlkZXIuX3RpbGVNYXRyaXhTZXRJRH0mZm9ybWF0PSR7aW1hZ2VyeVByb3ZpZGVyLl9mb3JtYXR9YDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsICsgYHRpbGUvJHt0YXJnZXRMZXZlbH0vJHt5fS8ke3h9YDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaW1nLnNyYyA9IHVybDtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICBpdGVtVG90YWxDb3VudCsrO1xyXG4gICAgICAgICAgICAgIG9iai5jb3VudCsrO1xyXG4gICAgICAgICAgICAgIGlmICh4ID49IE1pblRpbGVYKSB7XHJcbiAgICAgICAgICAgICAgICB4LS1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA+PSBNaW5UaWxlWSkge1xyXG4gICAgICAgICAgICAgICAgICB5LS1cclxuICAgICAgICAgICAgICAgICAgeCA9IE1heFRpbGVYXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRyYXZlcnNhbCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW1hZ2VyeVByb3ZpZGVyLl9yZWFkeUVycm9yKSB7XHJcbiAgICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Ub3RhbFByb2dyZXNzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGltYWdlcnlQcm92aWRlci5yZWFkeVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICBpbWFnZXJ5UHJvdmlkZXIuX3JlYWR5RXJyb3IgPSB0cnVlXHJcbiAgICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Ub3RhbFByb2dyZXNzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkZXNpc3QoKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRTY3JlZW5TaG90T2JqZWN0ID0gbmV3IHN0YXJ0U2NyZWVuU2hvdCgpXHJcblxyXG59XHJcblxyXG5leHBvcnQgeyBTY3JlZW5TaG90LCBTY3JlZW5TaG90SEQgfVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/ScreenShot/index.js\n"); - -/***/ }), - -/***/ "./src/Global/SheetIndex/index.js": -/*!****************************************!*\ - !*** ./src/Global/SheetIndex/index.js ***! - \****************************************/ -/*! exports provided: SheetIndexStatusSwitch, changeScale, getStatus */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SheetIndexStatusSwitch\", function() { return SheetIndexStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeScale\", function() { return changeScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStatus\", function() { return getStatus; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nvar tools;\nvar state = false;\nvar scale = '1:100万';\nfunction SheetIndexStatusSwitch(sdk) {\n var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!sdk) {\n return;\n }\n if (!tools) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"]();\n }\n state = s ? true : false;\n if (state) {\n changeScale(sdk, scale);\n } else {\n close(sdk);\n }\n var sdk2D = Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__[\"get2DView\"])();\n if (sdk2D) {\n if (state) {\n changeScale(sdk, scale);\n } else {\n close(sdk2D);\n }\n }\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_3__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n SheetIndexStatusSwitch(sdkD, s);\n }\n\n // return new Promise(async (resolve, reject) => {\n // setTimeout(() => {\n // resolve()\n // }, 1000);\n // })\n}\nfunction changeScale(sdk, v) {\n scale = v;\n if (state) {\n open(sdk);\n }\n var sdk2D = Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__[\"get2DView\"])();\n if (sdk2D) {\n if (state) {\n open(sdk2D);\n }\n }\n return new Promise(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(resolve, reject) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n setTimeout(function () {\n resolve();\n }, 1000);\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n}\nfunction getStatus() {\n return state;\n}\nfunction open(sdk) {\n close(sdk);\n var cartographic = sdk.viewer.camera.positionCartographic;\n var options = {\n position: {\n lng: Cesium.Math.toDegrees(cartographic.longitude),\n lat: Cesium.Math.toDegrees(cartographic.latitude),\n alt: cartographic.height\n }\n };\n var viewer = sdk.viewer;\n switch (scale) {\n case '1:100万':\n options.position.alt = 16000000;\n break;\n case '1:50万':\n options.position.alt = 5000000;\n break;\n case '1:25万':\n options.position.alt = 2300000;\n break;\n case '1:10万':\n options.position.alt = 680000;\n break;\n case '1:5万':\n options.position.alt = 385000;\n break;\n case '1:2.5万':\n options.position.alt = 180000;\n break;\n case '1:1万':\n options.position.alt = 90000;\n break;\n case '1:5000':\n options.position.alt = 46000;\n break;\n }\n var gridPrimitives;\n var labelCollection;\n for (var i = 0; i < viewer.scene.primitives._primitives.length; i++) {\n if (viewer.scene.primitives._primitives[i].name === 'SheetIndexGridPrimitives') {\n gridPrimitives = viewer.scene.primitives._primitives[i];\n for (var j = 0; j < gridPrimitives._primitives.length; j++) {\n if (gridPrimitives._primitives[j].name === 'SheetIndexLabelCollection') {\n labelCollection = gridPrimitives._primitives[j];\n break;\n }\n }\n break;\n }\n }\n if (!gridPrimitives) {\n gridPrimitives = new Cesium.PrimitiveCollection();\n gridPrimitives.name = 'SheetIndexGridPrimitives';\n viewer.scene.primitives.add(gridPrimitives);\n }\n if (!labelCollection) {\n labelCollection = new Cesium.LabelCollection();\n labelCollection.name = 'SheetIndexLabelCollection';\n }\n var stationaryFrames = 0;\n var maxRectangle = null;\n gridPrimitives.postRenderEvent = function () {\n var height = sdk.viewer.camera.positionCartographic.height;\n switch (scale) {\n case '1:100万':\n options.position.alt = 16000000;\n break;\n case '1:50万':\n options.position.alt = 5000000;\n break;\n case '1:25万':\n options.position.alt = 2300000;\n break;\n case '1:10万':\n options.position.alt = 680000;\n break;\n case '1:5万':\n options.position.alt = 385000;\n break;\n case '1:2.5万':\n options.position.alt = 180000;\n break;\n case '1:1万':\n options.position.alt = 90000;\n break;\n case '1:5000':\n options.position.alt = 46000;\n break;\n }\n if (height > options.position.alt * 5) {\n maxRectangle = null;\n gridPrimitives.removeAll();\n return;\n }\n var isChanged = false;\n var rectangle = getViewExtend();\n var minLng = Cesium.Math.toDegrees(rectangle.west);\n var minLat = Cesium.Math.toDegrees(rectangle.south);\n var maxLng = Cesium.Math.toDegrees(rectangle.east);\n var maxLat = Cesium.Math.toDegrees(rectangle.north);\n if (minLng > maxLng) {\n maxLng += 360;\n }\n rectangle = {\n minLng: minLng,\n minLat: minLat,\n maxLng: maxLng,\n maxLat: maxLat\n };\n if (maxRectangle) {\n if ((maxRectangle.minLng > rectangle.minLng || maxRectangle.minLat > rectangle.minLat || maxRectangle.maxLng < rectangle.maxLng || maxRectangle.maxLat < rectangle.maxLat) && Cesium.Math.toDegrees(sdk.viewer.camera.pitch) < 0) {\n isChanged = true;\n }\n } else {\n countMapSheet(scale);\n }\n if (isChanged) {\n stationaryFrames++;\n // 确认相机已经静止足够多帧\n if (stationaryFrames >= 50) {\n countMapSheet(scale);\n isChanged = false;\n }\n } else {\n stationaryFrames = 0;\n }\n };\n options.complete = function () {\n viewer.scene.postRender.addEventListener(gridPrimitives.postRenderEvent);\n };\n Object(_global__WEBPACK_IMPORTED_MODULE_4__[\"flyTo\"])(sdk, options, 0.5);\n\n /**\r\n * 根据比例尺创建图幅线\r\n * @param {string} scale - 比例尺(可选值:'1:100万', '1:50万', '1:25万', '1:10万', '1:5万', '1:2.5万', '1:1万', '1:5000')\r\n */\n function countMapSheet(scale) {\n labelCollection.removeAll();\n gridPrimitives.removeAll();\n labelCollection = new Cesium.LabelCollection();\n labelCollection.name = 'SheetIndexLabelCollection';\n gridPrimitives.add(labelCollection);\n var rectangle = getViewExtend();\n var lngStep; // 经度步长\n var latStep; // 纬度步长\n // let limitLng // 显示界限(根据图幅线数量显隐)\n // let limitLat\n // Math.abs(maxLng-minLng)/lngStep, Math.abs(maxLat-minLat)/latStep\n var scaleByDistance;\n switch (scale) {\n case '1:100万':\n lngStep = 6;\n latStep = 4;\n scaleByDistance = new Cesium.NearFarScalar(20000000, 1, 80000000, 0);\n break;\n case '1:50万':\n lngStep = 3;\n latStep = 2;\n scaleByDistance = new Cesium.NearFarScalar(5000000, 1, 30000000, 0);\n break;\n case '1:25万':\n lngStep = 1.5;\n latStep = 1;\n scaleByDistance = new Cesium.NearFarScalar(2300000, 1, 20000000, 0);\n break;\n case '1:10万':\n lngStep = 0.5;\n latStep = 1 / 3;\n scaleByDistance = new Cesium.NearFarScalar(680000, 1, 5000000, 0);\n break;\n case '1:5万':\n lngStep = 0.25;\n latStep = 1 / 6;\n scaleByDistance = new Cesium.NearFarScalar(385000, 1, 2400000, 0);\n break;\n case '1:2.5万':\n lngStep = 0.125;\n latStep = 1 / 12;\n scaleByDistance = new Cesium.NearFarScalar(180000, 1, 1200000, 0);\n break;\n case '1:1万':\n lngStep = 0.0625;\n latStep = 1 / 24;\n scaleByDistance = new Cesium.NearFarScalar(90000, 1, 700000, 0);\n break;\n case '1:5000':\n lngStep = 0.03125;\n latStep = 1 / 48;\n scaleByDistance = new Cesium.NearFarScalar(46000, 1, 300000, 0);\n break;\n // case '1:1000':\n // lngStep = 0.01041667;\n // latStep = 0.00694444;\n // break\n // case '1:2000':\n // lngStep = 0.00520833;\n // latStep = 0.00347222;\n // break\n }\n var minLng = Math.floor((180 + Cesium.Math.toDegrees(rectangle.west)) / lngStep) * lngStep - 180;\n var minLat = Math.floor((88 + Cesium.Math.toDegrees(rectangle.south)) / latStep) * latStep - 88;\n var maxLng = Math.ceil((180 + Cesium.Math.toDegrees(rectangle.east)) / lngStep) * lngStep - 180;\n var maxLat = Math.ceil((88 + Cesium.Math.toDegrees(rectangle.north)) / latStep) * latStep - 88;\n if (minLng > maxLng) {\n maxLng += 360;\n }\n maxRectangle = {\n minLng: minLng,\n minLat: minLat,\n maxLng: maxLng,\n maxLat: maxLat\n };\n if (minLat < -88) {\n minLat = -88;\n }\n if (maxLat > 88) {\n maxLat = 88;\n }\n if ((maxRectangle.maxLng - maxRectangle.minLng) / lngStep * ((maxRectangle.maxLat - maxRectangle.minLat) / latStep) > 7000) {\n maxRectangle = null;\n return;\n }\n\n // 绘制经线\n for (var lng = minLng; lng <= maxLng; lng += lngStep) {\n var positions = [];\n var a = [];\n for (var lat = minLat; Math.floor(lat * 1000000000) / 1000000000 <= maxLat; lat += latStep / 2) {\n a.push([lng, lat]);\n positions.push(Cesium.Cartesian3.fromDegrees(lng, lat, 8848));\n }\n if (maxLat != 88 && maxLat + latStep / 2 >= 88) {\n positions.push(Cesium.Cartesian3.fromDegrees(lng, 88, 8848));\n }\n var geometryInstances = new Cesium.GeometryInstance({\n geometry: new Cesium.PolylineGeometry({\n positions: positions,\n width: 1,\n vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,\n arcType: Cesium.ArcType.RHUMB\n })\n });\n gridPrimitives.add(new Cesium.Primitive({\n geometryInstances: geometryInstances,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromCssColorString('#fcfc00')\n })\n })\n }));\n if (lng < maxLng) {\n // 计算图幅中心坐标\n for (var _lat = minLat; _lat < maxLat; _lat += latStep) {\n var position = {\n lng: lng + lngStep / 2,\n lat: _lat + latStep / 2\n };\n if (position.lat > maxLat) {\n break;\n }\n var sheetNumber = calculateMapSheetNumber(position.lng, position.lat, scale);\n labelCollection.add({\n position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, 8848),\n text: sheetNumber,\n font: '16px Inter, sans-serif',\n fillColor: Cesium.Color.fromCssColorString('#fcfc00'),\n // backgroundColor: Cesium.Color.fromCssColorString('#FFA145'),\n // backgroundPadding: new Cesium.Cartesian2(8, 4),\n pixelOffset: new Cesium.Cartesian2(0, 0),\n showBackground: false,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n scale: 1.0,\n distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 80000000),\n scaleByDistance: scaleByDistance\n });\n // labelCollection.add({\n // position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, 10000),\n // text: position.lng + ' , ' + position.lat,\n // font: '16px Inter, sans-serif',\n // fillColor: Cesium.Color.WHITE,\n // backgroundColor: Cesium.Color.fromCssColorString('#165DFF').withAlpha(0.8),\n // backgroundPadding: new Cesium.Cartesian2(8, 4),\n // pixelOffset: new Cesium.Cartesian2(0, 30),\n // showBackground: true,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // scale: 1.0,\n // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 20000000),\n // scaleByDistance: new Cesium.NearFarScalar(\n // 5000000,\n // 1,\n // 20000000,\n // 0\n // )\n // })\n }\n }\n }\n\n // 绘制纬线\n for (var _lat2 = minLat; Math.floor(_lat2 * 1000000000) / 1000000000 <= maxLat; _lat2 += latStep) {\n var _positions = [];\n var _a = [];\n for (var _lng = minLng; _lng <= maxLng; _lng += lngStep / 2) {\n _a.push([_lng, _lat2]);\n _positions.push(Cesium.Cartesian3.fromDegrees(_lng, _lat2, 8848));\n }\n var _geometryInstances = new Cesium.GeometryInstance({\n geometry: new Cesium.PolylineGeometry({\n positions: _positions,\n width: 1,\n vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,\n arcType: Cesium.ArcType.RHUMB\n })\n });\n gridPrimitives.add(new Cesium.Primitive({\n geometryInstances: _geometryInstances,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromCssColorString('#fcfc00')\n })\n })\n }));\n }\n }\n\n /**\r\n * 根据经纬度和比例尺计算地图图幅编号\r\n * @param {number} longitude - 经度(十进制格式)\r\n * @param {number} latitude - 纬度(十进制格式)\r\n * @param {string} scale - 比例尺(可选值:'1:100万', '1:50万', '1:25万', '1:10万', '1:5万', '1:2.5万', '1:1万', '1:5000')\r\n * @returns {string} 对应的图幅编号\r\n */\n function calculateMapSheetNumber(lng, lat, scale) {\n var lngStep; // 经度步长\n var latStep; // 纬度步长\n switch (scale) {\n case '1:100万':\n lngStep = 6;\n latStep = 4;\n break;\n case '1:50万':\n lngStep = 3;\n latStep = 2;\n break;\n case '1:25万':\n lngStep = 1.5;\n latStep = 1;\n break;\n case '1:10万':\n lngStep = 0.5;\n latStep = 1 / 3;\n break;\n case '1:5万':\n lngStep = 0.25;\n latStep = 1 / 6;\n break;\n case '1:2.5万':\n lngStep = 0.125;\n latStep = 1 / 12;\n break;\n case '1:1万':\n lngStep = 0.0625;\n latStep = 1 / 24;\n break;\n case '1:5000':\n lngStep = 0.03125;\n latStep = 1 / 48;\n break;\n // case '1:1000':\n // lngStep = 0.01041667;\n // latStep = 0.00694444;\n // break\n // case '1:2000':\n // lngStep = 0.00520833;\n // latStep = 0.00347222;\n // break\n }\n // 确保纬度在 -88 到 88 度之间(因为 88° 以上采用特殊分幅)\n lat = Math.max(-88, Math.min(88, lat));\n lat = Math.abs(lat); // 取绝对值\n\n var B6 = 'ABCDEFGHIJKLMNOPQRSTUV';\n var B2 = lng;\n var B3 = lat;\n\n // 计算 1:100 万地形图的列号\n var col100W = Math.floor(B2 / 6 + 31);\n // 1:100 万地形图的行号对应的字母(A-V)\n var rowChar = B6.charAt(Math.floor(B3 / 4 + 1) - 1);\n\n // 比例尺代码映射\n var scaleCodeMap = {\n '1:100万': '',\n // 1:100万不需要额外代码\n '1:50万': 'B',\n '1:25万': 'C',\n '1:10万': 'D',\n '1:5万': 'E',\n '1:2.5万': 'F',\n '1:1万': 'G',\n '1:5000': 'H'\n };\n\n // 获取比例尺代码\n var scaleCode = scaleCodeMap[scale];\n if (!scaleCode && scale !== '1:100万') {\n throw new Error('不支持的比例尺,请使用: 1:100万, 1:50万, 1:25万, 1:10万, 1:5万, 1:2.5万, 1:1万, 1:5000');\n }\n\n // 计算在 1:100 万图幅内的行列号(根据不同比例尺)\n var rowIn100W, colIn100W;\n rowIn100W = rowChar + col100W;\n var num1 = Math.floor((Math.ceil(B3 / 4) * 4 - B3) / latStep) + 1;\n var rowNum = (\"000\" + num1).slice(-3);\n var remainder = B2 - Math.floor(B2 / 6) * 6;\n var num2 = Math.floor(remainder / lngStep) + 1;\n var colNum = (\"000\" + num2).slice(-3);\n switch (scale) {\n case '1:100万':\n // 1:100万直接使用行号和列号\n return rowIn100W;\n case '1:50万':\n break;\n case '1:25万':\n break;\n case '1:10万':\n break;\n case '1:5万':\n break;\n case '1:2.5万':\n break;\n case '1:1万':\n break;\n case '1:5000':\n break;\n default:\n throw new Error('不支持的比例尺');\n }\n\n // 生成最终编号\n return rowIn100W + scaleCode + rowNum + colNum;\n }\n\n // 获取当前视角矩形范围(二维模式)\n function getViewExtend() {\n var params = {};\n var extend = viewer.camera.computeViewRectangle();\n if (viewer.scene.mode == 2) {\n //2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换\n var canvas = viewer.scene.canvas;\n var upperLeft = new Cesium.Cartesian2(0, 0); //canvas左上角坐标转2d坐标\n var lowerRight = new Cesium.Cartesian2(canvas.clientWidth, canvas.clientHeight); //canvas右下角坐标转2d坐标\n\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var upperLeft3 = viewer.camera.pickEllipsoid(upperLeft, ellipsoid); //2D转3D世界坐标\n\n var lowerRight3 = viewer.camera.pickEllipsoid(lowerRight, ellipsoid); //2D转3D世界坐标\n\n if (!upperLeft3) {\n var cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, {\n x: 0,\n y: 0,\n z: 6356755\n });\n upperLeft.y = cartesian2.y + 5;\n upperLeft3 = viewer.camera.pickEllipsoid(upperLeft, ellipsoid);\n }\n if (!lowerRight3) {\n var _cartesian = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, {\n x: 0,\n y: 0,\n z: -6356755\n });\n lowerRight.y = _cartesian.y - 5;\n lowerRight3 = viewer.camera.pickEllipsoid(lowerRight, ellipsoid);\n // console.log('lowerRight3', lowerRight, lowerRight3)\n }\n var upperLeftCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(upperLeft3); //3D世界坐标转弧度\n var lowerRightCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(lowerRight3); //3D世界坐标转弧度\n\n if ((lowerRight.y - upperLeft.y) / (lowerRight.x - upperLeft.x) <= 0.49998752339363695) {\n extend = new Cesium.Rectangle(Cesium.Math.toRadians(-180), Cesium.Math.toRadians(-90), Cesium.Math.toRadians(180), Cesium.Math.toRadians(90));\n } else {\n extend = new Cesium.Rectangle(upperLeftCartographic.longitude, lowerRightCartographic.latitude, lowerRightCartographic.longitude, upperLeftCartographic.latitude);\n }\n\n // console.log(\"经度:\" + minx + \"----\" + maxx);\n // console.log(\"纬度:\" + miny + \"----\" + maxy);\n\n return extend;\n } else {\n //3D获取方式\n return extend;\n }\n }\n}\nfunction close(sdk) {\n var viewer = sdk.viewer;\n var gridPrimitives;\n var labelCollection;\n for (var i = 0; i < viewer.scene.primitives._primitives.length; i++) {\n if (viewer.scene.primitives._primitives[i].name === 'SheetIndexGridPrimitives') {\n gridPrimitives = viewer.scene.primitives._primitives[i];\n for (var j = 0; j < gridPrimitives._primitives.length; j++) {\n if (gridPrimitives._primitives[j].name === 'SheetIndexLabelCollection') {\n labelCollection = gridPrimitives._primitives[j];\n break;\n }\n }\n break;\n }\n }\n labelCollection && labelCollection.removeAll();\n gridPrimitives && gridPrimitives.removeAll();\n gridPrimitives && viewer.scene.postRender.removeEventListener(gridPrimitives.postRenderEvent);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NoZWV0SW5kZXgvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NoZWV0SW5kZXgvaW5kZXguanM/MTNjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgZ2V0MkRWaWV3IH0gZnJvbSAnLi4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGdldFNkayB9IGZyb20gJy4uL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBmbHlUbyB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJ1xyXG5cclxubGV0IHRvb2xzXHJcbmxldCBzdGF0ZSA9IGZhbHNlXHJcbmxldCBzY2FsZSA9ICcxOjEwMOS4hydcclxuXHJcbmZ1bmN0aW9uIFNoZWV0SW5kZXhTdGF0dXNTd2l0Y2goc2RrLCBzID0gZmFsc2UpIHtcclxuICBpZiAoIXNkaykge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmICghdG9vbHMpIHtcclxuICAgIHRvb2xzID0gbmV3IFRvb2xzKClcclxuICB9XHJcbiAgc3RhdGUgPSBzID8gdHJ1ZSA6IGZhbHNlXHJcblxyXG4gIGlmIChzdGF0ZSkge1xyXG4gICAgY2hhbmdlU2NhbGUoc2RrLCBzY2FsZSlcclxuICB9IGVsc2Uge1xyXG4gICAgY2xvc2Uoc2RrKVxyXG4gIH1cclxuICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGNoYW5nZVNjYWxlKHNkaywgc2NhbGUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbG9zZShzZGsyRClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmIChzZGtEICYmIHNkayAhPT0gc2RrRCkge1xyXG4gICAgU2hlZXRJbmRleFN0YXR1c1N3aXRjaChzZGtELCBzKVxyXG4gIH1cclxuXHJcbiAgLy8gcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgICByZXNvbHZlKClcclxuICAvLyAgIH0sIDEwMDApO1xyXG4gIC8vIH0pXHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGFuZ2VTY2FsZShzZGssIHYpIHtcclxuICBzY2FsZSA9IHZcclxuICBpZiAoc3RhdGUpIHtcclxuICAgIG9wZW4oc2RrKVxyXG4gIH1cclxuICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIG9wZW4oc2RrMkQpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgcmVzb2x2ZSgpXHJcbiAgICB9LCAxMDAwKTtcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTdGF0dXMoKSB7XHJcbiAgcmV0dXJuIHN0YXRlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9wZW4oc2RrKSB7XHJcbiAgY2xvc2Uoc2RrKVxyXG4gIGxldCBjYXJ0b2dyYXBoaWMgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpY1xyXG4gIGxldCBvcHRpb25zID0ge1xyXG4gICAgcG9zaXRpb246IHtcclxuICAgICAgbG5nOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSksXHJcbiAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgIGFsdDogY2FydG9ncmFwaGljLmhlaWdodCxcclxuICAgIH0sXHJcbiAgfVxyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyO1xyXG4gIHN3aXRjaCAoc2NhbGUpIHtcclxuICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAxNjAwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTo1MOS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNTAwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gMjMwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToxMOS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNjgwMDAwXHJcbiAgICAgIGJyZWFrXHJcbiAgICBjYXNlICcxOjXkuIcnOlxyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDM4NTAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToyLjXkuIcnOlxyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDE4MDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTox5LiHJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA5MDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTo1MDAwJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA0NjAwMFxyXG4gICAgICBicmVha1xyXG4gIH1cclxuXHJcbiAgbGV0IGdyaWRQcmltaXRpdmVzXHJcbiAgbGV0IGxhYmVsQ29sbGVjdGlvblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmICh2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1tpXS5uYW1lID09PSAnU2hlZXRJbmRleEdyaWRQcmltaXRpdmVzJykge1xyXG4gICAgICBncmlkUHJpbWl0aXZlcyA9IHZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyaWRQcmltaXRpdmVzLl9wcmltaXRpdmVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGdyaWRQcmltaXRpdmVzLl9wcmltaXRpdmVzW2pdLm5hbWUgPT09ICdTaGVldEluZGV4TGFiZWxDb2xsZWN0aW9uJykge1xyXG4gICAgICAgICAgbGFiZWxDb2xsZWN0aW9uID0gZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbal07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmICghZ3JpZFByaW1pdGl2ZXMpIHtcclxuICAgIGdyaWRQcmltaXRpdmVzID0gbmV3IENlc2l1bS5QcmltaXRpdmVDb2xsZWN0aW9uKCk7XHJcbiAgICBncmlkUHJpbWl0aXZlcy5uYW1lID0gJ1NoZWV0SW5kZXhHcmlkUHJpbWl0aXZlcyc7XHJcbiAgICB2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoZ3JpZFByaW1pdGl2ZXMpO1xyXG4gIH1cclxuICBpZiAoIWxhYmVsQ29sbGVjdGlvbikge1xyXG4gICAgbGFiZWxDb2xsZWN0aW9uID0gbmV3IENlc2l1bS5MYWJlbENvbGxlY3Rpb24oKTtcclxuICAgIGxhYmVsQ29sbGVjdGlvbi5uYW1lID0gJ1NoZWV0SW5kZXhMYWJlbENvbGxlY3Rpb24nO1xyXG4gIH1cclxuICBsZXQgc3RhdGlvbmFyeUZyYW1lcyA9IDA7XHJcbiAgbGV0IG1heFJlY3RhbmdsZSA9IG51bGw7XHJcbiAgZ3JpZFByaW1pdGl2ZXMucG9zdFJlbmRlckV2ZW50ID0gKCkgPT4ge1xyXG4gICAgbGV0IGhlaWdodCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgc3dpdGNoIChzY2FsZSkge1xyXG4gICAgICBjYXNlICcxOjEwMOS4hyc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAxNjAwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NTDkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNTAwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MjXkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gMjMwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNjgwMDAwXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDM4NTAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDE4MDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MeS4hyc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA5MDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NTAwMCc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA0NjAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICBpZiAoaGVpZ2h0ID4gb3B0aW9ucy5wb3NpdGlvbi5hbHQgKiA1KSB7XHJcbiAgICAgIG1heFJlY3RhbmdsZSA9IG51bGw7XHJcbiAgICAgIGdyaWRQcmltaXRpdmVzLnJlbW92ZUFsbCgpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBpc0NoYW5nZWQgPSBmYWxzZVxyXG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFZpZXdFeHRlbmQoKTtcclxuXHJcbiAgICBsZXQgbWluTG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS53ZXN0KVxyXG4gICAgbGV0IG1pbkxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUuc291dGgpXHJcbiAgICBsZXQgbWF4TG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS5lYXN0KVxyXG4gICAgbGV0IG1heExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUubm9ydGgpXHJcbiAgICBpZiAobWluTG5nID4gbWF4TG5nKSB7XHJcbiAgICAgIG1heExuZyArPSAzNjBcclxuICAgIH1cclxuICAgIHJlY3RhbmdsZSA9IHsgbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0IH1cclxuICAgIGlmIChtYXhSZWN0YW5nbGUpIHtcclxuICAgICAgaWYgKChtYXhSZWN0YW5nbGUubWluTG5nID4gcmVjdGFuZ2xlLm1pbkxuZyB8fCBtYXhSZWN0YW5nbGUubWluTGF0ID4gcmVjdGFuZ2xlLm1pbkxhdCB8fCBtYXhSZWN0YW5nbGUubWF4TG5nIDwgcmVjdGFuZ2xlLm1heExuZyB8fCBtYXhSZWN0YW5nbGUubWF4TGF0IDwgcmVjdGFuZ2xlLm1heExhdCkgJiYgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHNkay52aWV3ZXIuY2FtZXJhLnBpdGNoKSA8IDApIHtcclxuICAgICAgICBpc0NoYW5nZWQgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb3VudE1hcFNoZWV0KHNjYWxlKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0NoYW5nZWQpIHtcclxuICAgICAgc3RhdGlvbmFyeUZyYW1lcysrO1xyXG4gICAgICAvLyDnoa7orqTnm7jmnLrlt7Lnu4/pnZnmraLotrPlpJ/lpJrluKdcclxuICAgICAgaWYgKHN0YXRpb25hcnlGcmFtZXMgPj0gNTApIHtcclxuICAgICAgICBjb3VudE1hcFNoZWV0KHNjYWxlKVxyXG4gICAgICAgIGlzQ2hhbmdlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRpb25hcnlGcmFtZXMgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3B0aW9ucy5jb21wbGV0ZSA9ICgpID0+IHtcclxuICAgIHZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoZ3JpZFByaW1pdGl2ZXMucG9zdFJlbmRlckV2ZW50KTtcclxuICB9XHJcbiAgZmx5VG8oc2RrLCBvcHRpb25zLCAwLjUpXHJcblxyXG4gIC8qKlxyXG4gICog5qC55o2u5q+U5L6L5bC65Yib5bu65Zu+5bmF57q/XHJcbiAgKiBAcGFyYW0ge3N0cmluZ30gc2NhbGUgLSDmr5TkvovlsLrvvIjlj6/pgInlgLzvvJonMToxMDDkuIcnLCAnMTo1MOS4hycsICcxOjI15LiHJywgJzE6MTDkuIcnLCAnMTo15LiHJywgJzE6Mi415LiHJywgJzE6MeS4hycsICcxOjUwMDAn77yJXHJcbiAgKi9cclxuICBmdW5jdGlvbiBjb3VudE1hcFNoZWV0KHNjYWxlKSB7XHJcbiAgICBsYWJlbENvbGxlY3Rpb24ucmVtb3ZlQWxsKCk7XHJcbiAgICBncmlkUHJpbWl0aXZlcy5yZW1vdmVBbGwoKTtcclxuICAgIGxhYmVsQ29sbGVjdGlvbiA9IG5ldyBDZXNpdW0uTGFiZWxDb2xsZWN0aW9uKCk7XHJcbiAgICBsYWJlbENvbGxlY3Rpb24ubmFtZSA9ICdTaGVldEluZGV4TGFiZWxDb2xsZWN0aW9uJztcclxuICAgIGdyaWRQcmltaXRpdmVzLmFkZChsYWJlbENvbGxlY3Rpb24pO1xyXG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFZpZXdFeHRlbmQoKTtcclxuXHJcbiAgICBsZXQgbG5nU3RlcCAvLyDnu4/luqbmraXplb9cclxuICAgIGxldCBsYXRTdGVwIC8vIOe6rOW6puatpemVv1xyXG4gICAgLy8gbGV0IGxpbWl0TG5nIC8vIOaYvuekuueVjOmZkO+8iOagueaNruWbvuW5hee6v+aVsOmHj+aYvumakO+8iVxyXG4gICAgLy8gbGV0IGxpbWl0TGF0XHJcbiAgICAvLyBNYXRoLmFicyhtYXhMbmctbWluTG5nKS9sbmdTdGVwLCBNYXRoLmFicyhtYXhMYXQtbWluTGF0KS9sYXRTdGVwXHJcbiAgICBsZXQgc2NhbGVCeURpc3RhbmNlXHJcbiAgICBzd2l0Y2ggKHNjYWxlKSB7XHJcbiAgICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gNjtcclxuICAgICAgICBsYXRTdGVwID0gNDtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAyMDAwMDAwMCxcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICA4MDAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo1MOS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDM7XHJcbiAgICAgICAgbGF0U3RlcCA9IDI7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgNTAwMDAwMCxcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICAzMDAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDEuNTtcclxuICAgICAgICBsYXRTdGVwID0gMTtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAyMzAwMDAwLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIDIwMDAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjEw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC41O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gMztcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICA2ODAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgNTAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4yNTtcclxuICAgICAgICBsYXRTdGVwID0gMSAvIDY7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgMzg1MDAwLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIDI0MDAwMDAsXHJcbiAgICAgICAgICAwXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4xMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAxMjtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAxODAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgMTIwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTox5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4wNjI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gMjQ7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgOTAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgNzAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjAzMTI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gNDg7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgNDYwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgMzAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICAvLyBjYXNlICcxOjEwMDAnOlxyXG4gICAgICAvLyAgICAgbG5nU3RlcCA9IDAuMDEwNDE2Njc7XHJcbiAgICAgIC8vICAgICBsYXRTdGVwID0gMC4wMDY5NDQ0NDtcclxuICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICAgIC8vIGNhc2UgJzE6MjAwMCc6XHJcbiAgICAgIC8vICAgICBsbmdTdGVwID0gMC4wMDUyMDgzMztcclxuICAgICAgLy8gICAgIGxhdFN0ZXAgPSAwLjAwMzQ3MjIyO1xyXG4gICAgICAvLyAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWluTG5nID0gTWF0aC5mbG9vcigoMTgwICsgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS53ZXN0KSkgLyBsbmdTdGVwKSAqIGxuZ1N0ZXAgLSAxODA7XHJcbiAgICBsZXQgbWluTGF0ID0gTWF0aC5mbG9vcigoODggKyBDZXNpdW0uTWF0aC50b0RlZ3JlZXMocmVjdGFuZ2xlLnNvdXRoKSkgLyBsYXRTdGVwKSAqIGxhdFN0ZXAgLSA4ODtcclxuICAgIGxldCBtYXhMbmcgPSBNYXRoLmNlaWwoKDE4MCArIENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUuZWFzdCkpIC8gbG5nU3RlcCkgKiBsbmdTdGVwIC0gMTgwO1xyXG4gICAgbGV0IG1heExhdCA9IE1hdGguY2VpbCgoODggKyBDZXNpdW0uTWF0aC50b0RlZ3JlZXMocmVjdGFuZ2xlLm5vcnRoKSkgLyBsYXRTdGVwKSAqIGxhdFN0ZXAgLSA4ODtcclxuXHJcbiAgICBpZiAobWluTG5nID4gbWF4TG5nKSB7XHJcbiAgICAgIG1heExuZyArPSAzNjBcclxuICAgIH1cclxuXHJcbiAgICBtYXhSZWN0YW5nbGUgPSB7IG1pbkxuZywgbWluTGF0LCBtYXhMbmcsIG1heExhdCB9XHJcbiAgICBpZiAobWluTGF0IDwgLTg4KSB7XHJcbiAgICAgIG1pbkxhdCA9IC04OFxyXG4gICAgfVxyXG4gICAgaWYgKG1heExhdCA+IDg4KSB7XHJcbiAgICAgIG1heExhdCA9IDg4XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCgobWF4UmVjdGFuZ2xlLm1heExuZyAtIG1heFJlY3RhbmdsZS5taW5MbmcpIC8gbG5nU3RlcCkgKiAoKG1heFJlY3RhbmdsZS5tYXhMYXQgLSBtYXhSZWN0YW5nbGUubWluTGF0KSAvIGxhdFN0ZXApID4gNzAwMCkge1xyXG4gICAgICBtYXhSZWN0YW5nbGUgPSBudWxsXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyDnu5jliLbnu4/nur9cclxuICAgIGZvciAobGV0IGxuZyA9IG1pbkxuZzsgbG5nIDw9IG1heExuZzsgbG5nICs9IGxuZ1N0ZXApIHtcclxuICAgICAgY29uc3QgcG9zaXRpb25zID0gW107XHJcbiAgICAgIGxldCBhID0gW11cclxuICAgICAgZm9yIChsZXQgbGF0ID0gbWluTGF0OyBNYXRoLmZsb29yKGxhdCAqIDEwMDAwMDAwMDApIC8gMTAwMDAwMDAwMCA8PSBtYXhMYXQ7IGxhdCArPSAobGF0U3RlcCAvIDIpKSB7XHJcbiAgICAgICAgYS5wdXNoKFtsbmcsIGxhdF0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIDg4NDgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4TGF0ICE9IDg4ICYmIG1heExhdCArIChsYXRTdGVwIC8gMikgPj0gODgpIHtcclxuICAgICAgICBwb3NpdGlvbnMucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIDg4LCA4ODQ4KSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZ2VvbWV0cnlJbnN0YW5jZXMgPSBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgQ2VzaXVtLlBvbHlsaW5lR2VvbWV0cnkoe1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbnMsXHJcbiAgICAgICAgICB3aWR0aDogMSxcclxuICAgICAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlLlZFUlRFWF9GT1JNQVQsXHJcbiAgICAgICAgICBhcmNUeXBlOiBDZXNpdW0uQXJjVHlwZS5SSFVNQixcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGdyaWRQcmltaXRpdmVzLmFkZChuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IGdlb21ldHJ5SW5zdGFuY2VzLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5NYXRlcmlhbC5mcm9tVHlwZSgnQ29sb3InLCB7XHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmNmYzAwJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSkpO1xyXG5cclxuICAgICAgaWYgKGxuZyA8IG1heExuZykge1xyXG4gICAgICAgIC8vIOiuoeeul+WbvuW5heS4reW/g+WdkOagh1xyXG4gICAgICAgIGZvciAobGV0IGxhdCA9IG1pbkxhdDsgbGF0IDwgbWF4TGF0OyBsYXQgKz0gbGF0U3RlcCkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IGxuZyArIChsbmdTdGVwIC8gMiksIGxhdDogbGF0ICsgKGxhdFN0ZXAgLyAyKSB9O1xyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IG1heExhdCkge1xyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHNoZWV0TnVtYmVyID0gY2FsY3VsYXRlTWFwU2hlZXROdW1iZXIocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHNjYWxlKTtcclxuICAgICAgICAgIGxhYmVsQ29sbGVjdGlvbi5hZGQoe1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIDg4NDgpLFxyXG4gICAgICAgICAgICB0ZXh0OiBzaGVldE51bWJlcixcclxuICAgICAgICAgICAgZm9udDogJzE2cHggSW50ZXIsIHNhbnMtc2VyaWYnLFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmY2ZjMDAnKSxcclxuICAgICAgICAgICAgLy8gYmFja2dyb3VuZENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjRkZBMTQ1JyksXHJcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRQYWRkaW5nOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoOCwgNCksXHJcbiAgICAgICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgMCksXHJcbiAgICAgICAgICAgIHNob3dCYWNrZ3JvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgICAgICAgc2NhbGU6IDEuMCxcclxuICAgICAgICAgICAgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiBuZXcgQ2VzaXVtLkRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbigwLCA4MDAwMDAwMCksXHJcbiAgICAgICAgICAgIHNjYWxlQnlEaXN0YW5jZTogc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy8gbGFiZWxDb2xsZWN0aW9uLmFkZCh7XHJcbiAgICAgICAgICAvLyAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0LCAxMDAwMCksXHJcbiAgICAgICAgICAvLyAgICAgdGV4dDogcG9zaXRpb24ubG5nICsgJyAsICcgKyBwb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgICAvLyAgICAgZm9udDogJzE2cHggSW50ZXIsIHNhbnMtc2VyaWYnLFxyXG4gICAgICAgICAgLy8gICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLFxyXG4gICAgICAgICAgLy8gICAgIGJhY2tncm91bmRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzE2NURGRicpLndpdGhBbHBoYSgwLjgpLFxyXG4gICAgICAgICAgLy8gICAgIGJhY2tncm91bmRQYWRkaW5nOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoOCwgNCksXHJcbiAgICAgICAgICAvLyAgICAgcGl4ZWxPZmZzZXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAzMCksXHJcbiAgICAgICAgICAvLyAgICAgc2hvd0JhY2tncm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAvLyAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAvLyAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgLy8gICAgIHNjYWxlOiAxLjAsXHJcbiAgICAgICAgICAvLyAgICAgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiBuZXcgQ2VzaXVtLkRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbigwLCAyMDAwMDAwMCksXHJcbiAgICAgICAgICAvLyAgICAgc2NhbGVCeURpc3RhbmNlOiBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAvLyAgICAgICAgIDUwMDAwMDAsXHJcbiAgICAgICAgICAvLyAgICAgICAgIDEsXHJcbiAgICAgICAgICAvLyAgICAgICAgIDIwMDAwMDAwLFxyXG4gICAgICAgICAgLy8gICAgICAgICAwXHJcbiAgICAgICAgICAvLyAgICAgKVxyXG4gICAgICAgICAgLy8gfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDnu5jliLbnuqznur9cclxuICAgIGZvciAobGV0IGxhdCA9IG1pbkxhdDsgTWF0aC5mbG9vcihsYXQgKiAxMDAwMDAwMDAwKSAvIDEwMDAwMDAwMDAgPD0gbWF4TGF0OyBsYXQgKz0gbGF0U3RlcCkge1xyXG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGEgPSBbXVxyXG4gICAgICBmb3IgKGxldCBsbmcgPSBtaW5Mbmc7IGxuZyA8PSBtYXhMbmc7IGxuZyArPSAobG5nU3RlcCAvIDIpKSB7XHJcbiAgICAgICAgYS5wdXNoKFtsbmcsIGxhdF0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIDg4NDgpKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBnZW9tZXRyeUluc3RhbmNlcyA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uUG9seWxpbmVHZW9tZXRyeSh7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IHBvc2l0aW9ucyxcclxuICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgdmVydGV4Rm9ybWF0OiBDZXNpdW0uUGVySW5zdGFuY2VDb2xvckFwcGVhcmFuY2UuVkVSVEVYX0ZPUk1BVCxcclxuICAgICAgICAgIGFyY1R5cGU6IENlc2l1bS5BcmNUeXBlLlJIVU1CLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZ3JpZFByaW1pdGl2ZXMuYWRkKG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogZ2VvbWV0cnlJbnN0YW5jZXMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZU1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmY2ZjMDAnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiDmoLnmja7nu4/nuqzluqblkozmr5TkvovlsLrorqHnrpflnLDlm77lm77luYXnvJblj7dcclxuICAqIEBwYXJhbSB7bnVtYmVyfSBsb25naXR1ZGUgLSDnu4/luqbvvIjljYHov5vliLbmoLzlvI/vvIlcclxuICAqIEBwYXJhbSB7bnVtYmVyfSBsYXRpdHVkZSAtIOe6rOW6pu+8iOWNgei/m+WItuagvOW8j++8iVxyXG4gICogQHBhcmFtIHtzdHJpbmd9IHNjYWxlIC0g5q+U5L6L5bC677yI5Y+v6YCJ5YC877yaJzE6MTAw5LiHJywgJzE6NTDkuIcnLCAnMToyNeS4hycsICcxOjEw5LiHJywgJzE6NeS4hycsICcxOjIuNeS4hycsICcxOjHkuIcnLCAnMTo1MDAwJ++8iVxyXG4gICogQHJldHVybnMge3N0cmluZ30g5a+55bqU55qE5Zu+5bmF57yW5Y+3XHJcbiAgKi9cclxuICBmdW5jdGlvbiBjYWxjdWxhdGVNYXBTaGVldE51bWJlcihsbmcsIGxhdCwgc2NhbGUpIHtcclxuICAgIGxldCBsbmdTdGVwIC8vIOe7j+W6puatpemVv1xyXG4gICAgbGV0IGxhdFN0ZXAgLy8g57qs5bqm5q2l6ZW/XHJcbiAgICBzd2l0Y2ggKHNjYWxlKSB7XHJcbiAgICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gNjtcclxuICAgICAgICBsYXRTdGVwID0gNDtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMztcclxuICAgICAgICBsYXRTdGVwID0gMjtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjI15LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMS41O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAzO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NeS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDAuMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyA2O1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4xMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAxMjtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjHkuIcnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjA2MjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAyNDtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjAzMTI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gNDg7XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgLy8gY2FzZSAnMToxMDAwJzpcclxuICAgICAgLy8gICAgIGxuZ1N0ZXAgPSAwLjAxMDQxNjY3O1xyXG4gICAgICAvLyAgICAgbGF0U3RlcCA9IDAuMDA2OTQ0NDQ7XHJcbiAgICAgIC8vICAgICBicmVha1xyXG4gICAgICAvLyBjYXNlICcxOjIwMDAnOlxyXG4gICAgICAvLyAgICAgbG5nU3RlcCA9IDAuMDA1MjA4MzM7XHJcbiAgICAgIC8vICAgICBsYXRTdGVwID0gMC4wMDM0NzIyMjtcclxuICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICAvLyDnoa7kv53nuqzluqblnKggLTg4IOWIsCA4OCDluqbkuYvpl7TvvIjlm6DkuLogODjCsCDku6XkuIrph4fnlKjnibnmrorliIbluYXvvIlcclxuICAgIGxhdCA9IE1hdGgubWF4KC04OCwgTWF0aC5taW4oODgsIGxhdCkpO1xyXG4gICAgbGF0ID0gTWF0aC5hYnMobGF0KTsgLy8g5Y+W57ud5a+55YC8XHJcblxyXG4gICAgbGV0IEI2ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVYnXHJcbiAgICBsZXQgQjIgPSBsbmdcclxuICAgIGxldCBCMyA9IGxhdFxyXG5cclxuICAgIC8vIOiuoeeulyAxOjEwMCDkuIflnLDlvaLlm77nmoTliJflj7dcclxuICAgIGNvbnN0IGNvbDEwMFcgPSBNYXRoLmZsb29yKEIyIC8gNiArIDMxKTtcclxuICAgIC8vIDE6MTAwIOS4h+WcsOW9ouWbvueahOihjOWPt+WvueW6lOeahOWtl+avje+8iEEtVu+8iVxyXG4gICAgY29uc3Qgcm93Q2hhciA9IEI2LmNoYXJBdChNYXRoLmZsb29yKEIzIC8gNCArIDEpIC0gMSk7XHJcblxyXG4gICAgLy8g5q+U5L6L5bC65Luj56CB5pig5bCEXHJcbiAgICBjb25zdCBzY2FsZUNvZGVNYXAgPSB7XHJcbiAgICAgICcxOjEwMOS4hyc6ICcnLCAgICAgLy8gMToxMDDkuIfkuI3pnIDopoHpop3lpJbku6PnoIFcclxuICAgICAgJzE6NTDkuIcnOiAnQicsXHJcbiAgICAgICcxOjI15LiHJzogJ0MnLFxyXG4gICAgICAnMToxMOS4hyc6ICdEJyxcclxuICAgICAgJzE6NeS4hyc6ICdFJyxcclxuICAgICAgJzE6Mi415LiHJzogJ0YnLFxyXG4gICAgICAnMTox5LiHJzogJ0cnLFxyXG4gICAgICAnMTo1MDAwJzogJ0gnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyDojrflj5bmr5TkvovlsLrku6PnoIFcclxuICAgIGNvbnN0IHNjYWxlQ29kZSA9IHNjYWxlQ29kZU1hcFtzY2FsZV07XHJcbiAgICBpZiAoIXNjYWxlQ29kZSAmJiBzY2FsZSAhPT0gJzE6MTAw5LiHJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+S4jeaUr+aMgeeahOavlOS+i+Wwuu+8jOivt+S9v+eUqDogMToxMDDkuIcsIDE6NTDkuIcsIDE6MjXkuIcsIDE6MTDkuIcsIDE6NeS4hywgMToyLjXkuIcsIDE6MeS4hywgMTo1MDAwJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6K6h566X5ZyoIDE6MTAwIOS4h+WbvuW5heWGheeahOihjOWIl+WPt++8iOagueaNruS4jeWQjOavlOS+i+Wwuu+8iVxyXG4gICAgbGV0IHJvd0luMTAwVywgY29sSW4xMDBXO1xyXG4gICAgcm93SW4xMDBXID0gcm93Q2hhciArIGNvbDEwMFc7XHJcblxyXG4gICAgY29uc3QgbnVtMSA9IE1hdGguZmxvb3IoKE1hdGguY2VpbChCMyAvIDQpICogNCAtIEIzKSAvIGxhdFN0ZXApICsgMTtcclxuICAgIGNvbnN0IHJvd051bSA9IChcIjAwMFwiICsgbnVtMSkuc2xpY2UoLTMpO1xyXG4gICAgY29uc3QgcmVtYWluZGVyID0gQjIgLSBNYXRoLmZsb29yKEIyIC8gNikgKiA2O1xyXG4gICAgY29uc3QgbnVtMiA9IE1hdGguZmxvb3IocmVtYWluZGVyIC8gbG5nU3RlcCkgKyAxO1xyXG4gICAgY29uc3QgY29sTnVtID0gKFwiMDAwXCIgKyBudW0yKS5zbGljZSgtMyk7XHJcblxyXG4gICAgc3dpdGNoIChzY2FsZSkge1xyXG4gICAgICBjYXNlICcxOjEwMOS4hyc6XHJcbiAgICAgICAgLy8gMToxMDDkuIfnm7TmjqXkvb/nlKjooYzlj7flkozliJflj7dcclxuICAgICAgICByZXR1cm4gcm93SW4xMDBXO1xyXG4gICAgICBjYXNlICcxOjUw5LiHJzpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJzE6MeS4hyc6XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+S4jeaUr+aMgeeahOavlOS+i+WwuicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeUn+aIkOacgOe7iOe8luWPt1xyXG4gICAgcmV0dXJuIHJvd0luMTAwVyArIHNjYWxlQ29kZSArIHJvd051bSArIGNvbE51bTtcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluW9k+WJjeinhuinkuefqeW9ouiMg+WbtO+8iOS6jOe7tOaooeW8j++8iVxyXG4gIGZ1bmN0aW9uIGdldFZpZXdFeHRlbmQoKSB7XHJcbiAgICBsZXQgcGFyYW1zID0ge307XHJcbiAgICBsZXQgZXh0ZW5kID0gdmlld2VyLmNhbWVyYS5jb21wdXRlVmlld1JlY3RhbmdsZSgpO1xyXG4gICAgaWYgKHZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgLy8yROS4i+S8muWPr+iDveaLvuWPluS4jeWIsOWdkOagh++8jGV4dGVuZOi/lOWbnnVuZGVmaW5lZCzmiYDku6XlgZrku6XkuIvovazmjaJcclxuICAgICAgbGV0IGNhbnZhcyA9IHZpZXdlci5zY2VuZS5jYW52YXM7XHJcbiAgICAgIGxldCB1cHBlckxlZnQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgMCk7Ly9jYW52YXPlt6bkuIrop5LlnZDmoIfovawyZOWdkOagh1xyXG4gICAgICBsZXQgbG93ZXJSaWdodCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICBjYW52YXMuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgY2FudmFzLmNsaWVudEhlaWdodFxyXG4gICAgICApOy8vY2FudmFz5Y+z5LiL6KeS5Z2Q5qCH6L2sMmTlnZDmoIdcclxuXHJcbiAgICAgIGxldCBlbGxpcHNvaWQgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkO1xyXG4gICAgICBsZXQgdXBwZXJMZWZ0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICB1cHBlckxlZnQsXHJcbiAgICAgICAgZWxsaXBzb2lkXHJcbiAgICAgICk7Ly8yROi9rDNE5LiW55WM5Z2Q5qCHXHJcblxyXG4gICAgICBsZXQgbG93ZXJSaWdodDMgPSB2aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICAgICAgbG93ZXJSaWdodCxcclxuICAgICAgICBlbGxpcHNvaWRcclxuICAgICAgKTsvLzJE6L2sM0TkuJbnlYzlnZDmoIdcclxuXHJcbiAgICAgIGlmICghdXBwZXJMZWZ0Mykge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4yID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModmlld2VyLnNjZW5lLCB7IHg6IDAsIHk6IDAsIHo6IDYzNTY3NTUgfSk7XHJcbiAgICAgICAgdXBwZXJMZWZ0LnkgPSBjYXJ0ZXNpYW4yLnkgKyA1XHJcbiAgICAgICAgdXBwZXJMZWZ0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICAgIHVwcGVyTGVmdCxcclxuICAgICAgICAgIGVsbGlwc29pZFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFsb3dlclJpZ2h0Mykge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4yID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModmlld2VyLnNjZW5lLCB7IHg6IDAsIHk6IDAsIHo6IC02MzU2NzU1IH0pO1xyXG4gICAgICAgIGxvd2VyUmlnaHQueSA9IGNhcnRlc2lhbjIueSAtIDVcclxuICAgICAgICBsb3dlclJpZ2h0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICAgIGxvd2VyUmlnaHQsXHJcbiAgICAgICAgICBlbGxpcHNvaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdsb3dlclJpZ2h0MycsIGxvd2VyUmlnaHQsIGxvd2VyUmlnaHQzKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCB1cHBlckxlZnRDYXJ0b2dyYXBoaWMgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFxyXG4gICAgICAgIHVwcGVyTGVmdDNcclxuICAgICAgKTsvLzNE5LiW55WM5Z2Q5qCH6L2s5byn5bqmXHJcbiAgICAgIGxldCBsb3dlclJpZ2h0Q2FydG9ncmFwaGljID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhcclxuICAgICAgICBsb3dlclJpZ2h0M1xyXG4gICAgICApOy8vM0TkuJbnlYzlnZDmoIfovazlvKfluqZcclxuXHJcbiAgICAgIGlmICgobG93ZXJSaWdodC55IC0gdXBwZXJMZWZ0LnkpIC8gKGxvd2VyUmlnaHQueCAtIHVwcGVyTGVmdC54KSA8PSAwLjQ5OTk4NzUyMzM5MzYzNjk1KSB7XHJcbiAgICAgICAgZXh0ZW5kID0gbmV3IENlc2l1bS5SZWN0YW5nbGUoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0xODApLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDE4MCksIENlc2l1bS5NYXRoLnRvUmFkaWFucyg5MCkpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZXh0ZW5kID0gbmV3IENlc2l1bS5SZWN0YW5nbGUodXBwZXJMZWZ0Q2FydG9ncmFwaGljLmxvbmdpdHVkZSwgbG93ZXJSaWdodENhcnRvZ3JhcGhpYy5sYXRpdHVkZSwgbG93ZXJSaWdodENhcnRvZ3JhcGhpYy5sb25naXR1ZGUsIHVwcGVyTGVmdENhcnRvZ3JhcGhpYy5sYXRpdHVkZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwi57uP5bqm77yaXCIgKyBtaW54ICsgXCItLS0tXCIgKyBtYXh4KTtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCLnuqzluqbvvJpcIiArIG1pbnkgKyBcIi0tLS1cIiArIG1heHkpO1xyXG5cclxuICAgICAgcmV0dXJuIGV4dGVuZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vM0Tojrflj5bmlrnlvI9cclxuICAgICAgcmV0dXJuIGV4dGVuZDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5mdW5jdGlvbiBjbG9zZShzZGspIHtcclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlcjtcclxuICBsZXQgZ3JpZFByaW1pdGl2ZXNcclxuICBsZXQgbGFiZWxDb2xsZWN0aW9uXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzW2ldLm5hbWUgPT09ICdTaGVldEluZGV4R3JpZFByaW1pdGl2ZXMnKSB7XHJcbiAgICAgIGdyaWRQcmltaXRpdmVzID0gdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbaV07XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAoZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbal0ubmFtZSA9PT0gJ1NoZWV0SW5kZXhMYWJlbENvbGxlY3Rpb24nKSB7XHJcbiAgICAgICAgICBsYWJlbENvbGxlY3Rpb24gPSBncmlkUHJpbWl0aXZlcy5fcHJpbWl0aXZlc1tqXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxhYmVsQ29sbGVjdGlvbiAmJiAobGFiZWxDb2xsZWN0aW9uLnJlbW92ZUFsbCgpKTtcclxuICBncmlkUHJpbWl0aXZlcyAmJiAoZ3JpZFByaW1pdGl2ZXMucmVtb3ZlQWxsKCkpO1xyXG4gIGdyaWRQcmltaXRpdmVzICYmICh2aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKGdyaWRQcmltaXRpdmVzLnBvc3RSZW5kZXJFdmVudCkpO1xyXG59XHJcblxyXG5leHBvcnQgeyBTaGVldEluZGV4U3RhdHVzU3dpdGNoLCBjaGFuZ2VTY2FsZSwgZ2V0U3RhdHVzIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/SheetIndex/index.js\n"); - -/***/ }), - -/***/ "./src/Global/Skin/index.js": -/*!**********************************!*\ - !*** ./src/Global/Skin/index.js ***! - \**********************************/ -/*! exports provided: default, setSkin */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSkin\", function() { return setSkin; });\nvar theme = {\n \"yingguangse\": new Map(),\n \"gonganlan\": new Map(),\n \"hong\": new Map()\n};\n// 主色\ntheme.yingguangse.set(\"--color-sdk-base\", \"#00ffff\");\n// 辅色\ntheme.yingguangse.set(\"--color-sdk-auxiliary\", \"#004242\");\ntheme.yingguangse.set(\"--color-sdk-auxiliary-public\", \"#ffffff\");\n// 预警色\ntheme.yingguangse.set(\"--color-sdk-warning-0\", \"#1BF8C3\");\ntheme.yingguangse.set(\"--color-sdk-warning-1\", \"#F16C55\");\ntheme.yingguangse.set(\"--color-sdk-warning-2\", \"#FFA145\");\ntheme.yingguangse.set(\"--color-sdk-warning-3\", \"#FFDF53\");\n// 文本色\ntheme.yingguangse.set(\"--color-sdk-text-head\", \"#FFFFFF\");\ntheme.yingguangse.set(\"--color-sdk-text-head-1\", \"#E6F7FF\");\ntheme.yingguangse.set(\"--color-sdk-text-head-2\", \"#ADF1FF\");\n// 渐变色\ntheme.yingguangse.set(\"--color-sdk-gradual\", \"#00ffff 6.25%, #00ffff 100%\");\ntheme.yingguangse.set(\"--color-sdk-bg-gradual\", \"#00ffff33 0%, #00ffff00 100%\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (theme);\nfunction setSkin(name) {\n document.documentElement.style.setProperty('--color-sdk-base', 'rgba(0, 55, 55, 1)');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NraW4vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NraW4vaW5kZXguanM/NTg2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgdGhlbWUgPSB7XHJcbiAgXCJ5aW5nZ3VhbmdzZVwiOiBuZXcgTWFwKCksXHJcbiAgXCJnb25nYW5sYW5cIjogbmV3IE1hcCgpLFxyXG4gIFwiaG9uZ1wiOiBuZXcgTWFwKCksXHJcbn1cclxuLy8g5Li76ImyXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWJhc2VcIiwgXCIjMDBmZmZmXCIpXHJcbi8vIOi+heiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay1hdXhpbGlhcnlcIiwgXCIjMDA0MjQyXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWF1eGlsaWFyeS1wdWJsaWNcIiwgXCIjZmZmZmZmXCIpXHJcbi8vIOmihOitpuiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay13YXJuaW5nLTBcIiwgXCIjMUJGOEMzXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLXdhcm5pbmctMVwiLCBcIiNGMTZDNTVcIilcclxudGhlbWUueWluZ2d1YW5nc2Uuc2V0KFwiLS1jb2xvci1zZGstd2FybmluZy0yXCIsIFwiI0ZGQTE0NVwiKVxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay13YXJuaW5nLTNcIiwgXCIjRkZERjUzXCIpXHJcbi8vIOaWh+acrOiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay10ZXh0LWhlYWRcIiwgXCIjRkZGRkZGXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLXRleHQtaGVhZC0xXCIsIFwiI0U2RjdGRlwiKVxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay10ZXh0LWhlYWQtMlwiLCBcIiNBREYxRkZcIilcclxuLy8g5riQ5Y+Y6ImyXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWdyYWR1YWxcIiwgXCIjMDBmZmZmIDYuMjUlLCAjMDBmZmZmIDEwMCVcIilcclxudGhlbWUueWluZ2d1YW5nc2Uuc2V0KFwiLS1jb2xvci1zZGstYmctZ3JhZHVhbFwiLCBcIiMwMGZmZmYzMyAwJSwgIzAwZmZmZjAwIDEwMCVcIilcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHRoZW1lO1xyXG5cclxuZnVuY3Rpb24gc2V0U2tpbihuYW1lKSB7XHJcbiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yLXNkay1iYXNlJywgJ3JnYmEoMCwgNTUsIDU1LCAxKScpO1xyXG59XHJcblxyXG5leHBvcnQgeyBzZXRTa2luIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/Skin/index.js\n"); - -/***/ }), - -/***/ "./src/Global/SplitScreen/ClickCallback/index.js": -/*!*******************************************************!*\ - !*** ./src/Global/SplitScreen/ClickCallback/index.js ***! - \*******************************************************/ -/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj.that.picking && _obj.that.geojson) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2.that.picking) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3.that.picking) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4.that.picking) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6.that.picking) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7.that.picking) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj.that.picking && obj.that.geojson) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8.that.picking) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9.that.picking) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/M2EzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCkge1xyXG4gICAgICAgICAgICAgIC8vIOaYr+WQpuS4uuWkmui+ueW9olxyXG4gICAgICAgICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnUG9seWdvbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIOaYr+WQpuWPr+eCueWHu3lcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDogZrpm4blnLBcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnQXNzZW1ibGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUFzc2VtYmxlKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbaV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpICsgMV1cclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWNleeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDlj4znrq3lpLRcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnUGluY2VyQXJyb3dPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlUGluY2VyQXJyb3cob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgcG9zaXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODQgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbbV0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0XzAgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NF8wLmxuZywgcG9zODRfMC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWchlxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdDaXJjbGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIgJiYgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VudGVyID0gW29iai50aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubGF0XTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaXVzID0gb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMgLyAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBzdGVwczogMzYwLCB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpcmNsZSA9IHR1cmYuY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5omH5b2iXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ1NlY3Rvck9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAmJiBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUgJiYgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jYWxTZWN0b3Iob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIsIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzLCBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUsIG9iai50aGF0Lm9wdGlvbnMuZW5kQW5nbGUsIHVuZGVmaW5lZCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgIGNvbnN0IHBpY2sgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgICAgICAgICBpZiAocGljaykge1xyXG4gICAgICAgICAgICBpZiAocGljay5pZCkge1xyXG4gICAgICAgICAgICAgIGxldCBlbnRpdHlJZFxyXG4gICAgICAgICAgICAgIC8vIOefoumHj1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucGFyZW50SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkID09PSBwaWNrLmlkLl9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwaWNrLmlkLmlkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBwaWNrLmlkLmlkLnNwbGl0KCctJylcclxuICAgICAgICAgICAgICAgIGFycmF5LnNwbGljZShhcnJheS5sZW5ndGggLSAxLCAxKVxyXG4gICAgICAgICAgICAgICAgZW50aXR5SWQgPSBhcnJheS5qb2luKCctJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnByb3BlcnRpZXMgJiYgcGljay5pZC5wcm9wZXJ0aWVzLmlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLmlkKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eUlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhlbnRpdHlJZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHBpY2sucHJpbWl0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBpY2suaWQgPT0gJ3N0cmluZycgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZClcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuZ2VvanNvbikge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/SplitScreen/ClickCallback/index.js\n"); - -/***/ }), - -/***/ "./src/Global/SplitScreen/index.js": -/*!*****************************************!*\ - !*** ./src/Global/SplitScreen/index.js ***! - \*****************************************/ -/*! exports provided: on, off, setSplitDirection, syncSplitData, getState, getActiveId, setActiveId, setActiveViewer, getSdk */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"off\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSplitDirection\", function() { return setSplitDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncSplitData\", function() { return syncSplitData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getState\", function() { return getState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveId\", function() { return getActiveId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveId\", function() { return setActiveId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSdk\", function() { return getSdk; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../mouseRightMenu */ \"./src/Global/mouseRightMenu/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ClickCallback */ \"./src/Global/SplitScreen/ClickCallback/index.js\");\n/* harmony import */ var _SheetIndex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SheetIndex */ \"./src/Global/SheetIndex/index.js\");\n/* harmony import */ var _efflect__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../efflect */ \"./src/Global/efflect/index.js\");\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * 分屏对比\r\n * */\n\n\n\n\n\n\n\n\n\nvar state = false;\nvar sdkD; // 分屏对象\nvar sdkP; // 主屏对象\nvar activeViewer;\nvar controlViewer;\nvar syncObject = {};\nvar handlers = [];\nvar activeIds;\nvar statusMap = new Map();\n// window.statusMap = statusMap\n// async function init(sdk) {\n// sdkP = sdk\n// activeViewer = 0\n// let tools = new Tools()\n// let sdk2 = await new YJ.YJEarth(sdk.div_id)\n// sdk2.viewer._element.className = 'cesium-viewer 2d'\n// // setTimeout(() => {\n// // let switchCluster = new YJ.Global.switchCluster(sdk2, true)\n// // }, 500);\n// CesiumContainer(sdk2, {\n// compass: false, // 罗盘\n// // legend: false, // 比例尺\n// info: false, // 信息栏\n// frame: false // 刷新率\n// })\n// sdk2.viewer.scene.mode = Cesium.SceneMode.SCENE2D\n// sdkD = await sdk2\n// solveBug()\n// await eventBind(sdk, 0)\n// await eventBind(sdk2, 1)\n// syncObject = { sdks: [sdk, sdk2], tools }\n// await syncData(sdk)\n// sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject)\n\n// sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n// sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n// sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n// sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n// // sdk.viewer.entities.collectionChanged.addEventListener(syncEntities)\n// // sdk.viewer.dataSources.dataSourceAdded.addEventListener(syncDataSources)\n// }\nfunction on(_x) {\n return _on.apply(this, arguments);\n}\nfunction _on() {\n _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(sdk) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = true;\n if (sdkD) {} else {\n init(sdk);\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__[\"off\"])(sdk);\n }\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _on.apply(this, arguments);\n}\nfunction off() {\n state = false;\n if (!sdkP) {\n return;\n }\n setSplitDirection(-1, undefined, true);\n var sliderElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdkP.viewer._element.removeChild(sliderElm);\n sdkP.viewer._element.removeChild(leftElm);\n sdkP.viewer._element.removeChild(rightElm);\n }\n sdkP.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n sdkP.viewer.imageryLayers.layerAdded.removeEventListener(syncImageryLayerAdded);\n sdkP.viewer.imageryLayers.layerMoved.removeEventListener(syncImageryLayerMoved);\n sdkP.viewer.imageryLayers.layerRemoved.removeEventListener(syncImageryLayerRemoved);\n sdkP.viewer.imageryLayers.layerShownOrHidden.removeEventListener(syncImageryLayerShownOrHidden);\n // sdk.viewer.entities.collectionChanged.removeEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.removeEventListener(syncDataSources)\n\n //primitiveAdded=undefined基元同步设置在add位置\n // sdk.viewer.scene.primitives.primitiveAdded.removeEventListener(syncPrimitivesAdded)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].destroy();\n }\n if (sdkD) {\n var rightBox = sdkP.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].getElementsByClassName('cesium-widget')[1];\n sdkP.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].removeChild(rightBox);\n // sdkD.destroy()\n handlers = [];\n sdkD = null;\n activeViewer = null;\n syncObject = {};\n }\n var leftBox = sdkP.viewer._element.getElementsByClassName('cesium-widget')[0];\n var leftCanvas = leftBox.getElementsByTagName('canvas')[0];\n leftBox.style.width = '100%';\n leftCanvas.style.width = '100%';\n var billboardAttributeBoxs = sdkP.viewer._element.getElementsByClassName('billboard-attribute-box');\n for (var _i = 0; _i < billboardAttributeBoxs.length; _i++) {\n billboardAttributeBoxs[_i].style.display = 'block';\n }\n sdkP = null;\n}\nfunction init(_x2) {\n return _init.apply(this, arguments);\n} // async function syncData(entityId) {\n// if (!sdkP) {\n// return\n// }\n// let entityMapP = sdkP.entityMap\n// let entityMapD = (sdkD && sdkD.entityMap)\n// if (entityId) {\n// let thatD = entityMapD.get(entityId)\n// if (thatD) {\n// let direction = 0\n// if(thatD.show) {\n// direction = \n// }\n// thatD.remove()\n// }\n// setSplitDirection(entityId)\n// }\n// // else {\n// // for (let [key, thatP] of sdkP.entityMap) {\n// // if (!thatP || !thatP.show) {\n// // continue\n// // }\n// // else {\n// // setEvent(key)\n// // }\n// // }\n// // }\n// }\nfunction _init() {\n _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2(sdk) {\n var billboardAttributeBoxs, i, sliderElm, leftElm, rightElm, left, right, _i3, thatP, status, leftBox, leftCanvas, tools, rightBox, rightCanvas, mousemove, stages, _i6, changeEntitySplitStatus;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n changeEntitySplitStatus = function _changeEntitySplitSta(v) {\n var value;\n // if (v === undefined || v === null) {\n // if (leftElm.checked && rightElm.checked) {\n // value = 0\n // }\n // else {\n // if (leftElm.checked) {\n // value = -1\n // }\n // if (rightElm.checked) {\n // value = 1\n // }\n // }\n // }\n // else {\n // value = v\n // }\n var _iterator = _createForOfIteratorHelper(statusMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2),\n key = _step$value[0],\n _status3 = _step$value[1];\n if (!_status3) {\n value = -1;\n } else if (_status3.P && _status3.D) {\n value = 0;\n } else {\n if (_status3.P) {\n value = -1;\n }\n if (_status3.D) {\n value = 1;\n }\n }\n // else {\n // value = v\n // }\n var entity = sdk.entityMap.get(key);\n // entity && (entity.splitDirection = value)\n entity && setSplitDirection(value, key);\n }\n // if (activeIds && activeIds.length > 0) {\n // for (let i = 0; i < activeIds.length; i++) {\n // let entity = sdk.entityMap.get(activeIds[i])\n // // entity && (entity.splitDirection = value)\n // console.log(entity, activeIds, value)\n // entity && (setSplitDirection(value, entity.options.id))\n // }\n // }\n // else {\n // sdk.entityMap.forEach((item, key) => {\n // // item.splitDirection = value\n // setSplitDirection(value, item.options.id)\n // })\n // }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n };\n mousemove = function _mousemove(a) {\n if (sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0] === a.target || sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0] === a.target || sdk.viewer._element.getElementsByClassName('cesium-widget')[1].getElementsByTagName('canvas')[0] === a.target) {\n var offsetX = a.offsetX;\n if (a.offsetX < 60) {\n offsetX = 60;\n }\n if (a.target.width - a.offsetX < 60) {\n offsetX = a.target.width - 60;\n }\n sliderElm.style.left = offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n leftBox.style.width = offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n leftCanvas.style.width = 100 / (offsetX / sdk.viewer._element.scrollWidth) + '%';\n rightBox.style.width = (1 - offsetX / sdk.viewer._element.scrollWidth) * 100 + '%';\n rightCanvas.style.width = 100 / (1 - offsetX / sdk.viewer._element.scrollWidth) + '%';\n leftElm.style.left = \"calc(\".concat(offsetX / sdk.viewer._element.scrollWidth * 100, \"% - 50px)\");\n rightElm.style.right = \"calc(\".concat((1 - offsetX / sdk.viewer._element.scrollWidth) * 100, \"% - 50px)\");\n }\n };\n billboardAttributeBoxs = sdk.viewer._element.getElementsByClassName('billboard-attribute-box');\n for (i = 0; i < billboardAttributeBoxs.length; i++) {\n billboardAttributeBoxs[i].style.display = 'none';\n }\n sdk.entityMap.forEach(function (item, key) {\n if (item.type && item.type == 'TrajectoryMotion' && item.viewFollow) {\n item.viewFollow = false;\n }\n });\n sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n left = 0;\n right = 0;\n if (!activeIds) {\n _context2.next = 43;\n break;\n }\n _i3 = 0;\n case 32:\n if (!(_i3 < activeIds.length)) {\n _context2.next = 43;\n break;\n }\n thatP = sdk.entityMap.get(activeIds[_i3]);\n if (!(!thatP || thatP.type === 'terrain' || !thatP.show || thatP.type === 'TextBox')) {\n _context2.next = 36;\n break;\n }\n return _context2.abrupt(\"continue\", 40);\n case 36:\n leftElm.style.display = 'unset';\n rightElm.style.display = 'unset';\n status = statusMap.get(activeIds[_i3]);\n if (status) {\n if (status.P) {\n left++;\n }\n if (status.D) {\n right++;\n }\n }\n case 40:\n _i3++;\n _context2.next = 32;\n break;\n case 43:\n sdkP = sdk;\n if (!left && !right) {\n left++;\n }\n leftElm.checked = left ? true : false;\n rightElm.checked = right ? true : false;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n for (var _i4 = 0; _i4 < activeIds.length; _i4++) {\n var _status = statusMap.get(activeIds[_i4]);\n _status = _status || {};\n _status.P = e.target.checked;\n _status.D = rightElm.checked;\n statusMap.set(activeIds[_i4], _status);\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n for (var _i5 = 0; _i5 < activeIds.length; _i5++) {\n var _status2 = statusMap.get(activeIds[_i5]);\n _status2 = _status2 || {};\n _status2.P = leftElm.checked;\n _status2.D = e.target.checked;\n statusMap.set(activeIds[_i5], _status2);\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].style.cursor = 'e-resize';\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].style.cursor = 'unset';\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n leftBox = sdk.viewer._element.getElementsByClassName('cesium-widget')[0];\n leftCanvas = leftBox.getElementsByTagName('canvas')[0];\n leftBox.style.width = '50%';\n leftBox.style.left = '0px';\n leftBox.style.overflow = 'hidden';\n leftCanvas.style.width = '200%';\n activeViewer = 0;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n _context2.next = 61;\n return new YJ.YJEarth(sdk.div_id);\n case 61:\n sdkD = _context2.sent;\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getLeftClickState\"])()) {\n _context2.next = 65;\n break;\n }\n _context2.next = 65;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openLeftClick\"](sdkD);\n case 65:\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getRightClickState\"])()) {\n _context2.next = 68;\n break;\n }\n _context2.next = 68;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openRightClick\"](sdkD);\n case 68:\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getMoveState\"])()) {\n _context2.next = 71;\n break;\n }\n _context2.next = 71;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openMove\"](sdkD);\n case 71:\n if (Object(_mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__[\"getMouseRightMenuStatus\"])(sdk)) {\n Object(_mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__[\"MouseRightMenu\"])(sdkD, true);\n }\n sdkD.viewer._element.style.display = 'none';\n rightBox = document.createElement('div');\n rightBox.className = 'cesium-widget cesium-widget-split';\n rightBox.style.width = '50%';\n rightBox.style.position = 'absolute';\n rightBox.style.right = '0px';\n rightBox.style.overflow = 'hidden';\n rightCanvas = sdkD.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].getElementsByTagName('canvas')[0];\n rightCanvas.style.width = '200%';\n rightCanvas.style.position = 'absolute';\n rightCanvas.style.right = '0px';\n rightBox.appendChild(rightCanvas);\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].appendChild(rightBox);\n document.getElementById(sdk.div_id).removeChild(sdkD.viewer._element);\n _context2.next = 88;\n return eventBind();\n case 88:\n syncObject = {\n sdks: [sdk, sdkD],\n tools: tools\n };\n changeEntitySplitStatus();\n // await setSplitDirection(-1)\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject);\n\n // sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n // sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n // sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n\n if (Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"getFlwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"FlwStatusSwitch\"])(sdkD, true);\n }\n if (Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"getJwwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"JwwStatusSwitch\"])(sdkD, true);\n }\n if (Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_10__[\"getStatus\"])()) {\n Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_10__[\"SheetIndexStatusSwitch\"])(sdkD, true);\n }\n // 雨雪雾夜视星空光照\n stages = sdk.viewer.scene.postProcessStages._stages;\n _i6 = 0;\n case 97:\n if (!(_i6 < stages.length)) {\n _context2.next = 112;\n break;\n }\n _context2.t0 = stages[_i6].name;\n _context2.next = _context2.t0 === 'rain' ? 101 : _context2.t0 === 'snow' ? 103 : _context2.t0 === 'fog' ? 105 : _context2.t0 === 'czm_night_vision' ? 107 : 109;\n break;\n case 101:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"rain\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 103:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"snow\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 105:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"fog\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 107:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"nightVision\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 109:\n _i6++;\n _context2.next = 97;\n break;\n case 112:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"skyStarry\"])(sdkD, !sdk.viewer.scene.skyAtmosphere.show);\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"illumination\"])(sdkD, sdk.viewer.shadows);\n case 114:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _init.apply(this, arguments);\n}\nfunction setSplitDirection(_x3, _x4) {\n return _setSplitDirection.apply(this, arguments);\n}\nfunction _setSplitDirection() {\n _setSplitDirection = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee4(v, id) {\n var isoff,\n entityId,\n entityMapP,\n entityMapD,\n thatP,\n _iterator2,\n _step2,\n _step2$value,\n key,\n _thatP,\n setEvent,\n _setEvent,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _setEvent = function _setEvent3() {\n _setEvent = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee3(id, entityId) {\n var status, thatP, thatD, thatPstate, _state, i, _i7, _i8, _i9, _i10, _i11, _i12, _i13, _i14, _i15, _i16, _i17, options, target, _state2, _state3, _i20, _i21, _i22;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n status = {};\n thatP = entityMapP.get(id);\n if (!(!thatP && !thatP.show)) {\n _context3.next = 4;\n break;\n }\n return _context3.abrupt(\"return\");\n case 4:\n thatD = entityMapD && entityMapD.get(id);\n if (!thatD) {\n _context3.next = 42;\n break;\n }\n _context3.t0 = v;\n _context3.next = _context3.t0 === null ? 9 : _context3.t0 === void 0 ? 9 : _context3.t0 === 0 ? 9 : _context3.t0 === '0' ? 9 : _context3.t0 === 1 ? 21 : _context3.t0 === '1' ? 21 : _context3.t0 === -1 ? 32 : _context3.t0 === '-1' ? 32 : 40;\n break;\n case 9:\n status.P = true;\n status.D = true;\n if (thatP.type === 'TrajectoryMotion') {\n thatPstate = function thatPstate(v) {\n thatP.options.state = v;\n cancelAnimationFrame(thatP._requestAnimationFrameEventId);\n if (thatP.editObj) {\n thatP.editObj.destroy();\n thatP.editObj = null;\n }\n if (thatP.TweenAnimate) {\n clearTimeout(thatP.TweenAnimate.timeout);\n if (v) {\n thatP.lineEdit = false;\n if (thatP.TweenAnimate.isPlaying()) {\n thatP.TweenAnimate.timeout = setTimeout(function () {\n thatP.TweenAnimate.resume();\n }, thatP.options.delay);\n } else {\n thatP.TweenAnimate.delay(thatP.delay).start();\n }\n } else {\n var positionCamera = _objectSpread({}, thatP.sdk.viewer.camera._position);\n thatP._requestAnimationFrameEventId = requestAnimationFrame(function fn() {\n if (thatP.firstPersonView) {\n thatP.sdk.viewer.camera.setView({\n destination: _objectSpread({}, positionCamera),\n orientation: {\n heading: thatP.sdk.viewer.camera.heading,\n pitch: thatP.sdk.viewer.camera.pitch,\n roll: thatP.sdk.viewer.camera.roll\n }\n });\n }\n thatP._requestAnimationFrameEventId = requestAnimationFrame(fn);\n });\n thatP.TweenAnimate.pause();\n }\n } else {\n if (v) {\n var positions = thatP.renewLinePositions(thatP.options.line.positions);\n thatP.modelMove(positions);\n }\n }\n };\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n if (thatP.TweenAnimate) {\n _state = thatP.state;\n if (_state) {\n thatPstate(false);\n }\n thatD.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatPstate(_state);\n }\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (entityId) {\n for (i = 0; i < thatP.entity.entities.values.length; i++) {\n if (thatP.entity.entities.values[i].id === entityId) {\n thatP.entity.entities.values[i].show = thatP.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i7 = 0; _i7 < thatP.entity.entities.values.length; _i7++) {\n thatP.entity.entities.values[_i7].show = thatP.entity.entities.values[_i7]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = true);\n }\n if (thatP.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (thatP.type === 'AttackArrowObject' || thatP.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n thatD.textShow = thatP.textShow;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.labelShow = true;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i8 = 0; _i8 < thatD.entity.entities.values.length; _i8++) {\n if (thatD.entity.entities.values[_i8].id === entityId) {\n thatD.entity.entities.values[_i8].show = thatP.entity.entities.values[_i8]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i9 = 0; _i9 < thatD.entity.entities.values.length; _i9++) {\n thatD.entity.entities.values[_i9].show = thatP.entity.entities.values[_i9]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatD.show = true;\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.firstPersonView = thatP.firstPersonView;\n }\n if (thatD.type === 'Explosion') {\n thatD.entity.imgIndex = thatP.entity.imgIndex;\n }\n return _context3.abrupt(\"break\", 40);\n case 21:\n status.P = false;\n status.D = true;\n if (thatP.type === 'TrajectoryMotion') {\n thatP.entity && (thatP.entity.show = false);\n thatP.line && (thatP.line.show = false);\n thatP.realTimeLine && (thatP.realTimeLine.show = false);\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (!entityId) {\n for (_i10 = 0; _i10 < thatP.entity.entities.values.length; _i10++) {\n thatP.entity.entities.values[_i10].show = false;\n }\n } else {\n for (_i11 = 0; _i11 < thatP.entity.entities.values.length; _i11++) {\n if (thatP.entity.entities.values[_i11].id === entityId) {\n thatP.entity.entities.values[_i11].show = false;\n }\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = false);\n }\n if (thatP.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (thatP.type === 'AttackArrowObject' || thatP.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = false;\n thatD.textShow = thatP.textShow;\n }\n if (thatP.label) {\n thatP.label.entity.show = false;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i12 = 0; _i12 < thatD.entity.entities.values.length; _i12++) {\n if (thatD.entity.entities.values[_i12].id === entityId) {\n thatD.entity.entities.values[_i12].show = thatP.entity.entities.values[_i12]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i13 = 0; _i13 < thatD.entity.entities.values.length; _i13++) {\n thatD.entity.entities.values[_i13].show = thatP.entity.entities.values[_i13]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatD.show = true;\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.firstPersonView = thatP.firstPersonView;\n }\n return _context3.abrupt(\"break\", 40);\n case 32:\n status.P = true;\n status.D = false;\n if (thatP.type === 'TrajectoryMotion') {\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n // if (thatP.TweenAnimate) {\n // let state = thatP.state\n // if (state) {\n // thatP.state = false\n // }\n // thatD.setMovePositionByDistance(thatP.TweenAnimate._object.distance)\n // thatP.state = state\n // }\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (entityId) {\n for (_i14 = 0; _i14 < thatP.entity.entities.values.length; _i14++) {\n if (thatP.entity.entities.values[_i14].id === entityId) {\n thatP.entity.entities.values[_i14].show = thatP.entity.entities.values[_i14]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i15 = 0; _i15 < thatP.entity.entities.values.length; _i15++) {\n thatP.entity.entities.values[_i15].show = thatP.entity.entities.values[_i15]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = true);\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n thatD.textShow = false;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatP.type === 'terrain') {\n thatD.show = true;\n } else if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i16 = 0; _i16 < thatD.entity.entities.values.length; _i16++) {\n if (thatD.entity.entities.values[_i16].id === entityId) {\n if (thatD.entity.entities.values[_i16].id === entityId) {\n thatD.entity.entities.values[_i16].show = false;\n }\n }\n }\n } else {\n for (_i17 = 0; _i17 < thatD.entity.entities.values.length; _i17++) {\n thatD.entity.entities.values[_i17].show = false;\n }\n }\n }\n } else {\n thatD.show = false;\n }\n return _context3.abrupt(\"break\", 40);\n case 40:\n _context3.next = 120;\n break;\n case 42:\n options = syncObject.tools.deepCopyObj(thatP.options);\n _context3.t1 = v;\n _context3.next = _context3.t1 === null ? 46 : _context3.t1 === void 0 ? 46 : _context3.t1 === 0 ? 46 : _context3.t1 === '0' ? 46 : _context3.t1 === 1 ? 75 : _context3.t1 === '1' ? 75 : _context3.t1 === -1 ? 100 : _context3.t1 === '-1' ? 100 : 120;\n break;\n case 46:\n status.P = true;\n status.D = true;\n options.show = true;\n if (thatP.type === 'layer') {\n options.layer_index = thatP.layer_index;\n }\n _context3.next = 52;\n return new thatP.constructor(sdkD, options);\n case 52:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 63;\n break;\n }\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n if (thatP.TweenAnimate) {\n _state2 = thatP.state;\n if (_state2) {\n thatP.state = false;\n }\n target.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatP.state = _state2;\n }\n _context3.next = 72;\n break;\n case 63:\n if (!(target.type !== 'glb' && target.on)) {\n _context3.next = 67;\n break;\n }\n if (target.type === 'vector') {\n target.data = thatP.data;\n }\n _context3.next = 67;\n return target.on();\n case 67:\n if (target.type === 'Explosion') {\n target.entity.imgIndex = thatP.entity.imgIndex;\n }\n if (target.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n target.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (target.type === 'AttackArrowObject' || target.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n target.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'vector') {\n target.load(function () {\n if (target.entity) {\n if (entityId) {\n for (var _i18 = 0; _i18 < target.entity.entities.values.length; _i18++) {\n if (target.entity.entities.values[_i18].id === entityId) {\n target.entity.entities.values[_i18].show = thatP.entity.entities.values[_i18]._customShow === false ? false : true;\n }\n }\n } else {\n for (var _i19 = 0; _i19 < target.entity.entities.values.length; _i19++) {\n target.entity.entities.values[_i19].show = thatP.entity.entities.values[_i19]._customShow === false ? false : true;\n }\n }\n }\n });\n }\n thatP.entity && (thatP.entity.show = true);\n case 72:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n target.textShow = thatP.textShow;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n return _context3.abrupt(\"break\", 120);\n case 75:\n status.P = false;\n status.D = true;\n options.show = true;\n if (thatP.type === 'layer') {\n options.layer_index = thatP.layer_index;\n }\n _context3.next = 81;\n return new thatP.constructor(sdkD, options);\n case 81:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 92;\n break;\n }\n if (thatP.entity && thatP.modelShow) {\n thatP.entity.show = false;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = false;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = false;\n }\n if (thatP.TweenAnimate) {\n _state3 = thatP.state;\n if (_state3) {\n thatP.state = false;\n }\n target.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatP.state = _state3;\n }\n _context3.next = 97;\n break;\n case 92:\n if (!(target.type !== 'glb' && target.on)) {\n _context3.next = 96;\n break;\n }\n if (thatP.type === 'vector') {\n target.data = thatP.data;\n if (thatP.entity) {\n for (_i20 = 0; _i20 < thatP.entity.entities.values.length; _i20++) {\n thatP.entity.entities.values[_i20].show = false;\n }\n }\n }\n _context3.next = 96;\n return target.on();\n case 96:\n if (thatP.type === 'vector') {\n if (target.entity) {\n if (entityId) {\n for (_i21 = 0; _i21 < target.entity.entities.values.length; _i21++) {\n if (target.entity.entities.values[_i21].id === entityId) {\n target.entity.entities.values[_i21].show = thatP.entity.entities.values[_i21]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i22 = 0; _i22 < target.entity.entities.values.length; _i22++) {\n target.entity.entities.values[_i22].show = thatP.entity.entities.values[_i22]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = false);\n }\n case 97:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = false;\n target.textShow = thatP.textShow;\n }\n if (thatP.label) {\n thatP.label.entity.show = false;\n }\n return _context3.abrupt(\"break\", 120);\n case 100:\n status.P = true;\n status.D = false;\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 108;\n break;\n }\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n // if (thatP.TweenAnimate) {\n // let state = thatP.state\n // if (state) {\n // thatP.state = false\n // }\n // target.setMovePositionByDistance(thatP.TweenAnimate._object.distance)\n // thatP.state = state\n // }\n _context3.next = 117;\n break;\n case 108:\n thatP.entity && (thatP.entity.show = true);\n if (!(thatP.type === 'terrain')) {\n _context3.next = 117;\n break;\n }\n options.show = true;\n _context3.next = 113;\n return new thatP.constructor(sdkD, options);\n case 113:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n case 117:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n target && (target.textShow = false);\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n return _context3.abrupt(\"break\", 120);\n case 120:\n if (!isoff) {\n statusMap.set(id, status);\n }\n case 121:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _setEvent.apply(this, arguments);\n };\n setEvent = function _setEvent2(_x6, _x7) {\n return _setEvent.apply(this, arguments);\n };\n isoff = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : false;\n entityId = _args4.length > 3 ? _args4[3] : undefined;\n if (sdkP) {\n _context4.next = 6;\n break;\n }\n return _context4.abrupt(\"return\");\n case 6:\n entityMapP = sdkP.entityMap;\n entityMapD = sdkD && sdkD.entityMap;\n if (!id) {\n _context4.next = 15;\n break;\n }\n thatP = entityMapP.get(id);\n if (!(!thatP || !thatP.show)) {\n _context4.next = 12;\n break;\n }\n return _context4.abrupt(\"return\");\n case 12:\n setEvent(id, entityId);\n _context4.next = 35;\n break;\n case 15:\n _iterator2 = _createForOfIteratorHelper(sdkP.entityMap);\n _context4.prev = 16;\n _iterator2.s();\n case 18:\n if ((_step2 = _iterator2.n()).done) {\n _context4.next = 27;\n break;\n }\n _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step2.value, 2), key = _step2$value[0], _thatP = _step2$value[1];\n if (!(!_thatP || !_thatP.show)) {\n _context4.next = 24;\n break;\n }\n return _context4.abrupt(\"continue\", 25);\n case 24:\n setEvent(key, entityId);\n case 25:\n _context4.next = 18;\n break;\n case 27:\n _context4.next = 32;\n break;\n case 29:\n _context4.prev = 29;\n _context4.t0 = _context4[\"catch\"](16);\n _iterator2.e(_context4.t0);\n case 32:\n _context4.prev = 32;\n _iterator2.f();\n return _context4.finish(32);\n case 35:\n if (!isoff) {\n _context4.next = 37;\n break;\n }\n return _context4.abrupt(\"return\");\n case 37:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[16, 29, 32, 35]]);\n }));\n return _setSplitDirection.apply(this, arguments);\n}\nfunction syncEntities(entities1, entities2) {\n if (!sdkP) {\n return;\n }\n if (sdkD) {\n if (Array.isArray(entities1) || Array.isArray(entities2)) {\n entities1 = null;\n entities2 = null;\n }\n if (!entities1) {\n entities1 = sdkD.viewer.entities;\n }\n if (!entities2) {\n entities2 = sdkP.viewer.entities;\n }\n var entities2D = entities1;\n var entities3D = entities2;\n for (var i = entities2D.values.length - 1; i >= 0; i--) {\n var flag = false;\n for (var m = entities3D.values.length - 1; m >= 0; m--) {\n if (entities2D.values[i].id === entities3D.values[m].id) {\n flag = true;\n entities2D.values[i] === entities3D.values[m];\n }\n }\n if (!flag) {\n entities2D.remove(entities2D.values[i]);\n }\n }\n for (var _m = entities3D.values.length - 1; _m >= 0; _m--) {\n var _flag = false;\n for (var _i2 = entities2D.values.length - 1; _i2 >= 0; _i2--) {\n if (entities2D.values[_i2].id === entities3D.values[_m].id) {\n _flag = true;\n break;\n }\n }\n if (!_flag) {\n var entity = entities2D.add(entities3D.values[_m]);\n // if (entity.rectangle) {\n // // 设置高度,否则在某些位置无法显示,但色彩会变暗\n // entity.rectangle.height = 0\n // console.log('242342354235',entities3D.values[m])\n // }\n }\n }\n }\n}\nfunction syncDataSources(dataSources, type) {\n if (!sdkP) {\n return;\n }\n if (sdkD) {\n var dataSources2D = sdkD.viewer.dataSources;\n if (dataSources) {\n for (var i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n if (dataSources2D._dataSources[i].name === dataSources.name) {\n if (type === 'entities') {\n syncEntities(dataSources2D._dataSources[i].entities, dataSources.entities);\n }\n if (type === 'clustering') {\n dataSources2D._dataSources[i].clustering.enabled = dataSources.clustering.enabled;\n }\n }\n }\n }\n // for (let m = dataSources3D._dataSources.length - 1; m >= 0; m--) {\n // let flag = false\n // for (let i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n // console.log(dataSources2D._dataSources[i].name, dataSources3D._dataSources[m].name)\n // if (dataSources2D._dataSources[i].name === dataSources3D._dataSources[m].name) {\n // flag = true\n // break\n // }\n // }\n // if (!flag) {\n // dataSources2D.add(dataSources3D._dataSources[m])\n // }\n // }\n }\n}\nfunction syncImageryLayerAdded(layer, index) {\n sdkD.viewer.imageryLayers.addImageryProvider(layer.imageryProvider, index);\n}\nfunction syncImageryLayerMoved(layer, newindxe, oldindex) {\n var layerD;\n for (var i = 0; i < sdkD.viewer.imageryLayers._layers.length; i++) {\n if (sdkD.viewer.imageryLayers._layers[i]._id === layer._id) {\n layerD = sdkD.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (!layerD) {\n return;\n }\n // 移到最底层\n if (newindxe === 0) {\n sdkD.viewer.imageryLayers.lowerToBottom(layerD);\n }\n // 移到最高层\n else if (newindxe >= sdkD.viewer.imageryLayers._layers.length - 1) {\n sdkD.viewer.imageryLayers.raiseToTop(layerD);\n } else {\n if (newindxe < oldindex) {\n if (newindxe < sdkD.viewer.imageryLayers._layers.length - 1) {\n sdkD.viewer.imageryLayers.lower(layerD);\n }\n } else {\n sdkD.viewer.imageryLayers.raise(layerD);\n }\n }\n}\nfunction syncImageryLayerRemoved(layer, index) {\n var layerD = sdkD.viewer.imageryLayers._layers[index];\n if (!layerD) {\n return;\n }\n sdkD.viewer.imageryLayers.remove(layerD);\n}\nfunction syncImageryLayerShownOrHidden(layer, index, state) {\n var layerD = sdkD.viewer.imageryLayers._layers[index];\n if (!layerD) {\n return;\n }\n layerD.show = state;\n}\nfunction syncPrimitives(_x5) {\n return _syncPrimitives.apply(this, arguments);\n}\nfunction _syncPrimitives() {\n _syncPrimitives = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee5(primitive) {\n var primitives2D, primitives3D, i, flag, m, _m2, _flag2, _i23;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (sdkP) {\n _context5.next = 2;\n break;\n }\n return _context5.abrupt(\"return\");\n case 2:\n if (sdkD) {\n // await sdkD.viewer.scene.primitives.remove(primitive)\n // await sdkD.viewer.scene.primitives.add(primitive)\n primitives2D = sdkD.viewer.scene.primitives._primitives;\n primitives3D = sdkP.viewer.scene.primitives._primitives; // console.log(primitives2D, primitives3D)\n // setTimeout(() => {\n // sdkD.viewer.scene.primitives._primitives[1] = sdkP.viewer.scene.primitives._primitives[1]\n // }, 2000);\n for (i = primitives2D.length - 1; i >= 1; i--) {\n flag = false;\n for (m = primitives3D.length - 1; m >= 1; m--) {\n if (primitives3D[m].id && primitives2D[i].id && primitives3D[m].id === primitives2D[i].id) {\n flag = true;\n }\n }\n if (!flag) {\n sdkD.viewer.scene.primitives.remove(primitives2D[i]);\n }\n }\n for (_m2 = primitives3D.length - 1; _m2 >= 1; _m2--) {\n _flag2 = false;\n for (_i23 = primitives2D.length - 1; _i23 >= 1; _i23--) {\n if (primitives3D[_m2].id && primitives2D[_i23].id && primitives3D[_m2].id === primitives2D[_i23].id) {\n _flag2 = true;\n primitives2D[_i23].show = primitives3D[_m2].show;\n primitives2D[_i23].startColor = primitives3D[_m2].startColor;\n primitives2D[_i23].endColor = primitives3D[_m2].endColor;\n primitives2D[_i23].minimumSpeed = primitives3D[_m2].minimumSpeed;\n primitives2D[_i23].maximumSpeed = primitives3D[_m2].maximumSpeed;\n primitives2D[_i23].minimumParticleLife = primitives3D[_m2].minimumParticleLife;\n primitives2D[_i23].maximumParticleLife = primitives3D[_m2].maximumParticleLife;\n primitives2D[_i23].startScale = primitives3D[_m2].startScale;\n primitives2D[_i23].endScale = primitives3D[_m2].endScale;\n primitives2D[_i23].emissionRate = primitives3D[_m2].emissionRate;\n primitives2D[_i23].particleSize = primitives3D[_m2].particleSize;\n primitives2D[_i23].modelMatrix = primitives3D[_m2].modelMatrix;\n }\n }\n if (!_flag2) {\n sdkD.viewer.scene.primitives.add(primitives3D[_m2]);\n }\n }\n }\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _syncPrimitives.apply(this, arguments);\n}\nfunction eventBind() {\n var handler0 = new Cesium.ScreenSpaceEventHandler(sdkP.viewer._element.getElementsByClassName('cesium-widget')[0]);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler0);\n var distanceLegendDiv = document.getElementById('distanceLegendDiv');\n function distanceLegendDivMouseMove(e) {\n activeViewer = 0;\n }\n distanceLegendDiv.addEventListener('mousemove', distanceLegendDivMouseMove);\n handlers.push({\n destroy: function destroy() {\n distanceLegendDiv.removeEventListener('mousemove', distanceLegendDivMouseMove);\n }\n });\n var handler1 = new Cesium.ScreenSpaceEventHandler(sdkP.viewer._element.getElementsByClassName('cesium-widget')[1]);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler1);\n}\nfunction syncViewer() {\n var sdk = this.sdks[activeViewer];\n var sdk2;\n if (activeViewer === 0) {\n sdk2 = this.sdks[1];\n } else if (activeViewer === 1) {\n sdk2 = this.sdks[0];\n }\n var destination = sdk.viewer.camera.position;\n // if (this.sdks[0].viewer.trackedEntity) {\n // // console.log(sdk,sdk2)\n // // sdk2.viewer.camera.setView({\n // // orientation: {\n // // heading: sdk.viewer.camera.heading,\n // // pitch: sdk.viewer.camera.pitch,\n // // roll: sdk.viewer.camera.roll\n // // }\n // // })\n // // if(sdk2.viewer.trackedEntity) {\n // // sdk2.viewer.trackedEntity.position = sdk.viewer.trackedEntity.position\n // // }\n // // else {\n // // let trackedEntity = sdk2.viewer.entities.add(sdk.viewer.trackedEntity)\n // // sdk2.viewer.trackedEntity = trackedEntity\n // // }\n // // sdk2.viewer.camera.position = sdk.viewer.camera.position\n // if(!sdk.viewer.trackedEntity) {\n // let id = this.sdks[0].viewer.trackedEntity.id\n // let trackedEntity = sdk2.viewer.entities.getById(id)\n // if(trackedEntity) {\n // trackedEntity.position = this.sdks[0].viewer.trackedEntity.position\n // }\n // else {\n // trackedEntity = sdk2.viewer.entities.add(sdk.viewer.trackedEntity)\n // }\n // sdk.viewer.trackedEntity = trackedEntity\n // }\n // else {\n // sdk.viewer.trackedEntity.position = this.sdks[0].viewer.trackedEntity.position\n // }\n // let distance = Cesium.Cartesian3.distance(sdk.viewer.trackedEntity.position._value, sdk.viewer.camera.positionWC);\n // sdk2.viewer.camera.lookAt(\n // this.sdks[0].viewer.trackedEntity.position._value,\n // new Cesium.HeadingPitchRange(sdk.viewer.camera.heading, sdk.viewer.camera.pitch, distance)\n // )\n // }\n // else {\n // if(this.sdks[1].viewer.trackedEntity) {\n // this.sdks[1].viewer.entities.remove(this.sdks[1].viewer.trackedEntity)\n // this.sdks[1].viewer.trackedEntity = null\n // destination = sdk.viewer.camera.position\n // }\n // sdk2.viewer.camera.setView({\n // destination: destination,\n // orientation: {\n // heading: sdk.viewer.camera.heading,\n // pitch: sdk.viewer.camera.pitch,\n // roll: sdk.viewer.camera.roll\n // }\n // })\n // }\n\n sdk2.viewer.camera.setView({\n destination: destination,\n orientation: {\n heading: sdk.viewer.camera.heading,\n pitch: sdk.viewer.camera.pitch,\n roll: sdk.viewer.camera.roll\n }\n });\n}\nfunction getState() {\n return state;\n}\nfunction getActiveId() {\n return activeIds;\n}\nfunction setActiveId() {\n var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // console.log('=================================')\n if (Array.isArray(ids)) {\n activeIds = ids;\n } else {\n activeIds = [ids];\n }\n if (!sdkP || !sdkD) {\n return;\n }\n var leftElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (!ids || ids.length === 0) {\n if (leftElm && rightElm) {\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n }\n } else {\n if (leftElm && rightElm) {\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n var left = 0;\n var right = 0;\n for (var i = 0; i < activeIds.length; i++) {\n var status = statusMap.get(activeIds[i]);\n if (!status) {\n status = {\n P: true,\n D: false\n };\n statusMap.set(activeIds[i], status);\n }\n if (status.P) {\n left++;\n }\n if (status.D) {\n right++;\n }\n var thatP = sdkP.entityMap.get(activeIds[i]);\n // let thatD = sdkD.entityMap.get(activeIds[i])\n if (!thatP || thatP.type === 'terrain' || !thatP.show || thatP.type === 'TextBox') {\n continue;\n }\n leftElm.style.display = 'unset';\n rightElm.style.display = 'unset';\n leftElm.checked = false;\n rightElm.checked = false;\n\n // if (thatP) {\n // if (thatP.type === 'TrajectoryMotion') {\n // if (thatP.entity && (thatP.modelShow || thatP.lineShow || thatP.labelShow || thatP.realTimeRoute) && (thatP.entity.show || thatP.line.show || (thatP.label && thatP.label.entity.show) || thatP.realTimeLine.show)) {\n // leftElm.checked = true\n // }\n // }\n // else if (thatP.type === 'vector') {\n // leftElm.checked = status.P\n // }\n // else {\n // if (thatP.entity && thatP.entity.show) {\n // leftElm.checked = true\n // }\n // }\n // }\n // if (thatD) {\n // if (thatP.type === 'TrajectoryMotion') {\n // if (thatD.show && thatD.entity && (thatD.modelShow || thatD.lineShow || thatD.labelShow || thatD.realTimeRoute) && (thatD.entity.show || thatD.line.show || (thatD.label && thatD.label.entity.show) || thatD.realTimeLine.show)) {\n // rightElm.checked = true\n // }\n // }\n // else if (thatP.type === 'vector') {\n // rightElm.checked = status.D\n // }\n // else {\n // if (thatD.show) {\n // rightElm.checked = true\n // }\n // }\n // }\n }\n if (!left && !right) {\n left++;\n }\n leftElm.checked = left ? true : false;\n rightElm.checked = right ? true : false;\n }\n }\n}\nfunction syncSplitData(sdk, id, entityId) {\n if (!sdkP || !sdkD || sdk !== sdkP || !id) {\n return;\n }\n var status = statusMap.get(id);\n var thatP = sdkP.entityMap.get(id);\n var thatD = sdkD.entityMap.get(id);\n if (thatP) {\n var value;\n if (status) {\n if (status.P && status.D) {\n value = 0;\n } else {\n if (status.P) {\n value = -1;\n }\n if (status.D) {\n value = 1;\n }\n }\n } else {\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (leftElm.style.display === 'none' || rightElm.style.display === 'none') {\n value = -1;\n } else {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n }\n }\n if (thatD) {\n thatD.options = JSON.parse(JSON.stringify(thatP.options));\n thatD.originalOptions = JSON.parse(JSON.stringify(thatP.options));\n if (thatP.oldData) {\n thatD.oldData = JSON.parse(JSON.stringify(thatP.oldData));\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.height = thatD.options.height;\n }\n thatD.reset && thatD.reset();\n if (thatP.show) {\n setSplitDirection(value, id, false, entityId);\n } else {\n thatD.show = false;\n }\n\n // else {\n // thatD.show = false\n // }\n } else {\n var _value = -1;\n // if (thatP.show) {\n // let leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0]\n // let rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0]\n // if (leftElm.checked && rightElm.checked) {\n // value = 0\n // }\n // else {\n // if (leftElm.checked) {\n // value = -1\n // }\n // if (rightElm.checked) {\n // value = 1\n // }\n // }\n // }\n setSplitDirection(_value, id, false, entityId);\n }\n } else {\n thatD && thatD.remove();\n }\n}\nfunction setActiveViewer(v) {\n activeViewer = v;\n}\nfunction getSdk() {\n return {\n sdkP: sdkP,\n sdkD: sdkD\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9TcGxpdFNjcmVlbi9pbmRleC5qcz83MDhkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDliIblsY/lr7nmr5RcclxuICogKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJztcclxuaW1wb3J0IHsgQ2VzaXVtQ29udGFpbmVyLCBjbG9zZVJvdGF0ZUFyb3VuZCB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IHsgRmx3U3RhdHVzU3dpdGNoLCBKd3dTdGF0dXNTd2l0Y2gsIGdldEZsd1N0YXR1cywgZ2V0Snd3U3RhdHVzIH0gZnJvbSBcIi4uL2dsb2JhbFwiXHJcbmltcG9ydCB7IG9mZiBhcyBvZmZNdWx0aVZpZXdwb3J0TW9kZSB9IGZyb20gJy4uL011bHRpVmlld3BvcnRNb2RlJztcclxuaW1wb3J0IHsgTW91c2VSaWdodE1lbnUsIGdldE1vdXNlUmlnaHRNZW51U3RhdHVzIH0gZnJvbSAnLi4vbW91c2VSaWdodE1lbnUnO1xyXG5pbXBvcnQgeyBnZXRMZWZ0Q2xpY2tTdGF0ZSwgZ2V0UmlnaHRDbGlja1N0YXRlLCBnZXRNb3ZlU3RhdGUgfSBmcm9tICcuLi9DbGlja0NhbGxiYWNrJ1xyXG5pbXBvcnQgeyBvcGVuTGVmdENsaWNrLCBvcGVuUmlnaHRDbGljaywgb3Blbk1vdmUgfSBmcm9tICcuL0NsaWNrQ2FsbGJhY2snXHJcbmltcG9ydCB7IFNoZWV0SW5kZXhTdGF0dXNTd2l0Y2gsIGdldFN0YXR1cyB9IGZyb20gJy4uL1NoZWV0SW5kZXgnXHJcbmltcG9ydCB7IHJhaW4sIHNub3csIGZvZywgbmlnaHRWaXNpb24sIHNreVN0YXJyeSwgaWxsdW1pbmF0aW9uIH0gZnJvbSAnLi4vZWZmbGVjdCdcclxuXHJcblxyXG5sZXQgc3RhdGUgPSBmYWxzZVxyXG5sZXQgc2RrRCAvLyDliIblsY/lr7nosaFcclxubGV0IHNka1AgLy8g5Li75bGP5a+56LGhXHJcbmxldCBhY3RpdmVWaWV3ZXJcclxubGV0IGNvbnRyb2xWaWV3ZXJcclxubGV0IHN5bmNPYmplY3QgPSB7fVxyXG5sZXQgaGFuZGxlcnMgPSBbXVxyXG5sZXQgYWN0aXZlSWRzXHJcbmxldCBzdGF0dXNNYXAgPSBuZXcgTWFwKClcclxuLy8gd2luZG93LnN0YXR1c01hcCA9IHN0YXR1c01hcFxyXG4vLyBhc3luYyBmdW5jdGlvbiBpbml0KHNkaykge1xyXG4vLyAgIHNka1AgPSBzZGtcclxuLy8gICBhY3RpdmVWaWV3ZXIgPSAwXHJcbi8vICAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuLy8gICBsZXQgc2RrMiA9IGF3YWl0IG5ldyBZSi5ZSkVhcnRoKHNkay5kaXZfaWQpXHJcbi8vICAgc2RrMi52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lID0gJ2Nlc2l1bS12aWV3ZXIgMmQnXHJcbi8vICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbi8vICAgLy8gICBsZXQgc3dpdGNoQ2x1c3RlciA9IG5ldyBZSi5HbG9iYWwuc3dpdGNoQ2x1c3RlcihzZGsyLCB0cnVlKVxyXG4vLyAgIC8vIH0sIDUwMCk7XHJcbi8vICAgQ2VzaXVtQ29udGFpbmVyKHNkazIsIHtcclxuLy8gICAgIGNvbXBhc3M6IGZhbHNlLCAvLyDnvZfnm5hcclxuLy8gICAgIC8vIGxlZ2VuZDogZmFsc2UsIC8vIOavlOS+i+WwulxyXG4vLyAgICAgaW5mbzogZmFsc2UsIC8vIOS/oeaBr+agj1xyXG4vLyAgICAgZnJhbWU6IGZhbHNlIC8vIOWIt+aWsOeOh1xyXG4vLyAgIH0pXHJcbi8vICAgc2RrMi52aWV3ZXIuc2NlbmUubW9kZSA9IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUyRFxyXG4vLyAgIHNka0QgPSBhd2FpdCBzZGsyXHJcbi8vICAgc29sdmVCdWcoKVxyXG4vLyAgIGF3YWl0IGV2ZW50QmluZChzZGssIDApXHJcbi8vICAgYXdhaXQgZXZlbnRCaW5kKHNkazIsIDEpXHJcbi8vICAgc3luY09iamVjdCA9IHsgc2RrczogW3Nkaywgc2RrMl0sIHRvb2xzIH1cclxuLy8gICBhd2FpdCBzeW5jRGF0YShzZGspXHJcbi8vICAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG5cclxuLy8gICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbi8vICAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyTW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyTW92ZWQpO1xyXG4vLyAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclJlbW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZCk7XHJcbi8vICAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuLy8gICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4vLyAgIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG4vLyB9XHJcbmFzeW5jIGZ1bmN0aW9uIG9uKHNkaykge1xyXG4gIHN0YXRlID0gdHJ1ZVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaW5pdChzZGspXHJcbiAgICBvZmZNdWx0aVZpZXdwb3J0TW9kZShzZGspXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvZmYoKSB7XHJcbiAgc3RhdGUgPSBmYWxzZVxyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHNldFNwbGl0RGlyZWN0aW9uKC0xLCB1bmRlZmluZWQsIHRydWUpXHJcbiAgbGV0IHNsaWRlckVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1zbGlkZXInKVswXVxyXG4gIGxldCBsZWZ0RWxtID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnKVswXVxyXG4gIGxldCByaWdodEVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQobGVmdEVsbSlcclxuICAgIHNka1Audmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBzZGtQLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG4gIHNka1Audmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbiAgc2RrUC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICBzZGtQLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyUmVtb3ZlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJSZW1vdmVkKTtcclxuICBzZGtQLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4gIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG5cclxuICAvL3ByaW1pdGl2ZUFkZGVkPXVuZGVmaW5lZOWfuuWFg+WQjOatpeiuvue9ruWcqGFkZOS9jee9rlxyXG4gIC8vIHNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5wcmltaXRpdmVBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNQcmltaXRpdmVzQWRkZWQpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgaGFuZGxlcnNbaV0uZGVzdHJveSgpXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBsZXQgcmlnaHRCb3ggPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tdmlld2VyLWNlc2l1bVdpZGdldENvbnRhaW5lcicpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXVxyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXS5yZW1vdmVDaGlsZChyaWdodEJveClcclxuICAgIC8vIHNka0QuZGVzdHJveSgpXHJcbiAgICBoYW5kbGVycyA9IFtdXHJcbiAgICBzZGtEID0gbnVsbFxyXG4gICAgYWN0aXZlVmlld2VyID0gbnVsbFxyXG4gICAgc3luY09iamVjdCA9IHt9XHJcbiAgfVxyXG4gIGxldCBsZWZ0Qm94ID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdXHJcbiAgbGV0IGxlZnRDYW52YXMgPSBsZWZ0Qm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gIGxlZnRCb3guc3R5bGUud2lkdGggPSAnMTAwJSdcclxuICBsZWZ0Q2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnXHJcbiAgbGV0IGJpbGxib2FyZEF0dHJpYnV0ZUJveHMgPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiaWxsYm9hcmQtYXR0cmlidXRlLWJveCcpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzW2ldLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgfVxyXG4gIHNka1AgPSBudWxsXHJcbn1cclxuXHJcblxyXG5hc3luYyBmdW5jdGlvbiBpbml0KHNkaykge1xyXG4gIGxldCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiaWxsYm9hcmQtYXR0cmlidXRlLWJveCcpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzW2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICB9XHJcblxyXG4gIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICBpZiAoaXRlbS50eXBlICYmIGl0ZW0udHlwZSA9PSAnVHJhamVjdG9yeU1vdGlvbicgJiYgaXRlbS52aWV3Rm9sbG93KSB7XHJcbiAgICAgIGl0ZW0udmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgfSlcclxuICBsZXQgc2xpZGVyRWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tc2xpZGVyJylbMF1cclxuICBsZXQgbGVmdEVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnKVswXVxyXG4gIGxldCByaWdodEVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0JylbMF1cclxuICBpZiAoc2xpZGVyRWxtKSB7XHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHNsaWRlckVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQocmlnaHRFbG0pXHJcbiAgfVxyXG4gIHNsaWRlckVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICBzbGlkZXJFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbiAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAnNTAlJ1xyXG4gIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICBsZWZ0RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICBsZWZ0RWxtLmNsYXNzTmFtZSA9ICdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCdcclxuICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgbGVmdEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICBsZWZ0RWxtLnN0eWxlLmxlZnQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgcmlnaHRFbG0uY2xhc3NOYW1lID0gJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCdcclxuICByaWdodEVsbS50eXBlID0gJ2NoZWNrYm94J1xyXG4gIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gIHJpZ2h0RWxtLnN0eWxlLnJpZ2h0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcblxyXG4gIGxlZnRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0RWxtKVxyXG4gIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gIGxldCBsZWZ0ID0gMFxyXG4gIGxldCByaWdodCA9IDBcclxuICBpZiAoYWN0aXZlSWRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdGhhdFAgPSBzZGsuZW50aXR5TWFwLmdldChhY3RpdmVJZHNbaV0pXHJcbiAgICAgIGlmICghdGhhdFAgfHwgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJyB8fCAhdGhhdFAuc2hvdykgfHwgdGhhdFAudHlwZSA9PT0gJ1RleHRCb3gnKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBsZWZ0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgIGxldCBzdGF0dXMgPSBzdGF0dXNNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAgIGlmIChzdGF0dXMuUCkge1xyXG4gICAgICAgICAgbGVmdCsrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgcmlnaHQrK1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNka1AgPSBzZGtcclxuXHJcbiAgaWYgKCFsZWZ0ICYmICFyaWdodCkge1xyXG4gICAgbGVmdCsrXHJcbiAgfVxyXG4gIGxlZnRFbG0uY2hlY2tlZCA9IGxlZnQgPyB0cnVlIDogZmFsc2VcclxuICByaWdodEVsbS5jaGVja2VkID0gcmlnaHQgPyB0cnVlIDogZmFsc2VcclxuICBsZWZ0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgaWYgKCFyaWdodEVsbS5jaGVja2VkKSB7XHJcbiAgICAgICAgcmlnaHRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHN0YXR1cyA9IHN0YXR1c01hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICBzdGF0dXMgPSBzdGF0dXMgfHwge31cclxuICAgICAgc3RhdHVzLlAgPSBlLnRhcmdldC5jaGVja2VkXHJcbiAgICAgIHN0YXR1cy5EID0gcmlnaHRFbG0uY2hlY2tlZFxyXG4gICAgICBzdGF0dXNNYXAuc2V0KGFjdGl2ZUlkc1tpXSwgc3RhdHVzKVxyXG4gICAgfVxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoKVxyXG4gIH0pXHJcbiAgcmlnaHRFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGlmICghZS50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHN0YXR1cyA9IHN0YXR1c01hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICBzdGF0dXMgPSBzdGF0dXMgfHwge31cclxuICAgICAgc3RhdHVzLlAgPSBsZWZ0RWxtLmNoZWNrZWRcclxuICAgICAgc3RhdHVzLkQgPSBlLnRhcmdldC5jaGVja2VkXHJcbiAgICAgIHN0YXR1c01hcC5zZXQoYWN0aXZlSWRzW2ldLCBzdGF0dXMpXHJcbiAgICB9XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfSlcclxuXHJcbiAgc2xpZGVyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsICgpID0+IHtcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXS5zdHlsZS5jdXJzb3IgPSAnZS1yZXNpemUnXHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xyXG4gICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS12aWV3ZXItY2VzaXVtV2lkZ2V0Q29udGFpbmVyJylbMF0uc3R5bGUuY3Vyc29yID0gJ3Vuc2V0J1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5hcHBlbmRDaGlsZChzbGlkZXJFbG0pXHJcblxyXG5cclxuICBsZXQgbGVmdEJveCA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdXHJcbiAgbGV0IGxlZnRDYW52YXMgPSBsZWZ0Qm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gIGxlZnRCb3guc3R5bGUud2lkdGggPSAnNTAlJ1xyXG4gIGxlZnRCb3guc3R5bGUubGVmdCA9ICcwcHgnXHJcbiAgbGVmdEJveC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXHJcbiAgbGVmdENhbnZhcy5zdHlsZS53aWR0aCA9ICcyMDAlJ1xyXG5cclxuICBhY3RpdmVWaWV3ZXIgPSAwXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBzZGtEID0gYXdhaXQgbmV3IFlKLllKRWFydGgoc2RrLmRpdl9pZClcclxuICBpZiAoZ2V0TGVmdENsaWNrU3RhdGUoKSkge1xyXG4gICAgYXdhaXQgbmV3IG9wZW5MZWZ0Q2xpY2soc2RrRClcclxuICB9XHJcbiAgaWYgKGdldFJpZ2h0Q2xpY2tTdGF0ZSgpKSB7XHJcbiAgICBhd2FpdCBuZXcgb3BlblJpZ2h0Q2xpY2soc2RrRClcclxuICB9XHJcbiAgaWYgKGdldE1vdmVTdGF0ZSgpKSB7XHJcbiAgICBhd2FpdCBuZXcgb3Blbk1vdmUoc2RrRClcclxuICB9XHJcbiAgaWYgKGdldE1vdXNlUmlnaHRNZW51U3RhdHVzKHNkaykpIHtcclxuICAgIE1vdXNlUmlnaHRNZW51KHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIHNka0Qudmlld2VyLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICBsZXQgcmlnaHRCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICByaWdodEJveC5jbGFzc05hbWUgPSAnY2VzaXVtLXdpZGdldCBjZXNpdW0td2lkZ2V0LXNwbGl0J1xyXG4gIHJpZ2h0Qm94LnN0eWxlLndpZHRoID0gJzUwJSdcclxuICByaWdodEJveC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICByaWdodEJveC5zdHlsZS5yaWdodCA9ICcwcHgnXHJcbiAgcmlnaHRCb3guc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xyXG4gIGxldCByaWdodENhbnZhcyA9IHNka0Qudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS12aWV3ZXItY2VzaXVtV2lkZ2V0Q29udGFpbmVyJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgcmlnaHRDYW52YXMuc3R5bGUud2lkdGggPSAnMjAwJSdcclxuICByaWdodENhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICByaWdodENhbnZhcy5zdHlsZS5yaWdodCA9ICcwcHgnXHJcbiAgcmlnaHRCb3guYXBwZW5kQ2hpbGQocmlnaHRDYW52YXMpXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tdmlld2VyLWNlc2l1bVdpZGdldENvbnRhaW5lcicpWzBdLmFwcGVuZENoaWxkKHJpZ2h0Qm94KVxyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNkay5kaXZfaWQpLnJlbW92ZUNoaWxkKHNka0Qudmlld2VyLl9lbGVtZW50KVxyXG5cclxuICBmdW5jdGlvbiBtb3VzZW1vdmUoYSkge1xyXG4gICAgaWYgKHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXSA9PT0gYS50YXJnZXQgfHxcclxuICAgICAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdID09PSBhLnRhcmdldCB8fFxyXG4gICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgIGxldCBvZmZzZXRYID0gYS5vZmZzZXRYXHJcbiAgICAgIGlmIChhLm9mZnNldFggPCA2MCkge1xyXG4gICAgICAgIG9mZnNldFggPSA2MFxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoYS50YXJnZXQud2lkdGggLSBhLm9mZnNldFgpIDwgNjApIHtcclxuICAgICAgICBvZmZzZXRYID0gYS50YXJnZXQud2lkdGggLSA2MFxyXG4gICAgICB9XHJcbiAgICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoICogMTAwKSArICclJ1xyXG4gICAgICBsZWZ0Qm94LnN0eWxlLndpZHRoID0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSAqIDEwMCArICclJ1xyXG4gICAgICBsZWZ0Q2FudmFzLnN0eWxlLndpZHRoID0gMTAwIC8gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSArICclJ1xyXG4gICAgICByaWdodEJveC5zdHlsZS53aWR0aCA9ICgxIC0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSkgKiAxMDAgKyAnJSdcclxuICAgICAgcmlnaHRDYW52YXMuc3R5bGUud2lkdGggPSAxMDAgLyAoMSAtIChvZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCkpICsgJyUnXHJcbiAgICAgIGxlZnRFbG0uc3R5bGUubGVmdCA9IGBjYWxjKCR7KG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSAqIDEwMH0lIC0gNTBweClgXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLnJpZ2h0ID0gYGNhbGMoJHsoMSAtIChvZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCkpICogMTAwfSUgLSA1MHB4KWBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF3YWl0IGV2ZW50QmluZCgpXHJcbiAgc3luY09iamVjdCA9IHsgc2RrczogW3Nkaywgc2RrRF0sIHRvb2xzIH1cclxuXHJcbiAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoKVxyXG4gIC8vIGF3YWl0IHNldFNwbGl0RGlyZWN0aW9uKC0xKVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdClcclxuXHJcbiAgLy8gc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyQWRkZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyQWRkZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICAvLyBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJSZW1vdmVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllclJlbW92ZWQpO1xyXG4gIC8vIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclNob3duT3JIaWRkZW4uYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbik7XHJcblxyXG4gIGlmIChnZXRGbHdTdGF0dXMoc2RrKSkge1xyXG4gICAgRmx3U3RhdHVzU3dpdGNoKHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIGlmIChnZXRKd3dTdGF0dXMoc2RrKSkge1xyXG4gICAgSnd3U3RhdHVzU3dpdGNoKHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIGlmIChnZXRTdGF0dXMoKSkge1xyXG4gICAgU2hlZXRJbmRleFN0YXR1c1N3aXRjaChzZGtELCB0cnVlKVxyXG4gIH1cclxuICAvLyDpm6jpm6rpm77lpJzop4bmmJ/nqbrlhYnnhadcclxuICBsZXQgc3RhZ2VzID0gc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHN3aXRjaCAoc3RhZ2VzW2ldLm5hbWUpIHtcclxuICAgICAgY2FzZSAncmFpbic6XHJcbiAgICAgICAgcmFpbihzZGtELCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ3Nub3cnOlxyXG4gICAgICAgIHNub3coc2RrRCwgdHJ1ZSlcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdmb2cnOlxyXG4gICAgICAgIGZvZyhzZGtELCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2N6bV9uaWdodF92aXNpb24nOlxyXG4gICAgICAgIG5pZ2h0VmlzaW9uKHNka0QsIHRydWUpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgc2t5U3RhcnJ5KHNka0QsICFzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdylcclxuICBpbGx1bWluYXRpb24oc2RrRCwgc2RrLnZpZXdlci5zaGFkb3dzKVxyXG5cclxuICBmdW5jdGlvbiBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cyh2KSB7XHJcbiAgICBsZXQgdmFsdWVcclxuICAgIC8vIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkge1xyXG4gICAgLy8gICBpZiAobGVmdEVsbS5jaGVja2VkICYmIHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgIC8vICAgICB2YWx1ZSA9IDBcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIHtcclxuICAgIC8vICAgICBpZiAobGVmdEVsbS5jaGVja2VkKSB7XHJcbiAgICAvLyAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGlmIChyaWdodEVsbS5jaGVja2VkKSB7XHJcbiAgICAvLyAgICAgICB2YWx1ZSA9IDFcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB2YWx1ZSA9IHZcclxuICAgIC8vIH1cclxuICAgIGZvciAobGV0IFtrZXksIHN0YXR1c10gb2Ygc3RhdHVzTWFwKSB7XHJcbiAgICAgIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgdmFsdWUgPSAtMVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHN0YXR1cy5QICYmIHN0YXR1cy5EKSB7XHJcbiAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIHZhbHVlID0gdlxyXG4gICAgICAvLyB9XHJcbiAgICAgIGxldCBlbnRpdHkgPSBzZGsuZW50aXR5TWFwLmdldChrZXkpXHJcbiAgICAgIC8vIGVudGl0eSAmJiAoZW50aXR5LnNwbGl0RGlyZWN0aW9uID0gdmFsdWUpXHJcbiAgICAgIGVudGl0eSAmJiAoc2V0U3BsaXREaXJlY3Rpb24odmFsdWUsIGtleSkpXHJcbiAgICB9XHJcbiAgICAvLyBpZiAoYWN0aXZlSWRzICYmIGFjdGl2ZUlkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aXZlSWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyAgICAgbGV0IGVudGl0eSA9IHNkay5lbnRpdHlNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgIC8vICAgICAvLyBlbnRpdHkgJiYgKGVudGl0eS5zcGxpdERpcmVjdGlvbiA9IHZhbHVlKVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGVudGl0eSwgYWN0aXZlSWRzLCB2YWx1ZSlcclxuICAgIC8vICAgICBlbnRpdHkgJiYgKHNldFNwbGl0RGlyZWN0aW9uKHZhbHVlLCBlbnRpdHkub3B0aW9ucy5pZCkpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgLy8gICAgIC8vIGl0ZW0uc3BsaXREaXJlY3Rpb24gPSB2YWx1ZVxyXG4gICAgLy8gICAgIHNldFNwbGl0RGlyZWN0aW9uKHZhbHVlLCBpdGVtLm9wdGlvbnMuaWQpXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBhc3luYyBmdW5jdGlvbiBzeW5jRGF0YShlbnRpdHlJZCkge1xyXG4vLyAgICAgaWYgKCFzZGtQKSB7XHJcbi8vICAgICAgIHJldHVyblxyXG4vLyAgICAgfVxyXG4vLyAgICAgbGV0IGVudGl0eU1hcFAgPSBzZGtQLmVudGl0eU1hcFxyXG4vLyAgICAgbGV0IGVudGl0eU1hcEQgPSAoc2RrRCAmJiBzZGtELmVudGl0eU1hcClcclxuLy8gICAgIGlmIChlbnRpdHlJZCkge1xyXG4vLyAgICAgICBsZXQgdGhhdEQgPSBlbnRpdHlNYXBELmdldChlbnRpdHlJZClcclxuLy8gICAgICAgaWYgKHRoYXREKSB7XHJcbi8vICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IDBcclxuLy8gICAgICAgICBpZih0aGF0RC5zaG93KSB7XHJcbi8vICAgICAgICAgICBkaXJlY3Rpb24gPSBcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgdGhhdEQucmVtb3ZlKClcclxuLy8gICAgICAgfVxyXG4vLyAgICAgICBzZXRTcGxpdERpcmVjdGlvbihlbnRpdHlJZClcclxuLy8gICAgIH1cclxuLy8gICAgIC8vIGVsc2Uge1xyXG4vLyAgICAgLy8gICBmb3IgKGxldCBba2V5LCB0aGF0UF0gb2Ygc2RrUC5lbnRpdHlNYXApIHtcclxuLy8gICAgIC8vICAgICBpZiAoIXRoYXRQIHx8ICF0aGF0UC5zaG93KSB7XHJcbi8vICAgICAvLyAgICAgICBjb250aW51ZVxyXG4vLyAgICAgLy8gICAgIH1cclxuLy8gICAgIC8vICAgICBlbHNlIHtcclxuLy8gICAgIC8vICAgICAgIHNldEV2ZW50KGtleSlcclxuLy8gICAgIC8vICAgICB9XHJcbi8vICAgICAvLyAgIH1cclxuLy8gICAgIC8vIH1cclxuLy8gICB9XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzZXRTcGxpdERpcmVjdGlvbih2LCBpZCwgaXNvZmYgPSBmYWxzZSwgZW50aXR5SWQpIHtcclxuICBpZiAoIXNka1ApIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuXHJcbiAgbGV0IGVudGl0eU1hcFAgPSBzZGtQLmVudGl0eU1hcFxyXG4gIGxldCBlbnRpdHlNYXBEID0gKHNka0QgJiYgc2RrRC5lbnRpdHlNYXApXHJcbiAgaWYgKGlkKSB7XHJcbiAgICBsZXQgdGhhdFAgPSBlbnRpdHlNYXBQLmdldChpZClcclxuICAgIGlmICghdGhhdFAgfHwgIXRoYXRQLnNob3cpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRFdmVudChpZCwgZW50aXR5SWQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgZm9yIChsZXQgW2tleSwgdGhhdFBdIG9mIHNka1AuZW50aXR5TWFwKSB7XHJcbiAgICAgIGlmICghdGhhdFAgfHwgIXRoYXRQLnNob3cpIHtcclxuICAgICAgICBjb250aW51ZVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNldEV2ZW50KGtleSwgZW50aXR5SWQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZ1bmN0aW9uIHNldEV2ZW50KGlkLCBlbnRpdHlJZCkge1xyXG4gICAgbGV0IHN0YXR1cyA9IHt9XHJcbiAgICBsZXQgdGhhdFAgPSBlbnRpdHlNYXBQLmdldChpZClcclxuICAgIGlmICghdGhhdFAgJiYgIXRoYXRQLnNob3cpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGhhdEQgPSAoZW50aXR5TWFwRCAmJiBlbnRpdHlNYXBELmdldChpZCkpXHJcbiAgICBpZiAodGhhdEQpIHtcclxuICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgY2FzZSBudWxsOlxyXG4gICAgICAgIGNhc2Ugdm9pZCAwOlxyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgIHN0YXR1cy5QID0gdHJ1ZVxyXG4gICAgICAgICAgc3RhdHVzLkQgPSB0cnVlXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRQc3RhdGUoZmFsc2UpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoYXRELnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdGhhdFBzdGF0ZShzdGF0ZSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZnVuY3Rpb24gdGhhdFBzdGF0ZSh2KSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAub3B0aW9ucy5zdGF0ZSA9IHZcclxuICAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGF0UC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgICAgICAgICAgICBpZiAodGhhdFAuZWRpdE9iaikge1xyXG4gICAgICAgICAgICAgICAgdGhhdFAuZWRpdE9iai5kZXN0cm95KClcclxuICAgICAgICAgICAgICAgIHRoYXRQLmVkaXRPYmogPSBudWxsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGF0UC5Ud2VlbkFuaW1hdGUudGltZW91dClcclxuICAgICAgICAgICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRQLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZS5pc1BsYXlpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLlR3ZWVuQW5pbWF0ZS50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGF0UC5Ud2VlbkFuaW1hdGUucmVzdW1lKClcclxuICAgICAgICAgICAgICAgICAgICB9LCB0aGF0UC5vcHRpb25zLmRlbGF5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5Ud2VlbkFuaW1hdGUuZGVsYXkodGhhdFAuZGVsYXkpLnN0YXJ0KClcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbkNhbWVyYSA9IHsgLi4udGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuX3Bvc2l0aW9uIH1cclxuICAgICAgICAgICAgICAgICAgdGhhdFAuX3JlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gZm4oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiB7IC4uLnBvc2l0aW9uQ2FtZXJhIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaXRjaDogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sbDogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmbilcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgdGhhdFAuVHdlZW5BbmltYXRlLnBhdXNlKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhhdFAucmVuZXdMaW5lUG9zaXRpb25zKHRoYXRQLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgIHRoYXRQLm1vZGVsTW92ZShwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoYXRQLmVudGl0eSAmJiAodGhhdFAuZW50aXR5LnNob3cgPSB0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZSAmJiAhdGhhdFAuVHdlZW5BbmltYXRlLl9pc1BhdXNlZCkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlMSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlMSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IHRoYXRQLnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlICYmICF0aGF0UC5Ud2VlbkFuaW1hdGUuX2lzUGF1c2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRoYXRELnRleHRTaG93ID0gdGhhdFAudGV4dFNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCAmJiB0aGF0UC5sYWJlbFNob3cpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWxTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELmxhYmVsKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmxhYmVsLm9wdGlvbnMuZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0RC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdEQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoYXRELnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdEQudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmZpcnN0UGVyc29uVmlldyA9IHRoYXRQLmZpcnN0UGVyc29uVmlld1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmVudGl0eS5pbWdJbmRleCA9IHRoYXRQLmVudGl0eS5pbWdJbmRleFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBzdGF0dXMuUCA9IGZhbHNlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IHRydWVcclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgICB0aGF0UC5saW5lICYmICh0aGF0UC5saW5lLnNob3cgPSBmYWxzZSlcclxuICAgICAgICAgICAgdGhhdFAucmVhbFRpbWVMaW5lICYmICh0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmICghZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5pZCA9PT0gZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZSAmJiAhdGhhdFAuVHdlZW5BbmltYXRlLl9pc1BhdXNlZCkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlMSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlMSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IHRoYXRQLnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlICYmICF0aGF0UC5Ud2VlbkFuaW1hdGUuX2lzUGF1c2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ0dyb3VuZFN2ZycgJiYgdGhhdFAudGV4dCkge1xyXG4gICAgICAgICAgICB0aGF0UC50ZXh0LnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGF0RC50ZXh0U2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAubGFiZWwpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWwuZW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELmxhYmVsKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmxhYmVsLm9wdGlvbnMuZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0RC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdEQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgICAgICB0aGF0RC5maXJzdFBlcnNvblZpZXcgPSB0aGF0UC5maXJzdFBlcnNvblZpZXdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAtMTpcclxuICAgICAgICBjYXNlICctMSc6XHJcbiAgICAgICAgICBzdGF0dXMuUCA9IHRydWVcclxuICAgICAgICAgIHN0YXR1cy5EID0gZmFsc2VcclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSAmJiB0aGF0UC5tb2RlbFNob3cgJiYgIXRoYXRQLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5saW5lICYmIHRoYXRQLmxpbmVTaG93KSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAubGluZS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5yZWFsVGltZUxpbmUgJiYgdGhhdFAucmVhbFRpbWVSb3V0ZSkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnJlYWxUaW1lTGluZS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgLy8gICBsZXQgc3RhdGUgPSB0aGF0UC5zdGF0ZVxyXG4gICAgICAgICAgICAvLyAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhhdFAuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gICB0aGF0RC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlKVxyXG4gICAgICAgICAgICAvLyAgIHRoYXRQLnN0YXRlID0gc3RhdGVcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0UC5lbnRpdHkgJiYgKHRoYXRQLmVudGl0eS5zaG93ID0gdHJ1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRoYXRELnRleHRTaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCAmJiB0aGF0UC5sYWJlbFNob3cpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWwuZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdEQubGFiZWwpIHtcclxuICAgICAgICAgICAgdGhhdEQubGFiZWwub3B0aW9ucy5ncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJykge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdEQudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHN5bmNPYmplY3QudG9vbHMuZGVlcENvcHlPYmoodGhhdFAub3B0aW9ucylcclxuICAgICAgbGV0IHRhcmdldFxyXG4gICAgICBzd2l0Y2ggKHYpIHtcclxuICAgICAgICBjYXNlIG51bGw6XHJcbiAgICAgICAgY2FzZSB2b2lkIDA6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSB0cnVlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IHRydWVcclxuICAgICAgICAgIG9wdGlvbnMuc2hvdyA9IHRydWVcclxuICAgICAgICAgIGlmKHRoYXRQLnR5cGU9PT0nbGF5ZXInKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMubGF5ZXJfaW5kZXggPSB0aGF0UC5sYXllcl9pbmRleFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgbmV3IHRoYXRQLmNvbnN0cnVjdG9yKHNka0QsIG9wdGlvbnMpXHJcbiAgICAgICAgICBpZiAodGhhdFAub25DbGljaykge1xyXG4gICAgICAgICAgICB0YXJnZXQub25DbGljayA9IHRoYXRQLm9uQ2xpY2tcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5vblJpZ2h0Q2xpY2spIHtcclxuICAgICAgICAgICAgdGFyZ2V0Lm9uUmlnaHRDbGljayA9IHRoYXRQLm9uUmlnaHRDbGlja1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLm9uTW91c2VNb3ZlKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5vbk1vdXNlTW92ZSA9IHRoYXRQLm9uTW91c2VNb3ZlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRQLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdGhhdFAuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ2xiJyAmJiB0YXJnZXQub24pIHtcclxuICAgICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuZGF0YSA9IHRoYXRQLmRhdGFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lm9uKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5pbWdJbmRleCA9IHRoYXRQLmVudGl0eS5pbWdJbmRleFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gJ1BpbmNlckFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUgJiYgIXRoYXRQLlR3ZWVuQW5pbWF0ZS5faXNQYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZTEgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZTEgKiB0aGF0UC5zcHJlYWRUaW1lKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcgfHwgdGFyZ2V0LnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUgJiYgIXRoYXRQLlR3ZWVuQW5pbWF0ZS5faXNQYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlICogdGhhdFAuc3ByZWFkVGltZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICAgIHRhcmdldC5sb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5pZCA9PT0gZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ0dyb3VuZFN2ZycgJiYgdGhhdFAudGV4dCkge1xyXG4gICAgICAgICAgICB0aGF0UC50ZXh0LnNob3cgPSB0aGF0UC50ZXh0U2hvd1xyXG4gICAgICAgICAgICB0YXJnZXQudGV4dFNob3cgPSB0aGF0UC50ZXh0U2hvd1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLmxhYmVsICYmIHRoYXRQLmxhYmVsU2hvdykge1xyXG4gICAgICAgICAgICB0aGF0UC5sYWJlbC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSBmYWxzZVxyXG4gICAgICAgICAgc3RhdHVzLkQgPSB0cnVlXHJcbiAgICAgICAgICBvcHRpb25zLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZih0aGF0UC50eXBlPT09J2xheWVyJykge1xyXG4gICAgICAgICAgICBvcHRpb25zLmxheWVyX2luZGV4ID0gdGhhdFAubGF5ZXJfaW5kZXhcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRhcmdldCA9IGF3YWl0IG5ldyB0aGF0UC5jb25zdHJ1Y3RvcihzZGtELCBvcHRpb25zKVxyXG4gICAgICAgICAgaWYgKHRoYXRQLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgdGFyZ2V0Lm9uQ2xpY2sgPSB0aGF0UC5vbkNsaWNrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAub25SaWdodENsaWNrKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5vblJpZ2h0Q2xpY2sgPSB0aGF0UC5vblJpZ2h0Q2xpY2tcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5vbk1vdXNlTW92ZSkge1xyXG4gICAgICAgICAgICB0YXJnZXQub25Nb3VzZU1vdmUgPSB0aGF0UC5vbk1vdXNlTW92ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5ICYmIHRoYXRQLm1vZGVsU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoYXRQLnJlYWxUaW1lTGluZSAmJiB0aGF0UC5yZWFsVGltZVJvdXRlKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAucmVhbFRpbWVMaW5lLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGF0UC5zdGF0ZVxyXG4gICAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhhdFAuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0YXJnZXQuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSlcclxuICAgICAgICAgICAgICB0aGF0UC5zdGF0ZSA9IHN0YXRlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09ICdnbGInICYmIHRhcmdldC5vbikge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRhdGEgPSB0aGF0UC5kYXRhXHJcbiAgICAgICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lm9uKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgICBpZiAodGFyZ2V0LmVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdHcm91bmRTdmcnICYmIHRoYXRQLnRleHQpIHtcclxuICAgICAgICAgICAgdGhhdFAudGV4dC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgdGFyZ2V0LnRleHRTaG93ID0gdGhhdFAudGV4dFNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCkge1xyXG4gICAgICAgICAgICB0aGF0UC5sYWJlbC5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgLTE6XHJcbiAgICAgICAgY2FzZSAnLTEnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSB0cnVlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IGZhbHNlXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgIC8vICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgLy8gICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoYXRQLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgIC8vICAgdGhhdFAuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndGVycmFpbicpIHtcclxuICAgICAgICAgICAgICBvcHRpb25zLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgbmV3IHRoYXRQLmNvbnN0cnVjdG9yKHNka0QsIG9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgaWYgKHRoYXRQLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5vbkNsaWNrID0gdGhhdFAub25DbGlja1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhhdFAub25SaWdodENsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQub25SaWdodENsaWNrID0gdGhhdFAub25SaWdodENsaWNrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5vbk1vdXNlTW92ZSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Lm9uTW91c2VNb3ZlID0gdGhhdFAub25Nb3VzZU1vdmVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRhcmdldCAmJiAodGFyZ2V0LnRleHRTaG93ID0gZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAubGFiZWwgJiYgdGhhdFAubGFiZWxTaG93KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLmxhYmVsLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNvZmYpIHtcclxuICAgICAgc3RhdHVzTWFwLnNldChpZCwgc3RhdHVzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzb2ZmKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgLy8gbGV0IGxlZnRFbG0gPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCcpWzBdXHJcbiAgLy8gbGV0IHJpZ2h0RWxtID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0JylbMF1cclxuICAvLyBpZiAobGVmdEVsbSAmJiByaWdodEVsbSkge1xyXG4gIC8vICAgc3dpdGNoICh2KSB7XHJcbiAgLy8gICAgIGNhc2UgbnVsbDpcclxuICAvLyAgICAgY2FzZSB2b2lkIDA6XHJcbiAgLy8gICAgIGNhc2UgMDpcclxuICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgLy8gICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgLy8gICAgICAgYnJlYWtcclxuICAvLyAgICAgY2FzZSAxOlxyXG4gIC8vICAgICBjYXNlICcxJzpcclxuICAvLyAgICAgICBsZWZ0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgLy8gICAgICAgYnJlYWtcclxuICAvLyAgICAgY2FzZSAtMTpcclxuICAvLyAgICAgY2FzZSAnLTEnOlxyXG4gIC8vICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAvLyAgICAgICByaWdodEVsbS5jaGVja2VkID0gZmFsc2VcclxuICAvLyAgICAgICBicmVha1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNFbnRpdGllcyhlbnRpdGllczEsIGVudGl0aWVzMikge1xyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlbnRpdGllczEpIHx8IEFycmF5LmlzQXJyYXkoZW50aXRpZXMyKSkge1xyXG4gICAgICBlbnRpdGllczEgPSBudWxsXHJcbiAgICAgIGVudGl0aWVzMiA9IG51bGxcclxuICAgIH1cclxuICAgIGlmICghZW50aXRpZXMxKSB7XHJcbiAgICAgIGVudGl0aWVzMSA9IHNka0Qudmlld2VyLmVudGl0aWVzXHJcbiAgICB9XHJcbiAgICBpZiAoIWVudGl0aWVzMikge1xyXG4gICAgICBlbnRpdGllczIgPSBzZGtQLnZpZXdlci5lbnRpdGllc1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0aWVzMkQgPSBlbnRpdGllczFcclxuICAgIGxldCBlbnRpdGllczNEID0gZW50aXRpZXMyXHJcbiAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgZW50aXRpZXMyRC52YWx1ZXNbaV0gPT09IGVudGl0aWVzM0QudmFsdWVzW21dXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIGVudGl0aWVzMkQucmVtb3ZlKGVudGl0aWVzMkQudmFsdWVzW2ldKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IGVudGl0aWVzMkQuYWRkKGVudGl0aWVzM0QudmFsdWVzW21dKVxyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucmVjdGFuZ2xlKSB7XHJcbiAgICAgICAgLy8gICAvLyDorr7nva7pq5jluqbvvIzlkKbliJnlnKjmn5DkupvkvY3nva7ml6Dms5XmmL7npLrvvIzkvYboibLlvankvJrlj5jmmpdcclxuICAgICAgICAvLyAgIGVudGl0eS5yZWN0YW5nbGUuaGVpZ2h0ID0gMFxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzI0MjM0MjM1NDIzNScsZW50aXRpZXMzRC52YWx1ZXNbbV0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlcywgdHlwZSkge1xyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBsZXQgZGF0YVNvdXJjZXMyRCA9IHNka0Qudmlld2VyLmRhdGFTb3VyY2VzXHJcbiAgICBpZiAoZGF0YVNvdXJjZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IGRhdGFTb3VyY2VzLm5hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZW50aXRpZXMnKSB7XHJcbiAgICAgICAgICAgIHN5bmNFbnRpdGllcyhkYXRhU291cmNlczJELl9kYXRhU291cmNlc1tpXS5lbnRpdGllcywgZGF0YVNvdXJjZXMuZW50aXRpZXMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NsdXN0ZXJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGRhdGFTb3VyY2VzLmNsdXN0ZXJpbmcuZW5hYmxlZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9yIChsZXQgbSA9IGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAvLyAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgIC8vICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSwgZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSlcclxuICAgIC8vICAgICBpZiAoZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSkge1xyXG4gICAgLy8gICAgICAgZmxhZyA9IHRydWVcclxuICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICghZmxhZykge1xyXG4gICAgLy8gICAgIGRhdGFTb3VyY2VzMkQuYWRkKGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzW21dKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZChsYXllciwgaW5kZXgpIHtcclxuICBzZGtELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihsYXllci5pbWFnZXJ5UHJvdmlkZXIsIGluZGV4KVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJNb3ZlZChsYXllciwgbmV3aW5keGUsIG9sZGluZGV4KSB7XHJcbiAgbGV0IGxheWVyRFxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pZCA9PT0gbGF5ZXIuX2lkKSB7XHJcbiAgICAgIGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIC8vIOenu+WIsOacgOW6leWxglxyXG4gIGlmIChuZXdpbmR4ZSA9PT0gMCkge1xyXG4gICAgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sb3dlclRvQm90dG9tKGxheWVyRClcclxuICB9XHJcbiAgLy8g56e75Yiw5pyA6auY5bGCXHJcbiAgZWxzZSBpZiAobmV3aW5keGUgPj0gc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aCAtIDEpIHtcclxuICAgIHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMucmFpc2VUb1RvcChsYXllckQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKG5ld2luZHhlIDwgb2xkaW5kZXgpIHtcclxuICAgICAgaWYobmV3aW5keGU8c2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aC0xKSB7XHJcbiAgICAgICAgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sb3dlcihsYXllckQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZGtELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLnJhaXNlKGxheWVyRClcclxuICAgIH1cclxuICB9XHJcbn1cclxuZnVuY3Rpb24gc3luY0ltYWdlcnlMYXllclJlbW92ZWQobGF5ZXIsIGluZGV4KSB7XHJcbiAgbGV0IGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyRClcclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbihsYXllciwgaW5kZXgsIHN0YXRlKSB7XHJcbiAgbGV0IGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxheWVyRC5zaG93ID0gc3RhdGVcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY1ByaW1pdGl2ZXMocHJpbWl0aXZlKSB7XHJcbiAgaWYgKCFzZGtQKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgaWYgKHNka0QpIHtcclxuICAgIC8vIGF3YWl0IHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHByaW1pdGl2ZSlcclxuICAgIC8vIGF3YWl0IHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHByaW1pdGl2ZSlcclxuICAgIGxldCBwcmltaXRpdmVzMkQgPSBzZGtELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzXHJcbiAgICBsZXQgcHJpbWl0aXZlczNEID0gc2RrUC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1xyXG4gICAgLy8gY29uc29sZS5sb2cocHJpbWl0aXZlczJELCBwcmltaXRpdmVzM0QpXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgc2RrRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1sxXSA9IHNka1Audmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbMV1cclxuICAgIC8vIH0sIDIwMDApO1xyXG4gICAgZm9yIChsZXQgaSA9IHByaW1pdGl2ZXMyRC5sZW5ndGggLSAxOyBpID49IDE7IGktLSkge1xyXG4gICAgICBsZXQgZmxhZyA9IGZhbHNlXHJcbiAgICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgICBpZiAocHJpbWl0aXZlczNEW21dLmlkICYmIHByaW1pdGl2ZXMyRFtpXS5pZCAmJiAocHJpbWl0aXZlczNEW21dLmlkID09PSBwcmltaXRpdmVzMkRbaV0uaWQpKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICBzZGtELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShwcmltaXRpdmVzMkRbaV0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgICAgaWYgKHByaW1pdGl2ZXMzRFttXS5pZCAmJiBwcmltaXRpdmVzMkRbaV0uaWQgJiYgKHByaW1pdGl2ZXMzRFttXS5pZCA9PT0gcHJpbWl0aXZlczJEW2ldLmlkKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zaG93ID0gcHJpbWl0aXZlczNEW21dLnNob3dcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zdGFydENvbG9yID0gcHJpbWl0aXZlczNEW21dLnN0YXJ0Q29sb3JcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbmRDb2xvciA9IHByaW1pdGl2ZXMzRFttXS5lbmRDb2xvclxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1pbmltdW1TcGVlZCA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtU3BlZWRcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5tYXhpbXVtU3BlZWQgPSBwcmltaXRpdmVzM0RbbV0ubWF4aW11bVNwZWVkXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWluaW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWF4aW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uc3RhcnRTY2FsZSA9IHByaW1pdGl2ZXMzRFttXS5zdGFydFNjYWxlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uZW5kU2NhbGUgPSBwcmltaXRpdmVzM0RbbV0uZW5kU2NhbGVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbWlzc2lvblJhdGUgPSBwcmltaXRpdmVzM0RbbV0uZW1pc3Npb25SYXRlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ucGFydGljbGVTaXplID0gcHJpbWl0aXZlczNEW21dLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1vZGVsTWF0cml4ID0gcHJpbWl0aXZlczNEW21dLm1vZGVsTWF0cml4XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHByaW1pdGl2ZXMzRFttXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXZlbnRCaW5kKCkge1xyXG4gIGxldCBoYW5kbGVyMCA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF1cclxuICApXHJcbiAgaGFuZGxlcjAuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMFxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgaGFuZGxlcjAuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMFxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9ET1dOKVxyXG4gIGhhbmRsZXIwLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgIGFjdGl2ZVZpZXdlciA9IDBcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuV0hFRUwpXHJcbiAgaGFuZGxlcnMucHVzaChoYW5kbGVyMClcclxuXHJcbiAgbGV0IGRpc3RhbmNlTGVnZW5kRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpc3RhbmNlTGVnZW5kRGl2JylcclxuICBmdW5jdGlvbiBkaXN0YW5jZUxlZ2VuZERpdk1vdXNlTW92ZShlKSB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAwXHJcbiAgfVxyXG4gIGRpc3RhbmNlTGVnZW5kRGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGRpc3RhbmNlTGVnZW5kRGl2TW91c2VNb3ZlKVxyXG4gIGhhbmRsZXJzLnB1c2goe1xyXG4gICAgZGVzdHJveTogKCkgPT4ge1xyXG4gICAgICBkaXN0YW5jZUxlZ2VuZERpdi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkaXN0YW5jZUxlZ2VuZERpdk1vdXNlTW92ZSlcclxuICAgIH1cclxuICB9KVxyXG5cclxuXHJcbiAgbGV0IGhhbmRsZXIxID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihcclxuICAgIHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXVxyXG4gIClcclxuICBoYW5kbGVyMS5zZXRJbnB1dEFjdGlvbigoKSA9PiB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAxXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZChzZGtQKVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgaGFuZGxlcjEuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQoc2RrUClcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfRE9XTilcclxuICBoYW5kbGVyMS5zZXRJbnB1dEFjdGlvbigoKSA9PiB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAxXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZChzZGtQKVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5XSEVFTClcclxuICBoYW5kbGVycy5wdXNoKGhhbmRsZXIxKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzeW5jVmlld2VyKCkge1xyXG4gIGxldCBzZGsgPSB0aGlzLnNka3NbYWN0aXZlVmlld2VyXVxyXG4gIGxldCBzZGsyXHJcbiAgaWYgKGFjdGl2ZVZpZXdlciA9PT0gMCkge1xyXG4gICAgc2RrMiA9IHRoaXMuc2Rrc1sxXVxyXG4gIH1cclxuICBlbHNlIGlmIChhY3RpdmVWaWV3ZXIgPT09IDEpIHtcclxuICAgIHNkazIgPSB0aGlzLnNka3NbMF1cclxuICB9XHJcbiAgbGV0IGRlc3RpbmF0aW9uID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25cclxuICAvLyBpZiAodGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAvLyBjb25zb2xlLmxvZyhzZGssc2RrMilcclxuICAvLyAgIC8vIHNkazIudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAvLyAgIC8vICAgb3JpZW50YXRpb246IHtcclxuICAvLyAgIC8vICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gIC8vICAgLy8gICAgIHBpdGNoOiBzZGsudmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAvLyAgIC8vICAgICByb2xsOiBzZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgLy8gICAvLyAgIH1cclxuICAvLyAgIC8vIH0pXHJcbiAgLy8gICAvLyBpZihzZGsyLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAvLyAgIHNkazIudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb24gPSBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb25cclxuICAvLyAgIC8vIH1cclxuICAvLyAgIC8vIGVsc2Uge1xyXG4gIC8vICAgLy8gICBsZXQgdHJhY2tlZEVudGl0eSA9IHNkazIudmlld2VyLmVudGl0aWVzLmFkZChzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgLy8gICAvLyAgIHNkazIudmlld2VyLnRyYWNrZWRFbnRpdHkgPSB0cmFja2VkRW50aXR5XHJcbiAgLy8gICAvLyB9XHJcbiAgLy8gICAvLyBzZGsyLnZpZXdlci5jYW1lcmEucG9zaXRpb24gPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvblxyXG4gIC8vICAgaWYoIXNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gIC8vICAgICBsZXQgaWQgPSB0aGlzLnNka3NbMF0udmlld2VyLnRyYWNrZWRFbnRpdHkuaWRcclxuICAvLyAgICAgbGV0IHRyYWNrZWRFbnRpdHkgPSBzZGsyLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKGlkKVxyXG4gIC8vICAgICBpZih0cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAgICAgdHJhY2tlZEVudGl0eS5wb3NpdGlvbiA9IHRoaXMuc2Rrc1swXS52aWV3ZXIudHJhY2tlZEVudGl0eS5wb3NpdGlvblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGVsc2Uge1xyXG4gIC8vICAgICAgIHRyYWNrZWRFbnRpdHkgPSBzZGsyLnZpZXdlci5lbnRpdGllcy5hZGQoc2RrLnZpZXdlci50cmFja2VkRW50aXR5KVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IHRyYWNrZWRFbnRpdHlcclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb24gPSB0aGlzLnNka3NbMF0udmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb25cclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHNkay52aWV3ZXIudHJhY2tlZEVudGl0eS5wb3NpdGlvbi5fdmFsdWUsIHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uV0MpO1xyXG4gIC8vICAgc2RrMi52aWV3ZXIuY2FtZXJhLmxvb2tBdChcclxuICAvLyAgICAgdGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5LnBvc2l0aW9uLl92YWx1ZSxcclxuICAvLyAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSYW5nZShzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLCBzZGsudmlld2VyLmNhbWVyYS5waXRjaCwgZGlzdGFuY2UpXHJcbiAgLy8gICApXHJcbiAgLy8gfVxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgaWYodGhpcy5zZGtzWzFdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAgIHRoaXMuc2Rrc1sxXS52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAvLyAgICAgdGhpcy5zZGtzWzFdLnZpZXdlci50cmFja2VkRW50aXR5ID0gbnVsbFxyXG4gIC8vICAgICBkZXN0aW5hdGlvbiA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uXHJcbiAgLy8gICB9XHJcbiAgLy8gICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgLy8gICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAvLyAgICAgb3JpZW50YXRpb246IHtcclxuICAvLyAgICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gIC8vICAgICAgIHBpdGNoOiBzZGsudmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAvLyAgICAgICByb2xsOiBzZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICBwaXRjaDogc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgIHJvbGw6IHNkay52aWV3ZXIuY2FtZXJhLnJvbGxcclxuICAgIH1cclxuICB9KVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XHJcbiAgcmV0dXJuIHN0YXRlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFjdGl2ZUlkKCkge1xyXG4gIHJldHVybiBhY3RpdmVJZHNcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0QWN0aXZlSWQoaWRzID0gW10pIHtcclxuICAvLyBjb25zb2xlLmxvZygnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JylcclxuICBpZiAoQXJyYXkuaXNBcnJheShpZHMpKSB7XHJcbiAgICBhY3RpdmVJZHMgPSBpZHNcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBhY3RpdmVJZHMgPSBbaWRzXVxyXG4gIH1cclxuICBpZiAoIXNka1AgfHwgIXNka0QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgbGVmdEVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gIGlmICghaWRzIHx8IGlkcy5sZW5ndGggPT09IDApIHtcclxuICAgIGlmIChsZWZ0RWxtICYmIHJpZ2h0RWxtKSB7XHJcbiAgICAgIGxlZnRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICByaWdodEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKGxlZnRFbG0gJiYgcmlnaHRFbG0pIHtcclxuICAgICAgbGVmdEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgbGV0IGxlZnQgPSAwXHJcbiAgICAgIGxldCByaWdodCA9IDBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc3RhdHVzID0gc3RhdHVzTWFwLmdldChhY3RpdmVJZHNbaV0pXHJcbiAgICAgICAgaWYgKCFzdGF0dXMpIHtcclxuICAgICAgICAgIHN0YXR1cyA9IHsgUDogdHJ1ZSwgRDogZmFsc2UgfVxyXG4gICAgICAgICAgc3RhdHVzTWFwLnNldChhY3RpdmVJZHNbaV0sIHN0YXR1cylcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICBsZWZ0KytcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0YXR1cy5EKSB7XHJcbiAgICAgICAgICByaWdodCsrXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHRoYXRQID0gc2RrUC5lbnRpdHlNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgICAgICAvLyBsZXQgdGhhdEQgPSBzZGtELmVudGl0eU1hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICAgIGlmICghdGhhdFAgfHwgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJyB8fCAhdGhhdFAuc2hvdykgfHwgdGhhdFAudHlwZSA9PT0gJ1RleHRCb3gnKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZWZ0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgICAgcmlnaHRFbG0uc3R5bGUuZGlzcGxheSA9ICd1bnNldCdcclxuICAgICAgICBsZWZ0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoYXRQKSB7XHJcbiAgICAgICAgLy8gICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgKHRoYXRQLm1vZGVsU2hvdyB8fCB0aGF0UC5saW5lU2hvdyB8fCB0aGF0UC5sYWJlbFNob3cgfHwgdGhhdFAucmVhbFRpbWVSb3V0ZSkgJiYgKHRoYXRQLmVudGl0eS5zaG93IHx8IHRoYXRQLmxpbmUuc2hvdyB8fCAodGhhdFAubGFiZWwgJiYgdGhhdFAubGFiZWwuZW50aXR5LnNob3cpIHx8IHRoYXRQLnJlYWxUaW1lTGluZS5zaG93KSkge1xyXG4gICAgICAgIC8vICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAvLyAgICAgbGVmdEVsbS5jaGVja2VkID0gc3RhdHVzLlBcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhhdFAuZW50aXR5ICYmIHRoYXRQLmVudGl0eS5zaG93KSB7XHJcbiAgICAgICAgLy8gICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICh0aGF0RCkge1xyXG4gICAgICAgIC8vICAgaWYgKHRoYXRQLnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhhdEQuc2hvdyAmJiB0aGF0RC5lbnRpdHkgJiYgKHRoYXRELm1vZGVsU2hvdyB8fCB0aGF0RC5saW5lU2hvdyB8fCB0aGF0RC5sYWJlbFNob3cgfHwgdGhhdEQucmVhbFRpbWVSb3V0ZSkgJiYgKHRoYXRELmVudGl0eS5zaG93IHx8IHRoYXRELmxpbmUuc2hvdyB8fCAodGhhdEQubGFiZWwgJiYgdGhhdEQubGFiZWwuZW50aXR5LnNob3cpIHx8IHRoYXRELnJlYWxUaW1lTGluZS5zaG93KSkge1xyXG4gICAgICAgIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2UgaWYgKHRoYXRQLnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgLy8gICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSBzdGF0dXMuRFxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGF0RC5zaG93KSB7XHJcbiAgICAgICAgLy8gICAgICAgcmlnaHRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWxlZnQgJiYgIXJpZ2h0KSB7XHJcbiAgICAgICAgbGVmdCsrXHJcbiAgICAgIH1cclxuICAgICAgbGVmdEVsbS5jaGVja2VkID0gbGVmdCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICByaWdodEVsbS5jaGVja2VkID0gcmlnaHQgPyB0cnVlIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNTcGxpdERhdGEoc2RrLCBpZCwgZW50aXR5SWQpIHtcclxuICBpZiAoIXNka1AgfHwgIXNka0QgfHwgc2RrICE9PSBzZGtQIHx8ICFpZCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBzdGF0dXMgPSBzdGF0dXNNYXAuZ2V0KGlkKVxyXG4gIGxldCB0aGF0UCA9IHNka1AuZW50aXR5TWFwLmdldChpZClcclxuICBsZXQgdGhhdEQgPSBzZGtELmVudGl0eU1hcC5nZXQoaWQpXHJcbiAgaWYgKHRoYXRQKSB7XHJcbiAgICBsZXQgdmFsdWVcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgaWYgKHN0YXR1cy5QICYmIHN0YXR1cy5EKSB7XHJcbiAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICAgICAgbGV0IHJpZ2h0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gICAgICBpZiAobGVmdEVsbS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgfHwgcmlnaHRFbG0uc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgdmFsdWUgPSAtMVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IDFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGF0RCkge1xyXG4gICAgICB0aGF0RC5vcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vcHRpb25zKSlcclxuICAgICAgdGhhdEQub3JpZ2luYWxPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vcHRpb25zKSlcclxuICAgICAgaWYgKHRoYXRQLm9sZERhdGEpIHtcclxuICAgICAgICB0aGF0RC5vbGREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vbGREYXRhKSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhhdEQudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgdGhhdEQuaGVpZ2h0ID0gdGhhdEQub3B0aW9ucy5oZWlnaHRcclxuICAgICAgfVxyXG4gICAgICB0aGF0RC5yZXNldCAmJiB0aGF0RC5yZXNldCgpXHJcblxyXG5cclxuICAgICAgaWYgKHRoYXRQLnNob3cpIHtcclxuICAgICAgICBzZXRTcGxpdERpcmVjdGlvbih2YWx1ZSwgaWQsIGZhbHNlLCBlbnRpdHlJZClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGF0RC5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhhdEQuc2hvdyA9IGZhbHNlXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgdmFsdWUgPSAtMVxyXG4gICAgICAvLyBpZiAodGhhdFAuc2hvdykge1xyXG4gICAgICAvLyAgIGxldCBsZWZ0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCcpWzBdXHJcbiAgICAgIC8vICAgbGV0IHJpZ2h0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gICAgICAvLyAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgdmFsdWUgPSAwXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAvLyAgICAgaWYgKGxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICBpZiAocmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IDFcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24odmFsdWUsIGlkLCBmYWxzZSwgZW50aXR5SWQpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdGhhdEQgJiYgdGhhdEQucmVtb3ZlKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEFjdGl2ZVZpZXdlcih2KSB7XHJcbiAgYWN0aXZlVmlld2VyID0gdlxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZGsoKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNka1A6IHNka1AsXHJcbiAgICBzZGtEOiBzZGtEXHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IHsgb24sIG9mZiwgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIGdldFN0YXRlLCBnZXRBY3RpdmVJZCwgc2V0QWN0aXZlSWQsIHNldEFjdGl2ZVZpZXdlciwgZ2V0U2RrIH0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBaVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUEzU0E7QUF1TkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFySEE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFvQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUF1QkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5REE7QUFBQTtBQUFBO0FBK0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbU5BO0FBQUE7QUE5TUE7QUFDQTtBQUNBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBK0NBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBRUE7QUF3S0E7QUFBQTtBQW5LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBeGdCQTtBQUFBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK2dCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/SplitScreen/index.js\n"); - -/***/ }), - -/***/ "./src/Global/cluster/cluster.js": -/*!***************************************!*\ - !*** ./src/Global/cluster/cluster.js ***! - \***************************************/ -/*! exports provided: createCluster, addCluster, switchCluster, remove_entity_from_cluster, updateCluster */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCluster\", function() { return createCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addCluster\", function() { return addCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchCluster\", function() { return switchCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remove_entity_from_cluster\", function() { return remove_entity_from_cluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateCluster\", function() { return updateCluster; });\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/*\r\nlet datasource=null\r\nlet dataSourcePromise = null\r\n// let enabled = true\r\nlet dataSourcexg = null\r\nfunction createCluster(viewer) {\r\n datasource = new Cesium.CustomDataSource(\"dataSource1\");\r\n dataSourcePromise = viewer.dataSources.add(datasource);\r\n dataSourcePromise.then((dataSource)=> {\r\n // return;\r\n const pixelRange = 15;\r\n const minimumClusterSize = 3;\r\n const enabled = false;\r\n dataSourcexg = dataSource\r\n\r\n dataSource.clustering.enabled = enabled; //聚合开启\r\n dataSource.clustering.pixelRange = pixelRange; //设置像素范围,以扩展显示边框\r\n dataSource.clustering.minimumClusterSize = minimumClusterSize; //设置最小的聚合点数目,超过此数目才能聚合\r\n\r\n let removeListener;\r\n\r\n //按聚合层级创建对应图标\r\n const pinBuilder = new Cesium.PinBuilder();\r\n // console.log('pinBuilder',pinBuilder);\r\n var pin100 = pinBuilder\r\n .fromText(\"100+\", Cesium.Color.BLUE, 48)\r\n .toDataURL();\r\n var pin50 = pinBuilder\r\n .fromText(\"50+\", Cesium.Color.BLUE, 48)\r\n .toDataURL();\r\n var pin40 = pinBuilder\r\n .fromText(\"40+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin30 = pinBuilder\r\n .fromText(\"30+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin20 = pinBuilder\r\n .fromText(\"20+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin10 = pinBuilder\r\n .fromText(\"10+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n // 10以内聚合图标\r\n const singleDigitPins = new Array(8);\r\n for (let i = 0; i < singleDigitPins.length; ++i) {\r\n singleDigitPins[i] = pinBuilder\r\n .fromText(`${i + 2}`, Cesium.Color.VIOLET, 48)\r\n .toDataURL();\r\n }\r\n\r\n\r\n function customStyle() {\r\n if (Cesium.defined(removeListener)) {\r\n removeListener();\r\n removeListener = undefined;\r\n } else {\r\n removeListener = dataSource.clustering.clusterEvent.addEventListener(\r\n function(clusteredEntities, cluster) {\r\n cluster.label.show = false;\r\n cluster.billboard.show = true;\r\n cluster.billboard.id = cluster.label.id;\r\n cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\r\n if (clusteredEntities.length >= 100) {\r\n cluster.billboard.image = pin100;\r\n } else if (clusteredEntities.length >= 50) {\r\n cluster.billboard.image = pin50;\r\n } else if (clusteredEntities.length >= 40) {\r\n cluster.billboard.image = pin40;\r\n } else if (clusteredEntities.length >= 30) {\r\n cluster.billboard.image = pin30;\r\n } else if (clusteredEntities.length >= 20) {\r\n cluster.billboard.image = pin20;\r\n } else if (clusteredEntities.length >= 10) {\r\n cluster.billboard.image = pin10;\r\n } else {\r\n cluster.billboard.image =\r\n singleDigitPins[clusteredEntities.length - 2];\r\n }\r\n }\r\n );\r\n }\r\n\r\n // force a re-cluster with the new styling\r\n const pixelRange = dataSource.clustering.pixelRange;\r\n dataSource.clustering.pixelRange = 0;\r\n dataSource.clustering.pixelRange = pixelRange;\r\n }\r\n\r\n customStyle();\r\n\r\n var viewModel = {\r\n pixelRange: pixelRange,\r\n minimumClusterSize: minimumClusterSize,\r\n };\r\n Cesium.knockout.track(viewModel);\r\n\r\n\r\n function subscribeParameter(name) {\r\n Cesium.knockout\r\n .getObservable(viewModel, name)\r\n .subscribe(function (newValue) {\r\n dataSource.clustering[name] = newValue;\r\n });\r\n }\r\n\r\n subscribeParameter(\"pixelRange\");\r\n subscribeParameter(\"minimumClusterSize\");\r\n });\r\n}\r\n\r\nfunction addCluster(entity) {\r\n datasource.entities.add(entity)\r\n}\r\nfunction remove_entity_from_cluster(entity) {\r\n datasource.entities.remove(entity)\r\n}\r\n\r\nfunction switchCluster(status){\r\n dataSourcexg.clustering.enabled = status\r\n}\r\n\r\n*/\n\n\n\n\n/*创建聚合,只能聚合point ,billboard,label*/\nfunction createCluster(viewer) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var cluster = new Cesium.CustomDataSource(\"sdk-dataSource1\");\n var dataSourcePromise = viewer.dataSources.add(cluster);\n dataSourcePromise.then(function (dataSource) {\n // if (!get2DView()) {\n // dataSource.entities.collectionChanged.addEventListener((entities) => {\n // syncDataSources(dataSource, 'entities')\n // })\n // }\n var pixelRange = 15;\n var minimumClusterSize = 2;\n var enabled = false;\n dataSource.clustering.enabled = enabled;\n dataSource.clustering.pixelRange = pixelRange;\n dataSource.clustering.minimumClusterSize = minimumClusterSize;\n var removeListener;\n var pinBuilder = new Cesium.PinBuilder();\n var pin50 = pinBuilder.fromText(\"50+\", Cesium.Color.RED, 48).toDataURL();\n var pin40 = pinBuilder.fromText(\"40+\", Cesium.Color.ORANGE, 48).toDataURL();\n var pin30 = pinBuilder.fromText(\"30+\", Cesium.Color.YELLOW, 48).toDataURL();\n var pin20 = pinBuilder.fromText(\"20+\", Cesium.Color.GREEN, 48).toDataURL();\n var pin10 = pinBuilder.fromText(\"10+\", Cesium.Color.BLUE, 48).toDataURL();\n var singleDigitPins = new Array(8);\n for (var i = 0; i < singleDigitPins.length; ++i) {\n singleDigitPins[i] = pinBuilder.fromText(\"\" + (i + 2), Cesium.Color.VIOLET, 48).toDataURL();\n }\n function customStyle() {\n if (Cesium.defined(removeListener)) {\n removeListener();\n removeListener = undefined;\n } else {\n removeListener = dataSource.clustering.clusterEvent.addEventListener(function (clusteredEntities, cluster) {\n // cluster.label.show = false;\n // cluster.label.verticalOrigin = false;\n cluster.billboard.show = true;\n cluster.billboard.id = cluster.label.id;\n cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\n // 根据聚合数量的多少设置不同层级的图片以及大小\n /*if (clusteredEntities.length >= 50) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大红.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 72;\r\n cluster.billboard.height = 72;\r\n } else if (clusteredEntities.length >= 40) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大黄.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 56;\r\n cluster.billboard.height = 56;\r\n } else if (clusteredEntities.length >= 30) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大蓝.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else if (clusteredEntities.length >= 20) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小红.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else if (clusteredEntities.length >= 10) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小黄.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小蓝.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 40;\r\n cluster.billboard.height = 40;\r\n }*/\n\n cluster.billboard.image = tools.getSourceRootPath() + '/img/cluster.png';\n cluster.billboard.disableDepthTestDistance = Object(_Global_global__WEBPACK_IMPORTED_MODULE_1__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n cluster.label.verticalOrigin = Cesium.VerticalOrigin.CENTER;\n cluster.label.font = \"18px Arial,sans-serif\",\n // cluster.label.scale = 0.5\n cluster.label.disableDepthTestDistance = Object(_Global_global__WEBPACK_IMPORTED_MODULE_1__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n cluster.label.style = Cesium.LabelStyle.FILL;\n cluster.label.showBackground = true;\n cluster.label.backgroundColor = Cesium.Color.WHITE.withAlpha(0.0);\n if (clusteredEntities.length >= 1000) {\n cluster.billboard.scale = 1.5;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-28, -46);\n } else if (clusteredEntities.length >= 100) {\n cluster.billboard.scale = 1.25;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-21, -40);\n } else if (clusteredEntities.length >= 50) {\n cluster.billboard.scale = 1.1;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -36);\n } else if (clusteredEntities.length >= 40) {\n cluster.billboard.scale = 1.05;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -34);\n } else if (clusteredEntities.length >= 30) {\n cluster.billboard.scale = 1;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -32);\n } else if (clusteredEntities.length >= 20) {\n cluster.billboard.scale = 0.95;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -30);\n } else if (clusteredEntities.length >= 10) {\n cluster.billboard.scale = 0.9;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -28);\n } else {\n cluster.billboard.scale = 0.8;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-11, -25);\n }\n\n // if (clusteredEntities.length >= 50) {\n // cluster.billboard.image = pin50;\n // } else if (clusteredEntities.length >= 40) {\n // cluster.billboard.image = pin40;\n // } else if (clusteredEntities.length >= 30) {\n // cluster.billboard.image = pin30;\n // } else if (clusteredEntities.length >= 20) {\n // cluster.billboard.image = pin20;\n // } else if (clusteredEntities.length >= 10) {\n // cluster.billboard.image = pin10;\n // } else {\n // cluster.billboard.image =\n // singleDigitPins[clusteredEntities.length - 2];\n // }\n });\n }\n\n // force a re-cluster with the new styling\n var pixelRange = dataSource.clustering.pixelRange;\n dataSource.clustering.pixelRange = 0;\n dataSource.clustering.pixelRange = pixelRange;\n }\n\n // start with custom style\n customStyle();\n var viewModel = {\n pixelRange: pixelRange,\n minimumClusterSize: minimumClusterSize\n };\n Cesium.knockout.track(viewModel);\n function subscribeParameter(name) {\n Cesium.knockout.getObservable(viewModel, name).subscribe(function (newValue) {\n dataSource.clustering[name] = newValue;\n });\n }\n subscribeParameter(\"pixelRange\");\n subscribeParameter(\"minimumClusterSize\");\n // var handler = new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas);\n // handler.setInputAction((movement) => {\n // var pickedLabel = this.sdk.viewer.scene.pick(movement.position);\n //\n // if (Cesium.defined(pickedLabel)) {\n // this.log(pickedLabel)\n // var ids = pickedLabel.id;\n // if (Array.isArray(ids)) {\n // for (var i = 0; i < ids.length; ++i) {\n // ids[i].billboard.color = Cesium.Color.RED;\n // }\n // }\n // }\n // }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n });\n}\n\n/**\r\n * @description 开启/关闭聚合效果\r\n * @method set_cluster_status\r\n * @param [enable=false] {boolean}默认关闭\r\n * @memberOf Tool-3D\r\n * */\nfunction switchCluster(sdk) {\n var enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var viewer = sdk.viewer;\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].clustering.enabled = enable;\n // syncDataSources(viewer.dataSources._dataSources[i], 'clustering')\n break;\n }\n }\n}\nfunction addCluster(sdk, entity) {\n var viewer = sdk.viewer;\n if (!viewer) {\n return;\n }\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].entities.add(entity);\n break;\n }\n }\n}\nfunction remove_entity_from_cluster(viewer, entity) {\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].entities.remove(entity);\n break;\n }\n }\n}\nfunction updateCluster(viewer) {\n if (!viewer) {\n return;\n }\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].clustering._cluster();\n break;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2NsdXN0ZXIvY2x1c3Rlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvY2x1c3Rlci9jbHVzdGVyLmpzPzA3YzQiXSwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG4vKlxyXG5sZXQgZGF0YXNvdXJjZT1udWxsXHJcbmxldCBkYXRhU291cmNlUHJvbWlzZSA9IG51bGxcclxuLy8gbGV0IGVuYWJsZWQgPSB0cnVlXHJcbmxldCBkYXRhU291cmNleGcgPSBudWxsXHJcbmZ1bmN0aW9uIGNyZWF0ZUNsdXN0ZXIodmlld2VyKSB7XHJcbiAgICBkYXRhc291cmNlID0gbmV3IENlc2l1bS5DdXN0b21EYXRhU291cmNlKFwiZGF0YVNvdXJjZTFcIik7XHJcbiAgICBkYXRhU291cmNlUHJvbWlzZSA9IHZpZXdlci5kYXRhU291cmNlcy5hZGQoZGF0YXNvdXJjZSk7XHJcbiAgICBkYXRhU291cmNlUHJvbWlzZS50aGVuKChkYXRhU291cmNlKT0+IHtcclxuICAgICAgICAvLyByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcGl4ZWxSYW5nZSA9IDE1O1xyXG4gICAgICAgIGNvbnN0IG1pbmltdW1DbHVzdGVyU2l6ZSA9IDM7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyY2V4ZyA9IGRhdGFTb3VyY2VcclxuXHJcbiAgICAgICAgZGF0YVNvdXJjZS5jbHVzdGVyaW5nLmVuYWJsZWQgPSBlbmFibGVkOyAvL+iBmuWQiOW8gOWQr1xyXG4gICAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTsgLy/orr7nva7lg4/ntKDojIPlm7TvvIzku6XmianlsZXmmL7npLrovrnmoYZcclxuICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcubWluaW11bUNsdXN0ZXJTaXplID0gbWluaW11bUNsdXN0ZXJTaXplOyAvL+iuvue9ruacgOWwj+eahOiBmuWQiOeCueaVsOebru+8jOi2hei/h+atpOaVsOebruaJjeiDveiBmuWQiFxyXG5cclxuICAgICAgICBsZXQgcmVtb3ZlTGlzdGVuZXI7XHJcblxyXG4gICAgICAgIC8v5oyJ6IGa5ZCI5bGC57qn5Yib5bu65a+55bqU5Zu+5qCHXHJcbiAgICAgICAgY29uc3QgcGluQnVpbGRlciA9IG5ldyBDZXNpdW0uUGluQnVpbGRlcigpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwaW5CdWlsZGVyJyxwaW5CdWlsZGVyKTtcclxuICAgICAgICB2YXIgcGluMTAwID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAuZnJvbVRleHQoXCIxMDArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW41MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiNTArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW40MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiNDArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICAgICAgdmFyIHBpbjMwID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAuZnJvbVRleHQoXCIzMCtcIiwgQ2VzaXVtLkNvbG9yLlJFRCwgNDgpXHJcbiAgICAgICAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgICAgICB2YXIgcGluMjAgPSBwaW5CdWlsZGVyXHJcbiAgICAgICAgICAgIC5mcm9tVGV4dChcIjIwK1wiLCBDZXNpdW0uQ29sb3IuUkVELCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW4xMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiMTArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICAgICAgLy8gMTDku6XlhoXogZrlkIjlm77moIdcclxuICAgICAgICBjb25zdCBzaW5nbGVEaWdpdFBpbnMgPSBuZXcgQXJyYXkoOCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaW5nbGVEaWdpdFBpbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgc2luZ2xlRGlnaXRQaW5zW2ldID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAgICAgLmZyb21UZXh0KGAke2kgKyAyfWAsIENlc2l1bS5Db2xvci5WSU9MRVQsIDQ4KVxyXG4gICAgICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGN1c3RvbVN0eWxlKCkge1xyXG4gICAgICAgICAgICBpZiAoQ2VzaXVtLmRlZmluZWQocmVtb3ZlTGlzdGVuZXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5jbHVzdGVyRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihjbHVzdGVyZWRFbnRpdGllcywgY2x1c3Rlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmlkID0gY2x1c3Rlci5sYWJlbC5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQudmVydGljYWxPcmlnaW4gPSBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4xMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjUwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSA0MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW40MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMzApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gcGluMzA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjIwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4xMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVEaWdpdFBpbnNbY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBmb3JjZSBhIHJlLWNsdXN0ZXIgd2l0aCB0aGUgbmV3IHN0eWxpbmdcclxuICAgICAgICAgICAgY29uc3QgcGl4ZWxSYW5nZSA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlO1xyXG4gICAgICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcucGl4ZWxSYW5nZSA9IDA7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICBjdXN0b21TdHlsZSgpO1xyXG5cclxuICAgICAgdmFyIHZpZXdNb2RlbCA9IHtcclxuICAgICAgICBwaXhlbFJhbmdlOiBwaXhlbFJhbmdlLFxyXG4gICAgICAgIG1pbmltdW1DbHVzdGVyU2l6ZTogbWluaW11bUNsdXN0ZXJTaXplLFxyXG4gICAgICB9O1xyXG4gICAgICBDZXNpdW0ua25vY2tvdXQudHJhY2sodmlld01vZGVsKTtcclxuXHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJzY3JpYmVQYXJhbWV0ZXIobmFtZSkge1xyXG4gICAgICAgIENlc2l1bS5rbm9ja291dFxyXG4gICAgICAgICAgLmdldE9ic2VydmFibGUodmlld01vZGVsLCBuYW1lKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZS5jbHVzdGVyaW5nW25hbWVdID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwicGl4ZWxSYW5nZVwiKTtcclxuICAgICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwibWluaW11bUNsdXN0ZXJTaXplXCIpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZENsdXN0ZXIoZW50aXR5KSB7XHJcbiAgICBkYXRhc291cmNlLmVudGl0aWVzLmFkZChlbnRpdHkpXHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlX2VudGl0eV9mcm9tX2NsdXN0ZXIoZW50aXR5KSB7XHJcbiAgICBkYXRhc291cmNlLmVudGl0aWVzLnJlbW92ZShlbnRpdHkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN3aXRjaENsdXN0ZXIoc3RhdHVzKXtcclxuICAgIGRhdGFTb3VyY2V4Zy5jbHVzdGVyaW5nLmVuYWJsZWQgPSBzdGF0dXNcclxufVxyXG5cclxuKi9cclxuXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi9Ub29scydcclxuaW1wb3J0IHtcclxuICBnZXRHcm91bmRDb3ZlclxyXG59IGZyb20gJy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5cclxuLyrliJvlu7rogZrlkIgs5Y+q6IO96IGa5ZCIcG9pbnQg77yMYmlsbGJvYXJk77yMbGFiZWwqL1xyXG5mdW5jdGlvbiBjcmVhdGVDbHVzdGVyKHZpZXdlcikge1xyXG4gIGxldCB0b29scyA9IG5ldyBUb29scygpXHJcbiAgbGV0IGNsdXN0ZXIgPSBuZXcgQ2VzaXVtLkN1c3RvbURhdGFTb3VyY2UoXCJzZGstZGF0YVNvdXJjZTFcIilcclxuICBsZXQgZGF0YVNvdXJjZVByb21pc2UgPSB2aWV3ZXIuZGF0YVNvdXJjZXMuYWRkKGNsdXN0ZXIpXHJcbiAgZGF0YVNvdXJjZVByb21pc2UudGhlbihkYXRhU291cmNlID0+IHtcclxuICAgIC8vIGlmICghZ2V0MkRWaWV3KCkpIHtcclxuICAgIC8vICAgZGF0YVNvdXJjZS5lbnRpdGllcy5jb2xsZWN0aW9uQ2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKChlbnRpdGllcykgPT4ge1xyXG4gICAgLy8gICAgIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlLCAnZW50aXRpZXMnKVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gfVxyXG4gICAgdmFyIHBpeGVsUmFuZ2UgPSAxNTtcclxuICAgIHZhciBtaW5pbXVtQ2x1c3RlclNpemUgPSAyO1xyXG4gICAgdmFyIGVuYWJsZWQgPSBmYWxzZTtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5lbmFibGVkID0gZW5hYmxlZDtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5taW5pbXVtQ2x1c3RlclNpemUgPSBtaW5pbXVtQ2x1c3RlclNpemU7XHJcbiAgICB2YXIgcmVtb3ZlTGlzdGVuZXI7XHJcblxyXG4gICAgdmFyIHBpbkJ1aWxkZXIgPSBuZXcgQ2VzaXVtLlBpbkJ1aWxkZXIoKTtcclxuICAgIHZhciBwaW41MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiNTArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICB2YXIgcGluNDAgPSBwaW5CdWlsZGVyXHJcbiAgICAgIC5mcm9tVGV4dChcIjQwK1wiLCBDZXNpdW0uQ29sb3IuT1JBTkdFLCA0OClcclxuICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgdmFyIHBpbjMwID0gcGluQnVpbGRlclxyXG4gICAgICAuZnJvbVRleHQoXCIzMCtcIiwgQ2VzaXVtLkNvbG9yLllFTExPVywgNDgpXHJcbiAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgIHZhciBwaW4yMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiMjArXCIsIENlc2l1bS5Db2xvci5HUkVFTiwgNDgpXHJcbiAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgIHZhciBwaW4xMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiMTArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgLnRvRGF0YVVSTCgpO1xyXG5cclxuICAgIHZhciBzaW5nbGVEaWdpdFBpbnMgPSBuZXcgQXJyYXkoOCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpbmdsZURpZ2l0UGlucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBzaW5nbGVEaWdpdFBpbnNbaV0gPSBwaW5CdWlsZGVyXHJcbiAgICAgICAgLmZyb21UZXh0KFwiXCIgKyAoaSArIDIpLCBDZXNpdW0uQ29sb3IuVklPTEVULCA0OClcclxuICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY3VzdG9tU3R5bGUoKSB7XHJcbiAgICAgIGlmIChDZXNpdW0uZGVmaW5lZChyZW1vdmVMaXN0ZW5lcikpIHtcclxuICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyID0gZGF0YVNvdXJjZS5jbHVzdGVyaW5nLmNsdXN0ZXJFdmVudC5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgZnVuY3Rpb24gKGNsdXN0ZXJlZEVudGl0aWVzLCBjbHVzdGVyKSB7XHJcbiAgICAgICAgICAgIC8vIGNsdXN0ZXIubGFiZWwuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjbHVzdGVyLmxhYmVsLnZlcnRpY2FsT3JpZ2luID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pZCA9IGNsdXN0ZXIubGFiZWwuaWQ7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnZlcnRpY2FsT3JpZ2luID1cclxuICAgICAgICAgICAgICBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NO1xyXG4gICAgICAgICAgICAvLyDmoLnmja7ogZrlkIjmlbDph4/nmoTlpJrlsJHorr7nva7kuI3lkIzlsYLnuqfnmoTlm77niYfku6Xlj4rlpKflsI9cclxuICAgICAgICAgICAgLyppZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdGhhdC5jb21iaW5lSWNvbkFuZExhYmVsKGhvc3QgKyAnMV/lpKfnuqIucG5nJywgY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoLCA2NCk7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLndpZHRoID0gNzI7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmhlaWdodCA9IDcyO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gNDApIHtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSB0aGF0LmNvbWJpbmVJY29uQW5kTGFiZWwoaG9zdCArICcxX+Wkp+m7hC5wbmcnLCBjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGgsIDY0KTtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQud2lkdGggPSA1NjtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaGVpZ2h0ID0gNTY7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAzMCkge1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHRoYXQuY29tYmluZUljb25BbmRMYWJlbChob3N0ICsgJzFf5aSn6JOdLnBuZycsIGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCwgNjQpO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC53aWR0aCA9IDQ4O1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5oZWlnaHQgPSA0ODtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdGhhdC5jb21iaW5lSWNvbkFuZExhYmVsKGhvc3QgKyAnMV/lsI/nuqIucG5nJywgY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoLCA2NCk7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLndpZHRoID0gNDg7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmhlaWdodCA9IDQ4O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTApIHtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSB0aGF0LmNvbWJpbmVJY29uQW5kTGFiZWwoaG9zdCArICcxX+Wwj+m7hC5wbmcnLCBjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGgsIDY0KTtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQud2lkdGggPSA0ODtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaGVpZ2h0ID0gNDg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHRoYXQuY29tYmluZUljb25BbmRMYWJlbChob3N0ICsgJzFf5bCP6JOdLnBuZycsIGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCwgNjQpO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC53aWR0aCA9IDQwO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5oZWlnaHQgPSA0MDtcclxuICAgICAgICAgIH0qL1xyXG5cclxuXHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2NsdXN0ZXIucG5nJ1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBnZXRHcm91bmRDb3ZlcigpID8gdW5kZWZpbmVkIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcblxyXG4gICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnZlcnRpY2FsT3JpZ2luID0gQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkNFTlRFUlxyXG4gICAgICAgICAgICBjbHVzdGVyLmxhYmVsLmZvbnQgPSBcIjE4cHggQXJpYWwsc2Fucy1zZXJpZlwiLFxyXG4gICAgICAgICAgICAgIC8vIGNsdXN0ZXIubGFiZWwuc2NhbGUgPSAwLjVcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSA9IGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5zdHlsZSA9IENlc2l1bS5MYWJlbFN0eWxlLkZJTExcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5zaG93QmFja2dyb3VuZCA9IHRydWVcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuMClcclxuXHJcbiAgICAgICAgICAgIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTAwMCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS41O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTI4LCAtNDYpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwMCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS4yNTtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKC0yMSwgLTQwKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSA1MCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS4xO1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzYpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDQwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAxLjA1O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzQpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDMwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAxO1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzIpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAwLjk1O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAwLjk7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigtMTYsIC0yOClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5zY2FsZSA9IDAuODtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKC0xMSwgLTI1KVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgIC8vICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW41MDtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gNDApIHtcclxuICAgICAgICAgICAgLy8gICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjQwO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAzMCkge1xyXG4gICAgICAgICAgICAvLyAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gcGluMzA7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgIC8vICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4yMDtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTApIHtcclxuICAgICAgICAgICAgLy8gICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjEwO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID1cclxuICAgICAgICAgICAgLy8gICAgIHNpbmdsZURpZ2l0UGluc1tjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggLSAyXTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZvcmNlIGEgcmUtY2x1c3RlciB3aXRoIHRoZSBuZXcgc3R5bGluZ1xyXG4gICAgICB2YXIgcGl4ZWxSYW5nZSA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlO1xyXG4gICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcucGl4ZWxSYW5nZSA9IDA7XHJcbiAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGFydCB3aXRoIGN1c3RvbSBzdHlsZVxyXG4gICAgY3VzdG9tU3R5bGUoKTtcclxuXHJcbiAgICB2YXIgdmlld01vZGVsID0ge1xyXG4gICAgICBwaXhlbFJhbmdlOiBwaXhlbFJhbmdlLFxyXG4gICAgICBtaW5pbXVtQ2x1c3RlclNpemU6IG1pbmltdW1DbHVzdGVyU2l6ZSxcclxuICAgIH07XHJcbiAgICBDZXNpdW0ua25vY2tvdXQudHJhY2sodmlld01vZGVsKTtcclxuXHJcblxyXG4gICAgZnVuY3Rpb24gc3Vic2NyaWJlUGFyYW1ldGVyKG5hbWUpIHtcclxuICAgICAgQ2VzaXVtLmtub2Nrb3V0XHJcbiAgICAgICAgLmdldE9ic2VydmFibGUodmlld01vZGVsLCBuYW1lKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmdbbmFtZV0gPSBuZXdWYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmVQYXJhbWV0ZXIoXCJwaXhlbFJhbmdlXCIpO1xyXG4gICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwibWluaW11bUNsdXN0ZXJTaXplXCIpO1xyXG4gICAgLy8gdmFyIGhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYW52YXMpO1xyXG4gICAgLy8gaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIC8vICAgICB2YXIgcGlja2VkTGFiZWwgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbik7XHJcbiAgICAvL1xyXG4gICAgLy8gICAgIGlmIChDZXNpdW0uZGVmaW5lZChwaWNrZWRMYWJlbCkpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2cocGlja2VkTGFiZWwpXHJcbiAgICAvLyAgICAgICAgIHZhciBpZHMgPSBwaWNrZWRMYWJlbC5pZDtcclxuICAgIC8vICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaWRzKSkge1xyXG4gICAgLy8gICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZHNbaV0uYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLlJFRDtcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0NMSUNLKTtcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIOW8gOWQry/lhbPpl63ogZrlkIjmlYjmnpxcclxuICogQG1ldGhvZCBzZXRfY2x1c3Rlcl9zdGF0dXNcclxuICogQHBhcmFtIFtlbmFibGU9ZmFsc2VdIHtib29sZWFufem7mOiupOWFs+mXrVxyXG4gKiBAbWVtYmVyT2YgVG9vbC0zRFxyXG4gKiAqL1xyXG5mdW5jdGlvbiBzd2l0Y2hDbHVzdGVyKHNkaywgZW5hYmxlID0gZmFsc2UpIHtcclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGVuYWJsZVxyXG4gICAgICAvLyBzeW5jRGF0YVNvdXJjZXModmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlc1tpXSwgJ2NsdXN0ZXJpbmcnKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYWRkQ2x1c3RlcihzZGssIGVudGl0eSkge1xyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgaWYoIXZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmVudGl0aWVzLmFkZChlbnRpdHkpXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3Rlcih2aWV3ZXIsIGVudGl0eSkge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmVudGl0aWVzLnJlbW92ZShlbnRpdHkpXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVDbHVzdGVyKHZpZXdlcikge1xyXG4gIGlmKCF2aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmICh2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IFwic2RrLWRhdGFTb3VyY2UxXCIpIHtcclxuICAgICAgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlc1tpXS5jbHVzdGVyaW5nLl9jbHVzdGVyKClcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgeyBjcmVhdGVDbHVzdGVyLCBhZGRDbHVzdGVyLCBzd2l0Y2hDbHVzdGVyLCByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3RlciwgdXBkYXRlQ2x1c3RlciB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUdBO0FBR0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/cluster/cluster.js\n"); - -/***/ }), - -/***/ "./src/Global/efflect/Sunshine/TimeLine.js": -/*!*************************************************!*\ - !*** ./src/Global/efflect/Sunshine/TimeLine.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TimeLine; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar TimeLine = /*#__PURE__*/function () {\n function TimeLine(sdk, speed) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, TimeLine);\n this.sdk = _objectSpread({}, sdk);\n this.progress = document.getElementById('progress');\n this.handle = document.getElementById('handle');\n // this.timeline = document.getElementById('timeline');\n this.timeline = document.getElementsByClassName('timeline-container')[0];\n this.currentTime = document.getElementById('currentTime');\n this.timelineCon = document.getElementsByClassName('timeline-container')[0];\n this.speed = speed;\n this.animationId;\n this.startTime = performance.now();\n this.manualPosition = null;\n this.isDragging = false;\n this.pauseed = false;\n this.time = '';\n this.update = this.update.bind(this);\n TimeLine.init(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(TimeLine, [{\n key: \"moveComplay\",\n value: function moveComplay(func) {\n var that = this;\n // that.timeline.addEventListener('mouseup', () => {\n document.addEventListener('mouseup', function () {\n if (that.isDragging) {\n that.isDragging = false;\n if (that.manualPosition !== null) {\n // that.sdk.viewer.clock.shouldAnimate = true\n that.startTime = performance.now() - that.manualPosition * 86400 * 1000 / that.speed;\n that.manualPosition = null;\n that.changeDate && (that.changeDateGrag = true);\n if (!that.pauseed) {\n that.update();\n func(that.time);\n } else {\n that.pausedTime = performance.now(); // 记录暂停时刻\n func(that.currentTime.textContent);\n }\n }\n }\n });\n }\n }, {\n key: \"formatTime\",\n value: function formatTime(seconds) {\n var hrs = Math.floor(seconds / 3600).toString().padStart(2, '0');\n var mins = Math.floor(seconds % 3600 / 60).toString().padStart(2, '0');\n var secs = Math.floor(seconds % 60).toString().padStart(2, '0');\n return \"\".concat(hrs, \":\").concat(mins, \":\").concat(secs);\n }\n }, {\n key: \"update\",\n value: function update() {\n if (this.manualPosition !== null) return;\n if (this.changeDate) {\n //切换日期后让时间从0开始\n this.startTime = performance.now();\n }\n var elapsed = (performance.now() - this.startTime) * this.speed;\n // if (this.elapsed) {\n // elapsed = elapsed + this.elapsed\n // this.elapsed = undefined\n // }\n var totalSeconds = elapsed / 1000; //秒\n var daySeconds = totalSeconds % 86400; //天\n var percentage = daySeconds / 86400;\n this.progress.style.width = \"\".concat(percentage * 100, \"%\");\n this.time = this.formatTime(daySeconds);\n this.currentTime.textContent = this.time;\n if (!this.pauseed) {\n this.animationId && cancelAnimationFrame(this.animationId);\n this.animationId = requestAnimationFrame(this.update);\n }\n }\n }, {\n key: \"setSpeed\",\n value: function setSpeed(v) {\n var now = performance.now();\n if (!this.pauseed) {\n var _this$manualPosition;\n var currentProgress = (_this$manualPosition = this.manualPosition) !== null && _this$manualPosition !== void 0 ? _this$manualPosition : (performance.now() - this.startTime) * this.speed / (86400 * 1000);\n this.speed = v;\n this.startTime = performance.now() - currentProgress * 86400 * 1000 / this.speed;\n } else {\n var _this$manualPosition2;\n var pausedDuration = now - this.pausedTime;\n this.startTime += pausedDuration; // 补偿暂停期间的时间差\n var _currentProgress = (_this$manualPosition2 = this.manualPosition) !== null && _this$manualPosition2 !== void 0 ? _this$manualPosition2 : (now - this.startTime) * this.speed / (86400 * 1000);\n this.speed = v;\n this.startTime = now - _currentProgress * 86400 * 1000 / this.speed;\n this.pausedTime = now; // 记录切换speed暂停时刻\n // this.speed = v;\n }\n this.manualPosition = null;\n\n // this.update();\n }\n }, {\n key: \"updateTime\",\n value: function updateTime() {\n this.manualPosition = null;\n this.startTime = performance.now() - (this.manualPosition || 0) * 86400 * 1000 / this.speed;\n this.pauseed && (this.changeDate = true);\n this.changeDateGrag = undefined;\n this.update();\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.animationId && cancelAnimationFrame(this.animationId);\n this.progress.style.width = '0%';\n this.currentTime.textContent = '00:00:00';\n }\n }], [{\n key: \"init\",\n value: function init(that) {\n for (var i = 0; i <= 24; i++) {\n if (i % 6 === 0) {\n var label = document.createElement('div');\n label.className = 'time-mark';\n label.textContent = \"\".concat(i, \":00\");\n label.style.left = \"\".concat(i / 24 * 100, \"%\");\n document.getElementsByClassName('time-marks')[0].appendChild(label);\n }\n }\n that.startTime = performance.now() - (that.manualPosition || 0) * 86400 * 1000 / that.speed;\n that.timeline.addEventListener('mousedown', function (e) {\n if (e.srcElement.className === 'handle') {\n that.isDragging = true;\n }\n e.preventDefault();\n });\n that.timeline.addEventListener('mousemove', function (e) {\n if (!that.isDragging) return;\n var rect = that.timeline.getBoundingClientRect();\n var pos = (e.clientX - rect.left) / rect.width;\n pos = Math.max(0, Math.min(1, pos));\n that.manualPosition = pos;\n that.progress.style.width = \"\".concat(pos * 100, \"%\");\n var seconds = pos * 86400;\n that.currentTime.textContent = that.formatTime(seconds);\n });\n that.update();\n document.getElementById('timePause').addEventListener('click', function () {\n that.pauseed = !that.pauseed;\n if (that.pauseed) {\n //暂停\n that.pausedTime = performance.now(); // 记录暂停时刻\n document.getElementById('timePause').textContent = '播放';\n that.animationId && cancelAnimationFrame(that.animationId);\n that.sdk.viewer.clock.shouldAnimate = false;\n } else {\n //播放\n var now = performance.now();\n var pausedDuration = now - that.pausedTime;\n document.getElementById('timePause').textContent = '暂停';\n that.manualPosition = null;\n that.startTime += pausedDuration; // 补偿暂停期间的时间差\n\n if (that.changeDate) {\n //切换日期后让时间从0开始\n if (that.changeDateGrag) {\n that.changeDateGrag = undefined;\n } else {\n that.startTime = now;\n }\n that.changeDate = undefined;\n }\n that.sdk.viewer.clock.shouldAnimate = true;\n that.update(); // 重启动画循环\n }\n });\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvVGltZUxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvVGltZUxpbmUuanM/MDI1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lTGluZSB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBzcGVlZCkge1xyXG4gICAgdGhpcy5zZGsgPSB7IC4uLnNkayB9O1xyXG4gICAgdGhpcy5wcm9ncmVzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzcycpO1xyXG4gICAgdGhpcy5oYW5kbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGFuZGxlJyk7XHJcbiAgICAvLyB0aGlzLnRpbWVsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbWVsaW5lJyk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGltZWxpbmUtY29udGFpbmVyJylbMF07XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1cnJlbnRUaW1lJyk7XHJcbiAgICB0aGlzLnRpbWVsaW5lQ29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGltZWxpbmUtY29udGFpbmVyJylbMF07XHJcbiAgICB0aGlzLnNwZWVkID0gc3BlZWQ7XHJcbiAgICB0aGlzLmFuaW1hdGlvbklkO1xyXG4gICAgdGhpcy5zdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgIHRoaXMubWFudWFsUG9zaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhdXNlZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudGltZSA9ICcnO1xyXG4gICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG5cclxuICAgIFRpbWVMaW5lLmluaXQodGhpcylcclxuICB9XHJcbiAgc3RhdGljIGluaXQodGhhdCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMjQ7IGkrKykge1xyXG4gICAgICBpZiAoaSAlIDYgPT09IDApIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICd0aW1lLW1hcmsnO1xyXG4gICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gYCR7aX06MDBgO1xyXG4gICAgICAgIGxhYmVsLnN0eWxlLmxlZnQgPSBgJHsoaSAvIDI0KSAqIDEwMH0lYDtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aW1lLW1hcmtzJylbMF0uYXBwZW5kQ2hpbGQobGFiZWwpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoYXQuc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSAoKHRoYXQubWFudWFsUG9zaXRpb24gfHwgMCkgKiA4NjQwMCAqIDEwMDAgLyB0aGF0LnNwZWVkKTtcclxuXHJcbiAgICB0aGF0LnRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7XHJcbiAgICAgIGlmIChlLnNyY0VsZW1lbnQuY2xhc3NOYW1lID09PSAnaGFuZGxlJykge1xyXG4gICAgICAgIHRoYXQuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhhdC50aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoYXQuaXNEcmFnZ2luZykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoYXQudGltZWxpbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGxldCBwb3MgPSAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIHJlY3Qud2lkdGg7XHJcbiAgICAgIHBvcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHBvcykpO1xyXG5cclxuICAgICAgdGhhdC5tYW51YWxQb3NpdGlvbiA9IHBvcztcclxuICAgICAgdGhhdC5wcm9ncmVzcy5zdHlsZS53aWR0aCA9IGAke3BvcyAqIDEwMH0lYDtcclxuXHJcbiAgICAgIGNvbnN0IHNlY29uZHMgPSBwb3MgKiA4NjQwMDtcclxuICAgICAgdGhhdC5jdXJyZW50VGltZS50ZXh0Q29udGVudCA9IHRoYXQuZm9ybWF0VGltZShzZWNvbmRzKTtcclxuICAgIH0pO1xyXG4gICAgdGhhdC51cGRhdGUoKTtcclxuXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZVBhdXNlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoYXQucGF1c2VlZCA9ICF0aGF0LnBhdXNlZWQ7XHJcbiAgICAgIGlmICh0aGF0LnBhdXNlZWQpIHsvL+aaguWBnFxyXG4gICAgICAgIHRoYXQucGF1c2VkVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOyAvLyDorrDlvZXmmoLlgZzml7bliLtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZVBhdXNlJykudGV4dENvbnRlbnQgPSAn5pKt5pS+JztcclxuICAgICAgICB0aGF0LmFuaW1hdGlvbklkICYmIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoYXQuYW5pbWF0aW9uSWQpO1xyXG4gICAgICAgIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gZmFsc2VcclxuICAgICAgfSBlbHNlIHsvL+aSreaUvlxyXG4gICAgICAgIGxldCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKVxyXG4gICAgICAgIGNvbnN0IHBhdXNlZER1cmF0aW9uID0gbm93IC0gdGhhdC5wYXVzZWRUaW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW1lUGF1c2UnKS50ZXh0Q29udGVudCA9ICfmmoLlgZwnO1xyXG4gICAgICAgIHRoYXQubWFudWFsUG9zaXRpb24gPSBudWxsXHJcbiAgICAgICAgdGhhdC5zdGFydFRpbWUgKz0gcGF1c2VkRHVyYXRpb247IC8vIOihpeWBv+aaguWBnOacn+mXtOeahOaXtumXtOW3rlxyXG5cclxuICAgICAgICBpZiAodGhhdC5jaGFuZ2VEYXRlKSB7Ly/liIfmjaLml6XmnJ/lkI7orqnml7bpl7Tku44w5byA5aeLXHJcbiAgICAgICAgICBpZiAodGhhdC5jaGFuZ2VEYXRlR3JhZykge1xyXG4gICAgICAgICAgICB0aGF0LmNoYW5nZURhdGVHcmFnID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0LnN0YXJ0VGltZSA9IG5vd1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5jaGFuZ2VEYXRlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gdHJ1ZVxyXG4gICAgICAgIHRoYXQudXBkYXRlKCk7IC8vIOmHjeWQr+WKqOeUu+W+queOr1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbW92ZUNvbXBsYXkoZnVuYykge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAvLyB0aGF0LnRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xyXG4gICAgICBpZiAodGhhdC5pc0RyYWdnaW5nKSB7XHJcbiAgICAgICAgdGhhdC5pc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoYXQubWFudWFsUG9zaXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAgIC8vIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gdHJ1ZVxyXG4gICAgICAgICAgdGhhdC5zdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtICh0aGF0Lm1hbnVhbFBvc2l0aW9uICogODY0MDAgKiAxMDAwIC8gdGhhdC5zcGVlZCk7XHJcbiAgICAgICAgICB0aGF0Lm1hbnVhbFBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgICAgIHRoYXQuY2hhbmdlRGF0ZSAmJiAodGhhdC5jaGFuZ2VEYXRlR3JhZyA9IHRydWUpXHJcbiAgICAgICAgICBpZiAoIXRoYXQucGF1c2VlZCkge1xyXG4gICAgICAgICAgICB0aGF0LnVwZGF0ZSgpXHJcbiAgICAgICAgICAgIGZ1bmModGhhdC50aW1lKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdC5wYXVzZWRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7IC8vIOiusOW9leaaguWBnOaXtuWIu1xyXG4gICAgICAgICAgICBmdW5jKHRoYXQuY3VycmVudFRpbWUudGV4dENvbnRlbnQpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdFRpbWUoc2Vjb25kcykge1xyXG4gICAgY29uc3QgaHJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgbWlucyA9IE1hdGguZmxvb3IoKHNlY29uZHMgJSAzNjAwKSAvIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIHJldHVybiBgJHtocnN9OiR7bWluc306JHtzZWNzfWA7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5tYW51YWxQb3NpdGlvbiAhPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY2hhbmdlRGF0ZSkgey8v5YiH5o2i5pel5pyf5ZCO6K6p5pe26Ze05LuOMOW8gOWni1xyXG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpXHJcbiAgICB9XHJcbiAgICBsZXQgZWxhcHNlZCA9IChwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lKSAqIHRoaXMuc3BlZWQ7XHJcbiAgICAvLyBpZiAodGhpcy5lbGFwc2VkKSB7XHJcbiAgICAvLyAgIGVsYXBzZWQgPSBlbGFwc2VkICsgdGhpcy5lbGFwc2VkXHJcbiAgICAvLyAgIHRoaXMuZWxhcHNlZCA9IHVuZGVmaW5lZFxyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gZWxhcHNlZCAvIDEwMDA7Ly/np5JcclxuICAgIGNvbnN0IGRheVNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA4NjQwMDsvL+WkqVxyXG4gICAgY29uc3QgcGVyY2VudGFnZSA9IGRheVNlY29uZHMgLyA4NjQwMDtcclxuXHJcbiAgICB0aGlzLnByb2dyZXNzLnN0eWxlLndpZHRoID0gYCR7cGVyY2VudGFnZSAqIDEwMH0lYDtcclxuICAgIHRoaXMudGltZSA9IHRoaXMuZm9ybWF0VGltZShkYXlTZWNvbmRzKVxyXG4gICAgdGhpcy5jdXJyZW50VGltZS50ZXh0Q29udGVudCA9IHRoaXMudGltZTtcclxuICAgIGlmICghdGhpcy5wYXVzZWVkKSB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25JZCk7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTcGVlZCh2KSB7XHJcbiAgICBsZXQgbm93ID0gcGVyZm9ybWFuY2Uubm93KClcclxuICAgIGlmICghdGhpcy5wYXVzZWVkKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRQcm9ncmVzcyA9IHRoaXMubWFudWFsUG9zaXRpb24gPz9cclxuICAgICAgICAocGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLnN0YXJ0VGltZSkgKiB0aGlzLnNwZWVkIC8gKDg2NDAwICogMTAwMCk7XHJcbiAgICAgIHRoaXMuc3BlZWQgPSB2O1xyXG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gKGN1cnJlbnRQcm9ncmVzcyAqIDg2NDAwICogMTAwMCAvIHRoaXMuc3BlZWQpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBwYXVzZWREdXJhdGlvbiA9IG5vdyAtIHRoaXMucGF1c2VkVGltZTtcclxuICAgICAgdGhpcy5zdGFydFRpbWUgKz0gcGF1c2VkRHVyYXRpb247IC8vIOihpeWBv+aaguWBnOacn+mXtOeahOaXtumXtOW3rlxyXG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3MgPSB0aGlzLm1hbnVhbFBvc2l0aW9uID8/XHJcbiAgICAgICAgKG5vdyAtIHRoaXMuc3RhcnRUaW1lKSAqIHRoaXMuc3BlZWQgLyAoODY0MDAgKiAxMDAwKTtcclxuICAgICAgdGhpcy5zcGVlZCA9IHY7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gbm93IC0gKGN1cnJlbnRQcm9ncmVzcyAqIDg2NDAwICogMTAwMCAvIHRoaXMuc3BlZWQpO1xyXG5cclxuICAgICAgdGhpcy5wYXVzZWRUaW1lID0gbm93OyAvLyDorrDlvZXliIfmjaJzcGVlZOaaguWBnOaXtuWIu1xyXG4gICAgICAvLyB0aGlzLnNwZWVkID0gdjtcclxuICAgIH1cclxuICAgIHRoaXMubWFudWFsUG9zaXRpb24gPSBudWxsO1xyXG5cclxuICAgIC8vIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gIH1cclxuICB1cGRhdGVUaW1lKCkge1xyXG4gICAgdGhpcy5tYW51YWxQb3NpdGlvbiA9IG51bGw7XHJcbiAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gKCh0aGlzLm1hbnVhbFBvc2l0aW9uIHx8IDApICogODY0MDAgKiAxMDAwIC8gdGhpcy5zcGVlZCk7XHJcbiAgICB0aGlzLnBhdXNlZWQgJiYgKHRoaXMuY2hhbmdlRGF0ZSA9IHRydWUpXHJcbiAgICB0aGlzLmNoYW5nZURhdGVHcmFnID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uSWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25JZCk7XHJcbiAgICB0aGlzLnByb2dyZXNzLnN0eWxlLndpZHRoID0gJzAlJztcclxuICAgIHRoaXMuY3VycmVudFRpbWUudGV4dENvbnRlbnQgPSAnMDA6MDA6MDAnO1xyXG4gIH1cclxuXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQStEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBbkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/TimeLine.js\n"); - -/***/ }), - -/***/ "./src/Global/efflect/Sunshine/_element.js": -/*!*************************************************!*\ - !*** ./src/Global/efflect/Sunshine/_element.js ***! - \*************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u64AD\\u653E\\u500D\\u6570\\n
\\n \\n \\n
\\n
\\n
\\n \\u9634\\u5F71\\u67D4\\u548C\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u9634\\u5F71\\u4F18\\u5316\\n \\n
\\n
\\n \\u65E5\\u671F\\u9009\\u62E9\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
00:00:00
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvX2VsZW1lbnQuanM/YjJhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pKt5pS+5YCN5pWwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwLjAxXCIgbWF4PVwiOTk5OTk5XCIgc3RlcD1cIjEwXCIgQG1vZGVsPVwic3BlZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Zi05b2x5p+U5ZKM5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJkYXJrbmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumYtOW9seS8mOWMljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzb2Z0U2hhZG93XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7ml6XmnJ/pgInmi6k8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzdW5zaGluZS1kYXRlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIllZWVktTU0tRERcIiBAbW9kZWw9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiBpZD1cInRpbWVsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBpZD1cInByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhhbmRsZVwiIGlkPVwiaGFuZGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnQtdGltZVwiIGlkPVwiY3VycmVudFRpbWVcIj4wMDowMDowMDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1tYXJrc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInRpbWVQYXVzZVwiPuaaguWBnDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvREE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/_element.js\n"); - -/***/ }), - -/***/ "./src/Global/efflect/Sunshine/eventBinding.js": -/*!*****************************************************!*\ - !*** ./src/Global/efflect/Sunshine/eventBinding.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar EventBinding = /*#__PURE__*/function () {\n function EventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, EventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(EventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return EventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return EventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n EventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n this.element = {};\n var _loop = function _loop() {\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var Event = {\n 'input': [],\n 'change': [],\n 'blur': [],\n 'click': []\n };\n var isEvent = false;\n var removeName = [];\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop3 = function _loop3() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.change.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n if (elements[i].type == 'number') {\n Event.input.push(function (e) {\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) && value >= Number(e.target.min)) {\n // that[m.value] = value\n value = value;\n }\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n // if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {\n // value = Number(e.target.dataset.min)\n // }\n that[m.value] = value;\n }\n }\n });\n Event.blur.push(function (e) {\n var value = e.target.value;\n if (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n });\n } else {\n Event.input.push(function (e) {\n that[m.value] = e.target.value;\n });\n }\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n isEvent = true;\n Event.click.push(function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop3();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var _loop2 = function _loop2(key) {\n if (Event[key].length > 0) {\n elements[i].addEventListener(key, function (e) {\n for (var t = 0; t < Event[key].length; t++) {\n Event[key][t](e);\n }\n });\n }\n };\n for (var key in Event) {\n _loop2(key);\n }\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(EventBinding, \"event\", {});\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvZXZlbnRCaW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9lZmZsZWN0L1N1bnNoaW5lL2V2ZW50QmluZGluZy5qcz84MGY5Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEV2ZW50QmluZGluZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB7fVxyXG4gIH1cclxuICBzdGF0aWMgZXZlbnQgPSB7fVxyXG5cclxuICBnZXRFdmVudChuYW1lKSB7XHJcbiAgICByZXR1cm4gRXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdXHJcbiAgfVxyXG5cclxuICBnZXRFdmVudEFsbCgpIHtcclxuICAgIHJldHVybiBFdmVudEJpbmRpbmcuZXZlbnRcclxuICB9XHJcblxyXG4gIHNldEV2ZW50KG5hbWUsIGV2ZW50KSB7XHJcbiAgICBFdmVudEJpbmRpbmcuZXZlbnRbbmFtZV0gPSBldmVudFxyXG4gIH1cclxuXHJcbiAgb24odGhhdCwgZWxlbWVudHMpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgRXZlbnQgPSB7XHJcbiAgICAgICAgJ2lucHV0JzogW10sXHJcbiAgICAgICAgJ2NoYW5nZSc6IFtdLFxyXG4gICAgICAgICdibHVyJzogW10sXHJcbiAgICAgICAgJ2NsaWNrJzogW11cclxuICAgICAgfVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LmNoYW5nZS5wdXNoKChlKSA9PiB7IHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC5jaGVja2VkIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgRXZlbnQuaW5wdXQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgZS50YXJnZXQudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCgoIWUudGFyZ2V0Lm1heCkgJiYgKCFlLnRhcmdldC5taW4pKSB8fCAoKHZhbHVlIDw9IE51bWJlcihlLnRhcmdldC5tYXgpKSAmJiB2YWx1ZSA+PSBOdW1iZXIoZS50YXJnZXQubWluKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIEV2ZW50LmJsdXIucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgKGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAnJyAmJiAhQm9vbGVhbihlLnRhcmdldC5kYXRhc2V0Lm51bGwpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBFdmVudC5pbnB1dC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0ucHVzaChlbGVtZW50c1tpXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LmNsaWNrLnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJlbW92ZU5hbWUubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBFdmVudCkge1xyXG4gICAgICAgICAgaWYgKEV2ZW50W2tleV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKGtleSwgKGUpID0+IHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50W2tleV0ubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgICAgIEV2ZW50W2tleV1bdF0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRXZlbnRCaW5kaW5nO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFrRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQTlHQTtBQUFBO0FBRUE7QUE2R0E7QUFBQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Global/efflect/Sunshine/index.js": -/*!**********************************************!*\ - !*** ./src/Global/efflect/Sunshine/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Sunshine; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_element */ \"./src/Global/efflect/Sunshine/_element.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./eventBinding */ \"./src/Global/efflect/Sunshine/eventBinding.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _TimeLine__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TimeLine */ \"./src/Global/efflect/Sunshine/TimeLine.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\r\n * @description 水面\r\n */\n\n\n\n\n\n\n\nvar Sunshine = /*#__PURE__*/function () {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 光照\r\n * @param options {object} 光照属性\r\n * @param options.time=当前时间 {string} 当前时间\r\n * @param options.speed=1000 {number} 速度倍速\r\n * @param options.darkness=0.3 {number} 阴影不透明度--越大越不透明\r\n * @param options.softShadow=false {boolean} 阴影优化--true/false}\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function Sunshine(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Sunshine);\n this.viewer = sdk.viewer;\n this.options = _objectSpread({}, options);\n this.sdk = _objectSpread({}, sdk);\n var now = new Date();\n now.setHours(0, 0, 0, 0); // 设置为当天0点\n this.options.time = options.time;\n this.options.hour = options.hour;\n this.options.speed = options.speed || 1000;\n this.options.darkness = options.darkness || 0.4;\n this.options.softShadow = options.softShadow || true;\n this.options.show = options.show === true ? true : false;\n this.Dialog = _Dialog;\n this.timeLine;\n this._EventBinding = new _eventBinding__WEBPACK_IMPORTED_MODULE_7__[\"default\"]();\n this._elms = {};\n Sunshine.start(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Sunshine, [{\n key: \"darkness\",\n get: function get() {\n return this.options.darkness;\n },\n set: function set(v) {\n this.options.darkness = v;\n this.viewer.shadowMap.darkness = 1.0 - this.options.darkness;\n this._elms.darkness && this._elms.darkness.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"time\",\n get: function get() {\n return this.options.time;\n },\n set: function set(v) {\n this.options.time = v;\n var now = new Date();\n var timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n\n // _that.timeLine.updateTime(timeData)\n }\n }, {\n key: \"timeBar\",\n set: function set(v) {\n var timeData = this.time + \" \" + v;\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n this.viewer.scene.requestRender();\n }\n }, {\n key: \"realTime\",\n set: function set(v) {\n var now = new Date();\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(now);\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n this.viewer.clock.multiplier = this.options.speed;\n // this.timeLine.setSpeed(v)\n }\n }, {\n key: \"softShadow\",\n get: function get() {\n return this.options.softShadow;\n },\n set: function set(v) {\n this.options.softShadow = v;\n this.viewer.shadowMap.softShadows = this.options.softShadow;\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var state,\n tools,\n _this,\n _that,\n jeDateObject,\n printDateElm,\n text,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_9__[\"default\"]();\n this.originalOptions = tools.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (state) {\n _this = this; // this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {\n // title: '光照属性', left: '180px', top: '100px',\n // // confirmCallBack: (options) => {\n // // this.originalOptions = tools.deepCopyObj(this.options)\n // // this._DialogObject.close()\n // // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)\n // // syncData(this.sdk, this.options.id)\n // // syncSplitData(this.sdk, this.options.id)\n // // this.remove()\n // // },\n // resetCallBack: () => {\n // this.reset()\n // this.Dialog.resetCallBack && this.Dialog.resetCallBack()\n // },\n // // removeCallBack: () => {\n // // this.Dialog.removeCallBack && this.Dialog.removeCallBack()\n // // },\n // closeCallBack: () => {\n // this.reset()\n // _this.remove()\n // // this.entity.style = new Cesium.Cesium3DTileStyle({\n // // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // // show: true,\n // // });\n // this.Dialog.closeCallBack && this.Dialog.closeCallBack()\n // },\n // showCallBack: (show) => {\n // this.show = show\n // this.Dialog.showCallBack && this.Dialog.showCallBack()\n // }\n // }, true)\n // this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' sun-shine-surface'\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = html()\n // this._DialogObject.contentAppChild(contentElm)\n //时间轴\n _that = this;\n this.timeLine = new _TimeLine__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk, this.options.speed);\n // this.timeLine.setSpeed(1000)\n this.timeLine.moveComplay(function (item) {\n var timeData = _that.time + \" \" + item;\n _that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n _that.viewer.scene.requestRender();\n });\n printDateElm = contentElm.getElementsByClassName('sunshine-date')[0];\n jeDateObject = jeDate(printDateElm, {\n format: \"YYYY-MM-DD\",\n isinitVal: true,\n isClear: false,\n donefun: function donefun(obj) {\n this.time = obj.val;\n var now = new Date();\n var timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点\n _that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n _that.timeLine.updateTime(timeData);\n }\n });\n if (this.time) {\n jeDateObject.setValue(this.time);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n this.time = jeDateObject.getValue();\n }\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [jeDateObject];\n } else {\n // if (this._element_style) {\n // document.getElementsByTagName('head')[0].removeChild(this._element_style)\n // this._element_style = null\n // }\n // if (this._DialogObject && this._DialogObject.remove) {\n // this._DialogObject.remove()\n // this._DialogObject = null\n // }\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.viewer.entities.getById(this.options.id)) {\n return;\n }\n this.time = this.originalOptions.time;\n this.speed = this.originalOptions.speed;\n this.darkness = this.originalOptions.darkness;\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n var options,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 删除\r\n */\n )\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3() {\n var lightCamera;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.viewer.scene.globe.enableLighting = false;\n this.viewer.shadows = false;\n this.viewer.clock.multiplier = 1.0;\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date());\n this.entity = null;\n this.timeLine && this.timeLine.clear();\n this.viewer.shadowMap.cascadesEnabled = false;\n this.viewer.shadowMap.size = 1024;\n this.viewer.shadowMap.numberOfCascades = 3; // 增加级联层数(默认3层)\n lightCamera = this.viewer.shadowMap._lightCamera;\n this.viewer.shadowMap.normalOffset = false; // 避免深度冲突导致的阴影闪烁\n\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n // await this.sdk.removeIncetance(this.options.id)\n _context3.next = 14;\n return Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_8__[\"syncData\"])(this.sdk, this.options.id);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"start\",\n value: function start(that) {\n that.viewer.scene.globe.enableLighting = true;\n that.viewer.shadows = true;\n that.viewer.scene.globe.enableLighting = true;\n that.viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY;\n that.viewer.shadowMap.darkness = 1.0 - that.options.darkness; //阴影透明度--越大越透明\n\n // const now = new Date();\n // now.setHours(0, 0, 0, 0); // 设置为当天0点\n var date;\n if (that.options.time && that.options.hour) {\n date = new Date(that.options.time + \" \" + that.options.hour);\n } else {\n date = new Date();\n date.setHours(0, 0, 0, 0); // 设置为当天0点\n }\n that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(date);\n that.viewer.clock.multiplier = that.options.speed;\n that.viewer.shadowMap.softShadows = that.options.softShadow;\n that.viewer.shadowMap.cascadesEnabled = true;\n that.viewer.shadowMap.size = 2048;\n that.viewer.shadowMap.numberOfCascades = 4; // 增加级联层数(默认3层)\n that.viewer.shadowMap.maximumDistance = 5000; // 扩大阴影渲染距离\n var lightCamera = that.viewer.shadowMap._lightCamera;\n lightCamera.frustum.near = 0.1; // 缩小近平面距离\n lightCamera.frustum.far = 10000; // 扩大远平面距离\n that.viewer.shadowMap.normalOffset = true; // 避免深度冲突导致的阴影闪烁\n\n // that.edit(true)\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvaW5kZXguanM/YjAxYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGRlc2NyaXB0aW9uIOawtOmdolxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi9PYmovRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi8uLi9Ub29scydcclxuaW1wb3J0IFRpbWVMaW5lIGZyb20gJy4vVGltZUxpbmUnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uL1NwbGl0U2NyZWVuJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vuc2hpbmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5YWJ54WnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5YWJ54Wn5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudGltZT3lvZPliY3ml7bpl7Qge3N0cmluZ30g5b2T5YmN5pe26Ze0XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MTAwMCB7bnVtYmVyfSDpgJ/luqblgI3pgJ9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5kYXJrbmVzcz0wLjMge251bWJlcn0g6Zi05b2x5LiN6YCP5piO5bqmLS3otorlpKfotorkuI3pgI/mmI5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zb2Z0U2hhZG93PWZhbHNlIHtib29sZWFufSDpmLTlvbHkvJjljJYtLXRydWUvZmFsc2V9XHJcbiAgICogQHBhcmFtIERpYWxvZyB7b2JqZWN0fSDlvLnmoYblr7nosaFcclxuICAgKiBAcGFyYW0gRGlhbG9nLmNvbmZpcm1DYWxsQmFjayB7ZnVuY3Rpb259IOW8ueahhuehruiupOaXtueahOWbnuiwg1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy5zZGsgPSB7IC4uLnNkayB9XHJcblxyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIOiuvue9ruS4uuW9k+WkqTDngrlcclxuICAgIHRoaXMub3B0aW9ucy50aW1lID0gb3B0aW9ucy50aW1lXHJcbiAgICB0aGlzLm9wdGlvbnMuaG91ciA9IG9wdGlvbnMuaG91clxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gb3B0aW9ucy5zcGVlZCB8fCAxMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMuZGFya25lc3MgPSBvcHRpb25zLmRhcmtuZXNzIHx8IDAuNFxyXG4gICAgdGhpcy5vcHRpb25zLnNvZnRTaGFkb3cgPSBvcHRpb25zLnNvZnRTaGFkb3cgfHwgdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSBvcHRpb25zLnNob3cgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy50aW1lTGluZVxyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICBTdW5zaGluZS5zdGFydCh0aGlzKVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBzdGFydCh0aGF0KSB7XHJcbiAgICB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IHRydWVcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd3MgPSB0cnVlXHJcbiAgICB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhhdC52aWV3ZXIudGVycmFpblNoYWRvd3MgPSBDZXNpdW0uU2hhZG93TW9kZS5SRUNFSVZFX09OTFlcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd01hcC5kYXJrbmVzcyA9IDEuMCAtIHRoYXQub3B0aW9ucy5kYXJrbmVzcyAvL+mYtOW9semAj+aYjuW6pi0t6LaK5aSn6LaK6YCP5piOXHJcblxyXG4gICAgLy8gY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIC8vIG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgbGV0IGRhdGVcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMudGltZSAmJiB0aGF0Lm9wdGlvbnMuaG91cikge1xyXG4gICAgICBkYXRlID0gbmV3IERhdGUodGhhdC5vcHRpb25zLnRpbWUgKyBcIiBcIiArIHRoYXQub3B0aW9ucy5ob3VyKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIOiuvue9ruS4uuW9k+WkqTDngrlcclxuICAgIH1cclxuICAgIHRoYXQudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUoZGF0ZSk7XHJcbiAgICB0aGF0LnZpZXdlci5jbG9jay5tdWx0aXBsaWVyID0gdGhhdC5vcHRpb25zLnNwZWVkO1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLnNvZnRTaGFkb3dzID0gdGhhdC5vcHRpb25zLnNvZnRTaGFkb3c7XHJcbiAgICB0aGF0LnZpZXdlci5zaGFkb3dNYXAuY2FzY2FkZXNFbmFibGVkID0gdHJ1ZVxyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLnNpemUgPSAyMDQ4O1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLm51bWJlck9mQ2FzY2FkZXMgPSA0OyAgIC8vIOWinuWKoOe6p+iBlOWxguaVsO+8iOm7mOiupDPlsYLvvIlcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd01hcC5tYXhpbXVtRGlzdGFuY2UgPSA1MDAwOyAvLyDmianlpKfpmLTlvbHmuLLmn5Pot53nprtcclxuICAgIGNvbnN0IGxpZ2h0Q2FtZXJhID0gdGhhdC52aWV3ZXIuc2hhZG93TWFwLl9saWdodENhbWVyYTtcclxuICAgIGxpZ2h0Q2FtZXJhLmZydXN0dW0ubmVhciA9IDAuMTsgICAgLy8g57yp5bCP6L+R5bmz6Z2i6Led56a7XHJcbiAgICBsaWdodENhbWVyYS5mcnVzdHVtLmZhciA9IDEwMDAwOyAgIC8vIOaJqeWkp+i/nOW5s+mdoui3neemu1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLm5vcm1hbE9mZnNldCA9IHRydWU7IC8vIOmBv+WFjea3seW6puWGsueqgeWvvOiHtOeahOmYtOW9semXqueDgVxyXG5cclxuICAgIC8vIHRoYXQuZWRpdCh0cnVlKVxyXG4gIH1cclxuICBnZXQgZGFya25lc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRhcmtuZXNzXHJcbiAgfVxyXG4gIHNldCBkYXJrbmVzcyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZGFya25lc3MgPSB2XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuZGFya25lc3MgPSAxLjAgLSB0aGlzLm9wdGlvbnMuZGFya25lc3NcclxuICAgIHRoaXMuX2VsbXMuZGFya25lc3MgJiZcclxuICAgICAgdGhpcy5fZWxtcy5kYXJrbmVzcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCB0aW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50aW1lXHJcbiAgfVxyXG4gIHNldCB0aW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50aW1lID0gdlxyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGxldCB0aW1lRGF0YSA9IG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2suY3VycmVudFRpbWUgPSBDZXNpdW0uSnVsaWFuRGF0ZS5mcm9tRGF0ZShuZXcgRGF0ZSh0aW1lRGF0YSkpO1xyXG5cclxuICAgIC8vIF90aGF0LnRpbWVMaW5lLnVwZGF0ZVRpbWUodGltZURhdGEpXHJcbiAgfVxyXG4gIHNldCB0aW1lQmFyKHYpIHtcclxuICAgIGxldCB0aW1lRGF0YSA9IHRoaXMudGltZSArIFwiIFwiICsgdlxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2suY3VycmVudFRpbWUgPSBDZXNpdW0uSnVsaWFuRGF0ZS5mcm9tRGF0ZShuZXcgRGF0ZSh0aW1lRGF0YSkpO1xyXG4gICAgdGhpcy52aWV3ZXIuc2NlbmUucmVxdWVzdFJlbmRlcigpO1xyXG4gIH1cclxuICBzZXQgcmVhbFRpbWUodikge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobm93KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG4gIHNldCBzcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLnNwZWVkICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2subXVsdGlwbGllciA9IHRoaXMub3B0aW9ucy5zcGVlZDtcclxuICAgIC8vIHRoaXMudGltZUxpbmUuc2V0U3BlZWQodilcclxuICB9XHJcbiAgZ2V0IHNvZnRTaGFkb3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNvZnRTaGFkb3dcclxuICB9XHJcbiAgc2V0IHNvZnRTaGFkb3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNvZnRTaGFkb3cgPSB2XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuc29mdFNoYWRvd3MgPSB0aGlzLm9wdGlvbnMuc29mdFNoYWRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCB0b29scyA9IG5ldyBUb29scygpXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRvb2xzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICAvLyBsZXQgZWxtcyA9IHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1iYXNlLWRpYWxvZycpXHJcbiAgICAvLyBmb3IgKGxldCBpID0gZWxtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChlbG1zW2ldKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICAvLyB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9yaWdpbmFsT3B0aW9ucywge1xyXG4gICAgICAvLyAgIHRpdGxlOiAn5YWJ54Wn5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAvLyAgIC8vIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdG9vbHMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAvLyAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgLy8gICAvLyAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgIC8vICAgLy8gICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAvLyAgIC8vICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAvLyAgIC8vICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgICAvLyAgIC8vIH0sXHJcbiAgICAgIC8vICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgIC8vICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAvLyAgIH0sXHJcbiAgICAgIC8vICAgLy8gcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgLy8gICAvLyB9LFxyXG4gICAgICAvLyAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAvLyAgICAgX3RoaXMucmVtb3ZlKClcclxuICAgICAgLy8gICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgIC8vICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgIC8vICAgICAvLyAgIHNob3c6IHRydWUsXHJcbiAgICAgIC8vICAgICAvLyB9KTtcclxuICAgICAgLy8gICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgfSxcclxuICAgICAgLy8gICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgIC8vICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0sIHRydWUpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgc3VuLXNoaW5lLXN1cmZhY2UnXHJcbiAgICAgIC8vIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIC8v5pe26Ze06L20XHJcbiAgICAgIGxldCBfdGhhdCA9IHRoaXNcclxuICAgICAgdGhpcy50aW1lTGluZSA9IG5ldyBUaW1lTGluZSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLnNwZWVkKVxyXG4gICAgICAvLyB0aGlzLnRpbWVMaW5lLnNldFNwZWVkKDEwMDApXHJcbiAgICAgIHRoaXMudGltZUxpbmUubW92ZUNvbXBsYXkoaXRlbSA9PiB7XHJcbiAgICAgICAgbGV0IHRpbWVEYXRhID0gX3RoYXQudGltZSArIFwiIFwiICsgaXRlbVxyXG4gICAgICAgIF90aGF0LnZpZXdlci5jbG9jay5jdXJyZW50VGltZSA9IENlc2l1bS5KdWxpYW5EYXRlLmZyb21EYXRlKG5ldyBEYXRlKHRpbWVEYXRhKSk7XHJcbiAgICAgICAgX3RoYXQudmlld2VyLnNjZW5lLnJlcXVlc3RSZW5kZXIoKTtcclxuICAgICAgfSlcclxuICAgICAgbGV0IGplRGF0ZU9iamVjdFxyXG4gICAgICBsZXQgcHJpbnREYXRlRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdW5zaGluZS1kYXRlJylbMF1cclxuICAgICAgbGV0IHRleHRcclxuXHJcbiAgICAgIGplRGF0ZU9iamVjdCA9IGplRGF0ZShwcmludERhdGVFbG0sIHtcclxuICAgICAgICBmb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gICAgICAgIGlzaW5pdFZhbDogdHJ1ZSxcclxuICAgICAgICBpc0NsZWFyOiBmYWxzZSxcclxuICAgICAgICBkb25lZnVuOiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWUgPSBvYmoudmFsXHJcblxyXG4gICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIGxldCB0aW1lRGF0YSA9IG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgICAgICAgX3RoYXQudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobmV3IERhdGUodGltZURhdGEpKTtcclxuXHJcbiAgICAgICAgICBfdGhhdC50aW1lTGluZS51cGRhdGVUaW1lKHRpbWVEYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0aGlzLnRpbWUpIHtcclxuICAgICAgICBqZURhdGVPYmplY3Quc2V0VmFsdWUodGhpcy50aW1lKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGplRGF0ZU9iamVjdC5ub3dCdG4gJiYgamVEYXRlT2JqZWN0Lm5vd0J0bigpXHJcbiAgICAgICAgdGhpcy50aW1lID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IgPSBbamVEYXRlT2JqZWN0XVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50aW1lXHJcbiAgICB0aGlzLnNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3BlZWRcclxuICAgIHRoaXMuZGFya25lc3MgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5kYXJrbmVzc1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5Yiw5a+55bqU5a6e5L2TXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuXHJcbiAgICB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dzID0gZmFsc2VcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLm11bHRpcGxpZXIgPSAxLjBcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobmV3IERhdGUoKSk7XHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIHRoaXMudGltZUxpbmUgJiYgdGhpcy50aW1lTGluZS5jbGVhcigpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIuc2hhZG93TWFwLmNhc2NhZGVzRW5hYmxlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuc2l6ZSA9IDEwMjQ7XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAubnVtYmVyT2ZDYXNjYWRlcyA9IDM7ICAgLy8g5aKe5Yqg57qn6IGU5bGC5pWw77yI6buY6K6kM+Wxgu+8iVxyXG4gICAgY29uc3QgbGlnaHRDYW1lcmEgPSB0aGlzLnZpZXdlci5zaGFkb3dNYXAuX2xpZ2h0Q2FtZXJhO1xyXG4gICAgdGhpcy52aWV3ZXIuc2hhZG93TWFwLm5vcm1hbE9mZnNldCA9IGZhbHNlOyAvLyDpgb/lhY3mt7HluqblhrLnqoHlr7zoh7TnmoTpmLTlvbHpl6rng4FcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIC8vIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQW1DQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUJBO0FBQUE7QUFBQTtBQXRPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/index.js\n"); - -/***/ }), - -/***/ "./src/Global/efflect/index.js": -/*!*************************************!*\ - !*** ./src/Global/efflect/index.js ***! - \*************************************/ -/*! exports provided: rain, snow, fog, nightVision, skyStarry, illumination */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rain\", function() { return rain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snow\", function() { return snow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fog\", function() { return fog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nightVision\", function() { return nightVision; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"skyStarry\", function() { return skyStarry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"illumination\", function() { return illumination; });\n/*全局特效*/\n\nvar rainStages = null;\nvar snowStages = null;\nvar fogStages = null;\nvar nightVisionStages = null;\n\n// 雨\nvar FS_Rain = \"uniform sampler2D colorTexture;//\\u8F93\\u5165\\u7684\\u573A\\u666F\\u6E32\\u67D3\\u7167\\u7247\\n varying vec2 v_textureCoordinates;\\n uniform float tiltAngle;\\n uniform float rainSize;\\n uniform float rainWidth;\\n uniform float rainSpeed;\\n\\n float hash(float x){\\n return fract(sin(x*133.3)*13.13);\\n }\\n void main(void){\\n float time = czm_frameNumber / rainSpeed;\\n vec2 resolution = czm_viewport.zw;\\n vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\\n vec3 c=vec3(.6,.7,.8);\\n float a= tiltAngle;\\n float si=sin(a),co=cos(a);\\n uv*=mat2(co,-si,si,co);\\n uv*=length(uv+vec2(0,4.9))*rainSize+1.;\\n float v=1.-sin(hash(floor(uv.x*rainWidth))*2.);\\n float b=clamp(abs(sin(20.*time*v+uv.y*(5./(2.+v))))-.95,0.,1.)*20.;\\n c*=v*b; //\\u5C4F\\u5E55\\u4E0A\\u96E8\\u7684\\u989C\\u8272\\n gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(c,1), 0.5); //\\u5C06\\u96E8\\u548C\\u4E09\\u7EF4\\u573A\\u666F\\u878D\\u5408\\n }\";\n\n// 雪\nvar FS_Snow = \"uniform sampler2D colorTexture;\\n varying vec2 v_textureCoordinates;\\n uniform float snowSize;\\n uniform float snowSpeed;\\n \\n float snow(vec2 uv,float scale)\\n {\\n float time = czm_frameNumber / snowSpeed;\\n float w=smoothstep(1.,0.,-uv.y*(scale/10.));if(w<.1)return 0.;\\n uv+=time/scale;uv.y+=time*2./scale;uv.x+=sin(uv.y+time*.5)/scale;\\n uv*=scale;vec2 s=floor(uv),f=fract(uv),p;float k=3.,d;\\n p=.5+.35*sin(11.*fract(sin((s+p+scale)*mat2(7,3,6,5))*5.))-f;d=length(p);k=min(d,k);\\n k=smoothstep(0.,k,sin(f.x+f.y)*0.01*snowSize);\\n return k*w;\\n }\\n void main(void){\\n vec2 resolution = czm_viewport.zw;\\n vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\\n vec3 finalColor=vec3(0);\\n //float c=smoothstep(1.,0.3,clamp(uv.y*.3+.8,0.,.75));\\n float c = 0.0;\\n c+=snow(uv,30.)*.0;\\n c+=snow(uv,20.)*.0;\\n c+=snow(uv,15.)*.0;\\n c+=snow(uv,10.);\\n c+=snow(uv,8.);\\n c+=snow(uv,6.);\\n c+=snow(uv,5.);\\n finalColor=(vec3(c));\\n gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(finalColor,1), 0.5);\\n }\\n \";\n\n// 雾\nvar FS_Fog = \"\\n uniform sampler2D colorTexture;\\n uniform sampler2D depthTexture;\\n uniform float visibility;\\n uniform vec4 fogColor;\\n varying vec2 v_textureCoordinates;\\n void main(void)\\n {\\n vec4 origcolor = texture2D(colorTexture, v_textureCoordinates);\\n float depth = czm_readDepth(depthTexture, v_textureCoordinates);\\n vec4 depthcolor = texture2D(depthTexture, v_textureCoordinates);\\n float f = visibility * (depthcolor.r - 0.3) / 0.2;\\n if (f < 0.0) f = 0.0;\\n else if (f > 1.0) f = 1.0;\\n gl_FragColor = mix(origcolor, fogColor, f);\\n }\\n \";\n\n/*雨天*/\nfunction rain(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'rain') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n rainStages = new Cesium.PostProcessStage({\n name: \"rain\",\n fragmentShader: FS_Rain,\n uniforms: {\n tiltAngle: -0.4,\n // 倾斜角度\n rainSize: 0.3,\n // 雨大小\n rainWidth: 40,\n //雨长度\n rainSpeed: 100 //雨速\n }\n });\n sdk.viewer.scene.postProcessStages.add(rainStages);\n }\n var _require = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require.getSdk;\n var _require2 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require2.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i = 0; _i < _stages.length; _i++) {\n if (_stages[_i].name && _stages[_i].name === 'rain') {\n sdkD.viewer.scene.postProcessStages.remove(_stages[_i]);\n break;\n }\n }\n if (status) {\n rainStages = new Cesium.PostProcessStage({\n name: \"rain\",\n fragmentShader: FS_Rain,\n uniforms: {\n tiltAngle: -0.4,\n // 倾斜角度\n rainSize: 0.3,\n // 雨大小\n rainWidth: 40,\n //雨长度\n rainSpeed: 100 //雨速\n }\n });\n sdkD.viewer.scene.postProcessStages.add(rainStages);\n }\n }\n}\n\n// 雪\nfunction snow(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'snow') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n snowStages = new Cesium.PostProcessStage({\n name: \"snow\",\n fragmentShader: FS_Snow,\n uniforms: {\n snowSize: 2,\n // 大小\n snowSpeed: 60 //速度\n }\n });\n sdk.viewer.scene.postProcessStages.add(snowStages);\n }\n var _require3 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require3.getSdk;\n var _require4 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require4.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages2 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i2 = 0; _i2 < _stages2.length; _i2++) {\n if (_stages2[_i2].name && _stages2[_i2].name === 'snow') {\n sdkD.viewer.scene.postProcessStages.remove(_stages2[_i2]);\n break;\n }\n }\n if (status) {\n snowStages = new Cesium.PostProcessStage({\n name: \"snow\",\n fragmentShader: FS_Snow,\n uniforms: {\n snowSize: 2,\n // 大小\n snowSpeed: 60 //速度\n }\n });\n sdkD.viewer.scene.postProcessStages.add(snowStages);\n }\n }\n}\n\n// 雾天\nfunction fog(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'fog') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n fogStages = new Cesium.PostProcessStage({\n name: \"fog\",\n fragmentShader: FS_Fog,\n uniforms: {\n visibility: 0.2,\n //\n fogColor: Cesium.Color.WHITE\n }\n });\n sdk.viewer.scene.postProcessStages.add(fogStages);\n }\n var _require5 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require5.getSdk;\n var _require6 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require6.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages3 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i3 = 0; _i3 < _stages3.length; _i3++) {\n if (_stages3[_i3].name && _stages3[_i3].name === 'fog') {\n sdkD.viewer.scene.postProcessStages.remove(_stages3[_i3]);\n break;\n }\n }\n if (status) {\n fogStages = new Cesium.PostProcessStage({\n name: \"fog\",\n fragmentShader: FS_Fog,\n uniforms: {\n visibility: 0.2,\n //\n fogColor: Cesium.Color.WHITE\n }\n });\n sdkD.viewer.scene.postProcessStages.add(fogStages);\n }\n }\n}\n\n// 夜视\nfunction nightVision(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'czm_night_vision') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage();\n sdk.viewer.scene.postProcessStages.add(nightVisionStages);\n }\n var _require7 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require7.getSdk;\n var _require8 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require8.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages4 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i4 = 0; _i4 < _stages4.length; _i4++) {\n if (_stages4[_i4].name && _stages4[_i4].name === 'czm_night_vision') {\n sdkD.viewer.scene.postProcessStages.remove(_stages4[_i4]);\n break;\n }\n }\n if (status) {\n nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage();\n sdkD.viewer.scene.postProcessStages.add(nightVisionStages);\n }\n }\n}\n\n// 星空\nfunction skyStarry(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n sdk.viewer.scene.skyAtmosphere.show = !status;\n var _require9 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require9.getSdk;\n var sdkD = getSdk().sdkD;\n if (sdkD && sdk !== sdkD) {\n sdkD.viewer.scene.skyAtmosphere.show = !status;\n }\n}\n\n// 光照\nfunction illumination(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n sdk.viewer.shadows = status;\n sdk.viewer._shadows = status;\n var _require10 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require10.getSdk;\n var sdkD = getSdk().sdkD;\n if (sdkD && sdk !== sdkD) {\n sdkD.viewer.shadows = status;\n sdkD.viewer._shadows = status;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvaW5kZXguanM/ODU4NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKuWFqOWxgOeJueaViCovXHJcblxyXG5sZXQgcmFpblN0YWdlcyA9IG51bGw7XHJcbmxldCBzbm93U3RhZ2VzID0gbnVsbDtcclxubGV0IGZvZ1N0YWdlcyA9IG51bGw7XHJcbmxldCBuaWdodFZpc2lvblN0YWdlcyA9IG51bGw7XHJcblxyXG4vLyDpm6hcclxuY29uc3QgRlNfUmFpbiA9IGB1bmlmb3JtIHNhbXBsZXIyRCBjb2xvclRleHR1cmU7Ly/ovpPlhaXnmoTlnLrmma/muLLmn5PnhafniYdcclxuICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7XHJcbiAgdW5pZm9ybSBmbG9hdCB0aWx0QW5nbGU7XHJcbiAgdW5pZm9ybSBmbG9hdCByYWluU2l6ZTtcclxuICB1bmlmb3JtIGZsb2F0IHJhaW5XaWR0aDtcclxuICB1bmlmb3JtIGZsb2F0IHJhaW5TcGVlZDtcclxuXHJcbiAgZmxvYXQgaGFzaChmbG9hdCB4KXtcclxuICAgICAgcmV0dXJuIGZyYWN0KHNpbih4KjEzMy4zKSoxMy4xMyk7XHJcbiAgfVxyXG4gIHZvaWQgbWFpbih2b2lkKXtcclxuICAgICAgZmxvYXQgdGltZSA9IGN6bV9mcmFtZU51bWJlciAvIHJhaW5TcGVlZDtcclxuICAgICAgdmVjMiByZXNvbHV0aW9uID0gY3ptX3ZpZXdwb3J0Lnp3O1xyXG4gICAgICB2ZWMyIHV2PShnbF9GcmFnQ29vcmQueHkqMi4tcmVzb2x1dGlvbi54eSkvbWluKHJlc29sdXRpb24ueCxyZXNvbHV0aW9uLnkpO1xyXG4gICAgICB2ZWMzIGM9dmVjMyguNiwuNywuOCk7XHJcbiAgICAgIGZsb2F0IGE9IHRpbHRBbmdsZTtcclxuICAgICAgZmxvYXQgc2k9c2luKGEpLGNvPWNvcyhhKTtcclxuICAgICAgdXYqPW1hdDIoY28sLXNpLHNpLGNvKTtcclxuICAgICAgdXYqPWxlbmd0aCh1dit2ZWMyKDAsNC45KSkqcmFpblNpemUrMS47XHJcbiAgICAgIGZsb2F0IHY9MS4tc2luKGhhc2goZmxvb3IodXYueCpyYWluV2lkdGgpKSoyLik7XHJcbiAgICAgIGZsb2F0IGI9Y2xhbXAoYWJzKHNpbigyMC4qdGltZSp2K3V2LnkqKDUuLygyLit2KSkpKS0uOTUsMC4sMS4pKjIwLjtcclxuICAgICAgYyo9dipiOyAvL+Wxj+W5leS4iumbqOeahOminOiJslxyXG4gICAgICBnbF9GcmFnQ29sb3IgPSBtaXgodGV4dHVyZTJEKGNvbG9yVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpLCB2ZWM0KGMsMSksIDAuNSk7IC8v5bCG6Zuo5ZKM5LiJ57u05Zy65pmv6J6N5ZCIXHJcbiAgfWBcclxuXHJcbi8vIOmbqlxyXG5jb25zdCBGU19Tbm93ID0gYHVuaWZvcm0gc2FtcGxlcjJEIGNvbG9yVGV4dHVyZTtcclxuICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7XHJcbiAgdW5pZm9ybSBmbG9hdCBzbm93U2l6ZTtcclxuICB1bmlmb3JtIGZsb2F0IHNub3dTcGVlZDtcclxuICBcclxuICBmbG9hdCBzbm93KHZlYzIgdXYsZmxvYXQgc2NhbGUpXHJcbiAge1xyXG4gICAgICBmbG9hdCB0aW1lID0gY3ptX2ZyYW1lTnVtYmVyIC8gc25vd1NwZWVkO1xyXG4gICAgICBmbG9hdCB3PXNtb290aHN0ZXAoMS4sMC4sLXV2LnkqKHNjYWxlLzEwLikpO2lmKHc8LjEpcmV0dXJuIDAuO1xyXG4gICAgICB1dis9dGltZS9zY2FsZTt1di55Kz10aW1lKjIuL3NjYWxlO3V2LngrPXNpbih1di55K3RpbWUqLjUpL3NjYWxlO1xyXG4gICAgICB1dio9c2NhbGU7dmVjMiBzPWZsb29yKHV2KSxmPWZyYWN0KHV2KSxwO2Zsb2F0IGs9My4sZDtcclxuICAgICAgcD0uNSsuMzUqc2luKDExLipmcmFjdChzaW4oKHMrcCtzY2FsZSkqbWF0Mig3LDMsNiw1KSkqNS4pKS1mO2Q9bGVuZ3RoKHApO2s9bWluKGQsayk7XHJcbiAgICAgIGs9c21vb3Roc3RlcCgwLixrLHNpbihmLngrZi55KSowLjAxKnNub3dTaXplKTtcclxuICAgICAgcmV0dXJuIGsqdztcclxuICB9XHJcbiAgdm9pZCBtYWluKHZvaWQpe1xyXG4gICAgICB2ZWMyIHJlc29sdXRpb24gPSBjem1fdmlld3BvcnQuenc7XHJcbiAgICAgIHZlYzIgdXY9KGdsX0ZyYWdDb29yZC54eSoyLi1yZXNvbHV0aW9uLnh5KS9taW4ocmVzb2x1dGlvbi54LHJlc29sdXRpb24ueSk7XHJcbiAgICAgIHZlYzMgZmluYWxDb2xvcj12ZWMzKDApO1xyXG4gICAgICAvL2Zsb2F0IGM9c21vb3Roc3RlcCgxLiwwLjMsY2xhbXAodXYueSouMysuOCwwLiwuNzUpKTtcclxuICAgICAgZmxvYXQgYyA9IDAuMDtcclxuICAgICAgYys9c25vdyh1diwzMC4pKi4wO1xyXG4gICAgICBjKz1zbm93KHV2LDIwLikqLjA7XHJcbiAgICAgIGMrPXNub3codXYsMTUuKSouMDtcclxuICAgICAgYys9c25vdyh1diwxMC4pO1xyXG4gICAgICBjKz1zbm93KHV2LDguKTtcclxuICAgICAgYys9c25vdyh1diw2Lik7XHJcbiAgICAgIGMrPXNub3codXYsNS4pO1xyXG4gICAgICBmaW5hbENvbG9yPSh2ZWMzKGMpKTtcclxuICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KHRleHR1cmUyRChjb2xvclRleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKSwgdmVjNChmaW5hbENvbG9yLDEpLCAwLjUpO1xyXG4gIH1cclxuICBgO1xyXG5cclxuLy8g6Zu+XHJcbmNvbnN0IEZTX0ZvZyA9IGBcclxuICB1bmlmb3JtIHNhbXBsZXIyRCBjb2xvclRleHR1cmU7XHJcbiAgdW5pZm9ybSBzYW1wbGVyMkQgZGVwdGhUZXh0dXJlO1xyXG4gIHVuaWZvcm0gZmxvYXQgdmlzaWJpbGl0eTtcclxuICB1bmlmb3JtIHZlYzQgZm9nQ29sb3I7XHJcbiAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzO1xyXG4gIHZvaWQgbWFpbih2b2lkKVxyXG4gIHtcclxuICAgIHZlYzQgb3JpZ2NvbG9yID0gdGV4dHVyZTJEKGNvbG9yVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgZmxvYXQgZGVwdGggPSBjem1fcmVhZERlcHRoKGRlcHRoVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgdmVjNCBkZXB0aGNvbG9yID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgZmxvYXQgZiA9IHZpc2liaWxpdHkgKiAoZGVwdGhjb2xvci5yIC0gMC4zKSAvIDAuMjtcclxuICAgIGlmIChmIDwgMC4wKSBmID0gMC4wO1xyXG4gICAgZWxzZSBpZiAoZiA+IDEuMCkgZiA9IDEuMDtcclxuICAgIGdsX0ZyYWdDb2xvciA9IG1peChvcmlnY29sb3IsIGZvZ0NvbG9yLCBmKTtcclxuICB9XHJcbiAgYDtcclxuXHJcblxyXG4vKumbqOWkqSovXHJcbmZ1bmN0aW9uIHJhaW4oc2RrLCBzdGF0dXMgPSBmYWxzZSkge1xyXG4gIGxldCBzdGFnZXMgPSBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLl9zdGFnZXNcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAncmFpbicpIHtcclxuICAgICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICByYWluU3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJyYWluXCIsXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBGU19SYWluLFxyXG4gICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgIHRpbHRBbmdsZTogLTAuNCwgLy8g5YC+5pac6KeS5bqmXHJcbiAgICAgICAgcmFpblNpemU6IDAuMywgLy8g6Zuo5aSn5bCPXHJcbiAgICAgICAgcmFpbldpZHRoOiA0MCwgLy/pm6jplb/luqZcclxuICAgICAgICByYWluU3BlZWQ6IDEwMCwgLy/pm6jpgJ9cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQocmFpblN0YWdlcyk7XHJcbiAgfVxyXG5cclxuICBsZXQgeyBnZXRTZGsgfSA9IHJlcXVpcmUoJy4uL1NwbGl0U2NyZWVuJylcclxuICBsZXQgeyBnZXRTZGs6IGdldFNkazIgfSA9IHJlcXVpcmUoJy4uL011bHRpVmlld3BvcnRNb2RlJylcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZighc2RrRCkge1xyXG4gICAgc2RrRCA9IGdldFNkazIoKS5zZGtEXHJcbiAgfVxyXG4gIGlmKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBsZXQgc3RhZ2VzID0gc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAncmFpbicpIHtcclxuICAgICAgICBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgcmFpblN0YWdlcyA9IG5ldyBDZXNpdW0uUG9zdFByb2Nlc3NTdGFnZSh7XHJcbiAgICAgICAgbmFtZTogXCJyYWluXCIsXHJcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IEZTX1JhaW4sXHJcbiAgICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICAgIHRpbHRBbmdsZTogLTAuNCwgLy8g5YC+5pac6KeS5bqmXHJcbiAgICAgICAgICByYWluU2l6ZTogMC4zLCAvLyDpm6jlpKflsI9cclxuICAgICAgICAgIHJhaW5XaWR0aDogNDAsIC8v6Zuo6ZW/5bqmXHJcbiAgICAgICAgICByYWluU3BlZWQ6IDEwMCwgLy/pm6jpgJ9cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKHJhaW5TdGFnZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8g6ZuqXHJcbmZ1bmN0aW9uIHNub3coc2RrLCBzdGF0dXMgPSBmYWxzZSkge1xyXG4gIGxldCBzdGFnZXMgPSBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLl9zdGFnZXNcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAnc25vdycpIHtcclxuICAgICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbm93U3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJzbm93XCIsXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBGU19Tbm93LFxyXG4gICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgIHNub3dTaXplOiAyLCAvLyDlpKflsI9cclxuICAgICAgICBzbm93U3BlZWQ6IDYwLCAvL+mAn+W6plxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLmFkZChzbm93U3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdzbm93Jykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBzbm93U3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgICBuYW1lOiBcInNub3dcIixcclxuICAgICAgICBmcmFnbWVudFNoYWRlcjogRlNfU25vdyxcclxuICAgICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgICAgc25vd1NpemU6IDIsIC8vIOWkp+Wwj1xyXG4gICAgICAgICAgc25vd1NwZWVkOiA2MCwgLy/pgJ/luqZcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKHNub3dTdGFnZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8g6Zu+5aSpXHJcbmZ1bmN0aW9uIGZvZyhzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgbGV0IHN0YWdlcyA9IHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdmb2cnKSB7XHJcbiAgICAgIHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMucmVtb3ZlKHN0YWdlc1tpXSlcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKHN0YXR1cykge1xyXG4gICAgZm9nU3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJmb2dcIixcclxuICAgICAgZnJhZ21lbnRTaGFkZXI6IEZTX0ZvZyxcclxuICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICB2aXNpYmlsaXR5OiAwLjIsIC8vXHJcbiAgICAgICAgZm9nQ29sb3I6IENlc2l1bS5Db2xvci5XSElURSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQoZm9nU3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdmb2cnKSB7XHJcbiAgICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMucmVtb3ZlKHN0YWdlc1tpXSlcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGZvZ1N0YWdlcyA9IG5ldyBDZXNpdW0uUG9zdFByb2Nlc3NTdGFnZSh7XHJcbiAgICAgICAgbmFtZTogXCJmb2dcIixcclxuICAgICAgICBmcmFnbWVudFNoYWRlcjogRlNfRm9nLFxyXG4gICAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgICB2aXNpYmlsaXR5OiAwLjIsIC8vXHJcbiAgICAgICAgICBmb2dDb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQoZm9nU3RhZ2VzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIOWknOinhlxyXG5mdW5jdGlvbiBuaWdodFZpc2lvbihzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgbGV0IHN0YWdlcyA9IHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdjem1fbmlnaHRfdmlzaW9uJykge1xyXG4gICAgICBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChzdGF0dXMpIHtcclxuICAgIG5pZ2h0VmlzaW9uU3RhZ2VzID0gQ2VzaXVtLlBvc3RQcm9jZXNzU3RhZ2VMaWJyYXJ5LmNyZWF0ZU5pZ2h0VmlzaW9uU3RhZ2UoKTtcclxuICAgIHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKG5pZ2h0VmlzaW9uU3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdjem1fbmlnaHRfdmlzaW9uJykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBuaWdodFZpc2lvblN0YWdlcyA9IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlTGlicmFyeS5jcmVhdGVOaWdodFZpc2lvblN0YWdlKCk7XHJcbiAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLmFkZChuaWdodFZpc2lvblN0YWdlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyDmmJ/nqbpcclxuZnVuY3Rpb24gc2t5U3RhcnJ5KHNkaywgc3RhdHVzID0gZmFsc2UpIHtcclxuICBzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdyA9ICFzdGF0dXNcclxuICBsZXQgeyBnZXRTZGsgfSA9IHJlcXVpcmUoJy4uL1NwbGl0U2NyZWVuJylcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZihzZGtEICYmIHNkayAhPT0gc2RrRCkge1xyXG4gICAgc2RrRC52aWV3ZXIuc2NlbmUuc2t5QXRtb3NwaGVyZS5zaG93ID0gIXN0YXR1c1xyXG4gIH1cclxufVxyXG5cclxuLy8g5YWJ54WnXHJcbmZ1bmN0aW9uIGlsbHVtaW5hdGlvbihzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgc2RrLnZpZXdlci5zaGFkb3dzID0gc3RhdHVzXHJcbiAgc2RrLnZpZXdlci5fc2hhZG93cyA9IHN0YXR1c1xyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBzZGtELnZpZXdlci5zaGFkb3dzID0gc3RhdHVzXHJcbiAgICBzZGtELnZpZXdlci5fc2hhZG93cyA9IHN0YXR1c1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IHJhaW4sIHNub3csIGZvZywgbmlnaHRWaXNpb24sIHNreVN0YXJyeSwgaWxsdW1pbmF0aW9uIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBd0JBO0FBQ0E7QUFDQTtBQWdDQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/index.js\n"); - -/***/ }), - -/***/ "./src/Global/global.js": -/*!******************************!*\ - !*** ./src/Global/global.js ***! - \******************************/ -/*! exports provided: getCurrentView, setDefaultView, flyTo, CameraController, CesiumContainer, setBillboardDefaultUrl, getBillboardDefaultUrl, setGroundCover, getGroundCover, getBimPickStatus, setBimPickStatus, rotateAround, closeRotateAround, closeViewFollow, FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus, getCoordinateSystem, setCoordinateSystem, getDMS, setDMS, cameraChanged, setMaximumRequestsPerServer, setKeyboardEventActive, getTheme, setTheme, getCesiumIndexedDBMaxSize, setCesiumIndexedDBMaxSize, getCesiumManageIndexexDBState, setCesiumManageIndexexDBState, getCesiumIndexedDBCurrentSize, setActiveViewer, enablePerspective */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentView\", function() { return getCurrentView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDefaultView\", function() { return setDefaultView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flyTo\", function() { return flyTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CameraController\", function() { return CameraController; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CesiumContainer\", function() { return CesiumContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setBillboardDefaultUrl\", function() { return setBillboardDefaultUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBillboardDefaultUrl\", function() { return getBillboardDefaultUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGroundCover\", function() { return setGroundCover; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getGroundCover\", function() { return getGroundCover; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBimPickStatus\", function() { return getBimPickStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setBimPickStatus\", function() { return setBimPickStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateAround\", function() { return rotateAround; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRotateAround\", function() { return closeRotateAround; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeViewFollow\", function() { return closeViewFollow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FlwStatusSwitch\", function() { return FlwStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JwwStatusSwitch\", function() { return JwwStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlwStatus\", function() { return getFlwStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getJwwStatus\", function() { return getJwwStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCoordinateSystem\", function() { return getCoordinateSystem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCoordinateSystem\", function() { return setCoordinateSystem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDMS\", function() { return getDMS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDMS\", function() { return setDMS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cameraChanged\", function() { return cameraChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumRequestsPerServer\", function() { return setMaximumRequestsPerServer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setKeyboardEventActive\", function() { return setKeyboardEventActive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumIndexedDBMaxSize\", function() { return getCesiumIndexedDBMaxSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCesiumIndexedDBMaxSize\", function() { return setCesiumIndexedDBMaxSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumManageIndexexDBState\", function() { return getCesiumManageIndexexDBState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCesiumManageIndexexDBState\", function() { return setCesiumManageIndexexDBState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumIndexedDBCurrentSize\", function() { return getCesiumIndexedDBCurrentSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enablePerspective\", function() { return enablePerspective; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Obj/Element/theme */ \"./src/Obj/Element/theme.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTheme\", function() { return _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__[\"getTheme\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setTheme\", function() { return _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__[\"setTheme\"]; });\n\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _cluster_cluster__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cluster/cluster */ \"./src/Global/cluster/cluster.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../on */ \"./src/on/index.js\");\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * @name: global\r\n * @author: Administrator\r\n * @date: 2023-12-01 14:15\r\n * @description:global\r\n * @update: 2023-12-01 14:15\r\n */\n\n/*获取当前视角*/\n\n\n\n\n\n\n\n\nvar coordinateSystem = 'EPSG:4326';\nvar positionType = '度';\nvar _cartesian;\nvar GroundCover = true;\nvar bimPickObject = {};\nvar containerObject = {};\nvar rotateAroundObject = {};\nfunction getCurrentView(sdk) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var viewer = sdk.viewer;\n return JSON.parse(JSON.stringify({\n // heading: viewer.camera.heading,\n // pitch: viewer.camera.pitch,\n // roll: viewer.camera.roll,\n position: tools.cartesian3Towgs84(viewer.camera.position, viewer),\n orientation: {\n heading: Cesium.Math.toDegrees(viewer.camera.heading),\n pitch: Cesium.Math.toDegrees(viewer.camera.pitch),\n roll: Cesium.Math.toDegrees(viewer.camera.roll)\n }\n }));\n}\n\n/*设置默认视角*/\nfunction setDefaultView(sdk, options) {\n var viewer = sdk.viewer;\n if (options) {\n viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = {\n destination: options.destination || {},\n orientation: options.orientation || {}\n };\n } else {\n viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = undefined;\n //设置cesium的默认视角\n Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(\n //西边的经度\n 89.5,\n //南边的纬度\n 10.4,\n //东边的经度\n 110.4,\n //北边的维度\n 61.2);\n }\n}\n\n/*定位到指定视角*/\nfunction flyTo(_x, _x2) {\n return _flyTo.apply(this, arguments);\n}\n/*相机锁定*/\nfunction _flyTo() {\n _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee3(sdk, options) {\n var duration,\n tools,\n destination,\n orientation,\n h,\n bbox,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n duration = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : 3;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n orientation = options.orientation;\n if (!options.position) {\n _context3.next = 13;\n break;\n }\n if (!(options.position.alt !== 0 && !options.position.alt)) {\n _context3.next = 8;\n break;\n }\n _context3.next = 7;\n return tools.getClampToHeight(options.position);\n case 7:\n options.position.alt = _context3.sent;\n case 8:\n h = 0;\n if (!orientation) {\n h = 500;\n }\n destination = Cesium.Cartesian3.fromDegrees(options.position.lng, options.position.lat, options.position.alt + h);\n _context3.next = 15;\n break;\n case 13:\n bbox = tools.cal_envelope(options.positions);\n destination = new Cesium.Rectangle(Cesium.Math.toRadians(bbox[3][0]), Cesium.Math.toRadians(bbox[3][1]), Cesium.Math.toRadians(bbox[1][0]), Cesium.Math.toRadians(bbox[1][1]));\n case 15:\n closeRotateAround(sdk);\n sdk.viewer.camera.flyTo({\n destination: destination,\n duration: duration,\n orientation: orientation,\n complete: options.complete\n });\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _flyTo.apply(this, arguments);\n}\nfunction CameraController(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!sdk || !sdk.viewer) {\n return;\n }\n var viewer = sdk.viewer;\n viewer.scene.screenSpaceCameraController.enableRotate = status;\n viewer.scene.screenSpaceCameraController.enableTranslate = status;\n viewer.scene.screenSpaceCameraController.enableZoom = status;\n viewer.scene.screenSpaceCameraController.enableTilt = status;\n viewer.scene.screenSpaceCameraController.enableLook = status;\n}\n\n/*控件显隐*/\nfunction CesiumContainer(sdk, options) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n containerObject[sdk.viewer._element.className] || (containerObject[sdk.viewer._element.className] = {});\n containerObject[sdk.viewer._element.className].event && containerObject[sdk.viewer._element.className].event.destroy();\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n var element = sdk.viewer._element;\n var proj = sdk.proj;\n var _loop = function _loop() {\n switch (key) {\n case 'compass':\n var compass = element.getElementsByClassName('compass')[0];\n var navigation = element.getElementsByClassName('navigation-controls')[0];\n if (options[key]) {\n compass && (compass.style.display = 'block');\n navigation && (navigation.style.display = 'flex');\n } else {\n compass && (compass.style.display = 'none');\n navigation && (navigation.style.display = 'none');\n }\n break;\n case 'legend':\n var distanceLegend = element.getElementsByClassName('distance-legend')[0];\n if (options[key]) {\n distanceLegend && (distanceLegend.parentNode.style.display = 'block');\n } else {\n distanceLegend && (distanceLegend.parentNode.style.display = 'none');\n }\n break;\n case 'info':\n var infoElm = element.getElementsByClassName('cesium-info')[0];\n if (options[key]) {\n var update = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var position, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_cartesian) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n // let pos = sdk.viewer.scene.clampToHeight(_cartesian)\n position = tools.cartesian3Towgs84(_cartesian, sdk.viewer); // position.alt = height\n if (!(coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490')) {\n _context.next = 16;\n break;\n }\n _context.t0 = positionType || '度';\n _context.next = _context.t0 === '度' ? 7 : _context.t0 === '度分' ? 9 : _context.t0 === '度分秒' ? 11 : 13;\n break;\n case 7:\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(8)), \"\\xB0
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(8)), \"\\xB0
\\n
\\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 9:\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n
\\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 11:\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n
\\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 13:\n return _context.abrupt(\"break\", 14);\n case 14:\n _context.next = 18;\n break;\n case 16:\n // let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)\n result = proj.convert([{\n x: position.lng,\n y: position.lat,\n z: position.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, position));\n if (result.points.length) {\n infoElm.innerHTML = \"\\n
x\\uFF1A\".concat(Number(result.points[0].x.toFixed(2)), \"
\\n
y\\uFF1A\").concat(Number(result.points[0].y.toFixed(2)), \"
\\n
z\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)), \"
\\n \");\n }\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function update() {\n return _ref.apply(this, arguments);\n };\n }();\n if (infoElm) {\n update();\n infoElm.style.display = 'block';\n } else {\n infoElm = document.createElement('div');\n infoElm.className = \"cesium-info\";\n infoElm.style.position = 'absolute';\n infoElm.style.bottom = '32px';\n infoElm.style.right = '240px';\n infoElm.style['font-size'] = '14px';\n infoElm.style['background-color'] = 'rgba(47,53,60,.8)';\n infoElm.style.color = '#fff';\n infoElm.style.padding = '4px 10px';\n infoElm.style['border-radius'] = '18px';\n infoElm.style.display = 'flex';\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A-
\\n
\\u7EAC\\u5EA6\\uFF1A-
\\n
\\u9AD8\\u7A0B\\uFF1A-
\\n \";\n } else {\n infoElm.innerHTML = \"\\n
x\\uFF1A-
\\n
y\\uFF1A-
\\n
z\\uFF1A-
\\n \";\n }\n sdk.viewer._element.appendChild(infoElm);\n }\n var event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n containerObject[sdk.viewer._element.className].event = event;\n var lastPickTime = 0;\n var timeoutEvent;\n event.mouse_move(function (movement, cartesian) {\n _cartesian = cartesian;\n // const now = Date.now();\n // if (now - lastPickTime < 500) {\n // clearTimeout(timeoutEvent)\n // timeoutEvent = setTimeout(() => {\n // update()\n // }, 500);\n // return\n // }\n // lastPickTime = now;\n update();\n });\n } else {\n infoElm && (infoElm.style.display = 'none');\n }\n break;\n case 'frame':\n if (options[key]) {\n sdk.viewer.scene.debugShowFramesPerSecond = true;\n setTimeout(function () {\n var cesiumWidgetContainerElm = sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0];\n var defaultContainer = cesiumWidgetContainerElm.getElementsByClassName('cesium-performanceDisplay-defaultContainer')[0];\n if (defaultContainer) {\n cesiumWidgetContainerElm.appendChild(defaultContainer);\n }\n }, 50);\n } else {\n sdk.viewer.scene.debugShowFramesPerSecond = false;\n }\n break;\n }\n };\n for (var key in options) {\n _loop();\n }\n // let compass = element.getElementsByClassName('compass')[0]\n // let navigation = element.getElementsByClassName('navigation-controls')[0]\n // let distanceLegend = element.getElementsByClassName('distance-legend')[0]\n // if(status) {\n // compass && (compass.style.display = 'block')\n // navigation && (navigation.style.display = 'block')\n // distanceLegend && (distanceLegend.style.display = 'block')\n // }\n // else {\n // compass && (compass.style.display = 'none')\n // navigation && (navigation.style.display = 'none')\n // distanceLegend && (distanceLegend.style.display = 'none')\n // viewer.cesiumNavigation.distanceLegendViewModel.destroy()\n // }\n}\n\n/*设置广告牌默认图标*/\nfunction setBillboardDefaultUrl(url, name) {\n if (name) {\n name = 'billboard_default_url_' + name;\n } else {\n name = 'billboard_default_url';\n }\n var host = Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getHost\"])();\n if (!url.startsWith(\"http\")) {\n //说明是本地的json,在磁盘中存在的\n if (!url.includes(\":\")) {\n if (host) {\n var o = new URL(url, host);\n url = o.href;\n }\n }\n }\n localStorage.setItem(name, url);\n}\n/*获取广告牌默认图标*/\nfunction getBillboardDefaultUrl(name) {\n if (name) {\n name = 'billboard_default_url_' + name;\n } else {\n name = 'billboard_default_url';\n }\n return localStorage.getItem(name);\n}\n\n/*设置高度参考*/\nfunction setGroundCover(sdk, status) {\n GroundCover = status ? true : false;\n Object(_cluster_cluster__WEBPACK_IMPORTED_MODULE_9__[\"updateCluster\"])(sdk.viewer);\n}\n\n/*获取高度参考*/\nfunction getGroundCover() {\n return GroundCover;\n}\nfunction setBimPickStatus(sdk, status) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n bimPickObject[sdk.viewer._element.className] || (bimPickObject[sdk.viewer._element.className] = {});\n bimPickObject[sdk.viewer._element.className].status = status;\n if (bimPickObject[sdk.viewer._element.className].MoveHandler) {\n bimPickObject[sdk.viewer._element.className].MoveHandler.destroy();\n }\n if (!status) {\n return;\n }\n bimPickObject[sdk.viewer._element.className].MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n bimPickObject[sdk.viewer._element.className].MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n var selectedId = bimPickObject[sdk.viewer._element.className].selectedId;\n var that = sdk.entityMap.get(bimPickObject[sdk.viewer._element.className].id);\n // if (selectedFeatureId) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n if (that) {\n if (that.features.has(selectedId)) {\n var features = that.features.get(selectedId).features;\n for (var key in features) {\n if (features[key].content._model) {\n var color = features[key].customColor || Cesium.Color.fromCssColorString('#fff');\n features[key].color = Cesium.Color.fromCssColorString(\"rgba(\".concat(Cesium.Color.floatToByte(color.red), \",\").concat(Cesium.Color.floatToByte(color.green), \",\").concat(Cesium.Color.floatToByte(color.blue), \",\").concat(color.alpha * (features[key].customAlpha || features[key].customAlpha === 0 ? features[key].customAlpha : 1), \")\"));\n }\n }\n }\n }\n if (pick && pick.content) {\n var obj = sdk.getIncetance(pick.content.tileset.id);\n if (obj.type === 'bim') {\n if (pick.primitive && pick.primitive.id) {\n var _that = sdk.entityMap.get(pick.primitive.id);\n selectedId = pick.getProperty('id');\n if (_that.features.has(selectedId)) {\n var _features = _that.features.get(selectedId).features;\n for (var _key in _features) {\n if (_features[_key].content._model) {\n _features[_key].color = Cesium.Color.fromCssColorString('#ffeb3b');\n }\n }\n }\n bimPickObject[sdk.viewer._element.className].id = pick.primitive.id;\n bimPickObject[sdk.viewer._element.className].selectedId = selectedId;\n }\n } else {\n pick.primitive.id = null;\n }\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction getBimPickStatus(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n return bimPickObject[sdk.viewer._element.className] ? bimPickObject[sdk.viewer._element.className].status : false;\n}\n\n/* 围绕坐标旋转 */\nfunction rotateAround(sdk, position) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n setActiveViewer(0);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n // 关闭Controller\n sdk.entityMap.forEach(function (item) {\n item.editObj && item.editObj.destroy();\n item.ControllerObject && item.ControllerObject.destroy();\n });\n rotateAroundObject[sdk.viewer._element.className] || (rotateAroundObject[sdk.viewer._element.className] = {});\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n if (!position) {\n CameraController(sdk, true);\n return;\n }\n var point = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt);\n var angle = Cesium.Math.toDegrees(sdk.viewer.camera.heading);\n var range = Cesium.Cartesian3.distance(sdk.viewer.camera.position, point);\n CameraController(sdk, false);\n var pitch = sdk.viewer.camera.pitch;\n var degrees = Cesium.Math.toDegrees(pitch);\n if (degrees < -89.99) {\n pitch = Cesium.Math.toRadians(-89.99);\n }\n rotateAroundObject[sdk.viewer._element.className].animate = new TWEEN.Tween({\n angle: angle\n }).to({\n angle: angle - 360\n }, 30000).easing(TWEEN.Easing.Linear.None).repeat(Infinity).onUpdate(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (sdk.viewer) {\n _context2.next = 3;\n break;\n }\n TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n return _context2.abrupt(\"return\");\n case 3:\n sdk.viewer.camera.lookAt(point, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(r.angle), pitch, range));\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }()).start();\n var event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n rotateAroundObject[sdk.viewer._element.className].event = event;\n event.mouse_left_down(function () {\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n CameraController(sdk, true);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n });\n}\n\n/* 关闭围绕坐标旋转 */\nfunction closeRotateAround(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n if (rotateAroundObject[sdk.viewer._element.className]) {\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n CameraController(sdk, true);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n }\n}\nfunction closeViewFollow(sdk) {\n if (sdk && sdk.entityMap) {\n var entityMap = sdk.entityMap;\n var _iterator = _createForOfIteratorHelper(entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n if (value.type === 'TrajectoryMotion' && value.viewFollow) {\n value.viewFollow = false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n}\n\n/* 方里网状态开关 */\nfunction FlwStatusSwitch(sdk, status) {\n if (!sdk) {\n return;\n }\n var layer;\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n FlwStatusSwitch(sdkD, status);\n }\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') {\n layer = sdk.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (layer) {\n sdk.viewer.imageryLayers.remove(layer);\n }\n if (status) {\n sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderFlw({\n tileWidth: 128,\n tileHeight: 128\n }));\n }\n}\nfunction getFlwStatus(sdk) {\n var status = false;\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') {\n status = true;\n break;\n }\n }\n return status;\n}\n\n/* 经纬网状态开关 */\nfunction JwwStatusSwitch(sdk, status) {\n if (!sdk) {\n return;\n }\n var layer;\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n JwwStatusSwitch(sdkD, status);\n }\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') {\n layer = sdk.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (layer) {\n sdk.viewer.imageryLayers.remove(layer);\n }\n if (status) {\n sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderJww());\n }\n}\nfunction getJwwStatus(sdk) {\n var status = false;\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') {\n status = true;\n break;\n }\n }\n return status;\n}\nfunction splitScreen2(sdk, status) {\n var sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n if (status) {\n var mousemove = function mousemove(a, b) {\n if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) {\n sliderElm.style.left = a.offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth;\n }\n };\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n leftElm.checked = true;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n sdk.viewer.scene.splitStatus = status;\n sdk.viewer.scene.splitPosition = 0.5;\n changeEntitySplitStatus();\n } else {\n sdk.viewer.scene.splitPosition = 0;\n changeEntitySplitStatus(0);\n sdk.viewer.scene.splitStatus = status;\n }\n function changeEntitySplitStatus(v) {\n var value;\n if (v === undefined || v === null) {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n } else {\n value = v;\n }\n sdk.entityMap.forEach(function (item, key) {\n if (sdk.viewer.scene.splitStatus) {\n if (item.entity.billboard) {\n item.entity.billboard.splitDirection = value;\n } else {\n item.entity && (item.entity.splitDirection = value);\n }\n }\n });\n }\n}\nfunction splitScreen(sdk, status) {\n var sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n if (status) {\n var mousemove = function mousemove(a, b) {\n if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) {\n sliderElm.style.left = a.offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth;\n }\n };\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n leftElm.checked = true;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n sdk.viewer.scene.splitStatus = status;\n sdk.viewer.scene.splitPosition = 0.5;\n changeEntitySplitStatus();\n } else {\n sdk.viewer.scene.splitPosition = 0;\n changeEntitySplitStatus(0);\n sdk.viewer.scene.splitStatus = status;\n }\n function changeEntitySplitStatus(v) {\n var value;\n if (v === undefined || v === null) {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n } else {\n value = v;\n }\n sdk.entityMap.forEach(function (item, key) {\n if (sdk.viewer.scene.splitStatus) {\n if (item.entity.billboard) {\n item.entity.billboard.splitDirection = value;\n } else {\n item.entity && (item.entity.splitDirection = value);\n }\n }\n });\n }\n}\nfunction getCoordinateSystem() {\n return coordinateSystem;\n}\nfunction setCoordinateSystem(sdk, epsg) {\n coordinateSystem = epsg || 'EPSG:4326';\n if (!sdk || !sdk.viewer || !sdk.viewer._element) {\n return;\n }\n var infoElm = sdk.viewer._element.getElementsByClassName('cesium-info')[0];\n if (!_cartesian || !infoElm) {\n return;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var proj = sdk.proj;\n var position = tools.cartesian3Towgs84(_cartesian, sdk.viewer);\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n // infoElm.innerHTML = `\n // 经度:${Number(position.lng.toFixed(6))}° \n // 纬度:${Number(position.lat.toFixed(6))}° \n // 海拔高度:${Number(position.alt.toFixed(2))}米\n // `\n switch (positionType || '度') {\n case '度':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(8)), \"\\xB0
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(8)), \"\\xB0
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分秒':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n default:\n break;\n }\n } else {\n // let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)\n var result = proj.convert([{\n x: position.lng,\n y: position.lat,\n z: position.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, position));\n infoElm.innerHTML = \"\\n
x\\uFF1A\".concat(Number(result.points[0].x.toFixed(2)), \"
\\n
y\\uFF1A\").concat(Number(result.points[0].y.toFixed(2)), \"
\\n
z\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)), \"
\\n \");\n }\n}\nfunction posiToCoordinate(coordinateSystem, position) {\n var type;\n switch (coordinateSystem) {\n case 'EPSG:32601':\n //WGS84 通用横轴墨卡托投影\n //带号 = ⌊(经度 + 180)/6⌋ + 1\n var dh = Math.floor((position.lng + 180) / 6 + 1);\n if (position.lat > 0) {\n //北纬\n type = 32600 + dh;\n type = 'EPSG:' + type;\n } else {\n //南纬\n type = 32700 + dh;\n type = 'EPSG:' + type;\n }\n break;\n case 'EPSG:4534':\n //2000 坐标 3 度不带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4534\n\n var dh3y = Math.round(position.lng / 3);\n type = dh3y - 25 + 4534;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4513':\n //2000 坐标 3 度带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4513\n var dh3w = Math.round(position.lng / 3);\n type = dh3w - 25 + 4513;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4502':\n //2000 坐标 6 度不带代号\n var zoneNumber = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (zoneNumber < 13) zoneNumber = 13;\n if (zoneNumber > 23) zoneNumber = 23;\n type = zoneNumber - 13 + 4502;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4491':\n //2000 坐标 6 度带代号\n //N = floor(longitude/6) + 31\n var dh6 = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (dh6 < 13) dh6 = 13;\n if (dh6 > 23) dh6 = 23;\n type = dh6 - 13 + 4491;\n type = 'EPSG:' + type;\n break;\n default:\n break;\n }\n return type;\n}\nfunction getDMS() {\n return positionType;\n}\nfunction setDMS(sdk, type) {\n if (coordinateSystem !== 'EPSG:4326' && coordinateSystem !== 'EPSG:4490') {\n return;\n }\n positionType = type;\n if (!sdk || !sdk.viewer || !sdk.viewer._element) {\n return;\n }\n var infoElm = sdk.viewer._element.getElementsByClassName('cesium-info')[0];\n if (!_cartesian || !infoElm) {\n return;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var proj = sdk.proj;\n var position = tools.cartesian3Towgs84(_cartesian, sdk.viewer);\n switch (type) {\n case '度':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(6)), \"\\xB0
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(6)), \"\\xB0
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分秒':\n infoElm.innerHTML = \"\\n
\\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n
\\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n
\\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n default:\n break;\n }\n proj.degreesToDMS(position.lng, true);\n}\nfunction cameraChanged(sdk, cb) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n //设置相机变化的监听事件\n var removeChanged = sdk.viewer.camera.changed.addEventListener(function (percentage) {\n cb({\n position: tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer),\n orientation: {\n heading: sdk.viewer.camera.heading,\n pitch: sdk.viewer.camera.pitch,\n roll: sdk.viewer.camera.roll\n }\n });\n });\n return removeChanged;\n}\nfunction setMaximumRequestsPerServer(v) {\n if (typeof v == 'number') Cesium.RequestScheduler.maximumRequestsPerServer = v;\n}\n\n/* 键盘事件 */\nfunction setKeyboardEventActive(sdk, status) {\n if (!sdk) {\n return;\n }\n if (status) {\n sdk.viewer._disableKeyboardEvent = false;\n } else {\n sdk.viewer._disableKeyboardEvent = true;\n }\n}\nfunction getCesiumIndexedDBMaxSize() {\n var baseUnit = 1024 * 1024 * 1024;\n var size = Number(Number(localStorage.getItem('IndexedDBMaxSize')).toFixed(0));\n if (isNaN(size) || size < baseUnit) {\n size = baseUnit;\n }\n return size;\n}\nfunction setCesiumIndexedDBMaxSize(v) {\n var baseUnit = 1024 * 1024 * 1024;\n var maxSize = Number(Number(v).toFixed(0));\n if (isNaN(maxSize) || maxSize < baseUnit) {\n maxSize = baseUnit;\n }\n Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetIndexedDBMaxSize(maxSize);\n localStorage.setItem('IndexedDBMaxSize', maxSize);\n}\nfunction getCesiumManageIndexexDBState() {\n var state = localStorage.getItem('ManageIndexexDBState');\n if (state === 'false') {\n return false;\n }\n return Boolean(state);\n}\nfunction setCesiumManageIndexexDBState(v) {\n if (typeof v === \"boolean\") {\n Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetManageIndexexDBState(v);\n localStorage.setItem('ManageIndexexDBState', v);\n } else {\n console.error(\"参数必须为boolean\");\n }\n}\nfunction getCesiumIndexedDBCurrentSize() {\n return Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.GetIndexedDBCurrentSize();\n}\nfunction setActiveViewer(v) {\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_7__[\"setActiveViewer\"])(v);\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"setActiveViewer\"])(v);\n}\n\n// 设置地球透明度\nfunction enablePerspective(sdk) {\n var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (!alpha && alpha != 0) {\n alpha = 1;\n }\n sdk.viewer.scene.globe.translucency.frontFaceAlpha = alpha;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvZ2xvYmFsLmpzPzI2ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBnbG9iYWxcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMy0xMi0wMSAxNDoxNVxyXG4gKiBAZGVzY3JpcHRpb27vvJpnbG9iYWxcclxuICogQHVwZGF0ZTogMjAyMy0xMi0wMSAxNDoxNVxyXG4gKi9cclxuXHJcbi8q6I635Y+W5b2T5YmN6KeG6KeSKi9cclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi4vVG9vbHNcIjtcclxuaW1wb3J0IHsgUHJvaiB9IGZyb20gXCIuLi9Ub29scy9wcm9qXCI7XHJcbmltcG9ydCB7IGdldFRoZW1lLCBzZXRUaGVtZSB9IGZyb20gXCIuLi9PYmovRWxlbWVudC90aGVtZVwiO1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIgYXMgc2V0TXVsdGlWaWV3cG9ydEFjdGl2ZVZpZXdlciB9IGZyb20gJy4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciBhcyBzZXRTcGxpdEFjdGl2ZVZpZXdlciwgZ2V0U2RrIH0gZnJvbSAnLi9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgdXBkYXRlQ2x1c3RlciB9IGZyb20gJy4vY2x1c3Rlci9jbHVzdGVyJ1xyXG5pbXBvcnQgeyBnZXRIb3N0IH0gZnJvbSBcIi4uL29uXCI7XHJcblxyXG5sZXQgY29vcmRpbmF0ZVN5c3RlbSA9ICdFUFNHOjQzMjYnXHJcbmxldCBwb3NpdGlvblR5cGUgPSAn5bqmJ1xyXG5sZXQgX2NhcnRlc2lhblxyXG5sZXQgR3JvdW5kQ292ZXIgPSB0cnVlXHJcbmxldCBiaW1QaWNrT2JqZWN0ID0ge31cclxubGV0IGNvbnRhaW5lck9iamVjdCA9IHt9XHJcbmxldCByb3RhdGVBcm91bmRPYmplY3QgPSB7fVxyXG5mdW5jdGlvbiBnZXRDdXJyZW50VmlldyhzZGspIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgLy8gaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgLy8gcGl0Y2g6IHZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAvLyByb2xsOiB2aWV3ZXIuY2FtZXJhLnJvbGwsXHJcbiAgICBwb3NpdGlvbjogdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKSxcclxuICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyh2aWV3ZXIuY2FtZXJhLmhlYWRpbmcpLFxyXG4gICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHZpZXdlci5jYW1lcmEucGl0Y2gpLFxyXG4gICAgICByb2xsOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXModmlld2VyLmNhbWVyYS5yb2xsKVxyXG4gICAgfVxyXG4gIH0pKVxyXG59XHJcblxyXG4vKuiuvue9rum7mOiupOinhuinkiovXHJcbmZ1bmN0aW9uIHNldERlZmF1bHRWaWV3KHNkaywgb3B0aW9ucykge1xyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgaWYgKG9wdGlvbnMpIHtcclxuICAgIHZpZXdlci5DQU1FUkFfREVGQVVMVF9WSUVXX1JFQ1RBTkdMRSA9IHtcclxuICAgICAgZGVzdGluYXRpb246IG9wdGlvbnMuZGVzdGluYXRpb24gfHwge30sXHJcbiAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHt9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdmlld2VyLkNBTUVSQV9ERUZBVUxUX1ZJRVdfUkVDVEFOR0xFID0gdW5kZWZpbmVkXHJcbiAgICAvL+iuvue9rmNlc2l1beeahOm7mOiupOinhuinklxyXG4gICAgQ2VzaXVtLkNhbWVyYS5ERUZBVUxUX1ZJRVdfUkVDVEFOR0xFID0gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyhcclxuICAgICAgLy/opb/ovrnnmoTnu4/luqZcclxuICAgICAgODkuNSxcclxuICAgICAgLy/ljZfovrnnmoTnuqzluqZcclxuICAgICAgMTAuNCxcclxuICAgICAgLy/kuJzovrnnmoTnu4/luqZcclxuICAgICAgMTEwLjQsXHJcbiAgICAgIC8v5YyX6L6555qE57u05bqmXHJcbiAgICAgIDYxLjJcclxuICAgIClcclxuICB9XHJcbn1cclxuXHJcbi8q5a6a5L2N5Yiw5oyH5a6a6KeG6KeSKi9cclxuYXN5bmMgZnVuY3Rpb24gZmx5VG8oc2RrLCBvcHRpb25zLCBkdXJhdGlvbiA9IDMpIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoc2RrKVxyXG4gIGxldCBkZXN0aW5hdGlvblxyXG4gIGxldCBvcmllbnRhdGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb25cclxuICBpZiAob3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgaWYgKG9wdGlvbnMucG9zaXRpb24uYWx0ICE9PSAwICYmICFvcHRpb25zLnBvc2l0aW9uLmFsdCkge1xyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IGF3YWl0IHRvb2xzLmdldENsYW1wVG9IZWlnaHQob3B0aW9ucy5wb3NpdGlvbilcclxuICAgIH1cclxuICAgIGxldCBoID0gMFxyXG4gICAgaWYgKCFvcmllbnRhdGlvbikge1xyXG4gICAgICBoID0gNTAwXHJcbiAgICB9XHJcbiAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKG9wdGlvbnMucG9zaXRpb24ubG5nLCBvcHRpb25zLnBvc2l0aW9uLmxhdCwgb3B0aW9ucy5wb3NpdGlvbi5hbHQgKyBoKVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGxldCBiYm94ID0gdG9vbHMuY2FsX2VudmVsb3BlKG9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgZGVzdGluYXRpb24gPSBuZXcgQ2VzaXVtLlJlY3RhbmdsZShcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJib3hbM11bMF0pLFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoYmJveFszXVsxXSksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhiYm94WzFdWzBdKSxcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJib3hbMV1bMV0pXHJcbiAgICApXHJcbiAgfVxyXG4gIGNsb3NlUm90YXRlQXJvdW5kKHNkaylcclxuICBzZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7IGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgb3JpZW50YXRpb24sIGNvbXBsZXRlOiBvcHRpb25zLmNvbXBsZXRlLCB9KVxyXG59XHJcblxyXG4vKuebuOacuumUgeWumiovXHJcbmZ1bmN0aW9uIENhbWVyYUNvbnRyb2xsZXIoc2RrLCBzdGF0dXMgPSB0cnVlKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlUm90YXRlID0gc3RhdHVzO1xyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlID0gc3RhdHVzO1xyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlWm9vbSA9IHN0YXR1cztcclxuICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBzdGF0dXM7XHJcbiAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gc3RhdHVzO1xyXG59XHJcblxyXG4vKuaOp+S7tuaYvumakCovXHJcbmZ1bmN0aW9uIENlc2l1bUNvbnRhaW5lcihzZGssIG9wdGlvbnMpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0gfHwgKGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0gPSB7fSlcclxuICBjb250YWluZXJPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmV2ZW50ICYmIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQuZGVzdHJveSgpXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICBsZXQgZWxlbWVudCA9IHNkay52aWV3ZXIuX2VsZW1lbnRcclxuICBsZXQgcHJvaiA9IHNkay5wcm9qXHJcbiAgZm9yIChsZXQga2V5IGluIG9wdGlvbnMpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ2NvbXBhc3MnOlxyXG4gICAgICAgIGxldCBjb21wYXNzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF1cclxuICAgICAgICBsZXQgbmF2aWdhdGlvbiA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmF2aWdhdGlvbi1jb250cm9scycpWzBdXHJcbiAgICAgICAgaWYgKG9wdGlvbnNba2V5XSkge1xyXG4gICAgICAgICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAgICAgICAgIG5hdmlnYXRpb24gJiYgKG5hdmlnYXRpb24uc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb21wYXNzICYmIChjb21wYXNzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICBuYXZpZ2F0aW9uICYmIChuYXZpZ2F0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdsZWdlbmQnOlxyXG4gICAgICAgIGxldCBkaXN0YW5jZUxlZ2VuZCA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZGlzdGFuY2UtbGVnZW5kJylbMF1cclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgbGV0IGluZm9FbG0gPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS1pbmZvJylbMF1cclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBpZiAoaW5mb0VsbSkge1xyXG4gICAgICAgICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5mb0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICBpbmZvRWxtLmNsYXNzTmFtZSA9IFwiY2VzaXVtLWluZm9cIlxyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5ib3R0b20gPSAnMzJweCc7XHJcbiAgICAgICAgICAgIGluZm9FbG0uc3R5bGUucmlnaHQgPSAnMjQwcHgnO1xyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlWydmb250LXNpemUnXSA9ICcxNHB4JztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJ3JnYmEoNDcsNTMsNjAsLjgpJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5jb2xvciA9ICcjZmZmJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5wYWRkaW5nID0gJzRweCAxMHB4JztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZVsnYm9yZGVyLXJhZGl1cyddID0gJzE4cHgnO1xyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XHJcblxyXG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPi08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4tPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7pq5jnqIvvvJo8L3NwYW4+PHNwYW4+LTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnjvvJo8L3NwYW4+PHNwYW4+LTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+ee+8mjwvc3Bhbj48c3Bhbj4tPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5677yaPC9zcGFuPjxzcGFuPi08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoaW5mb0VsbSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KHNkaylcclxuICAgICAgICAgIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgPSBldmVudFxyXG4gICAgICAgICAgbGV0IGxhc3RQaWNrVGltZSA9IDA7XHJcbiAgICAgICAgICBsZXQgdGltZW91dEV2ZW50XHJcbiAgICAgICAgICBldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIF9jYXJ0ZXNpYW4gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgLy8gY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgLy8gaWYgKG5vdyAtIGxhc3RQaWNrVGltZSA8IDUwMCkge1xyXG4gICAgICAgICAgICAvLyAgIGNsZWFyVGltZW91dCh0aW1lb3V0RXZlbnQpXHJcbiAgICAgICAgICAgIC8vICAgdGltZW91dEV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgICAvLyAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuXHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gbGFzdFBpY2tUaW1lID0gbm93O1xyXG4gICAgICAgICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcclxuICAgICAgICAgICAgaWYgKCFfY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbGV0IHBvcyA9IHNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChfY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChfY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgICAgICAvLyBwb3NpdGlvbi5hbHQgPSBoZWlnaHRcclxuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICAgICAgLy8gaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgLy8gICAgIDxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sbmcudG9GaXhlZCg2KSl9wrAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIC8vICAgICA8c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubGF0LnRvRml4ZWQoNikpfcKwIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAvLyAgICAgPHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgLy8gICBgXHJcbiAgICAgICAgICAgICAgc3dpdGNoIChwb3NpdGlvblR5cGUgfHwgJ+W6picpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6pic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sbmcudG9GaXhlZCg4KSl9wrAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sYXQudG9GaXhlZCg4KSl9wrAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPumrmOeoi++8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6puWIhic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxuZywgdHJ1ZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxhdCwgdHJ1ZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPumrmOeoi++8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6puWIhuenkic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxuZywgZmFsc2UpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sYXQsIGZhbHNlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+6auY56iL77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIGxldCByZXN1bHQgPSBwcm9qLmNvbnZlcnQoW3sgeDogcG9zaXRpb24ubG5nLCB5OiBwb3NpdGlvbi5sYXQsIHo6IHBvc2l0aW9uLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2ouY29udmVydChbeyB4OiBwb3NpdGlvbi5sbmcsIHk6IHBvc2l0aW9uLmxhdCwgejogcG9zaXRpb24uYWx0IH1dLCAnRVBTRzo0MzI2JywgcG9zaVRvQ29vcmRpbmF0ZShjb29yZGluYXRlU3lzdGVtLCBwb3NpdGlvbikpXHJcblxyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQucG9pbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+eO+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihyZXN1bHQucG9pbnRzWzBdLngudG9GaXhlZCgyKSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnnvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS55LnRvRml4ZWQoMikpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5677yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0uei50b0ZpeGVkKDIpKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGluZm9FbG0gJiYgKGluZm9FbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2ZyYW1lJzpcclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBzZGsudmlld2VyLnNjZW5lLmRlYnVnU2hvd0ZyYW1lc1BlclNlY29uZCA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNlc2l1bVdpZGdldENvbnRhaW5lckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXVxyXG4gICAgICAgICAgICBsZXQgZGVmYXVsdENvbnRhaW5lciA9IGNlc2l1bVdpZGdldENvbnRhaW5lckVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tcGVyZm9ybWFuY2VEaXNwbGF5LWRlZmF1bHRDb250YWluZXInKVswXVxyXG4gICAgICAgICAgICBpZiAoZGVmYXVsdENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgIGNlc2l1bVdpZGdldENvbnRhaW5lckVsbS5hcHBlbmRDaGlsZChkZWZhdWx0Q29udGFpbmVyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCA1MCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgc2RrLnZpZXdlci5zY2VuZS5kZWJ1Z1Nob3dGcmFtZXNQZXJTZWNvbmQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGxldCBjb21wYXNzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF1cclxuICAvLyBsZXQgbmF2aWdhdGlvbiA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmF2aWdhdGlvbi1jb250cm9scycpWzBdXHJcbiAgLy8gbGV0IGRpc3RhbmNlTGVnZW5kID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkaXN0YW5jZS1sZWdlbmQnKVswXVxyXG4gIC8vIGlmKHN0YXR1cykge1xyXG4gIC8vICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAvLyAgIG5hdmlnYXRpb24gJiYgKG5hdmlnYXRpb24uc3R5bGUuZGlzcGxheSA9ICdibG9jaycpXHJcbiAgLy8gICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQuc3R5bGUuZGlzcGxheSA9ICdibG9jaycpXHJcbiAgLy8gfVxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gIC8vICAgbmF2aWdhdGlvbiAmJiAobmF2aWdhdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gIC8vICAgZGlzdGFuY2VMZWdlbmQgJiYgKGRpc3RhbmNlTGVnZW5kLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgLy8gICB2aWV3ZXIuY2VzaXVtTmF2aWdhdGlvbi5kaXN0YW5jZUxlZ2VuZFZpZXdNb2RlbC5kZXN0cm95KClcclxuICAvLyB9XHJcbn1cclxuXHJcbi8q6K6+572u5bm/5ZGK54mM6buY6K6k5Zu+5qCHKi9cclxuZnVuY3Rpb24gc2V0QmlsbGJvYXJkRGVmYXVsdFVybCh1cmwsIG5hbWUpIHtcclxuICBpZiAobmFtZSkge1xyXG4gICAgbmFtZSA9ICdiaWxsYm9hcmRfZGVmYXVsdF91cmxfJyArIG5hbWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBuYW1lID0gJ2JpbGxib2FyZF9kZWZhdWx0X3VybCdcclxuICB9XHJcbiAgbGV0IGhvc3QgPSBnZXRIb3N0KClcclxuICBpZiAoIXVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgLy/or7TmmI7mmK/mnKzlnLDnmoRqc29u77yM5Zyo56OB55uY5Lit5a2Y5Zyo55qEXHJcbiAgICBpZiAoIXVybC5pbmNsdWRlcyhcIjpcIikpIHtcclxuICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICBsZXQgbyA9IG5ldyBVUkwodXJsLCBob3N0KVxyXG4gICAgICAgIHVybCA9IG8uaHJlZlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIHVybCk7XHJcbn1cclxuLyrojrflj5blub/lkYrniYzpu5jorqTlm77moIcqL1xyXG5mdW5jdGlvbiBnZXRCaWxsYm9hcmREZWZhdWx0VXJsKG5hbWUpIHtcclxuICBpZiAobmFtZSkge1xyXG4gICAgbmFtZSA9ICdiaWxsYm9hcmRfZGVmYXVsdF91cmxfJyArIG5hbWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBuYW1lID0gJ2JpbGxib2FyZF9kZWZhdWx0X3VybCdcclxuICB9XHJcbiAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xyXG59XHJcblxyXG4vKuiuvue9rumrmOW6puWPguiAgyovXHJcbmZ1bmN0aW9uIHNldEdyb3VuZENvdmVyKHNkaywgc3RhdHVzKSB7XHJcbiAgR3JvdW5kQ292ZXIgPSBzdGF0dXMgPyB0cnVlIDogZmFsc2VcclxuICB1cGRhdGVDbHVzdGVyKHNkay52aWV3ZXIpXHJcbn1cclxuXHJcbi8q6I635Y+W6auY5bqm5Y+C6ICDKi9cclxuZnVuY3Rpb24gZ2V0R3JvdW5kQ292ZXIoKSB7XHJcbiAgcmV0dXJuIEdyb3VuZENvdmVyXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEJpbVBpY2tTdGF0dXMoc2RrLCBzdGF0dXMpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdIHx8IChiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSA9IHt9KVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLnN0YXR1cyA9IHN0YXR1c1xyXG4gIGlmIChiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5Nb3ZlSGFuZGxlcikge1xyXG4gICAgYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uTW92ZUhhbmRsZXIuZGVzdHJveSgpXHJcbiAgfVxyXG4gIGlmICghc3RhdHVzKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLk1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICBsZXQgc2VsZWN0ZWRJZCA9IGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLnNlbGVjdGVkSWRcclxuICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uaWQpXHJcbiAgICAvLyBpZiAoc2VsZWN0ZWRGZWF0dXJlSWQpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoYXQpIHtcclxuICAgICAgaWYgKHRoYXQuZmVhdHVyZXMuaGFzKHNlbGVjdGVkSWQpKSB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gdGhhdC5mZWF0dXJlcy5nZXQoc2VsZWN0ZWRJZCkuZmVhdHVyZXNcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZmVhdHVyZXMpIHtcclxuICAgICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2xvciA9IGZlYXR1cmVzW2tleV0uY3VzdG9tQ29sb3IgfHwgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZicpXHJcbiAgICAgICAgICAgIGZlYXR1cmVzW2tleV0uY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLnJlZCl9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmdyZWVuKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuYmx1ZSl9LCR7Y29sb3IuYWxwaGEgKiAoKGZlYXR1cmVzW2tleV0uY3VzdG9tQWxwaGEgfHwgZmVhdHVyZXNba2V5XS5jdXN0b21BbHBoYSA9PT0gMCkgPyBmZWF0dXJlc1trZXldLmN1c3RvbUFscGhhIDogMSl9KWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgICAgbGV0IG9iaiA9IHNkay5nZXRJbmNldGFuY2UocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgIGlmIChvYmoudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICBpZiAocGljay5wcmltaXRpdmUgJiYgcGljay5wcmltaXRpdmUuaWQpIHtcclxuICAgICAgICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQocGljay5wcmltaXRpdmUuaWQpXHJcbiAgICAgICAgICBzZWxlY3RlZElkID0gcGljay5nZXRQcm9wZXJ0eSgnaWQnKVxyXG4gICAgICAgICAgaWYgKHRoYXQuZmVhdHVyZXMuaGFzKHNlbGVjdGVkSWQpKSB7XHJcbiAgICAgICAgICAgIGxldCBmZWF0dXJlcyA9IHRoYXQuZmVhdHVyZXMuZ2V0KHNlbGVjdGVkSWQpLmZlYXR1cmVzXHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlc1trZXldLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZWIzYicpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5pZCA9IHBpY2sucHJpbWl0aXZlLmlkXHJcbiAgICAgICAgICBiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5zZWxlY3RlZElkID0gc2VsZWN0ZWRJZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRCaW1QaWNrU3RhdHVzKHNkaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgcmV0dXJuIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdID8gYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uc3RhdHVzIDogZmFsc2VcclxufVxyXG5cclxuLyog5Zu057uV5Z2Q5qCH5peL6L2sICovXHJcbmZ1bmN0aW9uIHJvdGF0ZUFyb3VuZChzZGssIHBvc2l0aW9uKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICBzZGsudmlld2VyLmNhbWVyYS5sb29rQXRUcmFuc2Zvcm0oQ2VzaXVtLk1hdHJpeDQuSURFTlRJVFkpO1xyXG4gIC8vIOWFs+mXrUNvbnRyb2xsZXJcclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgIGl0ZW0uZWRpdE9iaiAmJiBpdGVtLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICBpdGVtLkNvbnRyb2xsZXJPYmplY3QgJiYgaXRlbS5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gIH0pXHJcbiAgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSB8fCAocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSA9IHt9KVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSAmJiBUV0VFTi5yZW1vdmUocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5hbmltYXRlKVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgJiYgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5ldmVudC5kZXN0cm95KClcclxuICBpZiAoIXBvc2l0aW9uKSB7XHJcbiAgICBDYW1lcmFDb250cm9sbGVyKHNkaywgdHJ1ZSlcclxuICAgIHJldHVyblxyXG4gIH1cclxuXHJcbiAgbGV0IHBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHBvc2l0aW9uLmFsdClcclxuICBsZXQgYW5nbGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZylcclxuICBsZXQgcmFuZ2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgcG9pbnQpO1xyXG4gIENhbWVyYUNvbnRyb2xsZXIoc2RrLCBmYWxzZSlcclxuICBsZXQgcGl0Y2ggPSBzZGsudmlld2VyLmNhbWVyYS5waXRjaFxyXG4gIGxldCBkZWdyZWVzID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBpdGNoKVxyXG4gIGlmIChkZWdyZWVzIDwgLTg5Ljk5KSB7XHJcbiAgICBwaXRjaCA9IENlc2l1bS5NYXRoLnRvUmFkaWFucygtODkuOTkpXHJcbiAgfVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSA9IG5ldyBUV0VFTi5Ud2Vlbih7IGFuZ2xlOiBhbmdsZSB9KS50byh7IGFuZ2xlOiBhbmdsZSAtIDM2MCB9LCAzMDAwMCkuZWFzaW5nKFRXRUVOLkVhc2luZy5MaW5lYXIuTm9uZSkucmVwZWF0KEluZmluaXR5KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgaWYgKCFzZGsudmlld2VyKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZShyb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgc2RrLnZpZXdlci5jYW1lcmEubG9va0F0KFxyXG4gICAgICBwb2ludCxcclxuICAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSYW5nZShDZXNpdW0uTWF0aC50b1JhZGlhbnMoci5hbmdsZSksIHBpdGNoLCByYW5nZSlcclxuICAgIClcclxuXHJcbiAgICBzZGsudmlld2VyLmNhbWVyYS5sb29rQXRUcmFuc2Zvcm0oQ2VzaXVtLk1hdHJpeDQuSURFTlRJVFkpO1xyXG4gIH0pLnN0YXJ0KClcclxuXHJcbiAgbGV0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgPSBldmVudFxyXG4gIGV2ZW50Lm1vdXNlX2xlZnRfZG93bigoKSA9PiB7XHJcbiAgICByb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUgJiYgVFdFRU4ucmVtb3ZlKHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSlcclxuICAgIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgJiYgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5ldmVudC5kZXN0cm95KClcclxuICAgIENhbWVyYUNvbnRyb2xsZXIoc2RrLCB0cnVlKVxyXG4gICAgc2RrLnZpZXdlci5jYW1lcmEubG9va0F0VHJhbnNmb3JtKENlc2l1bS5NYXRyaXg0LklERU5USVRZKTtcclxuICB9KVxyXG59XHJcblxyXG4vKiDlhbPpl63lm7Tnu5XlnZDmoIfml4vovawgKi9cclxuZnVuY3Rpb24gY2xvc2VSb3RhdGVBcm91bmQoc2RrKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSkge1xyXG4gICAgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5hbmltYXRlICYmIFRXRUVOLnJlbW92ZShyb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUpXHJcbiAgICByb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmV2ZW50ICYmIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQuZGVzdHJveSgpXHJcbiAgICBDYW1lcmFDb250cm9sbGVyKHNkaywgdHJ1ZSlcclxuICAgIHNkay52aWV3ZXIuY2FtZXJhLmxvb2tBdFRyYW5zZm9ybShDZXNpdW0uTWF0cml4NC5JREVOVElUWSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVZpZXdGb2xsb3coc2RrKSB7XHJcbiAgaWYgKHNkayAmJiBzZGsuZW50aXR5TWFwKSB7XHJcbiAgICBsZXQgZW50aXR5TWFwID0gc2RrLmVudGl0eU1hcFxyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGVudGl0eU1hcCkge1xyXG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nICYmIHZhbHVlLnZpZXdGb2xsb3cpIHtcclxuICAgICAgICB2YWx1ZS52aWV3Rm9sbG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyog5pa56YeM572R54q25oCB5byA5YWzICovXHJcbmZ1bmN0aW9uIEZsd1N0YXR1c1N3aXRjaChzZGssIHN0YXR1cykge1xyXG4gIGlmICghc2RrKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGxheWVyXHJcbiAgbGV0IHNka0QgPSBnZXRTZGsoKS5zZGtEXHJcbiAgaWYgKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBGbHdTdGF0dXNTd2l0Y2goc2RrRCwgc3RhdHVzKVxyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlciAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnKSB7XHJcbiAgICAgIGxheWVyID0gc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV1cclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKGxheWVyKSB7XHJcbiAgICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuYWRkSW1hZ2VyeVByb3ZpZGVyKG5ldyBDZXNpdW0uVGlsZUNvb3JkaW5hdGVzSW1hZ2VyeVByb3ZpZGVyRmx3KFxyXG4gICAgICB7XHJcbiAgICAgICAgdGlsZVdpZHRoOiAxMjgsXHJcbiAgICAgICAgdGlsZUhlaWdodDogMTI4LFxyXG4gICAgICB9XHJcbiAgICApKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZsd1N0YXR1cyhzZGspIHtcclxuICBsZXQgc3RhdHVzID0gZmFsc2VcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlciAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnKSB7XHJcbiAgICAgIHN0YXR1cyA9IHRydWVcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHN0YXR1c1xyXG59XHJcblxyXG4vKiDnu4/nuqznvZHnirbmgIHlvIDlhbMgKi9cclxuZnVuY3Rpb24gSnd3U3RhdHVzU3dpdGNoKHNkaywgc3RhdHVzKSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgbGF5ZXJcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZiAoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIEp3d1N0YXR1c1N3aXRjaChzZGtELCBzdGF0dXMpXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgJiYgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSA9PT0gJ2p3dycpIHtcclxuICAgICAgbGF5ZXIgPSBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAobGF5ZXIpIHtcclxuICAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yZW1vdmUobGF5ZXIpXHJcbiAgfVxyXG4gIGlmIChzdGF0dXMpIHtcclxuICAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIobmV3IENlc2l1bS5UaWxlQ29vcmRpbmF0ZXNJbWFnZXJ5UHJvdmlkZXJKd3coKSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRKd3dTdGF0dXMoc2RrKSB7XHJcbiAgbGV0IHN0YXR1cyA9IGZhbHNlXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIgJiYgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlID09PSAnand3Jykge1xyXG4gICAgICBzdGF0dXMgPSB0cnVlXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzdGF0dXNcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaXRTY3JlZW4yKHNkaywgc3RhdHVzKSB7XHJcbiAgbGV0IHNsaWRlckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLXNsaWRlcicpWzBdXHJcbiAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrLnZpZXdlci5fZWxlbWVudC5yZW1vdmVDaGlsZChzbGlkZXJFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKGxlZnRFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbGlkZXJFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICAgIHNsaWRlckVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gJzUwJSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICAgIGxlZnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgbGVmdEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnXHJcbiAgICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgICBsZWZ0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgbGVmdEVsbS5zdHlsZS5sZWZ0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcbiAgICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICByaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0J1xyXG4gICAgcmlnaHRFbG0udHlwZSA9ICdjaGVja2JveCdcclxuICAgIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgcmlnaHRFbG0uc3R5bGUucmlnaHQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgbGVmdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIXJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKClcclxuICAgIH0pXHJcbiAgICByaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgICB9KVxyXG5cclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlKVxyXG4gICAgICBzbGlkZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBmdW5jdGlvbiBtb3VzZW1vdmUoYSwgYikge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgICAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAoYS5vZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCAqIDEwMCkgKyAnJSdcclxuICAgICAgICBzZGsudmlld2VyLnNjZW5lLnNwbGl0UG9zaXRpb24gPSBhLm9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFN0YXR1cyA9IHN0YXR1c1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMC41XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMFxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoMClcclxuICAgIHNkay52aWV3ZXIuc2NlbmUuc3BsaXRTdGF0dXMgPSBzdGF0dXNcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKHYpIHtcclxuICAgIGxldCB2YWx1ZVxyXG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSB7XHJcbiAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIHZhbHVlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gLTFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gMVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhbHVlID0gdlxyXG4gICAgfVxyXG5cclxuICAgIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgIGlmIChzZGsudmlld2VyLnNjZW5lLnNwbGl0U3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgICAgaXRlbS5lbnRpdHkuYmlsbGJvYXJkLnNwbGl0RGlyZWN0aW9uID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpdGVtLmVudGl0eSAmJiAoaXRlbS5lbnRpdHkuc3BsaXREaXJlY3Rpb24gPSB2YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHNwbGl0U2NyZWVuKHNkaywgc3RhdHVzKSB7XHJcbiAgbGV0IHNsaWRlckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLXNsaWRlcicpWzBdXHJcbiAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrLnZpZXdlci5fZWxlbWVudC5yZW1vdmVDaGlsZChzbGlkZXJFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKGxlZnRFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbGlkZXJFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICAgIHNsaWRlckVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gJzUwJSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICAgIGxlZnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgbGVmdEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnXHJcbiAgICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgICBsZWZ0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgbGVmdEVsbS5zdHlsZS5sZWZ0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcbiAgICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICByaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0J1xyXG4gICAgcmlnaHRFbG0udHlwZSA9ICdjaGVja2JveCdcclxuICAgIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgcmlnaHRFbG0uc3R5bGUucmlnaHQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgbGVmdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIXJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKClcclxuICAgIH0pXHJcbiAgICByaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgICB9KVxyXG5cclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlKVxyXG4gICAgICBzbGlkZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBmdW5jdGlvbiBtb3VzZW1vdmUoYSwgYikge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgICAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAoYS5vZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCAqIDEwMCkgKyAnJSdcclxuICAgICAgICBzZGsudmlld2VyLnNjZW5lLnNwbGl0UG9zaXRpb24gPSBhLm9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFN0YXR1cyA9IHN0YXR1c1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMC41XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMFxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoMClcclxuICAgIHNkay52aWV3ZXIuc2NlbmUuc3BsaXRTdGF0dXMgPSBzdGF0dXNcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKHYpIHtcclxuICAgIGxldCB2YWx1ZVxyXG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSB7XHJcbiAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIHZhbHVlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gLTFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gMVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhbHVlID0gdlxyXG4gICAgfVxyXG5cclxuICAgIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgIGlmIChzZGsudmlld2VyLnNjZW5lLnNwbGl0U3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgICAgaXRlbS5lbnRpdHkuYmlsbGJvYXJkLnNwbGl0RGlyZWN0aW9uID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpdGVtLmVudGl0eSAmJiAoaXRlbS5lbnRpdHkuc3BsaXREaXJlY3Rpb24gPSB2YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDb29yZGluYXRlU3lzdGVtKCkge1xyXG4gIHJldHVybiBjb29yZGluYXRlU3lzdGVtXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldENvb3JkaW5hdGVTeXN0ZW0oc2RrLCBlcHNnKSB7XHJcbiAgY29vcmRpbmF0ZVN5c3RlbSA9IGVwc2cgfHwgJ0VQU0c6NDMyNidcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlciB8fCAhc2RrLnZpZXdlci5fZWxlbWVudCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBpbmZvRWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0taW5mbycpWzBdXHJcbiAgaWYgKCFfY2FydGVzaWFuIHx8ICFpbmZvRWxtKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBsZXQgcHJvaiA9IHNkay5wcm9qXHJcbiAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoX2NhcnRlc2lhbiwgc2RrLnZpZXdlcilcclxuICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgIC8vIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgLy8gICAgICAgICAgICAgICA8c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubG5nLnRvRml4ZWQoNikpfcKwIDwvc3Bhbj5cclxuICAgIC8vICAgICAgICAgICAgICAgPHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxhdC50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+XHJcbiAgICAvLyAgICAgICAgICAgICAgIDxzcGFuPua1t+aLlOmrmOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPlxyXG4gICAgLy8gICAgICAgICAgICAgYFxyXG4gICAgc3dpdGNoIChwb3NpdGlvblR5cGUgfHwgJ+W6picpIHtcclxuICAgICAgY2FzZSAn5bqmJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpfcKwIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubGF0LnRvRml4ZWQoOCkpfcKwIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5bqm5YiGJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sbmcsIHRydWUpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sYXQsIHRydWUpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5bqm5YiG56eSJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sbmcsIGZhbHNlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubGF0LCBmYWxzZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPua1t+aLlOmrmOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIC8vIGxldCByZXN1bHQgPSBwcm9qLmNvbnZlcnQoW3sgeDogcG9zaXRpb24ubG5nLCB5OiBwb3NpdGlvbi5sYXQsIHo6IHBvc2l0aW9uLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICBsZXQgcmVzdWx0ID0gcHJvai5jb252ZXJ0KFt7IHg6IHBvc2l0aW9uLmxuZywgeTogcG9zaXRpb24ubGF0LCB6OiBwb3NpdGlvbi5hbHQgfV0sICdFUFNHOjQzMjYnLCBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSlcclxuICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnjvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS54LnRvRml4ZWQoMikpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5577yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0ueS50b0ZpeGVkKDIpKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+eu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnoudG9GaXhlZCgyKSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSB7XHJcbiAgbGV0IHR5cGVcclxuICBzd2l0Y2ggKGNvb3JkaW5hdGVTeXN0ZW0pIHtcclxuICAgIGNhc2UgJ0VQU0c6MzI2MDEnOi8vV0dTODQg6YCa55So5qiq6L205aKo5Y2h5omY5oqV5b2xXHJcbiAgICAgIC8v5bim5Y+3ID0g4oyKKOe7j+W6piArIDE4MCkvNuKMiyArIDFcclxuICAgICAgdmFyIGRoID0gTWF0aC5mbG9vcigocG9zaXRpb24ubG5nICsgMTgwKSAvIDYgKyAxKVxyXG5cclxuICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IDApIHsvL+WMl+e6rFxyXG4gICAgICAgIHR5cGUgPSAzMjYwMCArIGRoXHJcbiAgICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIH0gZWxzZSB7Ly/ljZfnuqxcclxuICAgICAgICB0eXBlID0gMzI3MDAgKyBkaFxyXG4gICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnRVBTRzo0NTM0JzovLzIwMDAg5Z2Q5qCHIDMg5bqm5LiN5bim5Luj5Y+3XHJcbiAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAvL0VQU0cgPSBOIC0gMjUgKyA0NTM0XHJcblxyXG4gICAgICB2YXIgZGgzeSA9IE1hdGgucm91bmQocG9zaXRpb24ubG5nIC8gMylcclxuICAgICAgdHlwZSA9IGRoM3kgLSAyNSArIDQ1MzRcclxuICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnRVBTRzo0NTEzJzovLzIwMDAg5Z2Q5qCHIDMg5bqm5bim5Luj5Y+3XHJcbiAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAvL0VQU0cgPSBOIC0gMjUgKyA0NTEzXHJcbiAgICAgIHZhciBkaDN3ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICB0eXBlID0gZGgzdyAtIDI1ICsgNDUxM1xyXG4gICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdFUFNHOjQ1MDInOi8vMjAwMCDlnZDmoIcgNiDluqbkuI3luKbku6Plj7dcclxuICAgICAgbGV0IHpvbmVOdW1iZXIgPSBNYXRoLmZsb29yKHBvc2l0aW9uLmxuZyAvIDYpICsgMzFcclxuICAgICAgLy8g5Lit5Zu95Yy65Z+fNuW6puW4puW4puWPt+iMg+WbtOS4ujEzLTIzXHJcbiAgICAgIGlmICh6b25lTnVtYmVyIDwgMTMpIHpvbmVOdW1iZXIgPSAxMztcclxuICAgICAgaWYgKHpvbmVOdW1iZXIgPiAyMykgem9uZU51bWJlciA9IDIzO1xyXG4gICAgICB0eXBlID0gKHpvbmVOdW1iZXIgLSAxMykgKyA0NTAyXHJcbiAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ0VQU0c6NDQ5MSc6Ly8yMDAwIOWdkOaghyA2IOW6puW4puS7o+WPt1xyXG4gICAgICAvL04gPSBmbG9vcihsb25naXR1ZGUvNikgKyAzMVxyXG4gICAgICB2YXIgZGg2ID0gTWF0aC5mbG9vcihwb3NpdGlvbi5sbmcgLyA2KSArIDMxXHJcbiAgICAgIC8vIOS4reWbveWMuuWfnzbluqbluKbluKblj7fojIPlm7TkuLoxMy0yM1xyXG4gICAgICBpZiAoZGg2IDwgMTMpIGRoNiA9IDEzO1xyXG4gICAgICBpZiAoZGg2ID4gMjMpIGRoNiA9IDIzO1xyXG4gICAgICB0eXBlID0gKGRoNiAtIDEzKSArIDQ0OTFcclxuICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIHJldHVybiB0eXBlXHJcbn1cclxuZnVuY3Rpb24gZ2V0RE1TKCkge1xyXG4gIHJldHVybiBwb3NpdGlvblR5cGVcclxufVxyXG5mdW5jdGlvbiBzZXRETVMoc2RrLCB0eXBlKSB7XHJcbiAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gIT09ICdFUFNHOjQzMjYnICYmIGNvb3JkaW5hdGVTeXN0ZW0gIT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgcG9zaXRpb25UeXBlID0gdHlwZVxyXG4gIGlmICghc2RrIHx8ICFzZGsudmlld2VyIHx8ICFzZGsudmlld2VyLl9lbGVtZW50KSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGluZm9FbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS1pbmZvJylbMF1cclxuICBpZiAoIV9jYXJ0ZXNpYW4gfHwgIWluZm9FbG0pIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCBwcm9qID0gc2RrLnByb2pcclxuICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChfY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAn5bqmJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxuZy50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxhdC50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAn5bqm5YiGJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCB0cnVlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubGF0LCB0cnVlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAn5bqm5YiG56eSJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCBmYWxzZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxhdCwgZmFsc2UpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgcHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCB0cnVlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjYW1lcmFDaGFuZ2VkKHNkaywgY2IpIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIC8v6K6+572u55u45py65Y+Y5YyW55qE55uR5ZCs5LqL5Lu2XHJcbiAgbGV0IHJlbW92ZUNoYW5nZWQgPSBzZGsudmlld2VyLmNhbWVyYS5jaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIocGVyY2VudGFnZSA9PiB7XHJcbiAgICBjYih7XHJcbiAgICAgIHBvc2l0aW9uOiB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlciksXHJcbiAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgaGVhZGluZzogc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgICBwaXRjaDogc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgICAgcm9sbDogc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH0pXHJcbiAgcmV0dXJuIHJlbW92ZUNoYW5nZWRcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0TWF4aW11bVJlcXVlc3RzUGVyU2VydmVyKHYpIHtcclxuICBpZiAodHlwZW9mIHYgPT0gJ251bWJlcicpXHJcbiAgICBDZXNpdW0uUmVxdWVzdFNjaGVkdWxlci5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXIgPSB2XHJcbn1cclxuXHJcbi8qIOmUruebmOS6i+S7tiAqL1xyXG5mdW5jdGlvbiBzZXRLZXlib2FyZEV2ZW50QWN0aXZlKHNkaywgc3RhdHVzKSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzZGsudmlld2VyLl9kaXNhYmxlS2V5Ym9hcmRFdmVudCA9IGZhbHNlXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5fZGlzYWJsZUtleWJvYXJkRXZlbnQgPSB0cnVlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDZXNpdW1JbmRleGVkREJNYXhTaXplKCkge1xyXG4gIGNvbnN0IGJhc2VVbml0ID0gMTAyNCAqIDEwMjQgKiAxMDI0XHJcbiAgbGV0IHNpemUgPSBOdW1iZXIoTnVtYmVyKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdJbmRleGVkREJNYXhTaXplJykpLnRvRml4ZWQoMCkpXHJcbiAgaWYgKGlzTmFOKHNpemUpIHx8IHNpemUgPCBiYXNlVW5pdCkge1xyXG4gICAgc2l6ZSA9IGJhc2VVbml0XHJcbiAgfVxyXG4gIHJldHVybiBzaXplXHJcbn1cclxuZnVuY3Rpb24gc2V0Q2VzaXVtSW5kZXhlZERCTWF4U2l6ZSh2KSB7XHJcbiAgY29uc3QgYmFzZVVuaXQgPSAxMDI0ICogMTAyNCAqIDEwMjRcclxuICBsZXQgbWF4U2l6ZSA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgwKSlcclxuICBpZiAoaXNOYU4obWF4U2l6ZSkgfHwgbWF4U2l6ZSA8IGJhc2VVbml0KSB7XHJcbiAgICBtYXhTaXplID0gYmFzZVVuaXRcclxuICB9XHJcbiAgQ2VzaXVtLk1hbmFnZUluZGV4ZWREQiAmJiBDZXNpdW0uTWFuYWdlSW5kZXhlZERCLlNldEluZGV4ZWREQk1heFNpemUobWF4U2l6ZSlcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnSW5kZXhlZERCTWF4U2l6ZScsIG1heFNpemUpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENlc2l1bU1hbmFnZUluZGV4ZXhEQlN0YXRlKCkge1xyXG4gIGxldCBzdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdNYW5hZ2VJbmRleGV4REJTdGF0ZScpXHJcbiAgaWYgKHN0YXRlID09PSAnZmFsc2UnKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIEJvb2xlYW4oc3RhdGUpXHJcbn1cclxuZnVuY3Rpb24gc2V0Q2VzaXVtTWFuYWdlSW5kZXhleERCU3RhdGUodikge1xyXG4gIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgIENlc2l1bS5NYW5hZ2VJbmRleGVkREIgJiYgQ2VzaXVtLk1hbmFnZUluZGV4ZWREQi5TZXRNYW5hZ2VJbmRleGV4REJTdGF0ZSh2KVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ01hbmFnZUluZGV4ZXhEQlN0YXRlJywgdilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihcIuWPguaVsOW/hemhu+S4umJvb2xlYW5cIilcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENlc2l1bUluZGV4ZWREQkN1cnJlbnRTaXplKCkge1xyXG4gIHJldHVybiBDZXNpdW0uTWFuYWdlSW5kZXhlZERCICYmIENlc2l1bS5NYW5hZ2VJbmRleGVkREIuR2V0SW5kZXhlZERCQ3VycmVudFNpemUoKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRBY3RpdmVWaWV3ZXIodikge1xyXG4gIHNldE11bHRpVmlld3BvcnRBY3RpdmVWaWV3ZXIodilcclxuICBzZXRTcGxpdEFjdGl2ZVZpZXdlcih2KVxyXG59XHJcblxyXG4vLyDorr7nva7lnLDnkIPpgI/mmI7luqZcclxuZnVuY3Rpb24gZW5hYmxlUGVyc3BlY3RpdmUoc2RrLCBhbHBoYSA9IDEpIHtcclxuICBpZiAoIWFscGhhICYmIGFscGhhICE9IDApIHtcclxuICAgIGFscGhhID0gMVxyXG4gIH1cclxuICBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnRyYW5zbHVjZW5jeS5mcm9udEZhY2VBbHBoYSA9IGFscGhhXHJcbn1cclxuXHJcbmV4cG9ydCB7IGdldEN1cnJlbnRWaWV3LCBzZXREZWZhdWx0VmlldywgZmx5VG8sIENhbWVyYUNvbnRyb2xsZXIsIENlc2l1bUNvbnRhaW5lciwgc2V0QmlsbGJvYXJkRGVmYXVsdFVybCwgZ2V0QmlsbGJvYXJkRGVmYXVsdFVybCwgc2V0R3JvdW5kQ292ZXIsIGdldEdyb3VuZENvdmVyLCBnZXRCaW1QaWNrU3RhdHVzLCBzZXRCaW1QaWNrU3RhdHVzLCByb3RhdGVBcm91bmQsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3csIEZsd1N0YXR1c1N3aXRjaCwgSnd3U3RhdHVzU3dpdGNoLCBnZXRGbHdTdGF0dXMsIGdldEp3d1N0YXR1cywgZ2V0Q29vcmRpbmF0ZVN5c3RlbSwgc2V0Q29vcmRpbmF0ZVN5c3RlbSwgZ2V0RE1TLCBzZXRETVMsIGNhbWVyYUNoYW5nZWQsIHNldE1heGltdW1SZXF1ZXN0c1BlclNlcnZlciwgc2V0S2V5Ym9hcmRFdmVudEFjdGl2ZSwgZ2V0VGhlbWUsIHNldFRoZW1lLCBnZXRDZXNpdW1JbmRleGVkREJNYXhTaXplLCBzZXRDZXNpdW1JbmRleGVkREJNYXhTaXplLCBnZXRDZXNpdW1NYW5hZ2VJbmRleGV4REJTdGF0ZSwgc2V0Q2VzaXVtTWFuYWdlSW5kZXhleERCU3RhdGUsIGdldENlc2l1bUluZGV4ZWREQkN1cnJlbnRTaXplLCBzZXRBY3RpdmVWaWV3ZXIsIGVuYWJsZVBlcnNwZWN0aXZlIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQTJCQTtBQUFBO0FBQUE7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFtREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFlQTtBQUFBO0FBYkE7QUFJQTtBQUFBO0FBR0E7QUFJQTtBQUFBO0FBR0E7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBcERBO0FBQUE7QUFBQTtBQWxEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFzREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRKQTtBQUFBO0FBQUE7QUF1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/global.js\n"); - -/***/ }), - -/***/ "./src/Global/mouseRightMenu/index.js": -/*!********************************************!*\ - !*** ./src/Global/mouseRightMenu/index.js ***! - \********************************************/ -/*! exports provided: MouseRightMenu, getMouseRightMenuStatus */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MouseRightMenu\", function() { return MouseRightMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMouseRightMenuStatus\", function() { return getMouseRightMenuStatus; });\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* 右键点击菜单 */\n\n\n\n\nvar eventListener = {};\nfunction MouseRightMenu(sdk, status, callBack) {\n if (!sdk || !sdk.div_id) {\n return;\n }\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_3__[\"getSdk\"])().sdkD;\n var _element = document.getElementById(sdk.div_id).getElementsByClassName('cesium-viewer')[0];\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n if (!eventListener[sdk.div_id]) {\n eventListener[sdk.div_id] = {};\n }\n if (eventListener[sdk.div_id].mousedown) {\n document.removeEventListener('mousedown', eventListener[sdk.div_id].mousedown);\n }\n if (eventListener[sdk.div_id].click) {\n document.removeEventListener('click', eventListener[sdk.div_id].click);\n }\n if (!eventListener[sdk.div_id].callBack) {\n eventListener[sdk.div_id].callBack = callBack;\n }\n if (sdk !== sdkD) {\n eventListener[sdk.div_id].mouseRightMenuEvent && eventListener[sdk.div_id].mouseRightMenuEvent.destroy();\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n eventListener[sdk.div_id].status = status;\n if (status) {\n eventListener[sdk.div_id].mousedown = function (e) {\n if (e.target.parentNode && e.target.parentNode.id == 'custom-menu' || e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.id == 'custom-menu') {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n };\n document.addEventListener('mousedown', eventListener[sdk.div_id].mousedown);\n eventListener[sdk.div_id].click = function (e) {\n if (e.target.parentNode && e.target.parentNode.id == 'custom-menu' || e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.id == 'custom-menu') {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n };\n document.addEventListener('click', eventListener[sdk.div_id].click);\n eventListener[sdk.div_id].mouseRightMenuEvent = new _Event_index__WEBPACK_IMPORTED_MODULE_0__[\"default\"](sdk);\n eventListener[sdk.div_id].mouseRightMenuEvent.mouse_right(function (movement, cartesian) {\n if (YJ.Measure.GetMeasureStatus() || sdk.viewer.trackedEntity) {\n return;\n }\n var entity = sdk.viewer.entities.getById('svg-control-points_0');\n if (entity && entity.show) {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n var entityId = getEntityId(movement);\n var targetId;\n if (Object.prototype.toString.call(entityId) === '[object Object]') {\n targetId = entityId.id;\n entityId = entityId.parentId;\n }\n var addedMenu = '';\n var that = sdk.entityMap.get(entityId);\n if (!that && entityId) {\n var array = entityId.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n that = sdk.entityMap.get(entityId);\n }\n if (that && that.picking) {\n addedMenu = \"\\n \\n \\n \";\n }\n var position = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n menuElm = document.createElement('div');\n menuElm.id = 'custom-menu';\n menuElm.style.position = 'absolute';\n menuElm.style.width = '110px';\n menuElm.style.backgroundColor = '#00000085';\n menuElm.style.color = '#ffffff';\n menuElm.style.padding = '6px 0';\n menuElm.style.boxShadow = '4px 4px 4px 0px rgba(0, 0, 0, 0.8)';\n menuElm.innerHTML = \"\\n \\n \\n \".concat(addedMenu, \"\\n \");\n _element.appendChild(menuElm);\n var left = movement.position.x;\n var top = movement.position.y;\n if (movement.position.x + menuElm.offsetWidth > _element.offsetWidth) {\n left = movement.position.x - menuElm.offsetWidth;\n }\n if (movement.position.y + menuElm.offsetHeight > _element.offsetHeight) {\n top = movement.position.y - menuElm.offsetHeight;\n }\n menuElm.style.left = left + 'px';\n menuElm.style.top = top + 'px';\n menuElm.addEventListener('contextmenu', function (event) {\n event.preventDefault();\n });\n var liElms = menuElm.getElementsByTagName('li');\n var object = {};\n var _loop = function _loop(i) {\n liElms[i].addEventListener('mouseover', function () {\n liElms[i].style.backgroundColor = '#5e5e5e';\n });\n liElms[i].addEventListener('mouseout', function () {\n liElms[i].style.backgroundColor = 'unset';\n });\n liElms[i].addEventListener('click', function () {\n var key = '';\n switch (liElms[i].innerHTML) {\n case '绕鼠标点旋转':\n object.position = position;\n key = 'rotateAround';\n // this.rotateAround(position)\n break;\n case '属性':\n if (targetId) {\n object.id = targetId;\n object.parentId = that.options.id;\n } else {\n object.id = that.options.id;\n }\n key = 'attribute';\n // that.edit(true)\n // this.attribute(entityId)\n break;\n case '文本框':\n object.position = position;\n key = 'textBox';\n break;\n }\n eventListener[sdk.div_id].callBack(key, object);\n _element.removeChild(menuElm);\n });\n };\n for (var i = 0; i < liElms.length; i++) {\n _loop(i);\n }\n });\n }\n function getEntityId(movement) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n return {\n parentId: pick.id.parentId,\n id: pick.id.id\n };\n } else if (pick.id.id) {\n return pick.id.id;\n } else if (typeof pick.id == 'string') {\n return pick.id;\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n return pick.primitive.id;\n }\n }\n }\n }\n}\nfunction getMouseRightMenuStatus(sdk) {\n if (!sdk || !sdk.div_id || !eventListener[sdk.div_id]) {\n return;\n } else {\n return eventListener[sdk.div_id].status;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL21vdXNlUmlnaHRNZW51L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9tb3VzZVJpZ2h0TWVudS9pbmRleC5qcz9hODFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIOWPs+mUrueCueWHu+iPnOWNlSAqL1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJ1xyXG5pbXBvcnQgeyByb3RhdGVBcm91bmQgfSBmcm9tICcuLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBnZXRTZGsgfSBmcm9tICcuLi9TcGxpdFNjcmVlbidcclxuXHJcbmxldCBldmVudExpc3RlbmVyID0ge31cclxuXHJcbmZ1bmN0aW9uIE1vdXNlUmlnaHRNZW51KHNkaywgc3RhdHVzLCBjYWxsQmFjaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsuZGl2X2lkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHNka0QgPSBnZXRTZGsoKS5zZGtEXHJcbiAgbGV0IF9lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2RrLmRpdl9pZCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlcicpWzBdXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBpZiAoIWV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0pIHtcclxuICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0gPSB7fVxyXG4gIH1cclxuICBpZiAoZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZWRvd24pIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICdtb3VzZWRvd24nLFxyXG4gICAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLm1vdXNlZG93blxyXG4gICAgKVxyXG4gIH1cclxuICBpZiAoZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5jbGljaykge1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLmNsaWNrKVxyXG4gIH1cclxuICBpZiAoIWV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2spIHtcclxuICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2sgPSBjYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgaWYgKHNkayAhPT0gc2RrRCkge1xyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50ICYmXHJcbiAgICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0ubW91c2VSaWdodE1lbnVFdmVudC5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICBpZiAobWVudUVsbSkge1xyXG4gICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICB9XHJcbiAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5zdGF0dXMgPSBzdGF0dXNcclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLm1vdXNlZG93biA9IGUgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKGUudGFyZ2V0LnBhcmVudE5vZGUgJiYgZS50YXJnZXQucGFyZW50Tm9kZS5pZCA9PSAnY3VzdG9tLW1lbnUnKSB8fFxyXG4gICAgICAgIChlLnRhcmdldC5wYXJlbnROb2RlICYmXHJcbiAgICAgICAgICBlLnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUgJiZcclxuICAgICAgICAgIGUudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5pZCA9PSAnY3VzdG9tLW1lbnUnKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgbWVudUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXN0b20tbWVudScpXHJcbiAgICAgIGlmIChtZW51RWxtKSB7XHJcbiAgICAgICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZWRvd24pXHJcbiAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLmNsaWNrID0gZSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAoZS50YXJnZXQucGFyZW50Tm9kZSAmJiBlLnRhcmdldC5wYXJlbnROb2RlLmlkID09ICdjdXN0b20tbWVudScpIHx8XHJcbiAgICAgICAgKGUudGFyZ2V0LnBhcmVudE5vZGUgJiZcclxuICAgICAgICAgIGUudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZSAmJlxyXG4gICAgICAgICAgZS50YXJnZXQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkID09ICdjdXN0b20tbWVudScpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICAgICAgaWYgKG1lbnVFbG0pIHtcclxuICAgICAgICBfZWxlbWVudC5yZW1vdmVDaGlsZChtZW51RWxtKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2xpY2spXHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50Lm1vdXNlX3JpZ2h0KFxyXG4gICAgICAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZW50aXR5ID0gc2RrLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKCdzdmctY29udHJvbC1wb2ludHNfMCcpXHJcbiAgICAgICAgaWYgKGVudGl0eSAmJiBlbnRpdHkuc2hvdykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICAgICAgICBpZiAobWVudUVsbSkge1xyXG4gICAgICAgICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGVudGl0eUlkID0gZ2V0RW50aXR5SWQobW92ZW1lbnQpXHJcbiAgICAgICAgbGV0IHRhcmdldElkXHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbnRpdHlJZCkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XHJcbiAgICAgICAgICB0YXJnZXRJZCA9IGVudGl0eUlkLmlkXHJcbiAgICAgICAgICBlbnRpdHlJZCA9IGVudGl0eUlkLnBhcmVudElkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhZGRlZE1lbnUgPSAnJ1xyXG4gICAgICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgaWYgKCF0aGF0ICYmIGVudGl0eUlkKSB7XHJcbiAgICAgICAgICBsZXQgYXJyYXkgPSBlbnRpdHlJZC5zcGxpdCgnLScpXHJcbiAgICAgICAgICBhcnJheS5zcGxpY2UoYXJyYXkubGVuZ3RoIC0gMSwgMSlcclxuICAgICAgICAgIGVudGl0eUlkID0gYXJyYXkuam9pbignLScpXHJcbiAgICAgICAgICB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhhdCAmJiB0aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgIGFkZGVkTWVudSA9IGBcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO2JvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO21hcmdpbjogNXB4O1wiPjwvc3Bhbj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJhZGRlZFwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwO21hcmdpbjogMDtmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJwYWRkaW5nOiAzcHggMTBweDtjdXJzb3I6IHBvaW50ZXI7XCI+5bGe5oCnPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIGBcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgIG1lbnVFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgIG1lbnVFbG0uaWQgPSAnY3VzdG9tLW1lbnUnXHJcbiAgICAgICAgbWVudUVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgICAgICBtZW51RWxtLnN0eWxlLndpZHRoID0gJzExMHB4J1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMwMDAwMDA4NSdcclxuICAgICAgICBtZW51RWxtLnN0eWxlLmNvbG9yID0gJyNmZmZmZmYnXHJcbiAgICAgICAgbWVudUVsbS5zdHlsZS5wYWRkaW5nID0gJzZweCAwJ1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUuYm94U2hhZG93ID0gJzRweCA0cHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuOCknXHJcbiAgICAgICAgbWVudUVsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgPHVsIGNsYXNzPVwiYmFzZVwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwO21hcmdpbjogMDtmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJwYWRkaW5nOiAzcHggMTBweDtjdXJzb3I6IHBvaW50ZXI7XCI+57uV6byg5qCH54K55peL6L2sPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImJhc2VcIiBzdHlsZT1cImxpc3Qtc3R5bGU6IG5vbmU7cGFkZGluZzogMDttYXJnaW46IDA7Zm9udC1zaXplOiAxMnB4O1wiPlxyXG4gICAgICAgICAgPGxpIHN0eWxlPVwicGFkZGluZzogM3B4IDEwcHg7Y3Vyc29yOiBwb2ludGVyO1wiPuaWh+acrOahhjwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICAke2FkZGVkTWVudX1cclxuICAgICAgYFxyXG4gICAgICAgIF9lbGVtZW50LmFwcGVuZENoaWxkKG1lbnVFbG0pXHJcbiAgICAgICAgbGV0IGxlZnQgPSBtb3ZlbWVudC5wb3NpdGlvbi54XHJcbiAgICAgICAgbGV0IHRvcCA9IG1vdmVtZW50LnBvc2l0aW9uLnlcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi54ICsgbWVudUVsbS5vZmZzZXRXaWR0aCA+XHJcbiAgICAgICAgICBfZWxlbWVudC5vZmZzZXRXaWR0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbGVmdCA9IG1vdmVtZW50LnBvc2l0aW9uLnggLSBtZW51RWxtLm9mZnNldFdpZHRoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLnkgKyBtZW51RWxtLm9mZnNldEhlaWdodCA+XHJcbiAgICAgICAgICBfZWxlbWVudC5vZmZzZXRIZWlnaHRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRvcCA9IG1vdmVtZW50LnBvc2l0aW9uLnkgLSBtZW51RWxtLm9mZnNldEhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgICBtZW51RWxtLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4J1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUudG9wID0gdG9wICsgJ3B4J1xyXG5cclxuICAgICAgICBtZW51RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgbGlFbG1zID0gbWVudUVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKVxyXG4gICAgICAgIGxldCBvYmplY3QgPSB7fVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlFbG1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsaUVsbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsaUVsbXNbaV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM1ZTVlNWUnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGlFbG1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsaUVsbXNbaV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3Vuc2V0J1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxpRWxtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGtleSA9ICcnXHJcbiAgICAgICAgICAgIHN3aXRjaCAobGlFbG1zW2ldLmlubmVySFRNTCkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+e7lem8oOagh+eCueaXi+i9rCc6XHJcbiAgICAgICAgICAgICAgICBvYmplY3QucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ3JvdGF0ZUFyb3VuZCdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMucm90YXRlQXJvdW5kKHBvc2l0aW9uKVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICBjYXNlICflsZ7mgKcnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldElkKSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5pZCA9IHRhcmdldElkXHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5wYXJlbnRJZCA9IHRoYXQub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5pZCA9IHRoYXQub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ2F0dHJpYnV0ZSdcclxuICAgICAgICAgICAgICAgIC8vIHRoYXQuZWRpdCh0cnVlKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5hdHRyaWJ1dGUoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+aWh+acrOahhic6XHJcbiAgICAgICAgICAgICAgICBvYmplY3QucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ3RleHRCb3gnXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2soa2V5LCBvYmplY3QpXHJcbiAgICAgICAgICAgIF9lbGVtZW50LnJlbW92ZUNoaWxkKG1lbnVFbG0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gZ2V0RW50aXR5SWQobW92ZW1lbnQpIHtcclxuICAgIGxldCBwaWNrID0gc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKHBpY2spIHtcclxuICAgICAgaWYgKHBpY2suaWQpIHtcclxuICAgICAgICBpZiAocGljay5pZC50eXBlICYmIHBpY2suaWQudHlwZSA9PT0gJ3ZlY3RvcicgJiYgcGljay5pZC5wYXJlbnRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcGFyZW50SWQ6IHBpY2suaWQucGFyZW50SWQsXHJcbiAgICAgICAgICAgIGlkOiBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBpY2suaWQuaWQpIHtcclxuICAgICAgICAgIHJldHVybiBwaWNrLmlkLmlkXHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGljay5pZCA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHBpY2suaWRcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHBpY2sucHJpbWl0aXZlICYmIHBpY2sucHJpbWl0aXZlLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcGljay5wcmltaXRpdmUuaWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE1vdXNlUmlnaHRNZW51U3RhdHVzKHNkaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsuZGl2X2lkIHx8ICFldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5zdGF0dXNcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IE1vdXNlUmlnaHRNZW51LCBnZXRNb3VzZVJpZ2h0TWVudVN0YXR1cyB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFvQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/mouseRightMenu/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureAngle/index.js": -/*!*******************************************!*\ - !*** ./src/Measure/MeasureAngle/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-12-29 10:11\r\n * @description:index\r\n * @update: 2023-12-29 10:11\r\n */\n\nvar MeasureAngle = /*#__PURE__*/function (_Measure) {\n function MeasureAngle(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureAngle);\n _this = _callSuper(this, MeasureAngle, [sdk, {\n text: \"左键单击确定起点位置,右键单击取消夹角测量!\"\n }]);\n _this.cachePositions = [];\n _this.positions = [];\n _this.arcPositions = [];\n _this.line_id = \"\";\n _this.label_id = \"\";\n _this.arc_id = \"\";\n _this.bearing = 0;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureAngle, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureAngle, [{\n key: \"createPolyline\",\n value: function createPolyline() {\n var that = this;\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureAngle, \"end\", this, 3)([]);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n _superPropGet(MeasureAngle, \"destroy\", this, 3)([]);\n var arr = [this.line_id, this.label_id, this.arc_id];\n arr.forEach(function (id) {\n if (id) _this2.remove_entity(id);\n });\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.end();\n this.destroy();\n }\n }, {\n key: \"caculateAngle\",\n value: function caculateAngle() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var p1 = this.cartesian3Towgs84(points[0], this.viewer);\n var p2 = this.cartesian3Towgs84(points[1], this.viewer);\n var p3 = this.cartesian3Towgs84(points[2], this.viewer);\n var point1 = turf.point([p1.lng, p1.lat]);\n var point2 = turf.point([p2.lng, p2.lat]);\n var point3 = turf.point([p3.lng, p3.lat]);\n var options = {\n units: 'kilometers'\n };\n var distance1 = turf.rhumbDistance(point1, point2, options);\n var distance2 = turf.rhumbDistance(point3, point2, options);\n var distance = distance1;\n if (distance1 > distance2) {\n distance = distance2;\n }\n var bearing1 = turf.rhumbBearing(point1, point2);\n var bearing2 = turf.rhumbBearing(point3, point2);\n var bearing = Math.abs((bearing1 - bearing2 + 360) % 360);\n if (bearing > 180) {\n this.bearing = 360 - bearing;\n } else {\n this.bearing = bearing;\n }\n this.bearing = this.bearing.toFixed(2);\n var b1 = bearing1 - 180;\n var b2 = bearing2 - 180;\n var arc = turf.lineArc(point2, distance / 3, b2, b1);\n if (bearing > 180) {\n arc = turf.lineArc(point2, distance / 3, b1, b2);\n }\n var arcPos = [];\n for (var i = 0; i < arc.geometry.coordinates.length; i++) {\n arcPos.push(Cesium.Cartesian3.fromDegrees(arc.geometry.coordinates[i][0], arc.geometry.coordinates[i][1]));\n }\n this.arcPositions = arcPos;\n\n // if (bearing1 > 0 && bearing2 > 0) {\n // this.bearing = Math.abs(bearing1 - bearing2).toFixed(1)\n // } else if (bearing1 < 0 && bearing2 < 0) {\n // this.bearing = Math.abs(bearing1 - bearing2).toFixed(1)\n // } else if (bearing1 > 0 && bearing2 < 0) {\n // this.bearing = Math.abs(360 - Math.abs(bearing2) - bearing1).toFixed(1)\n // } else {\n // this.bearing = Math.abs(360 - Math.abs(bearing1) - bearing2).toFixed(1)\n // }\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureAngle, \"start\", this, 3)([]);\n var leftEvent = function leftEvent(movement, car) {\n if (_this3.ids.length === 0) {\n //需要创建一个线\n _this3.line_id = _this3.createPolyline();\n _this3.tip.set_text('左键单击确定角点位置,右键单击取消夹角测量!');\n }\n _this3.ids.push(_this3.create_point(car));\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n _this3.cachePositions.push(car);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n }\n if (_this3.ids.length === 2) {\n _this3.tip.set_text('左键单击确定终点位置,完成夹角测量!');\n _this3.label_id = Cesium.createGuid();\n _this3.arc_id = Cesium.createGuid();\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n _this3.sampleHeightMostDetailed([p]).then(function (res) {\n var arc = _this3.viewer.entities.add({\n id: _this3.arc_id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return _this3.arcPositions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(_this3.options.color || _this3.defaultColor),\n zIndex: 99999999\n }\n });\n var label = _this3.viewer.entities.add({\n id: _this3.label_id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, (res[0].height || 0) + 0.1),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return \"夹角:\" + _this3.bearing + \"°\";\n }, false),\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }\n });\n });\n }\n if (_this3.ids.length === 3) {\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1], _this3.positions[2]]);\n //需要停止绘制\n _this3.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n }\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1], _this3.positions[2]]);\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.cancel();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.cancel();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureAngle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlQW5nbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlQW5nbGUvaW5kZXguanM/NGFlZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTItMjkgMTA6MTFcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMi0yOSAxMDoxMVxyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlQW5nbGUgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICBjb25zdHJ1Y3RvcihzZGspIHtcclxuICAgIHN1cGVyKHNkaywgeyB0ZXh0OiBcIuW3pumUruWNleWHu+ehruWumui1t+eCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOWkueinkua1i+mHj++8gVwiIH0pO1xyXG4gICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmFyY1Bvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmxhYmVsX2lkID0gXCJcIlxyXG4gICAgdGhpcy5hcmNfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmJlYXJpbmcgPSAwXHJcbiAgfVxyXG5cclxuICBjcmVhdGVQb2x5bGluZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvciB8fCB0aGF0LmRlZmF1bHRDb2xvciksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgc3VwZXIuZGVzdHJveSgpO1xyXG4gICAgbGV0IGFyciA9IFt0aGlzLmxpbmVfaWQsIHRoaXMubGFiZWxfaWQsIHRoaXMuYXJjX2lkXVxyXG4gICAgYXJyLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBpZiAoaWQpXHJcbiAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuZW5kKClcclxuICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgfVxyXG5cclxuICBjYWN1bGF0ZUFuZ2xlKHBvaW50cyA9IFtdKSB7XHJcbiAgICBsZXQgcDEgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1swXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcDIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1sxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcDMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1syXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcG9pbnQxID0gdHVyZi5wb2ludChbcDEubG5nLCBwMS5sYXRdKTtcclxuICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFtwMi5sbmcsIHAyLmxhdF0pO1xyXG4gICAgbGV0IHBvaW50MyA9IHR1cmYucG9pbnQoW3AzLmxuZywgcDMubGF0XSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9O1xyXG4gICAgbGV0IGRpc3RhbmNlMSA9IHR1cmYucmh1bWJEaXN0YW5jZShwb2ludDEsIHBvaW50Miwgb3B0aW9ucyk7XHJcbiAgICBsZXQgZGlzdGFuY2UyID0gdHVyZi5yaHVtYkRpc3RhbmNlKHBvaW50MywgcG9pbnQyLCBvcHRpb25zKTtcclxuICAgIGxldCBkaXN0YW5jZSA9IGRpc3RhbmNlMVxyXG4gICAgaWYgKGRpc3RhbmNlMSA+IGRpc3RhbmNlMikge1xyXG4gICAgICBkaXN0YW5jZSA9IGRpc3RhbmNlMlxyXG4gICAgfVxyXG5cclxuICAgIGxldCBiZWFyaW5nMSA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50MSwgcG9pbnQyKVxyXG4gICAgbGV0IGJlYXJpbmcyID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQzLCBwb2ludDIpXHJcblxyXG4gICAgbGV0IGJlYXJpbmcgPSBNYXRoLmFicygoKGJlYXJpbmcxIC0gYmVhcmluZzIpICsgMzYwKSAlIDM2MClcclxuICAgIGlmIChiZWFyaW5nID4gMTgwKSB7XHJcbiAgICAgIHRoaXMuYmVhcmluZyA9IDM2MCAtIGJlYXJpbmdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVhcmluZyA9IGJlYXJpbmdcclxuICAgIH1cclxuICAgIHRoaXMuYmVhcmluZyA9IHRoaXMuYmVhcmluZy50b0ZpeGVkKDIpXHJcblxyXG4gICAgbGV0IGIxID0gKGJlYXJpbmcxIC0gMTgwKVxyXG4gICAgbGV0IGIyID0gKGJlYXJpbmcyIC0gMTgwKVxyXG4gICAgbGV0IGFyYyA9IHR1cmYubGluZUFyYyhwb2ludDIsIChkaXN0YW5jZSAvIDMpLCBiMiwgYjEpO1xyXG4gICAgaWYgKGJlYXJpbmcgPiAxODApIHtcclxuICAgICAgYXJjID0gdHVyZi5saW5lQXJjKHBvaW50MiwgKGRpc3RhbmNlIC8gMyksIGIxLCBiMik7XHJcbiAgICB9XHJcbiAgICBsZXQgYXJjUG9zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJjLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGFyY1Bvcy5wdXNoKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGFyYy5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVswXSwgYXJjLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldWzFdKSlcclxuICAgIH1cclxuICAgIHRoaXMuYXJjUG9zaXRpb25zID0gYXJjUG9zXHJcblxyXG4gICAgLy8gaWYgKGJlYXJpbmcxID4gMCAmJiBiZWFyaW5nMiA+IDApIHtcclxuICAgIC8vICAgdGhpcy5iZWFyaW5nID0gTWF0aC5hYnMoYmVhcmluZzEgLSBiZWFyaW5nMikudG9GaXhlZCgxKVxyXG4gICAgLy8gfSBlbHNlIGlmIChiZWFyaW5nMSA8IDAgJiYgYmVhcmluZzIgPCAwKSB7XHJcbiAgICAvLyAgIHRoaXMuYmVhcmluZyA9IE1hdGguYWJzKGJlYXJpbmcxIC0gYmVhcmluZzIpLnRvRml4ZWQoMSlcclxuICAgIC8vIH0gZWxzZSBpZiAoYmVhcmluZzEgPiAwICYmIGJlYXJpbmcyIDwgMCkge1xyXG4gICAgLy8gICB0aGlzLmJlYXJpbmcgPSBNYXRoLmFicygzNjAgLSBNYXRoLmFicyhiZWFyaW5nMikgLSBiZWFyaW5nMSkudG9GaXhlZCgxKVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5iZWFyaW5nID0gTWF0aC5hYnMoMzYwIC0gTWF0aC5hYnMoYmVhcmluZzEpIC0gYmVhcmluZzIpLnRvRml4ZWQoMSlcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG5cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKTtcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIC8v6ZyA6KaB5Yib5bu65LiA5Liq57q/XHJcbiAgICAgICAgICB0aGlzLmxpbmVfaWQgPSB0aGlzLmNyZWF0ZVBvbHlsaW5lKClcclxuICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprop5LngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlpLnop5LmtYvph4/vvIEnKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXIpKVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQucG9zaXRpb24ueCwgbW92ZW1lbnQucG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlrozmiJDlpLnop5LmtYvph4/vvIEnKVxyXG4gICAgICAgICAgdGhpcy5sYWJlbF9pZCA9IENlc2l1bS5jcmVhdGVHdWlkKClcclxuICAgICAgICAgIHRoaXMuYXJjX2lkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcF0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYXJjID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICBpZDogdGhpcy5hcmNfaWQsXHJcbiAgICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJjUG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yIHx8IHRoaXMuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubGFiZWxfaWQsXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgKHJlc1swXS5oZWlnaHQgfHwgMCkgKyAwLjEpLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCLlpLnop5LvvJpcIiArIHRoaXMuYmVhcmluZyArIFwiwrBcIlxyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2YxZTYwNScpLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAgICAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgICAgICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMykge1xyXG4gICAgICAgICAgdGhpcy5jYWN1bGF0ZUFuZ2xlKFt0aGlzLnBvc2l0aW9uc1swXSwgdGhpcy5wb3NpdGlvbnNbMV0sIHRoaXMucG9zaXRpb25zWzJdXSlcclxuICAgICAgICAgIC8v6ZyA6KaB5YGc5q2i57uY5Yi2XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIC8v6ZyA6KaB5byA5aeL6K6h566X5aS56KeSXHJcbiAgICAgICAgICB0aGlzLmNhY3VsYXRlQW5nbGUoW3RoaXMucG9zaXRpb25zWzBdLCB0aGlzLnBvc2l0aW9uc1sxXSwgdGhpcy5wb3NpdGlvbnNbMl1dKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVBbmdsZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureAngle/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureAzimuth/index.js": -/*!*********************************************!*\ - !*** ./src/Measure/MeasureAzimuth/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\nvar MeasureAzimuth = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 方位角测量\r\n * */\n function MeasureAzimuth(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureAzimuth);\n _this = _callSuper(this, MeasureAzimuth, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消方位角测量!\"\n }]);\n _this.cachePositions = [];\n _this.positions = [];\n _this.arcPositions = [];\n _this.line_id = \"\";\n _this.label_id = \"\";\n _this.arc_id = \"\";\n _this.bearing = 0;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureAzimuth, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureAzimuth, [{\n key: \"createPolyline\",\n value: function createPolyline() {\n var that = this;\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureAzimuth, \"end\", this, 3)([]);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n _superPropGet(MeasureAzimuth, \"destroy\", this, 3)([]);\n var arr = [this.line_id, this.label_id, this.arc_id];\n arr.forEach(function (id) {\n if (id) _this2.remove_entity(id);\n });\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.end();\n this.destroy();\n }\n }, {\n key: \"caculateAngle\",\n value: function caculateAngle() {\n var line1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var line2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var c = this.cartesian3Towgs84(line2[1], this.viewer);\n var p2 = this.cartesian3Towgs84(line2[0], this.viewer);\n var center = turf.point([c.lng, c.lat]);\n var point2 = turf.point([p2.lng, p2.lat]);\n var bearing = this.rhumbBearing(p2, c);\n this.bearing = (180 + bearing).toFixed(2);\n var distance = turf.rhumbDistance(center, point2, {\n units: 'kilometers'\n });\n var arc = turf.lineArc(center, distance / 3, 0, this.bearing);\n var arcPos = [];\n for (var i = 0; i < arc.geometry.coordinates.length; i++) {\n arcPos.push(Cesium.Cartesian3.fromDegrees(arc.geometry.coordinates[i][0], arc.geometry.coordinates[i][1]));\n }\n this.arcPositions = arcPos;\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureAzimuth, \"start\", this, 3)([]);\n var leftEvent = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(movement, car) {\n var _Cesium$Cartesian, p, pc, from, to, options, distance, bearing, destination, _p, res, arc, label;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_this3.ids.length === 0) {\n //需要创建一个线\n _this3.line_id = _this3.createPolyline();\n }\n _this3.tip.set_text('左键单击确定控制点位置,完成方位角测量!');\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n p = _this3.cartesian3Towgs84(car, _this3.viewer);\n pc = _this3.cartesian3Towgs84(_this3.positions[1], _this3.viewer);\n from = turf.point([pc.lng, pc.lat]);\n to = turf.point([p.lng, p.lat]);\n options = {\n units: 'kilometers'\n };\n distance = turf.rhumbDistance(from, to, options);\n bearing = 0;\n destination = turf.destination(from, distance, bearing, options);\n _this3.positions[0] = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(destination.geometry.coordinates));\n }\n _this3.cachePositions.push(car);\n _this3.cachePositions.push(car);\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1]], [_this3.positions[2], _this3.positions[1]]);\n }\n if (!(_this3.ids.length >= 2)) {\n _context.next = 10;\n break;\n }\n //需要停止绘制\n _this3.end();\n return _context.abrupt(\"return\");\n case 10:\n _this3.ids.push(_this3.create_point(car));\n _this3.ids.push(_this3.create_point(car));\n if (!(_this3.ids.length === 2)) {\n _context.next = 21;\n break;\n }\n _this3.label_id = Cesium.createGuid();\n _this3.arc_id = Cesium.createGuid();\n _p = _this3.cartesian3Towgs84(car, _this3.viewer);\n _context.next = 18;\n return _this3.sampleHeightMostDetailed([_p]);\n case 18:\n res = _context.sent;\n arc = _this3.viewer.entities.add({\n id: _this3.arc_id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return _this3.arcPositions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(_this3.options.color || _this3.defaultColor),\n zIndex: 99999999\n }\n });\n label = _this3.viewer.entities.add({\n id: _this3.label_id,\n position: Cesium.Cartesian3.fromDegrees(_p.lng, _p.lat, (res[0].height || 0) + 0.1),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return \"方位夹角:\" + _this3.bearing + \"°\";\n }, false),\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }\n }); //需要创建夹角的显示效果\n case 21:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function leftEvent(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n if (_this3.cachePositions.length) {\n var _Cesium$Cartesian2;\n _this3.positions = _this3.cachePositions.concat(car);\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var pc = _this3.cartesian3Towgs84(_this3.positions[1], _this3.viewer);\n var from = turf.point([pc.lng, pc.lat]);\n var to = turf.point([p.lng, p.lat]);\n var options = {\n units: 'kilometers'\n };\n var distance = turf.rhumbDistance(from, to, options);\n var bearing = 0;\n var destination = turf.destination(from, distance, bearing, options);\n _this3.positions[0] = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(destination.geometry.coordinates));\n }\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1]], [_this3.positions[2], _this3.positions[1]]);\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.cancel();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.cancel();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureAzimuth);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlQXppbXV0aC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL01lYXN1cmVBemltdXRoL2luZGV4LmpzPzM0ZDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlQXppbXV0aCBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQGRlc2NyaXB0aW9uIOaWueS9jeinkua1i+mHj1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrKSB7XHJcbiAgICBzdXBlcihzZGssIHsgdGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojmlrnkvY3op5LmtYvph4/vvIFcIiB9KTtcclxuICAgIHRoaXMuY2FjaGVQb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5hcmNQb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5saW5lX2lkID0gXCJcIlxyXG4gICAgdGhpcy5sYWJlbF9pZCA9IFwiXCJcclxuICAgIHRoaXMuYXJjX2lkID0gXCJcIlxyXG4gICAgdGhpcy5iZWFyaW5nID0gMFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9seWxpbmUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgIGlkLFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uc1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiA1LFxyXG4gICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHN1cGVyLmRlc3Ryb3koKTtcclxuICAgIGxldCBhcnIgPSBbdGhpcy5saW5lX2lkLCB0aGlzLmxhYmVsX2lkLCB0aGlzLmFyY19pZF1cclxuICAgIGFyci5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgaWYgKGlkKVxyXG4gICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmVuZCgpXHJcbiAgICB0aGlzLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcbiAgY2FjdWxhdGVBbmdsZShsaW5lMSA9IFtdLCBsaW5lMiA9IFtdKSB7XHJcbiAgICBsZXQgYyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQobGluZTJbMV0sIHRoaXMudmlld2VyKVxyXG4gICAgbGV0IHAyID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChsaW5lMlswXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgY2VudGVyID0gdHVyZi5wb2ludChbYy5sbmcsIGMubGF0XSlcclxuICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFtwMi5sbmcsIHAyLmxhdF0pXHJcbiAgICBsZXQgYmVhcmluZyA9IHRoaXMucmh1bWJCZWFyaW5nKHAyLCBjKVxyXG4gICAgdGhpcy5iZWFyaW5nID0gKDE4MCArIGJlYXJpbmcpLnRvRml4ZWQoMilcclxuICAgIFxyXG4gICAgbGV0IGRpc3RhbmNlID0gdHVyZi5yaHVtYkRpc3RhbmNlKGNlbnRlciwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICBsZXQgYXJjID0gdHVyZi5saW5lQXJjKGNlbnRlciwgKGRpc3RhbmNlLzMpLCAwLCB0aGlzLmJlYXJpbmcpO1xyXG4gICAgbGV0IGFyY1BvcyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyYy5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhcmNQb3MucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhhcmMuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bMF0sIGFyYy5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVsxXSkpXHJcbiAgICB9XHJcbiAgICB0aGlzLmFyY1Bvc2l0aW9ucyA9IGFyY1Bvc1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpO1xyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IGFzeW5jIChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgLy/pnIDopoHliJvlu7rkuIDkuKrnur9cclxuICAgICAgICAgIHRoaXMubGluZV9pZCA9IHRoaXMuY3JlYXRlUG9seWxpbmUoKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5a6M5oiQ5pa55L2N6KeS5rWL6YeP77yBJylcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHBjID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnBvc2l0aW9uc1sxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3BjLmxuZywgcGMubGF0XSk7XHJcbiAgICAgICAgICBsZXQgdG8gPSB0dXJmLnBvaW50KFtwLmxuZywgcC5sYXRdKTtcclxuICAgICAgICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLnJodW1iRGlzdGFuY2UoZnJvbSwgdG8sIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgIGxldCBiZWFyaW5nID0gMDtcclxuICAgICAgICAgIGxldCBkZXN0aW5hdGlvbiA9IHR1cmYuZGVzdGluYXRpb24oZnJvbSwgZGlzdGFuY2UsIGJlYXJpbmcsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnNbMF0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5kZXN0aW5hdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKGNhcilcclxuICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAvL+mcgOimgeW8gOWni+iuoeeul+WkueinklxyXG4gICAgICAgICAgdGhpcy5jYWN1bGF0ZUFuZ2xlKFxyXG4gICAgICAgICAgICBbdGhpcy5wb3NpdGlvbnNbMF0sIHRoaXMucG9zaXRpb25zWzFdXSxcclxuICAgICAgICAgICAgW3RoaXMucG9zaXRpb25zWzJdLCB0aGlzLnBvc2l0aW9uc1sxXV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPj0gMikge1xyXG4gICAgICAgICAgLy/pnIDopoHlgZzmraLnu5jliLZcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXIpKVxyXG4gICAgICAgIHRoaXMuaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FyKSlcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsX2lkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICAgICAgdGhpcy5hcmNfaWQgPSBDZXNpdW0uY3JlYXRlR3VpZCgpXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcF0pXHJcblxyXG4gICAgICAgICAgbGV0IGFyYyA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmFyY19pZCxcclxuICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcmNQb3NpdGlvbnNcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogNSxcclxuICAgICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yIHx8IHRoaXMuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgbGV0IGxhYmVsID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMubGFiZWxfaWQsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIChyZXNbMF0uaGVpZ2h0IHx8IDApICsgMC4xKSxcclxuICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5pa55L2N5aS56KeS77yaXCIgKyB0aGlzLmJlYXJpbmcgKyBcIsKwXCJcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmMWU2MDUnKSxcclxuICAgICAgICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgICAgIC8vIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sXHJcbiAgICAgICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy/pnIDopoHliJvlu7rlpLnop5LnmoTmmL7npLrmlYjmnpxcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcGMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCBmcm9tID0gdHVyZi5wb2ludChbcGMubG5nLCBwYy5sYXRdKTtcclxuICAgICAgICAgIGxldCB0byA9IHR1cmYucG9pbnQoW3AubG5nLCBwLmxhdF0pO1xyXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHVuaXRzOiAna2lsb21ldGVycycgfTtcclxuICAgICAgICAgIGxldCBkaXN0YW5jZSA9IHR1cmYucmh1bWJEaXN0YW5jZShmcm9tLCB0bywgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgbGV0IGJlYXJpbmcgPSAwO1xyXG4gICAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gdHVyZi5kZXN0aW5hdGlvbihmcm9tLCBkaXN0YW5jZSwgYmVhcmluZywgb3B0aW9ucyk7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmRlc3RpbmF0aW9uLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgLy/pnIDopoHlvIDlp4vorqHnrpflpLnop5JcclxuICAgICAgICAgIHRoaXMuY2FjdWxhdGVBbmdsZShcclxuICAgICAgICAgICAgW3RoaXMucG9zaXRpb25zWzBdLCB0aGlzLnBvc2l0aW9uc1sxXV0sXHJcbiAgICAgICAgICAgIFt0aGlzLnBvc2l0aW9uc1syXSwgdGhpcy5wb3NpdGlvbnNbMV1dKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVBemltdXRoXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUE3RUE7QUFBQTtBQUFBO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureAzimuth/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureDistance/index.js": -/*!**********************************************!*\ - !*** ./src/Measure/MeasureDistance/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\nvar MeasureDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 距离测量\r\n * */\n function MeasureDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureDistance);\n _this = _callSuper(this, MeasureDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"computeDisByTowPoint\",\n value: function () {\n var _computeDisByTowPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, p2) {\n var _this3 = this;\n var d, meters, createLabel, start;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n d = this.computeDistance2([p1, p2]);\n meters = 10;\n createLabel = function createLabel(distance) {\n if (_this3._isDestroy) {\n return;\n }\n var label = _this3.getLabel(\"贴地距离:\" + Number(distance).toFixed(2) + \"米\");\n label.pixelOffset = new Cesium.Cartesian2(0, -32);\n _this3.ids.push(MeasureDistance.create_point(Cesium.Cartesian3.fromDegrees(p2.lng, p2.lat, p2.alt), {\n label: label\n }, _this3));\n };\n start = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(meters) {\n var res, coordinates, arr, _iterator2, _step2, item, index, r, total_length, l;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n res = _this3.chunkLine([p1, p2], meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n arr = [];\n _iterator2 = _createForOfIteratorHelper(coordinates);\n _context2.prev = 5;\n _iterator2.s();\n case 7:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 16;\n break;\n }\n item = _step2.value;\n index = coordinates.indexOf(item);\n _context2.next = 12;\n return _this3.sampleHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index);\n case 12:\n r = _context2.sent;\n arr.push(r);\n case 14:\n _context2.next = 7;\n break;\n case 16:\n _context2.next = 21;\n break;\n case 18:\n _context2.prev = 18;\n _context2.t0 = _context2[\"catch\"](5);\n _iterator2.e(_context2.t0);\n case 21:\n _context2.prev = 21;\n _iterator2.f();\n return _context2.finish(21);\n case 24:\n total_length = 0;\n l = arr.length - 1;\n arr.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, arr[index + 1].position]);\n var d2 = Math.abs(item.position.alt - arr[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n createLabel(total_length);\n case 28:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[5, 18, 21, 24]]);\n }));\n return function start(_x5) {\n return _ref.apply(this, arguments);\n };\n }(); //暂时固定取20个点\n if (!(d > 2)) {\n _context3.next = 10;\n break;\n }\n //大于20m时,固定取20个点\n meters = d / 20;\n _context3.next = 8;\n return start(meters);\n case 8:\n _context3.next = 17;\n break;\n case 10:\n if (!(d < 1)) {\n _context3.next = 14;\n break;\n }\n //不计算\n createLabel(d);\n _context3.next = 17;\n break;\n case 14:\n //小于20m的时候\n meters = 1;\n _context3.next = 17;\n return start(meters);\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function computeDisByTowPoint(_x3, _x4) {\n return _computeDisByTowPoint.apply(this, arguments);\n }\n return computeDisByTowPoint;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(p1, index) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.getClampToHeight(p1, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.sdk.viewer.entities.values));\n case 2:\n height = _context4.sent;\n p1.alt = height;\n return _context4.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function sampleHeight(_x6, _x7) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context5.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context5.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context5.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context5.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function getHeight(_x8, _x9, _x10) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this4 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this4.computeDistance2([item.position, _this4.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this4.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this5 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地距离测量!');\n var leftEvent = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6(movement, car) {\n var cur_point, pre_p, startPoint;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (_this5.ids.length === 0) {\n _this5.polyline_id = MeasureDistance.createPolyline(_this5);\n _this5.start_id = MeasureDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this5.getLabel(\"\")\n }, _this5);\n //创建起点\n }\n _this5.tip.setPosition(car, movement.position.x, movement.position.y);\n _this5.positions = _this5.cachePositions.concat(car);\n if (!(_this5.ids.length !== 0)) {\n _context6.next = 12;\n break;\n }\n cur_point = _this5.cartesian3Towgs84(car, _this5.viewer);\n pre_p = _this5.cartesian3Towgs84(_this5.cachePositions[_this5.cachePositions.length - 1], _this5.viewer);\n _this5.cachePositions.push(car);\n _this5.tip.set_text('左键单击确定控制点位置,右键单击完成贴地距离测量!');\n _context6.next = 10;\n return _this5.computeDisByTowPoint(pre_p, cur_point);\n case 10:\n _context6.next = 16;\n break;\n case 12:\n _this5.cachePositions.push(car);\n _this5.ids.push(MeasureDistance.create_point(car, {}, _this5));\n startPoint = _this5.viewer.entities.getById(_this5.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n case 16:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function leftEvent(_x11, _x12) {\n return _ref2.apply(this, arguments);\n };\n }();\n var rightEvent = function rightEvent(movement, car) {\n if (_this5.cachePositions.length) {\n _this5.positions = _this5.cachePositions;\n _this5.end_id = MeasureDistance.create_point(_this5.cachePositions[_this5.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this5);\n var endPoint = _this5.viewer.entities.getById(_this5.ids[_this5.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this5.cachePositions.length < 2) {\n _this5.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this5.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this5.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this5.positions = _this5.cachePositions.concat(car);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let cur_len = this.computeDistance2([cur_point, pre_p])\n // let text = \"当前投影距离:\" + cur_len + \" 米\"\n // // this.tip.set_text(text)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this5.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this6.remove_entity(id);\n });\n _superPropGet(MeasureDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref3, that) {\n var label = _ref3.label,\n _ref3$image = _ref3.image,\n image = _ref3$image === void 0 ? \"point.png\" : _ref3$image,\n width = _ref3.width,\n height = _ref3.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlRGlzdGFuY2UvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlRGlzdGFuY2UvaW5kZXguanM/OGFlYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMTEgMTA6MzFcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0xMSAxMDozMVxyXG4gKi9cclxuXHJcbmltcG9ydCBNZWFzdXJlIGZyb20gXCIuLi9pbmRleFwiXHJcblxyXG5jbGFzcyBNZWFzdXJlRGlzdGFuY2UgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDot53nprvmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3IgfHwgXCIjMDBmZmZmXCJcclxuICAgIHRoaXMuc3RhcnRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmVuZF9pZCA9IFwiXCJcclxuICAgIHRoaXMucG9seWxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zID0gW11cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsYW1wVG9Hcm91bmRNZWFzdXJlKG1ldGVycywgY2IpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5pZHMuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBwID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZCkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHAsIHRoaXMudmlld2VyKSlcclxuICAgIH0pXHJcbiAgICBsZXQgcmVzID0gdGhpcy5jaHVua0xpbmUocG9zaXRpb25zLCBtZXRlcnMpXHJcbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbXVxyXG4gICAgcmVzLmZvckVhY2goKEZlYXR1cmUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLkZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsID0gY29vcmRpbmF0ZXMubGVuZ3RoXHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmdldEhlaWdodCh7bG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMH0sIGluZGV4LCB0b3RhbCwpXHJcbiAgICAgIGNiKG51bGwsIHIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb21wdXRlRGlzQnlUb3dQb2ludChwMSwgcDIpIHtcclxuICAgIGxldCBkID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtwMSwgcDJdKVxyXG4gICAgbGV0IG1ldGVycyA9IDEwXHJcbiAgICBsZXQgY3JlYXRlTGFiZWwgPSAoZGlzdGFuY2UpID0+IHtcclxuICAgICAgaWYodGhpcy5faXNEZXN0cm95KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxhYmVsID0gdGhpcy5nZXRMYWJlbChcIui0tOWcsOi3neemu++8mlwiICsgTnVtYmVyKGRpc3RhbmNlKS50b0ZpeGVkKDIpICsgXCLnsbNcIilcclxuICAgICAgbGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgMCwgLSgzMilcclxuICAgICAgKVxyXG4gICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocDIubG5nLCBwMi5sYXQsIHAyLmFsdCksIHtsYWJlbDogbGFiZWx9LCB0aGlzKSlcclxuICAgIH1cclxuICAgIGxldCBzdGFydCA9IGFzeW5jIChtZXRlcnMpID0+IHtcclxuICAgICAgbGV0IHJlcyA9IHRoaXMuY2h1bmtMaW5lKFtwMSwgcDJdLCBtZXRlcnMpXHJcbiAgICAgIGxldCBjb29yZGluYXRlcyA9IFtdXHJcbiAgICAgIHJlcy5mb3JFYWNoKChGZWF0dXJlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXMgPSBbLi4uRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc11cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGFyciA9IFtdXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb29yZGluYXRlcykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBsZXQgciA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0KHtsbmc6IGl0ZW1bMF0sIGxhdDogaXRlbVsxXSwgYWx0OiAwfSwgaW5kZXgpXHJcbiAgICAgICAgYXJyLnB1c2gocilcclxuICAgICAgfVxyXG4gICAgICBsZXQgdG90YWxfbGVuZ3RoID0gMFxyXG4gICAgICBsZXQgbCA9IGFyci5sZW5ndGggLSAxXHJcbiAgICAgIGFyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgICAgbGV0IGQxID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtpdGVtLnBvc2l0aW9uLCBhcnJbaW5kZXggKyAxXS5wb3NpdGlvbl0pXHJcbiAgICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIGFycltpbmRleCArIDFdLnBvc2l0aW9uLmFsdClcclxuICAgICAgICAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgY3JlYXRlTGFiZWwodG90YWxfbGVuZ3RoKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+aaguaXtuWbuuWumuWPljIw5Liq54K5XHJcbiAgICBpZiAoZCA+IDIpIHsvL+Wkp+S6jjIwbeaXtu+8jOWbuuWumuWPljIw5Liq54K5XHJcbiAgICAgIG1ldGVycyA9IGQgLyAyMFxyXG4gICAgICBhd2FpdCBzdGFydChtZXRlcnMpXHJcbiAgICB9IGVsc2UgaWYgKGQgPCAxKSB7XHJcbiAgICAgIC8v5LiN6K6h566XXHJcbiAgICAgIGNyZWF0ZUxhYmVsKGQpXHJcbiAgICB9IGVsc2Ugey8v5bCP5LqOMjBt55qE5pe25YCZXHJcbiAgICAgIG1ldGVycyA9IDFcclxuICAgICAgYXdhaXQgc3RhcnQobWV0ZXJzKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBhc3luYyBzYW1wbGVIZWlnaHQocDEsIGluZGV4KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHAxLCBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc10pXHJcbiAgICBwMS5hbHQgPSBoZWlnaHRcclxuICAgIHJldHVybiB7cG9zaXRpb246IHAxLCBpbmRleH1cclxuICB9XHJcblxyXG5cclxuICBhc3luYyBnZXRIZWlnaHQocDEsIGluZGV4LCB0b3RhbCkge1xyXG4gICAgbGV0IHAyID0gYXdhaXQgdGhpcy5zYW1wbGVIZWlnaHRNb3N0RGV0YWlsZWQoW3AxXSlcclxuICAgIHAxLmFsdCA9IHAyWzBdLmhlaWdodFxyXG4gICAgdGhpcy5jbGFtcFBvc2l0aW9ucy5wdXNoKHtwb3NpdGlvbjogcDEsIGluZGV4fSlcclxuICAgIGlmICh0b3RhbCA9PT0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRvdGFsX2xlbmd0aCA9IHRoaXMuc3RhcnRDb21wdXRlKClcclxuICAgICAgcmV0dXJuIHt0b3RhbCwgY3VycmVudDogdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgsIHRvdGFsX2xlbmd0aH1cclxuICAgIH1cclxuICAgIHJldHVybiB7dG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLH1cclxuICB9XHJcblxyXG4gIHN0YXJ0Q29tcHV0ZSgpIHtcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICByZXR1cm4gYS5pbmRleCA8IGIuaW5kZXhcclxuICAgIH0pXHJcbiAgICBsZXQgdG90YWxfbGVuZ3RoID0gMFxyXG4gICAgbGV0IGwgPSB0aGlzLmNsYW1wUG9zaXRpb25zLmxlbmd0aCAtIDFcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ICE9PSBsKSB7XHJcbiAgICAgICAgbGV0IGQxID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtpdGVtLnBvc2l0aW9uLCB0aGlzLmNsYW1wUG9zaXRpb25zW2luZGV4ICsgMV0ucG9zaXRpb25dKVxyXG4gICAgICAgIGxldCBkMiA9IE1hdGguYWJzKGl0ZW0ucG9zaXRpb24uYWx0IC0gdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uLmFsdClcclxuICAgICAgICBsZXQgZDMgPSBNYXRoLnNxcnQoZDEgKiBkMSArIGQyICogZDIpXHJcbiAgICAgICAgdG90YWxfbGVuZ3RoICs9IGQzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gTnVtYmVyKHRvdGFsX2xlbmd0aC50b0ZpeGVkKDIpKVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBjcmVhdGVQb2x5bGluZSh0aGF0KSB7XHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQobmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICBpZCxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgZGFzaExlbmd0aDogMjAsIC8v55+t5YiS57q/6ZW/5bqmXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHtcclxuICAgIGxhYmVsLCBpbWFnZSA9IFwicG9pbnQucG5nXCIsXHJcbiAgICB3aWR0aCxcclxuICAgIGhlaWdodFxyXG4gIH0sIHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBwID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoYXQudmlld2VyKVxyXG4gICAgaWYgKGxhYmVsKSB7XHJcbiAgICAgIGxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIDAsIC0oaGVpZ2h0IHx8IDMyKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nLycgKyBpbWFnZSxcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB3aWR0aCxcclxuICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWwodGV4dCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogdGV4dCB8fCAnJyxcclxuICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFlNjA1JyksXHJcbiAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAvLyBkaXN0YW5jZURpc3BsYXlDb25kaXRpb246IHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLFxyXG4gICAgICBzY2FsZTogMSxcclxuICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byA5aeL5rWL6YePXHJcbiAgICovXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOi0tOWcsOi3neemu+a1i+mHjyEnKVxyXG5cclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSBhc3luYyAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWxpbmVfaWQgPSAoTWVhc3VyZURpc3RhbmNlLmNyZWF0ZVBvbHlsaW5lKHRoaXMpKVxyXG4gICAgICAgICAgdGhpcy5zdGFydF9pZCA9IE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoY2FyLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcInN0YXJ0MS5wbmdcIiwgd2lkdGg6IDMwLCBoZWlnaHQ6IDM4LCBsYWJlbDogdGhpcy5nZXRMYWJlbChcIlwiKVxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIC8v5Yib5bu66LW354K5XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgIGxldCBjdXJfcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcHJlX3AgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOi0tOWcsOi3neemu+a1i+mHjyEnKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jb21wdXRlRGlzQnlUb3dQb2ludChwcmVfcCwgY3VyX3BvaW50KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge30sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHJpZ2h0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zXHJcbiAgICAgICAgICB0aGlzLmVuZF9pZCA9IE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcImVuZDEucG5nXCIsXHJcbiAgICAgICAgICAgIHdpZHRoOiAzMCxcclxuICAgICAgICAgICAgaGVpZ2h0OiAzOCxcclxuICAgICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgICBsZXQgZW5kUG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzW3RoaXMuaWRzLmxlbmd0aC0xXSlcclxuICAgICAgICAgIGlmKGVuZFBvaW50KSB7XHJcbiAgICAgICAgICAgIGVuZFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5kZXN0cm95KClcclxuICAgICAgICAgIFlKLk1lYXN1cmUuTWVhc3VyZXMucG9wKCkvL+W8ueWHuua1i+mHj+WunuS9k1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgIC8vIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIC8vICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBwcmVfcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBjdXJfbGVuID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjdXJfcG9pbnQsIHByZV9wXSlcclxuICAgICAgICAvLyAgIGxldCB0ZXh0ID0gXCLlvZPliY3mipXlvbHot53nprvvvJpcIiArIGN1cl9sZW4gKyBcIiDnsbNcIlxyXG4gICAgICAgIC8vICAgLy8gdGhpcy50aXAuc2V0X3RleHQodGV4dClcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBbdGhpcy5wb2x5bGluZV9pZCwgdGhpcy5lbmRfaWQsIHRoaXMuc3RhcnRfaWQsIC4uLnRoaXMuaWRzXS5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICAgIHN1cGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIC8vIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIC8vIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgLy8gdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgICAvLyB0aGlzLnNldFBpY2tTdGF0dXModGhpcy5waWNrU3RhdHVzLnBpY2spXHJcblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTWVhc3VyZURpc3RhbmNlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUF2REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUExQkE7QUFBQTtBQUFBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQXBMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUhBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBeUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureDistance/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureHeight/index.js": -/*!********************************************!*\ - !*** ./src/Measure/MeasureHeight/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-22 17:15\r\n * @description:index\r\n * @update: 2022-07-22 17:15\r\n */\n\nvar MeasureHeight = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 高度测量\r\n * */\n function MeasureHeight(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureHeight);\n return _callSuper(this, MeasureHeight, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消垂直高度测量!\"\n }]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureHeight, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureHeight, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureHeight, \"start\", this, 3)([]);\n this.positions = [];\n this.position = new Cesium.Cartesian3();\n this.height = 0;\n this.text = \"\";\n this.circleRadius = 0;\n var count = 0;\n this.firstpoint = null;\n var leftEvent = function leftEvent(movement, cartesian) {\n if (_this.firstpoint === null) {\n _this.positions.push(cartesian);\n _this.firstpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.ids.push(MeasureHeight.create_polygon(_this));\n _this.ids.push(MeasureHeight.create_point(_this, cartesian));\n }\n _this.tip.set_text('左键单击确定终点位置,完成垂直高度测量!');\n count++;\n _this.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (count === 2) {\n if (_this.firstpoint) {\n var cur_point = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.positions[1] = Cesium.Cartesian3.fromDegrees(_this.firstpoint.lng, _this.firstpoint.lat, cur_point.alt);\n _this.positions[2] = cartesian;\n _this.position = _this.positions[1];\n _this.circleRadius = _this.computeDistance2([_this.firstpoint, cur_point]);\n _this.height = Number((cur_point.alt - _this.firstpoint.alt).toFixed(2));\n _this.text = \"相对高度:\" + _this.height + \" 米\";\n // this.tip.set_text(\"左键完成,右键取消;半径:\" + this.circleRadius + \" 米\")\n }\n _this.ids.push(MeasureHeight.create_point(_this, cartesian, {\n label: {\n text: \"半径:\" + _this.circleRadius + \" 米\"\n }\n }));\n _this.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, cartesian) {\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (_this.firstpoint) {\n var cur_point = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.positions[1] = Cesium.Cartesian3.fromDegrees(_this.firstpoint.lng, _this.firstpoint.lat, cur_point.alt);\n _this.positions[2] = cartesian;\n _this.position = _this.positions[1];\n _this.circleRadius = _this.computeDistance2([_this.firstpoint, cur_point]);\n _this.height = Number((cur_point.alt - _this.firstpoint.alt).toFixed(2));\n _this.text = \"相对高度:\" + _this.height + \" 米\";\n // this.tip.set_text(\"左键完成,右键取消;半径:\" + this.circleRadius + \" 米\")\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this.end();\n _this.destroy();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this.end();\n _this.destroy();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureHeight, \"end\", this, 3)([]);\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n _superPropGet(MeasureHeight, \"destroy\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var a = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n },\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n scale: 1,\n // fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -15),\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions;\n }, false),\n width: 2,\n material: Cesium.Color.YELLOW,\n zIndex: 99999999\n },\n ellipse: {\n height: new Cesium.CallbackProperty(function () {\n return that.height + that.firstpoint.alt;\n }, false),\n semiMinorAxis: new Cesium.CallbackProperty(function (e) {\n return that.circleRadius;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function (e) {\n return that.circleRadius;\n }, false),\n material: new Cesium.Color.fromCssColorString(that.defaultColor)\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(that, cartesian) {\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n var params = {\n id: id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n };\n if (option.label) {\n params.label = {\n text: option.label.text,\n scale: 1,\n // fillColor: Cesium.Color.fromCssColorString(\"#06eee5\"),\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -15)\n };\n }\n that.viewer.entities.add(new Cesium.Entity(params));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureHeight);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlSGVpZ2h0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZUhlaWdodC9pbmRleC5qcz82YjJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0yMiAxNzoxNVxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTIyIDE3OjE1XHJcbiAqL1xyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVIZWlnaHQgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDpq5jluqbmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgc3VwZXIoc2RrLCB7dGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlnoLnm7Tpq5jluqbmtYvph4/vvIFcIn0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBhID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcblxyXG4gICAgICB9LFxyXG4gICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvblxyXG4gICAgICB9LCBmYWxzZSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnRleHRcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgLy8gZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gICAgICAgIGZvbnQ6ICdub3JtYWwgMjBweCBNaWNyb1NvZnQgWWFIZWknLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTE1KSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnM7XHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfSxcclxuICAgICAgZWxsaXBzZToge1xyXG4gICAgICAgIGhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LmhlaWdodCArIHRoYXQuZmlyc3Rwb2ludC5hbHQ7XHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHNlbWlNaW5vckF4aXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LmNpcmNsZVJhZGl1cztcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2VtaU1ham9yQXhpczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGUgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQuY2lyY2xlUmFkaXVzO1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5kZWZhdWx0Q29sb3IpXHJcblxyXG4gICAgICB9LFxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9pbnQodGhhdCwgY2FydGVzaWFuLCBvcHRpb24gPSB7fSkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IHAgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC52aWV3ZXIpXHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogaWQsXHJcbiAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIHAuYWx0KSxcclxuICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbi5sYWJlbCkge1xyXG4gICAgICBwYXJhbXMubGFiZWwgPSB7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmxhYmVsLnRleHQsXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgLy8gZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKFwiIzA2ZWVlNVwiKSxcclxuICAgICAgICBmb250OiAnbm9ybWFsIDIwcHggTWljcm9Tb2Z0IFlhSGVpJyxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC0xNSksXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkocGFyYW1zKVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICB0aGlzLmhlaWdodCA9IDBcclxuICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IDBcclxuICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgdGhpcy5maXJzdHBvaW50ID0gbnVsbFxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB0aGlzLmZpcnN0cG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVIZWlnaHQuY3JlYXRlX3BvbHlnb24odGhpcykpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVIZWlnaHQuY3JlYXRlX3BvaW50KHRoaXMsIGNhcnRlc2lhbikpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlrozmiJDlnoLnm7Tpq5jluqbmtYvph48hJylcclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FydGVzaWFuLCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG4gICAgICAgIGlmIChjb3VudCA9PT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCkge1xyXG4gICAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1sxXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuZmlyc3Rwb2ludC5sbmcsIHRoaXMuZmlyc3Rwb2ludC5sYXQsIGN1cl9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zWzJdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICAgICAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbdGhpcy5maXJzdHBvaW50LCBjdXJfcG9pbnRdKVxyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcigoY3VyX3BvaW50LmFsdCAtIHRoaXMuZmlyc3Rwb2ludC5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IFwi55u45a+56auY5bqm77yaXCIgKyB0aGlzLmhlaWdodCArIFwiIOexs1wiXHJcbiAgICAgICAgICAgIC8vIHRoaXMudGlwLnNldF90ZXh0KFwi5bem6ZSu5a6M5oiQ77yM5Y+z6ZSu5Y+W5raI77yb5Y2K5b6E77yaXCIgKyB0aGlzLmNpcmNsZVJhZGl1cyArIFwiIOexs1wiKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlSGVpZ2h0LmNyZWF0ZV9wb2ludCh0aGlzLCBjYXJ0ZXNpYW4sIHtsYWJlbDoge3RleHQ6IFwi5Y2K5b6E77yaXCIgKyB0aGlzLmNpcmNsZVJhZGl1cyArIFwiIOexs1wifX0pKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXJ0ZXNpYW4sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCkge1xyXG4gICAgICAgICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5maXJzdHBvaW50LmxuZywgdGhpcy5maXJzdHBvaW50LmxhdCwgY3VyX3BvaW50LmFsdClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zWzJdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbMV1cclxuICAgICAgICAgIHRoaXMuY2lyY2xlUmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFt0aGlzLmZpcnN0cG9pbnQsIGN1cl9wb2ludF0pXHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcigoY3VyX3BvaW50LmFsdCAtIHRoaXMuZmlyc3Rwb2ludC5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBcIuebuOWvuemrmOW6pu+8mlwiICsgdGhpcy5oZWlnaHQgKyBcIiDnsbNcIlxyXG4gICAgICAgICAgLy8gdGhpcy50aXAuc2V0X3RleHQoXCLlt6bplK7lrozmiJDvvIzlj7PplK7lj5bmtojvvJvljYrlvoTvvJpcIiArIHRoaXMuY2lyY2xlUmFkaXVzICsgXCIg57GzXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTmtYvph49cclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgc3VwZXIuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlSGVpZ2h0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvRkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFrR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureHeight/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureLocation/index.js": -/*!**********************************************!*\ - !*** ./src/Measure/MeasureLocation/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-22 16:13\r\n * @description:index\r\n * @update: 2022-07-22 16:13\r\n */\n\n\n\nvar MeasureLocation = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 坐标测量\r\n * */\n function MeasureLocation(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MeasureLocation);\n _this = _callSuper(this, MeasureLocation, [sdk, {\n text: \"\"\n }]);\n _this.defaultColor = \"#f11515\";\n _this.locationID = _this.randomString();\n _this.position = new Cesium.Cartesian3();\n _this.text = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(MeasureLocation, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MeasureLocation, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureLocation, \"start\", this, 3)([]);\n this.cache_id = MeasureLocation.create_point(this);\n MeasureLocation.createLocation(this);\n var leftEvent = function leftEvent(movement, cartesian) {\n _this2.position = cartesian;\n var entity = _this2.viewer.entities.getById(_this2.locationID);\n if (entity) {\n entity.show = true;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"getCoordinateSystem\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n _this2.text = \"\\u7ECF\\u5EA6\\uFF1A\".concat(Number(p.lng.toFixed(8)), \"\\n\\u7EAC\\u5EA6\\uFF1A\").concat(Number(p.lat.toFixed(8)), \"\\n\\u6D77\\u62D4\\uFF1A\").concat(Number(p.alt.toFixed(2)));\n } else {\n var result = _this2.convert([{\n x: p.lng,\n y: p.lat,\n z: p.alt\n }], 'EPSG:4326', coordinateSystem);\n _this2.text = \"x\\uFF1A\".concat(Number(result.points[0].x.toFixed(8)), \"\\ny\\uFF1A\").concat(Number(result.points[0].y.toFixed(8)), \"\\nz\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)));\n }\n _this2.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this2.destroy();\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n var entity = _this2.viewer.entities.getById(_this2.locationID);\n if (entity) {\n entity.show = true;\n }\n _this2.position = cartesian;\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"getCoordinateSystem\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n _this2.text = \"\\u7ECF\\u5EA6\\uFF1A\".concat(Number(p.lng.toFixed(8)), \"\\n\\u7EAC\\u5EA6\\uFF1A\").concat(Number(p.lat.toFixed(8)), \"\\n\\u6D77\\u62D4\\uFF1A\").concat(Number(p.alt.toFixed(2)));\n } else {\n var result = _this2.convert([{\n x: p.lng,\n y: p.lat,\n z: p.alt\n }], 'EPSG:4326', coordinateSystem);\n _this2.text = \"x\\uFF1A\".concat(Number(result.points[0].x.toFixed(8)), \"\\ny\\uFF1A\").concat(Number(result.points[0].y.toFixed(8)), \"\\nz\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)));\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this2.destroy();\n _this2.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.remove_entity(this.locationID);\n this.remove_entity(this.cache_id);\n _superPropGet(MeasureLocation, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureLocation, \"end\", this, 3)([]);\n }\n }], [{\n key: \"createLocation\",\n value: function createLocation(that) {\n that.viewer.entities.add(new Cesium.Entity({\n id: that.locationID,\n show: false,\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '22px Microsoft YaHei',\n fillColor: new Cesium.Color.fromCssColorString(that.defaultColor),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n // scale: this.options.label.scale,\n horizontalOrigin: Cesium.HorizontalOrigin.LEFT,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n pixelOffset: new Cesium.Cartesian2(-100, -50)\n // disableDepthTestDistance: this.disableDepthTestDistance,\n },\n billboard: {\n image: that.getSourceRootPath() + \"/img/location.png\",\n color: Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.99)\"),\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance: new Cesium.NearFarScalar(\n // 2000,\n // 1,\n // 1000000,\n // 0\n // ),\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n width: 48,\n height: 48\n }\n }));\n }\n }, {\n key: \"create_point\",\n value: function create_point(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n billboard: _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({\n image: that.getSourceRootPath() + '/img/point.png',\n color: Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.99)\"),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }, \"color\", Cesium.Color.WHITE.withAlpha(0.99))\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureLocation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlTG9jYXRpb24vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlTG9jYXRpb24vaW5kZXguanM/Nzk3MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMjIgMTY6MTNcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0yMiAxNjoxM1xyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IFByb2ogfSBmcm9tIFwiLi4vLi4vVG9vbHMvcHJvalwiO1xyXG5pbXBvcnQgeyBnZXRDb29yZGluYXRlU3lzdGVtIH0gZnJvbSBcIi4uLy4uL0dsb2JhbC9nbG9iYWxcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVMb2NhdGlvbiBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5Z2Q5qCH5rWL6YePXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGspIHtcclxuICAgIHN1cGVyKHNkaywgeyB0ZXh0OiBcIlwiIH0pO1xyXG4gICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBcIiNmMTE1MTVcIlxyXG4gICAgdGhpcy5sb2NhdGlvbklEID0gdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICB0aGlzLnRleHQgPSBcIlwiXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlTG9jYXRpb24odGhhdCkge1xyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQ6IHRoYXQubG9jYXRpb25JRCxcclxuICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uXHJcbiAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgbGFiZWw6IHtcclxuICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQudGV4dFxyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAvL+agh+azqOaWh+Wtl+aPj+i/sFxyXG4gICAgICAgIGZvbnQ6ICcyMnB4IE1pY3Jvc29mdCBZYUhlaScsXHJcblxyXG4gICAgICAgIGZpbGxDb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIC8v5qCH5rOo55qE6YGu5oyh6Led56a76K6+572u5Li6MTAw5YiZ6KeG6KeS5LiO5qCH5rOo55qE6Led56a75aSn5LqOMTAw57Gz5pe25Lya5pyJ6YGu5oyhXHJcbiAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgICAvLyBzY2FsZTogdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlLFxyXG4gICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkxFRlQsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICAtMTAwLFxyXG4gICAgICAgICAgLTUwXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgICB9LFxyXG4gICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgXCIvaW1nL2xvY2F0aW9uLnBuZ1wiLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDAuOTkpYCksXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgLy8gc2NhbGVCeURpc3RhbmNlOiBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgLy8gICAyMDAwLFxyXG4gICAgICAgIC8vICAgMSxcclxuICAgICAgICAvLyAgIDEwMDAwMDAsXHJcbiAgICAgICAgLy8gICAwXHJcbiAgICAgICAgLy8gKSxcclxuICAgICAgICBzY2FsZTogMSxcclxuICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgd2lkdGg6IDQ4LFxyXG4gICAgICAgIGhlaWdodDogNDhcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvaW50KHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjk5KWApLFxyXG4gICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLmNhY2hlX2lkID0gTWVhc3VyZUxvY2F0aW9uLmNyZWF0ZV9wb2ludCh0aGlzKVxyXG4gICAgICBNZWFzdXJlTG9jYXRpb24uY3JlYXRlTG9jYXRpb24odGhpcylcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBjYXJ0ZXNpYW5cclxuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmxvY2F0aW9uSUQpXHJcbiAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGxldCBjb29yZGluYXRlU3lzdGVtID0gZ2V0Q29vcmRpbmF0ZVN5c3RlbSgpXHJcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBg57uP5bqm77yaJHtOdW1iZXIocC5sbmcudG9GaXhlZCg4KSl9XFxu57qs5bqm77yaJHtOdW1iZXIocC5sYXQudG9GaXhlZCg4KSl9XFxu5rW35ouU77yaJHtOdW1iZXIocC5hbHQudG9GaXhlZCgyKSl9YFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbnZlcnQoW3sgeDogcC5sbmcsIHk6IHAubGF0LCB6OiBwLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBgeO+8miR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0ueC50b0ZpeGVkKDgpKX1cXG5577yaJHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS55LnRvRml4ZWQoOCkpfVxcbnrvvJoke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnoudG9GaXhlZCgyKSl9YFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXJ0ZXNpYW4sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5sb2NhdGlvbklEKVxyXG4gICAgICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgICAgIGVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uID0gY2FydGVzaWFuXHJcbiAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVTeXN0ZW0gPSBnZXRDb29yZGluYXRlU3lzdGVtKClcclxuICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9IGDnu4/luqbvvJoke051bWJlcihwLmxuZy50b0ZpeGVkKDgpKX1cXG7nuqzluqbvvJoke051bWJlcihwLmxhdC50b0ZpeGVkKDgpKX1cXG7mtbfmi5TvvJoke051bWJlcihwLmFsdC50b0ZpeGVkKDIpKX1gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29udmVydChbeyB4OiBwLmxuZywgeTogcC5sYXQsIHo6IHAuYWx0IH1dLCAnRVBTRzo0MzI2JywgY29vcmRpbmF0ZVN5c3RlbSlcclxuICAgICAgICAgIHRoaXMudGV4dCA9IGB477yaJHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS54LnRvRml4ZWQoOCkpfVxcbnnvvJoke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnkudG9GaXhlZCg4KSl9XFxueu+8miR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0uei50b0ZpeGVkKDIpKX1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5sb2NhdGlvbklEKVxyXG4gICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuY2FjaGVfaWQpXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlTG9jYXRpb25cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBeEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBMEZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureLocation/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureProjectionDistance/index.js": -/*!********************************************************!*\ - !*** ./src/Measure/MeasureProjectionDistance/index.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\nvar MeasureProjectionDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 投影距离测量\r\n * */\n function MeasureProjectionDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureProjectionDistance);\n _this = _callSuper(this, MeasureProjectionDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureProjectionDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureProjectionDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(p1, index) {\n var p2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context2.sent;\n p1.alt = p2[0].height;\n return _context2.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function sampleHeight(_x3, _x4) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context3.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context3.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function getHeight(_x5, _x6, _x7) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this3 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, _this3.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this3.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this4 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureProjectionDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消投影距离测量!');\n var leftEvent = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(movement, car) {\n var cur_point, pre_p, cur_len, text, startPoint;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (_this4.ids.length === 0) {\n _this4.polyline_id = MeasureProjectionDistance.createPolyline(_this4);\n _this4.start_id = MeasureProjectionDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this4.getLabel(\"\")\n }, _this4);\n //创建起点\n }\n _this4.positions = _this4.cachePositions.concat(car);\n _this4.tip.setPosition(car, movement.position.x, movement.position.y);\n if (_this4.ids.length !== 0) {\n cur_point = _this4.cartesian3Towgs84(car, _this4.viewer);\n pre_p = _this4.cartesian3Towgs84(_this4.cachePositions[_this4.cachePositions.length - 1], _this4.viewer);\n cur_len = _this4.computeDistance2([cur_point, pre_p]);\n text = \"投影距离:\" + cur_len + \" 米\";\n _this4.ids.push(MeasureProjectionDistance.create_point(car, {\n label: _this4.getLabel(text)\n }, _this4));\n _this4.cachePositions.push(car);\n _this4.tip.set_text('左键单击确定控制点位置,右键单击完成投影距离测量!');\n } else {\n _this4.cachePositions.push(car);\n _this4.ids.push(MeasureProjectionDistance.create_point(car, {\n show: false\n }, _this4));\n startPoint = _this4.viewer.entities.getById(_this4.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n }\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function leftEvent(_x8, _x9) {\n return _ref.apply(this, arguments);\n };\n }();\n var rightEvent = function rightEvent(movement, car) {\n if (_this4.cachePositions.length) {\n _this4.positions = _this4.cachePositions;\n _this4.end_id = MeasureProjectionDistance.create_point(_this4.cachePositions[_this4.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this4);\n var endPoint = _this4.viewer.entities.getById(_this4.ids[_this4.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this4.cachePositions.length < 2) {\n _this4.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this4.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this4.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this4.positions = _this4.cachePositions.concat(car);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let cur_len = this.computeDistance2([cur_point, pre_p])\n // let text = \"当前投影距离:\" + cur_len + \" 米\"\n // this.tip.set_text(text)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.mouse_right_keyboard_ctrl(function (movement, car) {\n if (_this4.cachePositions.length) {\n _this4.cachePositions.pop();\n _this4.remove_entity(_this4.ids.pop());\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this5.remove_entity(id);\n });\n _superPropGet(MeasureProjectionDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureProjectionDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n })\n },\n zIndex: 99999999\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref2, that) {\n var label = _ref2.label,\n _ref2$image = _ref2.image,\n image = _ref2$image === void 0 ? \"point.png\" : _ref2$image,\n width = _ref2.width,\n height = _ref2.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureProjectionDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVByb2plY3Rpb25EaXN0YW5jZS9pbmRleC5qcz84M2EwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0xMSAxMDozMVxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDEwOjMxXHJcbiAqL1xyXG5cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCJcclxuXHJcbmNsYXNzIE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDmipXlvbHot53nprvmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3IgfHwgXCIjMDBmZmZmXCJcclxuICAgIHRoaXMuc3RhcnRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmVuZF9pZCA9IFwiXCJcclxuICAgIHRoaXMucG9seWxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zID0gW11cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsYW1wVG9Hcm91bmRNZWFzdXJlKG1ldGVycywgY2IpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5pZHMuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBwID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZCkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHAsIHRoaXMudmlld2VyKSlcclxuICAgIH0pXHJcbiAgICBsZXQgcmVzID0gdGhpcy5jaHVua0xpbmUocG9zaXRpb25zLCBtZXRlcnMpXHJcbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbXVxyXG4gICAgcmVzLmZvckVhY2goKEZlYXR1cmUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLkZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsID0gY29vcmRpbmF0ZXMubGVuZ3RoXHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmdldEhlaWdodCh7bG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMH0sIGluZGV4LCB0b3RhbCwpXHJcbiAgICAgIGNiKG51bGwsIHIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYW1wbGVIZWlnaHQocDEsIGluZGV4KSB7XHJcbiAgICBsZXQgcDIgPSBhd2FpdCB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcDFdKVxyXG4gICAgcDEuYWx0ID0gcDJbMF0uaGVpZ2h0XHJcbiAgICByZXR1cm4ge3Bvc2l0aW9uOiBwMSwgaW5kZXh9XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SGVpZ2h0KHAxLCBpbmRleCwgdG90YWwpIHtcclxuICAgIGxldCBwMiA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0TW9zdERldGFpbGVkKFtwMV0pXHJcbiAgICBwMS5hbHQgPSBwMlswXS5oZWlnaHRcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMucHVzaCh7cG9zaXRpb246IHAxLCBpbmRleH0pXHJcbiAgICBpZiAodG90YWwgPT09IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCB0b3RhbF9sZW5ndGggPSB0aGlzLnN0YXJ0Q29tcHV0ZSgpXHJcbiAgICAgIHJldHVybiB7dG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB0b3RhbF9sZW5ndGh9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3RvdGFsLCBjdXJyZW50OiB0aGlzLmNsYW1wUG9zaXRpb25zLmxlbmd0aCx9XHJcbiAgfVxyXG5cclxuICBzdGFydENvbXB1dGUoKSB7XHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgcmV0dXJuIGEuaW5kZXggPCBiLmluZGV4XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsX2xlbmd0aCA9IDBcclxuICAgIGxldCBsID0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGggLSAxXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgIGxldCBkMSA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbaXRlbS5wb3NpdGlvbiwgdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uXSlcclxuICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIHRoaXMuY2xhbXBQb3NpdGlvbnNbaW5kZXggKyAxXS5wb3NpdGlvbi5hbHQpXHJcbiAgICAgICAgbGV0IGQzID0gTWF0aC5zcXJ0KGQxICogZDEgKyBkMiAqIGQyKVxyXG4gICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIE51bWJlcih0b3RhbF9sZW5ndGgudG9GaXhlZCgyKSlcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY3JlYXRlUG9seWxpbmUodGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9LFxyXG4gICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHtcclxuICAgIGxhYmVsLCBpbWFnZSA9IFwicG9pbnQucG5nXCIsXHJcbiAgICB3aWR0aCxcclxuICAgIGhlaWdodFxyXG4gIH0sIHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBwID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoYXQudmlld2VyKVxyXG4gICAgaWYgKGxhYmVsKSB7XHJcbiAgICAgIGxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIDAsIC0oaGVpZ2h0IHx8IDMyKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nLycgKyBpbWFnZSxcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB3aWR0aCxcclxuICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWwodGV4dCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogdGV4dCB8fCAnJyxcclxuICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFlNjA1JyksXHJcbiAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAvLyBkaXN0YW5jZURpc3BsYXlDb25kaXRpb246IHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLFxyXG4gICAgICBzY2FsZTogMSxcclxuICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byA5aeL5rWL6YePXHJcbiAgICovXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOaKleW9sei3neemu+a1i+mHjyEnKVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IGFzeW5jIChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wb2x5bGluZV9pZCA9IChNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZVBvbHlsaW5lKHRoaXMpKVxyXG4gICAgICAgICAgdGhpcy5zdGFydF9pZCA9IE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge1xyXG4gICAgICAgICAgICBpbWFnZTogXCJzdGFydDEucG5nXCIsIHdpZHRoOiAzMCwgaGVpZ2h0OiAzOCwgbGFiZWw6IHRoaXMuZ2V0TGFiZWwoXCJcIilcclxuICAgICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgICAvL+WIm+W7uui1t+eCuVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IGN1cl9sZW4gPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW2N1cl9wb2ludCwgcHJlX3BdKVxyXG4gICAgICAgICAgbGV0IHRleHQgPSBcIuaKleW9sei3neemu++8mlwiICsgY3VyX2xlbiArIFwiIOexs1wiXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge2xhYmVsOiB0aGlzLmdldExhYmVsKHRleHQpfSwgdGhpcykpXHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOaKleW9sei3neemu+a1i+mHjyEnKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZV9wb2ludChjYXIsIHtzaG93OiBmYWxzZX0sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9uc1xyXG4gICAgICAgICAgdGhpcy5lbmRfaWQgPSBNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZV9wb2ludCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHtcclxuICAgICAgICAgICAgaW1hZ2U6IFwiZW5kMS5wbmdcIixcclxuICAgICAgICAgICAgd2lkdGg6IDMwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDM4LFxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIGxldCBlbmRQb2ludCA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5pZHNbdGhpcy5pZHMubGVuZ3RoLTFdKVxyXG4gICAgICAgICAgaWYoZW5kUG9pbnQpIHtcclxuICAgICAgICAgICAgZW5kUG9pbnQuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5NZWFzdXJlcy5wb3AoKS8v5by55Ye65rWL6YeP5a6e5L2TXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgIC8vIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIC8vICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBwcmVfcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBjdXJfbGVuID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjdXJfcG9pbnQsIHByZV9wXSlcclxuICAgICAgICAvLyAgIGxldCB0ZXh0ID0gXCLlvZPliY3mipXlvbHot53nprvvvJpcIiArIGN1cl9sZW4gKyBcIiDnsbNcIlxyXG4gICAgICAgIC8vICAgdGhpcy50aXAuc2V0X3RleHQodGV4dClcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5pZHMucG9wKCkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHJpZ2h0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGVmdEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTmtYvph49cclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgW3RoaXMucG9seWxpbmVfaWQsIHRoaXMuZW5kX2lkLCB0aGlzLnN0YXJ0X2lkLCAuLi50aGlzLmlkc10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDnu5PmnZ/mtYvph49cclxuICAgKi9cclxuICBlbmQoKSB7XHJcbiAgICAvLyBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAvLyB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIC8vIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICBzdXBlci5lbmQoKVxyXG4gICAgLy8gdGhpcy5zZXRQaWNrU3RhdHVzKHRoaXMucGlja1N0YXR1cy5waWNrKVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2VcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF0QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUE3QkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQTVMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUhBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBaUpBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureProjectionDistance/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureSlopeDistance/index.js": -/*!***************************************************!*\ - !*** ./src/Measure/MeasureSlopeDistance/index.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\n\nvar MeasureSlopeDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 坡度测量\r\n * */\n function MeasureSlopeDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureSlopeDistance);\n _this = _callSuper(this, MeasureSlopeDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n _this.event = new _Event__WEBPACK_IMPORTED_MODULE_10__[\"default\"](sdk);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureSlopeDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureSlopeDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(p1, index) {\n var p2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context2.sent;\n p1.alt = p2[0].height;\n return _context2.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function sampleHeight(_x3, _x4) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context3.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context3.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function getHeight(_x5, _x6, _x7) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this3 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, _this3.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this3.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this4 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureSlopeDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消坡度测量!');\n var leftEvent = function leftEvent(movement, car) {\n if (_this4.ids.length === 0) {\n _this4.polyline_id = MeasureSlopeDistance.createPolyline(_this4);\n _this4.start_id = MeasureSlopeDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this4.getLabel(\"\")\n }, _this4);\n //创建起点\n }\n _this4.tip.setPosition(car, movement.position.x, movement.position.y);\n _this4.positions = _this4.cachePositions.concat(car);\n if (_this4.ids.length !== 0) {\n var cur_point = _this4.cartesian3Towgs84(car, _this4.viewer);\n var pre_p = _this4.cartesian3Towgs84(_this4.cachePositions[_this4.cachePositions.length - 1], _this4.viewer);\n if (cur_point.lng !== pre_p.lng || cur_point.lat !== pre_p.lat || cur_point.alt !== pre_p.alt) {\n _this4.cachePositions.push(car);\n //计算坡度\n _this4.computeAngle(pre_p, cur_point);\n }\n _this4.tip.set_text('左键单击确定控制点位置,右键单击完成坡度测量!');\n } else {\n _this4.cachePositions.push(car);\n _this4.ids.push(MeasureSlopeDistance.create_point(car, {}, _this4));\n var startPoint = _this4.viewer.entities.getById(_this4.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n }\n };\n var rightEvent = function rightEvent(movement, car) {\n if (_this4.ids.length !== 0) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // if (cur_point.lng !== pre_p.lng || cur_point.lat !== pre_p.lat || cur_point.alt !== pre_p.alt) {\n // this.cachePositions.push(car)\n // //计算坡度\n // this.computeAngle(pre_p, cur_point)\n // }\n } else {\n // this.cachePositions.push(car)\n _this4.ids.push(MeasureSlopeDistance.create_point(car, {}, _this4));\n }\n if (_this4.cachePositions.length) {\n _this4.positions = _this4.cachePositions;\n _this4.end_id = MeasureSlopeDistance.create_point(_this4.cachePositions[_this4.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this4);\n var endPoint = _this4.viewer.entities.getById(_this4.ids[_this4.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this4.cachePositions.length < 2) {\n _this4.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this4.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n movement.endPosition.y += 2;\n var position = movement.endPosition;\n var cartesian = _this4.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = _this4.viewer.camera.getPickRay(position); //相交的射线\n cartesian = _this4.viewer.scene.globe.pick(ray, _this4.viewer.scene);\n }\n _this4.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this4.positions = _this4.cachePositions.concat(cartesian);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(cartesian, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let d1 = this.computeDistance2([pre_p, cur_point])\n // let d2 = Math.abs(pre_p.alt - cur_point.alt)\n // let d3 = Math.sqrt(d1 * d1 + d2 * d2)\n // let cosAlpha = d1 / d3\n // let acos = Math.acos(cosAlpha)\n // let angle = this.radiansToDegrees(acos)\n // let label = \"坡度:\" + angle.toFixed(2) + \"°\"\n // this.tip.set_text(label)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.mouse_right_keyboard_ctrl(function (movement, car) {\n if (_this4.cachePositions.length) {\n _this4.cachePositions.pop();\n _this4.remove_entity(_this4.ids.pop());\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }, {\n key: \"computeAngle\",\n value: function computeAngle(start, end) {\n var d1 = this.computeDistance2([start, end]);\n var d2 = Math.abs(start.alt - end.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n var cosAlpha = d1 / d3;\n var acos = Math.acos(cosAlpha);\n var angle = this.radiansToDegrees(acos);\n var label = this.getLabel(\"坡度:\" + angle.toFixed(2) + \"°\");\n label.pixelOffset = new Cesium.Cartesian2(0, -32);\n this.ids.push(MeasureSlopeDistance.create_point(Cesium.Cartesian3.fromDegrees(end.lng, end.lat, end.alt), {\n label: label\n }, this));\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this5.remove_entity(id);\n });\n _superPropGet(MeasureSlopeDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureSlopeDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref, that) {\n var label = _ref.label,\n _ref$image = _ref.image,\n image = _ref$image === void 0 ? \"point.png\" : _ref$image,\n width = _ref.width,\n height = _ref.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureSlopeDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlU2xvcGVEaXN0YW5jZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL01lYXN1cmVTbG9wZURpc3RhbmNlL2luZGV4LmpzPzUzN2UiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA3LTExIDEwOjMxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjItMDctMTEgMTA6MzFcclxuICovXHJcblxyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIlxyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tIFwiLi4vLi4vRXZlbnRcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVTbG9wZURpc3RhbmNlIGV4dGVuZHMgTWVhc3VyZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNkayBcclxuICAgKiBAZGVzY3JpcHRpb24g5Z2h5bqm5rWL6YePXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdGhpcy5vcHRpb25zLmNvbG9yIHx8IFwiIzAwZmZmZlwiXHJcbiAgICB0aGlzLnN0YXJ0X2lkID0gXCJcIlxyXG4gICAgdGhpcy5lbmRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLnBvbHlsaW5lX2lkID0gXCJcIlxyXG4gICAgdGhpcy5jbGFtcFBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2xhbXBUb0dyb3VuZE1lYXN1cmUobWV0ZXJzLCBjYikge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmlkcy5mb3JFYWNoKChpZCwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHAgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKGlkKS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgIHBvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgfSlcclxuICAgIGxldCByZXMgPSB0aGlzLmNodW5rTGluZShwb3NpdGlvbnMsIG1ldGVycylcclxuICAgIGxldCBjb29yZGluYXRlcyA9IFtdXHJcbiAgICByZXMuZm9yRWFjaCgoRmVhdHVyZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBbLi4uRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc11cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb29yZGluYXRlcy5wdXNoKEZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBsZXQgdG90YWwgPSBjb29yZGluYXRlcy5sZW5ndGhcclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29vcmRpbmF0ZXMpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBjb29yZGluYXRlcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICBsZXQgciA9IGF3YWl0IHRoaXMuZ2V0SGVpZ2h0KHsgbG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMCB9LCBpbmRleCwgdG90YWwsKVxyXG4gICAgICBjYihudWxsLCByKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2FtcGxlSGVpZ2h0KHAxLCBpbmRleCkge1xyXG4gICAgbGV0IHAyID0gYXdhaXQgdGhpcy5zYW1wbGVIZWlnaHRNb3N0RGV0YWlsZWQoW3AxXSlcclxuICAgIHAxLmFsdCA9IHAyWzBdLmhlaWdodFxyXG4gICAgcmV0dXJuIHsgcG9zaXRpb246IHAxLCBpbmRleCB9XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SGVpZ2h0KHAxLCBpbmRleCwgdG90YWwpIHtcclxuICAgIGxldCBwMiA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0TW9zdERldGFpbGVkKFtwMV0pXHJcbiAgICBwMS5hbHQgPSBwMlswXS5oZWlnaHRcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMucHVzaCh7IHBvc2l0aW9uOiBwMSwgaW5kZXggfSlcclxuICAgIGlmICh0b3RhbCA9PT0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRvdGFsX2xlbmd0aCA9IHRoaXMuc3RhcnRDb21wdXRlKClcclxuICAgICAgcmV0dXJuIHsgdG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB0b3RhbF9sZW5ndGggfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB9XHJcbiAgfVxyXG5cclxuICBzdGFydENvbXB1dGUoKSB7XHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgcmV0dXJuIGEuaW5kZXggPCBiLmluZGV4XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsX2xlbmd0aCA9IDBcclxuICAgIGxldCBsID0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGggLSAxXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgIGxldCBkMSA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbaXRlbS5wb3NpdGlvbiwgdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uXSlcclxuICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIHRoaXMuY2xhbXBQb3NpdGlvbnNbaW5kZXggKyAxXS5wb3NpdGlvbi5hbHQpXHJcbiAgICAgICAgbGV0IGQzID0gTWF0aC5zcXJ0KGQxICogZDEgKyBkMiAqIGQyKVxyXG4gICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIE51bWJlcih0b3RhbF9sZW5ndGgudG9GaXhlZCgyKSlcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY3JlYXRlUG9seWxpbmUodGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB7XHJcbiAgICBsYWJlbCwgaW1hZ2UgPSBcInBvaW50LnBuZ1wiLFxyXG4gICAgd2lkdGgsXHJcbiAgICBoZWlnaHRcclxuICB9LCB0aGF0KSB7XHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICBsZXQgcCA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnZpZXdlcilcclxuICAgIGlmIChsYWJlbCkge1xyXG4gICAgICBsYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICAwLCAtKGhlaWdodCB8fCAzMilcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxhYmVsLFxyXG4gICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIHAuYWx0KSxcclxuICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy8nICsgaW1hZ2UsXHJcbiAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgd2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHRcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIGdldExhYmVsKHRleHQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IHRleHQgfHwgJycsXHJcbiAgICAgIC8v5qCH5rOo5paH5a2X5o+P6L+wXHJcbiAgICAgIGZvbnQ6ICcyMHB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2YxZTYwNScpLFxyXG4gICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgLy/moIfms6jnmoTpga7mjKHot53nprvorr7nva7kuLoxMDDliJnop4bop5LkuI7moIfms6jnmoTot53nprvlpKfkuo4xMDDnsbPml7bkvJrmnInpga7mjKFcclxuICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgc2NhbGU6IDEsXHJcbiAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG5cclxuICAgICAgLy8gZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiB0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW8gOWni+a1i+mHj1xyXG4gICAqL1xyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlnaHluqbmtYvph4/vvIEnKVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wb2x5bGluZV9pZCA9IChNZWFzdXJlU2xvcGVEaXN0YW5jZS5jcmVhdGVQb2x5bGluZSh0aGlzKSlcclxuICAgICAgICAgIHRoaXMuc3RhcnRfaWQgPSBNZWFzdXJlU2xvcGVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoY2FyLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcInN0YXJ0MS5wbmdcIiwgd2lkdGg6IDMwLCBoZWlnaHQ6IDM4LCBsYWJlbDogdGhpcy5nZXRMYWJlbChcIlwiKVxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIC8v5Yib5bu66LW354K5XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQucG9zaXRpb24ueCwgbW92ZW1lbnQucG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgaWYgKGN1cl9wb2ludC5sbmcgIT09IHByZV9wLmxuZyB8fCBjdXJfcG9pbnQubGF0ICE9PSBwcmVfcC5sYXQgfHwgY3VyX3BvaW50LmFsdCAhPT0gcHJlX3AuYWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICAgIC8v6K6h566X5Z2h5bqmXHJcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZUFuZ2xlKHByZV9wLCBjdXJfcG9pbnQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75a6M5oiQ5Z2h5bqm5rWL6YeP77yBJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKGNhcilcclxuICAgICAgICAgIHRoaXMuaWRzLnB1c2goTWVhc3VyZVNsb3BlRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge30sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAvLyBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gaWYgKGN1cl9wb2ludC5sbmcgIT09IHByZV9wLmxuZyB8fCBjdXJfcG9pbnQubGF0ICE9PSBwcmVfcC5sYXQgfHwgY3VyX3BvaW50LmFsdCAhPT0gcHJlX3AuYWx0KSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICAvLyAgIC8v6K6h566X5Z2h5bqmXHJcbiAgICAgICAgICAvLyAgIHRoaXMuY29tcHV0ZUFuZ2xlKHByZV9wLCBjdXJfcG9pbnQpXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVTbG9wZURpc3RhbmNlLmNyZWF0ZV9wb2ludChjYXIsIHt9LCB0aGlzKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICAgIHRoaXMuZW5kX2lkID0gTWVhc3VyZVNsb3BlRGlzdGFuY2UuY3JlYXRlX3BvaW50KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwge1xyXG4gICAgICAgICAgICBpbWFnZTogXCJlbmQxLnBuZ1wiLFxyXG4gICAgICAgICAgICB3aWR0aDogMzAsXHJcbiAgICAgICAgICAgIGhlaWdodDogMzgsXHJcbiAgICAgICAgICB9LCB0aGlzKVxyXG4gICAgICAgICAgbGV0IGVuZFBvaW50ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmlkc1t0aGlzLmlkcy5sZW5ndGgtMV0pXHJcbiAgICAgICAgICBpZihlbmRQb2ludCkge1xyXG4gICAgICAgICAgICBlbmRQb2ludC5iaWxsYm9hcmQuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgICBZSi5NZWFzdXJlLk1lYXN1cmVzLnBvcCgpLy/lvLnlh7rmtYvph4/lrp7kvZNcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55ICs9IDJcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9zaXRpb24pXHJcbiAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgIGNvbnN0IHJheSA9IHRoaXMudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvc2l0aW9uKTsgLy/nm7jkuqTnmoTlsITnur9cclxuICAgICAgICAgIGNhcnRlc2lhbiA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0aGlzLnZpZXdlci5zY2VuZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAvLyBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAvLyAgIGxldCBjdXJfcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICBsZXQgcHJlX3AgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICBsZXQgZDEgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3ByZV9wLCBjdXJfcG9pbnRdKVxyXG4gICAgICAgIC8vICAgbGV0IGQyID0gTWF0aC5hYnMocHJlX3AuYWx0IC0gY3VyX3BvaW50LmFsdClcclxuICAgICAgICAvLyAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgICAgICAvLyAgIGxldCBjb3NBbHBoYSA9IGQxIC8gZDNcclxuICAgICAgICAvLyAgIGxldCBhY29zID0gTWF0aC5hY29zKGNvc0FscGhhKVxyXG4gICAgICAgIC8vICAgbGV0IGFuZ2xlID0gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKGFjb3MpXHJcbiAgICAgICAgLy8gICBsZXQgbGFiZWwgPSBcIuWdoeW6pu+8mlwiICsgYW5nbGUudG9GaXhlZCgyKSArIFwiwrBcIlxyXG4gICAgICAgIC8vICAgdGhpcy50aXAuc2V0X3RleHQobGFiZWwpXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuaWRzLnBvcCgpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXB1dGVBbmdsZShzdGFydCwgZW5kKSB7XHJcbiAgICBsZXQgZDEgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3N0YXJ0LCBlbmRdKVxyXG4gICAgbGV0IGQyID0gTWF0aC5hYnMoc3RhcnQuYWx0IC0gZW5kLmFsdClcclxuICAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgIGxldCBjb3NBbHBoYSA9IGQxIC8gZDNcclxuICAgIGxldCBhY29zID0gTWF0aC5hY29zKGNvc0FscGhhKVxyXG4gICAgbGV0IGFuZ2xlID0gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKGFjb3MpXHJcbiAgICBsZXQgbGFiZWwgPSB0aGlzLmdldExhYmVsKFwi5Z2h5bqm77yaXCIgKyBhbmdsZS50b0ZpeGVkKDIpICsgXCLCsFwiKVxyXG4gICAgbGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIDAsIC0oMzIpXHJcbiAgICApXHJcbiAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVTbG9wZURpc3RhbmNlLmNyZWF0ZV9wb2ludChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhlbmQubG5nLCBlbmQubGF0LCBlbmQuYWx0KSwge2xhYmVsOiBsYWJlbH0sIHRoaXMpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5rWL6YePXHJcbiAgICovXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIFt0aGlzLnBvbHlsaW5lX2lkLCB0aGlzLmVuZF9pZCwgdGhpcy5zdGFydF9pZCwgLi4udGhpcy5pZHNdLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICB9KVxyXG4gICAgc3VwZXIuZGVzdHJveSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog57uT5p2f5rWL6YePXHJcbiAgICovXHJcbiAgZW5kKCkge1xyXG4gICAgLy8gWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgLy8gdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAvLyB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgc3VwZXIuZW5kKClcclxuICAgIC8vIHRoaXMuc2V0UGlja1N0YXR1cyh0aGlzLnBpY2tTdGF0dXMucGljaylcclxuXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlU2xvcGVEaXN0YW5jZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFsT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFIQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQXVMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Measure/MeasureSlopeDistance/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureTdArea/index.js": -/*!********************************************!*\ - !*** ./src/Measure/MeasureTdArea/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n/**@extends Measure*/\nvar MeasureTdArea = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 贴地面积测量\r\n * */\n function MeasureTdArea(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureTdArea);\n _this = _callSuper(this, MeasureTdArea, [sdk, options]);\n _this.options.lineColor = '#ffdf53';\n _this.polygon_id = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureTdArea, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureTdArea, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTdArea, \"start\", this, 3)([]);\n this.ids = [];\n this.positions = [];\n this.text = \"\";\n this.center = new Cesium.Cartesian3();\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地面积测量!');\n var height = 0;\n var text;\n var leftEvent = function leftEvent(movement, car) {\n if (_this2.ids.length === 0) {\n _this2.polygon_id = MeasureTdArea.create_polygon(_this2);\n }\n _this2.cachePositions.push(_objectSpread({}, car));\n _this2.ids.push(_this2.create_point(_objectSpread({}, car), false));\n var po = _this2.cartesian3Towgs84(_objectSpread({}, car), _this2.viewer);\n if (po.alt > height) {\n height = po.alt;\n }\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n _this2.tip.setPosition(_objectSpread({}, car), movement.position.x, movement.position.y);\n if (_this2.positions.length > 3) {\n _this2.tip.set_text('左键单击确定控制点位置,右键单击完成贴地面积测量!');\n }\n };\n var rightEvent = function rightEvent(movement, car) {\n _this2.positions = _this2.cachePositions;\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n setTimeout(function () {\n var center = _this2.computeCenter(arr);\n var area = _this2.computeSignedArea(_this2.viewer, arr);\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n _this2.text = \"贴地面积:\" + area + \" ㎡\";\n }, 0);\n } else {\n var error = '面积计算至少需要三个坐标!';\n console.warn(error);\n window.ELEMENT && window.ELEMENT.Message({\n message: error,\n type: 'warning',\n duration: 1500\n });\n _this2.destroy();\n }\n _this2.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this2.tip.setPosition(_objectSpread({}, car), movement.endPosition.x, movement.endPosition.y);\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n });\n this.event.mouse_right(rightEvent);\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this3 = this;\n [this.polygon_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this3.remove_entity(id);\n });\n _superPropGet(MeasureTdArea, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTdArea, \"end\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var scaleByDistance = new Cesium.NearFarScalar(2000, 1, 100000, 0);\n var e = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\n },\n position: new Cesium.CallbackProperty(function () {\n return that.center;\n }, false),\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }, false),\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.positions.length) return that.positions.concat(that.positions[0]);\n return that.positions;\n }, false),\n width: 2,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.lineColor || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTdArea);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVGRBcmVhL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVRkQXJlYS9pbmRleC5qcz80NDRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNZWFzdXJlIGZyb20gXCIuLi9pbmRleFwiXHJcblxyXG4vKipAZXh0ZW5kcyBNZWFzdXJlKi9cclxuY2xhc3MgTWVhc3VyZVRkQXJlYSBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQGRlc2NyaXB0aW9uIOi0tOWcsOmdouenr+a1i+mHj1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZUNvbG9yID0gJyNmZmRmNTMnXHJcbiAgICB0aGlzLnBvbHlnb25faWQgPSBcIlwiXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlnb24odGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG5cclxuICAgIGxldCBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoMjAwMCwgMSwgMTAwMDAwLCAwKVxyXG5cclxuICAgIGxldCBlID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC50ZXh0XHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAvL+agh+azqOaWh+Wtl+aPj+i/sFxyXG4gICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZmZmZicpLFxyXG4gICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgICAgICAvLyBzY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgICAgICBzY2FsZTogMSxcclxuICAgICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5jZW50ZXJcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkJPVEgsXHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvciB8fCB0aGF0LmRlZmF1bHRDb2xvciksXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhhdC5wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9ucy5jb25jYXQodGhhdC5wb3NpdGlvbnNbMF0pXHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uc1xyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5saW5lQ29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgICBkYXNoTGVuZ3RoOiAyMCwgLy/nn63liJLnur/plb/luqZcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW8gOWni+a1i+mHj1xyXG4gICAqL1xyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIHRoaXMuaWRzID0gW11cclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnRleHQgPSBcIlwiXHJcbiAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojotLTlnLDpnaLnp6/mtYvph48hJylcclxuICAgICAgbGV0IGhlaWdodCA9IDBcclxuICAgICAgbGV0IHRleHRcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbl9pZCA9IE1lYXN1cmVUZEFyZWEuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKHsgLi4uY2FyIH0pXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludCh7IC4uLmNhciB9LCBmYWxzZSkpXHJcbiAgICAgICAgbGV0IHBvID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh7IC4uLmNhciB9LCB0aGlzLnZpZXdlcilcclxuICAgICAgICBpZiAocG8uYWx0ID4gaGVpZ2h0KSB7XHJcbiAgICAgICAgICBoZWlnaHQgPSBwby5hbHRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMykge1xyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOi0tOWcsOmdouenr+a1i+mHjyEnKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcmlnaHRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zXHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBbXVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBhcnIucHVzaCh7IGxuZzogcC5sbmcsIGxhdDogcC5sYXQgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY29tcHV0ZUNlbnRlcihhcnIpXHJcbiAgICAgICAgICAgIGxldCBhcmVhID0gdGhpcy5jb21wdXRlU2lnbmVkQXJlYSh0aGlzLnZpZXdlciwgYXJyKVxyXG4gICAgICAgICAgICB0aGlzLmNlbnRlciA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXIubG5nLCBjZW50ZXIubGF0LCBoZWlnaHQpXHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IFwi6LS05Zyw6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBlcnJvciA9ICfpnaLnp6/orqHnrpfoh7PlsJHpnIDopoHkuInkuKrlnZDmoIfvvIEnXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IsXHJcbiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kZXN0cm95KClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKHsgLi4uY2FyIH0sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhciB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBbdGhpcy5wb2x5Z29uX2lkLCAuLi50aGlzLmlkc10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlVGRBcmVhXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTlKQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBNEdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTdArea/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureTriangle/index.js": -/*!**********************************************!*\ - !*** ./src/Measure/MeasureTriangle/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-21 15:22\r\n * @description:index\r\n * @update: 2022-07-21 15:22\r\n */\n\nvar MeasureTriangle = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 三角测量\r\n * */\n function MeasureTriangle(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureTriangle);\n return _callSuper(this, MeasureTriangle, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消三角测量!\"\n }]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureTriangle, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureTriangle, [{\n key: \"cal_center\",\n value: function cal_center(positions) {\n var p1 = this.cartesian3Towgs84(positions[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions[1], this.viewer);\n var center = this.computeCenter([p1, p2]);\n return Cesium.Cartesian3.fromDegrees(center.lng, center.lat, (p1.alt + p2.alt) / 2);\n }\n }, {\n key: \"cal_distance\",\n value: function cal_distance(positions) {\n var p1 = this.cartesian3Towgs84(positions[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions[1], this.viewer);\n var dis = this.computeDistance2([p1, p2]);\n p1.alt = p1.alt.toFixed(2);\n p2.alt = p2.alt.toFixed(2);\n if (p1.alt === p2.alt) {\n //水平边\n return dis;\n } else if (Number(dis) === 0.00) {\n //竖直边\n return Math.abs(p1.alt - p2.alt).toFixed(2);\n } else {\n //斜边\n return Math.sqrt(dis * dis + Math.pow(Math.abs(p1.alt - p2.alt).toFixed(2), 2)).toFixed(2);\n }\n }\n }, {\n key: \"createPolyline\",\n value: function createPolyline(id) {\n var _this = this;\n var obj = this.id_map.get(id);\n this.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n if (obj.positions.length === 2) return _this.cal_center(obj.positions);else return Cesium.Cartesian3();\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n if (obj.positions.length === 2) return _this.cal_distance(obj.positions) + \"米\";else return \"0米\";\n }, false),\n scale: 1,\n fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -10),\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return obj.positions;\n }, false),\n width: 2,\n material: Cesium.Color.YELLOW,\n zIndex: 99999999\n }\n }));\n this.ids.push(id);\n }\n }, {\n key: \"create_angle_label\",\n value: function create_angle_label(positions1, positions2, id, type) {\n var _this2 = this;\n var entity = new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n if (positions1.length === 2) return _this2.cal_point(positions1, positions2);else return Cesium.Cartesian3();\n }),\n label: {\n text: new Cesium.CallbackProperty(function () {\n if (positions1.length === 2) return _this2.cal_angle(positions1, positions2, type) + \"°\";else return \"0°\";\n }, false),\n scale: 1,\n fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(15, -10)\n }\n });\n this.viewer.entities.add(entity);\n }\n }, {\n key: \"cal_point\",\n value: function cal_point(positions1, positions2) {\n for (var i = 0; i < positions1.length; i++) {\n for (var j = 0; j < positions2.length; j++) {\n if (positions1[i].x === positions2[j].x && positions1[i].y === positions2[j].y && positions1[i].z === positions2[j].z) {\n return positions1[i];\n }\n }\n }\n }\n }, {\n key: \"cal_angle\",\n value: function cal_angle(id1, id2, type) {\n if (type === 1) {\n //水平&竖直\n return 90;\n } else if (type === 2 || type === 3) {\n //水平&斜边 竖直&斜边\n var positions1 = this.id_map.get(id1).positions;\n var positions2 = this.id_map.get(id2).positions;\n var p1 = this.cartesian3Towgs84(positions1[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions1[1], this.viewer);\n var shuiping = this.computeDistance2([p2, p1]);\n var p3 = this.cartesian3Towgs84(positions2[0], this.viewer);\n var p4 = this.cartesian3Towgs84(positions2[1], this.viewer);\n var d = this.computeDistance2([p3, p4]);\n var h = Math.abs(p3.alt - p4.alt);\n var x = Math.sqrt(Math.pow(h, 2) + Math.pow(d, 2));\n if (shuiping == 0.00) {\n shuiping = Math.abs(p2.alt - p1.alt);\n }\n return (Math.acos(shuiping / x) * 180 / Math.PI).toFixed(2);\n }\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTriangle, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n var shuiping_line_id = this.randomString(); //水平线\n var shuizhi_line_id = this.randomString(); //竖直边\n var xiebian_line_id = this.randomString(); //斜边\n\n var angle1 = this.randomString(); //角度1\n var angle2 = this.randomString(); //角度2\n var angle3 = this.randomString(); //角度3\n\n var xiebian_line_positions = []; //斜边\n\n this.id_map = new Map();\n var first_point = {};\n this.id_map.set(xiebian_line_id, {\n positions: []\n });\n this.id_map.set(shuiping_line_id, {\n positions: []\n });\n this.id_map.set(shuizhi_line_id, {\n positions: []\n });\n var leftEvent = function leftEvent(movement, car) {\n xiebian_line_positions.push(car);\n _this3.tip.set_text('左键单击确定终点位置,完成三角测量!');\n if (_this3.ids.length === 0) {\n //创建三角形\n first_point = _this3.cartesian3Towgs84(car, _this3.viewer);\n _this3.createPolyline(shuiping_line_id);\n _this3.createPolyline(shuizhi_line_id);\n _this3.createPolyline(xiebian_line_id);\n\n // this.cal_angle(shuiping_line_id, shuizhi_line_id, 1)\n // this.cal_angle(shuiping_line_id, xiebian_line_id, 2)\n // this.cal_angle(shuizhi_line_id, xiebian_line_id, 3)\n\n // this.ids.push(shuiping_line_id)\n // this.ids.push(shuizhi_line_id)\n // this.ids.push(xiebian_line_id)\n }\n _this3.ids.push(_this3.create_point(car));\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n // // 隐藏斜边文字\n // let xiebian = this.id_map.get(xiebian_line_id)\n // let xbEntity = this.viewer.entities.getById(xiebian_line_id)\n // if(xbEntity) {\n // xbEntity.label.show = false\n // }\n if (xiebian_line_positions.length) {\n // xiebian.positions = xiebian_line_positions.concat(car)\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var shuzhi = _this3.id_map.get(shuizhi_line_id);\n var shuiping = _this3.id_map.get(shuiping_line_id);\n if (p.alt < first_point.alt) {\n shuzhi.positions[0] = car;\n shuzhi.positions[1] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n } else {\n shuzhi.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuzhi.positions[1] = car;\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n }\n // shuizhi.positions = shuizhi_positions\n }\n if (xiebian_line_positions.length === 2) {\n _this3.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n var xiebian = _this3.id_map.get(xiebian_line_id);\n if (xiebian_line_positions.length) {\n xiebian.positions = xiebian_line_positions.concat(car);\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var shuzhi = _this3.id_map.get(shuizhi_line_id);\n var shuiping = _this3.id_map.get(shuiping_line_id);\n if (p.alt < first_point.alt) {\n shuzhi.positions[0] = car;\n shuzhi.positions[1] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n } else {\n shuzhi.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuzhi.positions[1] = car;\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n }\n // shuizhi.positions = shuizhi_positions\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTriangle, \"end\", this, 3)([]);\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n _superPropGet(MeasureTriangle, \"destroy\", this, 3)([]);\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTriangle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHJpYW5nbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHJpYW5nbGUvaW5kZXguanM/OWVmOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMjEgMTU6MjJcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0yMSAxNToyMlxyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlVHJpYW5nbGUgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDkuInop5LmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgc3VwZXIoc2RrLCB7dGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojkuInop5LmtYvph4/vvIFcIn0pO1xyXG4gIH1cclxuXHJcbiAgY2FsX2NlbnRlcihwb3NpdGlvbnMpIHtcclxuICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBjZW50ZXIgPSB0aGlzLmNvbXB1dGVDZW50ZXIoW3AxLCBwMl0pO1xyXG4gICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQsIChwMS5hbHQgKyBwMi5hbHQpIC8gMilcclxuICB9XHJcblxyXG4gIGNhbF9kaXN0YW5jZShwb3NpdGlvbnMpIHtcclxuICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBkaXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3AxLCBwMl0pXHJcbiAgICBwMS5hbHQgPSBwMS5hbHQudG9GaXhlZCgyKVxyXG4gICAgcDIuYWx0ID0gcDIuYWx0LnRvRml4ZWQoMilcclxuICAgIGlmIChwMS5hbHQgPT09IHAyLmFsdCkgey8v5rC05bmz6L65XHJcbiAgICAgIHJldHVybiBkaXNcclxuICAgIH0gZWxzZSBpZiAoTnVtYmVyKGRpcykgPT09IDAuMDApIHsvL+erluebtOi+uVxyXG4gICAgICByZXR1cm4gTWF0aC5hYnMocDEuYWx0IC0gcDIuYWx0KS50b0ZpeGVkKDIpXHJcbiAgICB9IGVsc2Ugey8v5pac6L65XHJcbiAgICAgIHJldHVybiBNYXRoLnNxcnQoZGlzICogZGlzICsgTWF0aC5wb3coTWF0aC5hYnMocDEuYWx0IC0gcDIuYWx0KS50b0ZpeGVkKDIpLCAyKSkudG9GaXhlZCgyKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9seWxpbmUoaWQpIHtcclxuICAgIGxldCBvYmogPSB0aGlzLmlkX21hcC5nZXQoaWQpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIGlmIChvYmoucG9zaXRpb25zLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNhbF9jZW50ZXIob2JqLnBvc2l0aW9ucylcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICB9LCBmYWxzZSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGlmIChvYmoucG9zaXRpb25zLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX2Rpc3RhbmNlKG9iai5wb3NpdGlvbnMpICsgXCLnsbNcIlxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gXCIw57GzXCJcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gICAgICAgIGZvbnQ6ICdub3JtYWwgMjBweCBNaWNyb1NvZnQgWWFIZWknLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTEwKSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9iai5wb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5ZRUxMT1csXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuXHJcbiAgICB0aGlzLmlkcy5wdXNoKGlkKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlX2FuZ2xlX2xhYmVsKHBvc2l0aW9uczEsIHBvc2l0aW9uczIsIGlkLCB0eXBlKSB7XHJcbiAgICBsZXQgZW50aXR5ID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICBpZCxcclxuICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uczEubGVuZ3RoID09PSAyKVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX3BvaW50KHBvc2l0aW9uczEsIHBvc2l0aW9uczIpXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgfSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGlmIChwb3NpdGlvbnMxLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX2FuZ2xlKHBvc2l0aW9uczEsIHBvc2l0aW9uczIsIHR5cGUpICsgXCLCsFwiXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBcIjDCsFwiXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgICBmb250OiAnbm9ybWFsIDIwcHggTWljcm9Tb2Z0IFlhSGVpJyxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDE1LCAtMTApLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKGVudGl0eSlcclxuXHJcbiAgfVxyXG5cclxuICBjYWxfcG9pbnQocG9zaXRpb25zMSwgcG9zaXRpb25zMikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9zaXRpb25zMi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChwb3NpdGlvbnMxW2ldLnggPT09IHBvc2l0aW9uczJbal0ueCAmJlxyXG4gICAgICAgICAgcG9zaXRpb25zMVtpXS55ID09PSBwb3NpdGlvbnMyW2pdLnkgJiZcclxuICAgICAgICAgIHBvc2l0aW9uczFbaV0ueiA9PT0gcG9zaXRpb25zMltqXS56XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gcG9zaXRpb25zMVtpXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsX2FuZ2xlKGlkMSwgaWQyLCB0eXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gMSkgey8v5rC05bmzJuerluebtFxyXG4gICAgICByZXR1cm4gOTBcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMiB8fCB0eXBlID09PSAzKSB7Ly/msLTlubMm5pac6L65ICDnq5bnm7Qm5pac6L65XHJcbiAgICAgIGxldCBwb3NpdGlvbnMxID0gdGhpcy5pZF9tYXAuZ2V0KGlkMSkucG9zaXRpb25zXHJcbiAgICAgIGxldCBwb3NpdGlvbnMyID0gdGhpcy5pZF9tYXAuZ2V0KGlkMikucG9zaXRpb25zXHJcbiAgICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zMVswXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zMVsxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgIGxldCBzaHVpcGluZyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbcDIsIHAxXSlcclxuICAgICAgbGV0IHAzID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnMyWzBdLCB0aGlzLnZpZXdlcilcclxuICAgICAgbGV0IHA0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnMyWzFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgbGV0IGQgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3AzLCBwNF0pXHJcbiAgICAgIGxldCBoID0gTWF0aC5hYnMocDMuYWx0IC0gcDQuYWx0KVxyXG4gICAgICBsZXQgeCA9IE1hdGguc3FydChNYXRoLnBvdyhoLCAyKSArIE1hdGgucG93KGQsIDIpKVxyXG4gICAgICBpZiAoc2h1aXBpbmcgPT0gMC4wMCkge1xyXG4gICAgICAgIHNodWlwaW5nID0gTWF0aC5hYnMocDIuYWx0IC0gcDEuYWx0KVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoTWF0aC5hY29zKHNodWlwaW5nIC8geCkgKiAxODAgLyBNYXRoLlBJKS50b0ZpeGVkKDIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuXHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IHNodWlwaW5nX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v5rC05bmz57q/XHJcbiAgICAgIGxldCBzaHVpemhpX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v56uW55u06L65XHJcbiAgICAgIGxldCB4aWViaWFuX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v5pac6L65XHJcblxyXG4gICAgICBsZXQgYW5nbGUxID0gdGhpcy5yYW5kb21TdHJpbmcoKTsvL+inkuW6pjFcclxuICAgICAgbGV0IGFuZ2xlMiA9IHRoaXMucmFuZG9tU3RyaW5nKCk7Ly/op5LluqYyXHJcbiAgICAgIGxldCBhbmdsZTMgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v6KeS5bqmM1xyXG5cclxuXHJcbiAgICAgIGxldCB4aWViaWFuX2xpbmVfcG9zaXRpb25zID0gW107Ly/mlpzovrlcclxuXHJcbiAgICAgIHRoaXMuaWRfbWFwID0gbmV3IE1hcCgpXHJcbiAgICAgIGxldCBmaXJzdF9wb2ludCA9IHt9XHJcbiAgICAgIHRoaXMuaWRfbWFwLnNldCh4aWViaWFuX2xpbmVfaWQsIHtwb3NpdGlvbnM6IFtdfSlcclxuICAgICAgdGhpcy5pZF9tYXAuc2V0KHNodWlwaW5nX2xpbmVfaWQsIHtwb3NpdGlvbnM6IFtdfSlcclxuICAgICAgdGhpcy5pZF9tYXAuc2V0KHNodWl6aGlfbGluZV9pZCwge3Bvc2l0aW9uczogW119KVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgeGllYmlhbl9saW5lX3Bvc2l0aW9ucy5wdXNoKGNhcilcclxuXHJcbiAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumue7iOeCueS9jee9ru+8jOWujOaIkOS4ieinkua1i+mHj++8gScpXHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkgey8v5Yib5bu65LiJ6KeS5b2iXHJcbiAgICAgICAgICBmaXJzdF9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMuY3JlYXRlUG9seWxpbmUoc2h1aXBpbmdfbGluZV9pZCwpXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVBvbHlsaW5lKHNodWl6aGlfbGluZV9pZCwpXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVBvbHlsaW5lKHhpZWJpYW5fbGluZV9pZCwpXHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXBpbmdfbGluZV9pZCwgc2h1aXpoaV9saW5lX2lkLCAxKVxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXBpbmdfbGluZV9pZCwgeGllYmlhbl9saW5lX2lkLCAyKVxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXpoaV9saW5lX2lkLCB4aWViaWFuX2xpbmVfaWQsIDMpXHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5pZHMucHVzaChzaHVpcGluZ19saW5lX2lkKVxyXG4gICAgICAgICAgLy8gdGhpcy5pZHMucHVzaChzaHVpemhpX2xpbmVfaWQpXHJcbiAgICAgICAgICAvLyB0aGlzLmlkcy5wdXNoKHhpZWJpYW5fbGluZV9pZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FyKSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgLy8gLy8g6ZqQ6JeP5pac6L655paH5a2XXHJcbiAgICAgICAgLy8gbGV0IHhpZWJpYW4gPSB0aGlzLmlkX21hcC5nZXQoeGllYmlhbl9saW5lX2lkKVxyXG4gICAgICAgIC8vIGxldCB4YkVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoeGllYmlhbl9saW5lX2lkKVxyXG4gICAgICAgIC8vIGlmKHhiRW50aXR5KSB7XHJcbiAgICAgICAgLy8gICB4YkVudGl0eS5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKHhpZWJpYW5fbGluZV9wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyB4aWViaWFuLnBvc2l0aW9ucyA9IHhpZWJpYW5fbGluZV9wb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHNodXpoaSA9IHRoaXMuaWRfbWFwLmdldChzaHVpemhpX2xpbmVfaWQpXHJcbiAgICAgICAgICBsZXQgc2h1aXBpbmcgPSB0aGlzLmlkX21hcC5nZXQoc2h1aXBpbmdfbGluZV9pZClcclxuICAgICAgICAgIGlmIChwLmFsdCA8IGZpcnN0X3BvaW50LmFsdCkge1xyXG4gICAgICAgICAgICBzaHV6aGkucG9zaXRpb25zWzBdID0gY2FyXHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIGZpcnN0X3BvaW50LmFsdClcclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzBdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocC5sbmcsIHAubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1sxXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBwLmFsdClcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1sxXSA9IGNhclxyXG5cclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzBdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoZmlyc3RfcG9pbnQubG5nLCBmaXJzdF9wb2ludC5sYXQsIHAuYWx0KVxyXG4gICAgICAgICAgICBzaHVpcGluZy5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHNodWl6aGkucG9zaXRpb25zID0gc2h1aXpoaV9wb3NpdGlvbnNcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHhpZWJpYW5fbGluZV9wb3NpdGlvbnMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICBsZXQgeGllYmlhbiA9IHRoaXMuaWRfbWFwLmdldCh4aWViaWFuX2xpbmVfaWQpXHJcblxyXG4gICAgICAgIGlmICh4aWViaWFuX2xpbmVfcG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgeGllYmlhbi5wb3NpdGlvbnMgPSB4aWViaWFuX2xpbmVfcG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCBzaHV6aGkgPSB0aGlzLmlkX21hcC5nZXQoc2h1aXpoaV9saW5lX2lkKVxyXG4gICAgICAgICAgbGV0IHNodWlwaW5nID0gdGhpcy5pZF9tYXAuZ2V0KHNodWlwaW5nX2xpbmVfaWQpXHJcbiAgICAgICAgICBpZiAocC5hbHQgPCBmaXJzdF9wb2ludC5hbHQpIHtcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1swXSA9IGNhclxyXG4gICAgICAgICAgICBzaHV6aGkucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocC5sbmcsIHAubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG4gICAgICAgICAgICBzaHVpcGluZy5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMF0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgcC5hbHQpXHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMV0gPSBjYXJcclxuXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBwLmFsdClcclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoZmlyc3RfcG9pbnQubG5nLCBmaXJzdF9wb2ludC5sYXQsIGZpcnN0X3BvaW50LmFsdClcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzaHVpemhpLnBvc2l0aW9ucyA9IHNodWl6aGlfcG9zaXRpb25zXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnu5PmnZ/mtYvph49cclxuICAgKi9cclxuICBlbmQoKSB7XHJcbiAgICBzdXBlci5lbmQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlVHJpYW5nbGVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTriangle/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/MeasureTyArea/index.js": -/*!********************************************!*\ - !*** ./src/Measure/MeasureTyArea/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 17:28\r\n * @description:index\r\n * @update: 2022-07-11 17:28\r\n */\n\n\n/**@extends Measure*/\nvar MeasureTyArea = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 投影面积测量\r\n * */\n function MeasureTyArea(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureTyArea);\n _this = _callSuper(this, MeasureTyArea, [sdk, options]);\n _this.options.lineColor = '#ffdf53';\n _this.polygon_id = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureTyArea, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureTyArea, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTyArea, \"start\", this, 3)([]);\n this.ids = [];\n this.positions = [];\n this.text = \"\";\n this.tip.set_text('左键单击确定控制点位置,右键单击取消投影面积测量!');\n this.center = new Cesium.Cartesian3();\n this.cachePositions = [];\n var height = 0;\n var lastArea = 0;\n var lastcneter;\n var leftEvent = function leftEvent(movement, car) {\n if (_this2.ids.length === 0) {\n _this2.polygon_id = MeasureTyArea.create_polygon(_this2);\n }\n _this2.cachePositions.push(_objectSpread({}, car));\n _this2.ids.push(_this2.create_point(_objectSpread({}, car), false));\n var po = _this2.cartesian3Towgs84(_objectSpread({}, car), _this2.viewer);\n if (po.alt > height) {\n height = po.alt;\n }\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n _this2.tip.setPosition(_objectSpread({}, car), movement.position.x, movement.position.y);\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n var center = _this2.computeCenter(arr);\n var area = _this2.computeArea(arr);\n lastArea = area;\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n lastcneter = _this2.center;\n _this2.text = \"投影面积:\" + area + \" ㎡\";\n }\n if (_this2.positions.length > 3) {\n _this2.tip.set_text('左键单击确定控制点位置,右键单击完成投影面积测量!');\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this2.tip.setPosition(_objectSpread({}, car), movement.endPosition.x, movement.endPosition.y);\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n var center = _this2.computeCenter(arr);\n var area = _this2.computeArea(arr);\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n _this2.text = \"投影面积:\" + area + \" ㎡\";\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this2.positions = _this2.cachePositions;\n _this2.center = lastcneter;\n if (_this2.positions.length < 3) {\n _this2.text = \"\";\n var error = '面积计算至少需要三个坐标!';\n console.warn(error);\n window.ELEMENT && window.ELEMENT.Message({\n message: error,\n type: 'warning',\n duration: 1500\n });\n _this2.destroy();\n } else {\n _this2.text = \"投影面积:\" + lastArea + \" ㎡\";\n }\n _this2.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this2.positions = _this2.cachePositions;\n _this2.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this3 = this;\n [this.polygon_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this3.remove_entity(id);\n });\n _superPropGet(MeasureTyArea, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTyArea, \"end\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var scaleByDistance = new Cesium.NearFarScalar(2000, 1, 100000, 0);\n var e = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\n },\n position: new Cesium.CallbackProperty(function () {\n return that.center;\n }, false),\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }, false),\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.positions.length) return that.positions.concat(that.positions[0]);\n return that.positions;\n }, false),\n width: 2,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.lineColor || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTyArea);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHlBcmVhL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVR5QXJlYS9pbmRleC5qcz8zNzg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0xMSAxNzoyOFxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDE3OjI4XHJcbiAqL1xyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIlxyXG5cclxuLyoqQGV4dGVuZHMgTWVhc3VyZSovXHJcbmNsYXNzIE1lYXN1cmVUeUFyZWEgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDmipXlvbHpnaLnp6/mtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVDb2xvciA9ICcjZmZkZjUzJ1xyXG4gICAgdGhpcy5wb2x5Z29uX2lkID0gXCJcIlxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuXHJcbiAgICBsZXQgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKDIwMDAsIDEsIDEwMDAwMCwgMClcclxuXHJcbiAgICBsZXQgZSA9IHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQudGV4dFxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgICAgIGZvbnQ6ICcyMHB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmZmYnKSxcclxuICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgICAgLy/moIfms6jnmoTpga7mjKHot53nprvorr7nva7kuLoxMDDliJnop4bop5LkuI7moIfms6jnmoTot53nprvlpKfkuo4xMDDnsbPml7bkvJrmnInpga7mjKFcclxuICAgICAgICAgIC8vIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sXHJcblxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAgICAgLy8gc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQuY2VudGVyXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9ucylcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoYXQucG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnMuY29uY2F0KHRoYXQucG9zaXRpb25zWzBdKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGluZUNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgZGFzaExlbmd0aDogMjAsIC8v55+t5YiS57q/6ZW/5bqmXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLmlkcyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5oqV5b2x6Z2i56ev5rWL6YePIScpXHJcbiAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICAgIGxldCBsYXN0QXJlYSA9IDBcclxuICAgICAgbGV0IGxhc3RjbmV0ZXJcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbl9pZCA9IE1lYXN1cmVUeUFyZWEuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKHsgLi4uY2FyIH0pXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludCh7IC4uLmNhciB9LCBmYWxzZSkpXHJcbiAgICAgICAgbGV0IHBvID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh7IC4uLmNhciB9LCB0aGlzLnZpZXdlcilcclxuICAgICAgICBpZiAocG8uYWx0ID4gaGVpZ2h0KSB7XHJcbiAgICAgICAgICBoZWlnaHQgPSBwby5hbHRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBsZXQgYXJyID0gW11cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgYXJyLnB1c2goeyBsbmc6IHAubG5nLCBsYXQ6IHAubGF0IH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY29tcHV0ZUNlbnRlcihhcnIpXHJcbiAgICAgICAgICBsZXQgYXJlYSA9IHRoaXMuY29tcHV0ZUFyZWEoYXJyKVxyXG4gICAgICAgICAgbGFzdEFyZWEgPSBhcmVhXHJcbiAgICAgICAgICB0aGlzLmNlbnRlciA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXIubG5nLCBjZW50ZXIubGF0LCBoZWlnaHQpXHJcbiAgICAgICAgICBsYXN0Y25ldGVyID0gdGhpcy5jZW50ZXJcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMykge1xyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOaKleW9semdouenr+a1i+mHjyEnKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgbGV0IGFyciA9IFtdXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIGFyci5wdXNoKHsgbG5nOiBwLmxuZywgbGF0OiBwLmxhdCB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBjZW50ZXIgPSB0aGlzLmNvbXB1dGVDZW50ZXIoYXJyKVxyXG4gICAgICAgICAgbGV0IGFyZWEgPSB0aGlzLmNvbXB1dGVBcmVhKGFycilcclxuICAgICAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQsIGhlaWdodClcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICB0aGlzLmNlbnRlciA9IGxhc3RjbmV0ZXJcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICAgICAgbGV0IGVycm9yID0gJ+mdouenr+iuoeeul+iHs+WwkemcgOimgeS4ieS4quWdkOagh++8gSdcclxuICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcilcclxuICAgICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvcixcclxuICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBsYXN0QXJlYSArIFwiIOOOoVwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5rWL6YePXHJcbiAgICovXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIFt0aGlzLnBvbHlnb25faWQsIC4uLnRoaXMuaWRzXS5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICAgIHN1cGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog57uT5p2f5rWL6YePXHJcbiAgICovXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVUeUFyZWFcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOUtBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUE0SEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTyArea/index.js\n"); - -/***/ }), - -/***/ "./src/Measure/clear.js": -/*!******************************!*\ - !*** ./src/Measure/clear.js ***! - \******************************/ -/*! exports provided: Clear */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Clear\", function() { return Clear; });\n/**\r\n * @name: clear\r\n * @author: Administrator\r\n * @date: 2022-07-11 15:28\r\n * @description:clear\r\n * @update: 2022-07-11 15:28\r\n */\n\nfunction Clear() {\n YJ.Measure.Measures.forEach(function (m) {\n m.destroy();\n });\n YJ.Measure.Measures = [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9jbGVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL2NsZWFyLmpzP2NkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBjbGVhclxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA3LTExIDE1OjI4XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmNsZWFyXHJcbiAqIEB1cGRhdGU6IDIwMjItMDctMTEgMTU6MjhcclxuICovXHJcblxyXG5mdW5jdGlvbiBDbGVhcigpIHtcclxuICBZSi5NZWFzdXJlLk1lYXN1cmVzLmZvckVhY2gobSA9PiB7XHJcbiAgICBtLmRlc3Ryb3koKVxyXG4gIH0pXHJcbiAgWUouTWVhc3VyZS5NZWFzdXJlcyA9IFtdXHJcbn1cclxuXHJcbmV4cG9ydCB7Q2xlYXJ9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/clear.js\n"); - -/***/ }), - -/***/ "./src/Measure/index.js": -/*!******************************!*\ - !*** ./src/Measure/index.js ***! - \******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n/**\r\n * @name: measure\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:52\r\n * @description:measure\r\n * @update: 2022-07-11 10:52\r\n */\nvar Measure = /*#__PURE__*/function (_Tools) {\n function Measure(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n text: \"左键开始,右键结束;\"\n };\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Measure);\n _this = _callSuper(this, Measure, [sdk, options]);\n _this.options = _objectSpread({}, options);\n _this.event = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](sdk);\n _this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](options.text, sdk);\n _this.viewer = sdk.viewer;\n _this.defaultColor = 'rgba(246,49,49,0.55)';\n _this.ids = [];\n YJ.Measure.Measures.push(_this);\n _this._isDestroy = false;\n // this.pickStatus = {pick: YJ.getEarth().interaction.picking.enabled}\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Measure, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Measure, [{\n key: \"start\",\n value: function start() {\n this.setPickStatus(false);\n YJ.Measure.SetMeasureStatus(true);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n // YJ.Measure.Measures.pop()\n this._isDestroy = true;\n this.end();\n this.ids.forEach(function (id) {\n _this2.remove_entity(id);\n });\n }\n }, {\n key: \"end\",\n value: function end() {\n // this.ids.forEach(id => {\n // this.remove_entity(id)\n // })\n //还原上一次的状态\n // this.setPickStatus(this.pickStatus.pick)\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian) {\n var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var id = this.randomString();\n var p = this.cartesian3Towgs84(cartesian, this.viewer);\n this.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n show: show,\n image: this.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n }));\n return id;\n }\n }, {\n key: \"remove_entity\",\n value: function remove_entity(id) {\n this.viewer.entities.removeById(id);\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Measure);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL2luZGV4LmpzPzgxOTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSBcIi4uL0V2ZW50XCI7XHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tIFwiLi4vTW91c2VUaXBcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi9Ub29sc1wiO1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lOiBtZWFzdXJlXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMTEgMTA6NTJcclxuICogQGRlc2NyaXB0aW9u77yabWVhc3VyZVxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDEwOjUyXHJcbiAqL1xyXG5cclxuY2xhc3MgTWVhc3VyZSBleHRlbmRzIFRvb2xzIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7dGV4dDogXCLlt6bplK7lvIDlp4vvvIzlj7PplK7nu5PmnZ87XCJ9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4ub3B0aW9uc31cclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudChzZGspXHJcbiAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcChvcHRpb25zLnRleHQsIHNkaylcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy5kZWZhdWx0Q29sb3IgPSAncmdiYSgyNDYsNDksNDksMC41NSknXHJcbiAgICB0aGlzLmlkcyA9IFtdXHJcbiAgICBZSi5NZWFzdXJlLk1lYXN1cmVzLnB1c2godGhpcylcclxuICAgIHRoaXMuX2lzRGVzdHJveSA9IGZhbHNlXHJcbiAgICAvLyB0aGlzLnBpY2tTdGF0dXMgPSB7cGljazogWUouZ2V0RWFydGgoKS5pbnRlcmFjdGlvbi5waWNraW5nLmVuYWJsZWR9XHJcbiAgfVxyXG5cclxuICBzdGFydCgpIHtcclxuICAgIHRoaXMuc2V0UGlja1N0YXR1cyhmYWxzZSlcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIC8vIFlKLk1lYXN1cmUuTWVhc3VyZXMucG9wKClcclxuICAgIHRoaXMuX2lzRGVzdHJveSA9IHRydWVcclxuICAgIHRoaXMuZW5kKClcclxuICAgIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGVuZCgpIHtcclxuICAgIC8vIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgLy8gICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICAvLyB9KVxyXG4gICAgLy/ov5jljp/kuIrkuIDmrKHnmoTnirbmgIFcclxuICAgIC8vIHRoaXMuc2V0UGlja1N0YXR1cyh0aGlzLnBpY2tTdGF0dXMucGljaylcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcbiAgICB0aGlzLmV2ZW50ID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlX3BvaW50KGNhcnRlc2lhbixzaG93ID0gdHJ1ZSkge1xyXG4gICAgbGV0IGlkID0gdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgc2hvdzogc2hvdyxcclxuICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICByZW1vdmVfZW50aXR5KGlkKSB7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmVCeUlkKGlkKVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/index.js\n"); - -/***/ }), - -/***/ "./src/MouseTip/index.js": -/*!*******************************!*\ - !*** ./src/MouseTip/index.js ***! - \*******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MouseTip; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n\n\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-06-14 14:37\r\n * @description:index\r\n * @update: 2022-06-14 14:37\r\n */\n\n\n//鼠标tip\nvar MouseTip = /*#__PURE__*/function () {\n function MouseTip() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '左键开始,右键结束';\n var sdk = arguments.length > 1 ? arguments[1] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MouseTip);\n this.point = undefined;\n this.text = text;\n this.div = undefined;\n this.mouse_type = 0;\n this.position = new Cesium.Cartesian3();\n this.viewer = sdk.viewer;\n this.create_tip(this.viewer);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MouseTip, [{\n key: \"set_text\",\n value: function set_text(text) {\n var textElm = this.div.getElementsByTagName('p')[0];\n textElm.innerText = text;\n }\n }, {\n key: \"get_mouse_style\",\n value: function get_mouse_style(type) {\n var url = 'lib/img/';\n var style = ''; //默认的鼠标箭头样式\n switch (type) {\n case 1:\n style = 'move.png'; //移动样式\n break;\n default:\n style = 'arrow.png';\n break;\n }\n return 'url(' + url + style + '),auto';\n }\n }, {\n key: \"create_tip\",\n value: function create_tip(viewer) {\n // let tool = new Tools()\n // this.point = viewer.entities.add(\n // new Cesium.Entity({\n // position: new Cesium.CallbackProperty(() => {\n // return this.position\n // }, false),\n // billboard: {\n // image: tool.getSourceRootPath() + '/img/point.png',\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: 100000000\n // }\n // })\n // )\n // tool = null\n // this.style_tip(viewer, this.mouse_type)\n this.create_tooltip();\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position, x, y) {\n this.position = position;\n this.move_tooltip(x, y);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.viewer.entities.remove(this.point);\n this.remove_tooltip();\n // this.style_tip(viewer)\n }\n }, {\n key: \"create_tooltip\",\n value: function create_tooltip() {\n var tool = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n this.div = document.createElement('div');\n var c = \"#ec131a\";\n this.div.setAttribute('style', 'position: absolute;z-index: 777;color: ' + c + ';left:10px;top:0px;pointer-events: none;');\n var textElm = document.createElement('p');\n textElm.style.margin = '0px';\n textElm.style.padding = '0px';\n textElm.innerText = this.text;\n this.div.appendChild(textElm);\n var imgElm = document.createElement('div');\n imgElm.style.width = '12px';\n imgElm.style.height = '12px';\n imgElm.style.background = \"url(\".concat(tool.getSourceRootPath() + '/img/point.png', \") 100% 100% no-repeat\");\n imgElm.style.backgroundSize = '100% 100%';\n imgElm.style.position = 'absolute';\n imgElm.style.left = '-36px';\n imgElm.style.top = '-4px';\n this.div.style.display = 'none';\n this.div.appendChild(imgElm);\n tool = null;\n document.querySelector('body').appendChild(this.div);\n }\n\n /*移动时的鼠标样式*/\n }, {\n key: \"style_tip\",\n value: function style_tip(viewer) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n viewer._element.style.cursor = this.get_mouse_style(type);\n }\n }, {\n key: \"remove_tooltip\",\n value: function remove_tooltip() {\n document.querySelector('body').contains(this.div) && document.querySelector('body').removeChild(this.div);\n }\n }, {\n key: \"move_tooltip\",\n value: function move_tooltip(x, y) {\n var top = 0;\n var left = 0;\n this.div.style.display = 'block';\n if (this.viewer && this.viewer._element) {\n var element = this.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0];\n top = element.getBoundingClientRect().top + window.scrollY;\n left = element.getBoundingClientRect().left + window.scrollX;\n }\n this.div.style.left = x + 30 + left + 'px';\n this.div.style.top = y + top + 'px';\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTW91c2VUaXAvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW91c2VUaXAvaW5kZXguanM/MzU1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDYtMTQgMTQ6MzdcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNCAxNDozN1xyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi9Ub29sc1wiO1xyXG5cclxuLy/pvKDmoId0aXBcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW91c2VUaXAge1xyXG4gIGNvbnN0cnVjdG9yKHRleHQgPSAn5bem6ZSu5byA5aeL77yM5Y+z6ZSu57uT5p2fJywgc2RrKSB7XHJcbiAgICB0aGlzLnBvaW50ID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0XHJcbiAgICB0aGlzLmRpdiA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5tb3VzZV90eXBlID0gMFxyXG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLmNyZWF0ZV90aXAodGhpcy52aWV3ZXIpXHJcbiAgfVxyXG5cclxuICBzZXRfdGV4dCh0ZXh0KSB7XHJcbiAgICBsZXQgdGV4dEVsbSA9IHRoaXMuZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF1cclxuICAgIHRleHRFbG0uaW5uZXJUZXh0ID0gdGV4dFxyXG4gIH1cclxuXHJcbiAgZ2V0X21vdXNlX3N0eWxlKHR5cGUpIHtcclxuICAgIGxldCB1cmwgPSAnbGliL2ltZy8nXHJcbiAgICBsZXQgc3R5bGUgPSAnJyAvL+m7mOiupOeahOm8oOagh+eureWktOagt+W8j1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBzdHlsZSA9ICdtb3ZlLnBuZycgLy/np7vliqjmoLflvI9cclxuICAgICAgICBicmVha1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdHlsZSA9ICdhcnJvdy5wbmcnXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIHJldHVybiAndXJsKCcgKyB1cmwgKyBzdHlsZSArICcpLGF1dG8nXHJcbiAgfVxyXG5cclxuICBjcmVhdGVfdGlwKHZpZXdlcikge1xyXG4gICAgLy8gbGV0IHRvb2wgPSBuZXcgVG9vbHMoKVxyXG4gICAgLy8gdGhpcy5wb2ludCA9IHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAvLyAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgIC8vICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uXHJcbiAgICAvLyAgICAgfSwgZmFsc2UpLFxyXG4gICAgLy8gICAgIGJpbGxib2FyZDoge1xyXG4gICAgLy8gICAgICAgaW1hZ2U6IHRvb2wuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAvLyAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgIC8vICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogMTAwMDAwMDAwXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gdG9vbCA9IG51bGxcclxuICAgIC8vIHRoaXMuc3R5bGVfdGlwKHZpZXdlciwgdGhpcy5tb3VzZV90eXBlKVxyXG4gICAgdGhpcy5jcmVhdGVfdG9vbHRpcCgpXHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbihwb3NpdGlvbiwgeCwgeSkge1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICB0aGlzLm1vdmVfdG9vbHRpcCh4LCB5KVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnBvaW50KVxyXG4gICAgdGhpcy5yZW1vdmVfdG9vbHRpcCgpXHJcbiAgICAvLyB0aGlzLnN0eWxlX3RpcCh2aWV3ZXIpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVfdG9vbHRpcCgpIHtcclxuICAgIGxldCB0b29sID0gbmV3IFRvb2xzKClcclxuICAgIHRoaXMuZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGxldCBjID0gXCIjZWMxMzFhXCJcclxuICAgIHRoaXMuZGl2LnNldEF0dHJpYnV0ZShcclxuICAgICAgJ3N0eWxlJyxcclxuICAgICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiA3Nzc7Y29sb3I6ICcgKyBjICsgJztsZWZ0OjEwcHg7dG9wOjBweDtwb2ludGVyLWV2ZW50czogbm9uZTsnXHJcbiAgICApXHJcbiAgICBsZXQgdGV4dEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKVxyXG4gICAgdGV4dEVsbS5zdHlsZS5tYXJnaW4gPSAnMHB4J1xyXG4gICAgdGV4dEVsbS5zdHlsZS5wYWRkaW5nID0gJzBweCdcclxuICAgIHRleHRFbG0uaW5uZXJUZXh0ID0gdGhpcy50ZXh0XHJcbiAgICB0aGlzLmRpdi5hcHBlbmRDaGlsZCh0ZXh0RWxtKVxyXG4gICAgbGV0IGltZ0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICBpbWdFbG0uc3R5bGUud2lkdGggPSAnMTJweCdcclxuICAgIGltZ0VsbS5zdHlsZS5oZWlnaHQgPSAnMTJweCdcclxuICAgIGltZ0VsbS5zdHlsZS5iYWNrZ3JvdW5kID0gYHVybCgke3Rvb2wuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZyd9KSAxMDAlIDEwMCUgbm8tcmVwZWF0YFxyXG4gICAgaW1nRWxtLnN0eWxlLmJhY2tncm91bmRTaXplID0gJzEwMCUgMTAwJSdcclxuICAgIGltZ0VsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIGltZ0VsbS5zdHlsZS5sZWZ0ID0gJy0zNnB4J1xyXG4gICAgaW1nRWxtLnN0eWxlLnRvcCA9ICctNHB4J1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgdGhpcy5kaXYuYXBwZW5kQ2hpbGQoaW1nRWxtKVxyXG4gICAgdG9vbCA9IG51bGxcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5hcHBlbmRDaGlsZCh0aGlzLmRpdilcclxuICB9XHJcblxyXG4gIC8q56e75Yqo5pe255qE6byg5qCH5qC35byPKi9cclxuICBzdHlsZV90aXAodmlld2VyLCB0eXBlID0gMCkge1xyXG4gICAgdmlld2VyLl9lbGVtZW50LnN0eWxlLmN1cnNvciA9IHRoaXMuZ2V0X21vdXNlX3N0eWxlKHR5cGUpXHJcbiAgfVxyXG5cclxuICByZW1vdmVfdG9vbHRpcCgpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5jb250YWlucyh0aGlzLmRpdikgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLnJlbW92ZUNoaWxkKHRoaXMuZGl2KVxyXG4gIH1cclxuXHJcbiAgbW92ZV90b29sdGlwKHgsIHkpIHtcclxuICAgIGxldCB0b3AgPSAwXHJcbiAgICBsZXQgbGVmdCA9IDBcclxuICAgIHRoaXMuZGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcblxyXG4gICAgaWYgKHRoaXMudmlld2VyICYmIHRoaXMudmlld2VyLl9lbGVtZW50KSB7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gICAgICB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZXHJcbiAgICAgIGxlZnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGl2LnN0eWxlLmxlZnQgPSB4ICsgMzAgKyBsZWZ0ICsgJ3B4J1xyXG4gICAgdGhpcy5kaXYuc3R5bGUudG9wID0geSArIHRvcCArICdweCdcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/MouseTip/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/AirLine/DrawTakeOff.js": -/*!****************************************!*\ - !*** ./src/Obj/AirLine/DrawTakeOff.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _MouseTip_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../MouseTip/index */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Draw_draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Draw/draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar DrawTakeOff = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @desc 获取坐标点\r\n * */\n function DrawTakeOff(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawTakeOff);\n _this = _callSuper(this, DrawTakeOff, [sdk, options]);\n _this.options.tipText = options.tipText ? options.tipText : '左键确定,右键结束;';\n return _this;\n }\n\n /**\r\n * @desc 开始动态获取坐标点\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPoint\r\n * @example draw.start((err,position)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(DrawTakeOff, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawTakeOff, [{\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n // eslint-disable-next-line no-undef\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var car = undefined;\n // eslint-disable-next-line no-undef\n YJ.Measure.SetMeasureStatus(true);\n // this.options\n this.tip = new _MouseTip_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.options.tipText, this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.isEntity = false;\n this.event.mouse_left(function (movement, cartesian) {\n _this2.end();\n var p = _this2.cartesian3Towgs84(car || cartesian, _this2.viewer);\n var pickedObject = _this2.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id.id === window.airportEntity.options.id) {\n _this2.isEntity = true;\n }\n cb(null, p, _this2.isEntity);\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this2.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n _this2.end();\n var p = _this2.cartesian3Towgs84(car || cartesian, _this2.viewer);\n cb(null, p);\n }\n });\n });\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.event.destroy();\n this.tip.destroy();\n }\n }]);\n}(_Draw_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawTakeOff);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvRHJhd1Rha2VPZmYuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FpckxpbmUvRHJhd1Rha2VPZmYuanM/NzgwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vTW91c2VUaXAvaW5kZXgnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuLi8uLi9EcmF3L2RyYXcnXHJcblxyXG5jbGFzcyBEcmF3VGFrZU9mZiBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBkZXNjIOiOt+WPluWdkOagh+eCuVxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy50aXBUZXh0ID0gb3B0aW9ucy50aXBUZXh0XHJcbiAgICAgID8gb3B0aW9ucy50aXBUZXh0XHJcbiAgICAgIDogJ+W3pumUruehruWumu+8jOWPs+mUrue7k+adn++8mydcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgeiOt+WPluWdkOagh+eCuVxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvaW50XHJcbiAgICogQGV4YW1wbGUgZHJhdy5zdGFydCgoZXJyLHBvc2l0aW9uKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG5cclxuICBzdGFydChjYikge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgY2FyID0gdW5kZWZpbmVkXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgLy8gdGhpcy5vcHRpb25zXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMub3B0aW9ucy50aXBUZXh0LCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmlzRW50aXR5ID0gZmFsc2VcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICB2YXIgcGlja2VkT2JqZWN0ID0gdGhpcy52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QpICYmXHJcbiAgICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QuaWQpICYmXHJcbiAgICAgICAgICBwaWNrZWRPYmplY3QuaWQuaWQgPT09IHdpbmRvdy5haXJwb3J0RW50aXR5Lm9wdGlvbnMuaWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaXNFbnRpdHkgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNiKG51bGwsIHAsIHRoaXMuaXNFbnRpdHkpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGNhciA9IGNhcnRlc2lhblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciB8fCBjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjYihudWxsLCBwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQoKSB7XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3VGFrZU9mZlxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/DrawTakeOff.js\n"); - -/***/ }), - -/***/ "./src/Obj/AirLine/billord_point_line.js": -/*!***********************************************!*\ - !*** ./src/Obj/AirLine/billord_point_line.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BillordPointLine; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar BillordPointLine = /*#__PURE__*/function () {\n function BillordPointLine(options, viewer) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, BillordPointLine);\n this.options = _objectSpread({}, options);\n this.pointEntity = null;\n this.billboardEntity = null;\n this.lineEntity = null;\n this.updatedPosition = [];\n this.pointUpdatedPosition = [];\n this.viewer = viewer;\n this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);\n this.pinBuilder = new Cesium.PinBuilder();\n this.index = null;\n //定义屏幕点击事件处理器\n BillordPointLine.setDefaultValue(this);\n BillordPointLine.init(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(BillordPointLine, [{\n key: \"changeAltitude\",\n value:\n // 改变高度\n function changeAltitude() {\n var isMouseDown = false;\n var startPosition;\n var initialHeight;\n var that = this;\n var HHH = false;\n // 标识Alt键是否被按下\n document.addEventListener('keydown', function (event) {\n var key = event.key; // 获取按下的键名\n // 检查特定键是否被按下\n if (key === 'h') {\n HHH = true;\n }\n });\n document.addEventListener('keyup', function (event) {\n HHH = false;\n });\n // 按下鼠标左键\n this.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n isMouseDown = true;\n startPosition = movement.position;\n\n // 获取Billboard当前的地理高度\n var positionCartographic = Cesium.Cartographic.fromCartesian(that.billboardEntity.position.getValue());\n initialHeight = positionCartographic.height;\n }\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n // 移动鼠标\n this.handler.setInputAction(function (movement) {\n if (isMouseDown && HHH == false) {\n // 移动位置\n var newCartesian = that.viewer.scene.pickPosition(movement.endPosition);\n that.disableCameraDrag(that.viewer, false);\n if (newCartesian) {\n var newCartographic = Cesium.Cartographic.fromCartesian(newCartesian);\n // 保持高度不变\n var newLongitude = newCartographic.longitude;\n var newLatitude = newCartographic.latitude;\n var updatedPosition = Cesium.Cartesian3.fromRadians(newLongitude, newLatitude, initialHeight);\n var pointUpdatedPosition = Cesium.Cartesian3.fromRadians(newLongitude, newLatitude, 0);\n that.billboardEntity.position = new Cesium.CallbackProperty(function () {\n return updatedPosition;\n }, false);\n that.billboardEntity.label.text = \"Lat: \".concat(Cesium.Math.toDegrees(newLongitude).toFixed(6), \"\\nLon: \").concat(Cesium.Math.toDegrees(newLatitude).toFixed(6), \"\\nAlt: \").concat(initialHeight.toFixed(2), \"m\");\n that.pointEntity.position = new Cesium.CallbackProperty(function () {\n return pointUpdatedPosition;\n }, false);\n }\n }\n if (isMouseDown && HHH) {\n console.log(HHH);\n // 改变高度\n var endPosition = movement.endPosition;\n var deltaY = startPosition.y - endPosition.y; // 计算Y轴方向上的移动距离\n // 根据鼠标移动的距离来调整高度\n var newHeight = initialHeight + deltaY;\n // 更新billboard位置\n var positionCartographic = Cesium.Cartographic.fromCartesian(that.billboardEntity.position.getValue());\n var newPosition = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(positionCartographic.longitude), Cesium.Math.toDegrees(positionCartographic.latitude), newHeight);\n // 禁用相机\n that.disableCameraDrag(that.viewer, false);\n that.billboardEntity.position = new Cesium.CallbackProperty(function () {\n return newPosition;\n }, false);\n that.billboardEntity.label.text = \"Lat: \".concat(Cesium.Math.toDegrees(positionCartographic.longitude).toFixed(6), \"\\nLon: \").concat(Cesium.Math.toDegrees(positionCartographic.latitude).toFixed(6), \"\\nAlt: \").concat(newHeight.toFixed(2), \"m\");\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // 松开鼠标左键\n this.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n isMouseDown = false; // 禁用相机\n HHH = false; //\n that.disableCameraDrag(that.viewer, true);\n // 更新frustum的位置\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n if (that.options.saveFun) {\n that.options.saveFun(null, false);\n }\n if (that.options.selectFun) {\n that.options.selectFun(that.billboardEntity.index - 1);\n }\n that.options.frustum.updatePositionHeight(that.billboardEntity.position.getValue());\n }\n }, Cesium.ScreenSpaceEventType.LEFT_UP);\n }\n }, {\n key: \"disableCameraDrag\",\n value: function disableCameraDrag(viewer, bool) {\n viewer.scene.screenSpaceCameraController.enableRotate = bool;\n viewer.scene.screenSpaceCameraController.enableTranslate = bool;\n viewer.scene.screenSpaceCameraController.enableZoom = bool;\n viewer.scene.screenSpaceCameraController.enableTilt = bool;\n viewer.scene.screenSpaceCameraController.enableLook = bool;\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n }\n /**\r\n * @param {boolean} bool\r\n */,\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.pointEntity.show = bool;\n this.billboardEntity.show = bool;\n this.lineEntity.show = bool;\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.viewer.entities.remove(this.pointEntity);\n this.viewer.entities.remove(this.billboardEntity);\n this.viewer.entities.remove(this.lineEntity);\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$keyboar;\n that.options.positions = that.options.positions || {};\n that.options.normalHeight = that.options.normalHeight || 100;\n that.options.airHeight = that.options.airHeight || 100;\n that.options.image = that.options.image || '/static/img/cluster2.png';\n that.options.show = that.options.show || true;\n that.options.index = that.options.index || 1;\n that.options.saveFun = that.options.saveFun || null;\n that.options.selectFun = that.options.selectFun || null;\n that.options.keyboard = (_that$options$keyboar = that.options.keyboard) !== null && _that$options$keyboar !== void 0 ? _that$options$keyboar : true;\n that.options.updateFrustumFun = that.options.updateFrustumFun || null;\n that.options.frustum = that.options.frustum || null;\n }\n }, {\n key: \"init\",\n value: function init(that) {\n var positions = that.options.positions;\n // 添加一个Point,稍微偏离地面高度,使其完全可见\n that.pointEntity = that.viewer.entities.add({\n show: that.options.show,\n position: Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, 0),\n // 地面上\n point: {\n pixelSize: 8,\n color: Cesium.Color.WITHE,\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n // 使用相对地面或贴地,\n disableDepthTestDistance: 0\n }\n });\n //\n var pinIndex = that.pinBuilder.fromText(that.options.index, Cesium.Color.fromCssColorString('#00d590'), 36).toDataURL();\n var altitude = 0;\n if (positions.altitude) {\n altitude = positions.altitude;\n } else {\n altitude = that.options.normalHeight;\n }\n // 添加一个Billboard\n that.billboardEntity = that.viewer.entities.add({\n show: that.options.show,\n position: Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, positions.alt + that.options.normalHeight),\n // 判断altitude是否有值\n\n label: {\n text: \"Lat: \".concat(positions.lng.toFixed(8), \"\\nLon: \").concat(positions.lat.toFixed(8), \"\\nAlt: \").concat(altitude.toFixed(8), \"m\"),\n font: '14px sans-serif',\n fillColor: Cesium.Color.YELLOW,\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 2,\n pixelOffset: new Cesium.Cartesian2(0, -60),\n // 标签偏移量,防止重叠\n heightReference: Cesium.HeightReference.RELATIVE_TO_TERRAIN,\n // 确保标签与地面贴合\n show: false\n },\n billboard: {\n image: pinIndex,\n // 示例图像路径\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // 图像底部对齐\n width: 36,\n height: 36\n },\n index: that.options.index\n });\n\n // 创建一个连接Point和Billboard的竖线\n that.lineEntity = that.viewer.entities.add({\n show: that.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return [that.pointEntity.position.getValue(), that.billboardEntity.position.getValue()];\n }, false),\n width: 1,\n material: new Cesium.PolylineOutlineMaterialProperty({\n outlineColor: Cesium.Color.GAINSBORO,\n outlineWidth: 1,\n color: Cesium.Color.WITHE\n }),\n zIndex: 99999999\n }\n });\n if (that.options.keyboard) {\n that.changeAltitude();\n }\n that.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n if (that.options.selectFun) {\n that.options.selectFun(that.billboardEntity.index - 1);\n }\n }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvYmlsbG9yZF9wb2ludF9saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BaXJMaW5lL2JpbGxvcmRfcG9pbnRfbGluZS5qcz85NDIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpbGxvcmRQb2ludExpbmUge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMsIHZpZXdlcikge1xyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMucG9pbnRFbnRpdHkgPSBudWxsXHJcbiAgICB0aGlzLmJpbGxib2FyZEVudGl0eSA9IG51bGxcclxuICAgIHRoaXMubGluZUVudGl0eSA9IG51bGxcclxuICAgIHRoaXMudXBkYXRlZFBvc2l0aW9uID0gW11cclxuICAgIHRoaXMucG9pbnRVcGRhdGVkUG9zaXRpb24gPSBbXVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMuaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIodmlld2VyLnNjZW5lLmNhbnZhcylcclxuICAgIHRoaXMucGluQnVpbGRlciA9IG5ldyBDZXNpdW0uUGluQnVpbGRlcigpXHJcbiAgICB0aGlzLmluZGV4ID0gbnVsbFxyXG4gICAgLy/lrprkuYnlsY/luZXngrnlh7vkuovku7blpITnkIblmahcclxuICAgIEJpbGxvcmRQb2ludExpbmUuc2V0RGVmYXVsdFZhbHVlKHRoaXMpXHJcbiAgICBCaWxsb3JkUG9pbnRMaW5lLmluaXQodGhpcylcclxuICB9XHJcbiAgc3RhdGljIHNldERlZmF1bHRWYWx1ZSh0aGF0KSB7XHJcbiAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9ucyB8fCB7fVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYWlySGVpZ2h0ID0gdGhhdC5vcHRpb25zLmFpckhlaWdodCB8fCAxMDBcclxuICAgIHRoYXQub3B0aW9ucy5pbWFnZSA9IHRoYXQub3B0aW9ucy5pbWFnZSB8fCAnL3N0YXRpYy9pbWcvY2x1c3RlcjIucG5nJ1xyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyB8fCB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMuaW5kZXggPSB0aGF0Lm9wdGlvbnMuaW5kZXggfHwgMVxyXG4gICAgdGhhdC5vcHRpb25zLnNhdmVGdW4gPSB0aGF0Lm9wdGlvbnMuc2F2ZUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuc2VsZWN0RnVuID0gdGhhdC5vcHRpb25zLnNlbGVjdEZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPSB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLnVwZGF0ZUZydXN0dW1GdW4gPSB0aGF0Lm9wdGlvbnMudXBkYXRlRnJ1c3R1bUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bSA9IHRoYXQub3B0aW9ucy5mcnVzdHVtIHx8IG51bGxcclxuICB9XHJcbiAgc3RhdGljIGluaXQodGhhdCkge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIC8vIOa3u+WKoOS4gOS4qlBvaW5077yM56iN5b6u5YGP56a75Zyw6Z2i6auY5bqm77yM5L2/5YW25a6M5YWo5Y+v6KeBXHJcbiAgICB0aGF0LnBvaW50RW50aXR5ID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnMubG5nLCBwb3NpdGlvbnMubGF0LCAwKSwgLy8g5Zyw6Z2i5LiKXHJcbiAgICAgIHBvaW50OiB7XHJcbiAgICAgICAgcGl4ZWxTaXplOiA4LFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0lUSEUsXHJcbiAgICAgICAgaGVpZ2h0UmVmZXJlbmNlOiBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORCwgLy8g5L2/55So55u45a+55Zyw6Z2i5oiW6LS05Zyw77yMXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiAwXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvL1xyXG4gICAgbGV0IHBpbkluZGV4ID0gdGhhdC5waW5CdWlsZGVyXHJcbiAgICAgIC5mcm9tVGV4dChcclxuICAgICAgICB0aGF0Lm9wdGlvbnMuaW5kZXgsXHJcbiAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZDU5MCcpLFxyXG4gICAgICAgIDM2XHJcbiAgICAgIClcclxuICAgICAgLnRvRGF0YVVSTCgpXHJcbiAgICBsZXQgYWx0aXR1ZGUgPSAwXHJcbiAgICBpZiAocG9zaXRpb25zLmFsdGl0dWRlKSB7XHJcbiAgICAgIGFsdGl0dWRlID0gcG9zaXRpb25zLmFsdGl0dWRlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbHRpdHVkZSA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgIH1cclxuICAgIC8vIOa3u+WKoOS4gOS4qkJpbGxib2FyZFxyXG4gICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHBvc2l0aW9ucy5sbmcsXHJcbiAgICAgICAgcG9zaXRpb25zLmxhdCxcclxuICAgICAgICBwb3NpdGlvbnMuYWx0ICsgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodFxyXG4gICAgICApLFxyXG4gICAgICAvLyDliKTmlq1hbHRpdHVkZeaYr+WQpuacieWAvFxyXG5cclxuICAgICAgbGFiZWw6IHtcclxuICAgICAgICB0ZXh0OiBgTGF0OiAke3Bvc2l0aW9ucy5sbmcudG9GaXhlZCg4KX1cXG5Mb246ICR7cG9zaXRpb25zLmxhdC50b0ZpeGVkKFxyXG4gICAgICAgICAgOFxyXG4gICAgICAgICl9XFxuQWx0OiAke2FsdGl0dWRlLnRvRml4ZWQoOCl9bWAsXHJcbiAgICAgICAgZm9udDogJzE0cHggc2Fucy1zZXJpZicsXHJcbiAgICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkJMQUNLLFxyXG4gICAgICAgIG91dGxpbmVXaWR0aDogMixcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC02MCksIC8vIOagh+etvuWBj+enu+mHj++8jOmYsuatoumHjeWPoFxyXG4gICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5SRUxBVElWRV9UT19URVJSQUlOLCAvLyDnoa7kv53moIfnrb7kuI7lnLDpnaLotLTlkIhcclxuICAgICAgICBzaG93OiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICBpbWFnZTogcGluSW5kZXgsIC8vIOekuuS+i+WbvuWDj+i3r+W+hFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLCAvLyDlm77lg4/lupXpg6jlr7npvZBcclxuICAgICAgICB3aWR0aDogMzYsXHJcbiAgICAgICAgaGVpZ2h0OiAzNlxyXG4gICAgICB9LFxyXG4gICAgICBpbmRleDogdGhhdC5vcHRpb25zLmluZGV4XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIOWIm+W7uuS4gOS4qui/nuaOpVBvaW505ZKMQmlsbGJvYXJk55qE56uW57q/XHJcbiAgICB0aGF0LmxpbmVFbnRpdHkgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB0aGF0LnBvaW50RW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRoYXQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIF1cclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVPdXRsaW5lTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5HQUlOU0JPUk8sXHJcbiAgICAgICAgICBvdXRsaW5lV2lkdGg6IDEsXHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldJVEhFXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5rZXlib2FyZCkge1xyXG4gICAgICB0aGF0LmNoYW5nZUFsdGl0dWRlKClcclxuICAgIH1cclxuICAgIHRoYXQuaGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbihtb3ZlbWVudCkge1xyXG4gICAgICB2YXIgcGlja2VkT2JqZWN0ID0gdGhhdC52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKFxyXG4gICAgICAgIENlc2l1bS5kZWZpbmVkKHBpY2tlZE9iamVjdCkgJiZcclxuICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QuaWQpICYmXHJcbiAgICAgICAgcGlja2VkT2JqZWN0LmlkID09PSB0aGF0LmJpbGxib2FyZEVudGl0eVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAodGhhdC5vcHRpb25zLnNlbGVjdEZ1bikge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnNlbGVjdEZ1bih0aGF0LmJpbGxib2FyZEVudGl0eS5pbmRleCAtIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICB9XHJcbiAgLy8g5pS55Y+Y6auY5bqmXHJcbiAgY2hhbmdlQWx0aXR1ZGUoKSB7XHJcbiAgICB2YXIgaXNNb3VzZURvd24gPSBmYWxzZVxyXG4gICAgdmFyIHN0YXJ0UG9zaXRpb25cclxuICAgIHZhciBpbml0aWFsSGVpZ2h0XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGxldCBISEggPSBmYWxzZVxyXG4gICAgLy8g5qCH6K+GQWx06ZSu5piv5ZCm6KKr5oyJ5LiLXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IC8vIOiOt+WPluaMieS4i+eahOmUruWQjVxyXG4gICAgICAvLyDmo4Dmn6XnibnlrprplK7mmK/lkKbooqvmjInkuItcclxuICAgICAgaWYgKGtleSA9PT0gJ2gnKSB7XHJcbiAgICAgICAgSEhIID0gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICBISEggPSBmYWxzZVxyXG4gICAgfSlcclxuICAgIC8vIOaMieS4i+m8oOagh+W3pumUrlxyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIHZhciBwaWNrZWRPYmplY3QgPSB0aGF0LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgQ2VzaXVtLmRlZmluZWQocGlja2VkT2JqZWN0KSAmJlxyXG4gICAgICAgIENlc2l1bS5kZWZpbmVkKHBpY2tlZE9iamVjdC5pZCkgJiZcclxuICAgICAgICBwaWNrZWRPYmplY3QuaWQgPT09IHRoYXQuYmlsbGJvYXJkRW50aXR5XHJcbiAgICAgICkge1xyXG4gICAgICAgIGlzTW91c2VEb3duID0gdHJ1ZVxyXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvblxyXG5cclxuICAgICAgICAvLyDojrflj5ZCaWxsYm9hcmTlvZPliY3nmoTlnLDnkIbpq5jluqZcclxuICAgICAgICB2YXIgcG9zaXRpb25DYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oXHJcbiAgICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGluaXRpYWxIZWlnaHQgPSBwb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLkxFRlRfRE9XTilcclxuICAgIC8vIOenu+WKqOm8oOagh1xyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIGlmIChpc01vdXNlRG93biAmJiBISEggPT0gZmFsc2UpIHtcclxuICAgICAgICAvLyDnp7vliqjkvY3nva5cclxuICAgICAgICB2YXIgbmV3Q2FydGVzaWFuID0gdGhhdC52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LmVuZFBvc2l0aW9uKVxyXG4gICAgICAgIHRoYXQuZGlzYWJsZUNhbWVyYURyYWcodGhhdC52aWV3ZXIsIGZhbHNlKVxyXG4gICAgICAgIGlmIChuZXdDYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgIHZhciBuZXdDYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4obmV3Q2FydGVzaWFuKVxyXG4gICAgICAgICAgLy8g5L+d5oyB6auY5bqm5LiN5Y+YXHJcbiAgICAgICAgICB2YXIgbmV3TG9uZ2l0dWRlID0gbmV3Q2FydG9ncmFwaGljLmxvbmdpdHVkZVxyXG4gICAgICAgICAgdmFyIG5ld0xhdGl0dWRlID0gbmV3Q2FydG9ncmFwaGljLmxhdGl0dWRlXHJcbiAgICAgICAgICB2YXIgdXBkYXRlZFBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbVJhZGlhbnMoXHJcbiAgICAgICAgICAgIG5ld0xvbmdpdHVkZSxcclxuICAgICAgICAgICAgbmV3TGF0aXR1ZGUsXHJcbiAgICAgICAgICAgIGluaXRpYWxIZWlnaHRcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHZhciBwb2ludFVwZGF0ZWRQb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKFxyXG4gICAgICAgICAgICBuZXdMb25naXR1ZGUsXHJcbiAgICAgICAgICAgIG5ld0xhdGl0dWRlLFxyXG4gICAgICAgICAgICAwXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkUG9zaXRpb25cclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkubGFiZWwudGV4dCA9IGBMYXQ6ICR7Q2VzaXVtLk1hdGgudG9EZWdyZWVzKFxyXG4gICAgICAgICAgICBuZXdMb25naXR1ZGVcclxuICAgICAgICAgICkudG9GaXhlZCg2KX1cXG5Mb246ICR7Q2VzaXVtLk1hdGgudG9EZWdyZWVzKG5ld0xhdGl0dWRlKS50b0ZpeGVkKFxyXG4gICAgICAgICAgICA2XHJcbiAgICAgICAgICApfVxcbkFsdDogJHtpbml0aWFsSGVpZ2h0LnRvRml4ZWQoMil9bWBcclxuICAgICAgICAgIHRoYXQucG9pbnRFbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcG9pbnRVcGRhdGVkUG9zaXRpb25cclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNNb3VzZURvd24gJiYgSEhIKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coSEhIKVxyXG4gICAgICAgIC8vIOaUueWPmOmrmOW6plxyXG4gICAgICAgIHZhciBlbmRQb3NpdGlvbiA9IG1vdmVtZW50LmVuZFBvc2l0aW9uXHJcbiAgICAgICAgdmFyIGRlbHRhWSA9IHN0YXJ0UG9zaXRpb24ueSAtIGVuZFBvc2l0aW9uLnkgLy8g6K6h566XWei9tOaWueWQkeS4iueahOenu+WKqOi3neemu1xyXG4gICAgICAgIC8vIOagueaNrum8oOagh+enu+WKqOeahOi3neemu+adpeiwg+aVtOmrmOW6plxyXG4gICAgICAgIHZhciBuZXdIZWlnaHQgPSBpbml0aWFsSGVpZ2h0ICsgZGVsdGFZXHJcbiAgICAgICAgLy8g5pu05pawYmlsbGJvYXJk5L2N572uXHJcbiAgICAgICAgdmFyIHBvc2l0aW9uQ2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKFxyXG4gICAgICAgICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICAgIClcclxuICAgICAgICB2YXIgbmV3UG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhwb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlKSxcclxuICAgICAgICAgIG5ld0hlaWdodFxyXG4gICAgICAgIClcclxuICAgICAgICAvLyDnpoHnlKjnm7jmnLpcclxuICAgICAgICB0aGF0LmRpc2FibGVDYW1lcmFEcmFnKHRoYXQudmlld2VyLCBmYWxzZSlcclxuICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3UG9zaXRpb25cclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5sYWJlbC50ZXh0ID0gYExhdDogJHtDZXNpdW0uTWF0aC50b0RlZ3JlZXMoXHJcbiAgICAgICAgICBwb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGVcclxuICAgICAgICApLnRvRml4ZWQoNil9XFxuTG9uOiAke0Nlc2l1bS5NYXRoLnRvRGVncmVlcyhcclxuICAgICAgICAgIHBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlXHJcbiAgICAgICAgKS50b0ZpeGVkKDYpfVxcbkFsdDogJHtuZXdIZWlnaHQudG9GaXhlZCgyKX1tYFxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSlcclxuICAgIC8vIOadvuW8gOm8oOagh+W3pumUrlxyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIHZhciBwaWNrZWRPYmplY3QgPSB0aGF0LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICBpc01vdXNlRG93biA9IGZhbHNlIC8vIOemgeeUqOebuOaculxyXG4gICAgICBISEggPSBmYWxzZSAvL1xyXG4gICAgICB0aGF0LmRpc2FibGVDYW1lcmFEcmFnKHRoYXQudmlld2VyLCB0cnVlKVxyXG4gICAgICAvLyDmm7TmlrBmcnVzdHVt55qE5L2N572uXHJcbiAgICAgIGlmIChcclxuICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QpICYmXHJcbiAgICAgICAgQ2VzaXVtLmRlZmluZWQocGlja2VkT2JqZWN0LmlkKSAmJlxyXG4gICAgICAgIHBpY2tlZE9iamVjdC5pZCA9PT0gdGhhdC5iaWxsYm9hcmRFbnRpdHlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zYXZlRnVuKSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMuc2F2ZUZ1bihudWxsLCBmYWxzZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RGdW4pIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5zZWxlY3RGdW4odGhhdC5iaWxsYm9hcmRFbnRpdHkuaW5kZXggLSAxKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bS51cGRhdGVQb3NpdGlvbkhlaWdodChcclxuICAgICAgICAgIHRoYXQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX1VQKVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUNhbWVyYURyYWcodmlld2VyLCBib29sKSB7XHJcbiAgICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVJvdGF0ZSA9IGJvb2xcclxuICAgIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVab29tID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVUaWx0ID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gYm9vbFxyXG4gIH1cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJvb2xcclxuICAgKi9cclxuICBzZXQgc2hvdyhib29sKSB7XHJcbiAgICBpZiAodHlwZW9mIGJvb2wgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLnBvaW50RW50aXR5LnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuYmlsbGJvYXJkRW50aXR5LnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMubGluZUVudGl0eS5zaG93ID0gYm9vbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMucG9pbnRFbnRpdHkpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5iaWxsYm9hcmRFbnRpdHkpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5saW5lRW50aXR5KVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5UEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/billord_point_line.js\n"); - -/***/ }), - -/***/ "./src/Obj/AirLine/frustum.js": -/*!************************************!*\ - !*** ./src/Obj/AirLine/frustum.js ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(options, viewer, viewer1) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Frustum);\n this.options = _objectSpread({}, options);\n this.viewer = viewer;\n this.viewer1 = viewer1;\n this.head = 0;\n this.pitch = 90;\n this.po = 0.00001;\n this.position = null;\n this.hpr = null;\n this.currentFrustumOutline = null;\n this.frustum = null;\n this.setInterval1 = null;\n this.webrtc = null;\n\n // 设置默认值\n Frustum.setDefaultValue(this);\n this.create();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Frustum, [{\n key: \"create\",\n value:\n // 初始化视锥体\n function create() {\n this.frustum = new Cesium.PerspectiveFrustum({\n fov: Cesium.Math.toRadians(this.options.fov),\n aspectRatio: this.options.aspectRatio,\n near: this.options.near,\n far: this.options.far\n });\n var _this$options$positio = this.options.position,\n lng = _this$options$positio.lng,\n lat = _this$options$positio.lat,\n alt = _this$options$positio.alt;\n var _this$options = this.options,\n heading = _this$options.heading,\n pitch = _this$options.pitch,\n roll = _this$options.roll;\n this.position = Cesium.Cartesian3.fromDegrees(lng, lat, alt + this.options.normalHeight);\n this.hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading), Cesium.Math.toRadians(pitch), Cesium.Math.toRadians(roll));\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n this.monitorKeyboard();\n this.updateFrustumSquareBase(40);\n this.syncHpr();\n if (this.options.videoUrl) {\n this.addVideoToFrustumTop2();\n }\n }\n\n // 监听键盘事件\n }, {\n key: \"monitorKeyboard\",\n value: function monitorKeyboard() {\n var _this = this;\n var keyActions = {\n KeyQ: function KeyQ() {\n return _this.setIntervalhpr(-0.45);\n },\n KeyE: function KeyE() {\n return _this.setIntervalhpr(0.45);\n },\n KeyB: function KeyB() {\n return _this.setIntervalhprr(-0.45);\n },\n KeyN: function KeyN() {\n return _this.setIntervalhprr(0.45);\n },\n KeyW: function KeyW() {\n return _this.updateFrustumPosition('move', -0.00001);\n },\n KeyS: function KeyS() {\n return _this.updateFrustumPosition('move', 0.00001);\n },\n KeyA: function KeyA() {\n return _this.updateFrustumPosition('move', -0.00001, 0);\n },\n KeyD: function KeyD() {\n return _this.updateFrustumPosition('move', 0.00001, 0);\n },\n KeyC: function KeyC() {\n return _this.updateFrustumHeight(1);\n },\n // 增加高度\n KeyZ: function KeyZ() {\n return _this.updateFrustumHeight(-1);\n } // 降低高度\n };\n this.keydownHandler = function (event) {\n if (keyActions[event.code]) keyActions[event.code]();\n };\n this.keyupHandler = function () {\n return _this.stopFrustumRotation();\n };\n document.addEventListener('keydown', this.keydownHandler);\n document.addEventListener('keyup', this.keyupHandler);\n }\n // 渲染视频\n }, {\n key: \"addVideoToFrustumTop\",\n value: function addVideoToFrustumTop() {\n var _this2 = this;\n // 创建视频元素\n var videoElement = document.createElement('video');\n videoElement.width = 640;\n videoElement.height = 360;\n videoElement.autoplay = true;\n videoElement.loop = true;\n videoElement.muted = true;\n // videoElement.style.display = 'none'; // 隐藏视频元素\n document.body.appendChild(videoElement);\n\n // 使用 flv.js 播放 FLV 视频\n if (flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n // url: 'http://zmkg.cqet.top:9991/live/2pUbcgTrly3mIDuxsDXN9h3hqcEKU6TlsV_YeIDyqHqXGzXafqWokXdU1q6j_S7hTCP7HynZQIsuNM6KQ5l-ag==.flv',\n type: 'flv',\n isLive: true,\n hasAudio: false,\n enableStashBuffer: true,\n //\n enableWorker: true,\n autoCleanupSourceBuffer: true,\n //自动清除缓存\n url: this.options.videoUrl\n });\n flvPlayer.attachMediaElement(videoElement);\n flvPlayer.load();\n flvPlayer.play();\n } else {\n console.error('FLV.js is not supported in this browser.');\n }\n var corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr);\n // 创建 PolygonGeometry 并应用视频作为纹理\n var polygonHierarchy = new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n this.videoEntity = this.viewer.entities.add(new Cesium.Entity({\n id: '22222222',\n show: true,\n polygon: {\n hierarchy: polygonHierarchy\n }\n }));\n videoElement.addEventListener('loadeddata', function () {\n _this2.videoEntity.polygon.material = videoElement; // 确保视频纹理加载后再设置\n });\n }\n // 渲染视频\n }, {\n key: \"addVideoToFrustumTop2\",\n value: function () {\n var _addVideoToFrustumTop = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var _this3 = this;\n var videoElement, corners, polygonHierarchy;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n // 创建视频元素\n videoElement = document.createElement('video');\n videoElement.width = 640;\n videoElement.height = 360;\n videoElement.autoplay = true;\n videoElement.loop = true;\n videoElement.muted = true;\n // videoElement.style.display = 'none'; // 隐藏视频元素\n document.body.appendChild(videoElement);\n _context.next = 9;\n return this.startPlay(videoElement, this.options.videoUrl);\n case 9:\n corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr); // 创建 PolygonGeometry 并应用视频作为纹理\n polygonHierarchy = new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n this.videoEntity = this.viewer.entities.add(new Cesium.Entity({\n id: '22222222',\n show: true,\n polygon: {\n hierarchy: polygonHierarchy\n }\n }));\n videoElement.addEventListener('loadeddata', function () {\n _this3.videoEntity.polygon.material = videoElement; // 确保视频纹理加载后再设置\n });\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function addVideoToFrustumTop2() {\n return _addVideoToFrustumTop.apply(this, arguments);\n }\n return addVideoToFrustumTop2;\n }()\n }, {\n key: \"startPlay\",\n value: function () {\n var _startPlay = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2(element, url) {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n // Close existing SDK instance if any\n if (this.webrtc) {\n this.webrtc.close();\n }\n\n // Initialize a new SDK instance\n this.webrtc = new SrsRtcWhipWhepAsync();\n\n // Bind the video player to the SDK stream\n element.srcObject = this.webrtc.stream;\n _context2.prev = 3;\n _context2.next = 6;\n return this.webrtc.play(url);\n case 6:\n session = _context2.sent;\n console.log(session);\n // this.sessionId = session.sessionid\n // this.simulatorUrl = `${session.simulator}?drop=1&username=${session.sessionid}`\n _context2.next = 13;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](3);\n // console.error('Error playing stream:', error)\n this.webrtc.close();\n // this.playerVisible = false\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[3, 10]]);\n }));\n function startPlay(_x, _x2) {\n return _startPlay.apply(this, arguments);\n }\n return startPlay;\n }() // 计算视锥体远裁剪面(大面)的四个角点\n }, {\n key: \"computeFrustumCorners\",\n value: function computeFrustumCorners(frustum, position, hpr) {\n var tanFov = Math.tan(frustum.fov * 0.5);\n var farHeight = frustum.far * tanFov;\n var farWidth = farHeight * frustum.aspectRatio;\n var topLeft = new Cesium.Cartesian3(-farWidth, farHeight, -frustum.far);\n var topRight = new Cesium.Cartesian3(farWidth, farHeight, -frustum.far);\n var bottomLeft = new Cesium.Cartesian3(-farWidth, -farHeight, -frustum.far);\n var bottomRight = new Cesium.Cartesian3(farWidth, -farHeight, -frustum.far);\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(position, hpr);\n // console.log('transform111111111111111111111111', transform)\n return {\n topLeft: Cesium.Matrix4.multiplyByPoint(transform, topLeft, new Cesium.Cartesian3()),\n topRight: Cesium.Matrix4.multiplyByPoint(transform, topRight, new Cesium.Cartesian3()),\n bottomLeft: Cesium.Matrix4.multiplyByPoint(transform, bottomLeft, new Cesium.Cartesian3()),\n bottomRight: Cesium.Matrix4.multiplyByPoint(transform, bottomRight, new Cesium.Cartesian3())\n };\n }\n // 封装的函数:更新 Polygon 面的位置\n }, {\n key: \"updatePolygonPosition\",\n value: function updatePolygonPosition() {\n var corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr);\n this.videoEntity.polygon.hierarchy = new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n });\n }\n // 更新锥体底部为正方形的方法\n }, {\n key: \"updateFrustumSquareBase\",\n value: function updateFrustumSquareBase(value) {\n // 将输入值范围从 56 到 1 映射到面积范围 10000 到 100\n var minArea = 100; // 最小面积\n var maxArea = 10000; // 最大面积\n\n // 映射公式(反转映射)\n var newArea = (56 - value) / (56 - 1) * (maxArea - minArea) + minArea;\n\n // 确保aspectRatio保持为1(正方形)\n this.frustum.aspectRatio = 1;\n\n // 根据面积计算正方形边长\n var sideLength = Math.sqrt(newArea);\n\n // 远平面距离\n var far = this.frustum.far;\n\n // 计算新的fov\n var fov = 2 * Math.atan(sideLength / (2 * far));\n\n // 更新视锥体的fov\n this.frustum.fov = fov;\n\n // 重新绘制视锥体轮廓和填充\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n this.syncHpr();\n }\n }, {\n key: \"updateFrustumHeight\",\n value: function updateFrustumHeight(deltaHeight) {\n var cartographic = Cesium.Cartographic.fromCartesian(this.position);\n cartographic.height += deltaHeight; // 更新高度\n this.position = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude), cartographic.height);\n this.options.position.alt = cartographic.height;\n // this.options.arr[\n // this.options.index\n // ] = this.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic)\n this.syncHpr();\n this.drawFrustumOutline(); // 重新绘制视锥体轮廓\n this.drawFrustumFilled();\n }\n // 更新position变化后的视锥体属性\n }, {\n key: \"updatePositionHeight\",\n value: function updatePositionHeight(p) {\n this.options.position = this.cartesian3Towgs84(p);\n this.syncHpr();\n this.drawFrustumOutline(); // 重新绘制视锥体轮廓\n this.drawFrustumFilled();\n }\n }, {\n key: \"cartesian3Towgs84\",\n value: function cartesian3Towgs84(cartesian) {\n var ellipsoid = this.viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n }\n }, {\n key: \"setIntervalhpr\",\n value: function setIntervalhpr(num) {\n var _this4 = this;\n this.stopFrustumRotation(); // 先停止当前的定时器\n this.setInterval1 = setInterval(function () {\n _this4.head += num;\n _this4.updateFrustumHPR(Cesium.Math.toRadians(_this4.head), _this4.pitch);\n }, 10);\n }\n }, {\n key: \"setIntervalhprr\",\n value: function setIntervalhprr(num) {\n var _this5 = this;\n this.stopFrustumRotation(); // 先停止当前的定时器\n this.setInterval1 = setInterval(function () {\n // 限制 pitch 在 [60, 180] 范围内\n _this5.pitch = Math.max(60, Math.min(180, _this5.pitch + num));\n _this5.updateFrustumHPR(_this5.head, Cesium.Math.toRadians(_this5.pitch));\n }, 10);\n }\n // 停止视锥体旋转\n }, {\n key: \"stopFrustumRotation\",\n value: function stopFrustumRotation() {\n if (this.setInterval1) {\n clearInterval(this.setInterval1);\n this.setInterval1 = null;\n }\n }\n // 新增:绘制填充的视锥体\n }, {\n key: \"drawFrustumFilled\",\n value: function drawFrustumFilled() {\n var that = this;\n // console.log('that.options.show', that.options.show)\n\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n var frustumGeometry = new Cesium.FrustumGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n this.currentFrustumFilled = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: frustumGeometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.4) // 半透明黄色填充\n )\n }\n }),\n appearance: new Cesium.MaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.4) // 填充颜色\n }),\n translucent: true\n }),\n asynchronous: false,\n // show: false\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumFilled);\n }\n // 绘制视锥体轮廓\n }, {\n key: \"drawFrustumOutline\",\n value: function drawFrustumOutline() {\n var that = this;\n // console.log('that.options.show', that.options.show)\n\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n var frustumOutlineGeometry = new Cesium.FrustumOutlineGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n this.currentFrustumOutline = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: frustumOutlineGeometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW)\n }\n }),\n appearance: new Cesium.PolylineColorAppearance({\n translucent: false\n }),\n asynchronous: false,\n show: that.options.show\n // show: false\n });\n this.viewer.scene.primitives.add(this.currentFrustumOutline);\n }\n // 更新视锥体位置\n }, {\n key: \"updateFrustumPosition\",\n value: function updateFrustumPosition() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'move';\n var p = arguments.length > 1 ? arguments[1] : undefined;\n var deg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 90;\n var flag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if (type === 'move') {\n // eslint-disable-next-line no-undef\n var point = turf.point([this.options.position.lng, this.options.position.lat]);\n var degreesValue = Cesium.Math.toDegrees(this.hpr.heading);\n var bearing = degreesValue + deg;\n var options = {\n units: 'degrees'\n };\n // eslint-disable-next-line no-undef\n var destination = turf.destination(point, p, bearing, options).geometry.coordinates;\n this.position = Cesium.Cartesian3.fromDegrees(destination[0], destination[1], this.options.position.alt + this.options.normalHeight);\n this.options.position.lng = destination[0];\n this.options.position.lat = destination[1];\n this.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(destination[0], destination[1], this.viewer.camera.positionCartographic.height)\n });\n }\n if (type === 'update') {\n this.position = p;\n this.options.videoUrl && this.updatePolygonPosition();\n }\n if (flag) {\n this.syncHpr();\n this.updateFrustumAttributes();\n }\n }\n // 同步视角\n }, {\n key: \"syncHpr\",\n value: function syncHpr() {\n // console.log('this.viewer1', this.viewer1);\n if (this.viewer1) {\n var _this$options$positio2 = this.options.position,\n lng = _this$options$positio2.lng,\n lat = _this$options$positio2.lat,\n alt = _this$options$positio2.alt;\n var pitch = -this.hpr.pitch - Cesium.Math.toRadians(-90.0);\n this.viewer1.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(lng, lat, alt + this.options.normalHeight),\n orientation: {\n heading: this.hpr.heading + Cesium.Math.toRadians(-90.0),\n pitch: pitch,\n roll: this.hpr.roll\n }\n });\n }\n }\n // 更新视锥体的 HeadingPitchRoll\n }, {\n key: \"updateFrustumHPR\",\n value: function updateFrustumHPR() {\n var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.head;\n var p = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.pitch;\n var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var flag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n function degreesToRadians(degrees) {\n return degrees * Math.PI / 180.0;\n }\n if (type == 'alone') {\n this.hpr.heading = degreesToRadians(h);\n this.hpr.pitch = degreesToRadians(p);\n this.hpr.roll = degreesToRadians(r);\n } else {\n this.hpr.heading = Cesium.Math.negativePiToPi(h);\n this.hpr.pitch = Cesium.Math.negativePiToPi(p);\n this.hpr.roll = Cesium.Math.negativePiToPi(r);\n }\n if (flag) {\n this.syncHpr();\n this.updateFrustumAttributes();\n }\n }\n // 用于更新\n }, {\n key: \"updateFrustumAttributes\",\n value: function updateFrustumAttributes() {\n var that = this;\n // 检查 position 和 hpr 是否已初始化\n if (!this.position || !this.hpr) {\n // eslint-disable-next-line no-console\n console.error('Position or HPR is not defined:', this.position, this.hpr);\n return;\n }\n\n // 生成变换矩阵\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n if (!transform) {\n // eslint-disable-next-line no-console\n console.error('Transform generation failed.');\n return;\n }\n try {\n // 准备轮廓几何体和外观\n var outlineGeometry = new Cesium.FrustumOutlineGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n var outlineAppearance = new Cesium.PolylineColorAppearance({\n translucent: false\n });\n var outlineColor = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW);\n\n // 准备填充几何体和外观\n var filledGeometry = new Cesium.FrustumGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n var filledAppearance = new Cesium.MaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.YELLOW.withAlpha(0.5)\n }),\n translucent: true\n });\n var filledColor = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED.withAlpha(0.5));\n\n // 删除旧的 Primitive\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n\n // 创建并添加新的轮廓 Primitive\n this.currentFrustumOutline = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: outlineGeometry,\n attributes: {\n color: outlineColor\n }\n }),\n appearance: outlineAppearance,\n asynchronous: false,\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumOutline);\n\n // 创建并添加新的填充 Primitive\n this.currentFrustumFilled = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: filledGeometry,\n attributes: {\n color: filledColor\n }\n }),\n appearance: filledAppearance,\n asynchronous: false,\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumFilled);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error in drawFrustum:', error);\n }\n }\n // 调整视锥体的 near 和 far 平面\n }, {\n key: \"updateFrustumNearFar\",\n value: function updateFrustumNearFar(newNear, newFar) {\n this.frustum.near = newNear;\n this.frustum.far = newFar;\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n }\n // 调整视锥体的 fov\n }, {\n key: \"updateFrustumFov\",\n value: function updateFrustumFov(newFov) {\n this.frustum.fov = Cesium.Math.toRadians(newFov);\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.options.show = bool;\n this.currentFrustumOutline.show = bool;\n this.currentFrustumFilled.show = bool;\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n document.removeEventListener('keydown', this.keydownHandler);\n document.removeEventListener('keyup', this.keyupHandler);\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n if (this.videoEntity) {\n this.viewer.entities.remove(this.videoEntity);\n }\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$show;\n that.options.position = that.options.position || {};\n that.options.fov = that.options.fov || 30;\n that.options.aspectRatio = that.options.aspectRatio || 1;\n that.options.near = that.options.near || 1;\n that.options.far = that.options.far || 120;\n that.options.heading = that.options.heading || 0;\n that.options.pitch = that.options.pitch || 90;\n that.options.roll = that.options.roll || 0;\n that.options.show = (_that$options$show = that.options.show) !== null && _that$options$show !== void 0 ? _that$options$show : true;\n that.options.videoUrl = that.options.videoUrl || '';\n that.options.index = that.options.index || 0;\n that.options.arr = that.options.arr || [];\n that.options.normalHeight = that.options.normalHeight || 100;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvZnJ1c3R1bS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQWlyTGluZS9mcnVzdHVtLmpzPzEyMjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJ1c3R1bSB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucywgdmlld2VyLCB2aWV3ZXIxKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMudmlld2VyMSA9IHZpZXdlcjFcclxuICAgIHRoaXMuaGVhZCA9IDBcclxuICAgIHRoaXMucGl0Y2ggPSA5MFxyXG4gICAgdGhpcy5wbyA9IDAuMDAwMDFcclxuICAgIHRoaXMucG9zaXRpb24gPSBudWxsXHJcbiAgICB0aGlzLmhwciA9IG51bGxcclxuICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lID0gbnVsbFxyXG4gICAgdGhpcy5mcnVzdHVtID0gbnVsbFxyXG4gICAgdGhpcy5zZXRJbnRlcnZhbDEgPSBudWxsXHJcbiAgICB0aGlzLndlYnJ0YyA9IG51bGxcclxuXHJcbiAgICAvLyDorr7nva7pu5jorqTlgLxcclxuICAgIEZydXN0dW0uc2V0RGVmYXVsdFZhbHVlKHRoaXMpXHJcbiAgICB0aGlzLmNyZWF0ZSgpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0RGVmYXVsdFZhbHVlKHRoYXQpIHtcclxuICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbiA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbiB8fCB7fVxyXG4gICAgdGhhdC5vcHRpb25zLmZvdiA9IHRoYXQub3B0aW9ucy5mb3YgfHwgMzBcclxuICAgIHRoYXQub3B0aW9ucy5hc3BlY3RSYXRpbyA9IHRoYXQub3B0aW9ucy5hc3BlY3RSYXRpbyB8fCAxXHJcbiAgICB0aGF0Lm9wdGlvbnMubmVhciA9IHRoYXQub3B0aW9ucy5uZWFyIHx8IDFcclxuICAgIHRoYXQub3B0aW9ucy5mYXIgPSB0aGF0Lm9wdGlvbnMuZmFyIHx8IDEyMFxyXG4gICAgdGhhdC5vcHRpb25zLmhlYWRpbmcgPSB0aGF0Lm9wdGlvbnMuaGVhZGluZyB8fCAwXHJcbiAgICB0aGF0Lm9wdGlvbnMucGl0Y2ggPSB0aGF0Lm9wdGlvbnMucGl0Y2ggfHwgOTBcclxuICAgIHRoYXQub3B0aW9ucy5yb2xsID0gdGhhdC5vcHRpb25zLnJvbGwgfHwgMFxyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyA/PyB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMudmlkZW9VcmwgPSB0aGF0Lm9wdGlvbnMudmlkZW9VcmwgfHwgJydcclxuICAgIHRoYXQub3B0aW9ucy5pbmRleCA9IHRoYXQub3B0aW9ucy5pbmRleCB8fCAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYXJyID0gdGhhdC5vcHRpb25zLmFyciB8fCBbXVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgfVxyXG5cclxuICAvLyDliJ3lp4vljJbop4bplKXkvZNcclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmZydXN0dW0gPSBuZXcgQ2VzaXVtLlBlcnNwZWN0aXZlRnJ1c3R1bSh7XHJcbiAgICAgIGZvdjogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5mb3YpLFxyXG4gICAgICBhc3BlY3RSYXRpbzogdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvLFxyXG4gICAgICBuZWFyOiB0aGlzLm9wdGlvbnMubmVhcixcclxuICAgICAgZmFyOiB0aGlzLm9wdGlvbnMuZmFyXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHsgbG5nLCBsYXQsIGFsdCB9ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgICBjb25zdCB7IGhlYWRpbmcsIHBpdGNoLCByb2xsIH0gPSB0aGlzLm9wdGlvbnNcclxuICAgIHRoaXMucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgbG5nLFxyXG4gICAgICBsYXQsXHJcbiAgICAgIGFsdCArIHRoaXMub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgIClcclxuICAgIHRoaXMuaHByID0gbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoaGVhZGluZyksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhwaXRjaCksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhyb2xsKVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gICAgdGhpcy5tb25pdG9yS2V5Ym9hcmQoKVxyXG4gICAgdGhpcy51cGRhdGVGcnVzdHVtU3F1YXJlQmFzZSg0MClcclxuICAgIHRoaXMuc3luY0hwcigpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnZpZGVvVXJsKSB7XHJcbiAgICAgIHRoaXMuYWRkVmlkZW9Ub0ZydXN0dW1Ub3AyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOebkeWQrOmUruebmOS6i+S7tlxyXG4gIG1vbml0b3JLZXlib2FyZCgpIHtcclxuICAgIGNvbnN0IGtleUFjdGlvbnMgPSB7XHJcbiAgICAgIEtleVE6ICgpID0+IHRoaXMuc2V0SW50ZXJ2YWxocHIoLTAuNDUpLFxyXG4gICAgICBLZXlFOiAoKSA9PiB0aGlzLnNldEludGVydmFsaHByKDAuNDUpLFxyXG4gICAgICBLZXlCOiAoKSA9PiB0aGlzLnNldEludGVydmFsaHBycigtMC40NSksXHJcbiAgICAgIEtleU46ICgpID0+IHRoaXMuc2V0SW50ZXJ2YWxocHJyKDAuNDUpLFxyXG4gICAgICBLZXlXOiAoKSA9PiB0aGlzLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbignbW92ZScsIC0wLjAwMDAxKSxcclxuICAgICAgS2V5UzogKCkgPT4gdGhpcy51cGRhdGVGcnVzdHVtUG9zaXRpb24oJ21vdmUnLCAwLjAwMDAxKSxcclxuICAgICAgS2V5QTogKCkgPT4gdGhpcy51cGRhdGVGcnVzdHVtUG9zaXRpb24oJ21vdmUnLCAtMC4wMDAwMSwgMCksXHJcbiAgICAgIEtleUQ6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bVBvc2l0aW9uKCdtb3ZlJywgMC4wMDAwMSwgMCksXHJcbiAgICAgIEtleUM6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bUhlaWdodCgxKSwgLy8g5aKe5Yqg6auY5bqmXHJcbiAgICAgIEtleVo6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bUhlaWdodCgtMSkgLy8g6ZmN5L2O6auY5bqmXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5rZXlkb3duSGFuZGxlciA9IGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGtleUFjdGlvbnNbZXZlbnQuY29kZV0pIGtleUFjdGlvbnNbZXZlbnQuY29kZV0oKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMua2V5dXBIYW5kbGVyID0gKCkgPT4gdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKClcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlkb3duSGFuZGxlcilcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMua2V5dXBIYW5kbGVyKVxyXG4gIH1cclxuICAvLyDmuLLmn5Pop4bpopFcclxuICBhZGRWaWRlb1RvRnJ1c3R1bVRvcCgpIHtcclxuICAgIC8vIOWIm+W7uuinhumikeWFg+e0oFxyXG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKVxyXG4gICAgdmlkZW9FbGVtZW50LndpZHRoID0gNjQwXHJcbiAgICB2aWRlb0VsZW1lbnQuaGVpZ2h0ID0gMzYwXHJcbiAgICB2aWRlb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlXHJcbiAgICB2aWRlb0VsZW1lbnQubG9vcCA9IHRydWVcclxuICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWVcclxuICAgIC8vIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyAvLyDpmpDol4/op4bpopHlhYPntKBcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW9FbGVtZW50KVxyXG5cclxuICAgIC8vIOS9v+eUqCBmbHYuanMg5pKt5pS+IEZMViDop4bpopFcclxuICAgIGlmIChmbHZqcy5pc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgIGNvbnN0IGZsdlBsYXllciA9IGZsdmpzLmNyZWF0ZVBsYXllcih7XHJcbiAgICAgICAgLy8gIHVybDogJ2h0dHA6Ly96bWtnLmNxZXQudG9wOjk5OTEvbGl2ZS8ycFViY2dUcmx5M21JRHV4c0RYTjloM2hxY0VLVTZUbHNWX1llSUR5cUhxWEd6WGFmcVdva1hkVTFxNmpfUzdoVENQN0h5blpRSXN1Tk02S1E1bC1hZz09LmZsdicsXHJcbiAgICAgICAgdHlwZTogJ2ZsdicsXHJcbiAgICAgICAgaXNMaXZlOiB0cnVlLFxyXG4gICAgICAgIGhhc0F1ZGlvOiBmYWxzZSxcclxuICAgICAgICBlbmFibGVTdGFzaEJ1ZmZlcjogdHJ1ZSwgLy9cclxuICAgICAgICBlbmFibGVXb3JrZXI6IHRydWUsXHJcbiAgICAgICAgYXV0b0NsZWFudXBTb3VyY2VCdWZmZXI6IHRydWUsIC8v6Ieq5Yqo5riF6Zmk57yT5a2YXHJcbiAgICAgICAgdXJsOiB0aGlzLm9wdGlvbnMudmlkZW9VcmxcclxuICAgICAgfSlcclxuICAgICAgZmx2UGxheWVyLmF0dGFjaE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpXHJcbiAgICAgIGZsdlBsYXllci5sb2FkKClcclxuICAgICAgZmx2UGxheWVyLnBsYXkoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRkxWLmpzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29ybmVycyA9IHRoaXMuY29tcHV0ZUZydXN0dW1Db3JuZXJzKFxyXG4gICAgICB0aGlzLmZydXN0dW0sXHJcbiAgICAgIHRoaXMucG9zaXRpb24sXHJcbiAgICAgIHRoaXMuaHByXHJcbiAgICApXHJcbiAgICAvLyDliJvlu7ogUG9seWdvbkdlb21ldHJ5IOW5tuW6lOeUqOinhumikeS9nOS4uue6ueeQhlxyXG4gICAgY29uc3QgcG9seWdvbkhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShbXHJcbiAgICAgIGNvcm5lcnMuYm90dG9tTGVmdCxcclxuICAgICAgY29ybmVycy5ib3R0b21SaWdodCxcclxuICAgICAgY29ybmVycy50b3BSaWdodCxcclxuICAgICAgY29ybmVycy50b3BMZWZ0XHJcbiAgICBdKVxyXG4gICAgdGhpcy52aWRlb0VudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiAnMjIyMjIyMjInLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgaGllcmFyY2h5OiBwb2x5Z29uSGllcmFyY2h5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlkZW9FbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IHZpZGVvRWxlbWVudCAvLyDnoa7kv53op4bpopHnurnnkIbliqDovb3lkI7lho3orr7nva5cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIOa4suafk+inhumikVxyXG4gIGFzeW5jIGFkZFZpZGVvVG9GcnVzdHVtVG9wMigpIHtcclxuICAgIC8vIOWIm+W7uuinhumikeWFg+e0oFxyXG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKVxyXG4gICAgdmlkZW9FbGVtZW50LndpZHRoID0gNjQwXHJcbiAgICB2aWRlb0VsZW1lbnQuaGVpZ2h0ID0gMzYwXHJcbiAgICB2aWRlb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlXHJcbiAgICB2aWRlb0VsZW1lbnQubG9vcCA9IHRydWVcclxuICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWVcclxuICAgIC8vIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyAvLyDpmpDol4/op4bpopHlhYPntKBcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW9FbGVtZW50KVxyXG4gICAgYXdhaXQgdGhpcy5zdGFydFBsYXkodmlkZW9FbGVtZW50LCB0aGlzLm9wdGlvbnMudmlkZW9VcmwpXHJcbiAgICBjb25zdCBjb3JuZXJzID0gdGhpcy5jb21wdXRlRnJ1c3R1bUNvcm5lcnMoXHJcbiAgICAgIHRoaXMuZnJ1c3R1bSxcclxuICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgdGhpcy5ocHJcclxuICAgIClcclxuICAgIC8vIOWIm+W7uiBQb2x5Z29uR2VvbWV0cnkg5bm25bqU55So6KeG6aKR5L2c5Li657q555CGXHJcbiAgICBjb25zdCBwb2x5Z29uSGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFtcclxuICAgICAgY29ybmVycy5ib3R0b21MZWZ0LFxyXG4gICAgICBjb3JuZXJzLmJvdHRvbVJpZ2h0LFxyXG4gICAgICBjb3JuZXJzLnRvcFJpZ2h0LFxyXG4gICAgICBjb3JuZXJzLnRvcExlZnRcclxuICAgIF0pXHJcbiAgICB0aGlzLnZpZGVvRW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6ICcyMjIyMjIyMicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IHBvbHlnb25IaWVyYXJjaHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsICgpID0+IHtcclxuICAgICAgdGhpcy52aWRlb0VudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gdmlkZW9FbGVtZW50IC8vIOehruS/neinhumikee6ueeQhuWKoOi9veWQjuWGjeiuvue9rlxyXG4gICAgfSlcclxuICB9XHJcbiAgYXN5bmMgc3RhcnRQbGF5KGVsZW1lbnQsIHVybCkge1xyXG4gICAgLy8gQ2xvc2UgZXhpc3RpbmcgU0RLIGluc3RhbmNlIGlmIGFueVxyXG4gICAgaWYgKHRoaXMud2VicnRjKSB7XHJcbiAgICAgIHRoaXMud2VicnRjLmNsb3NlKClcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplIGEgbmV3IFNESyBpbnN0YW5jZVxyXG4gICAgdGhpcy53ZWJydGMgPSBuZXcgU3JzUnRjV2hpcFdoZXBBc3luYygpXHJcblxyXG4gICAgLy8gQmluZCB0aGUgdmlkZW8gcGxheWVyIHRvIHRoZSBTREsgc3RyZWFtXHJcbiAgICBlbGVtZW50LnNyY09iamVjdCA9IHRoaXMud2VicnRjLnN0cmVhbVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLndlYnJ0Yy5wbGF5KHVybClcclxuICAgICAgY29uc29sZS5sb2coc2Vzc2lvbilcclxuICAgICAgLy8gdGhpcy5zZXNzaW9uSWQgPSBzZXNzaW9uLnNlc3Npb25pZFxyXG4gICAgICAvLyB0aGlzLnNpbXVsYXRvclVybCA9IGAke3Nlc3Npb24uc2ltdWxhdG9yfT9kcm9wPTEmdXNlcm5hbWU9JHtzZXNzaW9uLnNlc3Npb25pZH1gXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwbGF5aW5nIHN0cmVhbTonLCBlcnJvcilcclxuICAgICAgdGhpcy53ZWJydGMuY2xvc2UoKVxyXG4gICAgICAvLyB0aGlzLnBsYXllclZpc2libGUgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDorqHnrpfop4bplKXkvZPov5zoo4HliarpnaLvvIjlpKfpnaLvvInnmoTlm5vkuKrop5LngrlcclxuICBjb21wdXRlRnJ1c3R1bUNvcm5lcnMoZnJ1c3R1bSwgcG9zaXRpb24sIGhwcikge1xyXG4gICAgY29uc3QgdGFuRm92ID0gTWF0aC50YW4oZnJ1c3R1bS5mb3YgKiAwLjUpXHJcbiAgICBjb25zdCBmYXJIZWlnaHQgPSBmcnVzdHVtLmZhciAqIHRhbkZvdlxyXG4gICAgY29uc3QgZmFyV2lkdGggPSBmYXJIZWlnaHQgKiBmcnVzdHVtLmFzcGVjdFJhdGlvXHJcblxyXG4gICAgY29uc3QgdG9wTGVmdCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygtZmFyV2lkdGgsIGZhckhlaWdodCwgLWZydXN0dW0uZmFyKVxyXG4gICAgY29uc3QgdG9wUmlnaHQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoZmFyV2lkdGgsIGZhckhlaWdodCwgLWZydXN0dW0uZmFyKVxyXG4gICAgY29uc3QgYm90dG9tTGVmdCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhcclxuICAgICAgLWZhcldpZHRoLFxyXG4gICAgICAtZmFySGVpZ2h0LFxyXG4gICAgICAtZnJ1c3R1bS5mYXJcclxuICAgIClcclxuICAgIGNvbnN0IGJvdHRvbVJpZ2h0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICBmYXJXaWR0aCxcclxuICAgICAgLWZhckhlaWdodCxcclxuICAgICAgLWZydXN0dW0uZmFyXHJcbiAgICApXHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICBwb3NpdGlvbixcclxuICAgICAgaHByXHJcbiAgICApXHJcbiAgICAvLyBjb25zb2xlLmxvZygndHJhbnNmb3JtMTExMTExMTExMTExMTExMTExMTExMTExJywgdHJhbnNmb3JtKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9wTGVmdDogQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICB0b3BMZWZ0LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICksXHJcbiAgICAgIHRvcFJpZ2h0OiBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQoXHJcbiAgICAgICAgdHJhbnNmb3JtLFxyXG4gICAgICAgIHRvcFJpZ2h0LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICksXHJcbiAgICAgIGJvdHRvbUxlZnQ6IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlQb2ludChcclxuICAgICAgICB0cmFuc2Zvcm0sXHJcbiAgICAgICAgYm90dG9tTGVmdCxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApLFxyXG4gICAgICBib3R0b21SaWdodDogQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICBib3R0b21SaWdodCxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWwgeijheeahOWHveaVsO+8muabtOaWsCBQb2x5Z29uIOmdoueahOS9jee9rlxyXG4gIHVwZGF0ZVBvbHlnb25Qb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IGNvcm5lcnMgPSB0aGlzLmNvbXB1dGVGcnVzdHVtQ29ybmVycyhcclxuICAgICAgdGhpcy5mcnVzdHVtLFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMudmlkZW9FbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoW1xyXG4gICAgICAgIGNvcm5lcnMuYm90dG9tTGVmdCxcclxuICAgICAgICBjb3JuZXJzLmJvdHRvbVJpZ2h0LFxyXG4gICAgICAgIGNvcm5lcnMudG9wUmlnaHQsXHJcbiAgICAgICAgY29ybmVycy50b3BMZWZ0XHJcbiAgICAgIF0pXHJcbiAgICB9KVxyXG4gIH1cclxuICAvLyDmm7TmlrDplKXkvZPlupXpg6jkuLrmraPmlrnlvaLnmoTmlrnms5VcclxuICB1cGRhdGVGcnVzdHVtU3F1YXJlQmFzZSh2YWx1ZSkge1xyXG4gICAgLy8g5bCG6L6T5YWl5YC86IyD5Zu05LuOIDU2IOWIsCAxIOaYoOWwhOWIsOmdouenr+iMg+WbtCAxMDAwMCDliLAgMTAwXHJcbiAgICBjb25zdCBtaW5BcmVhID0gMTAwIC8vIOacgOWwj+mdouenr1xyXG4gICAgY29uc3QgbWF4QXJlYSA9IDEwMDAwIC8vIOacgOWkp+mdouenr1xyXG5cclxuICAgIC8vIOaYoOWwhOWFrOW8j++8iOWPjei9rOaYoOWwhO+8iVxyXG4gICAgY29uc3QgbmV3QXJlYSA9ICgoNTYgLSB2YWx1ZSkgLyAoNTYgLSAxKSkgKiAobWF4QXJlYSAtIG1pbkFyZWEpICsgbWluQXJlYVxyXG5cclxuICAgIC8vIOehruS/nWFzcGVjdFJhdGlv5L+d5oyB5Li6Me+8iOato+aWueW9ou+8iVxyXG4gICAgdGhpcy5mcnVzdHVtLmFzcGVjdFJhdGlvID0gMVxyXG5cclxuICAgIC8vIOagueaNrumdouenr+iuoeeul+ato+aWueW9oui+uemVv1xyXG4gICAgY29uc3Qgc2lkZUxlbmd0aCA9IE1hdGguc3FydChuZXdBcmVhKVxyXG5cclxuICAgIC8vIOi/nOW5s+mdoui3neemu1xyXG4gICAgY29uc3QgZmFyID0gdGhpcy5mcnVzdHVtLmZhclxyXG5cclxuICAgIC8vIOiuoeeul+aWsOeahGZvdlxyXG4gICAgY29uc3QgZm92ID0gMiAqIE1hdGguYXRhbihzaWRlTGVuZ3RoIC8gKDIgKiBmYXIpKVxyXG5cclxuICAgIC8vIOabtOaWsOinhumUpeS9k+eahGZvdlxyXG4gICAgdGhpcy5mcnVzdHVtLmZvdiA9IGZvdlxyXG5cclxuICAgIC8vIOmHjeaWsOe7mOWItuinhumUpeS9k+i9ruW7k+WSjOWhq+WFhVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bUZpbGxlZCgpXHJcbiAgICB0aGlzLnN5bmNIcHIoKVxyXG4gIH1cclxuICB1cGRhdGVGcnVzdHVtSGVpZ2h0KGRlbHRhSGVpZ2h0KSB7XHJcbiAgICBjb25zdCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4odGhpcy5wb3NpdGlvbilcclxuICAgIGNhcnRvZ3JhcGhpYy5oZWlnaHQgKz0gZGVsdGFIZWlnaHQgLy8g5pu05paw6auY5bqmXHJcbiAgICB0aGlzLnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgIGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgIClcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXJyW1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuaW5kZXhcclxuICAgIC8vIF0gPSB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKVxyXG4gICAgdGhpcy5zeW5jSHByKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKCkgLy8g6YeN5paw57uY5Yi26KeG6ZSl5L2T6L2u5buTXHJcbiAgICB0aGlzLmRyYXdGcnVzdHVtRmlsbGVkKClcclxuICB9XHJcbiAgLy8g5pu05pawcG9zaXRpb27lj5jljJblkI7nmoTop4bplKXkvZPlsZ7mgKdcclxuICB1cGRhdGVQb3NpdGlvbkhlaWdodChwKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHApXHJcbiAgICB0aGlzLnN5bmNIcHIoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKSAvLyDph43mlrDnu5jliLbop4bplKXkvZPova7lu5NcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gIH1cclxuICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pIHtcclxuICAgIHZhciBlbGxpcHNvaWQgPSB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWRcclxuICAgIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICBjYXJ0ZXNpYW4ueCxcclxuICAgICAgY2FydGVzaWFuLnksXHJcbiAgICAgIGNhcnRlc2lhbi56XHJcbiAgICApXHJcbiAgICB2YXIgY2FydG9ncmFwaGljID0gZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbjMpXHJcbiAgICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICAgIHZhciBsbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSlcclxuICAgIHZhciBhbHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0IDwgMCA/IDAgOiBjYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsbmc6IGxuZyxcclxuICAgICAgbGF0OiBsYXQsXHJcbiAgICAgIGFsdDogYWx0XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldEludGVydmFsaHByKG51bSkge1xyXG4gICAgdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKCkgLy8g5YWI5YGc5q2i5b2T5YmN55qE5a6a5pe25ZmoXHJcbiAgICB0aGlzLnNldEludGVydmFsMSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5oZWFkICs9IG51bVxyXG4gICAgICB0aGlzLnVwZGF0ZUZydXN0dW1IUFIoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuaGVhZCksIHRoaXMucGl0Y2gpXHJcbiAgICB9LCAxMClcclxuICB9XHJcbiAgc2V0SW50ZXJ2YWxocHJyKG51bSkge1xyXG4gICAgdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKCkgLy8g5YWI5YGc5q2i5b2T5YmN55qE5a6a5pe25ZmoXHJcbiAgICB0aGlzLnNldEludGVydmFsMSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgLy8g6ZmQ5Yi2IHBpdGNoIOWcqCBbNjAsIDE4MF0g6IyD5Zu05YaFXHJcbiAgICAgIHRoaXMucGl0Y2ggPSBNYXRoLm1heCg2MCwgTWF0aC5taW4oMTgwLCB0aGlzLnBpdGNoICsgbnVtKSlcclxuICAgICAgdGhpcy51cGRhdGVGcnVzdHVtSFBSKHRoaXMuaGVhZCwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMucGl0Y2gpKVxyXG4gICAgfSwgMTApXHJcbiAgfVxyXG4gIC8vIOWBnOatouinhumUpeS9k+aXi+i9rFxyXG4gIHN0b3BGcnVzdHVtUm90YXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zZXRJbnRlcnZhbDEpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNldEludGVydmFsMSlcclxuICAgICAgdGhpcy5zZXRJbnRlcnZhbDEgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOaWsOWinu+8mue7mOWItuWhq+WFheeahOinhumUpeS9k1xyXG4gIGRyYXdGcnVzdHVtRmlsbGVkKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAvLyBjb25zb2xlLmxvZygndGhhdC5vcHRpb25zLnNob3cnLCB0aGF0Lm9wdGlvbnMuc2hvdylcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IGZydXN0dW1HZW9tZXRyeSA9IG5ldyBDZXNpdW0uRnJ1c3R1bUdlb21ldHJ5KHtcclxuICAgICAgZnJ1c3R1bTogdGhpcy5mcnVzdHVtLFxyXG4gICAgICBvcmlnaW46IENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLFxyXG4gICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0LmdldFJvdGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXgzKCkpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5jdXJyZW50RnJ1c3R1bUZpbGxlZClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICBnZW9tZXRyeTogZnJ1c3R1bUdlb21ldHJ5LFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21BbHBoYShDZXNpdW0uQ29sb3IuWUVMTE9XLCAwLjQpIC8vIOWNiumAj+aYjum7hOiJsuWhq+WFhVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uTWF0ZXJpYWxBcHBlYXJhbmNlKHtcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUFscGhhKENlc2l1bS5Db2xvci5ZRUxMT1csIDAuNCkgLy8g5aGr5YWF6aKc6ImyXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWVcclxuICAgICAgfSksXHJcbiAgICAgIGFzeW5jaHJvbm91czogZmFsc2UsXHJcbiAgICAgIC8vIHNob3c6IGZhbHNlXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgfVxyXG4gIC8vIOe7mOWItuinhumUpeS9k+i9ruW7k1xyXG4gIGRyYXdGcnVzdHVtT3V0bGluZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3RoYXQub3B0aW9ucy5zaG93JywgdGhhdC5vcHRpb25zLnNob3cpXHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtID0gQ2VzaXVtLlRyYW5zZm9ybXMuaGVhZGluZ1BpdGNoUm9sbFRvRml4ZWRGcmFtZShcclxuICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgdGhpcy5ocHJcclxuICAgIClcclxuXHJcbiAgICBjb25zdCBmcnVzdHVtT3V0bGluZUdlb21ldHJ5ID0gbmV3IENlc2l1bS5GcnVzdHVtT3V0bGluZUdlb21ldHJ5KHtcclxuICAgICAgZnJ1c3R1bTogdGhpcy5mcnVzdHVtLFxyXG4gICAgICBvcmlnaW46IENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLFxyXG4gICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0LmdldFJvdGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXgzKCkpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICBnZW9tZXRyeTogZnJ1c3R1bU91dGxpbmVHZW9tZXRyeSxcclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICAgIENlc2l1bS5Db2xvci5ZRUxMT1dcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBvbHlsaW5lQ29sb3JBcHBlYXJhbmNlKHtcclxuICAgICAgICB0cmFuc2x1Y2VudDogZmFsc2VcclxuICAgICAgfSksXHJcbiAgICAgIGFzeW5jaHJvbm91czogZmFsc2UsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgIC8vIHNob3c6IGZhbHNlXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG4gIH1cclxuICAvLyDmm7TmlrDop4bplKXkvZPkvY3nva5cclxuICB1cGRhdGVGcnVzdHVtUG9zaXRpb24odHlwZSA9ICdtb3ZlJywgcCwgZGVnID0gOTAsIGZsYWcgPSB0cnVlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ21vdmUnKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBjb25zdCBwb2ludCA9IHR1cmYucG9pbnQoW1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICBdKVxyXG4gICAgICBjb25zdCBkZWdyZWVzVmFsdWUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXModGhpcy5ocHIuaGVhZGluZylcclxuICAgICAgY29uc3QgYmVhcmluZyA9IGRlZ3JlZXNWYWx1ZSArIGRlZ1xyXG4gICAgICBjb25zdCBvcHRpb25zID0geyB1bml0czogJ2RlZ3JlZXMnIH1cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgcCwgYmVhcmluZywgb3B0aW9ucykuZ2VvbWV0cnlcclxuICAgICAgICAuY29vcmRpbmF0ZXNcclxuXHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICBkZXN0aW5hdGlvblswXSxcclxuICAgICAgICBkZXN0aW5hdGlvblsxXSxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ICsgdGhpcy5vcHRpb25zLm5vcm1hbEhlaWdodFxyXG4gICAgICApXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSBkZXN0aW5hdGlvblswXVxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gZGVzdGluYXRpb25bMV1cclxuXHJcbiAgICAgIHRoaXMudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICBkZXN0aW5hdGlvblswXSxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uWzFdLFxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAndXBkYXRlJykge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gcFxyXG4gICAgICB0aGlzLm9wdGlvbnMudmlkZW9VcmwgJiYgdGhpcy51cGRhdGVQb2x5Z29uUG9zaXRpb24oKVxyXG4gICAgfVxyXG4gICAgaWYgKGZsYWcpIHtcclxuICAgICAgdGhpcy5zeW5jSHByKClcclxuICAgICAgdGhpcy51cGRhdGVGcnVzdHVtQXR0cmlidXRlcygpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWQjOatpeinhuinklxyXG4gIHN5bmNIcHIoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aWV3ZXIxJywgdGhpcy52aWV3ZXIxKTtcclxuICAgIGlmICh0aGlzLnZpZXdlcjEpIHtcclxuICAgICAgY29uc3QgeyBsbmcsIGxhdCwgYWx0IH0gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25cclxuICAgICAgbGV0IHBpdGNoID0gLXRoaXMuaHByLnBpdGNoIC0gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKVxyXG4gICAgICB0aGlzLnZpZXdlcjEuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIGxuZyxcclxuICAgICAgICAgIGxhdCxcclxuICAgICAgICAgIGFsdCArIHRoaXMub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgICAgICApLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLmhwci5oZWFkaW5nICsgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHBpdGNoLFxyXG4gICAgICAgICAgcm9sbDogdGhpcy5ocHIucm9sbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5pu05paw6KeG6ZSl5L2T55qEIEhlYWRpbmdQaXRjaFJvbGxcclxuICB1cGRhdGVGcnVzdHVtSFBSKFxyXG4gICAgaCA9IHRoaXMuaGVhZCxcclxuICAgIHAgPSB0aGlzLnBpdGNoLFxyXG4gICAgciA9IDAsXHJcbiAgICBmbGFnID0gdHJ1ZSxcclxuICAgIHR5cGUgPSAnJ1xyXG4gICkge1xyXG4gICAgZnVuY3Rpb24gZGVncmVlc1RvUmFkaWFucyhkZWdyZWVzKSB7XHJcbiAgICAgIHJldHVybiAoZGVncmVlcyAqIE1hdGguUEkpIC8gMTgwLjBcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICdhbG9uZScpIHtcclxuICAgICAgdGhpcy5ocHIuaGVhZGluZyA9IGRlZ3JlZXNUb1JhZGlhbnMoaClcclxuICAgICAgdGhpcy5ocHIucGl0Y2ggPSBkZWdyZWVzVG9SYWRpYW5zKHApXHJcbiAgICAgIHRoaXMuaHByLnJvbGwgPSBkZWdyZWVzVG9SYWRpYW5zKHIpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhwci5oZWFkaW5nID0gQ2VzaXVtLk1hdGgubmVnYXRpdmVQaVRvUGkoaClcclxuICAgICAgdGhpcy5ocHIucGl0Y2ggPSBDZXNpdW0uTWF0aC5uZWdhdGl2ZVBpVG9QaShwKVxyXG4gICAgICB0aGlzLmhwci5yb2xsID0gQ2VzaXVtLk1hdGgubmVnYXRpdmVQaVRvUGkocilcclxuICAgIH1cclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIHRoaXMuc3luY0hwcigpXHJcbiAgICAgIHRoaXMudXBkYXRlRnJ1c3R1bUF0dHJpYnV0ZXMoKVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDnlKjkuo7mm7TmlrBcclxuICB1cGRhdGVGcnVzdHVtQXR0cmlidXRlcygpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8g5qOA5p+lIHBvc2l0aW9uIOWSjCBocHIg5piv5ZCm5bey5Yid5aeL5YyWXHJcbiAgICBpZiAoIXRoaXMucG9zaXRpb24gfHwgIXRoaXMuaHByKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1Bvc2l0aW9uIG9yIEhQUiBpcyBub3QgZGVmaW5lZDonLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmhwcilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgLy8g55Sf5oiQ5Y+Y5o2i55+p6Zi1XHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIGlmICghdHJhbnNmb3JtKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zZm9ybSBnZW5lcmF0aW9uIGZhaWxlZC4nKVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDlh4blpIfova7lu5Plh6DkvZXkvZPlkozlpJbop4JcclxuICAgICAgY29uc3Qgb3V0bGluZUdlb21ldHJ5ID0gbmV3IENlc2l1bS5GcnVzdHVtT3V0bGluZUdlb21ldHJ5KHtcclxuICAgICAgICBmcnVzdHVtOiB0aGlzLmZydXN0dW0sXHJcbiAgICAgICAgb3JpZ2luOiBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdHJpeDQuZ2V0Um90YXRpb24odHJhbnNmb3JtLCBuZXcgQ2VzaXVtLk1hdHJpeDMoKSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBvdXRsaW5lQXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVDb2xvckFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIHRyYW5zbHVjZW50OiBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICBDZXNpdW0uQ29sb3IuWUVMTE9XXHJcbiAgICAgIClcclxuXHJcbiAgICAgIC8vIOWHhuWkh+Whq+WFheWHoOS9leS9k+WSjOWkluinglxyXG4gICAgICBjb25zdCBmaWxsZWRHZW9tZXRyeSA9IG5ldyBDZXNpdW0uRnJ1c3R1bUdlb21ldHJ5KHtcclxuICAgICAgICBmcnVzdHVtOiB0aGlzLmZydXN0dW0sXHJcbiAgICAgICAgb3JpZ2luOiBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdHJpeDQuZ2V0Um90YXRpb24odHJhbnNmb3JtLCBuZXcgQ2VzaXVtLk1hdHJpeDMoKSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBmaWxsZWRBcHBlYXJhbmNlID0gbmV3IENlc2l1bS5NYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoJ0NvbG9yJywge1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5ZRUxMT1cud2l0aEFscGhhKDAuNSlcclxuICAgICAgICB9KSxcclxuICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zdCBmaWxsZWRDb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgIENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDAuNSlcclxuICAgICAgKVxyXG5cclxuICAgICAgLy8g5Yig6Zmk5pen55qEIFByaW1pdGl2ZVxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpIHtcclxuICAgICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmN1cnJlbnRGcnVzdHVtT3V0bGluZSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bUZpbGxlZCkge1xyXG4gICAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWIm+W7uuW5tua3u+WKoOaWsOeahOi9ruW7kyBQcmltaXRpdmVcclxuICAgICAgdGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUgPSBuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeTogb3V0bGluZUdlb21ldHJ5LFxyXG4gICAgICAgICAgYXR0cmlidXRlczogeyBjb2xvcjogb3V0bGluZUNvbG9yIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBhcHBlYXJhbmNlOiBvdXRsaW5lQXBwZWFyYW5jZSxcclxuICAgICAgICBhc3luY2hyb25vdXM6IGZhbHNlLFxyXG4gICAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG5cclxuICAgICAgLy8g5Yib5bu65bm25re75Yqg5paw55qE5aGr5YWFIFByaW1pdGl2ZVxyXG4gICAgICB0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgZ2VvbWV0cnk6IGZpbGxlZEdlb21ldHJ5LFxyXG4gICAgICAgICAgYXR0cmlidXRlczogeyBjb2xvcjogZmlsbGVkQ29sb3IgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IGZpbGxlZEFwcGVhcmFuY2UsXHJcbiAgICAgICAgYXN5bmNocm9ub3VzOiBmYWxzZSxcclxuICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvd1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZCh0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZHJhd0ZydXN0dW06JywgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOiwg+aVtOinhumUpeS9k+eahCBuZWFyIOWSjCBmYXIg5bmz6Z2iXHJcbiAgdXBkYXRlRnJ1c3R1bU5lYXJGYXIobmV3TmVhciwgbmV3RmFyKSB7XHJcbiAgICB0aGlzLmZydXN0dW0ubmVhciA9IG5ld05lYXJcclxuICAgIHRoaXMuZnJ1c3R1bS5mYXIgPSBuZXdGYXJcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gIH1cclxuICAvLyDosIPmlbTop4bplKXkvZPnmoQgZm92XHJcbiAgdXBkYXRlRnJ1c3R1bUZvdihuZXdGb3YpIHtcclxuICAgIHRoaXMuZnJ1c3R1bS5mb3YgPSBDZXNpdW0uTWF0aC50b1JhZGlhbnMobmV3Rm92KVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bUZpbGxlZCgpXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3coYm9vbCkge1xyXG4gICAgaWYgKHR5cGVvZiBib29sID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lLnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQuc2hvdyA9IGJvb2xcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd25IYW5kbGVyKVxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmtleXVwSGFuZGxlcilcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy52aWRlb0VudGl0eSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy52aWRlb0VudGl0eSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFNQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQXVCQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQUtBO0FBSUE7QUFDQTtBQUNBO0FBS0E7QUFLQTtBQUtBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFMQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUEzb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/frustum.js\n"); - -/***/ }), - -/***/ "./src/Obj/AirLine/pointRoute.js": -/*!***************************************!*\ - !*** ./src/Obj/AirLine/pointRoute.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PointRoute; });\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/readOnlyError */ \"./node_modules/@babel/runtime/helpers/readOnlyError.js\");\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _frustum_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./frustum.js */ \"./src/Obj/AirLine/frustum.js\");\n/* harmony import */ var _billord_point_line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./billord_point_line */ \"./src/Obj/AirLine/billord_point_line.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\nvar PointRoute = /*#__PURE__*/function () {\n function PointRoute() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var viewer = arguments.length > 1 ? arguments[1] : undefined;\n var viewer1 = arguments.length > 2 ? arguments[2] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, PointRoute);\n this.options = _objectSpread({}, options);\n this.viewer = viewer;\n this.viewer1 = viewer1;\n this.entity = null;\n this.frustum = null;\n this.billordPointLineMaps = [];\n this.index = 0;\n this.positions = [];\n PointRoute.setDefaultValue(this);\n this.create();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(PointRoute, [{\n key: \"create\",\n value: function create() {\n var _this = this;\n if (this.options.positions.length < 2) {\n return;\n }\n var that = this;\n var frustumShow = that.options.frustumShow;\n this.entity = this.viewer.entities.add({\n show: this.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n var positions = [];\n for (var i = 0; i < _this.billordPointLineMaps.length; i++) {\n var element = _this.billordPointLineMaps[i];\n positions.push(element.billboardEntity.position.getValue());\n }\n return positions;\n }, false),\n width: 3,\n material: Cesium.Color.fromCssColorString(this.options.color)\n }\n });\n // 创建点、线、billbord\n for (var i = 0; i < this.options.positions.length; i++) {\n var element = this.options.positions[i];\n // console.log(\"elementelementelement\", element);\n if (frustumShow && i == this.index) {\n this.frustum = new _frustum_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n position: element,\n show: false,\n arr: this.options.positions,\n index: i,\n normalHeight: this.options.normalHeight\n }, this.viewer, this.viewer1);\n }\n var op = new _billord_point_line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n positions: element,\n index: i + 1,\n saveFun: that.options.saveFun,\n selectFun: that.options.selectFun,\n keyboard: that.options.keyboard,\n updateFrustumFun: that.updateFrustumPosition,\n normalHeight: that.options.normalHeight,\n frustum: that.frustum,\n airHeight: that.options.airHeight\n }, this.viewer);\n this.billordPointLineMaps.push(op);\n }\n this.onKey();\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.frustum.currentFrustumOutline.show = bool;\n this.billordPointLineMaps.forEach(function (item) {\n item.show = bool;\n });\n this.entity.show = bool;\n }\n }\n // 监听键盘事件\n }, {\n key: \"onKey\",\n value: function onKey() {\n var that = this;\n document.addEventListener('keydown', function (event) {\n switch (event.key) {\n case 'ArrowUp':\n that.index += 1;\n that.updateFrustum(true);\n break;\n case 'ArrowDown':\n that.index -= 1;\n that.updateFrustum(false);\n break;\n }\n });\n }\n // 更新frustum\n }, {\n key: \"updateFrustum\",\n value: function updateFrustum(flag) {\n console.log(this.index);\n var obj;\n if (this.index > this.options.positions.length - 1 || this.index < 0) {\n var str = this.index > 0 ? '已选中最后一个航点' : '已选中第一个航点';\n alert(str);\n return;\n }\n for (var i = 0; i < this.billordPointLineMaps.length; i++) {\n var element = this.billordPointLineMaps[i];\n var hpr = null;\n if (i == this.index) {\n var position = element.billboardEntity.position.getValue();\n if (this.index !== 0) {\n obj = this.direction(this.billordPointLineMaps[i - 1].billboardEntity.position.getValue(), element.billboardEntity.position.getValue());\n obj.hpr, _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default()(\"hpr\");\n }\n if (this.index == 0) {\n obj = this.direction(this.billordPointLineMaps[0].billboardEntity.position.getValue(), this.billordPointLineMaps[1].billboardEntity.position.getValue());\n obj.hpr, _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default()(\"hpr\");\n }\n if (hpr) {\n this.frustum.updateFrustumHPR(hpr.heading, this.frustum.pitch, hpr.roll);\n }\n if (position) {\n this.frustum.updateFrustumPosition('update', position);\n }\n }\n }\n }\n }, {\n key: \"cartesian3Towgs84\",\n value: function cartesian3Towgs84(cartesian) {\n var ellipsoid = this.viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n }\n // 计算一个到另一个点的方向\n }, {\n key: \"direction\",\n value: function direction(pointA, pointB) {\n //向量AB\n var vector2 = Cesium.Cartesian3.subtract(pointA, pointB, new Cesium.Cartesian3());\n //归一化\n var normal = Cesium.Cartesian3.normalize(vector2, new Cesium.Cartesian3());\n //旋转矩阵 rotationMatrixFromPositionVelocity源码中有,并未出现在cesiumAPI中\n var rotationMatrix3 = Cesium.Transforms.rotationMatrixFromPositionVelocity(pointA, normal, Cesium.Ellipsoid.WGS84);\n var modelMatrix4 = Cesium.Matrix4.fromRotationTranslation(rotationMatrix3, pointA);\n // 获取getHeadingPitchRoll\n var m1 = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(modelMatrix4, new Cesium.Cartesian3()), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4());\n // 矩阵相除\n var m3 = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()), modelMatrix4, new Cesium.Matrix4());\n // 得到旋转矩阵\n var mat3 = Cesium.Matrix4.getMatrix3(m3, new Cesium.Matrix3());\n // 计算四元数\n var q = Cesium.Quaternion.fromRotationMatrix(mat3);\n // 计算旋转角(弧度)\n var hpr = Cesium.HeadingPitchRoll.fromQuaternion(q);\n // hpr.pitch = hpr.pitch + 3.14 / 2 + 3.14;\n hpr.pitch = 90;\n var orientation = Cesium.Transforms.headingPitchRollQuaternion(pointA, hpr);\n return {\n hpr: hpr,\n orientation: orientation\n };\n }\n /**\r\n *\r\n * @param {index} 索引\r\n */\n // 删除航点\n }, {\n key: \"delPosition\",\n value: function delPosition(index) {\n this.options.positions.splice(index, 1);\n // this.options.positions = this.options.positions.filter((item, index) => index !== i);\n this.remove();\n this.create();\n }\n // 获取最新的positions\n }, {\n key: \"getNewPositions\",\n value: function getNewPositions() {\n var positions = [];\n for (var i = 0; i < this.billordPointLineMaps.length; i++) {\n var element = this.billordPointLineMaps[i];\n var position = this.cartesian3Towgs84(element.billboardEntity.position.getValue());\n positions.push(position);\n }\n return positions;\n }\n // 删除\n }, {\n key: \"remove\",\n value: function remove() {\n this.billordPointLineMaps.forEach(function (item, i) {\n item.remove();\n });\n if (this.frustum) {\n this.frustum.remove();\n }\n this.viewer.entities.remove(this.entity);\n this.billordPointLineMaps = [];\n }\n /**\r\n *\r\n * @param {String} type\r\n * @param {Number} index\r\n * @param {Array} position\r\n */\n // 新增航点 (before,after,end)\n }, {\n key: \"addPoint\",\n value: function addPoint(positions) {\n this.options.positions = positions;\n this.remove();\n this.create();\n }\n // 根据选中的点更新视锥的位置\n }, {\n key: \"updateFrustumPosition\",\n value: function updateFrustumPosition(index) {\n if (!this.billordPointLineMaps || this.billordPointLineMaps.length === 0) return;\n if (this.frustum) {\n this.frustum.show = true;\n }\n var current = this.billordPointLineMaps[index].billboardEntity.position.getValue();\n if (index !== 0) {\n var obj;\n var after = index === this.billordPointLineMaps.length - 1 ? this.billordPointLineMaps[index - 1].billboardEntity.position.getValue() // 获取前一个位置\n : this.billordPointLineMaps[index + 1].billboardEntity.position.getValue(); // 获取下一个位置\n obj = this.direction(index === this.billordPointLineMaps.length - 1 ? after : current, index === this.billordPointLineMaps.length - 1 ? current : after);\n var _obj = obj,\n hpr = _obj.hpr;\n this.frustum.updateFrustumHPR(hpr.heading, Cesium.Math.toRadians(this.frustum.pitch), hpr.roll);\n } else {\n var _obj2;\n var _after = this.billordPointLineMaps[1].billboardEntity.position.getValue();\n _obj2 = this.direction(current, _after);\n var _obj3 = _obj2,\n _hpr = _obj3.hpr;\n this.frustum.updateFrustumHPR(_hpr.heading, Cesium.Math.toRadians(this.frustum.pitch), _hpr.roll);\n }\n if (current) {\n this.frustum.updateFrustumPosition('update', current);\n }\n var position = this.cartesian3Towgs84(current);\n this.billordPointLineMaps.forEach(function (item) {\n item.billboardEntity.label.show = false; // 先将所有元素的 label.show 设置为 false\n });\n var targetItem = this.billordPointLineMaps.find(function (item) {\n return item.billboardEntity.index == index + 1;\n });\n if (targetItem) {\n targetItem.billboardEntity.label.show = true; // 然后找到匹配的 index 设置为 true\n }\n return position;\n }\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n var positionArray = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n var a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt + this.options.height);\n positionArray.push(a.x, a.y, a.z);\n }\n var BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-80.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n //计算航线的长度\n }, {\n key: \"countLength\",\n value: function countLength() {\n if (this.options.positions.length < 2) {\n return 0;\n } else {\n var lineString = [];\n this.options.positions.forEach(function (item) {\n lineString.push([item.lng, item.lat]);\n });\n var line = turf.lineString(lineString);\n return (turf.length(line) * 1000).toFixed(2);\n }\n }\n //计算航线时间\n }, {\n key: \"countTime\",\n value: function countTime() {\n var time = Math.floor(Number(this.countLength())) / this.options.speed;\n var s = Math.floor(time % 60);\n var m = Math.floor(time / 60);\n var str = m + '分' + s + '秒';\n return str;\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$frustum, _that$options$keyboar;\n that.options.positions = that.options.positions || [];\n that.options.show = that.options.show || true;\n that.options.color = that.options.color || '#00d590';\n that.options.height = that.options.height || 500;\n that.options.speed = that.options.speed || 1;\n that.options.frustumShow = (_that$options$frustum = that.options.frustumShow) !== null && _that$options$frustum !== void 0 ? _that$options$frustum : true;\n that.options.saveFun = that.options.saveFun || null;\n that.options.selectFun = that.options.selectFun || null;\n that.options.keyboard = (_that$options$keyboar = that.options.keyboard) !== null && _that$options$keyboar !== void 0 ? _that$options$keyboar : true;\n that.options.normalHeight = that.options.normalHeight || 100;\n that.options.airHeight = that.options.airHeight || 100;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvcG9pbnRSb3V0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQWlyTGluZS9wb2ludFJvdXRlLmpzPzU1ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZSVVNUVU4gZnJvbSAnLi9mcnVzdHVtLmpzJ1xyXG5pbXBvcnQgQmlsbG9yZFBvaW50TGluZSBmcm9tICcuL2JpbGxvcmRfcG9pbnRfbGluZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50Um91dGUge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSwgdmlld2VyLCB2aWV3ZXIxKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMudmlld2VyMSA9IHZpZXdlcjFcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgdGhpcy5mcnVzdHVtID0gbnVsbFxyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyA9IFtdXHJcbiAgICB0aGlzLmluZGV4ID0gMFxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgUG9pbnRSb3V0ZS5zZXREZWZhdWx0VmFsdWUodGhpcylcclxuICAgIHRoaXMuY3JlYXRlKClcclxuICB9XHJcbiAgc3RhdGljIHNldERlZmF1bHRWYWx1ZSh0aGF0KSB7XHJcbiAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9ucyB8fCBbXVxyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyB8fCB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMuY29sb3IgPSB0aGF0Lm9wdGlvbnMuY29sb3IgfHwgJyMwMGQ1OTAnXHJcbiAgICB0aGF0Lm9wdGlvbnMuaGVpZ2h0ID0gdGhhdC5vcHRpb25zLmhlaWdodCB8fCA1MDBcclxuICAgIHRoYXQub3B0aW9ucy5zcGVlZCA9IHRoYXQub3B0aW9ucy5zcGVlZCB8fCAxXHJcbiAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bVNob3cgPSB0aGF0Lm9wdGlvbnMuZnJ1c3R1bVNob3cgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLnNhdmVGdW4gPSB0aGF0Lm9wdGlvbnMuc2F2ZUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuc2VsZWN0RnVuID0gdGhhdC5vcHRpb25zLnNlbGVjdEZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPSB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYWlySGVpZ2h0ID0gdGhhdC5vcHRpb25zLmFpckhlaWdodCB8fCAxMDBcclxuICB9XHJcbiAgY3JlYXRlKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IHsgZnJ1c3R1bVNob3cgfSA9IHRoYXQub3B0aW9uc1xyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICAgICAgICBwb3NpdGlvbnMucHVzaChlbGVtZW50LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyDliJvlu7rngrnjgIHnur/jgIFiaWxsYm9yZFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWxlbWVudGVsZW1lbnRlbGVtZW50XCIsIGVsZW1lbnQpO1xyXG4gICAgICBpZiAoZnJ1c3R1bVNob3cgJiYgaSA9PSB0aGlzLmluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5mcnVzdHVtID0gbmV3IEZSVVNUVU4oXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBlbGVtZW50LFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgYXJyOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zLFxyXG4gICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgbm9ybWFsSGVpZ2h0OiB0aGlzLm9wdGlvbnMubm9ybWFsSGVpZ2h0XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIsXHJcbiAgICAgICAgICB0aGlzLnZpZXdlcjFcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG9wID0gbmV3IEJpbGxvcmRQb2ludExpbmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBlbGVtZW50LFxyXG4gICAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgICAgc2F2ZUZ1bjogdGhhdC5vcHRpb25zLnNhdmVGdW4sXHJcbiAgICAgICAgICBzZWxlY3RGdW46IHRoYXQub3B0aW9ucy5zZWxlY3RGdW4sXHJcbiAgICAgICAgICBrZXlib2FyZDogdGhhdC5vcHRpb25zLmtleWJvYXJkLFxyXG4gICAgICAgICAgdXBkYXRlRnJ1c3R1bUZ1bjogdGhhdC51cGRhdGVGcnVzdHVtUG9zaXRpb24sXHJcbiAgICAgICAgICBub3JtYWxIZWlnaHQ6IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQsXHJcbiAgICAgICAgICBmcnVzdHVtOiB0aGF0LmZydXN0dW0sXHJcbiAgICAgICAgICBhaXJIZWlnaHQ6IHRoYXQub3B0aW9ucy5haXJIZWlnaHRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRoaXMudmlld2VyXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5wdXNoKG9wKVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbktleSgpXHJcbiAgfVxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG4gIHNldCBzaG93KGJvb2wpIHtcclxuICAgIGlmICh0eXBlb2YgYm9vbCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5jdXJyZW50RnJ1c3R1bU91dGxpbmUuc2hvdyA9IGJvb2xcclxuICAgICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uc2hvdyA9IGJvb2xcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGJvb2xcclxuICAgIH1cclxuICB9XHJcbiAgLy8g55uR5ZCs6ZSu55uY5LqL5Lu2XHJcbiAgb25LZXkoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgICAgdGhhdC5pbmRleCArPSAxXHJcbiAgICAgICAgICB0aGF0LnVwZGF0ZUZydXN0dW0odHJ1ZSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICAgIHRoYXQuaW5kZXggLT0gMVxyXG4gICAgICAgICAgdGhhdC51cGRhdGVGcnVzdHVtKGZhbHNlKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy8g5pu05pawZnJ1c3R1bVxyXG4gIHVwZGF0ZUZydXN0dW0oZmxhZykge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5pbmRleClcclxuICAgIGxldCBvYmpcclxuICAgIGlmICh0aGlzLmluZGV4ID4gdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggLSAxIHx8IHRoaXMuaW5kZXggPCAwKSB7XHJcbiAgICAgIGxldCBzdHIgPSB0aGlzLmluZGV4ID4gMCA/ICflt7LpgInkuK3mnIDlkI7kuIDkuKroiKrngrknIDogJ+W3sumAieS4reesrOS4gOS4quiIqueCuSdcclxuICAgICAgYWxlcnQoc3RyKVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICBjb25zdCBocHIgPSBudWxsXHJcbiAgICAgIGlmIChpID09IHRoaXMuaW5kZXgpIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBlbGVtZW50LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggIT09IDApIHtcclxuICAgICAgICAgIG9iaiA9IHRoaXMuZGlyZWN0aW9uKFxyXG4gICAgICAgICAgICB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzW1xyXG4gICAgICAgICAgICAgIGkgLSAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVsZW1lbnQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGhwciA9IG9iai5ocHJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgb2JqID0gdGhpcy5kaXJlY3Rpb24oXHJcbiAgICAgICAgICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbMF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbMV0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGhwciA9IG9iai5ocHJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhwcikge1xyXG4gICAgICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1IUFIoXHJcbiAgICAgICAgICAgIGhwci5oZWFkaW5nLFxyXG4gICAgICAgICAgICB0aGlzLmZydXN0dW0ucGl0Y2gsXHJcbiAgICAgICAgICAgIGhwci5yb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb3NpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbigndXBkYXRlJywgcG9zaXRpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikge1xyXG4gICAgdmFyIGVsbGlwc29pZCA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gICAgdmFyIGNhcnRlc2lhbjMgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoXHJcbiAgICAgIGNhcnRlc2lhbi54LFxyXG4gICAgICBjYXJ0ZXNpYW4ueSxcclxuICAgICAgY2FydGVzaWFuLnpcclxuICAgIClcclxuICAgIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICAgIHZhciBsYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKVxyXG4gICAgdmFyIGxuZyA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKVxyXG4gICAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxuZzogbG5nLFxyXG4gICAgICBsYXQ6IGxhdCxcclxuICAgICAgYWx0OiBhbHRcclxuICAgIH1cclxuICB9XHJcbiAgLy8g6K6h566X5LiA5Liq5Yiw5Y+m5LiA5Liq54K555qE5pa55ZCRXHJcbiAgZGlyZWN0aW9uKHBvaW50QSwgcG9pbnRCKSB7XHJcbiAgICAvL+WQkemHj0FCXHJcbiAgICBjb25zdCB2ZWN0b3IyID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgIHBvaW50QSxcclxuICAgICAgcG9pbnRCLFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgKVxyXG4gICAgLy/lvZLkuIDljJZcclxuICAgIGNvbnN0IG5vcm1hbCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZSh2ZWN0b3IyLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgIC8v5peL6L2s55+p6Zi1IHJvdGF0aW9uTWF0cml4RnJvbVBvc2l0aW9uVmVsb2NpdHnmupDnoIHkuK3mnInvvIzlubbmnKrlh7rnjrDlnKhjZXNpdW1BUEnkuK1cclxuICAgIGNvbnN0IHJvdGF0aW9uTWF0cml4MyA9IENlc2l1bS5UcmFuc2Zvcm1zLnJvdGF0aW9uTWF0cml4RnJvbVBvc2l0aW9uVmVsb2NpdHkoXHJcbiAgICAgIHBvaW50QSxcclxuICAgICAgbm9ybWFsLFxyXG4gICAgICBDZXNpdW0uRWxsaXBzb2lkLldHUzg0XHJcbiAgICApXHJcbiAgICBjb25zdCBtb2RlbE1hdHJpeDQgPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihcclxuICAgICAgcm90YXRpb25NYXRyaXgzLFxyXG4gICAgICBwb2ludEFcclxuICAgIClcclxuICAgIC8vIOiOt+WPlmdldEhlYWRpbmdQaXRjaFJvbGxcclxuICAgIGxldCBtMSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKFxyXG4gICAgICBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihtb2RlbE1hdHJpeDQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSxcclxuICAgICAgQ2VzaXVtLkVsbGlwc29pZC5XR1M4NCxcclxuICAgICAgbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgIClcclxuICAgIC8vIOefqemYteebuOmZpFxyXG4gICAgbGV0IG0zID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkoXHJcbiAgICAgIENlc2l1bS5NYXRyaXg0LmludmVyc2UobTEsIG5ldyBDZXNpdW0uTWF0cml4NCgpKSxcclxuICAgICAgbW9kZWxNYXRyaXg0LFxyXG4gICAgICBuZXcgQ2VzaXVtLk1hdHJpeDQoKVxyXG4gICAgKVxyXG4gICAgLy8g5b6X5Yiw5peL6L2s55+p6Zi1XHJcbiAgICBsZXQgbWF0MyA9IENlc2l1bS5NYXRyaXg0LmdldE1hdHJpeDMobTMsIG5ldyBDZXNpdW0uTWF0cml4MygpKVxyXG4gICAgLy8g6K6h566X5Zub5YWD5pWwXHJcbiAgICBsZXQgcSA9IENlc2l1bS5RdWF0ZXJuaW9uLmZyb21Sb3RhdGlvbk1hdHJpeChtYXQzKVxyXG4gICAgLy8g6K6h566X5peL6L2s6KeSKOW8p+W6pilcclxuICAgIGxldCBocHIgPSBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tUXVhdGVybmlvbihxKVxyXG4gICAgLy8gaHByLnBpdGNoID0gaHByLnBpdGNoICsgMy4xNCAvIDIgKyAzLjE0O1xyXG4gICAgaHByLnBpdGNoID0gOTBcclxuICAgIGxldCBvcmllbnRhdGlvbiA9IENlc2l1bS5UcmFuc2Zvcm1zLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uKHBvaW50QSwgaHByKVxyXG4gICAgcmV0dXJuIHsgaHByLCBvcmllbnRhdGlvbiB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtpbmRleH0g57Si5byVXHJcbiAgICovXHJcbiAgLy8g5Yig6Zmk6Iiq54K5XHJcbiAgZGVsUG9zaXRpb24oaW5kZXgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gaW5kZXggIT09IGkpO1xyXG4gICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgdGhpcy5jcmVhdGUoKVxyXG4gIH1cclxuICAvLyDojrflj5bmnIDmlrDnmoRwb3NpdGlvbnNcclxuICBnZXROZXdQb3NpdGlvbnMoKSB7XHJcbiAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gICAgICAgIGVsZW1lbnQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaChwb3NpdGlvbilcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnNcclxuICB9XHJcbiAgLy8g5Yig6ZmkXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgIGl0ZW0ucmVtb3ZlKClcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5mcnVzdHVtKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5yZW1vdmUoKVxyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyA9IFtdXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcclxuICAgKiBAcGFyYW0ge051bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0FycmF5fSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIC8vIOaWsOWinuiIqueCuSDvvIhiZWZvcmXvvIxhZnRlcu+8jGVuZO+8iVxyXG4gIGFkZFBvaW50KHBvc2l0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xyXG4gICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgdGhpcy5jcmVhdGUoKVxyXG4gIH1cclxuICAvLyDmoLnmja7pgInkuK3nmoTngrnmm7TmlrDop4bplKXnmoTkvY3nva5cclxuICB1cGRhdGVGcnVzdHVtUG9zaXRpb24oaW5kZXgpIHtcclxuICAgIGlmICghdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyB8fCB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuXHJcbiAgICBpZiAodGhpcy5mcnVzdHVtKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5zaG93ID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzW1xyXG4gICAgICBpbmRleFxyXG4gICAgXS5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgaWYgKGluZGV4ICE9PSAwKSB7XHJcbiAgICAgIGxldCBvYmpcclxuICAgICAgbGV0IGFmdGVyID1cclxuICAgICAgICBpbmRleCA9PT0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGggLSAxXHJcbiAgICAgICAgICA/IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbXHJcbiAgICAgICAgICAgICAgaW5kZXggLSAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCkgLy8g6I635Y+W5YmN5LiA5Liq5L2N572uXHJcbiAgICAgICAgICA6IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbXHJcbiAgICAgICAgICAgICAgaW5kZXggKyAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCkgLy8g6I635Y+W5LiL5LiA5Liq5L2N572uXHJcbiAgICAgIG9iaiA9IHRoaXMuZGlyZWN0aW9uKFxyXG4gICAgICAgIGluZGV4ID09PSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmxlbmd0aCAtIDEgPyBhZnRlciA6IGN1cnJlbnQsXHJcbiAgICAgICAgaW5kZXggPT09IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHMubGVuZ3RoIC0gMSA/IGN1cnJlbnQgOiBhZnRlclxyXG4gICAgICApXHJcbiAgICAgIGxldCB7IGhwciB9ID0gb2JqXHJcbiAgICAgIHRoaXMuZnJ1c3R1bS51cGRhdGVGcnVzdHVtSFBSKFxyXG4gICAgICAgIGhwci5oZWFkaW5nLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLmZydXN0dW0ucGl0Y2gpLFxyXG4gICAgICAgIGhwci5yb2xsXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvYmpcclxuICAgICAgbGV0IGFmdGVyID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1sxXS5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBvYmogPSB0aGlzLmRpcmVjdGlvbihjdXJyZW50LCBhZnRlcilcclxuICAgICAgbGV0IHsgaHByIH0gPSBvYmpcclxuICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1IUFIoXHJcbiAgICAgICAgaHByLmhlYWRpbmcsXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuZnJ1c3R1bS5waXRjaCksXHJcbiAgICAgICAgaHByLnJvbGxcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnQpIHtcclxuICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbigndXBkYXRlJywgY3VycmVudClcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY3VycmVudClcclxuICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaXRlbS5iaWxsYm9hcmRFbnRpdHkubGFiZWwuc2hvdyA9IGZhbHNlIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahCBsYWJlbC5zaG93IOiuvue9ruS4uiBmYWxzZVxyXG4gICAgfSlcclxuICAgIGNvbnN0IHRhcmdldEl0ZW0gPSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmZpbmQoXHJcbiAgICAgIGl0ZW0gPT4gaXRlbS5iaWxsYm9hcmRFbnRpdHkuaW5kZXggPT0gaW5kZXggKyAxXHJcbiAgICApXHJcbiAgICBpZiAodGFyZ2V0SXRlbSkge1xyXG4gICAgICB0YXJnZXRJdGVtLmJpbGxib2FyZEVudGl0eS5sYWJlbC5zaG93ID0gdHJ1ZSAvLyDnhLblkI7mib7liLDljLnphY3nmoQgaW5kZXgg6K6+572u5Li6IHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvblxyXG4gIH1cclxuICBmbHlUbygpIHtcclxuICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ICsgdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICApXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgfVxyXG4gICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgdGhpcy52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtODAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy/orqHnrpfoiKrnur/nmoTplb/luqZcclxuICBjb3VudExlbmd0aCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgcmV0dXJuIDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBsaW5lU3RyaW5nID0gW11cclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGxpbmVTdHJpbmcucHVzaChbaXRlbS5sbmcsIGl0ZW0ubGF0XSlcclxuICAgICAgfSlcclxuICAgICAgdmFyIGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcobGluZVN0cmluZylcclxuICAgICAgcmV0dXJuICh0dXJmLmxlbmd0aChsaW5lKSAqIDEwMDApLnRvRml4ZWQoMilcclxuICAgIH1cclxuICB9XHJcbiAgLy/orqHnrpfoiKrnur/ml7bpl7RcclxuICBjb3VudFRpbWUoKSB7XHJcbiAgICBsZXQgdGltZSA9IE1hdGguZmxvb3IoTnVtYmVyKHRoaXMuY291bnRMZW5ndGgoKSkpIC8gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgICBsZXQgcyA9IE1hdGguZmxvb3IodGltZSAlIDYwKVxyXG4gICAgbGV0IG0gPSBNYXRoLmZsb29yKHRpbWUgLyA2MClcclxuICAgIGxldCBzdHIgPSBtICsgJ+WIhicgKyBzICsgJ+enkidcclxuICAgIHJldHVybiBzdHJcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFJQTtBQUNBO0FBS0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFJQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBclZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/pointRoute.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/CircleViewShed/_element.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Analysis/CircleViewShed/_element.js ***! - \*****************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u89C6\\u70B9\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u91C7\\u6837\\u7CBE\\u5EA6\\n \\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NpcmNsZVZpZXdTaGVkL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9DaXJjbGVWaWV3U2hlZC9fZWxlbWVudC5qcz9iNTE5Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuinhueCuemrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJ2aWV3UG9pbnRIZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6YeH5qC357K+5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJwcmVjaXNpb25cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFCQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CircleViewShed/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/CircleViewShed/index.js": -/*!**************************************************!*\ - !*** ./src/Obj/Analysis/CircleViewShed/index.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/CircleViewShed/_element.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n// ViewShed.js\n\n\n\n\n\n\n/**\r\n * @constructor\r\n * @description 可视域分析\r\n * @param sdk\r\n * @param {Object} options 选项。\r\n * @param {Number} options.viewPointHeight=1.8 视点高度(m)。\r\n * @param {Number} options.precision=20 精度。\r\n * @param {String} options.visibleAreaColor=#008000 可视区域颜色。\r\n * @param {String} options.invisibleAreaColor=#FF0000 不可视区域颜色。\r\n */\nvar _intervalEvents = /*#__PURE__*/new WeakMap();\nvar CircleViewShed = /*#__PURE__*/function (_Tools) {\n function CircleViewShed(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CircleViewShed);\n _this2 = _callSuper(this, CircleViewShed, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _intervalEvents, new Map());\n _this2.viewer = sdk.viewer;\n _this2.options = {};\n _this2.options.visibleAreaColor = options.visibleAreaColor || '#008000';\n _this2.options.invisibleAreaColor = options.invisibleAreaColor || '#FF0000';\n _this2.ids = [];\n _this2.primitives = [];\n _this2.viewpointPrimitive = null;\n _this2._elms = {};\n _this2.precision = options.precision;\n _this2.viewPointHeight = options.viewPointHeight;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n _this2.html = null;\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_11__[\"default\"](sdk);\n YJ.Analysis.AnalysesResults.push(_this2);\n // CircleViewShed.edit(this)\n\n // CircleViewShed.create(this)\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(CircleViewShed, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(CircleViewShed, [{\n key: \"draw\",\n value: function draw() {\n var terrainAvailability = this.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n CircleViewShed.create(this);\n }\n }, {\n key: \"viewPointHeight\",\n get: function get() {\n return this.options.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.options.viewPointHeight = viewPointHeight;\n this._elms.viewPointHeight && this._elms.viewPointHeight.forEach(function (item) {\n item.value = viewPointHeight;\n });\n }\n }, {\n key: \"viewPointHeights\",\n get: function get() {\n return this.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.viewPointHeight = viewPointHeight;\n }\n }, {\n key: \"precision\",\n get: function get() {\n return this.options.precision;\n },\n set: function set(v) {\n var precision = Math.floor(Number(v));\n if (isNaN(precision)) {\n precision = 20;\n } else if (precision < 1) {\n precision = 1;\n }\n this.options.precision = precision;\n this._elms.precision && this._elms.precision.forEach(function (item) {\n item.value = precision;\n });\n }\n }, {\n key: \"precisions\",\n get: function get() {\n return this.precision;\n },\n set: function set(val) {\n this.precision = val;\n }\n }, {\n key: \"analyse\",\n value:\n // static async edit(that) {\n // if (that._DialogObject && that._DialogObject.close) {\n // that._DialogObject.close()\n // that._DialogObject = null\n // }\n // that._DialogObject = await new Dialog(that.sdk.viewer._container, {\n // title: '圆形视域分析',\n // left: '180px',\n // top: '100px',\n // closeCallBack: () => {\n // that.Dialog.closeCallBack && that.Dialog.closeCallBack()\n // YJ.Measure.SetMeasureStatus(false)\n // }\n // })\n // await that._DialogObject.init()\n // that._DialogObject._element.body.className =\n // that._DialogObject._element.body.className + ' circle-view-shed'\n // let contentElm = document.createElement('div')\n // contentElm.innerHTML = html()\n // that._DialogObject.contentAppChild(contentElm)\n\n // let drawElm = document.createElement('button')\n // drawElm.innerHTML = '绘制'\n // drawElm.addEventListener('click', () => {\n // let terrainAvailability = that.viewer.terrainProvider.availability;\n // if (!terrainAvailability) {\n // window.ELEMENT && window.ELEMENT.Message({\n // message: '未加载地形数据!',\n // type: 'warning',\n // duration: 1500\n // });\n // return\n // }\n // CircleViewShed.create(that)\n // })\n // that._DialogObject.footAppChild(drawElm)\n\n // let all_elm = contentElm.getElementsByTagName('*')\n // that._EventBinding.on(that, all_elm)\n // that._elms = that._EventBinding.element\n // }\n\n function analyse() {\n var _this3 = this;\n // this.destroy()\n var center = [this.center.lng, this.center.lat];\n var radius = this.radius / 1000;\n var circle = turf.circle(center, radius, {\n steps: 180,\n units: 'kilometers',\n properties: {\n foo: 'bar'\n }\n });\n if (!this.viewpointPrimitive) {\n this.viewpointPrimitive = this.viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());\n }\n if (!this.viewBillboardPrimitive) {\n this.viewBillboardPrimitive = this.viewer.scene.primitives.add(new Cesium.BillboardCollection());\n }\n var array = [];\n var distance = radius / this.precision;\n for (var i = 1; i < circle.geometry.coordinates[0].length; i++) {\n var line = turf.lineString([center, circle.geometry.coordinates[0][i]]);\n var array2 = [];\n for (var j = 1; j <= this.precision; j++) {\n var sliced = turf.lineSliceAlong(line, 0, distance * j, {\n units: 'kilometers'\n });\n array2.push([sliced.geometry.coordinates[1][0], sliced.geometry.coordinates[1][1]]);\n }\n array.push(array2);\n }\n var viewPoint = Cesium.Cartesian3.fromDegrees(this.center.lng, this.center.lat, this.center.alt + this.viewPointHeight);\n var instances = [];\n CircleViewShed.getcanvas(this).then(function (canvas) {\n return _this3.viewBillboardPrimitive.add({\n position: viewPoint,\n image: canvas,\n width: 200,\n height: 140,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n });\n });\n this.viewpointPrimitive.add({\n position: viewPoint,\n color: Cesium.Color.AQUA.withAlpha(1),\n pixelSize: 6\n });\n var m = 0;\n var _this = this;\n var key = this.randomString();\n var intervalEvent = setInterval(function () {\n if (m >= array.length) {\n var item = _classPrivateFieldGet(_intervalEvents, _this3).get(key);\n item && clearInterval(item.event);\n return;\n }\n InBatches(m);\n m += 1;\n }, 0);\n _classPrivateFieldGet(_intervalEvents, this).set(key, {\n event: intervalEvent\n });\n function InBatches(k) {\n var instances = [];\n var i = k;\n for (var _j = 0; _j < array[i].length; _j++) {\n var pt1 = array[i][_j];\n var pt2 = void 0;\n var pt3 = void 0;\n var pt4 = array[i][_j - 1];\n if (i == array.length - 1) {\n pt2 = array[0][_j];\n pt3 = array[0][_j - 1];\n } else {\n pt2 = array[i + 1][_j];\n pt3 = array[i + 1][_j - 1];\n }\n if (_j == 0) {\n pt3 = [].concat(center);\n pt4 = [];\n }\n var cpt = [(pt1[0] + pt3[0]) / 2, (pt1[1] + pt3[1]) / 2];\n var cartographic = Cesium.Cartographic.fromDegrees(cpt[0], cpt[1]);\n var height = _this.viewer.scene.globe.getHeight(cartographic);\n var targetPoint = Cesium.Cartesian3.fromDegrees(cpt[0], cpt[1], height);\n var direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(targetPoint, viewPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var ray = new Cesium.Ray(viewPoint, direction);\n var pickedObjects = _this.viewer.scene.drillPickFromRay(ray, _this.primitives);\n var result = void 0;\n for (var _i = 0; _i < pickedObjects.length; _i++) {\n if (pickedObjects[_i].position) {\n result = pickedObjects[_i];\n break;\n }\n }\n var color = Cesium.Color.LIME;\n if (result && Math.abs(result.position.x - targetPoint.x) > 0.01 && Math.abs(result.position.y - targetPoint.y) > 0.01 && Math.abs(result.position.z - targetPoint.z) > 0.01) {\n color = Cesium.Color.RED;\n }\n var polyline = new Cesium.GroundPolylineGeometry({\n positions: Cesium.Cartesian3.fromDegreesArray([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt1), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt2), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt3), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt4), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt1))),\n width: 2\n });\n var polygonInstance = new Cesium.GeometryInstance({\n geometry: polyline,\n name: 'ViewershedPolygon',\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(color),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n instances.push(polygonInstance);\n }\n _this.primitives.push(_this.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: instances,\n appearance: new Cesium.PolylineColorAppearance()\n })));\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _iterator = _createForOfIteratorHelper(_classPrivateFieldGet(_intervalEvents, this)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n clearInterval(value.event);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _classPrivateFieldSet(_intervalEvents, this, new Map());\n for (var i = 0; i < this.primitives.length; i++) {\n this.viewer.scene.primitives.remove(this.primitives[i]);\n }\n this.primitives = [];\n if (this.viewpointPrimitive) {\n this.viewer.scene.primitives.remove(this.viewpointPrimitive);\n this.viewpointPrimitive = null;\n }\n if (this.viewBillboardPrimitive) {\n this.viewer.scene.primitives.remove(this.viewBillboardPrimitive);\n this.viewBillboardPrimitive = null;\n }\n YJ.Measure.SetMeasureStatus(false);\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var terrainAvailability = that.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n var count = 0;\n if (!YJ.Measure.GetMeasureStatus()) {\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n var Draw = new YJ.Draw.DrawCircle(that.sdk, {\n tipText: '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销'\n });\n Draw.start(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(a, options) {\n var positions;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (options) {\n _context.next = 9;\n break;\n }\n _context.t0 = a;\n _context.next = _context.t0 === 0 ? 4 : _context.t0 === 1 ? 6 : 8;\n break;\n case 4:\n Draw.tipText = '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销';\n return _context.abrupt(\"break\", 8);\n case 6:\n Draw.tipText = '左键单击确定圆形视域半径,完成圆形视域分析!';\n return _context.abrupt(\"break\", 8);\n case 8:\n return _context.abrupt(\"return\");\n case 9:\n that.radius = options.radius;\n _context.next = 12;\n return Cesium.sampleTerrainMostDetailed(that.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(options.center.lng, options.center.lat)]);\n case 12:\n positions = _context.sent;\n that.center = {\n lng: options.center.lng,\n lat: options.center.lat,\n alt: positions[0].height\n };\n _context.next = 16;\n return that.analyse();\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n console.log('上一次测量未结束');\n }\n }\n }, {\n key: \"getcanvas\",\n value: function getcanvas(that) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n canvas.width = 220;\n canvas.height = 140;\n canvas.style.background = '#000000';\n var img = new Image();\n var data = [{\n images: that.getSourceRootPath() + '/img/bubble/lng.png',\n text: '经度:' + parseFloat(that.center.lng.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/lat.png',\n text: '纬度:' + parseFloat(that.center.lat.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/h.png',\n text: '视高:' + that.viewPointHeight + ' m'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/radius.png',\n text: '半径:' + that.radius + ' m'\n }];\n img.src = that.getSourceRootPath() + '/img/bubble/bubble.png';\n var imagesLoaded = 0;\n return new Promise(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(resolve, reject) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n img.onload = function () {\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n data.forEach(function (item, index) {\n var img = new Image();\n img.src = item.images;\n img.onload = function () {\n ctx.drawImage(img, 12, 12 + index * 26);\n ctx.fillStyle = '#fff';\n ctx.font = '12px Arial';\n ctx.fillText(item.text, 44, 28 + index * 26);\n imagesLoaded++;\n if (imagesLoaded === data.length) {\n resolve(canvas);\n }\n };\n });\n };\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (CircleViewShed);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NpcmNsZVZpZXdTaGVkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9DaXJjbGVWaWV3U2hlZC9pbmRleC5qcz9mNzU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFZpZXdTaGVkLmpzXHJcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnXHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tICcuL19lbGVtZW50J1xyXG4vKipcclxuICogQGNvbnN0cnVjdG9yXHJcbiAqIEBkZXNjcmlwdGlvbiDlj6/op4bln5/liIbmnpBcclxuICogQHBhcmFtIHNka1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyDpgInpobnjgIJcclxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMudmlld1BvaW50SGVpZ2h0PTEuOCDop4bngrnpq5jluqYobSnjgIJcclxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMucHJlY2lzaW9uPTIwIOeyvuW6puOAglxyXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucy52aXNpYmxlQXJlYUNvbG9yPSMwMDgwMDAg5Y+v6KeG5Yy65Z+f6aKc6Imy44CCXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25zLmludmlzaWJsZUFyZWFDb2xvcj0jRkYwMDAwIOS4jeWPr+inhuWMuuWfn+minOiJsuOAglxyXG4gKi9cclxuY2xhc3MgQ2lyY2xlVmlld1NoZWQgZXh0ZW5kcyBUb29scyB7XHJcbiAgI2ludGVydmFsRXZlbnRzID0gbmV3IE1hcCgpXHJcblxyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucyA9IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMudmlzaWJsZUFyZWFDb2xvciA9IG9wdGlvbnMudmlzaWJsZUFyZWFDb2xvciB8fCAnIzAwODAwMCdcclxuICAgIHRoaXMub3B0aW9ucy5pbnZpc2libGVBcmVhQ29sb3IgPSBvcHRpb25zLmludmlzaWJsZUFyZWFDb2xvciB8fCAnI0ZGMDAwMCdcclxuICAgIHRoaXMuaWRzID0gW11cclxuICAgIHRoaXMucHJpbWl0aXZlcyA9IFtdXHJcbiAgICB0aGlzLnZpZXdwb2ludFByaW1pdGl2ZSA9IG51bGxcclxuXHJcbiAgICB0aGlzLl9lbG1zID0ge31cclxuICAgIHRoaXMucHJlY2lzaW9uID0gb3B0aW9ucy5wcmVjaXNpb25cclxuICAgIHRoaXMudmlld1BvaW50SGVpZ2h0ID0gb3B0aW9ucy52aWV3UG9pbnRIZWlnaHRcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLmh0bWwgPSBudWxsXHJcbiAgICB0aGlzLnRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICAvLyBDaXJjbGVWaWV3U2hlZC5lZGl0KHRoaXMpXHJcbiAgICBcclxuICAgIC8vIENpcmNsZVZpZXdTaGVkLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBkcmF3KCkge1xyXG4gICAgbGV0IHRlcnJhaW5BdmFpbGFiaWxpdHkgPSB0aGlzLnZpZXdlci50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5O1xyXG4gICAgaWYgKCF0ZXJyYWluQXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgIHJldHVybiAn5pyq5Yqg6L295Zyw5b2i5pWw5o2u77yBJ1xyXG4gICAgfVxyXG4gICAgQ2lyY2xlVmlld1NoZWQuY3JlYXRlKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgdmlld1BvaW50SGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy52aWV3UG9pbnRIZWlnaHRcclxuICB9XHJcblxyXG4gIHNldCB2aWV3UG9pbnRIZWlnaHQodikge1xyXG4gICAgbGV0IHZpZXdQb2ludEhlaWdodCA9IE1hdGguZmxvb3IoTnVtYmVyKHYpICogMTApIC8gMTBcclxuICAgIGlmIChpc05hTih2aWV3UG9pbnRIZWlnaHQpKSB7XHJcbiAgICAgIHZpZXdQb2ludEhlaWdodCA9IDEuOFxyXG4gICAgfVxyXG4gICAgaWYgKHZpZXdQb2ludEhlaWdodCA8IDApIHtcclxuICAgICAgdmlld1BvaW50SGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZpZXdQb2ludEhlaWdodCA9IHZpZXdQb2ludEhlaWdodFxyXG4gICAgdGhpcy5fZWxtcy52aWV3UG9pbnRIZWlnaHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy52aWV3UG9pbnRIZWlnaHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdmlld1BvaW50SGVpZ2h0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCB2aWV3UG9pbnRIZWlnaHRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld1BvaW50SGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgdmlld1BvaW50SGVpZ2h0cyh2KSB7XHJcbiAgICBsZXQgdmlld1BvaW50SGVpZ2h0ID0gTWF0aC5mbG9vcihOdW1iZXIodikgKiAxMCkgLyAxMFxyXG4gICAgaWYgKGlzTmFOKHZpZXdQb2ludEhlaWdodCkpIHtcclxuICAgICAgdmlld1BvaW50SGVpZ2h0ID0gMS44XHJcbiAgICB9XHJcbiAgICBpZiAodmlld1BvaW50SGVpZ2h0IDwgMCkge1xyXG4gICAgICB2aWV3UG9pbnRIZWlnaHQgPSAwXHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdQb2ludEhlaWdodCA9IHZpZXdQb2ludEhlaWdodFxyXG4gIH1cclxuXHJcbiAgZ2V0IHByZWNpc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBzZXQgcHJlY2lzaW9uKHYpIHtcclxuICAgIGxldCBwcmVjaXNpb24gPSBNYXRoLmZsb29yKE51bWJlcih2KSlcclxuICAgIGlmIChpc05hTihwcmVjaXNpb24pKSB7XHJcbiAgICAgIHByZWNpc2lvbiA9IDIwXHJcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8IDEpIHtcclxuICAgICAgcHJlY2lzaW9uID0gMVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnByZWNpc2lvbiA9IHByZWNpc2lvblxyXG4gICAgdGhpcy5fZWxtcy5wcmVjaXNpb24gJiZcclxuICAgICAgdGhpcy5fZWxtcy5wcmVjaXNpb24uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gcHJlY2lzaW9uXHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCBwcmVjaXNpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBzZXQgcHJlY2lzaW9ucyh2YWwpIHtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gdmFsXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCB0ZXJyYWluQXZhaWxhYmlsaXR5ID0gdGhhdC52aWV3ZXIudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eTtcclxuICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gICAgICByZXR1cm4gJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gSdcclxuICAgIH1cclxuICAgIGxldCBjb3VudCA9IDBcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBsZXQgRHJhdyA9IG5ldyBZSi5EcmF3LkRyYXdDaXJjbGUodGhhdC5zZGssIHtcclxuICAgICAgICB0aXBUZXh0OiAn5bem6ZSu5Y2V5Ye756Gu5a6a5Lit5b+D54K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5Yy65Z+f57uY5Yi277yBQ1RSTCvlj7PplK7ljZXlh7vmkqTplIAnXHJcbiAgICAgIH0pXHJcbiAgICAgIERyYXcuc3RhcnQoYXN5bmMgKGEsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAvLyB0aGF0LmNlbnRlciA9IG9wdGlvbnMuY2VudGVyXHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGEpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgIERyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprkuK3lv4PngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojljLrln5/nu5jliLbvvIFDVFJMK+WPs+mUruWNleWHu+aSpOmUgCdcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIERyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprlnIblvaLop4bln5/ljYrlvoTvvIzlrozmiJDlnIblvaLop4bln5/liIbmnpDvvIEnXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5yYWRpdXMgPSBvcHRpb25zLnJhZGl1c1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSBhd2FpdCBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhvcHRpb25zLmNlbnRlci5sbmcsIG9wdGlvbnMuY2VudGVyLmxhdCldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGF0LmNlbnRlciA9IHtcclxuICAgICAgICAgIGxuZzogb3B0aW9ucy5jZW50ZXIubG5nLFxyXG4gICAgICAgICAgbGF0OiBvcHRpb25zLmNlbnRlci5sYXQsXHJcbiAgICAgICAgICBhbHQ6IHBvc2l0aW9uc1swXS5oZWlnaHRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhhdC5hbmFseXNlKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc3RhdGljIGFzeW5jIGVkaXQodGhhdCkge1xyXG4gIC8vICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGF0LnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gIC8vICAgICB0aXRsZTogJ+WchuW9ouinhuWfn+WIhuaekCcsXHJcbiAgLy8gICAgIGxlZnQ6ICcxODBweCcsXHJcbiAgLy8gICAgIHRvcDogJzEwMHB4JyxcclxuICAvLyAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICAgIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgLy8gICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vICAgYXdhaXQgdGhhdC5fRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIC8vICAgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBjaXJjbGUtdmlldy1zaGVkJ1xyXG4gIC8vICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gIC8vICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAvLyAgIHRoYXQuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgLy8gICBsZXQgZHJhd0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpXHJcbiAgLy8gICBkcmF3RWxtLmlubmVySFRNTCA9ICfnu5jliLYnXHJcbiAgLy8gICBkcmF3RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gIC8vICAgICBsZXQgdGVycmFpbkF2YWlsYWJpbGl0eSA9IHRoYXQudmlld2VyLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHk7XHJcbiAgLy8gICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gIC8vICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gIC8vICAgICAgICAgbWVzc2FnZTogJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gScsXHJcbiAgLy8gICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgLy8gICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICAgIHJldHVyblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIENpcmNsZVZpZXdTaGVkLmNyZWF0ZSh0aGF0KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIHRoYXQuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoZHJhd0VsbSlcclxuXHJcbiAgLy8gICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKVxyXG4gIC8vICAgdGhhdC5fRXZlbnRCaW5kaW5nLm9uKHRoYXQsIGFsbF9lbG0pXHJcbiAgLy8gICB0aGF0Ll9lbG1zID0gdGhhdC5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAvLyB9XHJcblxyXG4gIGFuYWx5c2UoKSB7XHJcbiAgICAvLyB0aGlzLmRlc3Ryb3koKVxyXG4gICAgbGV0IGNlbnRlciA9IFt0aGlzLmNlbnRlci5sbmcsIHRoaXMuY2VudGVyLmxhdF1cclxuICAgIGxldCByYWRpdXMgPSB0aGlzLnJhZGl1cyAvIDEwMDBcclxuICAgIGxldCBjaXJjbGUgPSB0dXJmLmNpcmNsZShjZW50ZXIsIHJhZGl1cywge1xyXG4gICAgICBzdGVwczogMTgwLFxyXG4gICAgICB1bml0czogJ2tpbG9tZXRlcnMnLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7IGZvbzogJ2JhcicgfVxyXG4gICAgfSlcclxuICAgIGlmICghdGhpcy52aWV3cG9pbnRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy52aWV3cG9pbnRQcmltaXRpdmUgPSB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLlBvaW50UHJpbWl0aXZlQ29sbGVjdGlvbigpXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKSB7XHJcbiAgICAgIHRoaXMudmlld0JpbGxib2FyZFByaW1pdGl2ZSA9IHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQmlsbGJvYXJkQ29sbGVjdGlvbigpXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgbGV0IGRpc3RhbmNlID0gcmFkaXVzIC8gdGhpcy5wcmVjaXNpb25cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY2lyY2xlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKFtjZW50ZXIsIGNpcmNsZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtpXV0pXHJcbiAgICAgIGxldCBhcnJheTIgPSBbXVxyXG4gICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLnByZWNpc2lvbjsgaisrKSB7XHJcbiAgICAgICAgbGV0IHNsaWNlZCA9IHR1cmYubGluZVNsaWNlQWxvbmcobGluZSwgMCwgZGlzdGFuY2UgKiBqLCB7XHJcbiAgICAgICAgICB1bml0czogJ2tpbG9tZXRlcnMnXHJcbiAgICAgICAgfSlcclxuICAgICAgICBhcnJheTIucHVzaChbXHJcbiAgICAgICAgICBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMF0sXHJcbiAgICAgICAgICBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMV1cclxuICAgICAgICBdKVxyXG4gICAgICB9XHJcbiAgICAgIGFycmF5LnB1c2goYXJyYXkyKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB2aWV3UG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgdGhpcy5jZW50ZXIubG5nLFxyXG4gICAgICB0aGlzLmNlbnRlci5sYXQsXHJcbiAgICAgIHRoaXMuY2VudGVyLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0XHJcbiAgICApXHJcbiAgICBsZXQgaW5zdGFuY2VzID0gW11cclxuICAgIENpcmNsZVZpZXdTaGVkLmdldGNhbnZhcyh0aGlzKS50aGVuKGNhbnZhcyA9PlxyXG4gICAgICB0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUuYWRkKHtcclxuICAgICAgICBwb3NpdGlvbjogdmlld1BvaW50LFxyXG4gICAgICAgIGltYWdlOiBjYW52YXMsXHJcbiAgICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgICBoZWlnaHQ6IDE0MCxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgdGhpcy52aWV3cG9pbnRQcmltaXRpdmUuYWRkKHtcclxuICAgICAgcG9zaXRpb246IHZpZXdQb2ludCxcclxuICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5BUVVBLndpdGhBbHBoYSgxKSxcclxuICAgICAgcGl4ZWxTaXplOiA2XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBtID0gMFxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgbGV0IGtleSA9IHRoaXMucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBpbnRlcnZhbEV2ZW50ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpZiAobSA+PSBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMuI2ludGVydmFsRXZlbnRzLmdldChrZXkpXHJcbiAgICAgICAgaXRlbSAmJiBjbGVhckludGVydmFsKGl0ZW0uZXZlbnQpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgSW5CYXRjaGVzKG0pXHJcbiAgICAgIG0gKz0gMVxyXG4gICAgfSwgMClcclxuICAgIHRoaXMuI2ludGVydmFsRXZlbnRzLnNldChrZXksIHsgZXZlbnQ6IGludGVydmFsRXZlbnQgfSlcclxuXHJcbiAgICBmdW5jdGlvbiBJbkJhdGNoZXMoaykge1xyXG4gICAgICBsZXQgaW5zdGFuY2VzID0gW11cclxuICAgICAgbGV0IGkgPSBrXHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXJyYXlbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBsZXQgcHQxID0gYXJyYXlbaV1bal1cclxuICAgICAgICBsZXQgcHQyXHJcbiAgICAgICAgbGV0IHB0M1xyXG4gICAgICAgIGxldCBwdDQgPSBhcnJheVtpXVtqIC0gMV1cclxuICAgICAgICBpZiAoaSA9PSBhcnJheS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICBwdDIgPSBhcnJheVswXVtqXVxyXG4gICAgICAgICAgcHQzID0gYXJyYXlbMF1baiAtIDFdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHB0MiA9IGFycmF5W2kgKyAxXVtqXVxyXG4gICAgICAgICAgcHQzID0gYXJyYXlbaSArIDFdW2ogLSAxXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PSAwKSB7XHJcbiAgICAgICAgICBwdDMgPSBbLi4uY2VudGVyXVxyXG4gICAgICAgICAgcHQ0ID0gW11cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNwdCA9IFsocHQxWzBdICsgcHQzWzBdKSAvIDIsIChwdDFbMV0gKyBwdDNbMV0pIC8gMl1cclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjcHRbMF0sIGNwdFsxXSlcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gX3RoaXMudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChjYXJ0b2dyYXBoaWMpXHJcbiAgICAgICAgbGV0IHRhcmdldFBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY3B0WzBdLCBjcHRbMV0sIGhlaWdodClcclxuXHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KFxyXG4gICAgICAgICAgICB0YXJnZXRQb2ludCxcclxuICAgICAgICAgICAgdmlld1BvaW50LFxyXG4gICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheSh2aWV3UG9pbnQsIGRpcmVjdGlvbilcclxuICAgICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IF90aGlzLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KFxyXG4gICAgICAgICAgcmF5LFxyXG4gICAgICAgICAgX3RoaXMucHJpbWl0aXZlc1xyXG4gICAgICAgIClcclxuICAgICAgICBsZXQgcmVzdWx0XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAocGlja2VkT2JqZWN0c1tpXS5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjb2xvciA9IENlc2l1bS5Db2xvci5MSU1FXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcmVzdWx0ICYmXHJcbiAgICAgICAgICBNYXRoLmFicyhyZXN1bHQucG9zaXRpb24ueCAtIHRhcmdldFBvaW50LngpID4gMC4wMSAmJlxyXG4gICAgICAgICAgTWF0aC5hYnMocmVzdWx0LnBvc2l0aW9uLnkgLSB0YXJnZXRQb2ludC55KSA+IDAuMDEgJiZcclxuICAgICAgICAgIE1hdGguYWJzKHJlc3VsdC5wb3NpdGlvbi56IC0gdGFyZ2V0UG9pbnQueikgPiAwLjAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IENlc2l1bS5Db2xvci5SRURcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvbHlsaW5lID0gbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShbXHJcbiAgICAgICAgICAgIC4uLnB0MSxcclxuICAgICAgICAgICAgLi4ucHQyLFxyXG4gICAgICAgICAgICAuLi5wdDMsXHJcbiAgICAgICAgICAgIC4uLnB0NCxcclxuICAgICAgICAgICAgLi4ucHQxXHJcbiAgICAgICAgICBdKSxcclxuICAgICAgICAgIHdpZHRoOiAyXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGV0IHBvbHlnb25JbnN0YW5jZSA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeTogcG9seWxpbmUsXHJcbiAgICAgICAgICBuYW1lOiAnVmlld2Vyc2hlZFBvbHlnb24nLFxyXG4gICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoY29sb3IpLFxyXG4gICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpIC8v5pi+56S65oiW6ICF6ZqQ6JePXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpbnN0YW5jZXMucHVzaChwb2x5Z29uSW5zdGFuY2UpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIF90aGlzLnByaW1pdGl2ZXMucHVzaChcclxuICAgICAgICBfdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgICAgICBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IGluc3RhbmNlcyxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZUNvbG9yQXBwZWFyYW5jZSgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldGNhbnZhcyh0aGF0KSB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuICAgIGNhbnZhcy53aWR0aCA9IDIyMFxyXG4gICAgY2FudmFzLmhlaWdodCA9IDE0MFxyXG4gICAgY2FudmFzLnN0eWxlLmJhY2tncm91bmQgPSAnIzAwMDAwMCdcclxuICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKVxyXG4gICAgY29uc3QgZGF0YSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL2xuZy5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfnu4/luqbvvJonICsgcGFyc2VGbG9hdCh0aGF0LmNlbnRlci5sbmcudG9GaXhlZCgxMCkpICsgJ8KwJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvbGF0LnBuZycsXHJcbiAgICAgICAgdGV4dDogJ+e6rOW6pu+8micgKyBwYXJzZUZsb2F0KHRoYXQuY2VudGVyLmxhdC50b0ZpeGVkKDEwKSkgKyAnwrAnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpbWFnZXM6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9oLnBuZycsXHJcbiAgICAgICAgdGV4dDogJ+inhumrmO+8micgKyB0aGF0LnZpZXdQb2ludEhlaWdodCArICcgbSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL3JhZGl1cy5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfljYrlvoTvvJonICsgdGhhdC5yYWRpdXMgKyAnIG0nXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIGltZy5zcmMgPSB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvYnViYmxlLnBuZydcclxuICAgIGxldCBpbWFnZXNMb2FkZWQgPSAwXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpXHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcclxuICAgICAgICAgIGltZy5zcmMgPSBpdGVtLmltYWdlc1xyXG4gICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDEyLCAxMiArIGluZGV4ICogMjYpXHJcbiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZidcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSAnMTJweCBBcmlhbCdcclxuICAgICAgICAgICAgY3R4LmZpbGxUZXh0KGl0ZW0udGV4dCwgNDQsIDI4ICsgaW5kZXggKiAyNilcclxuICAgICAgICAgICAgaW1hZ2VzTG9hZGVkKytcclxuICAgICAgICAgICAgaWYgKGltYWdlc0xvYWRlZCA9PT0gZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXNvbHZlKGNhbnZhcylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy4jaW50ZXJ2YWxFdmVudHMpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh2YWx1ZS5ldmVudClcclxuICAgIH1cclxuICAgIHRoaXMuI2ludGVydmFsRXZlbnRzID0gbmV3IE1hcCgpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJpbWl0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnByaW1pdGl2ZXMgPSBbXVxyXG4gICAgaWYgKHRoaXMudmlld3BvaW50UHJpbWl0aXZlKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMudmlld3BvaW50UHJpbWl0aXZlKVxyXG4gICAgICB0aGlzLnZpZXdwb2ludFByaW1pdGl2ZSA9IG51bGxcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKVxyXG4gICAgICB0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVWaWV3U2hlZFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFhQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBdFRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFJQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUF1QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CircleViewShed/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Contour/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Analysis/Contour/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n\n\n\nvar ContourAnalysis = /*#__PURE__*/function () {\n /**\r\n * @constructor 等高线分析\r\n * @param sdk\r\n * **/\n function ContourAnalysis(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ContourAnalysis);\n this.viewer = sdk.viewer;\n this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"](sdk);\n var terrainAvailability = this.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n this.error = '未加载地形数据!';\n // this.tools.message({ type: 'warning', text: this.error })\n return;\n }\n this.positions = options.positions;\n this.interfaceNum = options.interfaceNum || 25; //内插时均分的数量,即沿着边界长或宽均分成n分进行插点,默认值25\n this.colorFill = options.colorFill || [\"#8CEA00\", \"#B7FF4A\", \"#FFFF37\", \"#FFE66F\", \"#FFD1A4\", \"#FFCBB3\", \"#FFBD9D\", \"#FFAD86\", \"#FF9D6F\", \"#FF8F59\", \"#FF8040\", \"#FF5809\", \"#F75000\", \"#D94600\", \"#BB3D00\", \"#A23400\", \"#842B00\", \"#642100\", \"#4D0000\", \"#2F0000\"]; //等高线赋值颜色,内含default值\n this.countorLineList = Cesium.defaultValue(options.countorLineList, []);\n YJ.Analysis.AnalysesResults.push(this);\n this.createNewLine();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ContourAnalysis, [{\n key: \"type\",\n get: function get() {\n return 'ContourAnalysis';\n }\n }, {\n key: \"createNewLine\",\n value: function createNewLine() {\n ContourAnalysis.interpolatePoint(this);\n }\n\n //利用turf在box内进行插点\n }, {\n key: \"getObjectIndex\",\n value:\n /**\r\n * 返回随机插入的数在数组中的位置\r\n * @param {*} arr 元数组\r\n * @param {*} num 随机数\r\n * @returns 序号\r\n * @example getObjectIndex([0,218,325,333,444],354)=>4;\r\n */\n function getObjectIndex(arr, num) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] > num) {\n return i;\n }\n }\n }\n }, {\n key: \"clear\",\n value: function clear(countorLine) {\n if (countorLine) {\n this.viewer.dataSources.remove(countorLine);\n var index = this.countorLineList.indexOf(countorLine);\n this.countorLineList.splice(index, 1);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this = this;\n this.countorLineList.forEach(function (element) {\n _this.viewer.dataSources.remove(element);\n });\n this.countorLineList = [];\n }\n }], [{\n key: \"interpolatePoint\",\n value: function interpolatePoint(that) {\n var curPoints = that.positions;\n var features = [];\n var boundaryCoord = {\n minX: 360,\n maxX: -360,\n minY: 180,\n maxY: -180\n }; //绘制几何图形的外围矩形box\n for (var index = 0; index < curPoints.length; index++) {\n var element = Cesium.Cartesian3.fromDegrees(curPoints[index].lng, curPoints[index].lat, curPoints[index].alt);\n var ellipsoid = that.viewer.scene.globe.ellipsoid;\n var cartographic = ellipsoid.cartesianToCartographic(element);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n boundaryCoord.maxY = Math.max(lat, boundaryCoord.maxY);\n boundaryCoord.minY = Math.min(lat, boundaryCoord.minY);\n boundaryCoord.maxX = Math.max(lng, boundaryCoord.maxX);\n boundaryCoord.minX = Math.min(lng, boundaryCoord.minX);\n var curFeature = {\n type: \"Feature\",\n properties: {},\n geometry: {\n type: \"Point\",\n coordinates: [lng, lat]\n }\n };\n features.push(curFeature);\n }\n var boundaryJson = {\n type: \"FeatureCollection\",\n features: features\n };\n turf.featureEach(boundaryJson, function (point) {\n point.properties.height = 0;\n });\n var options = {\n gridType: \"points\",\n property: \"height\",\n units: \"kilometers\"\n };\n var from = turf.point([boundaryCoord.minX, boundaryCoord.minY]);\n var to = turf.point([boundaryCoord.maxX, boundaryCoord.maxY]);\n var diagonalDistance = turf.rhumbDistance(from, to, {\n units: \"kilometers\"\n });\n var grid = turf.interpolate(boundaryJson, diagonalDistance / that.interfaceNum, options);\n var minHeight = 10000000; //最低点高程值\n var maxHeight = -100000000; //最高点高程值\n turf.featureEach(grid, function (point) {\n var pos = point.geometry.coordinates;\n var cartographic = Cesium.Cartographic.fromDegrees(pos[0], pos[1]);\n var height = that.viewer.scene.globe.getHeight(cartographic);\n maxHeight = Math.max(height, maxHeight);\n minHeight = Math.min(height, minHeight);\n point.properties.height = height;\n });\n var breaks = [];\n var stepCount = that.colorFill.length - 1;\n var step = (maxHeight - minHeight) / stepCount;\n for (var _index = 0; _index < stepCount + 1; _index++) {\n breaks.push(Math.ceil(minHeight + step * _index));\n }\n // console.log('grid', grid)\n var linesJson = turf.isolines(grid, breaks, {\n zProperty: \"height\"\n });\n var _countorLine = Cesium.GeoJsonDataSource.load(linesJson, {\n clampToGround: true\n });\n // console.log(linesJson)\n _countorLine.then(function (dataSource) {\n console.log(dataSource);\n that.countorLine = dataSource; //最终计算生成的等高线对象,GeoJsonDataSource\n that.countorLineList.push(dataSource); //等高线数组\n that.viewer.dataSources.add(dataSource);\n var entities = dataSource.entities.values;\n for (var _index2 = 0; _index2 < entities.length; _index2++) {\n var _element = entities[_index2];\n var center = getPolylineCenter(_element.polyline);\n _element.position = center;\n // dataSource.entities.add(new Cesium.Entity({\n // position: center,\n // label: {\n // text: element.properties.height._value + '',\n // font: '20px Microsoft YaHei',\n // fillColor: Cesium.Color.fromCssColorString('#f1d20c'),\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND\n // },\n // }))\n // element.label = new Cesium.LabelGraphics({\n\n // })\n var cur_index = that.getObjectIndex(breaks, _element.properties.height._value);\n if (cur_index) {\n _element.polyline.material = Cesium.Color.fromCssColorString(that.colorFill[cur_index - 1]);\n }\n }\n });\n function getPolylineCenter(polyline) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n var positions = polyline.positions;\n var length = positions._value.length;\n var array = [];\n for (var i = 0; i < length; i++) {\n var pos = tools.cartesian3Towgs84(positions._value[i], that.viewer);\n array.push([pos.lng, pos.lat]);\n }\n var line = turf.lineString(array);\n var distance = turf.length(line, {\n units: \"kilometers\"\n });\n var along = turf.along(line, distance / 2, {\n units: \"kilometers\"\n });\n return Cesium.Cartesian3.fromDegrees(along.geometry.coordinates[0], along.geometry.coordinates[1], 0);\n }\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContourAnalysis);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NvbnRvdXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0NvbnRvdXIvaW5kZXguanM/ZjE3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi8uLi9Ub29scyc7XHJcbmNsYXNzIENvbnRvdXJBbmFseXNpcyB7XHJcbiAgLyoqXHJcbiAqIEBjb25zdHJ1Y3RvciDnrYnpq5jnur/liIbmnpBcclxuICogQHBhcmFtIHNka1xyXG4gKiAqKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLnRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICAgIGxldCB0ZXJyYWluQXZhaWxhYmlsaXR5ID0gdGhpcy52aWV3ZXIudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eTtcclxuICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gSdcclxuICAgICAgLy8gdGhpcy50b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiB0aGlzLmVycm9yIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBvcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgdGhpcy5pbnRlcmZhY2VOdW0gPSBvcHRpb25zLmludGVyZmFjZU51bSB8fCAyNSAvL+WGheaPkuaXtuWdh+WIhueahOaVsOmHj++8jOWNs+ayv+edgOi+ueeVjOmVv+aIluWuveWdh+WIhuaIkG7liIbov5vooYzmj5LngrnvvIzpu5jorqTlgLwyNVxyXG4gICAgdGhpcy5jb2xvckZpbGwgPSBvcHRpb25zLmNvbG9yRmlsbCB8fCBbXHJcbiAgICAgIFwiIzhDRUEwMFwiLFxyXG4gICAgICBcIiNCN0ZGNEFcIixcclxuICAgICAgXCIjRkZGRjM3XCIsXHJcbiAgICAgIFwiI0ZGRTY2RlwiLFxyXG4gICAgICBcIiNGRkQxQTRcIixcclxuICAgICAgXCIjRkZDQkIzXCIsXHJcbiAgICAgIFwiI0ZGQkQ5RFwiLFxyXG4gICAgICBcIiNGRkFEODZcIixcclxuICAgICAgXCIjRkY5RDZGXCIsXHJcbiAgICAgIFwiI0ZGOEY1OVwiLFxyXG4gICAgICBcIiNGRjgwNDBcIixcclxuICAgICAgXCIjRkY1ODA5XCIsXHJcbiAgICAgIFwiI0Y3NTAwMFwiLFxyXG4gICAgICBcIiNEOTQ2MDBcIixcclxuICAgICAgXCIjQkIzRDAwXCIsXHJcbiAgICAgIFwiI0EyMzQwMFwiLFxyXG4gICAgICBcIiM4NDJCMDBcIixcclxuICAgICAgXCIjNjQyMTAwXCIsXHJcbiAgICAgIFwiIzREMDAwMFwiLFxyXG4gICAgICBcIiMyRjAwMDBcIixcclxuICAgIF07IC8v562J6auY57q/6LWL5YC86aKc6Imy77yM5YaF5ZCrZGVmYXVsdOWAvFxyXG4gICAgdGhpcy5jb3VudG9yTGluZUxpc3QgPSBDZXNpdW0uZGVmYXVsdFZhbHVlKG9wdGlvbnMuY291bnRvckxpbmVMaXN0LCBbXSk7XHJcbiAgICBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgdGhpcy5jcmVhdGVOZXdMaW5lKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQ29udG91ckFuYWx5c2lzJ1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTmV3TGluZSgpIHtcclxuICAgIENvbnRvdXJBbmFseXNpcy5pbnRlcnBvbGF0ZVBvaW50KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy/liKnnlKh0dXJm5ZyoYm945YaF6L+b6KGM5o+S54K5XHJcbiAgc3RhdGljIGludGVycG9sYXRlUG9pbnQodGhhdCkge1xyXG4gICAgbGV0IGN1clBvaW50cyA9IHRoYXQucG9zaXRpb25zXHJcbiAgICBsZXQgZmVhdHVyZXMgPSBbXTtcclxuICAgIGNvbnN0IGJvdW5kYXJ5Q29vcmQgPSB7XHJcbiAgICAgIG1pblg6IDM2MCxcclxuICAgICAgbWF4WDogLTM2MCxcclxuICAgICAgbWluWTogMTgwLFxyXG4gICAgICBtYXhZOiAtMTgwLFxyXG4gICAgfTsgLy/nu5jliLblh6DkvZXlm77lvaLnmoTlpJblm7Tnn6nlvaJib3hcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjdXJQb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjdXJQb2ludHNbaW5kZXhdLmxuZywgY3VyUG9pbnRzW2luZGV4XS5sYXQsIGN1clBvaW50c1tpbmRleF0uYWx0KTtcclxuICAgICAgbGV0IGVsbGlwc29pZCA9IHRoYXQudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZDtcclxuICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlbGVtZW50KTtcclxuICAgICAgbGV0IGxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpO1xyXG4gICAgICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICBib3VuZGFyeUNvb3JkLm1heFkgPSBNYXRoLm1heChsYXQsIGJvdW5kYXJ5Q29vcmQubWF4WSk7XHJcbiAgICAgIGJvdW5kYXJ5Q29vcmQubWluWSA9IE1hdGgubWluKGxhdCwgYm91bmRhcnlDb29yZC5taW5ZKTtcclxuICAgICAgYm91bmRhcnlDb29yZC5tYXhYID0gTWF0aC5tYXgobG5nLCBib3VuZGFyeUNvb3JkLm1heFgpO1xyXG4gICAgICBib3VuZGFyeUNvb3JkLm1pblggPSBNYXRoLm1pbihsbmcsIGJvdW5kYXJ5Q29vcmQubWluWCk7XHJcblxyXG4gICAgICBsZXQgY3VyRmVhdHVyZSA9IHtcclxuICAgICAgICB0eXBlOiBcIkZlYXR1cmVcIixcclxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcclxuICAgICAgICBnZW9tZXRyeToge1xyXG4gICAgICAgICAgdHlwZTogXCJQb2ludFwiLFxyXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtsbmcsIGxhdF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgZmVhdHVyZXMucHVzaChjdXJGZWF0dXJlKTtcclxuICAgIH1cclxuICAgIGxldCBib3VuZGFyeUpzb24gPSB7XHJcbiAgICAgIHR5cGU6IFwiRmVhdHVyZUNvbGxlY3Rpb25cIixcclxuICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLFxyXG4gICAgfTtcclxuICAgIHR1cmYuZmVhdHVyZUVhY2goYm91bmRhcnlKc29uLCBmdW5jdGlvbiAocG9pbnQpIHtcclxuICAgICAgcG9pbnQucHJvcGVydGllcy5oZWlnaHQgPSAwO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgZ3JpZFR5cGU6IFwicG9pbnRzXCIsXHJcbiAgICAgIHByb3BlcnR5OiBcImhlaWdodFwiLFxyXG4gICAgICB1bml0czogXCJraWxvbWV0ZXJzXCIsXHJcbiAgICB9O1xyXG4gICAgbGV0IGZyb20gPSB0dXJmLnBvaW50KFtib3VuZGFyeUNvb3JkLm1pblgsIGJvdW5kYXJ5Q29vcmQubWluWV0pO1xyXG4gICAgbGV0IHRvID0gdHVyZi5wb2ludChbYm91bmRhcnlDb29yZC5tYXhYLCBib3VuZGFyeUNvb3JkLm1heFldKTtcclxuICAgIGxldCBkaWFnb25hbERpc3RhbmNlID0gdHVyZi5yaHVtYkRpc3RhbmNlKGZyb20sIHRvLCB7XHJcbiAgICAgIHVuaXRzOiBcImtpbG9tZXRlcnNcIixcclxuICAgIH0pO1xyXG4gICAgbGV0IGdyaWQgPSB0dXJmLmludGVycG9sYXRlKFxyXG4gICAgICBib3VuZGFyeUpzb24sXHJcbiAgICAgIGRpYWdvbmFsRGlzdGFuY2UgLyB0aGF0LmludGVyZmFjZU51bSxcclxuICAgICAgb3B0aW9uc1xyXG4gICAgKTtcclxuICAgIGxldCBtaW5IZWlnaHQgPSAxMDAwMDAwMDsgLy/mnIDkvY7ngrnpq5jnqIvlgLxcclxuICAgIGxldCBtYXhIZWlnaHQgPSAtMTAwMDAwMDAwOyAvL+acgOmrmOeCuemrmOeoi+WAvFxyXG4gICAgdHVyZi5mZWF0dXJlRWFjaChncmlkLCBmdW5jdGlvbiAocG9pbnQpIHtcclxuICAgICAgbGV0IHBvcyA9IHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xyXG4gICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NbMF0sIHBvc1sxXSk7XHJcbiAgICAgIGxldCBoZWlnaHQgPSB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoY2FydG9ncmFwaGljKTtcclxuICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCBtYXhIZWlnaHQpO1xyXG4gICAgICBtaW5IZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIG1pbkhlaWdodCk7XHJcbiAgICAgIHBvaW50LnByb3BlcnRpZXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfSk7XHJcbiAgICBsZXQgYnJlYWtzID0gW107XHJcbiAgICBsZXQgc3RlcENvdW50ID0gdGhhdC5jb2xvckZpbGwubGVuZ3RoIC0gMTtcclxuICAgIGxldCBzdGVwID0gKG1heEhlaWdodCAtIG1pbkhlaWdodCkgLyBzdGVwQ291bnQ7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3RlcENvdW50ICsgMTsgaW5kZXgrKykge1xyXG4gICAgICBicmVha3MucHVzaChNYXRoLmNlaWwobWluSGVpZ2h0ICsgc3RlcCAqIGluZGV4KSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnZ3JpZCcsIGdyaWQpXHJcbiAgICBsZXQgbGluZXNKc29uID0gdHVyZi5pc29saW5lcyhncmlkLCBicmVha3MsIHsgelByb3BlcnR5OiBcImhlaWdodFwiIH0pO1xyXG4gICAgbGV0IF9jb3VudG9yTGluZSA9IENlc2l1bS5HZW9Kc29uRGF0YVNvdXJjZS5sb2FkKGxpbmVzSnNvbiwge1xyXG4gICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhsaW5lc0pzb24pXHJcbiAgICBfY291bnRvckxpbmUudGhlbihmdW5jdGlvbiAoZGF0YVNvdXJjZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRhU291cmNlKVxyXG4gICAgICB0aGF0LmNvdW50b3JMaW5lID0gZGF0YVNvdXJjZTsgLy/mnIDnu4jorqHnrpfnlJ/miJDnmoTnrYnpq5jnur/lr7nosaHvvIxHZW9Kc29uRGF0YVNvdXJjZVxyXG4gICAgICB0aGF0LmNvdW50b3JMaW5lTGlzdC5wdXNoKGRhdGFTb3VyY2UpOyAvL+etiemrmOe6v+aVsOe7hFxyXG4gICAgICB0aGF0LnZpZXdlci5kYXRhU291cmNlcy5hZGQoZGF0YVNvdXJjZSk7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IGRhdGFTb3VyY2UuZW50aXRpZXMudmFsdWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZW50aXRpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVudGl0aWVzW2luZGV4XTtcclxuICAgICAgICBsZXQgY2VudGVyID0gZ2V0UG9seWxpbmVDZW50ZXIoZWxlbWVudC5wb2x5bGluZSk7XHJcbiAgICAgICAgZWxlbWVudC5wb3NpdGlvbiA9IGNlbnRlcjtcclxuICAgICAgICAvLyBkYXRhU291cmNlLmVudGl0aWVzLmFkZChuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbjogY2VudGVyLFxyXG4gICAgICAgIC8vICAgbGFiZWw6IHtcclxuICAgICAgICAvLyAgICAgdGV4dDogZWxlbWVudC5wcm9wZXJ0aWVzLmhlaWdodC5fdmFsdWUgKyAnJyxcclxuICAgICAgICAvLyAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAvLyAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFkMjBjJyksXHJcbiAgICAgICAgLy8gICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIC8vICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAvLyAgICAgaGVpZ2h0UmVmZXJlbmNlOiBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORFxyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyB9KSlcclxuICAgICAgICAvLyBlbGVtZW50LmxhYmVsID0gbmV3IENlc2l1bS5MYWJlbEdyYXBoaWNzKHtcclxuXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICBsZXQgY3VyX2luZGV4ID0gdGhhdC5nZXRPYmplY3RJbmRleChcclxuICAgICAgICAgIGJyZWFrcyxcclxuICAgICAgICAgIGVsZW1lbnQucHJvcGVydGllcy5oZWlnaHQuX3ZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY3VyX2luZGV4KSB7XHJcbiAgICAgICAgICBlbGVtZW50LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgICAgdGhhdC5jb2xvckZpbGxbY3VyX2luZGV4IC0gMV1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRQb2x5bGluZUNlbnRlcihwb2x5bGluZSkge1xyXG4gICAgICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gICAgICBsZXQgcG9zaXRpb25zID0gcG9seWxpbmUucG9zaXRpb25zO1xyXG4gICAgICBsZXQgbGVuZ3RoID0gcG9zaXRpb25zLl92YWx1ZS5sZW5ndGg7XHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9zID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zLl92YWx1ZVtpXSwgdGhhdC52aWV3ZXIpXHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zLmxuZywgcG9zLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcoYXJyYXkpO1xyXG4gICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmxlbmd0aChsaW5lLCB7IHVuaXRzOiBcImtpbG9tZXRlcnNcIiB9KTtcclxuICAgICAgbGV0IGFsb25nID0gdHVyZi5hbG9uZyhsaW5lLCBkaXN0YW5jZSAvIDIsIHsgdW5pdHM6IFwia2lsb21ldGVyc1wiIH0pO1xyXG4gICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoYWxvbmcuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGFsb25nLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLCAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog6L+U5Zue6ZqP5py65o+S5YWl55qE5pWw5Zyo5pWw57uE5Lit55qE5L2N572uXHJcbiAgICogQHBhcmFtIHsqfSBhcnIg5YWD5pWw57uEXHJcbiAgICogQHBhcmFtIHsqfSBudW0g6ZqP5py65pWwXHJcbiAgICogQHJldHVybnMg5bqP5Y+3XHJcbiAgICogQGV4YW1wbGUgZ2V0T2JqZWN0SW5kZXgoWzAsMjE4LDMyNSwzMzMsNDQ0XSwzNTQpPT40O1xyXG4gICAqL1xyXG4gIGdldE9iamVjdEluZGV4KGFyciwgbnVtKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyW2ldID4gbnVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY2xlYXIoY291bnRvckxpbmUpIHtcclxuICAgIGlmIChjb3VudG9yTGluZSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5kYXRhU291cmNlcy5yZW1vdmUoY291bnRvckxpbmUpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmNvdW50b3JMaW5lTGlzdC5pbmRleE9mKGNvdW50b3JMaW5lKTtcclxuICAgICAgdGhpcy5jb3VudG9yTGluZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuY291bnRvckxpbmVMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgdGhpcy52aWV3ZXIuZGF0YVNvdXJjZXMucmVtb3ZlKGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvdW50b3JMaW5lTGlzdCA9IFtdO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDb250b3VyQW5hbHlzaXM7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUE2QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Contour/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/CutFill/_element.js": -/*!**********************************************!*\ - !*** ./src/Obj/Analysis/CutFill/_element.js ***! - \**********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u7ED8\\u5236\\u5206\\u6790\\u533A\\u57DF\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u57FA\\u51C6\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u7CBE\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u603B\\u5206\\u6790\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n \\u65E0\\u987B\\u586B\\u6316\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n
\\n
\\n \\u586B\\u65B9\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n \\u6316\\u65B9\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n
\\n
\\n \\u586B\\u65B9\\u4F53\\u79EF:\\n 0\\n m\\xB3\\n
\\n
\\n \\u6316\\u65B9\\u4F53\\u79EF:\\n 0\\n m\\xB3\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvX2VsZW1lbnQuanM/MzU0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA3MHB4O1wiPue7mOWItuWIhuaekOWMuuWfnzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcmF3LWJ0blwiPjxzdmcgY2xhc3M9XCJpY29uLWVkaXRcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1lZGl0XCI+PC91c2U+PC9zdmc+5byA5aeL57uY5Yi2PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Z+65YeG6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5XCIgbWF4PVwiOTk5OTk5XCIgbmFtZT1cImhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPueyvuW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCIxMjUwXCIgbmFtZT1cInByZWNpc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA3NHB4O1wiPuaAu+WIhuaekOmdouenrzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbnVtYmVyXCIgbmFtZT1cImFsbEFyZWFcIj4wPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0IHRleHQtbnVtYmVyXCI+bcKyPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDkwcHg7XCI+5peg6aG75aGr5oyW6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1udW1iZXJcIiBuYW1lPVwibm9BcmVhXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Csjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNzRweDtcIj7loavmlrnpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJmaWxsQXJlYVwiPjA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQgdGV4dC1udW1iZXJcIj5twrI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgOTBweDtcIj7mjJbmlrnpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJjdXRBcmVhXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Csjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNzRweDtcIj7loavmlrnkvZPnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJmaWxsVm9sdW1lXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Cszwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA5MHB4O1wiPuaMluaWueS9k+enrzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbnVtYmVyXCIgbmFtZT1cImN1dFZvbHVtZVwiPjA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQgdGV4dC1udW1iZXJcIj5twrM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdUVBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CutFill/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/CutFill/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Analysis/CutFill/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/CutFill/_element.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n\n\n\n\n\n\n\n// import CreatePolygon from \"./CreatePolygon\";\n\nvar CutFillAnalysis = /*#__PURE__*/function () {\n /**\r\n * @constructor 填挖方分析\r\n * @param sdk\r\n * **/\n function CutFillAnalysis(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, CutFillAnalysis);\n this.sdk = sdk;\n this.viewer = sdk.viewer;\n // if (!positions) throw new Error(\"no positions object!\");\n // this.positions = positions;\n this.height = options.height || 70;\n this.maxHeigh = -1000000;\n this.precision = options.precision || 125;\n this.Dialog = _Dialog;\n this.result = {\n allArea: \"\",\n cutArea: \"\",\n cutVolume: \"\",\n fillArea: \"\",\n fillVolume: \"\",\n noArea: \"\"\n };\n this.entities = [];\n this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sdk, {\n tipText: '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点'\n });\n YJ.Analysis.AnalysesResults.push(this);\n // CutFillAnalysis.EditBox(this)\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(CutFillAnalysis, [{\n key: \"create\",\n value: function create() {\n var _this = this;\n this.clean();\n this.Draw.start(function (a, positions) {\n if (!positions || positions.length < 3) {\n if (a >= 3) {\n _this.Draw.tipText = '左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销';\n } else {\n _this.Draw.tipText = '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点';\n }\n return;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n _this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this.createPolygonGeo(_this.positions);\n _this.result = _this.VolumeAnalysis();\n _this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下\n _this.clickCallBack();\n });\n // const $this = this;\n // if (!this.cp) {\n // this.cp = new CreatePolygon(this.viewer)\n // }\n // this.cp.start(function () {\n // console.log($this.cp.activeShapePoints)\n // $this.positions = $this.cp.activeShapePoints;\n // $this.createPolygonGeo($this.positions);\n // $this.result = $this.VolumeAnalysis();\n // $this.viewer.entities.remove($this.cp.polygon);\n // $this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下\n\n // });\n }\n }, {\n key: \"createPolygonGeo\",\n value: function createPolygonGeo(points) {\n //计算网格粒度-精度\n var granularity = Math.PI / Math.pow(2, 11);\n granularity = granularity / this.precision;\n var polygonGeometry = new Cesium.PolygonGeometry.fromPositions({\n positions: points,\n vertexFormat: Cesium.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT,\n granularity: granularity\n });\n //创建自定义平面几何体\n this.geom = new Cesium.PolygonGeometry.createGeometry(polygonGeometry);\n }\n }, {\n key: \"VolumeAnalysis\",\n value: function VolumeAnalysis() {\n var cutArea = 0,\n cutVolume = 0,\n fillArea = 0,\n fillVolume = 0,\n noArea = 0;\n var indices = this.geom.indices; //获取顶点索引数据\n if (!this.geom || !this.geom.attributes || !this.geom.attributes.position) {\n return;\n }\n var positions = this.geom.attributes.position.values;\n for (var index = 0; index < indices.length; index += 3) {\n var pos0 = this.returnPosition(positions, indices[index]);\n var pos1 = this.returnPosition(positions, indices[index + 1]);\n var pos2 = this.returnPosition(positions, indices[index + 2]);\n var entity = this.viewer.entities.add({\n name: \"三角面\",\n polygon: {\n hierarchy: [pos0.heightPos, pos1.heightPos, pos2.heightPos],\n perPositionHeight: true,\n material: Cesium.Color.fromRandom(),\n extrudedHeight: this.height,\n outline: true,\n outlineColor: Cesium.Color.BLACK\n }\n });\n this.entities.push(entity);\n //水平状态下三角形面积\n var area = this.computeArea4Triangle(pos0.noHeightPos, pos1.noHeightPos, pos2.noHeightPos);\n //计算三个点的均高\n var height = (pos0.height + pos1.height + pos2.height) / 3;\n if (height < this.height) {\n // 需要填方的部分\n fillArea += area;\n var volume = area * (this.height - height);\n fillVolume += volume;\n } else if (height == this.height) {\n noArea += area;\n } else {\n // 需要挖方的部分\n cutArea += area;\n var _volume = area * (height - this.height);\n cutVolume += _volume;\n }\n }\n var allArea = cutArea + fillArea + noArea;\n // this.result = {\n // allArea,\n // cutArea,\n // cutVolume,\n // fillArea,\n // fillVolume,\n // noArea,\n // };\n this.result.allArea = allArea;\n this.result.cutArea = cutArea;\n this.result.cutVolume = cutVolume;\n this.result.fillArea = fillArea;\n this.result.fillVolume = fillVolume;\n this.result.noArea = noArea;\n return this.result;\n }\n }, {\n key: \"computeCentroid4Polygon\",\n value: function computeCentroid4Polygon(positions) {\n var x = [],\n y = [];\n var allX = 0,\n allY = 0;\n for (var i = 0; i < positions.length; i++) {\n var cartographic = Cesium.Cartographic.fromCartesian(positions[i]);\n allX += cartographic.longitude;\n allY += cartographic.latitude;\n x.push(cartographic.longitude);\n y.push(cartographic.latitude);\n }\n var centroidx = allX / positions.length;\n var centroidy = allY / positions.length;\n var Cartographic = new Cesium.Cartographic(centroidx, centroidy);\n return Cesium.Cartesian3.fromRadians(Cartographic.longitude, Cartographic.latitude, this.maxHeigh + 30);\n }\n /**\r\n * 海伦公式求取三角形面积\r\n * @param {*} pos1\r\n * @param {*} pos2\r\n * @param {*} pos3\r\n * @returns 三角形面积㎡\r\n */\n }, {\n key: \"computeArea4Triangle\",\n value: function computeArea4Triangle(pos1, pos2, pos3) {\n var a = Cesium.Cartesian3.distance(pos1, pos2);\n var b = Cesium.Cartesian3.distance(pos2, pos3);\n var c = Cesium.Cartesian3.distance(pos3, pos1);\n var S = (a + b + c) / 2;\n return Math.sqrt(S * (S - a) * (S - b) * (S - c));\n }\n }, {\n key: \"returnPosition\",\n value: function returnPosition(positions, index) {\n var cartesian = new Cesium.Cartesian3(positions[index * 3], positions[index * 3 + 1], positions[index * 3 + 2]);\n var cartographic = Cesium.Cartographic.fromCartesian(cartesian);\n var height = this.viewer.scene.sampleHeightSupported ? this.viewer.scene.sampleHeight(cartographic) : this.viewer.scene.globe.getHeight(cartographic);\n if (height > this.maxHeigh) {\n this.maxHeigh = height;\n }\n return {\n heightPos: Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height),\n noHeightPos: Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0),\n height: height\n };\n }\n }, {\n key: \"heights\",\n get: function get() {\n return this.height;\n },\n set: function set(val) {\n this.height = val;\n }\n }, {\n key: \"precisions\",\n get: function get() {\n return this.precision;\n },\n set: function set(val) {\n this.precision = val;\n }\n }, {\n key: \"allArea\",\n get: function get() {\n return Number(this.result.allArea.toFixed(4));\n },\n set: function set(val) {\n this.result.allArea = val;\n }\n }, {\n key: \"fillArea\",\n get: function get() {\n return Number(this.result.fillArea.toFixed(4));\n },\n set: function set(val) {\n this.result.fillArea = val;\n }\n }, {\n key: \"fillVolume\",\n get: function get() {\n return Number(this.result.fillVolume.toFixed(4));\n },\n set: function set(val) {\n this.result.fillVolume = val;\n }\n }, {\n key: \"cutArea\",\n get: function get() {\n return Number(this.result.cutArea.toFixed(4));\n },\n set: function set(val) {\n this.result.cutArea = val;\n }\n }, {\n key: \"cutVolume\",\n get: function get() {\n return Number(this.result.cutVolume.toFixed(4));\n },\n set: function set(val) {\n this.result.cutVolume = val;\n }\n }, {\n key: \"noArea\",\n get: function get() {\n return Number(this.result.noArea.toFixed(4));\n },\n set: function set(val) {\n this.result.noArea = val;\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.Draw && this.Draw.end();\n for (var i = 0; i < this.entities.length; i++) {\n this.viewer.entities.remove(this.entities[i]);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clean();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }], [{\n key: \"EditBox\",\n value: function () {\n var _EditBox = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(that) {\n var contentElm, e_height, e_precision, e_allArea, e_fillArea, e_fillVolume, e_cutArea, e_cutVolume, e_noArea, newDivBtn;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"](that.sdk.viewer._container, {\n title: '土方分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.clean();\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n }\n });\n case 3:\n that._DialogObject = _context.sent;\n _context.next = 6;\n return that._DialogObject.init();\n case 6:\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_5__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' cut-fill';\n\n // 高度值\n e_height = contentElm.querySelector(\"input[name='height']\");\n e_height.value = that.height;\n e_height.addEventListener('blur', function (e) {\n var value = e.target.value;\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n e_height.value = value;\n that.height = e_height.value;\n }\n });\n\n // 精度值\n e_precision = contentElm.querySelector(\"input[name='precision']\");\n e_precision.value = that.precision;\n e_precision.addEventListener('blur', function (e) {\n var value = Number(e.target.value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n e_precision.value = value;\n that.precision = e_precision.value;\n });\n\n // 总分析面积\n e_allArea = contentElm.querySelector(\"span[name='allArea']\");\n e_allArea.innerHTML = that.result.allArea || 0;\n Object.defineProperty(that.result, 'allArea', {\n get: function get() {\n return e_allArea.innerHTML;\n },\n set: function set(value) {\n e_allArea.innerHTML = Number(value.toFixed(4));\n }\n });\n // 填方面积\n e_fillArea = contentElm.querySelector(\"span[name='fillArea']\");\n e_fillArea.innerHTML = that.result.fillArea || 0;\n Object.defineProperty(that.result, 'fillArea', {\n get: function get() {\n return e_fillArea.innerHTML;\n },\n set: function set(value) {\n e_fillArea.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 填方体积\n e_fillVolume = contentElm.querySelector(\"span[name='fillVolume']\");\n e_fillVolume.innerHTML = that.result.fillVolume || 0;\n Object.defineProperty(that.result, 'fillVolume', {\n get: function get() {\n return e_fillVolume.innerHTML;\n },\n set: function set(value) {\n e_fillVolume.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 挖方面积\n e_cutArea = contentElm.querySelector(\"span[name='cutArea']\");\n e_cutArea.innerHTML = that.result.cutArea || 0;\n Object.defineProperty(that.result, 'cutArea', {\n get: function get() {\n return e_cutArea.innerHTML;\n },\n set: function set(value) {\n e_cutArea.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 挖方体积\n e_cutVolume = contentElm.querySelector(\"span[name='cutVolume']\");\n e_cutVolume.innerHTML = that.result.cutVolume || 0;\n Object.defineProperty(that.result, 'cutVolume', {\n get: function get() {\n return e_cutVolume.innerHTML;\n },\n set: function set(value) {\n e_cutVolume.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 无须填挖面积\n e_noArea = contentElm.querySelector(\"span[name='noArea']\");\n e_noArea.innerHTML = that.result.noArea || 0;\n Object.defineProperty(that.result, 'noArea', {\n get: function get() {\n return e_noArea.innerHTML;\n },\n set: function set(value) {\n e_noArea.innerHTML = Number(value.toFixed(4));\n }\n });\n newDivBtn = contentElm.getElementsByClassName('draw-btn')[0];\n newDivBtn.addEventListener('click', function () {\n that.create();\n });\n case 36:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function EditBox(_x) {\n return _EditBox.apply(this, arguments);\n }\n return EditBox;\n }()\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (CutFillAnalysis);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvaW5kZXguanM/NmQwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi8uLi9Ub29sc1wiO1xyXG4vLyBpbXBvcnQgQ3JlYXRlUG9seWdvbiBmcm9tIFwiLi9DcmVhdGVQb2x5Z29uXCI7XHJcbmltcG9ydCBEcmF3UG9seWdvbiBmcm9tIFwiLi4vLi4vLi4vRHJhdy9kcmF3UG9seWdvblwiXHJcblxyXG5jbGFzcyBDdXRGaWxsQW5hbHlzaXMge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvciDloavmjJbmlrnliIbmnpBcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogKiovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGs7XHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXI7XHJcbiAgICAvLyBpZiAoIXBvc2l0aW9ucykgdGhyb3cgbmV3IEVycm9yKFwibm8gcG9zaXRpb25zIG9iamVjdCFcIik7XHJcbiAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IHBvc2l0aW9ucztcclxuICAgIHRoaXMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQgfHwgNzBcclxuICAgIHRoaXMubWF4SGVpZ2ggPSAtMTAwMDAwMDtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gb3B0aW9ucy5wcmVjaXNpb24gfHwgMTI1XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMucmVzdWx0ID0ge1xyXG4gICAgICBhbGxBcmVhOiBcIlwiLFxyXG4gICAgICBjdXRBcmVhOiBcIlwiLFxyXG4gICAgICBjdXRWb2x1bWU6IFwiXCIsXHJcbiAgICAgIGZpbGxBcmVhOiBcIlwiLFxyXG4gICAgICBmaWxsVm9sdW1lOiBcIlwiLFxyXG4gICAgICBub0FyZWE6IFwiXCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0aWVzID0gW11cclxuICAgIHRoaXMudG9vbHMgPSBuZXcgVG9vbHModGhpcy5zZGspXHJcbiAgICB0aGlzLkRyYXcgPSBuZXcgRHJhd1BvbHlnb24odGhpcy5zZGssIHsgdGlwVGV4dDogJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOiMg+WbtOe7mOWItiEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIDkuIrkuIDkuKrmjqfliLbngrknIH0pXHJcbiAgICBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgLy8gQ3V0RmlsbEFuYWx5c2lzLkVkaXRCb3godGhpcylcclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpIHtcclxuICAgIHRoaXMuY2xlYW4oKVxyXG4gICAgdGhpcy5EcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgICAgaWYgKCFwb3NpdGlvbnMgfHwgcG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICBpZiAoYSA+PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLkRyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vnu5PmnZ/ojIPlm7Tnu5jliLYhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSAJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRHJhdy50aXBUZXh0ID0gJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOiMg+WbtOe7mOWItiEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIDkuIrkuIDkuKrmjqfliLbngrknXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgcG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgIHRoaXMuY3JlYXRlUG9seWdvbkdlbyh0aGlzLnBvc2l0aW9ucyk7XHJcbiAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5Wb2x1bWVBbmFseXNpcygpO1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlQ29sbGlzaW9uRGV0ZWN0aW9uID0gZmFsc2U7IC8v5YWB6K6455u45py66L+b5YWl5Zyw5LiLXHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjaygpXHJcbiAgICB9KVxyXG4gICAgLy8gY29uc3QgJHRoaXMgPSB0aGlzO1xyXG4gICAgLy8gaWYgKCF0aGlzLmNwKSB7XHJcbiAgICAvLyAgIHRoaXMuY3AgPSBuZXcgQ3JlYXRlUG9seWdvbih0aGlzLnZpZXdlcilcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY3Auc3RhcnQoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygkdGhpcy5jcC5hY3RpdmVTaGFwZVBvaW50cylcclxuICAgIC8vICAgJHRoaXMucG9zaXRpb25zID0gJHRoaXMuY3AuYWN0aXZlU2hhcGVQb2ludHM7XHJcbiAgICAvLyAgICR0aGlzLmNyZWF0ZVBvbHlnb25HZW8oJHRoaXMucG9zaXRpb25zKTtcclxuICAgIC8vICAgJHRoaXMucmVzdWx0ID0gJHRoaXMuVm9sdW1lQW5hbHlzaXMoKTtcclxuICAgIC8vICAgJHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSgkdGhpcy5jcC5wb2x5Z29uKTtcclxuICAgIC8vICAgJHRoaXMudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVDb2xsaXNpb25EZXRlY3Rpb24gPSBmYWxzZTsgLy/lhYHorrjnm7jmnLrov5vlhaXlnLDkuItcclxuXHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgY3JlYXRlUG9seWdvbkdlbyhwb2ludHMpIHtcclxuICAgIC8v6K6h566X572R5qC857KS5bqmLeeyvuW6plxyXG4gICAgbGV0IGdyYW51bGFyaXR5ID0gTWF0aC5QSSAvIE1hdGgucG93KDIsIDExKTtcclxuICAgIGdyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHkgLyB0aGlzLnByZWNpc2lvbjtcclxuICAgIGxldCBwb2x5Z29uR2VvbWV0cnkgPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeS5mcm9tUG9zaXRpb25zKHtcclxuICAgICAgcG9zaXRpb25zOiBwb2ludHMsXHJcbiAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlLkZMQVRfVkVSVEVYX0ZPUk1BVCxcclxuICAgICAgZ3JhbnVsYXJpdHk6IGdyYW51bGFyaXR5LFxyXG4gICAgfSk7XHJcbiAgICAvL+WIm+W7uuiHquWumuS5ieW5s+mdouWHoOS9leS9k1xyXG4gICAgdGhpcy5nZW9tID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5KTtcclxuICB9XHJcbiAgVm9sdW1lQW5hbHlzaXMoKSB7XHJcbiAgICBsZXQgY3V0QXJlYSA9IDAsXHJcbiAgICAgIGN1dFZvbHVtZSA9IDAsXHJcbiAgICAgIGZpbGxBcmVhID0gMCxcclxuICAgICAgZmlsbFZvbHVtZSA9IDAsXHJcbiAgICAgIG5vQXJlYSA9IDA7XHJcbiAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5nZW9tLmluZGljZXM7IC8v6I635Y+W6aG254K557Si5byV5pWw5o2uXHJcbiAgICBpZiAoIXRoaXMuZ2VvbSB8fCAhdGhpcy5nZW9tLmF0dHJpYnV0ZXMgfHwgIXRoaXMuZ2VvbS5hdHRyaWJ1dGVzLnBvc2l0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuZ2VvbS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcztcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpbmRpY2VzLmxlbmd0aDsgaW5kZXggKz0gMykge1xyXG4gICAgICBjb25zdCBwb3MwID0gdGhpcy5yZXR1cm5Qb3NpdGlvbihwb3NpdGlvbnMsIGluZGljZXNbaW5kZXhdKTtcclxuICAgICAgY29uc3QgcG9zMSA9IHRoaXMucmV0dXJuUG9zaXRpb24ocG9zaXRpb25zLCBpbmRpY2VzW2luZGV4ICsgMV0pO1xyXG4gICAgICBjb25zdCBwb3MyID0gdGhpcy5yZXR1cm5Qb3NpdGlvbihwb3NpdGlvbnMsIGluZGljZXNbaW5kZXggKyAyXSk7XHJcbiAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIG5hbWU6IFwi5LiJ6KeS6Z2iXCIsXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgaGllcmFyY2h5OiBbcG9zMC5oZWlnaHRQb3MsIHBvczEuaGVpZ2h0UG9zLCBwb3MyLmhlaWdodFBvc10sXHJcbiAgICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbVJhbmRvbSgpLFxyXG4gICAgICAgICAgZXh0cnVkZWRIZWlnaHQ6IHRoaXMuaGVpZ2h0LFxyXG4gICAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkJMQUNLLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KVxyXG4gICAgICAvL+awtOW5s+eKtuaAgeS4i+S4ieinkuW9oumdouenr1xyXG4gICAgICBjb25zdCBhcmVhID0gdGhpcy5jb21wdXRlQXJlYTRUcmlhbmdsZShcclxuICAgICAgICBwb3MwLm5vSGVpZ2h0UG9zLFxyXG4gICAgICAgIHBvczEubm9IZWlnaHRQb3MsXHJcbiAgICAgICAgcG9zMi5ub0hlaWdodFBvc1xyXG4gICAgICApO1xyXG4gICAgICAvL+iuoeeul+S4ieS4queCueeahOWdh+mrmFxyXG4gICAgICBjb25zdCBoZWlnaHQgPSAocG9zMC5oZWlnaHQgKyBwb3MxLmhlaWdodCArIHBvczIuaGVpZ2h0KSAvIDM7XHJcbiAgICAgIGlmIChoZWlnaHQgPCB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgIC8vIOmcgOimgeWhq+aWueeahOmDqOWIhlxyXG4gICAgICAgIGZpbGxBcmVhICs9IGFyZWE7XHJcbiAgICAgICAgY29uc3Qgdm9sdW1lID0gYXJlYSAqICh0aGlzLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgZmlsbFZvbHVtZSArPSB2b2x1bWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoaGVpZ2h0ID09IHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgbm9BcmVhICs9IGFyZWE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g6ZyA6KaB5oyW5pa555qE6YOo5YiGXHJcbiAgICAgICAgY3V0QXJlYSArPSBhcmVhO1xyXG4gICAgICAgIGNvbnN0IHZvbHVtZSA9IGFyZWEgKiAoaGVpZ2h0IC0gdGhpcy5oZWlnaHQpO1xyXG4gICAgICAgIGN1dFZvbHVtZSArPSB2b2x1bWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGFsbEFyZWEgPSBjdXRBcmVhICsgZmlsbEFyZWEgKyBub0FyZWE7XHJcbiAgICAvLyB0aGlzLnJlc3VsdCA9IHtcclxuICAgIC8vICAgYWxsQXJlYSxcclxuICAgIC8vICAgY3V0QXJlYSxcclxuICAgIC8vICAgY3V0Vm9sdW1lLFxyXG4gICAgLy8gICBmaWxsQXJlYSxcclxuICAgIC8vICAgZmlsbFZvbHVtZSxcclxuICAgIC8vICAgbm9BcmVhLFxyXG4gICAgLy8gfTtcclxuICAgIHRoaXMucmVzdWx0LmFsbEFyZWEgPSBhbGxBcmVhXHJcbiAgICB0aGlzLnJlc3VsdC5jdXRBcmVhID0gY3V0QXJlYVxyXG4gICAgdGhpcy5yZXN1bHQuY3V0Vm9sdW1lID0gY3V0Vm9sdW1lXHJcbiAgICB0aGlzLnJlc3VsdC5maWxsQXJlYSA9IGZpbGxBcmVhXHJcbiAgICB0aGlzLnJlc3VsdC5maWxsVm9sdW1lID0gZmlsbFZvbHVtZVxyXG4gICAgdGhpcy5yZXN1bHQubm9BcmVhID0gbm9BcmVhXHJcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XHJcbiAgfVxyXG4gIGNvbXB1dGVDZW50cm9pZDRQb2x5Z29uKHBvc2l0aW9ucykge1xyXG4gICAgbGV0IHggPSBbXSxcclxuICAgICAgeSA9IFtdO1xyXG4gICAgbGV0IGFsbFggPSAwLFxyXG4gICAgICBhbGxZID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9zaXRpb25zW2ldKTtcclxuICAgICAgYWxsWCArPSBjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlO1xyXG4gICAgICBhbGxZICs9IGNhcnRvZ3JhcGhpYy5sYXRpdHVkZTtcclxuICAgICAgeC5wdXNoKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICB5LnB1c2goY2FydG9ncmFwaGljLmxhdGl0dWRlKTtcclxuICAgIH1cclxuICAgIGxldCBjZW50cm9pZHggPSBhbGxYIC8gcG9zaXRpb25zLmxlbmd0aDtcclxuICAgIGxldCBjZW50cm9pZHkgPSBhbGxZIC8gcG9zaXRpb25zLmxlbmd0aDtcclxuICAgIGNvbnN0IENhcnRvZ3JhcGhpYyA9IG5ldyBDZXNpdW0uQ2FydG9ncmFwaGljKGNlbnRyb2lkeCwgY2VudHJvaWR5KTtcclxuICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhcclxuICAgICAgQ2FydG9ncmFwaGljLmxvbmdpdHVkZSxcclxuICAgICAgQ2FydG9ncmFwaGljLmxhdGl0dWRlLFxyXG4gICAgICB0aGlzLm1heEhlaWdoICsgMzBcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOa1t+S8puWFrOW8j+axguWPluS4ieinkuW9oumdouenr1xyXG4gICAqIEBwYXJhbSB7Kn0gcG9zMVxyXG4gICAqIEBwYXJhbSB7Kn0gcG9zMlxyXG4gICAqIEBwYXJhbSB7Kn0gcG9zM1xyXG4gICAqIEByZXR1cm5zIOS4ieinkuW9oumdouenr+OOoVxyXG4gICAqL1xyXG4gIGNvbXB1dGVBcmVhNFRyaWFuZ2xlKHBvczEsIHBvczIsIHBvczMpIHtcclxuICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9zMSwgcG9zMik7XHJcbiAgICBsZXQgYiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvczIsIHBvczMpO1xyXG4gICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3MzLCBwb3MxKTtcclxuICAgIGxldCBTID0gKGEgKyBiICsgYykgLyAyO1xyXG4gICAgcmV0dXJuIE1hdGguc3FydChTICogKFMgLSBhKSAqIChTIC0gYikgKiAoUyAtIGMpKTtcclxuICB9XHJcbiAgcmV0dXJuUG9zaXRpb24ocG9zaXRpb25zLCBpbmRleCkge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhcclxuICAgICAgcG9zaXRpb25zW2luZGV4ICogM10sXHJcbiAgICAgIHBvc2l0aW9uc1tpbmRleCAqIDMgKyAxXSxcclxuICAgICAgcG9zaXRpb25zW2luZGV4ICogMyArIDJdXHJcbiAgICApO1xyXG4gICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihjYXJ0ZXNpYW4pO1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMudmlld2VyLnNjZW5lLnNhbXBsZUhlaWdodFN1cHBvcnRlZFxyXG4gICAgICA/IHRoaXMudmlld2VyLnNjZW5lLnNhbXBsZUhlaWdodChjYXJ0b2dyYXBoaWMpXHJcbiAgICAgIDogdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KGNhcnRvZ3JhcGhpYyk7XHJcbiAgICBpZiAoaGVpZ2h0ID4gdGhpcy5tYXhIZWlnaCkge1xyXG4gICAgICB0aGlzLm1heEhlaWdoID0gaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVpZ2h0UG9zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhcclxuICAgICAgICBjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLFxyXG4gICAgICAgIGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSxcclxuICAgICAgICBoZWlnaHRcclxuICAgICAgKSxcclxuICAgICAgbm9IZWlnaHRQb3M6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKFxyXG4gICAgICAgIGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUsXHJcbiAgICAgICAgY2FydG9ncmFwaGljLmxhdGl0dWRlLFxyXG4gICAgICAgIDBcclxuICAgICAgKSxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIEVkaXRCb3godGhhdCkge1xyXG4gICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGF0LnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgICB0aXRsZTogJ+Wcn+aWueWIhuaekCcsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoYXQuY2xlYW4oKVxyXG4gICAgICAgIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgYXdhaXQgdGhhdC5fRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGN1dC1maWxsJ1xyXG5cclxuICAgIC8vIOmrmOW6puWAvFxyXG4gICAgbGV0IGVfaGVpZ2h0ID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0naGVpZ2h0J11cIilcclxuICAgIGVfaGVpZ2h0LnZhbHVlID0gdGhhdC5oZWlnaHRcclxuICAgIGVfaGVpZ2h0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlX2hlaWdodC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgdGhhdC5oZWlnaHQgPSBlX2hlaWdodC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g57K+5bqm5YC8XHJcbiAgICBsZXQgZV9wcmVjaXNpb24gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdwcmVjaXNpb24nXVwiKVxyXG4gICAgZV9wcmVjaXNpb24udmFsdWUgPSB0aGF0LnByZWNpc2lvblxyXG4gICAgZV9wcmVjaXNpb24uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChlKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC52YWx1ZSlcclxuICAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgIH1cclxuICAgICAgZV9wcmVjaXNpb24udmFsdWUgPSB2YWx1ZVxyXG4gICAgICB0aGF0LnByZWNpc2lvbiA9IGVfcHJlY2lzaW9uLnZhbHVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g5oC75YiG5p6Q6Z2i56evXHJcbiAgICBsZXQgZV9hbGxBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdhbGxBcmVhJ11cIilcclxuICAgIGVfYWxsQXJlYS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5hbGxBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2FsbEFyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9hbGxBcmVhLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2FsbEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyDloavmlrnpnaLnp69cclxuICAgIGxldCBlX2ZpbGxBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdmaWxsQXJlYSddXCIpXHJcbiAgICBlX2ZpbGxBcmVhLmlubmVySFRNTCA9IHRoYXQucmVzdWx0LmZpbGxBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2ZpbGxBcmVhJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVfZmlsbEFyZWEuaW5uZXJIVE1MXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGVfZmlsbEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5aGr5pa55L2T56evXHJcbiAgICBsZXQgZV9maWxsVm9sdW1lID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdmaWxsVm9sdW1lJ11cIilcclxuICAgIGVfZmlsbFZvbHVtZS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5maWxsVm9sdW1lIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2ZpbGxWb2x1bWUnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9maWxsVm9sdW1lLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2ZpbGxWb2x1bWUuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5oyW5pa56Z2i56evXHJcbiAgICBsZXQgZV9jdXRBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdjdXRBcmVhJ11cIilcclxuICAgIGVfY3V0QXJlYS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5jdXRBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2N1dEFyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9jdXRBcmVhLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2N1dEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5oyW5pa55L2T56evXHJcbiAgICBsZXQgZV9jdXRWb2x1bWUgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJzcGFuW25hbWU9J2N1dFZvbHVtZSddXCIpXHJcbiAgICBlX2N1dFZvbHVtZS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5jdXRWb2x1bWUgfHwgMFxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQucmVzdWx0LCAnY3V0Vm9sdW1lJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVfY3V0Vm9sdW1lLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2N1dFZvbHVtZS5pbm5lckhUTUwgPSBOdW1iZXIodmFsdWUudG9GaXhlZCg0KSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDml6DpobvloavmjJbpnaLnp69cclxuICAgIGxldCBlX25vQXJlYSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcInNwYW5bbmFtZT0nbm9BcmVhJ11cIilcclxuICAgIGVfbm9BcmVhLmlubmVySFRNTCA9IHRoYXQucmVzdWx0Lm5vQXJlYSB8fCAwXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhhdC5yZXN1bHQsICdub0FyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9ub0FyZWEuaW5uZXJIVE1MXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGVfbm9BcmVhLmlubmVySFRNTCA9IE51bWJlcih2YWx1ZS50b0ZpeGVkKDQpKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBuZXdEaXZCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RyYXctYnRuJylbMF07XHJcbiAgICBuZXdEaXZCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQuY3JlYXRlKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWlnaHRcclxuICB9XHJcbiAgc2V0IGhlaWdodHModmFsKSB7XHJcbiAgICB0aGlzLmhlaWdodCA9IHZhbFxyXG4gIH1cclxuICBnZXQgcHJlY2lzaW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnByZWNpc2lvblxyXG4gIH1cclxuICBzZXQgcHJlY2lzaW9ucyh2YWwpIHtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gdmFsXHJcbiAgfVxyXG4gIGdldCBhbGxBcmVhKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnJlc3VsdC5hbGxBcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBhbGxBcmVhKHZhbCkge1xyXG4gICAgdGhpcy5yZXN1bHQuYWxsQXJlYSA9IHZhbFxyXG4gIH1cclxuICBnZXQgZmlsbEFyZWEoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzdWx0LmZpbGxBcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBmaWxsQXJlYSh2YWwpIHtcclxuICAgIHRoaXMucmVzdWx0LmZpbGxBcmVhID0gdmFsXHJcbiAgfVxyXG4gIGdldCBmaWxsVm9sdW1lKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnJlc3VsdC5maWxsVm9sdW1lLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBmaWxsVm9sdW1lKHZhbCkge1xyXG4gICAgdGhpcy5yZXN1bHQuZmlsbFZvbHVtZSA9IHZhbFxyXG4gIH1cclxuICBnZXQgY3V0QXJlYSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQuY3V0QXJlYS50b0ZpeGVkKDQpKVxyXG4gIH1cclxuICBzZXQgY3V0QXJlYSh2YWwpIHtcclxuICAgIHRoaXMucmVzdWx0LmN1dEFyZWEgPSB2YWxcclxuICB9XHJcbiAgZ2V0IGN1dFZvbHVtZSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQuY3V0Vm9sdW1lLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBjdXRWb2x1bWUodmFsKSB7XHJcbiAgICB0aGlzLnJlc3VsdC5jdXRWb2x1bWUgPSB2YWxcclxuICB9XHJcbiAgZ2V0IG5vQXJlYSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQubm9BcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBub0FyZWEodmFsKSB7XHJcbiAgICB0aGlzLnJlc3VsdC5ub0FyZWEgPSB2YWxcclxuICB9XHJcbiAgZ2V0IG9uRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpY2tDYWxsQmFja1xyXG4gIH1cclxuICBzZXQgb25FbmQodmFsKSB7XHJcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc29sZS5lcnJvcigndmFsOicsIHZhbCwgJ+S4jeaYr+S4gOS4qmZ1bmN0aW9uJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjayA9IHZhbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYW4oKSB7XHJcbiAgICB0aGlzLkRyYXcgJiYgdGhpcy5EcmF3LmVuZCgpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXRpZXNbaV0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5jbGVhbigpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEN1dEZpbGxBbmFseXNpcztcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBS0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQW1JQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXhNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTlIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwTUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CutFill/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Flat/index.js": -/*!****************************************!*\ - !*** ./src/Obj/Analysis/Flat/index.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Base_index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Base/index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar FlatList = {};\nvar Flat = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 模型压平\r\n * @param sdk\r\n * @param {Cesium.Cesium3DTileset} tileset 三维模型\r\n * @param {Object} options\r\n * @param {string} attr.id id\r\n * @param {Cesium.Cartesian3[]} attr.positions 压平面坐标\r\n */\n function Flat(sdk, tileset) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _Dialog = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Flat);\n _this = _callSuper(this, Flat, [sdk]);\n // 数组去重,不能处理嵌套的数组\n _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_this, \"getUniqueArray\", function (arr) {\n return arr.filter(function (item, index, arr) {\n //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素\n return arr.indexOf(item, 0) === index;\n });\n });\n if (!tileset || !_this.sdk || !_this.sdk.viewer) return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(_this);\n _this.options = _objectSpread({}, options);\n _this.options.id = options.id || _this.randomString();\n _this.options.name = options.name || '压平面';\n _this.options.positions = options.positions || [];\n _this.options.show = options.show || options.show === false ? options.show : true;\n _this.tileset = tileset;\n _this.Dialog = _Dialog;\n if (!_this.options.height && _this.options.height !== 0) {\n var height = _this.options.positions[0].alt;\n for (var i = 0; i < _this.options.positions.length; i++) {\n if (height > _this.options.positions[i].alt) {\n height = _this.options.positions[i].alt;\n }\n }\n _this.options.height = height;\n }\n if (FlatList[_this.tileset.id]) {\n FlatList[_this.tileset.id].push(_objectSpread({}, _this.options));\n } else {\n FlatList[_this.tileset.id] = [_objectSpread({}, _this.options)];\n }\n _this.center = tileset.boundingSphere.center.clone();\n _this.center84 = _this.cartesian3Towgs84(_this.center, _this.sdk.viewer);\n _this.matrix = Cesium.Transforms.eastNorthUpToFixedFrame(_this.center.clone());\n _this.localMatrix = Cesium.Matrix4.inverse(_this.matrix, new Cesium.Matrix4());\n // this.entity = {\n // id: this.options.id\n // }\n _this.addFlat();\n // Flat.createPolygon(this)\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Flat, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Flat, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].show = v;\n }\n }\n this.addFlat();\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = Number(v);\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].height = Number(v);\n }\n }\n this.addFlat();\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].name = v;\n }\n }\n }\n }, {\n key: \"addFlat\",\n value: function addFlat() {\n var _this2 = this;\n var localPositionsArr = [];\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n var item = FlatList[this.tileset.id][i];\n if (item.show) {\n var positions = item.positions;\n var height = item.height;\n var fromDegreesArray = [];\n for (var _i = 0; _i < positions.length; _i++) {\n fromDegreesArray.push(positions[_i].lng, positions[_i].lat);\n }\n FlatList[this.tileset.id][i].flatHeight = height - this.center84.alt;\n var localCoor = this.cartesiansToLocal(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray));\n localPositionsArr.push(localCoor);\n }\n }\n var funstr = this.getIsinPolygonFun(localPositionsArr);\n var str = \"\";\n var _loop = function _loop() {\n var coors = localPositionsArr[_i2];\n var n = coors.length;\n var instr = \"\";\n coors.forEach(function (coordinate, index) {\n instr += \"points_\".concat(n, \"[\").concat(index, \"] = vec2(\").concat(coordinate[0], \", \").concat(coordinate[1], \");\\n\");\n });\n str += \"\\n \".concat(instr, \"\\n if(isPointInPolygon_\").concat(n, \"(position2D)){\\n vec4 tileset_local_position_transformed = vec4(tileset_local_position.x, tileset_local_position.y, ground_z + \").concat(FlatList[_this2.tileset.id][_i2].flatHeight, \", 1.0);\\n vec4 model_local_position_transformed = czm_inverseModel * u_tileset_localToWorldMatrix * tileset_local_position_transformed;\\n\\n vsOutput.positionMC.xy = model_local_position_transformed.xy;\\n vsOutput.positionMC.z = model_local_position_transformed.z+ modelMC.z*0.002;\\n return;\\n }\");\n };\n for (var _i2 = 0; _i2 < localPositionsArr.length; _i2++) {\n _loop();\n }\n this.updateShader(funstr, str);\n }\n\n // static createPolygon(that) {\n // let color = '#ffffff'\n // let linecolor = '#000000'\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.height)\n // }\n // that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n // that.entity = that.sdk.viewer.entities.add({\n // show: that.options.show,\n // id: that.options.id,\n // polyline: {\n // positions: [...that.positions, that.positions[0], that.positions[1]],\n // width: 2,\n // material: Cesium.Color.fromCssColorString(linecolor),\n // depthFailMaterial: new Cesium.PolylineDashMaterialProperty({\n // color: Cesium.Color.YELLOW\n // }),\n // clampToGround: false,\n // zIndex: that.sdk._entityZIndex\n // },\n // })\n // that.sdk._entityZIndex++\n // }\n }, {\n key: \"remove\",\n value: function remove() {\n var _this3 = this;\n FlatList[this.tileset.id] = FlatList[this.tileset.id].filter(function (attr) {\n return attr.id != _this3.options.id;\n });\n var localPositionsArr = [];\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n var item = FlatList[this.tileset.id][i];\n if (item.show) {\n var positions = item.positions;\n var height = item.height;\n var fromDegreesArray = [];\n for (var _i3 = 0; _i3 < positions.length; _i3++) {\n fromDegreesArray.push(positions[_i3].lng, positions[_i3].lat);\n }\n FlatList[this.tileset.id][i].flatHeight = height - this.center84.alt;\n var localCoor = this.cartesiansToLocal(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray));\n localPositionsArr.push(localCoor);\n }\n }\n var funstr = this.getIsinPolygonFun(localPositionsArr);\n var str = \"\";\n var _loop2 = function _loop2() {\n var coors = localPositionsArr[_i4];\n var n = coors.length;\n var instr = \"\";\n coors.forEach(function (coordinate, index) {\n instr += \"points_\".concat(n, \"[\").concat(index, \"] = vec2(\").concat(coordinate[0], \", \").concat(coordinate[1], \");\\n\");\n });\n str += \"\\n \".concat(instr, \"\\n if(isPointInPolygon_\").concat(n, \"(position2D)){\\n vec4 tileset_local_position_transformed = vec4(tileset_local_position.x, tileset_local_position.y, ground_z + \").concat(FlatList[_this3.tileset.id][_i4].flatHeight, \", 1.0);\\n vec4 model_local_position_transformed = czm_inverseModel * u_tileset_localToWorldMatrix * tileset_local_position_transformed;\\n vsOutput.positionMC.xy = model_local_position_transformed.xy;\\n vsOutput.positionMC.z = model_local_position_transformed.z+ modelMC.z*0.002;\\n return;\\n }\");\n };\n for (var _i4 = 0; _i4 < localPositionsArr.length; _i4++) {\n _loop2();\n }\n this.updateShader(funstr, str);\n }\n\n // 根据数组长度,构建 判断点是否在面内 的压平函数\n }, {\n key: \"getIsinPolygonFun\",\n value: function getIsinPolygonFun(polygons) {\n var pmap = polygons.map(function (polygon) {\n return polygon.length;\n });\n var uniqueArray = this.getUniqueArray(pmap);\n var str = \"\";\n uniqueArray.forEach(function (length) {\n str += \"\\n vec2 points_\".concat(length, \"[\").concat(length, \"];\\n bool isPointInPolygon_\").concat(length, \"(vec2 point){\\n int nCross = 0; // \\u4EA4\\u70B9\\u6570\\n const int n = \").concat(length, \";\\n for(int i = 0; i < n; i++){\\n vec2 p1 = points_\").concat(length, \"[i];\\n vec2 p2 = points_\").concat(length, \"[int(mod(float(i+1),float(n)))];\\n if(p1[1] == p2[1]){\\n continue;\\n }\\n if(point[1] < min(p1[1], p2[1])){\\n continue;\\n }\\n if(point[1] >= max(p1[1], p2[1])){\\n continue;\\n }\\n float x = p1[0] + ((point[1] - p1[1]) * (p2[0] - p1[0])) / (p2[1] - p1[1]);\\n if(x > point[0]){\\n nCross++;\\n }\\n }\\n return int(mod(float(nCross), float(2))) == 1;\\n }\\n \");\n });\n return str;\n }\n }, {\n key: \"updateShader\",\n value: function updateShader(vtx1, vtx2) {\n var flatCustomShader = new Cesium.CustomShader({\n uniforms: {\n u_tileset_localToWorldMatrix: {\n type: Cesium.UniformType.MAT4,\n value: this.matrix\n },\n u_tileset_worldToLocalMatrix: {\n type: Cesium.UniformType.MAT4,\n value: this.localMatrix\n },\n u_flatHeight: {\n type: Cesium.UniformType.FLOAT,\n value: this.flatHeight\n }\n },\n vertexShaderText: \"\\n // \\u6240\\u6709isPointInPolygon\\u51FD\\u6570\\n \".concat(vtx1, \"\\n void vertexMain(VertexInput vsInput, inout czm_modelVertexOutput vsOutput){\\n vec3 modelMC = vsInput.attributes.positionMC;\\n vec4 model_local_position = vec4(modelMC.x, modelMC.y, modelMC.z, 1.0);\\n vec4 tileset_local_position = u_tileset_worldToLocalMatrix * czm_model * model_local_position;\\n vec2 position2D = vec2(tileset_local_position.x,tileset_local_position.y);\\n float ground_z = 0.0;\\n // \\u591A\\u4E2A\\u591A\\u8FB9\\u5F62\\u533A\\u57DF\\n \").concat(vtx2, \"\\n }\")\n });\n this.tileset.customShader = flatCustomShader;\n this.sdk.viewer.scene.requestRender();\n }\n }, {\n key: \"cartesiansToLocal\",\n value:\n // 世界坐标转数组局部坐标\n function cartesiansToLocal(positions) {\n var arr = [];\n for (var i = 0; i < positions.length; i++) {\n var position = positions[i];\n var localp = Cesium.Matrix4.multiplyByPoint(this.localMatrix, position.clone(), new Cesium.Cartesian3());\n arr.push([localp.x, localp.y]);\n }\n return arr;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var orientation, lng, lat, alt, destination, position, positionArray, i, a, BoundingSphere;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context.next = 22;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.line && this.options.line.positions) {\n position = _objectSpread({}, this.options.line.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context.next = 15;\n break;\n }\n _context.next = 14;\n return this.getClampToHeight(position);\n case 14:\n position.alt = _context.sent;\n case 15:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context.next = 26;\n break;\n case 22:\n positionArray = [];\n for (i = 0; i < this.options.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.center84.alt);\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2(state) {\n var _this4 = this;\n var contentElm, name_elm, height_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (state) {\n this.originalOptions = this.deepCopyObj(this.options);\n // this._DialogObject = await new Dialog(this.sdk.viewer._container, {\n // title: '压平面属性', left: '180px', top: '100px',\n // removeCallBack: () => {\n // this.Dialog.removeCallBack && this.Dialog.removeCallBack()\n // },\n // closeCallBack: () => {\n // this.reset()\n // this.Dialog.closeCallBack && this.Dialog.closeCallBack()\n // }\n // })\n // await this._DialogObject.init()\n // 内容部分\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = `\n // \n //
\n //
\n //
\n // 名称\n // \n //
\n //
\n //
\n //
\n // 压平高度\n //
\n // \n // m\n // \n //
\n //
\n //
\n //
\n // `\n // this._DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('flatPlane')[0];\n name_elm = contentElm.getElementsByClassName('input-name')[0];\n name_elm.value = this.options.name;\n name_elm.addEventListener('input', function () {\n _this4.name = name_elm.value;\n });\n height_elm = contentElm.getElementsByClassName('flat-height')[0];\n height_elm.value = this.options.height;\n height_elm.addEventListener('input', function () {\n _this4.height = Number(height_elm.value);\n _this4.addFlat();\n });\n\n // let confirmElm = document.createElement('button');\n // confirmElm.className = 'btn'\n // confirmElm.innerHTML = '确认'\n // this._DialogObject.footAppChild(confirmElm)\n // confirmElm.addEventListener('click', () => {\n // if (!this.options.name) {\n // this.options.name = '压平面'\n // }\n // this.originalOptions = this.deepCopyObj(this.options)\n // this._DialogObject.close()\n // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.options)\n // })\n\n // let flatElm = document.createElement('button');\n // flatElm.className = 'btn'\n // flatElm.innerHTML = '二次编辑'\n // flatElm.style.width = 'auto'\n // flatElm.style.position = 'absolute'\n // flatElm.style.left = '10px'\n // this._DialogObject.footAppChild(flatElm)\n // flatElm.addEventListener('click', () => {\n // console.log('二次编辑')\n // })\n } else {\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"sure\",\n value: function sure() {\n if (!this.options.name) {\n this.options.name = '压平面';\n }\n this.originalOptions = this.deepCopyObj(this.options);\n // this._DialogObject.close()\n // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.options)\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n this.height = this.options.height;\n this.addFlat();\n }\n }, {\n key: \"flatEdit\",\n value: function flatEdit(state) {\n if (state) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, FlatList[this.tileset.id]);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n }\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_Base_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Flat);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0ZsYXQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0ZsYXQvaW5kZXguanM/YzBmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vQmFzZS9pbmRleFwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5sZXQgRmxhdExpc3QgPSB7fVxyXG5jbGFzcyBGbGF0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOaooeWei+WOi+W5s1xyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0ge0Nlc2l1bS5DZXNpdW0zRFRpbGVzZXR9IHRpbGVzZXQg5LiJ57u05qih5Z6LXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXR0ci5pZCBpZFxyXG4gICAqIEBwYXJhbSB7Q2VzaXVtLkNhcnRlc2lhbjNbXX0gYXR0ci5wb3NpdGlvbnMg5Y6L5bmz6Z2i5Z2Q5qCHXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCB0aWxlc2V0LCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrKVxyXG4gICAgaWYgKCF0aWxlc2V0IHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyKSByZXR1cm47XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy5vcHRpb25zLmlkID0gb3B0aW9ucy5pZCB8fCB0aGlzLnJhbmRvbVN0cmluZygpXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5Y6L5bmz6Z2iJ1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLnRpbGVzZXQgPSB0aWxlc2V0O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVpZ2h0ICYmIHRoaXMub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgbGV0IGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChoZWlnaHQgPiB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgICAgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdKSB7XHJcbiAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ucHVzaCh7IC4uLnRoaXMub3B0aW9ucyB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0gPSBbeyAuLi50aGlzLm9wdGlvbnMgfV1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNlbnRlciA9IHRpbGVzZXQuYm91bmRpbmdTcGhlcmUuY2VudGVyLmNsb25lKCk7XHJcbiAgICB0aGlzLmNlbnRlcjg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNlbnRlciwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgdGhpcy5tYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0aGlzLmNlbnRlci5jbG9uZSgpKTtcclxuICAgIHRoaXMubG9jYWxNYXRyaXggPSBDZXNpdW0uTWF0cml4NC5pbnZlcnNlKHRoaXMubWF0cml4LCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSk7XHJcbiAgICAvLyB0aGlzLmVudGl0eSA9IHtcclxuICAgIC8vICAgICBpZDogdGhpcy5vcHRpb25zLmlkXHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gICAgLy8gRmxhdC5jcmVhdGVQb2x5Z29uKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uaWQgPT0gdGhpcy5vcHRpb25zLmlkKSB7XHJcbiAgICAgICAgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5zaG93ID0gdlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSBOdW1iZXIodilcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5pZCA9PSB0aGlzLm9wdGlvbnMuaWQpIHtcclxuICAgICAgICBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmhlaWdodCA9IE51bWJlcih2KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcblxyXG4gIHNldCBuYW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gdlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmlkID09IHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0ubmFtZSA9IHZcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkRmxhdCgpIHtcclxuICAgIGxldCBsb2NhbFBvc2l0aW9uc0FyciA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldO1xyXG4gICAgICBpZiAoaXRlbS5zaG93KSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gaXRlbS5wb3NpdGlvbnM7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGl0ZW0uaGVpZ2h0XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgICB9XHJcbiAgICAgICAgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5mbGF0SGVpZ2h0ID0gaGVpZ2h0IC0gdGhpcy5jZW50ZXI4NC5hbHRcclxuICAgICAgICBsZXQgbG9jYWxDb29yID0gdGhpcy5jYXJ0ZXNpYW5zVG9Mb2NhbChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpKTtcclxuICAgICAgICBsb2NhbFBvc2l0aW9uc0Fyci5wdXNoKGxvY2FsQ29vcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmdW5zdHIgPSB0aGlzLmdldElzaW5Qb2x5Z29uRnVuKGxvY2FsUG9zaXRpb25zQXJyKTtcclxuICAgIGxldCBzdHIgPSBgYDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxQb3NpdGlvbnNBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY29vcnMgPSBsb2NhbFBvc2l0aW9uc0FycltpXTtcclxuICAgICAgY29uc3QgbiA9IGNvb3JzLmxlbmd0aDtcclxuICAgICAgbGV0IGluc3RyID0gYGA7XHJcbiAgICAgIGNvb3JzLmZvckVhY2goKGNvb3JkaW5hdGUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaW5zdHIgKz0gYHBvaW50c18ke259WyR7aW5kZXh9XSA9IHZlYzIoJHtjb29yZGluYXRlWzBdfSwgJHtjb29yZGluYXRlWzFdfSk7XFxuYDtcclxuICAgICAgfSlcclxuICAgICAgc3RyICs9IGBcclxuICAgICAgICAgICAgICAke2luc3RyfVxyXG4gICAgICAgICAgICAgIGlmKGlzUG9pbnRJblBvbHlnb25fJHtufShwb3NpdGlvbjJEKSl7XHJcbiAgICAgICAgICAgICAgICAgIHZlYzQgdGlsZXNldF9sb2NhbF9wb3NpdGlvbl90cmFuc2Zvcm1lZCA9IHZlYzQodGlsZXNldF9sb2NhbF9wb3NpdGlvbi54LCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uLnksIGdyb3VuZF96ICsgJHtGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmZsYXRIZWlnaHR9LCAxLjApO1xyXG4gICAgICAgICAgICAgICAgICB2ZWM0IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gY3ptX2ludmVyc2VNb2RlbCAqIHVfdGlsZXNldF9sb2NhbFRvV29ybGRNYXRyaXggKiB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy54eSA9IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkLnh5O1xyXG4gICAgICAgICAgICAgICAgICB2c091dHB1dC5wb3NpdGlvbk1DLnogPSBtb2RlbF9sb2NhbF9wb3NpdGlvbl90cmFuc2Zvcm1lZC56KyBtb2RlbE1DLnoqMC4wMDI7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9YDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVTaGFkZXIoZnVuc3RyLCBzdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RhdGljIGNyZWF0ZVBvbHlnb24odGhhdCkge1xyXG4gIC8vICAgICBsZXQgY29sb3IgPSAnI2ZmZmZmZidcclxuICAvLyAgICAgbGV0IGxpbmVjb2xvciA9ICcjMDAwMDAwJ1xyXG4gIC8vICAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gIC8vICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLmhlaWdodClcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICB0aGF0LnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgLy8gICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgLy8gICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAvLyAgICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgLy8gICAgICAgICBwb2x5bGluZToge1xyXG4gIC8vICAgICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoYXQucG9zaXRpb25zLCB0aGF0LnBvc2l0aW9uc1swXSwgdGhhdC5wb3NpdGlvbnNbMV1dLFxyXG4gIC8vICAgICAgICAgICAgIHdpZHRoOiAyLFxyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGxpbmVjb2xvciksXHJcbiAgLy8gICAgICAgICAgICAgZGVwdGhGYWlsTWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XXHJcbiAgLy8gICAgICAgICAgICAgfSksXHJcbiAgLy8gICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogZmFsc2UsXHJcbiAgLy8gICAgICAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgLy8gICAgICAgICB9LFxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAvLyB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0gPSBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmZpbHRlcigoYXR0cikgPT4ge1xyXG4gICAgICByZXR1cm4gYXR0ci5pZCAhPSB0aGlzLm9wdGlvbnMuaWQ7XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBsb2NhbFBvc2l0aW9uc0FyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXTtcclxuICAgICAgaWYgKGl0ZW0uc2hvdykge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGl0ZW0ucG9zaXRpb25zO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBpdGVtLmhlaWdodFxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uZmxhdEhlaWdodCA9IGhlaWdodCAtIHRoaXMuY2VudGVyODQuYWx0XHJcbiAgICAgICAgbGV0IGxvY2FsQ29vciA9IHRoaXMuY2FydGVzaWFuc1RvTG9jYWwoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KSk7XHJcbiAgICAgICAgbG9jYWxQb3NpdGlvbnNBcnIucHVzaChsb2NhbENvb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZnVuc3RyID0gdGhpcy5nZXRJc2luUG9seWdvbkZ1bihsb2NhbFBvc2l0aW9uc0Fycik7XHJcbiAgICBsZXQgc3RyID0gYGA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsUG9zaXRpb25zQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNvb3JzID0gbG9jYWxQb3NpdGlvbnNBcnJbaV07XHJcbiAgICAgIGNvbnN0IG4gPSBjb29ycy5sZW5ndGg7XHJcbiAgICAgIGxldCBpbnN0ciA9IGBgO1xyXG4gICAgICBjb29ycy5mb3JFYWNoKChjb29yZGluYXRlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGluc3RyICs9IGBwb2ludHNfJHtufVske2luZGV4fV0gPSB2ZWMyKCR7Y29vcmRpbmF0ZVswXX0sICR7Y29vcmRpbmF0ZVsxXX0pO1xcbmA7XHJcbiAgICAgIH0pXHJcbiAgICAgIHN0ciArPSBgXHJcbiAgICAgICAgICAgICAgJHtpbnN0cn1cclxuICAgICAgICAgICAgICBpZihpc1BvaW50SW5Qb2x5Z29uXyR7bn0ocG9zaXRpb24yRCkpe1xyXG4gICAgICAgICAgICAgICAgdmVjNCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gdmVjNCh0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uLngsIHRpbGVzZXRfbG9jYWxfcG9zaXRpb24ueSwgZ3JvdW5kX3ogKyAke0ZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uZmxhdEhlaWdodH0sIDEuMCk7XHJcbiAgICAgICAgICAgICAgICB2ZWM0IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gY3ptX2ludmVyc2VNb2RlbCAqIHVfdGlsZXNldF9sb2NhbFRvV29ybGRNYXRyaXggKiB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkO1xyXG4gICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy54eSA9IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkLnh5O1xyXG4gICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy56ID0gbW9kZWxfbG9jYWxfcG9zaXRpb25fdHJhbnNmb3JtZWQueisgbW9kZWxNQy56KjAuMDAyO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1gO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2hhZGVyKGZ1bnN0ciwgc3RyKTtcclxuICB9XHJcblxyXG4gIC8vIOagueaNruaVsOe7hOmVv+W6pu+8jOaehOW7uiDliKTmlq3ngrnmmK/lkKblnKjpnaLlhoUg55qE5Y6L5bmz5Ye95pWwXHJcbiAgZ2V0SXNpblBvbHlnb25GdW4ocG9seWdvbnMpIHtcclxuICAgIGxldCBwbWFwID0gcG9seWdvbnMubWFwKChwb2x5Z29uKSA9PiBwb2x5Z29uLmxlbmd0aCk7XHJcbiAgICBsZXQgdW5pcXVlQXJyYXkgPSB0aGlzLmdldFVuaXF1ZUFycmF5KHBtYXApO1xyXG4gICAgbGV0IHN0ciA9IGBgO1xyXG4gICAgdW5pcXVlQXJyYXkuZm9yRWFjaChsZW5ndGggPT4ge1xyXG4gICAgICBzdHIgKz0gYFxyXG4gICAgICAgICAgICAgIHZlYzIgcG9pbnRzXyR7bGVuZ3RofVske2xlbmd0aH1dO1xyXG4gICAgICAgICAgICAgIGJvb2wgaXNQb2ludEluUG9seWdvbl8ke2xlbmd0aH0odmVjMiBwb2ludCl7XHJcbiAgICAgICAgICAgICAgaW50IG5Dcm9zcyA9IDA7IC8vIOS6pOeCueaVsFxyXG4gICAgICAgICAgICAgIGNvbnN0IGludCBuID0gJHtsZW5ndGh9O1xyXG4gICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICB2ZWMyIHAxID0gcG9pbnRzXyR7bGVuZ3RofVtpXTtcclxuICAgICAgICAgICAgICAgICAgdmVjMiBwMiA9IHBvaW50c18ke2xlbmd0aH1baW50KG1vZChmbG9hdChpKzEpLGZsb2F0KG4pKSldO1xyXG4gICAgICAgICAgICAgICAgICBpZihwMVsxXSA9PSBwMlsxXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZihwb2ludFsxXSA8IG1pbihwMVsxXSwgcDJbMV0pKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmKHBvaW50WzFdID49IG1heChwMVsxXSwgcDJbMV0pKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSBwMVswXSArICgocG9pbnRbMV0gLSBwMVsxXSkgKiAocDJbMF0gLSBwMVswXSkpIC8gKHAyWzFdIC0gcDFbMV0pO1xyXG4gICAgICAgICAgICAgICAgICBpZih4ID4gcG9pbnRbMF0pe1xyXG4gICAgICAgICAgICAgICAgICAgbkNyb3NzKys7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGludChtb2QoZmxvYXQobkNyb3NzKSwgZmxvYXQoMikpKSA9PSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIGBcclxuICAgIH0pXHJcbiAgICByZXR1cm4gc3RyXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTaGFkZXIodnR4MSwgdnR4Mikge1xyXG4gICAgbGV0IGZsYXRDdXN0b21TaGFkZXIgPSBuZXcgQ2VzaXVtLkN1c3RvbVNoYWRlcih7XHJcbiAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgdV90aWxlc2V0X2xvY2FsVG9Xb3JsZE1hdHJpeDoge1xyXG4gICAgICAgICAgdHlwZTogQ2VzaXVtLlVuaWZvcm1UeXBlLk1BVDQsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5tYXRyaXgsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1X3RpbGVzZXRfd29ybGRUb0xvY2FsTWF0cml4OiB7XHJcbiAgICAgICAgICB0eXBlOiBDZXNpdW0uVW5pZm9ybVR5cGUuTUFUNCxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmxvY2FsTWF0cml4LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdV9mbGF0SGVpZ2h0OiB7XHJcbiAgICAgICAgICB0eXBlOiBDZXNpdW0uVW5pZm9ybVR5cGUuRkxPQVQsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5mbGF0SGVpZ2h0LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHZlcnRleFNoYWRlclRleHQ6IGBcclxuICAgICAgICAgIC8vIOaJgOaciWlzUG9pbnRJblBvbHlnb27lh73mlbBcclxuICAgICAgICAgICR7dnR4MX1cclxuICAgICAgICAgIHZvaWQgdmVydGV4TWFpbihWZXJ0ZXhJbnB1dCB2c0lucHV0LCBpbm91dCBjem1fbW9kZWxWZXJ0ZXhPdXRwdXQgdnNPdXRwdXQpe1xyXG4gICAgICAgICAgICAgIHZlYzMgbW9kZWxNQyA9IHZzSW5wdXQuYXR0cmlidXRlcy5wb3NpdGlvbk1DO1xyXG4gICAgICAgICAgICAgIHZlYzQgbW9kZWxfbG9jYWxfcG9zaXRpb24gPSB2ZWM0KG1vZGVsTUMueCwgbW9kZWxNQy55LCBtb2RlbE1DLnosIDEuMCk7XHJcbiAgICAgICAgICAgICAgdmVjNCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uID0gdV90aWxlc2V0X3dvcmxkVG9Mb2NhbE1hdHJpeCAqIGN6bV9tb2RlbCAqIG1vZGVsX2xvY2FsX3Bvc2l0aW9uO1xyXG4gICAgICAgICAgICAgIHZlYzIgcG9zaXRpb24yRCA9IHZlYzIodGlsZXNldF9sb2NhbF9wb3NpdGlvbi54LHRpbGVzZXRfbG9jYWxfcG9zaXRpb24ueSk7XHJcbiAgICAgICAgICAgICAgZmxvYXQgZ3JvdW5kX3ogPSAwLjA7XHJcbiAgICAgICAgICAgICAgLy8g5aSa5Liq5aSa6L655b2i5Yy65Z+fXHJcbiAgICAgICAgICAgICAgJHt2dHgyfVxyXG4gICAgICAgICAgfWAsXHJcbiAgICB9KTtcclxuICAgIHRoaXMudGlsZXNldC5jdXN0b21TaGFkZXIgPSBmbGF0Q3VzdG9tU2hhZGVyO1xyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnJlcXVlc3RSZW5kZXIoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvLyDmlbDnu4Tljrvph43vvIzkuI3og73lpITnkIbltYzlpZfnmoTmlbDnu4RcclxuICBnZXRVbmlxdWVBcnJheSA9IChhcnIpID0+IHtcclxuICAgIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtLCBpbmRleCwgYXJyKSB7XHJcbiAgICAgIC8v5b2T5YmN5YWD57Sg77yM5Zyo5Y6f5aeL5pWw57uE5Lit55qE56ys5LiA5Liq57Si5byVPT3lvZPliY3ntKLlvJXlgLzvvIzlkKbliJnov5Tlm57lvZPliY3lhYPntKBcclxuICAgICAgcmV0dXJuIGFyci5pbmRleE9mKGl0ZW0sIDApID09PSBpbmRleDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIOS4lueVjOWdkOagh+i9rOaVsOe7hOWxgOmDqOWdkOagh1xyXG4gIGNhcnRlc2lhbnNUb0xvY2FsKHBvc2l0aW9ucykge1xyXG4gICAgbGV0IGFyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gcG9zaXRpb25zW2ldO1xyXG4gICAgICBsZXQgbG9jYWxwID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRoaXMubG9jYWxNYXRyaXgsXHJcbiAgICAgICAgcG9zaXRpb24uY2xvbmUoKSxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApXHJcbiAgICAgIGFyci5wdXNoKFtsb2NhbHAueCwgbG9jYWxwLnldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcnI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICog6aOe5YiwXHJcbiovXHJcbiAgYXN5bmMgZmx5VG8oKSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMubGluZSAmJiB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCB0aGlzLmNlbnRlcjg0LmFsdClcclxuICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgfVxyXG4gICAgICBsZXQgQm91bmRpbmdTcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKHBvc2l0aW9uQXJyYXkpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGsudmlld2VyLl9jb250YWluZXIsIHtcclxuICAgICAgLy8gICAgIHRpdGxlOiAn5Y6L5bmz6Z2i5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAvLyAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgICB9LFxyXG4gICAgICAvLyAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAvLyAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgICAgLy8g5YaF5a656YOo5YiGXHJcbiAgICAgIC8vIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAvLyAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgLy8gICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwid2lkdGg6IDU2cHg7ZmxleDogMCAwIDU2cHg7XCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW5wdXQtbmFtZVwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIC8vICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cIndpZHRoOiA1NnB4O2ZsZXg6IDAgMCA1NnB4O1wiPuWOi+W5s+mrmOW6pjwvc3Bhbj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGZsYXQtaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgIC8vICAgICAgICAgPC9kaXY+XHJcbiAgICAgIC8vICAgICA8L2Rpdj5cclxuICAgICAgLy8gYFxyXG4gICAgICAvLyB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmxhdFBsYW5lJylbMF1cclxuICAgICAgbGV0IG5hbWVfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1uYW1lJylbMF1cclxuICAgICAgbmFtZV9lbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMubmFtZVxyXG4gICAgICBuYW1lX2VsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lX2VsbS52YWx1ZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGhlaWdodF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZsYXQtaGVpZ2h0JylbMF1cclxuICAgICAgaGVpZ2h0X2VsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgICAgaGVpZ2h0X2VsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcihoZWlnaHRfZWxtLnZhbHVlKVxyXG4gICAgICAgIHRoaXMuYWRkRmxhdCgpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyBsZXQgY29uZmlybUVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAvLyBjb25maXJtRWxtLmNsYXNzTmFtZSA9ICdidG4nXHJcbiAgICAgIC8vIGNvbmZpcm1FbG0uaW5uZXJIVE1MID0gJ+ehruiupCdcclxuICAgICAgLy8gdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChjb25maXJtRWxtKVxyXG4gICAgICAvLyBjb25maXJtRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAvLyAgIGlmICghdGhpcy5vcHRpb25zLm5hbWUpIHtcclxuICAgICAgLy8gICAgIHRoaXMub3B0aW9ucy5uYW1lID0gJ+WOi+W5s+mdoidcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAvLyAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcHRpb25zKVxyXG4gICAgICAvLyB9KVxyXG5cclxuICAgICAgLy8gbGV0IGZsYXRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgLy8gZmxhdEVsbS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICAvLyBmbGF0RWxtLmlubmVySFRNTCA9ICc8c3ZnIGNsYXNzPVwiaWNvbi1lZGl0XCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tZWRpdFwiPjwvdXNlPjwvc3ZnPuS6jOasoee8lui+kSdcclxuICAgICAgLy8gZmxhdEVsbS5zdHlsZS53aWR0aCA9ICdhdXRvJ1xyXG4gICAgICAvLyBmbGF0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgICAvLyBmbGF0RWxtLnN0eWxlLmxlZnQgPSAnMTBweCdcclxuICAgICAgLy8gdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChmbGF0RWxtKVxyXG4gICAgICAvLyBmbGF0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAvLyAgICAgY29uc29sZS5sb2coJ+S6jOasoee8lui+kScpXHJcbiAgICAgIC8vIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3VyZSgpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLm5hbWUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm5hbWUgPSAn5Y6L5bmz6Z2iJ1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAvLyB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgdGhpcy5hZGRGbGF0KClcclxuICB9XHJcblxyXG4gIGZsYXRFZGl0KHN0YXRlKSB7XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdKVxyXG4gICAgICB9XHJcbiAgICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsYXQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBb1FBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBelFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFXQTtBQWxCQTtBQUFBO0FBQUE7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFqQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF5QkE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFZQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF4RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Flat/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Profile/_element.js": -/*!**********************************************!*\ - !*** ./src/Obj/Analysis/Profile/_element.js ***! - \**********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvX2VsZW1lbnQuanM/NWJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1lY2hhcnRzXCI+PC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Profile/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Profile/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Analysis/Profile/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Draw_draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Draw/draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/Profile/_element.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\nvar Profile = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor 剖面分析\r\n * @param sdk\r\n **/\n function Profile(sdk) {\n var _this;\n var _Dialog = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Profile);\n window.addEventListener(\"resize\", function () {\n _this.echartsObject && _this.echartsObject.resize();\n });\n _this = _callSuper(this, Profile, [sdk]);\n _this.viewer = sdk.viewer;\n _this.Dialog = _Dialog;\n YJ.Analysis.AnalysesResults.push(_this);\n Profile.create(_this);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Profile, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Profile, [{\n key: \"reDraw\",\n value: function reDraw() {\n Profile.create(this);\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n\n /**\r\n * 线段插值点\r\n */\n }, {\n key: \"formatter\",\n value: function formatter(xy, tipData) {\n if (this.polyline) {\n var pointOption = {\n show: true,\n pixelSize: 10,\n color: Cesium.Color.GREEN,\n outlineColor: Cesium.Color.SKYBLUE,\n outlineWidth: 3,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n };\n if (!this.tipEntity) {\n this.tipEntity = this.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),\n point: pointOption\n });\n } else {\n this.tipEntity.position = Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1]));\n }\n }\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.end();\n this._currentId = null;\n this.entityHasCreated = false;\n this.polyline && this.viewer.entities.remove(this.polyline);\n this.tipEntity && this.viewer.entities.remove(this.tipEntity);\n this.polyline = null;\n this.tipEntity = null;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clean();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var _this2 = this;\n this._currentId = Cesium.createGuid();\n var id = this._currentId;\n that.clean();\n if (YJ.Measure.GetMeasureStatus()) {\n console.warn('上一次测量未结束');\n } else {\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('左键点击确定起点位置,右键点击取消绘制!', that.sdk);\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](that.sdk);\n that.positions = [];\n that.points_ids = []; //存放左键点击时临时添加的point的id\n\n var cache_positions = [];\n var car = undefined;\n that.event.mouse_left(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(movement, cartesian) {\n var positions;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n try {\n that.tip.set_text('左键点击确定终点位置,右键点击取消绘制!');\n if (!that.entityHasCreated) {\n Profile.create_polyline(that);\n }\n cache_positions.push(cartesian);\n that.points_ids.push(that.create_point(cartesian));\n if (cache_positions.length == 2) {\n that.end();\n positions = [];\n cache_positions.forEach(function (item) {\n positions.push(that.cartesian3Towgs84(item, that.viewer));\n });\n Profile.interPoints(that).then(function (points) {\n if (_this2._currentId && _this2._currentId === id) {\n that.clickCallBack(points);\n }\n });\n }\n } catch (error) {\n console.log(error);\n }\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n that.event.mouse_right(function (movement, cartesian) {\n var positions = [];\n cache_positions = [];\n that.clean();\n });\n that.event.mouse_move(function (movement, cartesian) {\n that.positions = cache_positions.concat(cartesian);\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions = [];\n that.end();\n }\n });\n });\n }\n }\n }, {\n key: \"create_polyline\",\n value: function create_polyline(that) {\n that.entityHasCreated = true;\n var id = that.randomString();\n that.polyline = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n width: 5,\n material: Cesium.Color.fromCssColorString(that.color),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"interPoints\",\n value: (function () {\n var _interPoints = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee2(that) {\n var viewer, positions, positionsCartographic, positions84, index, element, cartographic, pos84, positions_Inter, height, i, line, totalDistance, m_Cartographic0, m_Cartographic1, a, b, length, distance, j, start, stop, sliced, lng, lat, _height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n viewer = that.viewer;\n positions = that.positions;\n positionsCartographic = [];\n positions84 = [];\n for (index = 0; index < positions.length; index++) {\n element = positions[index];\n cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(element);\n positionsCartographic.push(cartographic);\n pos84 = that.cartesian3Towgs84(element, viewer);\n positions84.push(pos84);\n }\n positions_Inter = [];\n _context2.next = 8;\n return that.getClampToHeight({\n lng: positions84[0].lng,\n lat: positions84[0].lat\n });\n case 8:\n height = _context2.sent;\n positions_Inter.push({\n position: {\n lng: positions84[0].lng,\n lat: positions84[0].lat,\n height: height\n },\n distance: 0\n });\n i = 0;\n case 11:\n if (!(i < positionsCartographic.length - 1)) {\n _context2.next = 42;\n break;\n }\n line = turf.lineString([[positions84[i].lng, positions84[i].lat], [positions84[i + 1].lng, positions84[i + 1].lat]]);\n totalDistance = turf.length(line, {\n units: 'kilometers'\n });\n m_Cartographic0 = positionsCartographic[i];\n m_Cartographic1 = positionsCartographic[i + 1];\n a = Math.abs(m_Cartographic0.longitude - m_Cartographic1.longitude) * 10000000;\n b = Math.abs(m_Cartographic0.latitude - m_Cartographic1.latitude) * 10000000; //等距采样\n if (a > b) b = a;\n length = parseInt(b / 2);\n if (length > 150) length = 150;\n if (length < 2) length = 2;\n distance = totalDistance / (length - 1);\n j = 0;\n case 24:\n if (!(j < length - 1)) {\n _context2.next = 39;\n break;\n }\n start = j * distance;\n stop = (j + 1) * distance;\n _context2.next = 29;\n return turf.lineSliceAlong(line, start, stop, {\n units: 'kilometers'\n });\n case 29:\n sliced = _context2.sent;\n lng = sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1][0];\n lat = sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1][1];\n _context2.next = 34;\n return that.getClampToHeight({\n lng: lng,\n lat: lat\n });\n case 34:\n _height = _context2.sent;\n positions_Inter.push({\n position: {\n lng: lng,\n lat: lat,\n height: _height\n },\n distance: stop * 1000\n });\n case 36:\n j++;\n _context2.next = 24;\n break;\n case 39:\n i++;\n _context2.next = 11;\n break;\n case 42:\n return _context2.abrupt(\"return\", positions_Inter);\n case 43:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function interPoints(_x3) {\n return _interPoints.apply(this, arguments);\n }\n return interPoints;\n }())\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee3(that, points) {\n var contentElm, resetBtn;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context3.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_10__[\"default\"](that.sdk.viewer._container, {\n title: '剖面分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.clean();\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n }\n });\n case 3:\n that._DialogObject = _context3.sent;\n _context3.next = 6;\n return that._DialogObject.init();\n case 6:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' profile';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n resetBtn = document.createElement('button');\n resetBtn.innerHTML = '重新绘制';\n resetBtn.style.width = 'auto';\n resetBtn.addEventListener('click', function () {\n Profile.create(that);\n Profile.initEcharts(that);\n });\n that._DialogObject.footAppChild(resetBtn);\n Profile.initEcharts(that, points);\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function edit(_x4, _x5) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"initEcharts\",\n value: function initEcharts(that, points) {\n var datas = [],\n coords = [];\n var pointsData = points;\n var option;\n if (pointsData) {\n var maxDistance = pointsData[pointsData.length - 1].distance;\n var xAixMax = Math.ceil(maxDistance);\n for (var index = 0; index < pointsData.length; index++) {\n var element = pointsData[index];\n if (element.position.height === void 0) {\n continue;\n }\n var curData = [element.distance.toFixed(2), element.position.height.toFixed(2)];\n datas.push(curData);\n var curCoords = [element.position.lng, element.position.lat];\n coords.push(curCoords);\n }\n var pointOption = {\n show: true,\n pixelSize: 10,\n color: Cesium.Color.GREEN,\n outlineColor: Cesium.Color.SKYBLUE,\n outlineWidth: 3,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n };\n var ele = document.getElementsByClassName(\"profile-echarts\")[0];\n that.echartsObject = echarts.init(ele);\n option = {\n tooltip: {\n trigger: \"axis\",\n textStyle: {\n align: \"left\"\n },\n formatter: function formatter(params) {\n var xy = coords[params[0].dataIndex];\n var tipData = params[0][\"data\"];\n if (!that.tipEntity) {\n that.tipEntity = that.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),\n point: pointOption\n });\n } else {\n that.tipEntity.position = Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1]));\n }\n return \"距离:\" + tipData[0] + \"m
\" + \"高度:\" + tipData[1] + \"m
\" + \"坐标:\" + xy[0].toFixed(5) + \",\" + xy[1].toFixed(5);\n }\n },\n grid: {\n top: 40,\n bottom: 20,\n left: 55,\n right: 30\n },\n calculable: true,\n xAxis: [{\n type: \"value\",\n max: xAixMax,\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n yAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n series: [{\n name: \"ProfileLine\",\n type: \"line\",\n data: datas,\n smooth: true,\n itemStyle: {\n normal: {\n color: \"#39FDA1\"\n }\n },\n lineStyle: {\n normal: {\n width: 3,\n color: {\n type: \"linear\",\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n colorStops: [{\n offset: 0,\n color: \"rgba(85,254,139,1)\" // 0% 处的颜色\n }, {\n offset: 0.5,\n color: \"rgba(7,252,202,1)\" // 100% 处的颜色\n }, {\n offset: 1,\n color: \"rgba(14,245,210,1)\" // 100% 处的颜色\n }],\n globalCoord: false // 缺省为 false\n }\n }\n },\n areaStyle: {\n normal: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n offset: 0,\n color: \"rgba(102,153,255,1)\"\n }, {\n offset: 0.8,\n color: \"rgba(102,153,255,0.08)\"\n }, {\n offset: 1,\n color: \"rgba(9,173,208,0.15)\"\n }], false),\n shadowColor: \"rgba(14,245,210,1)\",\n //阴影颜色\n shadowBlur: 20\n }\n },\n markPoint: {\n data: [{\n type: \"max\",\n name: \"最高点\",\n label: {\n color: '#ffffff'\n }\n }, {\n type: \"min\",\n name: \"最低点\",\n label: {\n color: '#ffffff'\n }\n }]\n }\n }]\n };\n } else {\n var _ele = document.getElementsByClassName(\"profile-echarts\")[0];\n that.echartsObject = echarts.init(_ele);\n option = {\n tooltip: {\n trigger: \"axis\",\n textStyle: {\n align: \"left\"\n }\n },\n grid: {\n top: 40,\n bottom: 20,\n left: 55,\n right: 30\n },\n calculable: true,\n xAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n yAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n series: [{\n name: \"ProfileLine\",\n type: \"line\",\n data: [],\n smooth: true,\n itemStyle: {\n normal: {\n color: \"#39FDA1\"\n }\n },\n lineStyle: {\n normal: {\n width: 3,\n color: {\n type: \"linear\",\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n colorStops: [{\n offset: 0,\n color: \"rgba(85,254,139,1)\" // 0% 处的颜色\n }, {\n offset: 0.5,\n color: \"rgba(7,252,202,1)\" // 100% 处的颜色\n }, {\n offset: 1,\n color: \"rgba(14,245,210,1)\" // 100% 处的颜色\n }],\n globalCoord: false // 缺省为 false\n }\n }\n },\n areaStyle: {\n normal: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n offset: 0,\n color: \"rgba(102,153,255,1)\"\n }, {\n offset: 0.8,\n color: \"rgba(102,153,255,0.08)\"\n }, {\n offset: 1,\n color: \"rgba(9,173,208,0.15)\"\n }], false),\n shadowColor: \"rgba(14,245,210,1)\",\n //阴影颜色\n shadowBlur: 20\n }\n },\n markPoint: {\n data: [{\n type: \"max\",\n name: \"最高点\",\n label: {\n color: '#ffffff'\n }\n }, {\n type: \"min\",\n name: \"最低点\",\n label: {\n color: '#ffffff'\n }\n }]\n }\n }]\n };\n }\n that.echartsObject.setOption(option);\n }\n }]);\n}(_Draw_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]); // const Profile = function (viewer, callback) {\n// if (!viewer) throw new Error(\"no viewer object!\");\n// if (window.profileEntities && window.profileEntities.length > 0) {\n// window.profileEntities.forEach((element) => {\n// window.viewer.entities.remove(element);\n// });\n// }\n// window.profileEntities = [];\n// CreatePolyline(\n// viewer,\n// window.profileEntities,\n// { color: Cesium.Color.RED, width: 2 },\n// function (e) {\n// e.polyline.clampToGround = true;\n// console.log(e.pottingPoint);\n// let points = interPoints(viewer, e.pottingPoint, [e]);\n// console.log(points);\n// if (typeof callback == \"function\") callback(points);\n// }\n// );\n// };\n// /**\n// * 线段插值点\n// * @param {*} viewer\n// * @param {*} positions 线段节点集合\n// * @param {*} objectsToExclude 高度采集时排除的对象集合\n// * @returns 经纬度点集合,包含距离值\n// */\n// function interPoints(viewer, positions, objectsToExclude) {\n// let positionsCartographic = [];\n// let terrainSamplePositions = [];\n// for (let index = 0; index < positions.length; index++) {\n// const element = positions[index];\n// let ellipsoid = viewer.scene.globe.ellipsoid;\n// let cartographic = ellipsoid.cartesianToCartographic(element);\n// positionsCartographic.push(cartographic);\n// }\n// for (let i = 0; i < positionsCartographic.length; i++) {\n// const m_Cartographic0 = positionsCartographic[i];\n// const m_Cartographic1 = positionsCartographic[i + 1];\n// if (m_Cartographic1) {\n// let a =\n// Math.abs(m_Cartographic0.longitude - m_Cartographic1.longitude) *\n// 10000000;\n// let b =\n// Math.abs(m_Cartographic0.latitude - m_Cartographic1.latitude) *\n// 10000000;\n// //等距采样\n// if (a > b) b = a;\n// let length = parseInt(b / 2);\n// if (length > 1000) length = 1000;\n// if (length < 2) length = 2;\n// for (let j = 0; j < length; j++) {\n// terrainSamplePositions.push(\n// new Cesium.Cartographic(\n// Cesium.Math.lerp(\n// m_Cartographic0.longitude,\n// m_Cartographic1.longitude,\n// j / (length - 1)\n// ),\n// Cesium.Math.lerp(\n// m_Cartographic0.latitude,\n// m_Cartographic1.latitude,\n// j / (length - 1)\n// )\n// )\n// );\n// }\n// terrainSamplePositions.pop();\n// } else {\n// terrainSamplePositions.push(m_Cartographic0);\n// }\n// }\n// let positions_Inter = [];\n// let distance = 0;\n// for (let n = 0; n < terrainSamplePositions.length; n++) {\n// //地理坐标(弧度)转经纬度坐标\n// let curCartographic = terrainSamplePositions[n];\n// let height = viewer.scene.sampleHeight(curCartographic, objectsToExclude);\n// const lon = (curCartographic.longitude / Math.PI) * 180;\n// const lat = (curCartographic.latitude / Math.PI) * 180;\n// let point = Cesium.Cartesian3.fromDegrees(lon, lat, height);\n// let preCartographic = terrainSamplePositions[n - 1];\n// if (preCartographic) {\n// const lon1 = (preCartographic.longitude / Math.PI) * 180;\n// const lat1 = (preCartographic.latitude / Math.PI) * 180;\n// let point1 = Cesium.Cartesian3.fromDegrees(lon1, lat1, height);\n// let curDis = Cesium.Cartesian3.distance(point1, point);\n// distance += curDis;\n// }\n// positions_Inter.push({\n// position: { lon: lon, lat: lat, height: height },\n// distance: distance,\n// });\n// }\n// return positions_Inter;\n// }\n/* harmony default export */ __webpack_exports__[\"default\"] = (Profile);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvaW5kZXguanM/NDhhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRHJhdyBmcm9tIFwiLi4vLi4vLi4vRHJhdy9kcmF3XCI7XHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gXCIuLi8uLi8uLi9FdmVudFwiO1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSBcIi4uLy4uLy4uL01vdXNlVGlwXCI7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5jbGFzcyBQcm9maWxlIGV4dGVuZHMgRHJhdyB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIOWJlumdouWIhuaekFxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAqKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmVjaGFydHNPYmplY3QgJiYgdGhpcy5lY2hhcnRzT2JqZWN0LnJlc2l6ZSgpO1xyXG4gICAgfSk7XHJcbiAgICBzdXBlcihzZGspXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXI7XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICBQcm9maWxlLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRJZCA9IENlc2l1bS5jcmVhdGVHdWlkKClcclxuICAgIGxldCBpZCA9IHRoaXMuX2N1cnJlbnRJZFxyXG4gICAgdGhhdC5jbGVhbigpXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc29sZS53YXJuKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCflt6bplK7ngrnlh7vnoa7lrprotbfngrnkvY3nva7vvIzlj7PplK7ngrnlh7vlj5bmtojnu5jliLbvvIEnLCB0aGF0LnNkaylcclxuICAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGF0LnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoYXQucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG5cclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBjYXIgPSB1bmRlZmluZWRcclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9sZWZ0KGFzeW5jIChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoYXQudGlwLnNldF90ZXh0KCflt6bplK7ngrnlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlj7PplK7ngrnlh7vlj5bmtojnu5jliLbvvIEnKVxyXG4gICAgICAgICAgaWYgKCF0aGF0LmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgUHJvZmlsZS5jcmVhdGVfcG9seWxpbmUodGhhdClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIHRoYXQucG9pbnRzX2lkcy5wdXNoKHRoYXQuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwpKVxyXG4gICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICB0aGF0LmVuZCgpXHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhhdC52aWV3ZXIpKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBQcm9maWxlLmludGVyUG9pbnRzKHRoYXQpLnRoZW4oKHBvaW50cykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SWQgJiYgdGhpcy5fY3VycmVudElkID09PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5jbGlja0NhbGxCYWNrKHBvaW50cylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIHRoYXQuY2xlYW4oKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGF0LnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIHRoYXQudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIHRoYXQuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICByZURyYXcoKSB7XHJcbiAgICBQcm9maWxlLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlsaW5lKHRoYXQpIHtcclxuICAgIHRoYXQuZW50aXR5SGFzQ3JlYXRlZCA9IHRydWVcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQucG9seWxpbmUgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICB3aWR0aDogNSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG4gIGdldCBvbkVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWNrQ2FsbEJhY2tcclxuICB9XHJcbiAgc2V0IG9uRW5kKHZhbCkge1xyXG4gICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3ZhbDonLCB2YWwsICfkuI3mmK/kuIDkuKpmdW5jdGlvbicpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsaWNrQ2FsbEJhY2sgPSB2YWxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiDnur/mrrXmj5LlgLzngrlcclxuICovXHJcbiAgc3RhdGljIGFzeW5jIGludGVyUG9pbnRzKHRoYXQpIHtcclxuICAgIGxldCB2aWV3ZXIgPSB0aGF0LnZpZXdlclxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQucG9zaXRpb25zXHJcbiAgICBsZXQgcG9zaXRpb25zQ2FydG9ncmFwaGljID0gW11cclxuICAgIGxldCBwb3NpdGlvbnM4NCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBvc2l0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHBvc2l0aW9uc1tpbmRleF07XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGVsZW1lbnQpO1xyXG4gICAgICBwb3NpdGlvbnNDYXJ0b2dyYXBoaWMucHVzaChjYXJ0b2dyYXBoaWMpO1xyXG4gICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGVsZW1lbnQsIHZpZXdlcilcclxuICAgICAgcG9zaXRpb25zODQucHVzaChwb3M4NCk7XHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb25zX0ludGVyID0gW107XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiBwb3NpdGlvbnM4NFswXS5sbmcsIGxhdDogcG9zaXRpb25zODRbMF0ubGF0IH0pO1xyXG4gICAgcG9zaXRpb25zX0ludGVyLnB1c2goe1xyXG4gICAgICBwb3NpdGlvbjogeyBsbmc6IHBvc2l0aW9uczg0WzBdLmxuZywgbGF0OiBwb3NpdGlvbnM4NFswXS5sYXQsIGhlaWdodDogaGVpZ2h0IH0sXHJcbiAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgfSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0NhcnRvZ3JhcGhpYy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcoW1twb3NpdGlvbnM4NFtpXS5sbmcsIHBvc2l0aW9uczg0W2ldLmxhdF0sIFtwb3NpdGlvbnM4NFtpICsgMV0ubG5nLCBwb3NpdGlvbnM4NFtpICsgMV0ubGF0XV0pO1xyXG4gICAgICBsZXQgdG90YWxEaXN0YW5jZSA9IHR1cmYubGVuZ3RoKGxpbmUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuXHJcbiAgICAgIGNvbnN0IG1fQ2FydG9ncmFwaGljMCA9IHBvc2l0aW9uc0NhcnRvZ3JhcGhpY1tpXTtcclxuICAgICAgY29uc3QgbV9DYXJ0b2dyYXBoaWMxID0gcG9zaXRpb25zQ2FydG9ncmFwaGljW2kgKyAxXTtcclxuICAgICAgbGV0IGEgPVxyXG4gICAgICAgIE1hdGguYWJzKG1fQ2FydG9ncmFwaGljMC5sb25naXR1ZGUgLSBtX0NhcnRvZ3JhcGhpYzEubG9uZ2l0dWRlKSAqXHJcbiAgICAgICAgMTAwMDAwMDA7XHJcbiAgICAgIGxldCBiID1cclxuICAgICAgICBNYXRoLmFicyhtX0NhcnRvZ3JhcGhpYzAubGF0aXR1ZGUgLSBtX0NhcnRvZ3JhcGhpYzEubGF0aXR1ZGUpICpcclxuICAgICAgICAxMDAwMDAwMDtcclxuICAgICAgLy/nrYnot53ph4fmoLdcclxuICAgICAgaWYgKGEgPiBiKSBiID0gYTtcclxuICAgICAgbGV0IGxlbmd0aCA9IHBhcnNlSW50KGIgLyAyKTtcclxuICAgICAgaWYgKGxlbmd0aCA+IDE1MCkgbGVuZ3RoID0gMTUwO1xyXG4gICAgICBpZiAobGVuZ3RoIDwgMikgbGVuZ3RoID0gMjtcclxuICAgICAgbGV0IGRpc3RhbmNlID0gdG90YWxEaXN0YW5jZSAvIChsZW5ndGggLSAxKVxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbmd0aCAtIDE7IGorKykge1xyXG4gICAgICAgIGxldCBzdGFydCA9IGogKiBkaXN0YW5jZVxyXG4gICAgICAgIGxldCBzdG9wID0gKGogKyAxKSAqIGRpc3RhbmNlXHJcbiAgICAgICAgbGV0IHNsaWNlZCA9IGF3YWl0IHR1cmYubGluZVNsaWNlQWxvbmcobGluZSwgc3RhcnQsIHN0b3AsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBsZXQgbG5nID0gc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3NsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXVswXVxyXG4gICAgICAgIGxldCBsYXQgPSBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdWzFdXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogbG5nLCBsYXQ6IGxhdCB9KTtcclxuICAgICAgICBwb3NpdGlvbnNfSW50ZXIucHVzaCh7XHJcbiAgICAgICAgICBwb3NpdGlvbjogeyBsbmc6IGxuZywgbGF0OiBsYXQsIGhlaWdodDogaGVpZ2h0IH0sXHJcbiAgICAgICAgICBkaXN0YW5jZTogc3RvcCAqIDEwMDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnNfSW50ZXJcclxuICB9XHJcbiAgZm9ybWF0dGVyKHh5LCB0aXBEYXRhKSB7XHJcbiAgICBpZiAodGhpcy5wb2x5bGluZSkge1xyXG4gICAgICBjb25zdCBwb2ludE9wdGlvbiA9IHtcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIHBpeGVsU2l6ZTogMTAsXHJcbiAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5HUkVFTixcclxuICAgICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5TS1lCTFVFLFxyXG4gICAgICAgIG91dGxpbmVXaWR0aDogMyxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy50aXBFbnRpdHkpIHtcclxuICAgICAgICB0aGlzLnRpcEVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHh5WzBdLCB4eVsxXSwgTnVtYmVyKHRpcERhdGFbMV0pKSxcclxuICAgICAgICAgIHBvaW50OiBwb2ludE9wdGlvblxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50aXBFbnRpdHkucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIHh5WzBdLFxyXG4gICAgICAgICAgeHlbMV0sXHJcbiAgICAgICAgICBOdW1iZXIodGlwRGF0YVsxXSlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgZWRpdCh0aGF0LCBwb2ludHMpIHtcclxuICAgIGlmICh0aGF0Ll9EaWFsb2dPYmplY3QgJiYgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC5zZGsudmlld2VyLl9jb250YWluZXIsIHtcclxuICAgICAgdGl0bGU6ICfliZbpnaLliIbmnpAnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGF0LmNsZWFuKClcclxuICAgICAgICB0aGF0LkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIGF3YWl0IHRoYXQuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgcHJvZmlsZSdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgbGV0IHJlc2V0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICByZXNldEJ0bi5pbm5lckhUTUwgPSAnPHN2ZyBjbGFzcz1cImljb24tZWRpdFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWVkaXRcIj48L3VzZT48L3N2Zz7ph43mlrDnu5jliLYnXHJcbiAgICByZXNldEJ0bi5zdHlsZS53aWR0aCA9ICdhdXRvJ1xyXG4gICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIFByb2ZpbGUuY3JlYXRlKHRoYXQpXHJcbiAgICAgIFByb2ZpbGUuaW5pdEVjaGFydHModGhhdClcclxuICAgIH0pXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKHJlc2V0QnRuKVxyXG4gICAgUHJvZmlsZS5pbml0RWNoYXJ0cyh0aGF0LCBwb2ludHMpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaW5pdEVjaGFydHModGhhdCwgcG9pbnRzKSB7XHJcbiAgICBsZXQgZGF0YXMgPSBbXSxcclxuICAgICAgY29vcmRzID0gW107XHJcbiAgICBjb25zdCBwb2ludHNEYXRhID0gcG9pbnRzO1xyXG5cclxuICAgIGxldCBvcHRpb25cclxuICAgIGlmIChwb2ludHNEYXRhKSB7XHJcbiAgICAgIGNvbnN0IG1heERpc3RhbmNlID0gcG9pbnRzRGF0YVtwb2ludHNEYXRhLmxlbmd0aCAtIDFdLmRpc3RhbmNlO1xyXG4gICAgICBsZXQgeEFpeE1heCA9IE1hdGguY2VpbChtYXhEaXN0YW5jZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb2ludHNEYXRhLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb2ludHNEYXRhW2luZGV4XTtcclxuICAgICAgICBpZiAoZWxlbWVudC5wb3NpdGlvbi5oZWlnaHQgPT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VyRGF0YSA9IFtcclxuICAgICAgICAgIGVsZW1lbnQuZGlzdGFuY2UudG9GaXhlZCgyKSxcclxuICAgICAgICAgIGVsZW1lbnQucG9zaXRpb24uaGVpZ2h0LnRvRml4ZWQoMiksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBkYXRhcy5wdXNoKGN1ckRhdGEpO1xyXG4gICAgICAgIGNvbnN0IGN1ckNvb3JkcyA9IFtlbGVtZW50LnBvc2l0aW9uLmxuZywgZWxlbWVudC5wb3NpdGlvbi5sYXRdO1xyXG4gICAgICAgIGNvb3Jkcy5wdXNoKGN1ckNvb3Jkcyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcG9pbnRPcHRpb24gPSB7XHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBwaXhlbFNpemU6IDEwLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuR1JFRU4sXHJcbiAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuU0tZQkxVRSxcclxuICAgICAgICBvdXRsaW5lV2lkdGg6IDMsXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInByb2ZpbGUtZWNoYXJ0c1wiKVswXTtcclxuICAgICAgdGhhdC5lY2hhcnRzT2JqZWN0ID0gZWNoYXJ0cy5pbml0KGVsZSk7XHJcbiAgICAgIG9wdGlvbiA9IHtcclxuICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICB0cmlnZ2VyOiBcImF4aXNcIixcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBhbGlnbjogXCJsZWZ0XCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZm9ybWF0dGVyKHBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCB4eSA9IGNvb3Jkc1twYXJhbXNbMF0uZGF0YUluZGV4XTtcclxuICAgICAgICAgICAgY29uc3QgdGlwRGF0YSA9IHBhcmFtc1swXVtcImRhdGFcIl07XHJcbiAgICAgICAgICAgIGlmICghdGhhdC50aXBFbnRpdHkpIHtcclxuICAgICAgICAgICAgICB0aGF0LnRpcEVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgICB4eVswXSxcclxuICAgICAgICAgICAgICAgICAgeHlbMV0sXHJcbiAgICAgICAgICAgICAgICAgIE51bWJlcih0aXBEYXRhWzFdKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHBvaW50OiBwb2ludE9wdGlvbixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGF0LnRpcEVudGl0eS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgeHlbMF0sXHJcbiAgICAgICAgICAgICAgICB4eVsxXSxcclxuICAgICAgICAgICAgICAgIE51bWJlcih0aXBEYXRhWzFdKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBcIui3neemu++8mlwiICtcclxuICAgICAgICAgICAgICB0aXBEYXRhWzBdICtcclxuICAgICAgICAgICAgICBcIm08YnI+XCIgK1xyXG4gICAgICAgICAgICAgIFwi6auY5bqm77yaXCIgK1xyXG4gICAgICAgICAgICAgIHRpcERhdGFbMV0gK1xyXG4gICAgICAgICAgICAgIFwibTxicj5cIiArXHJcbiAgICAgICAgICAgICAgXCLlnZDmoIfvvJpcIiArXHJcbiAgICAgICAgICAgICAgeHlbMF0udG9GaXhlZCg1KSArXHJcbiAgICAgICAgICAgICAgXCLvvIxcIiArXHJcbiAgICAgICAgICAgICAgeHlbMV0udG9GaXhlZCg1KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdyaWQ6IHtcclxuICAgICAgICAgIHRvcDogNDAsXHJcbiAgICAgICAgICBib3R0b206IDIwLFxyXG4gICAgICAgICAgbGVmdDogNTUsXHJcbiAgICAgICAgICByaWdodDogMzBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbGN1bGFibGU6IHRydWUsXHJcbiAgICAgICAgeEF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBtYXg6IHhBaXhNYXgsXHJcbiAgICAgICAgICAgIHNjYWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBheGlzTGFiZWw6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGF4aXNMaW5lOiB7XHJcbiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjZmZmZmZmXCJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICB5QXhpczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBcInZhbHVlXCIsXHJcbiAgICAgICAgICAgIHNjYWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBheGlzTGFiZWw6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGF4aXNMaW5lOiB7XHJcbiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjZmZmZmZmXCJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzZXJpZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJQcm9maWxlTGluZVwiLFxyXG4gICAgICAgICAgICB0eXBlOiBcImxpbmVcIixcclxuICAgICAgICAgICAgZGF0YTogZGF0YXMsXHJcbiAgICAgICAgICAgIHNtb290aDogdHJ1ZSxcclxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgbm9ybWFsOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMzlGREExXCIsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgbm9ybWFsOiB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwibGluZWFyXCIsXHJcbiAgICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgIHgyOiAxLFxyXG4gICAgICAgICAgICAgICAgICB5MjogMCxcclxuICAgICAgICAgICAgICAgICAgY29sb3JTdG9wczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoODUsMjU0LDEzOSwxKVwiLCAvLyAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMC41LFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSg3LDI1MiwyMDIsMSlcIiwgLy8gMTAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMTQsMjQ1LDIxMCwxKVwiLCAvLyAxMDAlIOWkhOeahOminOiJslxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIGdsb2JhbENvb3JkOiBmYWxzZSwgLy8g57y655yB5Li6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFyZWFTdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IG5ldyBlY2hhcnRzLmdyYXBoaWMuTGluZWFyR3JhZGllbnQoXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDEsXHJcbiAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDEwMiwxNTMsMjU1LDEpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAuOCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMTAyLDE1MywyNTUsMC4wOClcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoOSwxNzMsMjA4LDAuMTUpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcjogXCJyZ2JhKDE0LDI0NSwyMTAsMSlcIiwgLy/pmLTlvbHpopzoibJcclxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDIwLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1hcmtQb2ludDoge1xyXG4gICAgICAgICAgICAgIGRhdGE6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJtYXhcIixcclxuICAgICAgICAgICAgICAgICAgbmFtZTogXCLmnIDpq5jngrlcIixcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIm1pblwiLFxyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIuacgOS9jueCuVwiLFxyXG4gICAgICAgICAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicHJvZmlsZS1lY2hhcnRzXCIpWzBdO1xyXG4gICAgICB0aGF0LmVjaGFydHNPYmplY3QgPSBlY2hhcnRzLmluaXQoZWxlKTtcclxuICAgICAgb3B0aW9uID0ge1xyXG4gICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgIHRyaWdnZXI6IFwiYXhpc1wiLFxyXG4gICAgICAgICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGFsaWduOiBcImxlZnRcIixcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdyaWQ6IHtcclxuICAgICAgICAgIHRvcDogNDAsXHJcbiAgICAgICAgICBib3R0b206IDIwLFxyXG4gICAgICAgICAgbGVmdDogNTUsXHJcbiAgICAgICAgICByaWdodDogMzBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbGN1bGFibGU6IHRydWUsXHJcbiAgICAgICAgeEF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBzY2FsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBheGlzTGluZToge1xyXG4gICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgeUF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBzY2FsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBheGlzTGluZToge1xyXG4gICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgc2VyaWVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiUHJvZmlsZUxpbmVcIixcclxuICAgICAgICAgICAgdHlwZTogXCJsaW5lXCIsXHJcbiAgICAgICAgICAgIGRhdGE6IFtdLFxyXG4gICAgICAgICAgICBzbW9vdGg6IHRydWUsXHJcbiAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzM5RkRBMVwiLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICAgICAgICBjb2xvcjoge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImxpbmVhclwiLFxyXG4gICAgICAgICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICAgICAgICB4MjogMSxcclxuICAgICAgICAgICAgICAgICAgeTI6IDAsXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yU3RvcHM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDg1LDI1NCwxMzksMSlcIiwgLy8gMCUg5aSE55qE6aKc6ImyXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAuNSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoNywyNTIsMjAyLDEpXCIsIC8vIDEwMCUg5aSE55qE6aKc6ImyXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDE0LDI0NSwyMTAsMSlcIiwgLy8gMTAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBnbG9iYWxDb29yZDogZmFsc2UsIC8vIOe8uuecgeS4uiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcmVhU3R5bGU6IHtcclxuICAgICAgICAgICAgICBub3JtYWw6IHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBuZXcgZWNoYXJ0cy5ncmFwaGljLkxpbmVhckdyYWRpZW50KFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAxLFxyXG4gICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSgxMDIsMTUzLDI1NSwxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDEwMiwxNTMsMjU1LDAuMDgpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDksMTczLDIwOCwwLjE1KVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6IFwicmdiYSgxNCwyNDUsMjEwLDEpXCIsIC8v6Zi05b2x6aKc6ImyXHJcbiAgICAgICAgICAgICAgICBzaGFkb3dCbHVyOiAyMCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtYXJrUG9pbnQ6IHtcclxuICAgICAgICAgICAgICBkYXRhOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwibWF4XCIsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwi5pyA6auY54K5XCIsXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJtaW5cIixcclxuICAgICAgICAgICAgICAgICAgbmFtZTogXCLmnIDkvY7ngrlcIixcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5lY2hhcnRzT2JqZWN0LnNldE9wdGlvbihvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgY2xlYW4oKSB7XHJcbiAgICB0aGlzLmVuZCgpXHJcbiAgICB0aGlzLl9jdXJyZW50SWQgPSBudWxsXHJcbiAgICB0aGlzLmVudGl0eUhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5wb2x5bGluZSAmJiB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5wb2x5bGluZSlcclxuICAgIHRoaXMudGlwRW50aXR5ICYmIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnRpcEVudGl0eSlcclxuICAgIHRoaXMucG9seWxpbmUgPSBudWxsXHJcbiAgICB0aGlzLnRpcEVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNsZWFuKClcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIGNvbnN0IFByb2ZpbGUgPSBmdW5jdGlvbiAodmlld2VyLCBjYWxsYmFjaykge1xyXG4vLyAgIGlmICghdmlld2VyKSB0aHJvdyBuZXcgRXJyb3IoXCJubyB2aWV3ZXIgb2JqZWN0IVwiKTtcclxuLy8gICBpZiAod2luZG93LnByb2ZpbGVFbnRpdGllcyAmJiB3aW5kb3cucHJvZmlsZUVudGl0aWVzLmxlbmd0aCA+IDApIHtcclxuLy8gICAgIHdpbmRvdy5wcm9maWxlRW50aXRpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4vLyAgICAgICB3aW5kb3cudmlld2VyLmVudGl0aWVzLnJlbW92ZShlbGVtZW50KTtcclxuLy8gICAgIH0pO1xyXG4vLyAgIH1cclxuLy8gICB3aW5kb3cucHJvZmlsZUVudGl0aWVzID0gW107XHJcbi8vICAgQ3JlYXRlUG9seWxpbmUoXHJcbi8vICAgICB2aWV3ZXIsXHJcbi8vICAgICB3aW5kb3cucHJvZmlsZUVudGl0aWVzLFxyXG4vLyAgICAgeyBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCwgd2lkdGg6IDIgfSxcclxuLy8gICAgIGZ1bmN0aW9uIChlKSB7XHJcbi8vICAgICAgIGUucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWU7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKGUucG90dGluZ1BvaW50KTtcclxuLy8gICAgICAgbGV0IHBvaW50cyA9IGludGVyUG9pbnRzKHZpZXdlciwgZS5wb3R0aW5nUG9pbnQsIFtlXSk7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKHBvaW50cyk7XHJcbi8vICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gXCJmdW5jdGlvblwiKSBjYWxsYmFjayhwb2ludHMpO1xyXG4vLyAgICAgfVxyXG4vLyAgICk7XHJcbi8vIH07XHJcbi8vIC8qKlxyXG4vLyAgKiDnur/mrrXmj5LlgLzngrlcclxuLy8gICogQHBhcmFtIHsqfSB2aWV3ZXJcclxuLy8gICogQHBhcmFtIHsqfSBwb3NpdGlvbnMg57q/5q616IqC54K56ZuG5ZCIXHJcbi8vICAqIEBwYXJhbSB7Kn0gb2JqZWN0c1RvRXhjbHVkZSDpq5jluqbph4fpm4bml7bmjpLpmaTnmoTlr7nosaHpm4blkIhcclxuLy8gICogQHJldHVybnMg57uP57qs5bqm54K56ZuG5ZCI77yM5YyF5ZCr6Led56a75YC8XHJcbi8vICAqL1xyXG4vLyBmdW5jdGlvbiBpbnRlclBvaW50cyh2aWV3ZXIsIHBvc2l0aW9ucywgb2JqZWN0c1RvRXhjbHVkZSkge1xyXG4vLyAgIGxldCBwb3NpdGlvbnNDYXJ0b2dyYXBoaWMgPSBbXTtcclxuLy8gICBsZXQgdGVycmFpblNhbXBsZVBvc2l0aW9ucyA9IFtdO1xyXG4vLyAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb3NpdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbi8vICAgICBjb25zdCBlbGVtZW50ID0gcG9zaXRpb25zW2luZGV4XTtcclxuLy8gICAgIGxldCBlbGxpcHNvaWQgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkO1xyXG4vLyAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlbGVtZW50KTtcclxuLy8gICAgIHBvc2l0aW9uc0NhcnRvZ3JhcGhpYy5wdXNoKGNhcnRvZ3JhcGhpYyk7XHJcbi8vICAgfVxyXG4vLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQ2FydG9ncmFwaGljLmxlbmd0aDsgaSsrKSB7XHJcbi8vICAgICBjb25zdCBtX0NhcnRvZ3JhcGhpYzAgPSBwb3NpdGlvbnNDYXJ0b2dyYXBoaWNbaV07XHJcbi8vICAgICBjb25zdCBtX0NhcnRvZ3JhcGhpYzEgPSBwb3NpdGlvbnNDYXJ0b2dyYXBoaWNbaSArIDFdO1xyXG4vLyAgICAgaWYgKG1fQ2FydG9ncmFwaGljMSkge1xyXG4vLyAgICAgICBsZXQgYSA9XHJcbi8vICAgICAgICAgTWF0aC5hYnMobV9DYXJ0b2dyYXBoaWMwLmxvbmdpdHVkZSAtIG1fQ2FydG9ncmFwaGljMS5sb25naXR1ZGUpICpcclxuLy8gICAgICAgICAxMDAwMDAwMDtcclxuLy8gICAgICAgbGV0IGIgPVxyXG4vLyAgICAgICAgIE1hdGguYWJzKG1fQ2FydG9ncmFwaGljMC5sYXRpdHVkZSAtIG1fQ2FydG9ncmFwaGljMS5sYXRpdHVkZSkgKlxyXG4vLyAgICAgICAgIDEwMDAwMDAwO1xyXG4vLyAgICAgICAvL+etiei3nemHh+agt1xyXG4vLyAgICAgICBpZiAoYSA+IGIpIGIgPSBhO1xyXG4vLyAgICAgICBsZXQgbGVuZ3RoID0gcGFyc2VJbnQoYiAvIDIpO1xyXG4vLyAgICAgICBpZiAobGVuZ3RoID4gMTAwMCkgbGVuZ3RoID0gMTAwMDtcclxuLy8gICAgICAgaWYgKGxlbmd0aCA8IDIpIGxlbmd0aCA9IDI7XHJcbi8vICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcclxuLy8gICAgICAgICB0ZXJyYWluU2FtcGxlUG9zaXRpb25zLnB1c2goXHJcbi8vICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRvZ3JhcGhpYyhcclxuLy8gICAgICAgICAgICAgQ2VzaXVtLk1hdGgubGVycChcclxuLy8gICAgICAgICAgICAgICBtX0NhcnRvZ3JhcGhpYzAubG9uZ2l0dWRlLFxyXG4vLyAgICAgICAgICAgICAgIG1fQ2FydG9ncmFwaGljMS5sb25naXR1ZGUsXHJcbi8vICAgICAgICAgICAgICAgaiAvIChsZW5ndGggLSAxKVxyXG4vLyAgICAgICAgICAgICApLFxyXG4vLyAgICAgICAgICAgICBDZXNpdW0uTWF0aC5sZXJwKFxyXG4vLyAgICAgICAgICAgICAgIG1fQ2FydG9ncmFwaGljMC5sYXRpdHVkZSxcclxuLy8gICAgICAgICAgICAgICBtX0NhcnRvZ3JhcGhpYzEubGF0aXR1ZGUsXHJcbi8vICAgICAgICAgICAgICAgaiAvIChsZW5ndGggLSAxKVxyXG4vLyAgICAgICAgICAgICApXHJcbi8vICAgICAgICAgICApXHJcbi8vICAgICAgICAgKTtcclxuLy8gICAgICAgfVxyXG4vLyAgICAgICB0ZXJyYWluU2FtcGxlUG9zaXRpb25zLnBvcCgpO1xyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgdGVycmFpblNhbXBsZVBvc2l0aW9ucy5wdXNoKG1fQ2FydG9ncmFwaGljMCk7XHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG4vLyAgIGxldCBwb3NpdGlvbnNfSW50ZXIgPSBbXTtcclxuLy8gICBsZXQgZGlzdGFuY2UgPSAwO1xyXG4vLyAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGVycmFpblNhbXBsZVBvc2l0aW9ucy5sZW5ndGg7IG4rKykge1xyXG4vLyAgICAgLy/lnLDnkIblnZDmoIfvvIjlvKfluqbvvInovaznu4/nuqzluqblnZDmoIdcclxuLy8gICAgIGxldCBjdXJDYXJ0b2dyYXBoaWMgPSB0ZXJyYWluU2FtcGxlUG9zaXRpb25zW25dO1xyXG4vLyAgICAgbGV0IGhlaWdodCA9IHZpZXdlci5zY2VuZS5zYW1wbGVIZWlnaHQoY3VyQ2FydG9ncmFwaGljLCBvYmplY3RzVG9FeGNsdWRlKTtcclxuLy8gICAgIGNvbnN0IGxvbiA9IChjdXJDYXJ0b2dyYXBoaWMubG9uZ2l0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICBjb25zdCBsYXQgPSAoY3VyQ2FydG9ncmFwaGljLmxhdGl0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICBsZXQgcG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb24sIGxhdCwgaGVpZ2h0KTtcclxuLy8gICAgIGxldCBwcmVDYXJ0b2dyYXBoaWMgPSB0ZXJyYWluU2FtcGxlUG9zaXRpb25zW24gLSAxXTtcclxuLy8gICAgIGlmIChwcmVDYXJ0b2dyYXBoaWMpIHtcclxuLy8gICAgICAgY29uc3QgbG9uMSA9IChwcmVDYXJ0b2dyYXBoaWMubG9uZ2l0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICAgIGNvbnN0IGxhdDEgPSAocHJlQ2FydG9ncmFwaGljLmxhdGl0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb24xLCBsYXQxLCBoZWlnaHQpO1xyXG4vLyAgICAgICBsZXQgY3VyRGlzID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9pbnQxLCBwb2ludCk7XHJcbi8vICAgICAgIGRpc3RhbmNlICs9IGN1ckRpcztcclxuLy8gICAgIH1cclxuLy8gICAgIHBvc2l0aW9uc19JbnRlci5wdXNoKHtcclxuLy8gICAgICAgcG9zaXRpb246IHsgbG9uOiBsb24sIGxhdDogbGF0LCBoZWlnaHQ6IGhlaWdodCB9LFxyXG4vLyAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbi8vICAgICB9KTtcclxuLy8gICB9XHJcbi8vICAgcmV0dXJuIHBvc2l0aW9uc19JbnRlcjtcclxuLy8gfVxyXG5leHBvcnQgZGVmYXVsdCBQcm9maWxlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQXlXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFWQTtBQUFBO0FBQUE7QUFBQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFOQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Profile/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Section/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Analysis/Section/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\nvar Section = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor 剖切\r\n * @param sdk\r\n * @param tiles3d {object} 3dtiles对象\r\n * @param {Array.} options.positions 经纬度[{lon,lat,alt},...]\r\n * @param options.regionsType=false 裁剪类型 false:裁剪内部,true:裁剪外部\r\n * **/\n function Section(sdk, tiles3d) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Section);\n _this = _callSuper(this, Section, [sdk, options]);\n _this.viewer = sdk.viewer;\n _this.tiles3d = tiles3d;\n _this.options = _objectSpread({}, options);\n _this.options.regionsType = _this.options.regionsType || false;\n YJ.Analysis.SectionResults.push(_this);\n _this.Planes = [];\n _this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\n Section.start(_this);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Section, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Section, [{\n key: \"regionsType\",\n get: function get() {\n return this.options.regionsType;\n },\n set: function set(v) {\n this.options.regionsType = v;\n if (this.Planes.length > 0) {\n this.Planes = [];\n Section.planeCollection(this);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.Planes = [];\n // this.tiles3d.clippingPlanes = new Cesium.ClippingPlaneCollection()\n if (this.tiles3d.clippingPlanes) {\n this.tiles3d.clippingPlanes.enabled = false;\n this.tiles3d.clippingPlanes.removeAll();\n }\n }\n }], [{\n key: \"start\",\n value: function start(that) {\n var positions = that.options.positions || [];\n if (!that.isConvex(positions)) {\n // window.ELEMENT && window.ELEMENT.Message({\n // message: '不支持凹多边形',\n // type: 'warning',\n // duration: 1500\n // });\n that.tools.message({\n type: 'warning',\n text: '不支持凹多边形'\n });\n console.log('不支持凹多边形');\n return;\n }\n that.inverseTransform = getInverseTransform(that.tiles3d);\n that.Planes = [];\n var array = [];\n if (positions.length > 0) {\n for (var i = 0; i < positions.length; i++) {\n array.push([positions[i].lng, positions[i].lat]);\n }\n array.push([positions[0].lng, positions[0].lat]);\n that.isClockwise = turf.booleanClockwise(turf.lineString(array));\n }\n Section.planeCollection(that);\n function getInverseTransform(tileSet) {\n var transform;\n var tmp = tileSet.root.transform;\n if (tmp && tmp.equals(Cesium.Matrix4.IDENTITY) || !tmp) {\n transform = Cesium.Transforms.eastNorthUpToFixedFrame(tileSet.boundingSphere.center);\n } else {\n transform = Cesium.Matrix4.fromArray(tileSet.root.transform);\n }\n return Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());\n }\n }\n }, {\n key: \"planeCollection\",\n value: function planeCollection(that) {\n var positions = that.options.positions || [];\n if (that.regionsType == that.isClockwise) {\n for (var i = 0; i < positions.length; i++) {\n if (i === positions.length - 1) {\n that.Planes.push(createPlane(positions[i], positions[0], that.inverseTransform));\n } else {\n that.Planes.push(createPlane(positions[i], positions[i + 1], that.inverseTransform));\n }\n }\n } else {\n for (var _i = positions.length - 1; _i >= 0; _i--) {\n if (_i === 0) {\n that.Planes.push(createPlane(positions[_i], positions[positions.length - 1], that.inverseTransform));\n } else {\n that.Planes.push(createPlane(positions[_i], positions[_i - 1], that.inverseTransform));\n }\n }\n }\n if (that.tiles3d.clippingPlanes) {\n that.tiles3d.clippingPlanes.removeAll();\n for (var _i2 = 0; _i2 < that.Planes.length; _i2++) {\n that.tiles3d.clippingPlanes.add(that.Planes[_i2]);\n }\n that.tiles3d.clippingPlanes.enabled = true;\n } else {\n var PlaneCollection = new Cesium.ClippingPlaneCollection({\n planes: that.Planes,\n enabled: true,\n unionClippingRegions: that.regionsType,\n edgeColor: Cesium.Color.WHITE,\n edgeWidth: 1\n });\n that.tiles3d.clippingPlanes = PlaneCollection;\n }\n function createPlane(p1, p2, inverseTransform) {\n // 将仅包含经纬度信息的p1,p2,转换为相应坐标系的cartesian3对象\n var p1C3 = getOriginCoordinateSystemPoint(p1, inverseTransform);\n var p2C3 = getOriginCoordinateSystemPoint(p2, inverseTransform);\n\n // 定义一个垂直向上的向量up\n var up = new Cesium.Cartesian3(0, 0, 10);\n // right 实际上就是由p1指向p2的向量\n var right = Cesium.Cartesian3.subtract(p2C3, p1C3, new Cesium.Cartesian3());\n\n // 计算normal, right叉乘up,得到平面法向量,这个法向量指向right的右侧\n var normal = Cesium.Cartesian3.cross(right, up, new Cesium.Cartesian3());\n normal = Cesium.Cartesian3.normalize(normal, normal);\n\n // 由于已经获得了法向量和过平面的一点,因此可以直接构造Plane,并进一步构造ClippingPlane\n var planeTmp = Cesium.Plane.fromPointNormal(p1C3, normal);\n return Cesium.ClippingPlane.fromPlane(planeTmp);\n }\n function getOriginCoordinateSystemPoint(point, inverseTransform) {\n var val = Cesium.Cartesian3.fromDegrees(point.lng, point.lat);\n return Cesium.Matrix4.multiplyByPoint(inverseTransform, val, new Cesium.Cartesian3(0, 0, 0));\n }\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Section);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1NlY3Rpb24vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1NlY3Rpb24vaW5kZXguanM/NDJhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmNsYXNzIFNlY3Rpb24gZXh0ZW5kcyBUb29scyB7XHJcbiAgLyoqXHJcbiAgKiBAY29uc3RydWN0b3Ig5YmW5YiHXHJcbiAgKiBAcGFyYW0gc2RrXHJcbiAgKiBAcGFyYW0gdGlsZXMzZCB7b2JqZWN0fSAzZHRpbGVz5a+56LGhXHJcbiAgKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBvcHRpb25zLnBvc2l0aW9ucyDnu4/nuqzluqZbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAgKiBAcGFyYW0gb3B0aW9ucy5yZWdpb25zVHlwZT1mYWxzZSDoo4HliarnsbvlnosgZmFsc2U66KOB5Ymq5YaF6YOo77yMdHJ1ZTroo4HliarlpJbpg6hcclxuICAqICoqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgdGlsZXMzZCwgb3B0aW9ucyA9IHt9KSB7XHJcblxyXG5cclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy50aWxlczNkID0gdGlsZXMzZFxyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMub3B0aW9ucy5yZWdpb25zVHlwZSA9IHRoaXMub3B0aW9ucy5yZWdpb25zVHlwZSB8fCBmYWxzZVxyXG4gICAgWUouQW5hbHlzaXMuU2VjdGlvblJlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgdGhpcy5QbGFuZXMgPSBbXVxyXG4gICAgdGhpcy50b29scyA9IG5ldyBUb29scygpO1xyXG4gICAgU2VjdGlvbi5zdGFydCh0aGlzKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJlZ2lvbnNUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZWdpb25zVHlwZVxyXG4gIH1cclxuICBzZXQgcmVnaW9uc1R5cGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJlZ2lvbnNUeXBlID0gdlxyXG4gICAgaWYgKHRoaXMuUGxhbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5QbGFuZXMgPSBbXVxyXG4gICAgICBTZWN0aW9uLnBsYW5lQ29sbGVjdGlvbih0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN0YXJ0KHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICBpZiAoIXRoYXQuaXNDb252ZXgocG9zaXRpb25zKSkge1xyXG4gICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgLy8gICBtZXNzYWdlOiAn5LiN5pSv5oyB5Ye55aSa6L655b2iJyxcclxuICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgIC8vICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoYXQudG9vbHMubWVzc2FnZSh7IHR5cGU6ICd3YXJuaW5nJywgdGV4dDogJ+S4jeaUr+aMgeWHueWkmui+ueW9oicgfSlcclxuICAgICAgY29uc29sZS5sb2coJ+S4jeaUr+aMgeWHueWkmui+ueW9oicpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhhdC5pbnZlcnNlVHJhbnNmb3JtID0gZ2V0SW52ZXJzZVRyYW5zZm9ybSh0aGF0LnRpbGVzM2QpXHJcbiAgICB0aGF0LlBsYW5lcyA9IFtdXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgYXJyYXkucHVzaChbcG9zaXRpb25zWzBdLmxuZywgcG9zaXRpb25zWzBdLmxhdF0pXHJcbiAgICAgIHRoYXQuaXNDbG9ja3dpc2UgPSB0dXJmLmJvb2xlYW5DbG9ja3dpc2UodHVyZi5saW5lU3RyaW5nKGFycmF5KSk7XHJcbiAgICB9XHJcbiAgICBTZWN0aW9uLnBsYW5lQ29sbGVjdGlvbih0aGF0KVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldEludmVyc2VUcmFuc2Zvcm0odGlsZVNldCkge1xyXG4gICAgICBsZXQgdHJhbnNmb3JtXHJcbiAgICAgIGNvbnN0IHRtcCA9IHRpbGVTZXQucm9vdC50cmFuc2Zvcm1cclxuICAgICAgaWYgKCh0bXAgJiYgdG1wLmVxdWFscyhDZXNpdW0uTWF0cml4NC5JREVOVElUWSkpIHx8ICF0bXApIHtcclxuICAgICAgICB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0aWxlU2V0LmJvdW5kaW5nU3BoZXJlLmNlbnRlcilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0cmFuc2Zvcm0gPSBDZXNpdW0uTWF0cml4NC5mcm9tQXJyYXkodGlsZVNldC5yb290LnRyYW5zZm9ybSlcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXg0KCkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGxhbmVDb2xsZWN0aW9uKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICBpZiAodGhhdC5yZWdpb25zVHlwZSA9PSB0aGF0LmlzQ2xvY2t3aXNlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGkgPT09IChwb3NpdGlvbnMubGVuZ3RoIC0gMSkpIHtcclxuICAgICAgICAgIHRoYXQuUGxhbmVzLnB1c2goY3JlYXRlUGxhbmUocG9zaXRpb25zW2ldLCBwb3NpdGlvbnNbMF0sIHRoYXQuaW52ZXJzZVRyYW5zZm9ybSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoYXQuUGxhbmVzLnB1c2goY3JlYXRlUGxhbmUocG9zaXRpb25zW2ldLCBwb3NpdGlvbnNbaSArIDFdLCB0aGF0LmludmVyc2VUcmFuc2Zvcm0pKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSBwb3NpdGlvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdGhhdC5QbGFuZXMucHVzaChjcmVhdGVQbGFuZShwb3NpdGlvbnNbaV0sIHBvc2l0aW9uc1twb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoYXQuaW52ZXJzZVRyYW5zZm9ybSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoYXQuUGxhbmVzLnB1c2goY3JlYXRlUGxhbmUocG9zaXRpb25zW2ldLCBwb3NpdGlvbnNbaSAtIDFdLCB0aGF0LmludmVyc2VUcmFuc2Zvcm0pKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGF0LnRpbGVzM2QuY2xpcHBpbmdQbGFuZXMpIHtcclxuICAgICAgdGhhdC50aWxlczNkLmNsaXBwaW5nUGxhbmVzLnJlbW92ZUFsbCgpXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5QbGFuZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGF0LnRpbGVzM2QuY2xpcHBpbmdQbGFuZXMuYWRkKHRoYXQuUGxhbmVzW2ldKVxyXG4gICAgICB9XHJcbiAgICAgIHRoYXQudGlsZXMzZC5jbGlwcGluZ1BsYW5lcy5lbmFibGVkID0gdHJ1ZVxyXG5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBQbGFuZUNvbGxlY3Rpb24gPSBuZXcgQ2VzaXVtLkNsaXBwaW5nUGxhbmVDb2xsZWN0aW9uKHtcclxuICAgICAgICBwbGFuZXM6IHRoYXQuUGxhbmVzLFxyXG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdW5pb25DbGlwcGluZ1JlZ2lvbnM6IHRoYXQucmVnaW9uc1R5cGUsXHJcbiAgICAgICAgZWRnZUNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUsXHJcbiAgICAgICAgZWRnZVdpZHRoOiAxLFxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LnRpbGVzM2QuY2xpcHBpbmdQbGFuZXMgPSBQbGFuZUNvbGxlY3Rpb25cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjcmVhdGVQbGFuZShwMSwgcDIsIGludmVyc2VUcmFuc2Zvcm0pIHtcclxuICAgICAgLy8g5bCG5LuF5YyF5ZCr57uP57qs5bqm5L+h5oGv55qEcDEscDLvvIzovazmjaLkuLrnm7jlupTlnZDmoIfns7vnmoRjYXJ0ZXNpYW4z5a+56LGhXHJcbiAgICAgIGNvbnN0IHAxQzMgPSBnZXRPcmlnaW5Db29yZGluYXRlU3lzdGVtUG9pbnQocDEsIGludmVyc2VUcmFuc2Zvcm0pXHJcbiAgICAgIGNvbnN0IHAyQzMgPSBnZXRPcmlnaW5Db29yZGluYXRlU3lzdGVtUG9pbnQocDIsIGludmVyc2VUcmFuc2Zvcm0pXHJcblxyXG4gICAgICAvLyDlrprkuYnkuIDkuKrlnoLnm7TlkJHkuIrnmoTlkJHph491cFxyXG4gICAgICBjb25zdCB1cCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAwLCAxMClcclxuICAgICAgLy8gIHJpZ2h0IOWunumZheS4iuWwseaYr+eUsXAx5oyH5ZCRcDLnmoTlkJHph49cclxuICAgICAgY29uc3QgcmlnaHQgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwMkMzLCBwMUMzLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuXHJcbiAgICAgIC8vIOiuoeeul25vcm1hbO+8jCByaWdodOWPieS5mHVw77yM5b6X5Yiw5bmz6Z2i5rOV5ZCR6YeP77yM6L+Z5Liq5rOV5ZCR6YeP5oyH5ZCRcmlnaHTnmoTlj7PkvqdcclxuICAgICAgbGV0IG5vcm1hbCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmNyb3NzKHJpZ2h0LCB1cCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpXHJcbiAgICAgIG5vcm1hbCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShub3JtYWwsIG5vcm1hbClcclxuXHJcbiAgICAgIC8vIOeUseS6juW3sue7j+iOt+W+l+S6huazleWQkemHj+WSjOi/h+W5s+mdoueahOS4gOeCue+8jOWboOatpOWPr+S7peebtOaOpeaehOmAoFBsYW5lLOW5tui/m+S4gOatpeaehOmAoENsaXBwaW5nUGxhbmVcclxuICAgICAgY29uc3QgcGxhbmVUbXAgPSBDZXNpdW0uUGxhbmUuZnJvbVBvaW50Tm9ybWFsKHAxQzMsIG5vcm1hbClcclxuICAgICAgcmV0dXJuIENlc2l1bS5DbGlwcGluZ1BsYW5lLmZyb21QbGFuZShwbGFuZVRtcClcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRPcmlnaW5Db29yZGluYXRlU3lzdGVtUG9pbnQocG9pbnQsIGludmVyc2VUcmFuc2Zvcm0pIHtcclxuICAgICAgY29uc3QgdmFsID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9pbnQubG5nLCBwb2ludC5sYXQpXHJcbiAgICAgIHJldHVybiBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQoXHJcbiAgICAgICAgaW52ZXJzZVRyYW5zZm9ybSwgdmFsLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMCwgMCwgMCkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5QbGFuZXMgPSBbXVxyXG4gICAgLy8gdGhpcy50aWxlczNkLmNsaXBwaW5nUGxhbmVzID0gbmV3IENlc2l1bS5DbGlwcGluZ1BsYW5lQ29sbGVjdGlvbigpXHJcbiAgICBpZiAodGhpcy50aWxlczNkLmNsaXBwaW5nUGxhbmVzKSB7XHJcbiAgICAgIHRoaXMudGlsZXMzZC5jbGlwcGluZ1BsYW5lcy5lbmFibGVkID0gZmFsc2VcclxuICAgICAgdGhpcy50aWxlczNkLmNsaXBwaW5nUGxhbmVzLnJlbW92ZUFsbCgpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTZWN0aW9uO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBeUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFZQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Section/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/SlopeAspect/index.js": -/*!***********************************************!*\ - !*** ./src/Obj/Analysis/SlopeAspect/index.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar SlopeAspect = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor 坡度坡向分析\r\n * @param sdk\r\n * **/\n function SlopeAspect(sdk) {\n var _this2;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SlopeAspect);\n _this2 = _callSuper(this, SlopeAspect, [sdk]);\n _this2.viewer = sdk.viewer;\n var terrainAvailability = _this2.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n _this2.error = '未加载地形数据!';\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(_this2);\n }\n _this2.event;\n _this2.result = []; //存储创建的坡度分析结果,primitive集合\n _this2.handler = undefined;\n _this2.toolTip = \"\";\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"](sdk);\n YJ.Analysis.AnalysesResults.push(_this2);\n _this2.Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this2.sdk, {\n tipText: '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点'\n });\n // this.createNew4Distance()\n _this2.createNew4Num(50);\n return _this2;\n }\n\n //等距离切分网格\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SlopeAspect, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SlopeAspect, [{\n key: \"createNew4Distance\",\n value: function createNew4Distance(distance) {\n var _this3 = this;\n distance = distance || 0.1; //默认0.1km精度\n var width = distance * 200 > 35 ? 35 : distance * 200;\n this.arrowWidth = width < 15 ? 15 : width;\n var $this = this;\n var viewer = this.viewer;\n this.Draw.start(function (e, positions) {\n if (!positions || positions.length < 3) {\n if (e >= 3) {\n _this3.Draw.tipText = '左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销';\n } else {\n _this3.Draw.tipText = '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点';\n }\n return;\n }\n var boundary = [];\n var minX = 10000,\n minY = 10000,\n maxX = -10000,\n maxY = -1000;\n for (var index = 0; index < positions.length; index++) {\n var element = positions[index];\n var x = element.lng;\n var y = element.lat;\n boundary.push([x, y]);\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n boundary.push(boundary[0]);\n var bbox = [minX, minY, maxX, maxY];\n var mask = turf.polygon([boundary]);\n var gridSquare = turf.squareGrid(bbox, distance, {\n mask: mask\n });\n _this3.createEllipse(gridSquare);\n });\n }\n // 等分切分网格,切分成一个num*num的网格\n }, {\n key: \"createNew4Num\",\n value: function createNew4Num(n) {\n var _this4 = this;\n var num = n;\n this.Draw.start(function (e, positions) {\n if (!positions || positions.length < 3) {\n if (e >= 3) {\n _this4.Draw.tipText = '左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销';\n } else {\n _this4.Draw.tipText = '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点';\n }\n return;\n }\n var boundary = [];\n var minX = 10000,\n minY = 10000,\n maxX = -10000,\n maxY = -1000;\n for (var index = 0; index < positions.length; index++) {\n var element = positions[index];\n var x = element.lng;\n var y = element.lat;\n boundary.push([x, y]);\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n boundary.push(boundary[0]);\n var bbox = [minX, minY, maxX, maxY];\n var a = maxX - minX;\n var b = maxY - minY;\n b = b > a ? b : a;\n\n // 根据面积修改网格数\n var mask = turf.polygon([boundary]);\n var area = turf.area(mask);\n if (area > 5000000000000) {\n num = num - 25;\n } else if (area > 1000000000000) {\n num = num - 20;\n } else if (area > 500000000000) {\n num = num - 15;\n } else if (area > 100000000000) {\n num = num - 10;\n } else if (area > 60000000000) {\n num = num - 5;\n }\n var step = b / num;\n var width = step * 2000 > 35 ? 35 : step * 2000;\n _this4.arrowWidth = width < 15 ? 15 : width;\n var gridSquare = turf.squareGrid(bbox, step, {\n units: \"degrees\",\n mask: mask\n });\n _this4.createEllipse(gridSquare);\n });\n // CreatePolygonOnGround(\n // viewer,\n // [],\n // {\n // color: Cesium.Color.RED.withAlpha(0.1),\n // outlineColor: Cesium.Color.YELLOW,\n // outlineWidth: 2,\n // },\n // function (polygon) {\n // let degrees = $this.Cartesian3ListToWGS84(polygon.pottingPoint);\n // viewer.entities.remove(polygon);\n // let boundary = [];\n // let minX = 10000,\n // minY = 10000,\n // maxX = -10000,\n // maxY = -1000;\n // for (let index = 0; index < degrees.length; index++) {\n // const element = degrees[index];\n // const x = element.lng;\n // const y = element.lat;\n // boundary.push([x, y]);\n // minX = x < minX ? x : minX;\n // minY = y < minY ? y : minY;\n // maxX = x > maxX ? x : maxX;\n // maxY = y > maxY ? y : maxY;\n // }\n // boundary.push(boundary[0]);\n // let bbox = [minX, minY, maxX, maxY];\n // let a = maxX - minX;\n // let b = maxY - minY;\n // b = b > a ? b : a;\n // const step = b / num;\n // let width = step * 2000 > 35 ? 35 : step * 2000;\n // this.arrowWidth = width < 15 ? 15 : width;\n // let mask = turf.polygon([boundary]);\n // let gridSquare = turf.squareGrid(bbox, step, {\n // units: \"degrees\",\n // mask: mask,\n // });\n // this.createEllipse(gridSquare);\n // }\n // );\n }\n }, {\n key: \"createEllipse\",\n value: function createEllipse(gridSquare) {\n var boxResults = [];\n for (var index = 0; index < gridSquare.features.length; index++) {\n var feature = gridSquare.features[index];\n var coordinates = feature.geometry.coordinates[0];\n var centerdegree = [(coordinates[0][0] + coordinates[2][0]) / 2, (coordinates[0][1] + coordinates[2][1]) / 2];\n var centerCartographic = Cesium.Cartographic.fromDegrees(centerdegree[0], centerdegree[1]);\n boxResults.push(centerCartographic);\n for (var _i = 0; _i < coordinates.length; _i++) {\n var coord = coordinates[_i];\n var cartographic = Cesium.Cartographic.fromDegrees(coord[0], coord[1]);\n boxResults.push(cartographic);\n var coord1 = coordinates[_i + 1];\n if (coord1) {\n var newCoord = [(coord[0] + coord1[0]) / 2, (coord[1] + coord1[1]) / 2];\n var newCartographic = Cesium.Cartographic.fromDegrees(newCoord[0], newCoord[1]);\n boxResults.push(newCartographic);\n }\n }\n }\n var _this = this;\n // 点位过多,分为三份计算\n var num = Math.floor(boxResults.length / 3) + '';\n num = Number(num.substring(0, num.length - 1)) * 10;\n var i = 0;\n var points = boxResults.slice(i * num, (i + 1) * num);\n if (points.length > 0) {\n sampleTerrainMostDetailed(points);\n }\n function sampleTerrainMostDetailed(ps) {\n Cesium.sampleTerrainMostDetailed(_this.viewer.scene.terrainProvider, ps).then(function (updatePositions) {\n i++;\n var points = boxResults.slice(i * num, (i + 1) * num);\n if (points.length > 0) {\n sampleTerrainMostDetailed(points);\n }\n var arrr = [];\n var ellipseResults = updatePositions.reduce(function (pre, item, index, updatePositions) {\n var begin = index * 10;\n var end = begin + 10;\n var res = updatePositions.slice(begin, end);\n if (res.length != 0) {\n arrr[index] = res;\n }\n return arrr;\n }, []);\n _this.calculateSlope(ellipseResults);\n });\n }\n }\n }, {\n key: \"createPolygonInsrance\",\n value: function createPolygonInsrance(points, color, curSlope) {\n var positions = [];\n for (var index = 1; index < points.length - 1; index++) {\n var element = points[index];\n positions.push(Cesium.Cartographic.toCartesian(element));\n }\n var polygon = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(positions)\n });\n var polygonInstance = new Cesium.GeometryInstance({\n id: {\n type: \"SlopeAspect\",\n value: curSlope\n },\n geometry: polygon,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString(color)),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n return polygonInstance;\n }\n }, {\n key: \"createArrowInstance\",\n value: function createArrowInstance(targetPoint, center, diagonalPoint, heightDifference, curSlope) {\n var cartographic_0 = new Cesium.Cartographic((targetPoint.longitude + center.longitude) / 2, (targetPoint.latitude + center.latitude) / 2, (targetPoint.height + center.height) / 2);\n var cartographic_1 = new Cesium.Cartographic((diagonalPoint.longitude + center.longitude) / 2, (diagonalPoint.latitude + center.latitude) / 2, (diagonalPoint.height + center.height) / 2);\n //偏移的\n var positions1 = heightDifference > 0 ? [Cesium.Cartographic.toCartesian(cartographic_0), Cesium.Cartographic.toCartesian(cartographic_1)] : [Cesium.Cartographic.toCartesian(cartographic_1), Cesium.Cartographic.toCartesian(cartographic_0)];\n //箭头线\n var instance = new Cesium.GeometryInstance({\n id: {\n type: \"SlopeAspect\",\n value: curSlope\n },\n geometry: new Cesium.GroundPolylineGeometry({\n positions: positions1,\n width: this.arrowWidth\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE.withAlpha(0.6)),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n return instance;\n }\n }, {\n key: \"calculateSlope\",\n value: function calculateSlope(ellipseResults) {\n var _this5 = this;\n var instances = [];\n var polygonInstance = [];\n for (var index = 0; index < ellipseResults.length; index++) {\n var ellipse = ellipseResults[index];\n var center = ellipse[0];\n var heightDifference = 0;\n var maxIndex = 0;\n for (var i = 1; i < ellipse.length - 1; i++) {\n var point = ellipse[i];\n var curHD = point.height - center.height;\n if (Math.abs(curHD) > heightDifference) {\n heightDifference = curHD;\n maxIndex = i;\n }\n }\n var pos0 = new Cesium.Cartographic(center.longitude, center.latitude, 0);\n var pos1 = new Cesium.Cartographic(ellipse[maxIndex].longitude, ellipse[maxIndex].latitude, 0);\n var distance = Cesium.Cartesian3.distance(Cesium.Cartographic.toCartesian(pos0), Cesium.Cartographic.toCartesian(pos1));\n var curSlope = Math.abs(heightDifference / distance); //坡度的tan值\n var curColor = this.calculateSlopeColor(curSlope, 0.4);\n var curPolygonInstance = this.createPolygonInsrance(ellipse, curColor, curSlope);\n polygonInstance.push(curPolygonInstance);\n var diagonalPoint = maxIndex > 4 ? ellipse[maxIndex - 4] : ellipse[maxIndex + 4]; //对角点\n var targetPoint = ellipse[maxIndex];\n var arrowInstance = this.createArrowInstance(targetPoint, center, diagonalPoint, heightDifference, curSlope);\n instances.push(arrowInstance);\n }\n var mapPrimitive = this.viewer.scene.primitives.add(new Cesium.GroundPrimitive({\n geometryInstances: polygonInstance,\n appearance: new Cesium.PerInstanceColorAppearance({\n translucent: true,\n //false时透明度无效\n closed: false\n })\n }));\n var arrowPrimitive = this.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: instances,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: new Cesium.Material({\n fabric: {\n type: \"PolylineArrow\",\n uniforms: {\n color: new Cesium.Color(1.0, 1.0, 0.0, 0.8)\n }\n }\n })\n })\n }));\n this.result.push(arrowPrimitive, mapPrimitive);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var mouseEvent = function mouseEvent(movement, cartesian) {\n // console.log(movement, cartesian)\n var infoBox = document.getElementById('SlopeAspect-box');\n if (!infoBox) {\n infoBox = document.createElement('div');\n infoBox.id = 'SlopeAspect-box';\n infoBox.style.pointerEvents = 'none';\n infoBox.style.display = 'none';\n infoBox.style.position = 'absolute';\n infoBox.style.background = '#333333';\n infoBox.style.color = '#fff';\n infoBox.style.color = '#fff';\n infoBox.style.padding = '5px';\n infoBox.style.fontSize = '12px';\n infoBox.style.borderRadius = '5px';\n infoBox.style.transform = 'translate(-50%, -10px)';\n infoBox.innerHTML = \"\\n
\\u5761\\u5EA6\\uFF1A
\\n \\n \";\n document.body.appendChild(infoBox);\n }\n var vlaElm = infoBox.getElementsByClassName('value')[0];\n var position = _objectSpread({}, movement.position);\n var pickedObject = _this5.sdk.viewer.scene.pick(position);\n if (pickedObject && pickedObject.id && pickedObject.id.type && pickedObject.id.type === \"SlopeAspect\") {\n var top = 0;\n var left = 0;\n if (_this5.sdk.viewer && _this5.sdk.viewer._element) {\n var element = _this5.sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0];\n top = element.getBoundingClientRect().top + window.scrollY;\n left = element.getBoundingClientRect().left + window.scrollX;\n }\n infoBox.style.display = 'block';\n infoBox.style.left = position.x + 2 + left + 'px';\n infoBox.style.top = position.y - 20 + top + 'px';\n vlaElm.innerHTML = '坡度:' + Number(Cesium.Math.toDegrees(pickedObject.id.value || 0).toFixed(2)) + '°';\n } else {\n infoBox.style.display = 'none';\n }\n };\n this.event.mouse_move(function (movement, cartesian) {\n var newMovement = {\n position: _objectSpread({}, movement.endPosition)\n };\n mouseEvent(newMovement, cartesian);\n });\n this.event.mouse_left(mouseEvent);\n this._camera = {\n position: this.sdk.viewer.camera.position,\n heading: this.sdk.viewer.camera.heading,\n pitch: this.sdk.viewer.camera.pitch,\n roll: this.sdk.viewer.camera.roll\n };\n this.sdk.viewer.scene.preRender.addEventListener(this._watchEvent, this);\n // this.sdk.viewer.clock.onTick.addEventListener(() => {\n // console.log(111111)\n // let infoBox = document.getElementById('SlopeAspect-box')\n // if(infoBox) {\n // infoBox.style.display = 'none'\n // }\n // })\n }\n }, {\n key: \"_watchEvent\",\n value: function _watchEvent() {\n if (this._camera.position.x.toFixed(8) !== this.sdk.viewer.camera.position.x.toFixed(8) || this._camera.position.y.toFixed(8) !== this.sdk.viewer.camera.position.y.toFixed(8) || this._camera.position.z.toFixed(8) !== this.sdk.viewer.camera.position.z.toFixed(8) || this._camera.heading.toFixed(8) !== this.sdk.viewer.camera.heading.toFixed(8) || this._camera.pitch.toFixed(8) !== this.sdk.viewer.camera.pitch.toFixed(8) || this._camera.roll.toFixed(8) !== this.sdk.viewer.camera.roll.toFixed(8)) {\n var infoBox = document.getElementById('SlopeAspect-box');\n if (infoBox) {\n infoBox.style.display = 'none';\n }\n }\n this._camera = {\n position: this.sdk.viewer.camera.position,\n heading: this.sdk.viewer.camera.heading,\n pitch: this.sdk.viewer.camera.pitch,\n roll: this.sdk.viewer.camera.roll\n };\n }\n\n //根据坡度值赋值颜色\n }, {\n key: \"calculateSlopeColor\",\n value: function calculateSlopeColor(value, alpha) {\n // 0°~0.5°为平原0.00872686779075879,rgb(85,182,43)\n // 0.5°~2°为微斜坡0.03492076949174773,rgb(135,211,43)\n // 2°~5°为缓斜坡0.08748866352592401,rgb(204,244,44)\n // 5°~15°为斜坡0.2679491924311227,rgb(245,233,44)\n // 15°~35°为陡坡0.7002075382097097,rgb(255,138,43)\n // 35°~55°为峭坡1.4281480067421144,rgb(255,84,43)\n // 55°~90°为垂直壁,rgb(255,32,43)\n if (value < 0.00872686779075879) {\n return \"rgba(85,182,43,\" + alpha + \")\";\n } else if (value < 0.03492076949174773) {\n return \"rgba(135,211,43,\" + alpha + \")\";\n } else if (value < 0.08748866352592401) {\n return \"rgba(204,244,44,\" + alpha + \")\";\n } else if (value < 0.2679491924311227) {\n return \"rgba(245,233,44,\" + alpha + \")\";\n } else if (value < 0.7002075382097097) {\n return \"rgba(255,138,43,\" + alpha + \")\";\n } else if (value < 1.4281480067421144) {\n return \"rgba(255,84,43,\" + alpha + \")\";\n } else {\n return \"rgba(255,32,43,\" + alpha + \")\";\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n this.result && this.result.forEach(function (element) {\n _this6.viewer.scene.primitives.remove(element);\n });\n this.result = [];\n this.sdk.viewer.scene.preRender.removeEventListener(this._watchEvent, this);\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (SlopeAspect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Nsb3BlQXNwZWN0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9TbG9wZUFzcGVjdC9pbmRleC5qcz9jOGM5Il0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCBEcmF3UG9seWdvbiBmcm9tIFwiLi4vLi4vLi4vRHJhdy9kcmF3UG9seWdvblwiXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5jbGFzcyBTbG9wZUFzcGVjdCBleHRlbmRzIFRvb2xzIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3Ig5Z2h5bqm5Z2h5ZCR5YiG5p6QXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqICoqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgc3VwZXIoc2RrKVxyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyO1xyXG4gICAgbGV0IHRlcnJhaW5BdmFpbGFiaWxpdHkgPSB0aGlzLnZpZXdlci50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5O1xyXG4gICAgaWYgKCF0ZXJyYWluQXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSAn5pyq5Yqg6L295Zyw5b2i5pWw5o2u77yBJ1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnRcclxuICAgIHRoaXMucmVzdWx0ID0gW107IC8v5a2Y5YKo5Yib5bu655qE5Z2h5bqm5YiG5p6Q57uT5p6c77yMcHJpbWl0aXZl6ZuG5ZCIXHJcbiAgICB0aGlzLmhhbmRsZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRvb2xUaXAgPSBcIlwiO1xyXG4gICAgdGhpcy50b29scyA9IG5ldyBUb29scyhzZGspXHJcbiAgICBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgdGhpcy5EcmF3ID0gbmV3IERyYXdQb2x5Z29uKHRoaXMuc2RrLCB7IHRpcFRleHQ6ICflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlnaHluqbliIbmnpAhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSA5LiK5LiA5Liq5o6n5Yi254K5JyB9KVxyXG4gICAgLy8gdGhpcy5jcmVhdGVOZXc0RGlzdGFuY2UoKVxyXG4gICAgdGhpcy5jcmVhdGVOZXc0TnVtKDUwKVxyXG4gIH1cclxuXHJcbiAgLy/nrYnot53nprvliIfliIbnvZHmoLxcclxuICBjcmVhdGVOZXc0RGlzdGFuY2UoZGlzdGFuY2UpIHtcclxuICAgIGRpc3RhbmNlID0gZGlzdGFuY2UgfHwgMC4xOyAvL+m7mOiupDAuMWtt57K+5bqmXHJcbiAgICBsZXQgd2lkdGggPSBkaXN0YW5jZSAqIDIwMCA+IDM1ID8gMzUgOiBkaXN0YW5jZSAqIDIwMDtcclxuICAgIHRoaXMuYXJyb3dXaWR0aCA9IHdpZHRoIDwgMTUgPyAxNSA6IHdpZHRoO1xyXG4gICAgY29uc3QgJHRoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgdmlld2VyID0gdGhpcy52aWV3ZXI7XHJcbiAgICB0aGlzLkRyYXcuc3RhcnQoKGUsIHBvc2l0aW9ucykgPT4ge1xyXG4gICAgICBpZiAoIXBvc2l0aW9ucyB8fCBwb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIGlmIChlID49IDMpIHtcclxuICAgICAgICAgIHRoaXMuRHJhdy50aXBUZXh0ID0gJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+e7k+adn+WdoeW6puWIhuaekCEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIAnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5EcmF3LnRpcFRleHQgPSAn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5Z2h5bqm5YiG5p6QISBDVFJMK+WPs+mUruWNleWHu+aSpOmUgOS4iuS4gOS4quaOp+WItueCuSdcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGJvdW5kYXJ5ID0gW107XHJcbiAgICAgIGxldCBtaW5YID0gMTAwMDAsXHJcbiAgICAgICAgbWluWSA9IDEwMDAwLFxyXG4gICAgICAgIG1heFggPSAtMTAwMDAsXHJcbiAgICAgICAgbWF4WSA9IC0xMDAwO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcG9zaXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb3NpdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHggPSBlbGVtZW50LmxuZztcclxuICAgICAgICBjb25zdCB5ID0gZWxlbWVudC5sYXQ7XHJcbiAgICAgICAgYm91bmRhcnkucHVzaChbeCwgeV0pO1xyXG4gICAgICAgIG1pblggPSB4IDwgbWluWCA/IHggOiBtaW5YO1xyXG4gICAgICAgIG1pblkgPSB5IDwgbWluWSA/IHkgOiBtaW5ZO1xyXG4gICAgICAgIG1heFggPSB4ID4gbWF4WCA/IHggOiBtYXhYO1xyXG4gICAgICAgIG1heFkgPSB5ID4gbWF4WSA/IHkgOiBtYXhZO1xyXG4gICAgICB9XHJcbiAgICAgIGJvdW5kYXJ5LnB1c2goYm91bmRhcnlbMF0pO1xyXG4gICAgICBsZXQgYmJveCA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcclxuICAgICAgbGV0IG1hc2sgPSB0dXJmLnBvbHlnb24oW2JvdW5kYXJ5XSk7XHJcbiAgICAgIGxldCBncmlkU3F1YXJlID0gdHVyZi5zcXVhcmVHcmlkKGJib3gsIGRpc3RhbmNlLCB7IG1hc2s6IG1hc2sgfSk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRWxsaXBzZShncmlkU3F1YXJlKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIOetieWIhuWIh+WIhue9keagvO+8jOWIh+WIhuaIkOS4gOS4qm51bSpudW3nmoTnvZHmoLxcclxuICBjcmVhdGVOZXc0TnVtKG4pIHtcclxuICAgIGxldCBudW0gPSBuXHJcbiAgICB0aGlzLkRyYXcuc3RhcnQoKGUsIHBvc2l0aW9ucykgPT4ge1xyXG4gICAgICBpZiAoIXBvc2l0aW9ucyB8fCBwb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIGlmIChlID49IDMpIHtcclxuICAgICAgICAgIHRoaXMuRHJhdy50aXBUZXh0ID0gJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+e7k+adn+WdoeW6puWIhuaekCEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIAnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5EcmF3LnRpcFRleHQgPSAn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5Z2h5bqm5YiG5p6QISBDVFJMK+WPs+mUruWNleWHu+aSpOmUgOS4iuS4gOS4quaOp+WItueCuSdcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGJvdW5kYXJ5ID0gW107XHJcbiAgICAgIGxldCBtaW5YID0gMTAwMDAsXHJcbiAgICAgICAgbWluWSA9IDEwMDAwLFxyXG4gICAgICAgIG1heFggPSAtMTAwMDAsXHJcbiAgICAgICAgbWF4WSA9IC0xMDAwO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcG9zaXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb3NpdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHggPSBlbGVtZW50LmxuZztcclxuICAgICAgICBjb25zdCB5ID0gZWxlbWVudC5sYXQ7XHJcbiAgICAgICAgYm91bmRhcnkucHVzaChbeCwgeV0pO1xyXG4gICAgICAgIG1pblggPSB4IDwgbWluWCA/IHggOiBtaW5YO1xyXG4gICAgICAgIG1pblkgPSB5IDwgbWluWSA/IHkgOiBtaW5ZO1xyXG4gICAgICAgIG1heFggPSB4ID4gbWF4WCA/IHggOiBtYXhYO1xyXG4gICAgICAgIG1heFkgPSB5ID4gbWF4WSA/IHkgOiBtYXhZO1xyXG4gICAgICB9XHJcbiAgICAgIGJvdW5kYXJ5LnB1c2goYm91bmRhcnlbMF0pO1xyXG4gICAgICBsZXQgYmJveCA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcclxuICAgICAgbGV0IGEgPSBtYXhYIC0gbWluWDtcclxuICAgICAgbGV0IGIgPSBtYXhZIC0gbWluWTtcclxuICAgICAgYiA9IGIgPiBhID8gYiA6IGE7XHJcblxyXG4gICAgICAvLyDmoLnmja7pnaLnp6/kv67mlLnnvZHmoLzmlbBcclxuICAgICAgbGV0IG1hc2sgPSB0dXJmLnBvbHlnb24oW2JvdW5kYXJ5XSk7XHJcbiAgICAgIGxldCBhcmVhID0gdHVyZi5hcmVhKG1hc2spO1xyXG4gICAgICBpZiAoYXJlYSA+IDUwMDAwMDAwMDAwMDApIHtcclxuICAgICAgICBudW0gPSBudW0gLSAyNTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhcmVhID4gMTAwMDAwMDAwMDAwMCkge1xyXG4gICAgICAgIG51bSA9IG51bSAtIDIwO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGFyZWEgPiA1MDAwMDAwMDAwMDApIHtcclxuICAgICAgICBudW0gPSBudW0gLSAxNTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhcmVhID4gMTAwMDAwMDAwMDAwKSB7XHJcbiAgICAgICAgbnVtID0gbnVtIC0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYXJlYSA+IDYwMDAwMDAwMDAwKSB7XHJcbiAgICAgICAgbnVtID0gbnVtIC0gNTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3RlcCA9IGIgLyBudW07XHJcbiAgICAgIGxldCB3aWR0aCA9IHN0ZXAgKiAyMDAwID4gMzUgPyAzNSA6IHN0ZXAgKiAyMDAwO1xyXG4gICAgICB0aGlzLmFycm93V2lkdGggPSB3aWR0aCA8IDE1ID8gMTUgOiB3aWR0aDtcclxuXHJcbiAgICAgIGxldCBncmlkU3F1YXJlID0gdHVyZi5zcXVhcmVHcmlkKGJib3gsIHN0ZXAsIHtcclxuICAgICAgICB1bml0czogXCJkZWdyZWVzXCIsXHJcbiAgICAgICAgbWFzazogbWFzayxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRWxsaXBzZShncmlkU3F1YXJlKTtcclxuICAgIH0pXHJcbiAgICAvLyBDcmVhdGVQb2x5Z29uT25Hcm91bmQoXHJcbiAgICAvLyAgIHZpZXdlcixcclxuICAgIC8vICAgW10sXHJcbiAgICAvLyAgIHtcclxuICAgIC8vICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRC53aXRoQWxwaGEoMC4xKSxcclxuICAgIC8vICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5ZRUxMT1csXHJcbiAgICAvLyAgICAgb3V0bGluZVdpZHRoOiAyLFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBmdW5jdGlvbiAocG9seWdvbikge1xyXG4gICAgLy8gICAgIGxldCBkZWdyZWVzID0gJHRoaXMuQ2FydGVzaWFuM0xpc3RUb1dHUzg0KHBvbHlnb24ucG90dGluZ1BvaW50KTtcclxuICAgIC8vICAgICB2aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHBvbHlnb24pO1xyXG4gICAgLy8gICAgIGxldCBib3VuZGFyeSA9IFtdO1xyXG4gICAgLy8gICAgIGxldCBtaW5YID0gMTAwMDAsXHJcbiAgICAvLyAgICAgICBtaW5ZID0gMTAwMDAsXHJcbiAgICAvLyAgICAgICBtYXhYID0gLTEwMDAwLFxyXG4gICAgLy8gICAgICAgbWF4WSA9IC0xMDAwO1xyXG4gICAgLy8gICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkZWdyZWVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgLy8gICAgICAgY29uc3QgZWxlbWVudCA9IGRlZ3JlZXNbaW5kZXhdO1xyXG4gICAgLy8gICAgICAgY29uc3QgeCA9IGVsZW1lbnQubG5nO1xyXG4gICAgLy8gICAgICAgY29uc3QgeSA9IGVsZW1lbnQubGF0O1xyXG4gICAgLy8gICAgICAgYm91bmRhcnkucHVzaChbeCwgeV0pO1xyXG4gICAgLy8gICAgICAgbWluWCA9IHggPCBtaW5YID8geCA6IG1pblg7XHJcbiAgICAvLyAgICAgICBtaW5ZID0geSA8IG1pblkgPyB5IDogbWluWTtcclxuICAgIC8vICAgICAgIG1heFggPSB4ID4gbWF4WCA/IHggOiBtYXhYO1xyXG4gICAgLy8gICAgICAgbWF4WSA9IHkgPiBtYXhZID8geSA6IG1heFk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGJvdW5kYXJ5LnB1c2goYm91bmRhcnlbMF0pO1xyXG4gICAgLy8gICAgIGxldCBiYm94ID0gW21pblgsIG1pblksIG1heFgsIG1heFldO1xyXG4gICAgLy8gICAgIGxldCBhID0gbWF4WCAtIG1pblg7XHJcbiAgICAvLyAgICAgbGV0IGIgPSBtYXhZIC0gbWluWTtcclxuICAgIC8vICAgICBiID0gYiA+IGEgPyBiIDogYTtcclxuICAgIC8vICAgICBjb25zdCBzdGVwID0gYiAvIG51bTtcclxuICAgIC8vICAgICBsZXQgd2lkdGggPSBzdGVwICogMjAwMCA+IDM1ID8gMzUgOiBzdGVwICogMjAwMDtcclxuICAgIC8vICAgICB0aGlzLmFycm93V2lkdGggPSB3aWR0aCA8IDE1ID8gMTUgOiB3aWR0aDtcclxuICAgIC8vICAgICBsZXQgbWFzayA9IHR1cmYucG9seWdvbihbYm91bmRhcnldKTtcclxuICAgIC8vICAgICBsZXQgZ3JpZFNxdWFyZSA9IHR1cmYuc3F1YXJlR3JpZChiYm94LCBzdGVwLCB7XHJcbiAgICAvLyAgICAgICB1bml0czogXCJkZWdyZWVzXCIsXHJcbiAgICAvLyAgICAgICBtYXNrOiBtYXNrLFxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIHRoaXMuY3JlYXRlRWxsaXBzZShncmlkU3F1YXJlKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gKTtcclxuICB9XHJcbiAgY3JlYXRlRWxsaXBzZShncmlkU3F1YXJlKSB7XHJcbiAgICBsZXQgYm94UmVzdWx0cyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGdyaWRTcXVhcmUuZmVhdHVyZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBncmlkU3F1YXJlLmZlYXR1cmVzW2luZGV4XTtcclxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICBjb25zdCBjZW50ZXJkZWdyZWUgPSBbXHJcbiAgICAgICAgKGNvb3JkaW5hdGVzWzBdWzBdICsgY29vcmRpbmF0ZXNbMl1bMF0pIC8gMixcclxuICAgICAgICAoY29vcmRpbmF0ZXNbMF1bMV0gKyBjb29yZGluYXRlc1syXVsxXSkgLyAyLFxyXG4gICAgICBdO1xyXG4gICAgICBsZXQgY2VudGVyQ2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICBjZW50ZXJkZWdyZWVbMF0sXHJcbiAgICAgICAgY2VudGVyZGVncmVlWzFdXHJcbiAgICAgICk7XHJcbiAgICAgIGJveFJlc3VsdHMucHVzaChjZW50ZXJDYXJ0b2dyYXBoaWMpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY29vcmQgPSBjb29yZGluYXRlc1tpXTtcclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjb29yZFswXSwgY29vcmRbMV0pO1xyXG4gICAgICAgIGJveFJlc3VsdHMucHVzaChjYXJ0b2dyYXBoaWMpO1xyXG4gICAgICAgIGNvbnN0IGNvb3JkMSA9IGNvb3JkaW5hdGVzW2kgKyAxXTtcclxuICAgICAgICBpZiAoY29vcmQxKSB7XHJcbiAgICAgICAgICBsZXQgbmV3Q29vcmQgPSBbXHJcbiAgICAgICAgICAgIChjb29yZFswXSArIGNvb3JkMVswXSkgLyAyLFxyXG4gICAgICAgICAgICAoY29vcmRbMV0gKyBjb29yZDFbMV0pIC8gMixcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBsZXQgbmV3Q2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgbmV3Q29vcmRbMF0sXHJcbiAgICAgICAgICAgIG5ld0Nvb3JkWzFdXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYm94UmVzdWx0cy5wdXNoKG5ld0NhcnRvZ3JhcGhpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICAvLyDngrnkvY3ov4flpJrvvIzliIbkuLrkuInku73orqHnrpdcclxuICAgIGxldCBudW0gPSAoTWF0aC5mbG9vcihib3hSZXN1bHRzLmxlbmd0aCAvIDMpICsgJycpXHJcbiAgICBudW0gPSBOdW1iZXIobnVtLnN1YnN0cmluZygwLCBudW0ubGVuZ3RoIC0gMSkpICogMTBcclxuICAgIGxldCBpID0gMFxyXG4gICAgbGV0IHBvaW50cyA9IGJveFJlc3VsdHMuc2xpY2UoaSAqIG51bSwgKGkgKyAxKSAqIG51bSlcclxuICAgIGlmIChwb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBzYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKHBvaW50cylcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQocHMpIHtcclxuICAgICAgQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQoXHJcbiAgICAgICAgX3RoaXMudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICBwc1xyXG4gICAgICApLnRoZW4oKHVwZGF0ZVBvc2l0aW9ucykgPT4ge1xyXG4gICAgICAgIGkrK1xyXG4gICAgICAgIGxldCBwb2ludHMgPSBib3hSZXN1bHRzLnNsaWNlKGkgKiBudW0sIChpICsgMSkgKiBudW0pXHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBzYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKHBvaW50cylcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFycnIgPSBbXTtcclxuICAgICAgICBsZXQgZWxsaXBzZVJlc3VsdHMgPSB1cGRhdGVQb3NpdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChcclxuICAgICAgICAgIHByZSxcclxuICAgICAgICAgIGl0ZW0sXHJcbiAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uc1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdmFyIGJlZ2luID0gaW5kZXggKiAxMDtcclxuICAgICAgICAgIHZhciBlbmQgPSBiZWdpbiArIDEwO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHVwZGF0ZVBvc2l0aW9ucy5zbGljZShiZWdpbiwgZW5kKTtcclxuICAgICAgICAgIGlmIChyZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgYXJycltpbmRleF0gPSByZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYXJycjtcclxuICAgICAgICB9LFxyXG4gICAgICAgICAgW10pO1xyXG4gICAgICAgIF90aGlzLmNhbGN1bGF0ZVNsb3BlKGVsbGlwc2VSZXN1bHRzKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9seWdvbkluc3JhbmNlKHBvaW50cywgY29sb3IsIGN1clNsb3BlKSB7XHJcbiAgICBsZXQgcG9zaXRpb25zID0gW107XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgcG9pbnRzLmxlbmd0aCAtIDE7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHBvaW50c1tpbmRleF07XHJcbiAgICAgIHBvc2l0aW9ucy5wdXNoKENlc2l1bS5DYXJ0b2dyYXBoaWMudG9DYXJ0ZXNpYW4oZWxlbWVudCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IHBvbHlnb24gPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeSh7XHJcbiAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb3NpdGlvbnMpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBvbHlnb25JbnN0YW5jZSA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgIGlkOiB7XHJcbiAgICAgICAgdHlwZTogXCJTbG9wZUFzcGVjdFwiLFxyXG4gICAgICAgIHZhbHVlOiBjdXJTbG9wZVxyXG4gICAgICB9LFxyXG4gICAgICBnZW9tZXRyeTogcG9seWdvbixcclxuICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoY29sb3IpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLCAvL+aYvuekuuaIluiAhemakOiXj1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcG9seWdvbkluc3RhbmNlO1xyXG4gIH1cclxuICBjcmVhdGVBcnJvd0luc3RhbmNlKFxyXG4gICAgdGFyZ2V0UG9pbnQsXHJcbiAgICBjZW50ZXIsXHJcbiAgICBkaWFnb25hbFBvaW50LFxyXG4gICAgaGVpZ2h0RGlmZmVyZW5jZSxcclxuICAgIGN1clNsb3BlXHJcbiAgKSB7XHJcbiAgICBsZXQgY2FydG9ncmFwaGljXzAgPSBuZXcgQ2VzaXVtLkNhcnRvZ3JhcGhpYyhcclxuICAgICAgKHRhcmdldFBvaW50LmxvbmdpdHVkZSArIGNlbnRlci5sb25naXR1ZGUpIC8gMixcclxuICAgICAgKHRhcmdldFBvaW50LmxhdGl0dWRlICsgY2VudGVyLmxhdGl0dWRlKSAvIDIsXHJcbiAgICAgICh0YXJnZXRQb2ludC5oZWlnaHQgKyBjZW50ZXIuaGVpZ2h0KSAvIDJcclxuICAgICk7XHJcbiAgICBsZXQgY2FydG9ncmFwaGljXzEgPSBuZXcgQ2VzaXVtLkNhcnRvZ3JhcGhpYyhcclxuICAgICAgKGRpYWdvbmFsUG9pbnQubG9uZ2l0dWRlICsgY2VudGVyLmxvbmdpdHVkZSkgLyAyLFxyXG4gICAgICAoZGlhZ29uYWxQb2ludC5sYXRpdHVkZSArIGNlbnRlci5sYXRpdHVkZSkgLyAyLFxyXG4gICAgICAoZGlhZ29uYWxQb2ludC5oZWlnaHQgKyBjZW50ZXIuaGVpZ2h0KSAvIDJcclxuICAgICk7XHJcbiAgICAvL+WBj+enu+eahFxyXG4gICAgbGV0IHBvc2l0aW9uczEgPVxyXG4gICAgICBoZWlnaHREaWZmZXJlbmNlID4gMFxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy50b0NhcnRlc2lhbihjYXJ0b2dyYXBoaWNfMCksXHJcbiAgICAgICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLnRvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpY18xKSxcclxuICAgICAgICBdXHJcbiAgICAgICAgOiBbXHJcbiAgICAgICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLnRvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpY18xKSxcclxuICAgICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMudG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljXzApLFxyXG4gICAgICAgIF07XHJcbiAgICAvL+eureWktOe6v1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICBpZDoge1xyXG4gICAgICAgIHR5cGU6IFwiU2xvcGVBc3BlY3RcIixcclxuICAgICAgICB2YWx1ZTogY3VyU2xvcGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGdlb21ldHJ5OiBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvc2l0aW9uczogcG9zaXRpb25zMSxcclxuICAgICAgICB3aWR0aDogdGhpcy5hcnJvd1dpZHRoLFxyXG4gICAgICB9KSxcclxuICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgIENlc2l1bS5Db2xvci5CTFVFLndpdGhBbHBoYSgwLjYpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLCAvL+aYvuekuuaIluiAhemakOiXj1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaW5zdGFuY2U7XHJcbiAgfVxyXG4gIGNhbGN1bGF0ZVNsb3BlKGVsbGlwc2VSZXN1bHRzKSB7XHJcbiAgICBsZXQgaW5zdGFuY2VzID0gW107XHJcbiAgICBsZXQgcG9seWdvbkluc3RhbmNlID0gW107XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZWxsaXBzZVJlc3VsdHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsbGlwc2UgPSBlbGxpcHNlUmVzdWx0c1tpbmRleF07XHJcblxyXG4gICAgICBjb25zdCBjZW50ZXIgPSBlbGxpcHNlWzBdO1xyXG4gICAgICBsZXQgaGVpZ2h0RGlmZmVyZW5jZSA9IDA7XHJcbiAgICAgIGxldCBtYXhJbmRleCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZWxsaXBzZS5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwb2ludCA9IGVsbGlwc2VbaV07XHJcbiAgICAgICAgbGV0IGN1ckhEID0gcG9pbnQuaGVpZ2h0IC0gY2VudGVyLmhlaWdodDtcclxuICAgICAgICBpZiAoTWF0aC5hYnMoY3VySEQpID4gaGVpZ2h0RGlmZmVyZW5jZSkge1xyXG4gICAgICAgICAgaGVpZ2h0RGlmZmVyZW5jZSA9IGN1ckhEO1xyXG4gICAgICAgICAgbWF4SW5kZXggPSBpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zMCA9IG5ldyBDZXNpdW0uQ2FydG9ncmFwaGljKGNlbnRlci5sb25naXR1ZGUsIGNlbnRlci5sYXRpdHVkZSwgMCk7XHJcbiAgICAgIGxldCBwb3MxID0gbmV3IENlc2l1bS5DYXJ0b2dyYXBoaWMoXHJcbiAgICAgICAgZWxsaXBzZVttYXhJbmRleF0ubG9uZ2l0dWRlLFxyXG4gICAgICAgIGVsbGlwc2VbbWF4SW5kZXhdLmxhdGl0dWRlLFxyXG4gICAgICAgIDBcclxuICAgICAgKTtcclxuICAgICAgbGV0IGRpc3RhbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy50b0NhcnRlc2lhbihwb3MwKSxcclxuICAgICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLnRvQ2FydGVzaWFuKHBvczEpXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBjdXJTbG9wZSA9IE1hdGguYWJzKGhlaWdodERpZmZlcmVuY2UgLyBkaXN0YW5jZSk7IC8v5Z2h5bqm55qEdGFu5YC8XHJcbiAgICAgIGxldCBjdXJDb2xvciA9IHRoaXMuY2FsY3VsYXRlU2xvcGVDb2xvcihjdXJTbG9wZSwgMC40KTtcclxuICAgICAgY29uc3QgY3VyUG9seWdvbkluc3RhbmNlID0gdGhpcy5jcmVhdGVQb2x5Z29uSW5zcmFuY2UoZWxsaXBzZSwgY3VyQ29sb3IsIGN1clNsb3BlKTtcclxuICAgICAgcG9seWdvbkluc3RhbmNlLnB1c2goY3VyUG9seWdvbkluc3RhbmNlKTtcclxuXHJcbiAgICAgIGxldCBkaWFnb25hbFBvaW50ID1cclxuICAgICAgICBtYXhJbmRleCA+IDQgPyBlbGxpcHNlW21heEluZGV4IC0gNF0gOiBlbGxpcHNlW21heEluZGV4ICsgNF07IC8v5a+56KeS54K5XHJcbiAgICAgIGxldCB0YXJnZXRQb2ludCA9IGVsbGlwc2VbbWF4SW5kZXhdO1xyXG4gICAgICBjb25zdCBhcnJvd0luc3RhbmNlID0gdGhpcy5jcmVhdGVBcnJvd0luc3RhbmNlKFxyXG4gICAgICAgIHRhcmdldFBvaW50LFxyXG4gICAgICAgIGNlbnRlcixcclxuICAgICAgICBkaWFnb25hbFBvaW50LFxyXG4gICAgICAgIGhlaWdodERpZmZlcmVuY2UsXHJcbiAgICAgICAgY3VyU2xvcGVcclxuICAgICAgKTtcclxuICAgICAgaW5zdGFuY2VzLnB1c2goYXJyb3dJbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtYXBQcmltaXRpdmUgPSB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5Hcm91bmRQcmltaXRpdmUoe1xyXG4gICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBwb2x5Z29uSW5zdGFuY2UsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5QZXJJbnN0YW5jZUNvbG9yQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSwgLy9mYWxzZeaXtumAj+aYjuW6puaXoOaViFxyXG4gICAgICAgICAgY2xvc2VkOiBmYWxzZSxcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBjb25zdCBhcnJvd1ByaW1pdGl2ZSA9IHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogaW5zdGFuY2VzLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uTWF0ZXJpYWwoe1xyXG4gICAgICAgICAgICBmYWJyaWM6IHtcclxuICAgICAgICAgICAgICB0eXBlOiBcIlBvbHlsaW5lQXJyb3dcIixcclxuICAgICAgICAgICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IoMS4wLCAxLjAsIDAuMCwgMC44KSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5yZXN1bHQucHVzaChhcnJvd1ByaW1pdGl2ZSwgbWFwUHJpbWl0aXZlKTtcclxuXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICBsZXQgbW91c2VFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIGxldCBpbmZvQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Nsb3BlQXNwZWN0LWJveCcpXHJcbiAgICAgIGlmICghaW5mb0JveCkge1xyXG4gICAgICAgIGluZm9Cb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgIGluZm9Cb3guaWQgPSAnU2xvcGVBc3BlY3QtYm94J1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbiAgICAgICAgaW5mb0JveC5zdHlsZS5iYWNrZ3JvdW5kID0gJyMzMzMzMzMnXHJcbiAgICAgICAgaW5mb0JveC5zdHlsZS5jb2xvciA9ICcjZmZmJ1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUuY29sb3IgPSAnI2ZmZidcclxuICAgICAgICBpbmZvQm94LnN0eWxlLnBhZGRpbmcgPSAnNXB4J1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUuZm9udFNpemUgPSAnMTJweCdcclxuICAgICAgICBpbmZvQm94LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc1cHgnXHJcbiAgICAgICAgaW5mb0JveC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC01MCUsIC0xMHB4KSdcclxuICAgICAgICBpbmZvQm94LmlubmVySFRNTCA9IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj7lnaHluqbvvJo8L2Rpdj5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIlxyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgYm9yZGVyOiA0cHggc29saWQ7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6ICNmZmYwICNmZmYwICMzMzMzMzMgIzMzMzMzMztcclxuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XHJcbiAgICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDVweCk7XHJcbiAgICAgICAgXCI+PC9zcGFuPlxyXG4gICAgICAgIGBcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGluZm9Cb3gpXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZsYUVsbSA9IGluZm9Cb3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndmFsdWUnKVswXVxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IC4uLm1vdmVtZW50LnBvc2l0aW9uIH1cclxuICAgICAgbGV0IHBpY2tlZE9iamVjdCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKHBvc2l0aW9uKTtcclxuICAgICAgaWYgKHBpY2tlZE9iamVjdCAmJiBwaWNrZWRPYmplY3QuaWQgJiYgcGlja2VkT2JqZWN0LmlkLnR5cGUgJiYgcGlja2VkT2JqZWN0LmlkLnR5cGUgPT09IFwiU2xvcGVBc3BlY3RcIikge1xyXG4gICAgICAgIGxldCB0b3AgPSAwXHJcbiAgICAgICAgbGV0IGxlZnQgPSAwXHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIgJiYgdGhpcy5zZGsudmlld2VyLl9lbGVtZW50KSB7XHJcbiAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMuc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgICAgICAgICB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZXHJcbiAgICAgICAgICBsZWZ0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5mb0JveC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICAgIGluZm9Cb3guc3R5bGUubGVmdCA9IHBvc2l0aW9uLnggKyAyICsgbGVmdCArICdweCdcclxuICAgICAgICBpbmZvQm94LnN0eWxlLnRvcCA9IHBvc2l0aW9uLnkgLSAyMCArIHRvcCArICdweCdcclxuICAgICAgICB2bGFFbG0uaW5uZXJIVE1MID0gJ+WdoeW6pu+8micgKyBOdW1iZXIoQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBpY2tlZE9iamVjdC5pZC52YWx1ZSB8fCAwKS50b0ZpeGVkKDIpKSArICfCsCdcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpbmZvQm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIGxldCBuZXdNb3ZlbWVudCA9IHtcclxuICAgICAgICBwb3NpdGlvbjogeyAuLi5tb3ZlbWVudC5lbmRQb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgbW91c2VFdmVudChuZXdNb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChtb3VzZUV2ZW50KVxyXG5cclxuICAgIHRoaXMuX2NhbWVyYSA9IHtcclxuICAgICAgcG9zaXRpb246IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sXHJcbiAgICAgIGhlYWRpbmc6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgcGl0Y2g6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgIHJvbGw6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgfVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByZVJlbmRlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuX3dhdGNoRXZlbnQsIHRoaXMpXHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5jbG9jay5vblRpY2suYWRkRXZlbnRMaXN0ZW5lcigoKSA9PiB7XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coMTExMTExKVxyXG4gICAgLy8gICAgIGxldCBpbmZvQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Nsb3BlQXNwZWN0LWJveCcpXHJcbiAgICAvLyAgICAgaWYoaW5mb0JveCkge1xyXG4gICAgLy8gICAgICAgaW5mb0JveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gIH0pXHJcbiAgfVxyXG5cclxuICBfd2F0Y2hFdmVudCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLngudG9GaXhlZCg4KSAhPT0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbi54LnRvRml4ZWQoOCkgfHxcclxuICAgICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnkudG9GaXhlZCg4KSAhPT0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbi55LnRvRml4ZWQoOCkgfHxcclxuICAgICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnoudG9GaXhlZCg4KSAhPT0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbi56LnRvRml4ZWQoOCkgfHxcclxuICAgICAgdGhpcy5fY2FtZXJhLmhlYWRpbmcudG9GaXhlZCg4KSAhPT0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLnRvRml4ZWQoOCkgfHxcclxuICAgICAgdGhpcy5fY2FtZXJhLnBpdGNoLnRvRml4ZWQoOCkgIT09IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gudG9GaXhlZCg4KSB8fFxyXG4gICAgICB0aGlzLl9jYW1lcmEucm9sbC50b0ZpeGVkKDgpICE9PSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnJvbGwudG9GaXhlZCg4KVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBpbmZvQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Nsb3BlQXNwZWN0LWJveCcpXHJcbiAgICAgIGlmIChpbmZvQm94KSB7XHJcbiAgICAgICAgaW5mb0JveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2NhbWVyYSA9IHtcclxuICAgICAgcG9zaXRpb246IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sXHJcbiAgICAgIGhlYWRpbmc6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgcGl0Y2g6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgIHJvbGw6IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/moLnmja7lnaHluqblgLzotYvlgLzpopzoibJcclxuICBjYWxjdWxhdGVTbG9wZUNvbG9yKHZhbHVlLCBhbHBoYSkge1xyXG4gICAgLy8gMMKw772eMC41wrDkuLrlubPljp8wLjAwODcyNjg2Nzc5MDc1ODc5LHJnYig4NSwxODIsNDMpXHJcbiAgICAvLyAwLjXCsO+9njLCsOS4uuW+ruaWnOWdoTAuMDM0OTIwNzY5NDkxNzQ3NzMscmdiKDEzNSwyMTEsNDMpXHJcbiAgICAvLyAywrDvvZ41wrDkuLrnvJPmlpzlnaEwLjA4NzQ4ODY2MzUyNTkyNDAxLHJnYigyMDQsMjQ0LDQ0KVxyXG4gICAgLy8gNcKw772eMTXCsOS4uuaWnOWdoTAuMjY3OTQ5MTkyNDMxMTIyNyxyZ2IoMjQ1LDIzMyw0NClcclxuICAgIC8vIDE1wrDvvZ4zNcKw5Li66Zmh5Z2hMC43MDAyMDc1MzgyMDk3MDk3LHJnYigyNTUsMTM4LDQzKVxyXG4gICAgLy8gMzXCsO+9njU1wrDkuLrls63lnaExLjQyODE0ODAwNjc0MjExNDQscmdiKDI1NSw4NCw0MylcclxuICAgIC8vIDU1wrDvvZ45MMKw5Li65Z6C55u05aOBLHJnYigyNTUsMzIsNDMpXHJcbiAgICBpZiAodmFsdWUgPCAwLjAwODcyNjg2Nzc5MDc1ODc5KSB7XHJcbiAgICAgIHJldHVybiBcInJnYmEoODUsMTgyLDQzLFwiICsgYWxwaGEgKyBcIilcIjtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPCAwLjAzNDkyMDc2OTQ5MTc0NzczKSB7XHJcbiAgICAgIHJldHVybiBcInJnYmEoMTM1LDIxMSw0MyxcIiArIGFscGhhICsgXCIpXCI7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMC4wODc0ODg2NjM1MjU5MjQwMSkge1xyXG4gICAgICByZXR1cm4gXCJyZ2JhKDIwNCwyNDQsNDQsXCIgKyBhbHBoYSArIFwiKVwiO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDAuMjY3OTQ5MTkyNDMxMTIyNykge1xyXG4gICAgICByZXR1cm4gXCJyZ2JhKDI0NSwyMzMsNDQsXCIgKyBhbHBoYSArIFwiKVwiO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDAuNzAwMjA3NTM4MjA5NzA5Nykge1xyXG4gICAgICByZXR1cm4gXCJyZ2JhKDI1NSwxMzgsNDMsXCIgKyBhbHBoYSArIFwiKVwiO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDEuNDI4MTQ4MDA2NzQyMTE0NCkge1xyXG4gICAgICByZXR1cm4gXCJyZ2JhKDI1NSw4NCw0MyxcIiArIGFscGhhICsgXCIpXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJyZ2JhKDI1NSwzMiw0MyxcIiArIGFscGhhICsgXCIpXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZXN1bHQgJiYgdGhpcy5yZXN1bHQuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXN1bHQgPSBbXTtcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl93YXRjaEV2ZW50LCB0aGlzKVxyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBTbG9wZUFzcGVjdDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUtBO0FBS0E7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/SlopeAspect/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Submerge/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Analysis/Submerge/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u6C34\\u91CF\\n
\\n \\n m\\xB3\\n \\n
\\n
\\n
\\n \\u6700\\u5C0F\\u6C34\\u4F4D\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u6C34\\u9762\\u9762\\u79EF\\n
\\n \\n \\u33A1\\n \\n
\\n
\\n
\\n \\u6700\\u5927\\u6C34\\u4F4D\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u4E0A\\u5347\\u901F\\u5EA6\\n
\\n
\\n
\\n \\n
\\n \\n m/s\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\u5E8F\\u53F7
\\n
\\u7ECF\\u5EA6
\\n
\\u7EAC\\u5EA6
\\n
\\u9AD8\\u7A0B
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\u6682\\u65E0\\u6570\\u636E

\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1N1Ym1lcmdlL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9TdWJtZXJnZS9fZWxlbWVudC5qcz8xM2MwIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuawtOmHjzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbmFtZT1cIndhdGVyVm9sdW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bcKzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDlsI/msLTkvY08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG5hbWU9XCJtaW5XYXRlckxldmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuawtOmdoumdouenrzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGFyZWFcIiB0eXBlPVwibnVtYmVyXCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+446hPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDlpKfmsLTkvY08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG5hbWU9XCJtYXhXYXRlckxldmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzdWJ0aXRsZS1ib3hcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPuS4iuWNh+mAn+W6pjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCI1MFwiIG1pbj1cIjBcIiBzdGVwPVwiMC4wMVwiIG5hbWU9XCJyaXNpbmdTcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTEwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBuYW1lPVwicmlzaW5nU3BlZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tL3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBvcGVyYXRlLWJ0bi1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcmF3XCI+PHN2ZyBjbGFzcz1cImljb24tZHJhd1wiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWRyYXdcIj48L3VzZT48L3N2Zz7nu5jliLbojIPlm7Q8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmbHl0b1wiPjxzdmcgY2xhc3M9XCJpY29uLXBvc2l0aW9uc1wiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXBvc2l0aW9uc1wiPjwvdXNlPjwvc3ZnPuWumuS9jTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0XCI+PHN2ZyBjbGFzcz1cImljb24tcmVzZXRcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1yZXNldFwiPjwvdXNlPjwvc3ZnPumHjee9rjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFuYWxvZ1wiPjxzdmcgY2xhc3M9XCJpY29uLXBsYXlcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1wbGF5XCI+PC91c2U+PC9zdmc+5byA5aeL5qih5oufPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGF1c2VcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMHB4O1wiPjxzdmcgY2xhc3M9XCJpY29uLXBhdXNlXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tcGF1c2VcIj48L3VzZT48L3N2Zz7mmoLlgZw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdGFydFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTttYXJnaW4tcmlnaHQ6IDBweDtcIj48c3ZnIGNsYXNzPVwiaWNvbi1wbGF5XCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tcGxheVwiPjwvdXNlPjwvc3ZnPuaSreaUvjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuW6j+WPtzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57uP5bqmPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nuqzluqY8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPumrmOeoizwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1lbXB0eVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxwPuaaguaXoOaVsOaNrjwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiIHN0eWxlPVwibWFyZ2luLXRvcDogMjBweDtcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUF3RkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Submerge/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Submerge/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Analysis/Submerge/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/Submerge/_element.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\nvar Submerge = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 淹没效果\r\n * */\n function Submerge(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Submerge);\n _this = _callSuper(this, Submerge, [sdk, options]);\n _this.sdk = sdk;\n _this.options = {};\n _this.options.name = options.name;\n _this.options.risingSpeed = 1;\n _this.options.minWaterLevel = 0;\n _this.options.maxWaterLevel = 0;\n _this.options.waterVolume = 0;\n _this.currentWaterLaver;\n _this.color = '#00d9ff66';\n _this.Dialog = _Dialog;\n _this.Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this.sdk, {\n tipText: '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点'\n });\n _this.positions;\n _this.status = true;\n _this.area = 0;\n _this._elms = {};\n _this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this.sdk);\n _this.callback = callback;\n YJ.Analysis.AnalysesResults.push(_this);\n // Submerge.EditBox(this)\n // Submerge.create(this)\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Submerge, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Submerge, [{\n key: \"draw\",\n value: function draw(func) {\n Submerge.create(this, func);\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {} else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"waterLevels\",\n get: function get() {\n return this.waterLevel;\n },\n set: function set(val) {\n this.waterLevel = val;\n }\n }, {\n key: \"waterVolume\",\n get: function get() {\n return this.options.waterVolume;\n },\n set: function set(val) {\n this.options.waterVolume = val;\n }\n }, {\n key: \"minWaterLevel\",\n get: function get() {\n return this.options.minWaterLevel;\n },\n set: function set(val) {\n this.options.minWaterLevel = val;\n this.currentWaterLaver = this.options.minWaterLevel;\n }\n }, {\n key: \"maxWaterLevel\",\n get: function get() {\n return this.options.maxWaterLevel;\n },\n set: function set(val) {\n this.options.maxWaterLevel = val;\n }\n }, {\n key: \"risingSpeed\",\n get: function get() {\n return this.options.risingSpeed;\n },\n set: function set(val) {\n this.options.risingSpeed = val;\n }\n }, {\n key: \"areas\",\n get: function get() {\n return this.area;\n },\n set: function set(val) {\n this.area = val;\n }\n }, {\n key: \"move\",\n value: function move() {\n var _this2 = this;\n // if (this.TweenAnimate) {\n // TWEEN.remove(this.TweenAnimate)\n // }\n var that = this;\n if (!this.TweenAnimate && this.options.risingSpeed) {\n var totalTime = (this.options.maxWaterLevel - this.options.minWaterLevel) / this.options.risingSpeed * 1000;\n this.TweenAnimate = new TWEEN.Tween({\n waterLevel: this.options.minWaterLevel\n }).to({\n waterLevel: this.options.maxWaterLevel\n }, totalTime).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this2.currentWaterLaver = r.waterLevel;\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()).onComplete(function () {\n that.callback();\n // 在这里执行动画结束后的逻辑\n }).start();\n } else if (!this.options.risingSpeed) {\n that.callback();\n }\n // let contentElm = this._DialogObject._element.body\n // let pauseBtn = contentElm.getElementsByClassName('pause')[0];\n // let startBtn = contentElm.getElementsByClassName('start')[0];\n // startBtn.style.display = 'none'\n // pauseBtn.style.display = 'flex'\n }\n }, {\n key: \"restart\",\n value: function restart() {\n var _this3 = this;\n this.currentWaterLaver = this.options.minWaterLevel;\n var isPaused = false;\n var that = this;\n if (this.TweenAnimate) {\n isPaused = this.TweenAnimate._isPaused;\n TWEEN.remove(this.TweenAnimate);\n }\n var totalTime = (this.options.maxWaterLevel - this.options.minWaterLevel) / this.options.risingSpeed * 1000;\n this.TweenAnimate = new TWEEN.Tween({\n waterLevel: this.options.minWaterLevel\n }).to({\n waterLevel: this.options.maxWaterLevel\n }, totalTime).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee2(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this3.currentWaterLaver = r.waterLevel;\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }()).onComplete(function () {\n that.callback();\n // 在这里执行动画结束后的逻辑\n }).start();\n // if (isPaused) {\n this.pause();\n // }\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.TweenAnimate) {\n this.TweenAnimate.resume();\n }\n }\n }, {\n key: \"pause\",\n value: function pause() {\n if (this.TweenAnimate) {\n this.TweenAnimate.pause();\n }\n }\n }, {\n key: \"calculateVolumeHeight\",\n value: function calculateVolumeHeight() {\n that.options.maxWaterLevel;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n if (!this.positions || this.positions.length === 0) {\n return;\n }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_11__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_11__[\"closeViewFollow\"])(this.sdk);\n var positionArray = [];\n for (var i = 0; i < this.positions.length; i++) {\n var fromDegrees = Cesium.Cartesian3.fromDegrees(this.positions[i].lng, this.positions[i].lat, this.options.maxWaterLevel);\n positionArray.push(fromDegrees.x, fromDegrees.y, fromDegrees.z);\n }\n var BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n }\n this.Draw && this.Draw.end();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n }\n }], [{\n key: \"create\",\n value: function create(that, func) {\n that.Draw.start(function (a, positions) {\n if (!positions || positions.length < 3) {\n if (a >= 3) {\n that.Draw.tipText = '左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销';\n } else {\n that.Draw.tipText = '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点';\n }\n return;\n }\n that.destroy();\n var fromDegreesArray = [];\n that.positions = positions;\n that._positions = positions;\n that.options.minWaterLevel = positions[0].alt;\n for (var i = 0; i < positions.length; i++) {\n if (that.options.minWaterLevel > positions[i].alt) {\n that.options.minWaterLevel = positions[i].alt;\n }\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n that.options.maxWaterLevel = positions[0].alt;\n for (var _i = 0; _i < positions.length; _i++) {\n if (that.options.minWaterLevel < positions[_i].alt) {\n that.options.maxWaterLevel = positions[_i].alt;\n }\n }\n\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.minWaterLevel)\n // }\n var pos = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n that.currentWaterLaver = that.options.minWaterLevel;\n that.entity = that.sdk.viewer.entities.add({\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(pos),\n height: new Cesium.CallbackProperty(function () {\n return that.options.minWaterLevel;\n }, false),\n extrudedHeight: new Cesium.CallbackProperty(function () {\n return that.currentWaterLaver;\n }, false),\n material: Cesium.Color.fromCssColorString(that.color)\n }\n });\n that.area = that.computeArea(positions);\n if (that.TweenAnimate) {\n TWEEN.remove(that.TweenAnimate);\n that.TweenAnimate = null;\n }\n that.waterLevel = that.options.maxWaterLevel - that.options.minWaterLevel;\n that.options.waterVolume = Number((that.waterLevel * that.area).toFixed(4));\n func && func(that.options.waterVolume);\n that.clickCallBack(that.area, that._positions);\n // let contentElm = that._DialogObject._element.body\n // let pauseBtn = contentElm.getElementsByClassName('pause')[0];\n // let startBtn = contentElm.getElementsByClassName('start')[0];\n // startBtn.style.display = 'flex'\n // pauseBtn.style.display = 'none'\n // that.move()\n // Submerge.EditBox(that)\n });\n }\n }, {\n key: \"EditBox\",\n value: function () {\n var _EditBox = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee3(that) {\n var contentElm, stopBtn, drawBtn, analogBtn, flytoBtn, resetBtn, pauseBtn, startBtn, e_risingSpeed, e_minWaterLevel, e_maxWaterLevel, e_waterVolume, e_area, e_tableBody, e_tableEmpty;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context3.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk.viewer._container, {\n title: '淹没分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.destroy();\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n }\n });\n case 3:\n that._DialogObject = _context3.sent;\n _context3.next = 6;\n return that._DialogObject.init();\n case 6:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' submerge';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_8__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n stopBtn = document.createElement('button');\n stopBtn.className = 'el-button';\n stopBtn.innerHTML = '暂停';\n stopBtn.style.width = '80px';\n drawBtn = contentElm.getElementsByClassName('draw')[0];\n drawBtn.addEventListener('click', function () {\n Submerge.create(that);\n });\n analogBtn = contentElm.getElementsByClassName('analog')[0];\n analogBtn.addEventListener('click', function () {\n that.move();\n });\n flytoBtn = contentElm.getElementsByClassName('flyto')[0];\n flytoBtn.addEventListener('click', function () {\n that.flyTo();\n });\n resetBtn = contentElm.getElementsByClassName('reset')[0];\n resetBtn.addEventListener('click', function () {\n that.restart();\n });\n pauseBtn = contentElm.getElementsByClassName('pause')[0];\n startBtn = contentElm.getElementsByClassName('start')[0];\n pauseBtn.addEventListener('click', function () {\n that.pause();\n pauseBtn.style.display = 'none';\n startBtn.style.display = 'flex';\n });\n startBtn.addEventListener('click', function () {\n that.start();\n startBtn.style.display = 'none';\n pauseBtn.style.display = 'flex';\n });\n\n // that._DialogObject.footAppChild(stopBtn)\n // that._DialogObject.footAppChild(resetBtn)\n // that._DialogObject.footAppChild(flytoBtn)\n // that._DialogObject.footAppChild(analogBtn)\n // that._DialogObject.footAppChild(drawBtn)\n\n // 速度\n e_risingSpeed = contentElm.querySelectorAll(\"input[name='risingSpeed']\");\n e_risingSpeed[0].value = that.options.risingSpeed;\n e_risingSpeed[1].value = that.options.risingSpeed;\n e_risingSpeed[0].addEventListener('input', function (e) {\n that.options.risingSpeed = Number(e.target.value);\n });\n e_risingSpeed[1].addEventListener('input', function (e) {\n if (e.data != '.') {\n var value = Number(e.target.value);\n var max = Number(e_risingSpeed[0].max);\n var min = Number(e_risingSpeed[0].min);\n if (value > max) {\n that.options.risingSpeed = max;\n } else if (value < min) {\n that.options.risingSpeed = min;\n } else {\n that.options.risingSpeed = Math.floor(value * 100) / 100;\n }\n }\n });\n Object.defineProperty(that.options, 'risingSpeed', {\n get: function get() {\n return e_risingSpeed[0].value;\n },\n set: function set(value) {\n e_risingSpeed[0].value = value;\n e_risingSpeed[1].value = value;\n }\n });\n that.waterLevel = that.options.maxWaterLevel - that.options.minWaterLevel;\n // 最低水位\n e_minWaterLevel = contentElm.querySelector(\"input[name='minWaterLevel']\");\n e_minWaterLevel.value = that.options.minWaterLevel;\n e_minWaterLevel.addEventListener('input', function (e) {\n if (e.data != '.') {\n var value = Number(e.target.value);\n if (value > 999999999) {\n value = 999999999;\n }\n if (value < 0) {\n value = 0;\n }\n that.options.minWaterLevel = Math.floor(value * 10000) / 10000;\n that.options.maxWaterLevel = that.options.minWaterLevel + that.waterLevel;\n }\n });\n Object.defineProperty(that.options, 'minWaterLevel', {\n get: function get() {\n return Number(e_minWaterLevel.value);\n },\n set: function set(value) {\n e_minWaterLevel.value = Math.floor(Number(value) * 10000) / 10000;\n }\n });\n\n // 最高水位\n e_maxWaterLevel = contentElm.querySelector(\"input[name='maxWaterLevel']\");\n e_maxWaterLevel.value = that.options.maxWaterLevel;\n e_maxWaterLevel.addEventListener('input', function (e) {\n if (e.data != '.') {\n var value = Number(e.target.value);\n if (value > 999999999) {\n value = 999999999;\n }\n if (value < 0) {\n value = 0;\n }\n if (value < that.options.minWaterLevel) {\n that.options.maxWaterLevel = that.options.minWaterLevel;\n } else {\n that.options.maxWaterLevel = Math.floor(value * 10000) / 10000;\n }\n that.waterLevel = that.options.maxWaterLevel - that.options.minWaterLevel;\n that.options.waterVolume = Number((that.waterLevel * that.area).toFixed(4));\n }\n });\n Object.defineProperty(that.options, 'maxWaterLevel', {\n get: function get() {\n return Number(e_maxWaterLevel.value);\n },\n set: function set(value) {\n if (isNaN(value)) {\n value = 0;\n }\n e_maxWaterLevel.value = Math.floor(Number(value) * 10000) / 10000;\n }\n });\n\n // 水量\n e_waterVolume = contentElm.querySelector(\"input[name='waterVolume']\");\n e_waterVolume.value = that.options.waterVolume;\n e_waterVolume.addEventListener('input', function (e) {\n if (e.data != '.') {\n var value = Number(e.target.value);\n if (value > 99999999999999) {\n value = 99999999999999;\n }\n if (value < 0) {\n value = 0;\n }\n that.options.waterVolume = Math.floor(value * 10000) / 10000;\n if (that.area) {\n that.waterLevel = Number((that.options.waterVolume / that.area).toFixed(4));\n that.options.maxWaterLevel = that.options.minWaterLevel + that.waterLevel;\n }\n }\n });\n Object.defineProperty(that.options, 'waterVolume', {\n get: function get() {\n return Number(e_waterVolume.value);\n },\n set: function set(value) {\n e_waterVolume.value = value;\n }\n });\n\n // 面积\n e_area = contentElm.getElementsByClassName('area')[0];\n e_area.value = that.area;\n Object.defineProperty(that, 'area', {\n get: function get() {\n return Number(e_area.value);\n },\n set: function set(value) {\n e_area.value = value;\n that.waterLevel = Number((that.options.waterVolume / that.area).toFixed(4));\n that.options.maxWaterLevel = that.options.minWaterLevel + that.waterLevel;\n }\n });\n // 表格\n e_tableBody = contentElm.getElementsByClassName('table-body')[0];\n e_tableEmpty = contentElm.getElementsByClassName('table-empty')[0];\n Object.defineProperty(that, 'positions', {\n get: function get() {\n return that._positions;\n },\n set: function set(value) {\n if (value && value.length > 0) {\n e_tableEmpty.style.display = 'none';\n var tr = '';\n for (var i = 0; i < value.length; i++) {\n tr = tr + \"
\\n
\".concat(i + 1, \"
\\n
\").concat(Number(value[i].lng.toFixed(10)), \"
\\n
\").concat(Number(value[i].lat.toFixed(10)), \"
\\n
\").concat(Number(value[i].alt.toFixed(4)), \"
\\n
\");\n }\n e_tableBody.innerHTML = tr;\n } else {\n e_tableBody.innerHTML = '';\n e_tableEmpty.style.display = 'flex';\n }\n }\n });\n case 51:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function EditBox(_x5) {\n return _EditBox.apply(this, arguments);\n }\n return EditBox;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n value = Number(value);\n }\n that[m.value] = value;\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Submerge);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1N1Ym1lcmdlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9TdWJtZXJnZS9pbmRleC5qcz8yZDY5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgRHJhd1BvbHlnb24gZnJvbSBcIi4uLy4uLy4uL0RyYXcvZHJhd1BvbHlnb25cIlxyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCB7IGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5jbGFzcyBTdWJtZXJnZSBleHRlbmRzIFRvb2xzIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOa3ueayoeaViOaenFxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSwgY2FsbGJhY2spIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLnNkayA9IHNka1xyXG4gICAgdGhpcy5vcHRpb25zID0ge31cclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLm9wdGlvbnMucmlzaW5nU3BlZWQgPSAxXHJcbiAgICB0aGlzLm9wdGlvbnMubWluV2F0ZXJMZXZlbCA9IDBcclxuICAgIHRoaXMub3B0aW9ucy5tYXhXYXRlckxldmVsID0gMFxyXG4gICAgdGhpcy5vcHRpb25zLndhdGVyVm9sdW1lID0gMFxyXG4gICAgdGhpcy5jdXJyZW50V2F0ZXJMYXZlclxyXG4gICAgdGhpcy5jb2xvciA9ICcjMDBkOWZmNjYnXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuRHJhdyA9IG5ldyBEcmF3UG9seWdvbih0aGlzLnNkaywgeyB0aXBUZXh0OiAn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI6IyD5Zu057uY5Yi2ISBDVFJMK+WPs+mUruWNleWHu+aSpOmUgOS4iuS4gOS4quaOp+WItueCuScgfSlcclxuICAgIHRoaXMucG9zaXRpb25zXHJcbiAgICB0aGlzLnN0YXR1cyA9IHRydWVcclxuICAgIHRoaXMuYXJlYSA9IDBcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMudG9vbHMgPSBuZXcgVG9vbHModGhpcy5zZGspXHJcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICAvLyBTdWJtZXJnZS5FZGl0Qm94KHRoaXMpXHJcbiAgICAvLyBTdWJtZXJnZS5jcmVhdGUodGhpcylcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGUodGhhdCwgZnVuYykge1xyXG4gICAgdGhhdC5EcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgICAgaWYgKCFwb3NpdGlvbnMgfHwgcG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICBpZiAoYSA+PSAzKSB7XHJcbiAgICAgICAgICB0aGF0LkRyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vnu5PmnZ/ojIPlm7Tnu5jliLYhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSAJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoYXQuRHJhdy50aXBUZXh0ID0gJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOiMg+WbtOe7mOWItiEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIDkuIrkuIDkuKrmjqfliLbngrknXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoYXQuZGVzdHJveSgpXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgdGhhdC5wb3NpdGlvbnMgPSBwb3NpdGlvbnNcclxuICAgICAgdGhhdC5fcG9zaXRpb25zID0gcG9zaXRpb25zXHJcbiAgICAgIHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsID0gcG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGF0Lm9wdGlvbnMubWluV2F0ZXJMZXZlbCA+IHBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsID0gcG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWwgPSBwb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsIDwgcG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWwgPSBwb3NpdGlvbnNbaV0uYWx0XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWwpXHJcbiAgICAgIC8vIH1cclxuICAgICAgbGV0IHBvcyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgdGhhdC5jdXJyZW50V2F0ZXJMYXZlciA9IHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsXHJcbiAgICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkocG9zKSxcclxuICAgICAgICAgIGhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsXHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICBleHRydWRlZEhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQuY3VycmVudFdhdGVyTGF2ZXJcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuYXJlYSA9IHRoYXQuY29tcHV0ZUFyZWEocG9zaXRpb25zKVxyXG4gICAgICBpZiAodGhhdC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICBUV0VFTi5yZW1vdmUodGhhdC5Ud2VlbkFuaW1hdGUpXHJcbiAgICAgICAgdGhhdC5Ud2VlbkFuaW1hdGUgPSBudWxsXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoYXQud2F0ZXJMZXZlbCA9IHRoYXQub3B0aW9ucy5tYXhXYXRlckxldmVsIC0gdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWxcclxuICAgICAgdGhhdC5vcHRpb25zLndhdGVyVm9sdW1lID0gTnVtYmVyKCh0aGF0LndhdGVyTGV2ZWwgKiB0aGF0LmFyZWEpLnRvRml4ZWQoNCkpXHJcbiAgICAgIGZ1bmMgJiYgZnVuYyh0aGF0Lm9wdGlvbnMud2F0ZXJWb2x1bWUpXHJcbiAgICAgIHRoYXQuY2xpY2tDYWxsQmFjayh0aGF0LmFyZWEsIHRoYXQuX3Bvc2l0aW9ucylcclxuICAgICAgLy8gbGV0IGNvbnRlbnRFbG0gPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keVxyXG4gICAgICAvLyBsZXQgcGF1c2VCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhdXNlJylbMF07XHJcbiAgICAgIC8vIGxldCBzdGFydEJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RhcnQnKVswXTtcclxuICAgICAgLy8gc3RhcnRCdG4uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAvLyBwYXVzZUJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIC8vIHRoYXQubW92ZSgpXHJcbiAgICAgIC8vIFN1Ym1lcmdlLkVkaXRCb3godGhhdClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGRyYXcoZnVuYykge1xyXG4gICAgU3VibWVyZ2UuY3JlYXRlKHRoaXMsIGZ1bmMpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgRWRpdEJveCh0aGF0KSB7XHJcbiAgICBpZiAodGhhdC5fRGlhbG9nT2JqZWN0ICYmIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGF0Ll9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoYXQuc2RrLnZpZXdlci5fY29udGFpbmVyLCB7XHJcbiAgICAgIHRpdGxlOiAn5re55rKh5YiG5p6QJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhhdC5kZXN0cm95KClcclxuICAgICAgICB0aGF0LkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIGF3YWl0IHRoYXQuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgc3VibWVyZ2UnXHJcbiAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgIGxldCBzdG9wQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICBzdG9wQnRuLmNsYXNzTmFtZSA9ICdlbC1idXR0b24nXHJcbiAgICBzdG9wQnRuLmlubmVySFRNTCA9ICfmmoLlgZwnXHJcbiAgICBzdG9wQnRuLnN0eWxlLndpZHRoID0gJzgwcHgnXHJcblxyXG4gICAgbGV0IGRyYXdCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RyYXcnKVswXVxyXG4gICAgZHJhd0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgU3VibWVyZ2UuY3JlYXRlKHRoYXQpXHJcbiAgICB9KVxyXG4gICAgbGV0IGFuYWxvZ0J0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYW5hbG9nJylbMF07XHJcbiAgICBhbmFsb2dCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQubW92ZSgpXHJcbiAgICB9KVxyXG4gICAgbGV0IGZseXRvQnRuID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbHl0bycpWzBdO1xyXG4gICAgZmx5dG9CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQuZmx5VG8oKVxyXG4gICAgfSlcclxuICAgIGxldCByZXNldEJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmVzZXQnKVswXTtcclxuICAgIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICB0aGF0LnJlc3RhcnQoKVxyXG4gICAgfSlcclxuICAgIGxldCBwYXVzZUJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGF1c2UnKVswXTtcclxuICAgIGxldCBzdGFydEJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RhcnQnKVswXTtcclxuICAgIHBhdXNlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICB0aGF0LnBhdXNlKClcclxuICAgICAgcGF1c2VCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICBzdGFydEJ0bi5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9KVxyXG4gICAgc3RhcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQuc3RhcnQoKVxyXG4gICAgICBzdGFydEJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIHBhdXNlQnRuLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgIH0pXHJcblxyXG4gICAgLy8gdGhhdC5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChzdG9wQnRuKVxyXG4gICAgLy8gdGhhdC5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChyZXNldEJ0bilcclxuICAgIC8vIHRoYXQuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoZmx5dG9CdG4pXHJcbiAgICAvLyB0aGF0Ll9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKGFuYWxvZ0J0bilcclxuICAgIC8vIHRoYXQuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoZHJhd0J0bilcclxuXHJcbiAgICAvLyDpgJ/luqZcclxuICAgIGxldCBlX3Jpc2luZ1NwZWVkID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT0ncmlzaW5nU3BlZWQnXVwiKVxyXG4gICAgZV9yaXNpbmdTcGVlZFswXS52YWx1ZSA9IHRoYXQub3B0aW9ucy5yaXNpbmdTcGVlZFxyXG4gICAgZV9yaXNpbmdTcGVlZFsxXS52YWx1ZSA9IHRoYXQub3B0aW9ucy5yaXNpbmdTcGVlZFxyXG4gICAgZV9yaXNpbmdTcGVlZFswXS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGUgPT4ge1xyXG4gICAgICB0aGF0Lm9wdGlvbnMucmlzaW5nU3BlZWQgPSBOdW1iZXIoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgICBlX3Jpc2luZ1NwZWVkWzFdLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZSA9PiB7XHJcbiAgICAgIGlmIChlLmRhdGEgIT0gJy4nKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKVxyXG4gICAgICAgIGxldCBtYXggPSBOdW1iZXIoZV9yaXNpbmdTcGVlZFswXS5tYXgpXHJcbiAgICAgICAgbGV0IG1pbiA9IE51bWJlcihlX3Jpc2luZ1NwZWVkWzBdLm1pbilcclxuICAgICAgICBpZiAodmFsdWUgPiBtYXgpIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5yaXNpbmdTcGVlZCA9IG1heDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPCBtaW4pIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5yaXNpbmdTcGVlZCA9IG1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucmlzaW5nU3BlZWQgPSBNYXRoLmZsb29yKHZhbHVlICogMTAwKSAvIDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQub3B0aW9ucywgJ3Jpc2luZ1NwZWVkJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVfcmlzaW5nU3BlZWRbMF0udmFsdWVcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbHVlKSB7XHJcbiAgICAgICAgZV9yaXNpbmdTcGVlZFswXS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgZV9yaXNpbmdTcGVlZFsxXS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGF0LndhdGVyTGV2ZWwgPSB0aGF0Lm9wdGlvbnMubWF4V2F0ZXJMZXZlbCAtIHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsXHJcbiAgICAvLyDmnIDkvY7msLTkvY1cclxuICAgIGxldCBlX21pbldhdGVyTGV2ZWwgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdtaW5XYXRlckxldmVsJ11cIilcclxuICAgIGVfbWluV2F0ZXJMZXZlbC52YWx1ZSA9IHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsXHJcbiAgICBlX21pbldhdGVyTGV2ZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBlID0+IHtcclxuICAgICAgaWYgKGUuZGF0YSAhPSAnLicpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQudmFsdWUpXHJcbiAgICAgICAgaWYgKHZhbHVlID4gOTk5OTk5OTk5KSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDk5OTk5OTk5OVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWwgPSBNYXRoLmZsb29yKHZhbHVlICogMTAwMDApIC8gMTAwMDA7XHJcbiAgICAgICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWwgPSB0aGF0Lm9wdGlvbnMubWluV2F0ZXJMZXZlbCArIHRoYXQud2F0ZXJMZXZlbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhhdC5vcHRpb25zLCAnbWluV2F0ZXJMZXZlbCcsIHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIoZV9taW5XYXRlckxldmVsLnZhbHVlKVxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX21pbldhdGVyTGV2ZWwudmFsdWUgPSBNYXRoLmZsb29yKE51bWJlcih2YWx1ZSkgKiAxMDAwMCkgLyAxMDAwMDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDmnIDpq5jmsLTkvY1cclxuICAgIGxldCBlX21heFdhdGVyTGV2ZWwgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdtYXhXYXRlckxldmVsJ11cIilcclxuICAgIGVfbWF4V2F0ZXJMZXZlbC52YWx1ZSA9IHRoYXQub3B0aW9ucy5tYXhXYXRlckxldmVsXHJcbiAgICBlX21heFdhdGVyTGV2ZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBlID0+IHtcclxuICAgICAgaWYgKGUuZGF0YSAhPSAnLicpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQudmFsdWUpXHJcbiAgICAgICAgaWYgKHZhbHVlID4gOTk5OTk5OTk5KSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDk5OTk5OTk5OVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWwpIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5tYXhXYXRlckxldmVsID0gdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWwgPSBNYXRoLmZsb29yKHZhbHVlICogMTAwMDApIC8gMTAwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQud2F0ZXJMZXZlbCA9IHRoYXQub3B0aW9ucy5tYXhXYXRlckxldmVsIC0gdGhhdC5vcHRpb25zLm1pbldhdGVyTGV2ZWxcclxuICAgICAgICB0aGF0Lm9wdGlvbnMud2F0ZXJWb2x1bWUgPSBOdW1iZXIoKHRoYXQud2F0ZXJMZXZlbCAqIHRoYXQuYXJlYSkudG9GaXhlZCg0KSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhhdC5vcHRpb25zLCAnbWF4V2F0ZXJMZXZlbCcsIHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIoZV9tYXhXYXRlckxldmVsLnZhbHVlKVxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgZV9tYXhXYXRlckxldmVsLnZhbHVlID0gTWF0aC5mbG9vcihOdW1iZXIodmFsdWUpICogMTAwMDApIC8gMTAwMDA7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5rC06YePXHJcbiAgICBsZXQgZV93YXRlclZvbHVtZSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3dhdGVyVm9sdW1lJ11cIilcclxuICAgIGVfd2F0ZXJWb2x1bWUudmFsdWUgPSB0aGF0Lm9wdGlvbnMud2F0ZXJWb2x1bWVcclxuICAgIGVfd2F0ZXJWb2x1bWUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBlID0+IHtcclxuICAgICAgaWYgKGUuZGF0YSAhPSAnLicpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQudmFsdWUpXHJcbiAgICAgICAgaWYgKHZhbHVlID4gOTk5OTk5OTk5OTk5OTkpIHtcclxuICAgICAgICAgIHZhbHVlID0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQub3B0aW9ucy53YXRlclZvbHVtZSA9IE1hdGguZmxvb3IodmFsdWUgKiAxMDAwMCkgLyAxMDAwMDtcclxuXHJcbiAgICAgICAgaWYgKHRoYXQuYXJlYSkge1xyXG4gICAgICAgICAgdGhhdC53YXRlckxldmVsID0gTnVtYmVyKCh0aGF0Lm9wdGlvbnMud2F0ZXJWb2x1bWUgLyB0aGF0LmFyZWEpLnRvRml4ZWQoNCkpXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMubWF4V2F0ZXJMZXZlbCA9IHRoYXQub3B0aW9ucy5taW5XYXRlckxldmVsICsgdGhhdC53YXRlckxldmVsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0Lm9wdGlvbnMsICd3YXRlclZvbHVtZScsIHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIoZV93YXRlclZvbHVtZS52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbHVlKSB7XHJcbiAgICAgICAgZV93YXRlclZvbHVtZS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g6Z2i56evXHJcbiAgICBsZXQgZV9hcmVhID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhcmVhJylbMF1cclxuICAgIGVfYXJlYS52YWx1ZSA9IHRoYXQuYXJlYVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQsICdhcmVhJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIE51bWJlcihlX2FyZWEudmFsdWUpXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGVfYXJlYS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgdGhhdC53YXRlckxldmVsID0gTnVtYmVyKCh0aGF0Lm9wdGlvbnMud2F0ZXJWb2x1bWUgLyB0aGF0LmFyZWEpLnRvRml4ZWQoNCkpXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWwgPSB0aGF0Lm9wdGlvbnMubWluV2F0ZXJMZXZlbCArIHRoYXQud2F0ZXJMZXZlbFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgLy8g6KGo5qC8XHJcbiAgICBsZXQgZV90YWJsZUJvZHkgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgbGV0IGVfdGFibGVFbXB0eSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQsICdwb3NpdGlvbnMnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhhdC5fcG9zaXRpb25zXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBlX3RhYmxlRW1wdHkuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgbGV0IHRyID0gJydcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdHIgPSB0ciArIGA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPiR7aSArIDF9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj4ke051bWJlcih2YWx1ZVtpXS5sbmcudG9GaXhlZCgxMCkpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+JHtOdW1iZXIodmFsdWVbaV0ubGF0LnRvRml4ZWQoMTApKX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPiR7TnVtYmVyKHZhbHVlW2ldLmFsdC50b0ZpeGVkKDQpKX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZV90YWJsZUJvZHkuaW5uZXJIVE1MID0gdHJcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBlX3RhYmxlQm9keS5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgZV90YWJsZUVtcHR5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgb25FbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGlja0NhbGxCYWNrXHJcbiAgfVxyXG4gIHNldCBvbkVuZCh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlja0NhbGxCYWNrID0gdmFsXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB3YXRlckxldmVscygpIHtcclxuICAgIHJldHVybiB0aGlzLndhdGVyTGV2ZWxcclxuICB9XHJcbiAgc2V0IHdhdGVyTGV2ZWxzKHZhbCkge1xyXG4gICAgdGhpcy53YXRlckxldmVsID0gdmFsXHJcbiAgfVxyXG4gIGdldCB3YXRlclZvbHVtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMud2F0ZXJWb2x1bWVcclxuICB9XHJcbiAgc2V0IHdhdGVyVm9sdW1lKHZhbCkge1xyXG4gICAgdGhpcy5vcHRpb25zLndhdGVyVm9sdW1lID0gdmFsXHJcbiAgfVxyXG4gIGdldCBtaW5XYXRlckxldmVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5taW5XYXRlckxldmVsXHJcbiAgfVxyXG4gIHNldCBtaW5XYXRlckxldmVsKHZhbCkge1xyXG4gICAgdGhpcy5vcHRpb25zLm1pbldhdGVyTGV2ZWwgPSB2YWxcclxuICAgIHRoaXMuY3VycmVudFdhdGVyTGF2ZXIgPSB0aGlzLm9wdGlvbnMubWluV2F0ZXJMZXZlbFxyXG4gIH1cclxuICBnZXQgbWF4V2F0ZXJMZXZlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4V2F0ZXJMZXZlbFxyXG4gIH1cclxuICBzZXQgbWF4V2F0ZXJMZXZlbCh2YWwpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tYXhXYXRlckxldmVsID0gdmFsXHJcbiAgfVxyXG4gIGdldCByaXNpbmdTcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmlzaW5nU3BlZWRcclxuICB9XHJcbiAgc2V0IHJpc2luZ1NwZWVkKHZhbCkge1xyXG4gICAgdGhpcy5vcHRpb25zLnJpc2luZ1NwZWVkID0gdmFsXHJcbiAgfVxyXG4gIGdldCBhcmVhcygpIHtcclxuICAgIHJldHVybiB0aGlzLmFyZWFcclxuICB9XHJcbiAgc2V0IGFyZWFzKHZhbCkge1xyXG4gICAgdGhpcy5hcmVhID0gdmFsXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIG1vdmUoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgIC8vICAgVFdFRU4ucmVtb3ZlKHRoaXMuVHdlZW5BbmltYXRlKVxyXG4gICAgLy8gfVxyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBpZiAoIXRoaXMuVHdlZW5BbmltYXRlICYmIHRoaXMub3B0aW9ucy5yaXNpbmdTcGVlZCkge1xyXG4gICAgICBsZXQgdG90YWxUaW1lID0gKCh0aGlzLm9wdGlvbnMubWF4V2F0ZXJMZXZlbCAtIHRoaXMub3B0aW9ucy5taW5XYXRlckxldmVsKSAvIHRoaXMub3B0aW9ucy5yaXNpbmdTcGVlZCkgKiAxMDAwXHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbmV3IFRXRUVOLlR3ZWVuKHsgd2F0ZXJMZXZlbDogdGhpcy5vcHRpb25zLm1pbldhdGVyTGV2ZWwgfSkudG8oeyB3YXRlckxldmVsOiB0aGlzLm9wdGlvbnMubWF4V2F0ZXJMZXZlbCB9LCB0b3RhbFRpbWUpLmRlbGF5KHRoaXMuZGVsYXkpLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLm9uVXBkYXRlKGFzeW5jIChyLCBhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V2F0ZXJMYXZlciA9IHIud2F0ZXJMZXZlbFxyXG4gICAgICB9KS5vbkNvbXBsZXRlKCgpID0+IHtcclxuICAgICAgICB0aGF0LmNhbGxiYWNrKClcclxuICAgICAgICAvLyDlnKjov5nph4zmiafooYzliqjnlLvnu5PmnZ/lkI7nmoTpgLvovpFcclxuICAgICAgfSkuc3RhcnQoKVxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLnJpc2luZ1NwZWVkKSB7XHJcbiAgICAgIHRoYXQuY2FsbGJhY2soKVxyXG4gICAgfVxyXG4gICAgLy8gbGV0IGNvbnRlbnRFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keVxyXG4gICAgLy8gbGV0IHBhdXNlQnRuID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYXVzZScpWzBdO1xyXG4gICAgLy8gbGV0IHN0YXJ0QnRuID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGFydCcpWzBdO1xyXG4gICAgLy8gc3RhcnRCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgLy8gcGF1c2VCdG4uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gIH1cclxuXHJcbiAgcmVzdGFydCgpIHtcclxuICAgIHRoaXMuY3VycmVudFdhdGVyTGF2ZXIgPSB0aGlzLm9wdGlvbnMubWluV2F0ZXJMZXZlbFxyXG4gICAgbGV0IGlzUGF1c2VkID0gZmFsc2VcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIGlzUGF1c2VkID0gdGhpcy5Ud2VlbkFuaW1hdGUuX2lzUGF1c2VkXHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgIH1cclxuICAgIGxldCB0b3RhbFRpbWUgPSAoKHRoaXMub3B0aW9ucy5tYXhXYXRlckxldmVsIC0gdGhpcy5vcHRpb25zLm1pbldhdGVyTGV2ZWwpIC8gdGhpcy5vcHRpb25zLnJpc2luZ1NwZWVkKSAqIDEwMDBcclxuICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbmV3IFRXRUVOLlR3ZWVuKHsgd2F0ZXJMZXZlbDogdGhpcy5vcHRpb25zLm1pbldhdGVyTGV2ZWwgfSkudG8oeyB3YXRlckxldmVsOiB0aGlzLm9wdGlvbnMubWF4V2F0ZXJMZXZlbCB9LCB0b3RhbFRpbWUpLmRlbGF5KHRoaXMuZGVsYXkpLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLm9uVXBkYXRlKGFzeW5jIChyLCBhKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFdhdGVyTGF2ZXIgPSByLndhdGVyTGV2ZWxcclxuICAgIH0pLm9uQ29tcGxldGUoKCkgPT4ge1xyXG4gICAgICB0aGF0LmNhbGxiYWNrKClcclxuICAgICAgLy8g5Zyo6L+Z6YeM5omn6KGM5Yqo55S757uT5p2f5ZCO55qE6YC76L6RXHJcbiAgICB9KS5zdGFydCgpXHJcbiAgICAvLyBpZiAoaXNQYXVzZWQpIHtcclxuICAgIHRoaXMucGF1c2UoKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUucmVzdW1lKClcclxuICAgIH1cclxuICB9XHJcbiAgcGF1c2UoKSB7XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUucGF1c2UoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlVm9sdW1lSGVpZ2h0KCkge1xyXG4gICAgdGhhdC5vcHRpb25zLm1heFdhdGVyTGV2ZWxcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiDpo57liLBcclxuKi9cclxuICBmbHlUbygpIHtcclxuICAgIGlmICghdGhpcy5wb3NpdGlvbnMgfHwgdGhpcy5wb3NpdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZnJvbURlZ3JlZXMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMucG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLm1heFdhdGVyTGV2ZWwpXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChmcm9tRGVncmVlcy54LCBmcm9tRGVncmVlcy55LCBmcm9tRGVncmVlcy56KVxyXG4gICAgfVxyXG4gICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgIG9mZnNldDoge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgIH1cclxuICAgIHRoaXMuRHJhdyAmJiB0aGlzLkRyYXcuZW5kKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIHN0YXRpYyBFdmVudEJpbmRpbmcodGhhdCwgZWxlbWVudHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IEV2ZW50ID0gW11cclxuICAgICAgbGV0IGlzRXZlbnQgPSBmYWxzZVxyXG4gICAgICBsZXQgcmVtb3ZlTmFtZSA9IFtdXHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubm9kZU5hbWUgPT0gJ0lNRycpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnNyYyA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoYXQuX2VsbXNbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGF0Ll9lbG1zW20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjaGFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInICYmIHZhbHVlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlc1ttXSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcmVtb3ZlTmFtZS5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFN1Ym1lcmdlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBK05BO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWhiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeVdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFEQTtBQUFBO0FBQUE7QUEwREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpGQTtBQUFBO0FBS0E7QUE2RUE7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Submerge/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/TerrainExcavation/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Analysis/TerrainExcavation/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u6316\\u6398\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ED8\\u5236\\u5F00\\u6316\\u533A\\u57DF\\n \\n
\\n
\\n \\u6E05\\u9664\\u5F00\\u6316\\u533A\\u57DF\\n \\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1RlcnJhaW5FeGNhdmF0aW9uL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9UZXJyYWluRXhjYXZhdGlvbi9fZWxlbWVudC5qcz8xNzZmIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDcwcHg7XCI+5oyW5o6Y6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiNTAwMDAwMFwiIG5hbWU9XCJoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu5jliLblvIDmjJbljLrln588L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3RhcnQtZXhjYXZhdGlvblwiPjxzdmcgY2xhc3M9XCJpY29uLWVkaXRcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1lZGl0XCI+PC91c2U+PC9zdmc+57uY5Yi2PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5riF6Zmk5byA5oyW5Yy65Z+fPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsZWFuLWV4Y2F2YXRpb25cIj48c3ZnIGNsYXNzPVwiaWNvbi1jbG9zZVwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWNsb3NlXCI+PC91c2U+PC9zdmc+5riF6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0QkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/TerrainExcavation/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/TerrainExcavation/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Analysis/TerrainExcavation/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/TerrainExcavation/_element.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\nvar ExcavationFaces = [];\nvar TerrainExcavation = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor\r\n * @description 地形开挖\r\n * @param sdk\r\n * */\n function TerrainExcavation(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, TerrainExcavation);\n _this = _callSuper(this, TerrainExcavation, [sdk]);\n _this.viewer = sdk.viewer;\n _this.options = options || {};\n _this.options.height = _this.options.height || _this.options.height === 0 ? _this.options.height : 10;\n _this.options.show = _this.options.show || _this.options.show === false ? _this.options.show : true;\n _this.bottomImg = _this.getSourceRootPath() + '/img/excavationregion_top.jpg';\n _this.wallImg = _this.getSourceRootPath() + '/img/excavationregion_side.jpg';\n _this.splitNum = Cesium.defaultValue(options.splitNum, 50);\n _this.Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.sdk);\n _this.bottomMaterial = Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString('#735d4f'))\n });\n _this.wallMaterial = Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString('#976b4e'))\n });\n _this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.sdk);\n var imageBottom = new Image();\n var wallBottom = new Image();\n imageBottom.src = _this.bottomImg;\n wallBottom.src = _this.wallImg;\n imageBottom.crossOrigin = \"Anonymous\";\n wallBottom.crossOrigin = \"Anonymous\";\n imageBottom.onload = function () {\n var canvas = document.createElement('canvas');\n canvas.width = imageBottom.width;\n canvas.height = imageBottom.height;\n var context = canvas.getContext('2d');\n context.drawImage(imageBottom, 0, 0, imageBottom.width, imageBottom.height);\n var base64 = canvas.toDataURL('image/jpg');\n _this.bottomMaterial = new Cesium.Material({\n fabric: {\n type: \"Image\",\n uniforms: {\n image: base64\n }\n }\n });\n if (_this.bottomSurface) {\n _this.bottomSurface.appearance.material = _this.bottomMaterial;\n }\n };\n wallBottom.onload = function () {\n var canvas = document.createElement('canvas');\n canvas.width = wallBottom.width;\n canvas.height = wallBottom.height;\n var context = canvas.getContext('2d');\n context.drawImage(wallBottom, 0, 0, wallBottom.width, wallBottom.height);\n var base64 = canvas.toDataURL('image/jpg');\n _this.wallMaterial = new Cesium.Material({\n fabric: {\n type: \"Image\",\n uniforms: {\n image: base64\n }\n }\n });\n if (_this.wellWall) {\n _this.wellWall.appearance.material = _this.wallMaterial;\n }\n };\n\n // this.init();\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(TerrainExcavation, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(TerrainExcavation, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n this.switchExcavate(v);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = v;\n // this.updateExcavateDepth(v);\n }\n }, {\n key: \"init\",\n value: function init() {\n TerrainExcavation.edit(this, true);\n }\n }, {\n key: \"startCreate\",\n value: function startCreate() {\n var _this2 = this;\n this.Draw.start(function (e, positions) {\n if (!positions || positions.length <= 2) {\n if (!e && e != 0) {\n _this2.tools.message({\n type: 'warning',\n text: '至少拥有三个坐标位置!'\n });\n }\n return;\n }\n if (!_this2.isConvex(positions)) {\n // this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' })\n _this2.tools.message({\n type: 'warning',\n text: '不支持凹多边形'\n });\n console.log('不支持凹多边形');\n return;\n }\n _this2.updateData(positions);\n });\n }\n }, {\n key: \"updateData\",\n value: function updateData(activePoints) {\n var viewer = this.viewer;\n this.clear();\n var clippingPlanesList = [];\n var array = [];\n for (var i = 0; i < activePoints.length; i++) {\n array.push([activePoints[i].lng, activePoints[i].lat]);\n }\n array.push([activePoints[0].lng, activePoints[0].lat]);\n var clockwiseRing = turf.lineString(array);\n // 是否顺时针\n var boolDiff = turf.booleanClockwise(clockwiseRing);\n this.excavateMinHeight = 9999;\n for (var index = 0; index < activePoints.length; ++index) {\n var s = (index + 1) % activePoints.length;\n var position1 = Cesium.Cartesian3.fromDegrees(activePoints[index].lng, activePoints[index].lat, activePoints[index].alt);\n var position2 = Cesium.Cartesian3.fromDegrees(activePoints[s].lng, activePoints[s].lat, activePoints[s].alt);\n var curMidPoint = Cesium.Cartesian3.midpoint(position1, position2, new Cesium.Cartesian3());\n var cartographic = Cesium.Cartographic.fromCartesian(position1);\n var curHeight = viewer.scene.globe.getHeight(cartographic) || cartographic.height;\n if (curHeight < this.excavateMinHeight) {\n this.excavateMinHeight = curHeight;\n }\n var curMidPointNormal = Cesium.Cartesian3.normalize(curMidPoint, new Cesium.Cartesian3());\n var curMidPointDifference = boolDiff ? Cesium.Cartesian3.subtract(position1, curMidPoint, new Cesium.Cartesian3()) : Cesium.Cartesian3.subtract(position2, curMidPoint, new Cesium.Cartesian3());\n curMidPointDifference = Cesium.Cartesian3.normalize(curMidPointDifference, curMidPointDifference);\n var curMidPointCross = Cesium.Cartesian3.cross(curMidPointDifference, curMidPointNormal, new Cesium.Cartesian3());\n curMidPointCross = Cesium.Cartesian3.normalize(curMidPointCross, curMidPointCross);\n var plane = new Cesium.Plane(curMidPointCross, 0);\n var distance = Cesium.Plane.getPointDistance(plane, curMidPoint);\n clippingPlanesList.push(new Cesium.ClippingPlane(curMidPointCross, distance));\n }\n this.viewer.scene.globe.clippingPlanes = new Cesium.ClippingPlaneCollection({\n planes: clippingPlanesList,\n edgeWidth: 1,\n edgeColor: Cesium.Color.WHITE,\n enabled: true\n });\n this.prepareWell(activePoints);\n this.createWell(this.wellData);\n // this.viewer.entities.remove(this.drawGeomtry);\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.viewer.scene.globe.clippingPlanes) {\n this.viewer.scene.globe.clippingPlanes.removeAll();\n this.viewer.scene.primitives.remove(this.bottomSurface);\n this.viewer.scene.primitives.remove(this.wellWall);\n this.viewer.scene.render();\n }\n for (var i = ExcavationFaces.length - 1; i >= 0; i--) {\n this.viewer.scene.primitives.remove(ExcavationFaces[i]);\n }\n ExcavationFaces = [];\n this.Draw && this.Draw.end();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clear();\n }\n //计算并更新wellData\n }, {\n key: \"prepareWell\",\n value: function prepareWell(activePoints) {\n var pointLength = activePoints.length;\n var heightDiff = this.excavateMinHeight - this.height;\n var no_height_top = [],\n bottom_pos = [],\n lerp_pos = [];\n for (var l = 0; l < pointLength; l++) {\n var u = l == pointLength - 1 ? 0 : l + 1;\n var point0 = [Cesium.Cartographic.fromDegrees(activePoints[l].lng, activePoints[l].lat, activePoints[l].alt).longitude, Cesium.Cartographic.fromDegrees(activePoints[l].lng, activePoints[l].lat, activePoints[l].alt).latitude];\n var point1 = [Cesium.Cartographic.fromDegrees(activePoints[u].lng, activePoints[u].lat, activePoints[u].alt).longitude, Cesium.Cartographic.fromDegrees(activePoints[u].lng, activePoints[u].lat, activePoints[u].alt).latitude];\n if (0 == l) {\n lerp_pos.push(new Cesium.Cartographic(point0[0], point0[1]));\n bottom_pos.push(Cesium.Cartesian3.fromRadians(point0[0], point0[1], heightDiff));\n no_height_top.push(Cesium.Cartesian3.fromRadians(point0[0], point0[1], 0));\n }\n for (var p = 1; p <= this.splitNum; p++) {\n var m = Cesium.Math.lerp(point0[0], point1[0], p / this.splitNum);\n var g = Cesium.Math.lerp(point0[1], point1[1], p / this.splitNum);\n l == pointLength - 1 && p == this.splitNum || (lerp_pos.push(new Cesium.Cartographic(m, g)), bottom_pos.push(Cesium.Cartesian3.fromRadians(m, g, heightDiff)), no_height_top.push(Cesium.Cartesian3.fromRadians(m, g, 0)));\n }\n }\n this.wellData = {\n lerp_pos: lerp_pos,\n bottom_pos: bottom_pos,\n no_height_top: no_height_top\n };\n }\n //开始创建底面和侧面\n }, {\n key: \"createWell\",\n value: function createWell(wallData) {\n var $this = this;\n if (this.viewer.terrainProvider._layers) {\n this.createBottomSurface(wallData.bottom_pos);\n var positions = Cesium.sampleTerrainMostDetailed(this.viewer.terrainProvider, wallData.lerp_pos);\n positions.then(function (pos) {\n var positionList = [];\n for (var index = 0; index < pos.length; index++) {\n var element = pos[index];\n var curPos = Cesium.Cartesian3.fromRadians(element.longitude, element.latitude, element.height);\n positionList.push(curPos);\n }\n $this.createWellWall(wallData.bottom_pos, positionList);\n });\n } else {\n this.createBottomSurface(wallData.bottom_pos);\n this.createWellWall(wallData.bottom_pos, wallData.no_height_top);\n }\n }\n //坐标转换,转出经纬度格式\n }, {\n key: \"ellipsoidToDegree\",\n value: function ellipsoidToDegree(pos) {\n var cartesian3 = new Cesium.Cartesian3(pos.x, pos.y, pos.z);\n var cartographic = this.viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian3);\n return {\n longitude: Cesium.Math.toDegrees(cartographic.longitude),\n latitude: Cesium.Math.toDegrees(cartographic.latitude),\n altitude: cartographic.height\n };\n }\n //创建地形开挖的底面对象\n }, {\n key: \"createBottomSurface\",\n value: function createBottomSurface(points) {\n if (points.length) {\n var minHeight = this.getMinHeight(points);\n var positions = [];\n for (var i = 0; i < points.length; i++) {\n var curPoint = this.ellipsoidToDegree(points[i]);\n positions.push(curPoint.longitude, curPoint.latitude, minHeight);\n }\n var polygon = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(positions)),\n perPositionHeight: true\n });\n var appearance = new Cesium.MaterialAppearance({\n translucent: false,\n flat: true,\n material: this.bottomMaterial\n });\n this.bottomSurface = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: Cesium.PolygonGeometry.createGeometry(polygon)\n }),\n appearance: appearance,\n asynchronous: false\n });\n ExcavationFaces.push(this.bottomSurface);\n this.viewer.scene.primitives.add(this.bottomSurface);\n }\n }\n // 创建地形开挖的侧面墙对象\n }, {\n key: \"createWellWall\",\n value: function createWellWall(bottomPos, positionList) {\n var minHeight = this.getMinHeight(bottomPos);\n var maxHeights = [],\n minHeights = [];\n for (var i = 0; i < positionList.length; i++) {\n maxHeights.push(this.ellipsoidToDegree(positionList[i]).altitude);\n minHeights.push(minHeight);\n }\n var wall = new Cesium.WallGeometry({\n positions: positionList,\n maximumHeights: maxHeights,\n minimumHeights: minHeights\n });\n var geometry = Cesium.WallGeometry.createGeometry(wall);\n var appearance = new Cesium.MaterialAppearance({\n translucent: false,\n flat: true,\n material: this.wallMaterial\n });\n this.wellWall = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: geometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.GREY)\n },\n id: \"PitWall\"\n }),\n appearance: appearance,\n asynchronous: false\n });\n ExcavationFaces.push(this.wellWall);\n this.viewer.scene.primitives.add(this.wellWall);\n }\n //获取地形开挖最低点高程值\n }, {\n key: \"getMinHeight\",\n value: function getMinHeight(points) {\n var minHeight = 5000000;\n var minPoint = null;\n for (var i = 0; i < points.length; i++) {\n var height = points[i][\"z\"];\n if (height < minHeight) {\n minHeight = height;\n minPoint = this.ellipsoidToDegree(points[i]);\n }\n }\n return minPoint.altitude;\n }\n }, {\n key: \"switchExcavate\",\n value: function switchExcavate(show) {\n if (show) {\n this.viewer.scene.globe.material = null;\n this.wellWall.show = true;\n this.bottomSurface.show = true;\n } else {\n this.viewer.scene.globe.material = null;\n this.wellWall.show = false;\n this.bottomSurface.show = false;\n }\n }\n }, {\n key: \"updateExcavateDepth\",\n value: function updateExcavateDepth(height) {\n this.viewer.scene.primitives.remove(this.bottomSurface);\n this.viewer.scene.primitives.remove(this.wellWall);\n if (!this.wellData) {\n return;\n }\n var lerp_pos = this.wellData.lerp_pos;\n var posList = [];\n for (var n = 0; n < lerp_pos.length; n++) {\n posList.push(Cesium.Cartesian3.fromRadians(lerp_pos[n].longitude, lerp_pos[n].latitude, this.excavateMinHeight - height));\n }\n this.wellData.bottom_pos = posList;\n this.createWell(this.wellData);\n }\n }], [{\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(that, state) {\n var contentElm, e_start, e_clean, e_height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n if (!state) {\n _context.next = 21;\n break;\n }\n _context.next = 4;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](that.sdk.viewer._container, {\n title: '地形开挖',\n closeCallBack: function closeCallBack() {}\n });\n case 4:\n that._DialogObject = _context.sent;\n _context.next = 7;\n return that._DialogObject.init();\n case 7:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' terrain-excavation';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n\n // 开始\n e_start = contentElm.getElementsByClassName('start-excavation')[0];\n e_start.addEventListener('click', function () {\n that.startCreate();\n });\n // 清除\n e_clean = contentElm.getElementsByClassName('clean-excavation')[0];\n e_clean.addEventListener('click', function () {\n that.clear();\n });\n\n // 高度值\n e_height = contentElm.querySelector(\"input[name='height']\");\n e_height.value = that.height;\n e_height.addEventListener('change', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (value < 0.01) {\n value = 0.01;\n e.target.value = value;\n that.height = value;\n }\n });\n e_height.addEventListener('blur', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (value < 0.01) {\n value = 0.01;\n }\n e.target.value = value;\n that.height = value;\n });\n _context.next = 22;\n break;\n case 21:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n case 22:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function edit(_x, _x2) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (TerrainExcavation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1RlcnJhaW5FeGNhdmF0aW9uL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9UZXJyYWluRXhjYXZhdGlvbi9pbmRleC5qcz9jZWU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb29scyBmcm9tIFwiLi4vLi4vLi4vVG9vbHNcIjtcclxuaW1wb3J0IERyYXdQb2x5Z29uIGZyb20gXCIuLi8uLi8uLi9EcmF3L2RyYXdQb2x5Z29uXCJcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi9CYXNlRGlhbG9nJztcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcblxyXG5sZXQgRXhjYXZhdGlvbkZhY2VzID0gW11cclxuY2xhc3MgVGVycmFpbkV4Y2F2YXRpb24gZXh0ZW5kcyBUb29scyB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOWcsOW9ouW8gOaMllxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGspXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gKHRoaXMub3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5vcHRpb25zLmhlaWdodCA9PT0gMCkgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0IDogMTA7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9ICh0aGlzLm9wdGlvbnMuc2hvdyB8fCB0aGlzLm9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gdGhpcy5vcHRpb25zLnNob3cgOiB0cnVlO1xyXG4gICAgdGhpcy5ib3R0b21JbWcgPSB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9leGNhdmF0aW9ucmVnaW9uX3RvcC5qcGcnO1xyXG4gICAgdGhpcy53YWxsSW1nID0gdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvZXhjYXZhdGlvbnJlZ2lvbl9zaWRlLmpwZyc7XHJcbiAgICB0aGlzLnNwbGl0TnVtID0gQ2VzaXVtLmRlZmF1bHRWYWx1ZShvcHRpb25zLnNwbGl0TnVtLCA1MCk7XHJcbiAgICB0aGlzLkRyYXcgPSBuZXcgRHJhd1BvbHlnb24odGhpcy5zZGspXHJcbiAgICB0aGlzLmJvdHRvbU1hdGVyaWFsID0gQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQWxwaGEoQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzczNWQ0ZicpKVxyXG4gICAgfSlcclxuICAgIHRoaXMud2FsbE1hdGVyaWFsID0gQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQWxwaGEoQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzk3NmI0ZScpKVxyXG4gICAgfSlcclxuICAgIHRoaXMudG9vbHMgPSBuZXcgVG9vbHModGhpcy5zZGspXHJcbiAgICBsZXQgaW1hZ2VCb3R0b20gPSBuZXcgSW1hZ2UoKTtcclxuICAgIGxldCB3YWxsQm90dG9tID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWFnZUJvdHRvbS5zcmMgPSB0aGlzLmJvdHRvbUltZztcclxuICAgIHdhbGxCb3R0b20uc3JjID0gdGhpcy53YWxsSW1nO1xyXG4gICAgaW1hZ2VCb3R0b20uY3Jvc3NPcmlnaW4gPSBcIkFub255bW91c1wiO1xyXG4gICAgd2FsbEJvdHRvbS5jcm9zc09yaWdpbiA9IFwiQW5vbnltb3VzXCI7XHJcbiAgICBpbWFnZUJvdHRvbS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjYW52YXMud2lkdGggPSBpbWFnZUJvdHRvbS53aWR0aDtcclxuICAgICAgY2FudmFzLmhlaWdodCA9IGltYWdlQm90dG9tLmhlaWdodDtcclxuICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZUJvdHRvbSwgMCwgMCwgaW1hZ2VCb3R0b20ud2lkdGgsIGltYWdlQm90dG9tLmhlaWdodCk7XHJcbiAgICAgIGNvbnN0IGJhc2U2NCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZycpO1xyXG4gICAgICB0aGlzLmJvdHRvbU1hdGVyaWFsID0gbmV3IENlc2l1bS5NYXRlcmlhbCh7XHJcbiAgICAgICAgZmFicmljOiB7XHJcbiAgICAgICAgICB0eXBlOiBcIkltYWdlXCIsXHJcbiAgICAgICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgICAgICBpbWFnZTogYmFzZTY0LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuYm90dG9tU3VyZmFjZSkge1xyXG4gICAgICAgIHRoaXMuYm90dG9tU3VyZmFjZS5hcHBlYXJhbmNlLm1hdGVyaWFsID0gdGhpcy5ib3R0b21NYXRlcmlhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2FsbEJvdHRvbS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjYW52YXMud2lkdGggPSB3YWxsQm90dG9tLndpZHRoO1xyXG4gICAgICBjYW52YXMuaGVpZ2h0ID0gd2FsbEJvdHRvbS5oZWlnaHQ7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgY29udGV4dC5kcmF3SW1hZ2Uod2FsbEJvdHRvbSwgMCwgMCwgd2FsbEJvdHRvbS53aWR0aCwgd2FsbEJvdHRvbS5oZWlnaHQpO1xyXG4gICAgICBjb25zdCBiYXNlNjQgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGcnKTtcclxuICAgICAgdGhpcy53YWxsTWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLk1hdGVyaWFsKHtcclxuICAgICAgICBmYWJyaWM6IHtcclxuICAgICAgICAgIHR5cGU6IFwiSW1hZ2VcIixcclxuICAgICAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgICAgIGltYWdlOiBiYXNlNjQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy53ZWxsV2FsbCkge1xyXG4gICAgICAgIHRoaXMud2VsbFdhbGwuYXBwZWFyYW5jZS5tYXRlcmlhbCA9IHRoaXMud2FsbE1hdGVyaWFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdjtcclxuICAgIHRoaXMuc3dpdGNoRXhjYXZhdGUodik7XHJcbiAgfVxyXG4gIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSB2O1xyXG4gICAgLy8gdGhpcy51cGRhdGVFeGNhdmF0ZURlcHRoKHYpO1xyXG4gIH1cclxuICBpbml0KCkge1xyXG4gICAgVGVycmFpbkV4Y2F2YXRpb24uZWRpdCh0aGlzLCB0cnVlKVxyXG4gIH1cclxuICBzdGF0aWMgYXN5bmMgZWRpdCh0aGF0LCBzdGF0ZSkge1xyXG4gICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC5zZGsudmlld2VyLl9jb250YWluZXIsIHtcclxuICAgICAgICB0aXRsZTogJ+WcsOW9ouW8gOaMlicsXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGF3YWl0IHRoYXQuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyB0ZXJyYWluLWV4Y2F2YXRpb24nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIC8vIOW8gOWni1xyXG4gICAgICBsZXQgZV9zdGFydCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RhcnQtZXhjYXZhdGlvbicpWzBdXHJcbiAgICAgIGVfc3RhcnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgdGhhdC5zdGFydENyZWF0ZSgpXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyDmuIXpmaRcclxuICAgICAgbGV0IGVfY2xlYW4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsZWFuLWV4Y2F2YXRpb24nKVswXVxyXG4gICAgICBlX2NsZWFuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoYXQuY2xlYXIoKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIOmrmOW6puWAvFxyXG4gICAgICBsZXQgZV9oZWlnaHQgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdoZWlnaHQnXVwiKVxyXG4gICAgICBlX2hlaWdodC52YWx1ZSA9IHRoYXQuaGVpZ2h0XHJcbiAgICAgIGVfaGVpZ2h0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICBpZiAodmFsdWUgPCAwLjAxKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IDAuMDFcclxuICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgIHRoYXQuaGVpZ2h0ID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBlX2hlaWdodC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZSA8IDAuMDEpIHtcclxuICAgICAgICAgIHZhbHVlID0gMC4wMVxyXG4gICAgICAgIH1cclxuICAgICAgICBlLnRhcmdldC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgdGhhdC5oZWlnaHQgPSB2YWx1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzdGFydENyZWF0ZSgpIHtcclxuICAgIHRoaXMuRHJhdy5zdGFydCgoZSwgcG9zaXRpb25zKSA9PiB7XHJcbiAgICAgIGlmICghcG9zaXRpb25zIHx8IHBvc2l0aW9ucy5sZW5ndGggPD0gMikge1xyXG4gICAgICAgIGlmKCFlICYmIGUhPTApIHtcclxuICAgICAgICAgIHRoaXMudG9vbHMubWVzc2FnZSh7IHR5cGU6ICd3YXJuaW5nJywgdGV4dDogJ+iHs+WwkeaLpeacieS4ieS4quWdkOagh+S9jee9ru+8gScgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmlzQ29udmV4KHBvc2l0aW9ucykpIHtcclxuICAgICAgICAvLyB0aGlzLnRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6ICfoh7PlsJHmi6XmnInkuInkuKrlnZDmoIfkvY3nva7vvIEnIH0pXHJcbiAgICAgICAgdGhpcy50b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiAn5LiN5pSv5oyB5Ye55aSa6L655b2iJyB9KVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCfkuI3mlK/mjIHlh7nlpJrovrnlvaInKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YShwb3NpdGlvbnMpXHJcbiAgICB9KVxyXG4gIH1cclxuICB1cGRhdGVEYXRhKGFjdGl2ZVBvaW50cykge1xyXG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyO1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gICAgbGV0IGNsaXBwaW5nUGxhbmVzTGlzdCA9IFtdO1xyXG4gICAgbGV0IGFycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aXZlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGFycmF5LnB1c2goW2FjdGl2ZVBvaW50c1tpXS5sbmcsIGFjdGl2ZVBvaW50c1tpXS5sYXRdKVxyXG4gICAgfVxyXG4gICAgYXJyYXkucHVzaChbYWN0aXZlUG9pbnRzWzBdLmxuZywgYWN0aXZlUG9pbnRzWzBdLmxhdF0pXHJcbiAgICBsZXQgY2xvY2t3aXNlUmluZyA9IHR1cmYubGluZVN0cmluZyhhcnJheSk7XHJcbiAgICAvLyDmmK/lkKbpobrml7bpkohcclxuICAgIGxldCBib29sRGlmZiA9IHR1cmYuYm9vbGVhbkNsb2Nrd2lzZShjbG9ja3dpc2VSaW5nKTtcclxuICAgIHRoaXMuZXhjYXZhdGVNaW5IZWlnaHQgPSA5OTk5O1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFjdGl2ZVBvaW50cy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgbGV0IHMgPSAoaW5kZXggKyAxKSAlIGFjdGl2ZVBvaW50cy5sZW5ndGg7XHJcbiAgICAgIGxldCBwb3NpdGlvbjEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhhY3RpdmVQb2ludHNbaW5kZXhdLmxuZywgYWN0aXZlUG9pbnRzW2luZGV4XS5sYXQsIGFjdGl2ZVBvaW50c1tpbmRleF0uYWx0KVxyXG4gICAgICBsZXQgcG9zaXRpb24yID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoYWN0aXZlUG9pbnRzW3NdLmxuZywgYWN0aXZlUG9pbnRzW3NdLmxhdCwgYWN0aXZlUG9pbnRzW3NdLmFsdClcclxuICAgICAgbGV0IGN1ck1pZFBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMubWlkcG9pbnQoXHJcbiAgICAgICAgcG9zaXRpb24xLFxyXG4gICAgICAgIHBvc2l0aW9uMixcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHBvc2l0aW9uMSk7XHJcbiAgICAgIGxldCBjdXJIZWlnaHQgPVxyXG4gICAgICAgIHZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoY2FydG9ncmFwaGljKSB8fCBjYXJ0b2dyYXBoaWMuaGVpZ2h0O1xyXG4gICAgICBpZiAoY3VySGVpZ2h0IDwgdGhpcy5leGNhdmF0ZU1pbkhlaWdodCkge1xyXG4gICAgICAgIHRoaXMuZXhjYXZhdGVNaW5IZWlnaHQgPSBjdXJIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGN1ck1pZFBvaW50Tm9ybWFsID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKFxyXG4gICAgICAgIGN1ck1pZFBvaW50LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBjdXJNaWRQb2ludERpZmZlcmVuY2UgPSBib29sRGlmZlxyXG4gICAgICAgID8gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgICAgICBwb3NpdGlvbjEsXHJcbiAgICAgICAgICBjdXJNaWRQb2ludCxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIDogQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgICAgICBwb3NpdGlvbjIsXHJcbiAgICAgICAgICBjdXJNaWRQb2ludCxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKTtcclxuICAgICAgY3VyTWlkUG9pbnREaWZmZXJlbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKFxyXG4gICAgICAgIGN1ck1pZFBvaW50RGlmZmVyZW5jZSxcclxuICAgICAgICBjdXJNaWRQb2ludERpZmZlcmVuY2VcclxuICAgICAgKTtcclxuICAgICAgbGV0IGN1ck1pZFBvaW50Q3Jvc3MgPSBDZXNpdW0uQ2FydGVzaWFuMy5jcm9zcyhcclxuICAgICAgICBjdXJNaWRQb2ludERpZmZlcmVuY2UsXHJcbiAgICAgICAgY3VyTWlkUG9pbnROb3JtYWwsXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgKTtcclxuICAgICAgY3VyTWlkUG9pbnRDcm9zcyA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShcclxuICAgICAgICBjdXJNaWRQb2ludENyb3NzLFxyXG4gICAgICAgIGN1ck1pZFBvaW50Q3Jvc3NcclxuICAgICAgKTtcclxuICAgICAgbGV0IHBsYW5lID0gbmV3IENlc2l1bS5QbGFuZShjdXJNaWRQb2ludENyb3NzLCAwKTtcclxuICAgICAgbGV0IGRpc3RhbmNlID0gQ2VzaXVtLlBsYW5lLmdldFBvaW50RGlzdGFuY2UocGxhbmUsIGN1ck1pZFBvaW50KTtcclxuICAgICAgY2xpcHBpbmdQbGFuZXNMaXN0LnB1c2goXHJcbiAgICAgICAgbmV3IENlc2l1bS5DbGlwcGluZ1BsYW5lKGN1ck1pZFBvaW50Q3Jvc3MsIGRpc3RhbmNlKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuY2xpcHBpbmdQbGFuZXMgPSBuZXcgQ2VzaXVtLkNsaXBwaW5nUGxhbmVDb2xsZWN0aW9uKFxyXG4gICAgICB7XHJcbiAgICAgICAgcGxhbmVzOiBjbGlwcGluZ1BsYW5lc0xpc3QsXHJcbiAgICAgICAgZWRnZVdpZHRoOiAxLFxyXG4gICAgICAgIGVkZ2VDb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLFxyXG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnByZXBhcmVXZWxsKGFjdGl2ZVBvaW50cyk7XHJcbiAgICB0aGlzLmNyZWF0ZVdlbGwodGhpcy53ZWxsRGF0YSk7XHJcbiAgICAvLyB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5kcmF3R2VvbXRyeSk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIGlmICh0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5jbGlwcGluZ1BsYW5lcykge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5jbGlwcGluZ1BsYW5lcy5yZW1vdmVBbGwoKTtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5ib3R0b21TdXJmYWNlKTtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy53ZWxsV2FsbCk7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnJlbmRlcigpO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IEV4Y2F2YXRpb25GYWNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShFeGNhdmF0aW9uRmFjZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgRXhjYXZhdGlvbkZhY2VzID0gW11cclxuICAgIHRoaXMuRHJhdyAmJiB0aGlzLkRyYXcuZW5kKClcclxuICB9XHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2xlYXIoKVxyXG4gIH1cclxuICAvL+iuoeeul+W5tuabtOaWsHdlbGxEYXRhXHJcbiAgcHJlcGFyZVdlbGwoYWN0aXZlUG9pbnRzKSB7XHJcbiAgICBsZXQgcG9pbnRMZW5ndGggPSBhY3RpdmVQb2ludHMubGVuZ3RoO1xyXG4gICAgbGV0IGhlaWdodERpZmYgPSB0aGlzLmV4Y2F2YXRlTWluSGVpZ2h0IC0gdGhpcy5oZWlnaHQ7XHJcbiAgICBsZXQgbm9faGVpZ2h0X3RvcCA9IFtdLFxyXG4gICAgICBib3R0b21fcG9zID0gW10sXHJcbiAgICAgIGxlcnBfcG9zID0gW107XHJcbiAgICBmb3IgKGxldCBsID0gMDsgbCA8IHBvaW50TGVuZ3RoOyBsKyspIHtcclxuICAgICAgbGV0IHUgPSBsID09IHBvaW50TGVuZ3RoIC0gMSA/IDAgOiBsICsgMTtcclxuICAgICAgbGV0IHBvaW50MCA9IFtcclxuICAgICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGFjdGl2ZVBvaW50c1tsXS5sbmcsIGFjdGl2ZVBvaW50c1tsXS5sYXQsIGFjdGl2ZVBvaW50c1tsXS5hbHQpLmxvbmdpdHVkZSxcclxuICAgICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGFjdGl2ZVBvaW50c1tsXS5sbmcsIGFjdGl2ZVBvaW50c1tsXS5sYXQsIGFjdGl2ZVBvaW50c1tsXS5hbHQpLmxhdGl0dWRlLFxyXG4gICAgICBdO1xyXG4gICAgICBsZXQgcG9pbnQxID0gW1xyXG4gICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoYWN0aXZlUG9pbnRzW3VdLmxuZywgYWN0aXZlUG9pbnRzW3VdLmxhdCwgYWN0aXZlUG9pbnRzW3VdLmFsdCkubG9uZ2l0dWRlLFxyXG4gICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoYWN0aXZlUG9pbnRzW3VdLmxuZywgYWN0aXZlUG9pbnRzW3VdLmxhdCwgYWN0aXZlUG9pbnRzW3VdLmFsdCkubGF0aXR1ZGUsXHJcbiAgICAgIF07XHJcbiAgICAgIGlmICgwID09IGwpIHtcclxuICAgICAgICBsZXJwX3Bvcy5wdXNoKG5ldyBDZXNpdW0uQ2FydG9ncmFwaGljKHBvaW50MFswXSwgcG9pbnQwWzFdKSk7XHJcbiAgICAgICAgYm90dG9tX3Bvcy5wdXNoKFxyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbVJhZGlhbnMocG9pbnQwWzBdLCBwb2ludDBbMV0sIGhlaWdodERpZmYpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBub19oZWlnaHRfdG9wLnB1c2goXHJcbiAgICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhwb2ludDBbMF0sIHBvaW50MFsxXSwgMClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IHAgPSAxOyBwIDw9IHRoaXMuc3BsaXROdW07IHArKykge1xyXG4gICAgICAgIGxldCBtID0gQ2VzaXVtLk1hdGgubGVycChwb2ludDBbMF0sIHBvaW50MVswXSwgcCAvIHRoaXMuc3BsaXROdW0pO1xyXG4gICAgICAgIGxldCBnID0gQ2VzaXVtLk1hdGgubGVycChwb2ludDBbMV0sIHBvaW50MVsxXSwgcCAvIHRoaXMuc3BsaXROdW0pO1xyXG4gICAgICAgIChsID09IHBvaW50TGVuZ3RoIC0gMSAmJiBwID09IHRoaXMuc3BsaXROdW0pIHx8XHJcbiAgICAgICAgICAobGVycF9wb3MucHVzaChuZXcgQ2VzaXVtLkNhcnRvZ3JhcGhpYyhtLCBnKSksXHJcbiAgICAgICAgICAgIGJvdHRvbV9wb3MucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhtLCBnLCBoZWlnaHREaWZmKSksXHJcbiAgICAgICAgICAgIG5vX2hlaWdodF90b3AucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhtLCBnLCAwKSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLndlbGxEYXRhID0ge1xyXG4gICAgICBsZXJwX3BvczogbGVycF9wb3MsXHJcbiAgICAgIGJvdHRvbV9wb3M6IGJvdHRvbV9wb3MsXHJcbiAgICAgIG5vX2hlaWdodF90b3A6IG5vX2hlaWdodF90b3AsXHJcbiAgICB9O1xyXG4gIH1cclxuICAvL+W8gOWni+WIm+W7uuW6lemdouWSjOS+p+mdolxyXG4gIGNyZWF0ZVdlbGwod2FsbERhdGEpIHtcclxuICAgIGxldCAkdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAodGhpcy52aWV3ZXIudGVycmFpblByb3ZpZGVyLl9sYXllcnMpIHtcclxuICAgICAgdGhpcy5jcmVhdGVCb3R0b21TdXJmYWNlKHdhbGxEYXRhLmJvdHRvbV9wb3MpO1xyXG4gICAgICBsZXQgcG9zaXRpb25zID0gQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQoXHJcbiAgICAgICAgdGhpcy52aWV3ZXIudGVycmFpblByb3ZpZGVyLFxyXG4gICAgICAgIHdhbGxEYXRhLmxlcnBfcG9zXHJcbiAgICAgICk7XHJcbiAgICAgIHBvc2l0aW9ucy50aGVuKChwb3MpID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25MaXN0ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBvcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb3NbaW5kZXhdO1xyXG4gICAgICAgICAgbGV0IGN1clBvcyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKFxyXG4gICAgICAgICAgICBlbGVtZW50LmxvbmdpdHVkZSxcclxuICAgICAgICAgICAgZWxlbWVudC5sYXRpdHVkZSxcclxuICAgICAgICAgICAgZWxlbWVudC5oZWlnaHRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBwb3NpdGlvbkxpc3QucHVzaChjdXJQb3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkdGhpcy5jcmVhdGVXZWxsV2FsbCh3YWxsRGF0YS5ib3R0b21fcG9zLCBwb3NpdGlvbkxpc3QpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQm90dG9tU3VyZmFjZSh3YWxsRGF0YS5ib3R0b21fcG9zKTtcclxuICAgICAgdGhpcy5jcmVhdGVXZWxsV2FsbCh3YWxsRGF0YS5ib3R0b21fcG9zLCB3YWxsRGF0YS5ub19oZWlnaHRfdG9wKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/lnZDmoIfovazmjaLvvIzovazlh7rnu4/nuqzluqbmoLzlvI9cclxuICBlbGxpcHNvaWRUb0RlZ3JlZShwb3MpIHtcclxuICAgIGxldCBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKHBvcy54LCBwb3MueSwgcG9zLnopO1xyXG4gICAgbGV0IGNhcnRvZ3JhcGhpYyA9XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhjYXJ0ZXNpYW4zKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxvbmdpdHVkZTogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gICAgICBsYXRpdHVkZTogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgIGFsdGl0dWRlOiBjYXJ0b2dyYXBoaWMuaGVpZ2h0LFxyXG4gICAgfTtcclxuICB9XHJcbiAgLy/liJvlu7rlnLDlvaLlvIDmjJbnmoTlupXpnaLlr7nosaFcclxuICBjcmVhdGVCb3R0b21TdXJmYWNlKHBvaW50cykge1xyXG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcclxuICAgICAgbGV0IG1pbkhlaWdodCA9IHRoaXMuZ2V0TWluSGVpZ2h0KHBvaW50cyk7XHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY3VyUG9pbnQgPSB0aGlzLmVsbGlwc29pZFRvRGVncmVlKHBvaW50c1tpXSk7XHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goY3VyUG9pbnQubG9uZ2l0dWRlLCBjdXJQb2ludC5sYXRpdHVkZSwgbWluSGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWdvbiA9IG5ldyBDZXNpdW0uUG9seWdvbkdlb21ldHJ5KHtcclxuICAgICAgICBwb2x5Z29uSGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoXHJcbiAgICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhwb3NpdGlvbnMpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBsZXQgYXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uTWF0ZXJpYWxBcHBlYXJhbmNlKHtcclxuICAgICAgICB0cmFuc2x1Y2VudDogZmFsc2UsXHJcbiAgICAgICAgZmxhdDogdHJ1ZSxcclxuICAgICAgICBtYXRlcmlhbDogdGhpcy5ib3R0b21NYXRlcmlhbCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYm90dG9tU3VyZmFjZSA9IG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgIGdlb21ldHJ5OiBDZXNpdW0uUG9seWdvbkdlb21ldHJ5LmNyZWF0ZUdlb21ldHJ5KHBvbHlnb24pLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IGFwcGVhcmFuY2UsXHJcbiAgICAgICAgYXN5bmNocm9ub3VzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIEV4Y2F2YXRpb25GYWNlcy5wdXNoKHRoaXMuYm90dG9tU3VyZmFjZSk7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuYm90dG9tU3VyZmFjZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWIm+W7uuWcsOW9ouW8gOaMlueahOS+p+mdouWimeWvueixoVxyXG4gIGNyZWF0ZVdlbGxXYWxsKGJvdHRvbVBvcywgcG9zaXRpb25MaXN0KSB7XHJcbiAgICBsZXQgbWluSGVpZ2h0ID0gdGhpcy5nZXRNaW5IZWlnaHQoYm90dG9tUG9zKTtcclxuICAgIGxldCBtYXhIZWlnaHRzID0gW10sXHJcbiAgICAgIG1pbkhlaWdodHMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG1heEhlaWdodHMucHVzaCh0aGlzLmVsbGlwc29pZFRvRGVncmVlKHBvc2l0aW9uTGlzdFtpXSkuYWx0aXR1ZGUpO1xyXG4gICAgICBtaW5IZWlnaHRzLnB1c2gobWluSGVpZ2h0KTtcclxuICAgIH1cclxuICAgIGxldCB3YWxsID0gbmV3IENlc2l1bS5XYWxsR2VvbWV0cnkoe1xyXG4gICAgICBwb3NpdGlvbnM6IHBvc2l0aW9uTGlzdCxcclxuICAgICAgbWF4aW11bUhlaWdodHM6IG1heEhlaWdodHMsXHJcbiAgICAgIG1pbmltdW1IZWlnaHRzOiBtaW5IZWlnaHRzLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZ2VvbWV0cnkgPSBDZXNpdW0uV2FsbEdlb21ldHJ5LmNyZWF0ZUdlb21ldHJ5KHdhbGwpO1xyXG4gICAgbGV0IGFwcGVhcmFuY2UgPSBuZXcgQ2VzaXVtLk1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgIHRyYW5zbHVjZW50OiBmYWxzZSxcclxuICAgICAgZmxhdDogdHJ1ZSxcclxuICAgICAgbWF0ZXJpYWw6IHRoaXMud2FsbE1hdGVyaWFsLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLndlbGxXYWxsID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICBnZW9tZXRyeTogZ2VvbWV0cnksXHJcbiAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgICAgICBDZXNpdW0uQ29sb3IuR1JFWVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlkOiBcIlBpdFdhbGxcIixcclxuICAgICAgfSksXHJcbiAgICAgIGFwcGVhcmFuY2U6IGFwcGVhcmFuY2UsXHJcbiAgICAgIGFzeW5jaHJvbm91czogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIEV4Y2F2YXRpb25GYWNlcy5wdXNoKHRoaXMud2VsbFdhbGwpO1xyXG4gICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGhpcy53ZWxsV2FsbCk7XHJcbiAgfVxyXG4gIC8v6I635Y+W5Zyw5b2i5byA5oyW5pyA5L2O54K56auY56iL5YC8XHJcbiAgZ2V0TWluSGVpZ2h0KHBvaW50cykge1xyXG4gICAgbGV0IG1pbkhlaWdodCA9IDUwMDAwMDA7XHJcbiAgICBsZXQgbWluUG9pbnQgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGhlaWdodCA9IHBvaW50c1tpXVtcInpcIl07XHJcbiAgICAgIGlmIChoZWlnaHQgPCBtaW5IZWlnaHQpIHtcclxuICAgICAgICBtaW5IZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgbWluUG9pbnQgPSB0aGlzLmVsbGlwc29pZFRvRGVncmVlKHBvaW50c1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtaW5Qb2ludC5hbHRpdHVkZTtcclxuICB9XHJcbiAgc3dpdGNoRXhjYXZhdGUoc2hvdykge1xyXG4gICAgaWYgKHNob3cpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUubWF0ZXJpYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLndlbGxXYWxsLnNob3cgPSB0cnVlO1xyXG4gICAgICB0aGlzLmJvdHRvbVN1cmZhY2Uuc2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5tYXRlcmlhbCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2VsbFdhbGwuc2hvdyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmJvdHRvbVN1cmZhY2Uuc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRXhjYXZhdGVEZXB0aChoZWlnaHQpIHtcclxuICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuYm90dG9tU3VyZmFjZSk7XHJcbiAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLndlbGxXYWxsKTtcclxuICAgIGlmICghdGhpcy53ZWxsRGF0YSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBsZXJwX3BvcyA9IHRoaXMud2VsbERhdGEubGVycF9wb3M7XHJcbiAgICBsZXQgcG9zTGlzdCA9IFtdO1xyXG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBsZXJwX3Bvcy5sZW5ndGg7IG4rKykge1xyXG4gICAgICBwb3NMaXN0LnB1c2goXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbVJhZGlhbnMoXHJcbiAgICAgICAgICBsZXJwX3Bvc1tuXS5sb25naXR1ZGUsXHJcbiAgICAgICAgICBsZXJwX3Bvc1tuXS5sYXRpdHVkZSxcclxuICAgICAgICAgIHRoaXMuZXhjYXZhdGVNaW5IZWlnaHQgLSBoZWlnaHRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndlbGxEYXRhLmJvdHRvbV9wb3MgPSBwb3NMaXN0O1xyXG4gICAgdGhpcy5jcmVhdGVXZWxsKHRoaXMud2VsbERhdGEpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBUZXJyYWluRXhjYXZhdGlvbjtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQVdBO0FBSUE7QUFLQTtBQUlBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXZXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFKQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQTNEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5V0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/TerrainExcavation/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/ViewShed/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Analysis/ViewShed/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u4F4D\\u7F6E\\u62FE\\u53D6(\\u8D77\\u70B9\\u3001\\u7EC8\\u70B9)\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u89C6\\u70B9\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u89C6\\u57DF\\u5939\\u89D2\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n 0\\xB0\\n 45\\xB0\\n 90\\xB0\\n 135\\xB0\\n 180\\xB0\\n
0\\xB0
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1ZpZXdTaGVkL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9WaWV3U2hlZC9fZWxlbWVudC5qcz9jNDgxIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuS9jee9ruaLvuWPlijotbfngrnjgIHnu4jngrkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIj48c3ZnIGNsYXNzPVwiaWNvbi1lZGl0XCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tZWRpdFwiPjwvdXNlPjwvc3ZnPuaLvuWPljwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDI1cHg7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7op4bngrnpq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTlcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwidmlld1BvaW50SGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgc3VidGl0bGUtYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj7op4bln5/lpLnop5I8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPiAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWJnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1wcm9jZXNzLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLXByb2Nlc3NcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLW5vZGUtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmFuZ2Utbm9kZS10ZXh0XCI+MMKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJhbmdlLW5vZGUtdGV4dFwiPjQ1wrA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmFuZ2Utbm9kZS10ZXh0XCI+OTDCsDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYW5nZS1ub2RlLXRleHRcIj4xMzXCsDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYW5nZS1ub2RlLXRleHRcIj4xODDCsDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLW5vZGUtYWN0aXZlXCI+PHNwYW4gY2xhc3M9XCJyYW5nZS1ub2RlLWFjdGl2ZS10ZXh0XCI+MMKwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxODBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBuYW1lPVwiaG9yaXpvbnRhbFZpZXdBbmdsZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa0RBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/ViewShed/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/ViewShed/glsl.js": -/*!*******************************************!*\ - !*** ./src/Obj/Analysis/ViewShed/glsl.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\n #define USE_CUBE_MAP_SHADOW true\\n uniform sampler2D colorTexture;\\n uniform sampler2D depthTexture;\\n varying vec2 v_textureCoordinates;\\n uniform mat4 camera_projection_matrix;\\n uniform mat4 camera_view_matrix;\\n uniform samplerCube shadowMap_textureCube;\\n uniform mat4 shadowMap_matrix;\\n uniform vec4 shadowMap_lightPositionEC;\\n uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;\\n uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;\\n uniform float helsing_viewDistance;\\n uniform vec4 helsing_visibleAreaColor;\\n uniform vec4 helsing_invisibleAreaColor;\\n\\n struct zx_shadowParameters\\n {\\n vec3 texCoords;\\n float depthBias;\\n float depth;\\n float nDotL;\\n vec2 texelStepSize;\\n float normalShadingSmooth;\\n float darkness;\\n };\\n\\n float czm_shadowVisibility(samplerCube shadowMap, zx_shadowParameters shadowParameters)\\n {\\n float depthBias = shadowParameters.depthBias;\\n float depth = shadowParameters.depth;\\n float nDotL = shadowParameters.nDotL;\\n float normalShadingSmooth = shadowParameters.normalShadingSmooth;\\n float darkness = shadowParameters.darkness;\\n vec3 uvw = shadowParameters.texCoords;\\n depth -= depthBias;\\n float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);\\n return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);\\n }\\n\\n vec4 getPositionEC(){\\n return czm_windowToEyeCoordinates(gl_FragCoord);\\n }\\n\\n vec3 getNormalEC(){\\n return vec3(1.);\\n }\\n\\n vec4 toEye(in vec2 uv,in float depth){\\n vec2 xy=vec2((uv.x*2.-1.),(uv.y*2.-1.));\\n vec4 posInCamera=czm_inverseProjection*vec4(xy,depth,1.);\\n posInCamera=posInCamera/posInCamera.w;\\n return posInCamera;\\n }\\n\\n vec3 pointProjectOnPlane(in vec3 planeNormal,in vec3 planeOrigin,in vec3 point){\\n vec3 v01=point-planeOrigin;\\n float d=dot(planeNormal,v01);\\n return(point-planeNormal*d);\\n }\\n\\n float getDepth(in vec4 depth){\\n float z_window=czm_unpackDepth(depth);\\n z_window=czm_reverseLogDepth(z_window);\\n float n_range=czm_depthRange.near;\\n float f_range=czm_depthRange.far;\\n return(2.*z_window-n_range-f_range)/(f_range-n_range);\\n }\\n\\n float shadow(in vec4 positionEC){\\n vec3 normalEC=getNormalEC();\\n zx_shadowParameters shadowParameters;\\n shadowParameters.texelStepSize=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;\\n shadowParameters.depthBias=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;\\n shadowParameters.normalShadingSmooth=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;\\n shadowParameters.darkness=shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;\\n vec3 directionEC=positionEC.xyz-shadowMap_lightPositionEC.xyz;\\n float distance=length(directionEC);\\n directionEC=normalize(directionEC);\\n float radius=shadowMap_lightPositionEC.w;\\n if(distance>radius)\\n {\\n return 2.0;\\n }\\n vec3 directionWC=czm_inverseViewRotation*directionEC;\\n shadowParameters.depth=distance/radius-0.0003;\\n shadowParameters.nDotL=clamp(dot(normalEC,-directionEC),0.,1.);\\n shadowParameters.texCoords=directionWC;\\n float visibility=czm_shadowVisibility(shadowMap_textureCube,shadowParameters);\\n return visibility;\\n }\\n\\n bool visible(in vec4 result)\\n {\\n result.x/=result.w;\\n result.y/=result.w;\\n result.z/=result.w;\\n return result.x>=-1.&&result.x<=1.\\n &&result.y>=-1.&&result.y<=1.\\n &&result.z>=-1.&&result.z<=1.;\\n }\\n\\n void main(){\\n // \\u91C9\\u8272 = \\u7ED3\\u6784\\u4E8C\\u7EF4(\\u989C\\u8272\\u7EB9\\u7406, \\u7EB9\\u7406\\u5750\\u6807)\\n gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\\n // \\u6DF1\\u5EA6 = \\u83B7\\u53D6\\u6DF1\\u5EA6(\\u7ED3\\u6784\\u4E8C\\u7EF4(\\u6DF1\\u5EA6\\u7EB9\\u7406, \\u7EB9\\u7406\\u5750\\u6807))\\n float depth = getDepth(texture2D(depthTexture, v_textureCoordinates));\\n // \\u89C6\\u89D2 = (\\u7EB9\\u7406\\u5750\\u6807, \\u6DF1\\u5EA6)\\n vec4 viewPos = toEye(v_textureCoordinates, depth);\\n // \\u4E16\\u754C\\u5750\\u6807\\n vec4 wordPos = czm_inverseView * viewPos;\\n // \\u865A\\u62DF\\u76F8\\u673A\\u4E2D\\u5750\\u6807\\n vec4 vcPos = camera_view_matrix * wordPos;\\n float near = .001 * helsing_viewDistance;\\n float dis = length(vcPos.xyz);\\n if(dis > near && dis < helsing_viewDistance){\\n // \\u900F\\u89C6\\u6295\\u5F71\\n vec4 posInEye = camera_projection_matrix * vcPos;\\n // \\u53EF\\u89C6\\u533A\\u989C\\u8272\\n // vec4 helsing_visibleAreaColor=vec4(0.,1.,0.,.5);\\n // vec4 helsing_invisibleAreaColor=vec4(1.,0.,0.,.5);\\n if(visible(posInEye)){\\n float vis = shadow(viewPos);\\n if(vis > 0.3){\\n gl_FragColor = mix(gl_FragColor,helsing_visibleAreaColor,.5);\\n } else{\\n gl_FragColor = mix(gl_FragColor,helsing_invisibleAreaColor,.5);\\n }\\n }\\n }\\n }\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1ZpZXdTaGVkL2dsc2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1ZpZXdTaGVkL2dsc2wuanM/NDIyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBgXHJcbiAjZGVmaW5lIFVTRV9DVUJFX01BUF9TSEFET1cgdHJ1ZVxyXG4gdW5pZm9ybSBzYW1wbGVyMkQgY29sb3JUZXh0dXJlO1xyXG4gdW5pZm9ybSBzYW1wbGVyMkQgZGVwdGhUZXh0dXJlO1xyXG4gdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzO1xyXG4gdW5pZm9ybSBtYXQ0IGNhbWVyYV9wcm9qZWN0aW9uX21hdHJpeDtcclxuIHVuaWZvcm0gbWF0NCBjYW1lcmFfdmlld19tYXRyaXg7XHJcbiB1bmlmb3JtIHNhbXBsZXJDdWJlIHNoYWRvd01hcF90ZXh0dXJlQ3ViZTtcclxuIHVuaWZvcm0gbWF0NCBzaGFkb3dNYXBfbWF0cml4O1xyXG4gdW5pZm9ybSB2ZWM0IHNoYWRvd01hcF9saWdodFBvc2l0aW9uRUM7XHJcbiB1bmlmb3JtIHZlYzQgc2hhZG93TWFwX25vcm1hbE9mZnNldFNjYWxlRGlzdGFuY2VNYXhEaXN0YW5jZUFuZERhcmtuZXNzO1xyXG4gdW5pZm9ybSB2ZWM0IHNoYWRvd01hcF90ZXhlbFNpemVEZXB0aEJpYXNBbmROb3JtYWxTaGFkaW5nU21vb3RoO1xyXG4gdW5pZm9ybSBmbG9hdCBoZWxzaW5nX3ZpZXdEaXN0YW5jZTtcclxuIHVuaWZvcm0gdmVjNCBoZWxzaW5nX3Zpc2libGVBcmVhQ29sb3I7XHJcbiB1bmlmb3JtIHZlYzQgaGVsc2luZ19pbnZpc2libGVBcmVhQ29sb3I7XHJcblxyXG4gc3RydWN0IHp4X3NoYWRvd1BhcmFtZXRlcnNcclxuIHtcclxuICAgICB2ZWMzIHRleENvb3JkcztcclxuICAgICBmbG9hdCBkZXB0aEJpYXM7XHJcbiAgICAgZmxvYXQgZGVwdGg7XHJcbiAgICAgZmxvYXQgbkRvdEw7XHJcbiAgICAgdmVjMiB0ZXhlbFN0ZXBTaXplO1xyXG4gICAgIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGg7XHJcbiAgICAgZmxvYXQgZGFya25lc3M7XHJcbiB9O1xyXG5cclxuIGZsb2F0IGN6bV9zaGFkb3dWaXNpYmlsaXR5KHNhbXBsZXJDdWJlIHNoYWRvd01hcCwgenhfc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzKVxyXG4ge1xyXG4gICAgIGZsb2F0IGRlcHRoQmlhcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGVwdGhCaWFzO1xyXG4gICAgIGZsb2F0IGRlcHRoID0gc2hhZG93UGFyYW1ldGVycy5kZXB0aDtcclxuICAgICBmbG9hdCBuRG90TCA9IHNoYWRvd1BhcmFtZXRlcnMubkRvdEw7XHJcbiAgICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aCA9IHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aDtcclxuICAgICBmbG9hdCBkYXJrbmVzcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M7XHJcbiAgICAgdmVjMyB1dncgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3JkcztcclxuICAgICBkZXB0aCAtPSBkZXB0aEJpYXM7XHJcbiAgICAgZmxvYXQgdmlzaWJpbGl0eSA9IGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1dncsIGRlcHRoKTtcclxuICAgICByZXR1cm4gY3ptX3ByaXZhdGVfc2hhZG93VmlzaWJpbGl0eSh2aXNpYmlsaXR5LCBuRG90TCwgbm9ybWFsU2hhZGluZ1Ntb290aCwgZGFya25lc3MpO1xyXG4gfVxyXG5cclxuIHZlYzQgZ2V0UG9zaXRpb25FQygpe1xyXG4gICAgIHJldHVybiBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcyhnbF9GcmFnQ29vcmQpO1xyXG4gfVxyXG5cclxuIHZlYzMgZ2V0Tm9ybWFsRUMoKXtcclxuICAgICByZXR1cm4gdmVjMygxLik7XHJcbiB9XHJcblxyXG4gdmVjNCB0b0V5ZShpbiB2ZWMyIHV2LGluIGZsb2F0IGRlcHRoKXtcclxuICAgICB2ZWMyIHh5PXZlYzIoKHV2LngqMi4tMS4pLCh1di55KjIuLTEuKSk7XHJcbiAgICAgdmVjNCBwb3NJbkNhbWVyYT1jem1faW52ZXJzZVByb2plY3Rpb24qdmVjNCh4eSxkZXB0aCwxLik7XHJcbiAgICAgcG9zSW5DYW1lcmE9cG9zSW5DYW1lcmEvcG9zSW5DYW1lcmEudztcclxuICAgICByZXR1cm4gcG9zSW5DYW1lcmE7XHJcbiB9XHJcblxyXG4gdmVjMyBwb2ludFByb2plY3RPblBsYW5lKGluIHZlYzMgcGxhbmVOb3JtYWwsaW4gdmVjMyBwbGFuZU9yaWdpbixpbiB2ZWMzIHBvaW50KXtcclxuICAgICB2ZWMzIHYwMT1wb2ludC1wbGFuZU9yaWdpbjtcclxuICAgICBmbG9hdCBkPWRvdChwbGFuZU5vcm1hbCx2MDEpO1xyXG4gICAgIHJldHVybihwb2ludC1wbGFuZU5vcm1hbCpkKTtcclxuIH1cclxuXHJcbiBmbG9hdCBnZXREZXB0aChpbiB2ZWM0IGRlcHRoKXtcclxuICAgICBmbG9hdCB6X3dpbmRvdz1jem1fdW5wYWNrRGVwdGgoZGVwdGgpO1xyXG4gICAgIHpfd2luZG93PWN6bV9yZXZlcnNlTG9nRGVwdGgoel93aW5kb3cpO1xyXG4gICAgIGZsb2F0IG5fcmFuZ2U9Y3ptX2RlcHRoUmFuZ2UubmVhcjtcclxuICAgICBmbG9hdCBmX3JhbmdlPWN6bV9kZXB0aFJhbmdlLmZhcjtcclxuICAgICByZXR1cm4oMi4qel93aW5kb3ctbl9yYW5nZS1mX3JhbmdlKS8oZl9yYW5nZS1uX3JhbmdlKTtcclxuIH1cclxuXHJcbiBmbG9hdCBzaGFkb3coaW4gdmVjNCBwb3NpdGlvbkVDKXtcclxuICAgICB2ZWMzIG5vcm1hbEVDPWdldE5vcm1hbEVDKCk7XHJcbiAgICAgenhfc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzO1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMudGV4ZWxTdGVwU2l6ZT1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC54eTtcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoQmlhcz1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC56O1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aD1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC53O1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M9c2hhZG93TWFwX25vcm1hbE9mZnNldFNjYWxlRGlzdGFuY2VNYXhEaXN0YW5jZUFuZERhcmtuZXNzLnc7XHJcbiAgICAgdmVjMyBkaXJlY3Rpb25FQz1wb3NpdGlvbkVDLnh5ei1zaGFkb3dNYXBfbGlnaHRQb3NpdGlvbkVDLnh5ejtcclxuICAgICBmbG9hdCBkaXN0YW5jZT1sZW5ndGgoZGlyZWN0aW9uRUMpO1xyXG4gICAgIGRpcmVjdGlvbkVDPW5vcm1hbGl6ZShkaXJlY3Rpb25FQyk7XHJcbiAgICAgZmxvYXQgcmFkaXVzPXNoYWRvd01hcF9saWdodFBvc2l0aW9uRUMudztcclxuICAgICBpZihkaXN0YW5jZT5yYWRpdXMpXHJcbiAgICAge1xyXG4gICAgICAgICByZXR1cm4gMi4wO1xyXG4gICAgIH1cclxuICAgICB2ZWMzIGRpcmVjdGlvbldDPWN6bV9pbnZlcnNlVmlld1JvdGF0aW9uKmRpcmVjdGlvbkVDO1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMuZGVwdGg9ZGlzdGFuY2UvcmFkaXVzLTAuMDAwMztcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLm5Eb3RMPWNsYW1wKGRvdChub3JtYWxFQywtZGlyZWN0aW9uRUMpLDAuLDEuKTtcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3Jkcz1kaXJlY3Rpb25XQztcclxuICAgICBmbG9hdCB2aXNpYmlsaXR5PWN6bV9zaGFkb3dWaXNpYmlsaXR5KHNoYWRvd01hcF90ZXh0dXJlQ3ViZSxzaGFkb3dQYXJhbWV0ZXJzKTtcclxuICAgICByZXR1cm4gdmlzaWJpbGl0eTtcclxuIH1cclxuXHJcbiBib29sIHZpc2libGUoaW4gdmVjNCByZXN1bHQpXHJcbiB7XHJcbiAgICAgcmVzdWx0LngvPXJlc3VsdC53O1xyXG4gICAgIHJlc3VsdC55Lz1yZXN1bHQudztcclxuICAgICByZXN1bHQuei89cmVzdWx0Lnc7XHJcbiAgICAgcmV0dXJuIHJlc3VsdC54Pj0tMS4mJnJlc3VsdC54PD0xLlxyXG4gICAgICYmcmVzdWx0Lnk+PS0xLiYmcmVzdWx0Lnk8PTEuXHJcbiAgICAgJiZyZXN1bHQuej49LTEuJiZyZXN1bHQuejw9MS47XHJcbiB9XHJcblxyXG4gdm9pZCBtYWluKCl7XHJcbiAgICAgLy8g6YeJ6ImyID0g57uT5p6E5LqM57u0KOminOiJsue6ueeQhiwg57q555CG5Z2Q5qCHKVxyXG4gICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChjb2xvclRleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKTtcclxuICAgICAvLyDmt7HluqYgPSDojrflj5bmt7HluqYo57uT5p6E5LqM57u0KOa3seW6pue6ueeQhiwg57q555CG5Z2Q5qCHKSlcclxuICAgICBmbG9hdCBkZXB0aCA9IGdldERlcHRoKHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKSk7XHJcbiAgICAgLy8g6KeG6KeSID0gKOe6ueeQhuWdkOaghywg5rex5bqmKVxyXG4gICAgIHZlYzQgdmlld1BvcyA9IHRvRXllKHZfdGV4dHVyZUNvb3JkaW5hdGVzLCBkZXB0aCk7XHJcbiAgICAgLy8g5LiW55WM5Z2Q5qCHXHJcbiAgICAgdmVjNCB3b3JkUG9zID0gY3ptX2ludmVyc2VWaWV3ICogdmlld1BvcztcclxuICAgICAvLyDomZrmi5/nm7jmnLrkuK3lnZDmoIdcclxuICAgICB2ZWM0IHZjUG9zID0gY2FtZXJhX3ZpZXdfbWF0cml4ICogd29yZFBvcztcclxuICAgICBmbG9hdCBuZWFyID0gLjAwMSAqIGhlbHNpbmdfdmlld0Rpc3RhbmNlO1xyXG4gICAgIGZsb2F0IGRpcyA9IGxlbmd0aCh2Y1Bvcy54eXopO1xyXG4gICAgIGlmKGRpcyA+IG5lYXIgJiYgZGlzIDwgaGVsc2luZ192aWV3RGlzdGFuY2Upe1xyXG4gICAgICAgICAvLyDpgI/op4bmipXlvbFcclxuICAgICAgICAgdmVjNCBwb3NJbkV5ZSA9IGNhbWVyYV9wcm9qZWN0aW9uX21hdHJpeCAqIHZjUG9zO1xyXG4gICAgICAgICAvLyDlj6/op4bljLrpopzoibJcclxuICAgICAgICAgLy8gdmVjNCBoZWxzaW5nX3Zpc2libGVBcmVhQ29sb3I9dmVjNCgwLiwxLiwwLiwuNSk7XHJcbiAgICAgICAgIC8vIHZlYzQgaGVsc2luZ19pbnZpc2libGVBcmVhQ29sb3I9dmVjNCgxLiwwLiwwLiwuNSk7XHJcbiAgICAgICAgIGlmKHZpc2libGUocG9zSW5FeWUpKXtcclxuICAgICAgICAgICAgIGZsb2F0IHZpcyA9IHNoYWRvdyh2aWV3UG9zKTtcclxuICAgICAgICAgICAgIGlmKHZpcyA+IDAuMyl7XHJcbiAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvcixoZWxzaW5nX3Zpc2libGVBcmVhQ29sb3IsLjUpO1xyXG4gICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsaGVsc2luZ19pbnZpc2libGVBcmVhQ29sb3IsLjUpO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgfVxyXG4gfWA7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/ViewShed/glsl.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/ViewShed/glsl2.js": -/*!********************************************!*\ - !*** ./src/Obj/Analysis/ViewShed/glsl2.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"\\n #define USE_CUBE_MAP_SHADOW true\\n uniform sampler2D colorTexture;\\n uniform sampler2D depthTexture;\\n in vec2 v_textureCoordinates;\\n uniform mat4 camera_projection_matrix;\\n uniform mat4 camera_view_matrix;\\n uniform samplerCube shadowMap_textureCube;\\n uniform mat4 shadowMap_matrix;\\n uniform vec4 shadowMap_lightPositionEC;\\n uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;\\n uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;\\n uniform float helsing_viewDistance;\\n uniform vec4 helsing_visibleAreaColor;\\n uniform vec4 helsing_invisibleAreaColor;\\n\\n struct zx_shadowParameters\\n {\\n vec3 texCoords;\\n float depthBias;\\n float depth;\\n float nDotL;\\n vec2 texelStepSize;\\n float normalShadingSmooth;\\n float darkness;\\n };\\n\\n float czm_shadowVisibility(samplerCube shadowMap, zx_shadowParameters shadowParameters)\\n {\\n float depthBias = shadowParameters.depthBias;\\n float depth = shadowParameters.depth;\\n float nDotL = shadowParameters.nDotL;\\n float normalShadingSmooth = shadowParameters.normalShadingSmooth;\\n float darkness = shadowParameters.darkness;\\n vec3 uvw = shadowParameters.texCoords;\\n depth -= depthBias;\\n float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);\\n return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);\\n }\\n\\n vec4 getPositionEC(){\\n return czm_windowToEyeCoordinates(gl_FragCoord);\\n }\\n\\n vec3 getNormalEC(){\\n return vec3(1.);\\n }\\n\\n vec4 toEye(in vec2 uv,in float depth){\\n vec2 xy=vec2((uv.x*2.-1.),(uv.y*2.-1.));\\n vec4 posInCamera=czm_inverseProjection*vec4(xy,depth,1.);\\n posInCamera=posInCamera/posInCamera.w;\\n return posInCamera;\\n }\\n\\n vec3 pointProjectOnPlane(in vec3 planeNormal,in vec3 planeOrigin,in vec3 point){\\n vec3 v01=point-planeOrigin;\\n float d=dot(planeNormal,v01);\\n return(point-planeNormal*d);\\n }\\n\\n float getDepth(in vec4 depth){\\n float z_window=czm_unpackDepth(depth);\\n z_window=czm_reverseLogDepth(z_window);\\n float n_range=czm_depthRange.near;\\n float f_range=czm_depthRange.far;\\n return(2.*z_window-n_range-f_range)/(f_range-n_range);\\n }\\n\\n float shadow(in vec4 positionEC){\\n vec3 normalEC=getNormalEC();\\n zx_shadowParameters shadowParameters;\\n shadowParameters.texelStepSize=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;\\n shadowParameters.depthBias=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;\\n shadowParameters.normalShadingSmooth=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;\\n shadowParameters.darkness=shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;\\n vec3 directionEC=positionEC.xyz-shadowMap_lightPositionEC.xyz;\\n float distance=length(directionEC);\\n directionEC=normalize(directionEC);\\n float radius=shadowMap_lightPositionEC.w;\\n if(distance>radius)\\n {\\n return 2.0;\\n }\\n vec3 directionWC=czm_inverseViewRotation*directionEC;\\n shadowParameters.depth=distance/radius-0.0003;\\n shadowParameters.nDotL=clamp(dot(normalEC,-directionEC),0.,1.);\\n shadowParameters.texCoords=directionWC;\\n float visibility=czm_shadowVisibility(shadowMap_textureCube,shadowParameters);\\n return visibility;\\n }\\n\\n bool visible(in vec4 result)\\n {\\n result.x/=result.w;\\n result.y/=result.w;\\n result.z/=result.w;\\n return result.x>=-1.&&result.x<=1.\\n &&result.y>=-1.&&result.y<=1.\\n &&result.z>=-1.&&result.z<=1.;\\n }\\n\\n void main(){\\n // \\u91C9\\u8272 = \\u7ED3\\u6784\\u4E8C\\u7EF4(\\u989C\\u8272\\u7EB9\\u7406, \\u7EB9\\u7406\\u5750\\u6807)\\n out_FragColor = texture(colorTexture, v_textureCoordinates);\\n // \\u6DF1\\u5EA6 = \\u83B7\\u53D6\\u6DF1\\u5EA6(\\u7ED3\\u6784\\u4E8C\\u7EF4(\\u6DF1\\u5EA6\\u7EB9\\u7406, \\u7EB9\\u7406\\u5750\\u6807))\\n float depth = getDepth(texture(depthTexture, v_textureCoordinates));\\n // \\u89C6\\u89D2 = (\\u7EB9\\u7406\\u5750\\u6807, \\u6DF1\\u5EA6)\\n vec4 viewPos = toEye(v_textureCoordinates, depth);\\n // \\u4E16\\u754C\\u5750\\u6807\\n vec4 wordPos = czm_inverseView * viewPos;\\n // \\u865A\\u62DF\\u76F8\\u673A\\u4E2D\\u5750\\u6807\\n vec4 vcPos = camera_view_matrix * wordPos;\\n float near = .001 * helsing_viewDistance;\\n float dis = length(vcPos.xyz);\\n if(dis > near && dis < helsing_viewDistance){\\n // \\u900F\\u89C6\\u6295\\u5F71\\n vec4 posInEye = camera_projection_matrix * vcPos;\\n // \\u53EF\\u89C6\\u533A\\u989C\\u8272\\n // vec4 helsing_visibleAreaColor=vec4(0.,1.,0.,.5);\\n // vec4 helsing_invisibleAreaColor=vec4(1.,0.,0.,.5);\\n if(visible(posInEye)){\\n float vis = shadow(viewPos);\\n if(vis > 0.3){\\n out_FragColor = mix(out_FragColor,helsing_visibleAreaColor,.5);\\n } else{\\n out_FragColor = mix(out_FragColor,helsing_invisibleAreaColor,.5);\\n }\\n }\\n }\\n }\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1ZpZXdTaGVkL2dsc2wyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9WaWV3U2hlZC9nbHNsMi5qcz9hNjZmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGBcclxuICNkZWZpbmUgVVNFX0NVQkVfTUFQX1NIQURPVyB0cnVlXHJcbiB1bmlmb3JtIHNhbXBsZXIyRCBjb2xvclRleHR1cmU7XHJcbiB1bmlmb3JtIHNhbXBsZXIyRCBkZXB0aFRleHR1cmU7XHJcbiBpbiB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzO1xyXG4gdW5pZm9ybSBtYXQ0IGNhbWVyYV9wcm9qZWN0aW9uX21hdHJpeDtcclxuIHVuaWZvcm0gbWF0NCBjYW1lcmFfdmlld19tYXRyaXg7XHJcbiB1bmlmb3JtIHNhbXBsZXJDdWJlIHNoYWRvd01hcF90ZXh0dXJlQ3ViZTtcclxuIHVuaWZvcm0gbWF0NCBzaGFkb3dNYXBfbWF0cml4O1xyXG4gdW5pZm9ybSB2ZWM0IHNoYWRvd01hcF9saWdodFBvc2l0aW9uRUM7XHJcbiB1bmlmb3JtIHZlYzQgc2hhZG93TWFwX25vcm1hbE9mZnNldFNjYWxlRGlzdGFuY2VNYXhEaXN0YW5jZUFuZERhcmtuZXNzO1xyXG4gdW5pZm9ybSB2ZWM0IHNoYWRvd01hcF90ZXhlbFNpemVEZXB0aEJpYXNBbmROb3JtYWxTaGFkaW5nU21vb3RoO1xyXG4gdW5pZm9ybSBmbG9hdCBoZWxzaW5nX3ZpZXdEaXN0YW5jZTtcclxuIHVuaWZvcm0gdmVjNCBoZWxzaW5nX3Zpc2libGVBcmVhQ29sb3I7XHJcbiB1bmlmb3JtIHZlYzQgaGVsc2luZ19pbnZpc2libGVBcmVhQ29sb3I7XHJcblxyXG4gc3RydWN0IHp4X3NoYWRvd1BhcmFtZXRlcnNcclxuIHtcclxuICAgICB2ZWMzIHRleENvb3JkcztcclxuICAgICBmbG9hdCBkZXB0aEJpYXM7XHJcbiAgICAgZmxvYXQgZGVwdGg7XHJcbiAgICAgZmxvYXQgbkRvdEw7XHJcbiAgICAgdmVjMiB0ZXhlbFN0ZXBTaXplO1xyXG4gICAgIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGg7XHJcbiAgICAgZmxvYXQgZGFya25lc3M7XHJcbiB9O1xyXG5cclxuIGZsb2F0IGN6bV9zaGFkb3dWaXNpYmlsaXR5KHNhbXBsZXJDdWJlIHNoYWRvd01hcCwgenhfc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzKVxyXG4ge1xyXG4gICAgIGZsb2F0IGRlcHRoQmlhcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGVwdGhCaWFzO1xyXG4gICAgIGZsb2F0IGRlcHRoID0gc2hhZG93UGFyYW1ldGVycy5kZXB0aDtcclxuICAgICBmbG9hdCBuRG90TCA9IHNoYWRvd1BhcmFtZXRlcnMubkRvdEw7XHJcbiAgICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aCA9IHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aDtcclxuICAgICBmbG9hdCBkYXJrbmVzcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M7XHJcbiAgICAgdmVjMyB1dncgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3JkcztcclxuICAgICBkZXB0aCAtPSBkZXB0aEJpYXM7XHJcbiAgICAgZmxvYXQgdmlzaWJpbGl0eSA9IGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1dncsIGRlcHRoKTtcclxuICAgICByZXR1cm4gY3ptX3ByaXZhdGVfc2hhZG93VmlzaWJpbGl0eSh2aXNpYmlsaXR5LCBuRG90TCwgbm9ybWFsU2hhZGluZ1Ntb290aCwgZGFya25lc3MpO1xyXG4gfVxyXG5cclxuIHZlYzQgZ2V0UG9zaXRpb25FQygpe1xyXG4gICAgIHJldHVybiBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcyhnbF9GcmFnQ29vcmQpO1xyXG4gfVxyXG5cclxuIHZlYzMgZ2V0Tm9ybWFsRUMoKXtcclxuICAgICByZXR1cm4gdmVjMygxLik7XHJcbiB9XHJcblxyXG4gdmVjNCB0b0V5ZShpbiB2ZWMyIHV2LGluIGZsb2F0IGRlcHRoKXtcclxuICAgICB2ZWMyIHh5PXZlYzIoKHV2LngqMi4tMS4pLCh1di55KjIuLTEuKSk7XHJcbiAgICAgdmVjNCBwb3NJbkNhbWVyYT1jem1faW52ZXJzZVByb2plY3Rpb24qdmVjNCh4eSxkZXB0aCwxLik7XHJcbiAgICAgcG9zSW5DYW1lcmE9cG9zSW5DYW1lcmEvcG9zSW5DYW1lcmEudztcclxuICAgICByZXR1cm4gcG9zSW5DYW1lcmE7XHJcbiB9XHJcblxyXG4gdmVjMyBwb2ludFByb2plY3RPblBsYW5lKGluIHZlYzMgcGxhbmVOb3JtYWwsaW4gdmVjMyBwbGFuZU9yaWdpbixpbiB2ZWMzIHBvaW50KXtcclxuICAgICB2ZWMzIHYwMT1wb2ludC1wbGFuZU9yaWdpbjtcclxuICAgICBmbG9hdCBkPWRvdChwbGFuZU5vcm1hbCx2MDEpO1xyXG4gICAgIHJldHVybihwb2ludC1wbGFuZU5vcm1hbCpkKTtcclxuIH1cclxuXHJcbiBmbG9hdCBnZXREZXB0aChpbiB2ZWM0IGRlcHRoKXtcclxuICAgICBmbG9hdCB6X3dpbmRvdz1jem1fdW5wYWNrRGVwdGgoZGVwdGgpO1xyXG4gICAgIHpfd2luZG93PWN6bV9yZXZlcnNlTG9nRGVwdGgoel93aW5kb3cpO1xyXG4gICAgIGZsb2F0IG5fcmFuZ2U9Y3ptX2RlcHRoUmFuZ2UubmVhcjtcclxuICAgICBmbG9hdCBmX3JhbmdlPWN6bV9kZXB0aFJhbmdlLmZhcjtcclxuICAgICByZXR1cm4oMi4qel93aW5kb3ctbl9yYW5nZS1mX3JhbmdlKS8oZl9yYW5nZS1uX3JhbmdlKTtcclxuIH1cclxuXHJcbiBmbG9hdCBzaGFkb3coaW4gdmVjNCBwb3NpdGlvbkVDKXtcclxuICAgICB2ZWMzIG5vcm1hbEVDPWdldE5vcm1hbEVDKCk7XHJcbiAgICAgenhfc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzO1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMudGV4ZWxTdGVwU2l6ZT1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC54eTtcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoQmlhcz1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC56O1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aD1zaGFkb3dNYXBfdGV4ZWxTaXplRGVwdGhCaWFzQW5kTm9ybWFsU2hhZGluZ1Ntb290aC53O1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M9c2hhZG93TWFwX25vcm1hbE9mZnNldFNjYWxlRGlzdGFuY2VNYXhEaXN0YW5jZUFuZERhcmtuZXNzLnc7XHJcbiAgICAgdmVjMyBkaXJlY3Rpb25FQz1wb3NpdGlvbkVDLnh5ei1zaGFkb3dNYXBfbGlnaHRQb3NpdGlvbkVDLnh5ejtcclxuICAgICBmbG9hdCBkaXN0YW5jZT1sZW5ndGgoZGlyZWN0aW9uRUMpO1xyXG4gICAgIGRpcmVjdGlvbkVDPW5vcm1hbGl6ZShkaXJlY3Rpb25FQyk7XHJcbiAgICAgZmxvYXQgcmFkaXVzPXNoYWRvd01hcF9saWdodFBvc2l0aW9uRUMudztcclxuICAgICBpZihkaXN0YW5jZT5yYWRpdXMpXHJcbiAgICAge1xyXG4gICAgICAgICByZXR1cm4gMi4wO1xyXG4gICAgIH1cclxuICAgICB2ZWMzIGRpcmVjdGlvbldDPWN6bV9pbnZlcnNlVmlld1JvdGF0aW9uKmRpcmVjdGlvbkVDO1xyXG4gICAgIHNoYWRvd1BhcmFtZXRlcnMuZGVwdGg9ZGlzdGFuY2UvcmFkaXVzLTAuMDAwMztcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLm5Eb3RMPWNsYW1wKGRvdChub3JtYWxFQywtZGlyZWN0aW9uRUMpLDAuLDEuKTtcclxuICAgICBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3Jkcz1kaXJlY3Rpb25XQztcclxuICAgICBmbG9hdCB2aXNpYmlsaXR5PWN6bV9zaGFkb3dWaXNpYmlsaXR5KHNoYWRvd01hcF90ZXh0dXJlQ3ViZSxzaGFkb3dQYXJhbWV0ZXJzKTtcclxuICAgICByZXR1cm4gdmlzaWJpbGl0eTtcclxuIH1cclxuXHJcbiBib29sIHZpc2libGUoaW4gdmVjNCByZXN1bHQpXHJcbiB7XHJcbiAgICAgcmVzdWx0LngvPXJlc3VsdC53O1xyXG4gICAgIHJlc3VsdC55Lz1yZXN1bHQudztcclxuICAgICByZXN1bHQuei89cmVzdWx0Lnc7XHJcbiAgICAgcmV0dXJuIHJlc3VsdC54Pj0tMS4mJnJlc3VsdC54PD0xLlxyXG4gICAgICYmcmVzdWx0Lnk+PS0xLiYmcmVzdWx0Lnk8PTEuXHJcbiAgICAgJiZyZXN1bHQuej49LTEuJiZyZXN1bHQuejw9MS47XHJcbiB9XHJcblxyXG4gdm9pZCBtYWluKCl7XHJcbiAgICAgLy8g6YeJ6ImyID0g57uT5p6E5LqM57u0KOminOiJsue6ueeQhiwg57q555CG5Z2Q5qCHKVxyXG4gICAgIG91dF9GcmFnQ29sb3IgPSB0ZXh0dXJlKGNvbG9yVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgIC8vIOa3seW6piA9IOiOt+WPlua3seW6pijnu5PmnoTkuoznu7Qo5rex5bqm57q555CGLCDnurnnkIblnZDmoIcpKVxyXG4gICAgIGZsb2F0IGRlcHRoID0gZ2V0RGVwdGgodGV4dHVyZShkZXB0aFRleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKSk7XHJcbiAgICAgLy8g6KeG6KeSID0gKOe6ueeQhuWdkOaghywg5rex5bqmKVxyXG4gICAgIHZlYzQgdmlld1BvcyA9IHRvRXllKHZfdGV4dHVyZUNvb3JkaW5hdGVzLCBkZXB0aCk7XHJcbiAgICAgLy8g5LiW55WM5Z2Q5qCHXHJcbiAgICAgdmVjNCB3b3JkUG9zID0gY3ptX2ludmVyc2VWaWV3ICogdmlld1BvcztcclxuICAgICAvLyDomZrmi5/nm7jmnLrkuK3lnZDmoIdcclxuICAgICB2ZWM0IHZjUG9zID0gY2FtZXJhX3ZpZXdfbWF0cml4ICogd29yZFBvcztcclxuICAgICBmbG9hdCBuZWFyID0gLjAwMSAqIGhlbHNpbmdfdmlld0Rpc3RhbmNlO1xyXG4gICAgIGZsb2F0IGRpcyA9IGxlbmd0aCh2Y1Bvcy54eXopO1xyXG4gICAgIGlmKGRpcyA+IG5lYXIgJiYgZGlzIDwgaGVsc2luZ192aWV3RGlzdGFuY2Upe1xyXG4gICAgICAgICAvLyDpgI/op4bmipXlvbFcclxuICAgICAgICAgdmVjNCBwb3NJbkV5ZSA9IGNhbWVyYV9wcm9qZWN0aW9uX21hdHJpeCAqIHZjUG9zO1xyXG4gICAgICAgICAvLyDlj6/op4bljLrpopzoibJcclxuICAgICAgICAgLy8gdmVjNCBoZWxzaW5nX3Zpc2libGVBcmVhQ29sb3I9dmVjNCgwLiwxLiwwLiwuNSk7XHJcbiAgICAgICAgIC8vIHZlYzQgaGVsc2luZ19pbnZpc2libGVBcmVhQ29sb3I9dmVjNCgxLiwwLiwwLiwuNSk7XHJcbiAgICAgICAgIGlmKHZpc2libGUocG9zSW5FeWUpKXtcclxuICAgICAgICAgICAgIGZsb2F0IHZpcyA9IHNoYWRvdyh2aWV3UG9zKTtcclxuICAgICAgICAgICAgIGlmKHZpcyA+IDAuMyl7XHJcbiAgICAgICAgICAgICAgICBvdXRfRnJhZ0NvbG9yID0gbWl4KG91dF9GcmFnQ29sb3IsaGVsc2luZ192aXNpYmxlQXJlYUNvbG9yLC41KTtcclxuICAgICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgICAgIG91dF9GcmFnQ29sb3IgPSBtaXgob3V0X0ZyYWdDb2xvcixoZWxzaW5nX2ludmlzaWJsZUFyZWFDb2xvciwuNSk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICB9XHJcbiB9YDsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/ViewShed/glsl2.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/ViewShed/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Analysis/ViewShed/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/readOnlyError */ \"./node_modules/@babel/runtime/helpers/readOnlyError.js\");\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _glsl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./glsl */ \"./src/Obj/Analysis/ViewShed/glsl.js\");\n/* harmony import */ var _glsl2__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./glsl2 */ \"./src/Obj/Analysis/ViewShed/glsl2.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Controller */ \"./src/Controller/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/ViewShed/_element.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n// ViewShed.js\n\n\n\n\n\n\n\n\n\n/**\r\n * @constructor\r\n * @description 可视域分析\r\n * @param sdk\r\n * @param {Object} options 选项。\r\n * @param {Cesium.Cartesian3} options.viewPosition 观测点位置。\r\n * @param {Cesium.Cartesian3} options.viewPositionEnd 最远观测点位置(如果设置了观测距离,这个属性可以不设置)。\r\n * @param {Number} options.viewPointHeight=1.8 视点高度(单位`米`)。\r\n * @param {Number} options.viewDistance 观测距离(单位`米`)。\r\n * @param {Number} options.viewHeading 航向角(单位`度`)。\r\n * @param {Number} options.viewPitch 俯仰角(单位`度`)。\r\n * @param {Number} options.horizontalViewAngle=90 可视域水平夹角(单位`度`)。\r\n * @param {Number} options.verticalViewAngle=60 可视域垂直夹角(单位`度`)。\r\n * @param {String} options.visibleAreaColor=#008000 可视区域颜色(默认值`绿色`)。\r\n * @param {String} options.invisibleAreaColor=#FF0000 不可视区域颜色(默认值`红色`)。\r\n */\nvar ViewShedStage = /*#__PURE__*/function (_Tools) {\n function ViewShedStage(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, ViewShedStage);\n _this2 = _callSuper(this, ViewShedStage, [sdk, options]);\n\n // if (Object.hasOwn(options.viewPosition, 'lng') && Object.hasOwn(options.viewPosition, 'lat') && Object.hasOwn(options.viewPosition, 'alt')) {\n // this.error = '请提供观测点位置!'\n // window.ELEMENT && window.ELEMENT.Message({\n // message: '请提供观测点位置!',\n // type: 'warning',\n // duration: 1500\n // });\n // return\n // }\n\n _this2.viewer = sdk.viewer;\n _this2.options = {};\n _this2.options.viewPosition = options.viewPosition;\n _this2.options.viewPositionEnd = options.viewPositionEnd;\n _this2.options.horizontalViewAngle = options.horizontalViewAngle || options.horizontalViewAngle === 0 ? options.horizontalViewAngle : 90.0;\n _this2.options.verticalViewAngle = options.verticalViewAngle || options.verticalViewAngle === 0 ? options.verticalViewAngle : 60.0;\n _this2.options.visibleAreaColor = options.visibleAreaColor || '#008000';\n _this2.options.invisibleAreaColor = options.invisibleAreaColor || '#FF0000';\n _this2._elms = {};\n _this2.viewPointHeight = options.viewPointHeight;\n // this.enabled = (typeof options.enabled === \"boolean\") ? options.enabled : true;\n // this.softShadows = (typeof options.softShadows === \"boolean\") ? options.softShadows : true;\n // this.size = options.size || 10240; // 2048\n _this2.ids = [];\n _this2.Dialog = _Dialog;\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"]();\n _this2.html = null;\n YJ.Analysis.AnalysesResults.push(_this2);\n // ViewShedStage.edit(this)\n // ViewShedStage.edit(this)\n // this.update();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(ViewShedStage, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(ViewShedStage, [{\n key: \"viewPointHeight\",\n get: function get() {\n return this.options.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.options.viewPointHeight = viewPointHeight;\n this._elms.viewPointHeight && this._elms.viewPointHeight.forEach(function (item) {\n item.value = viewPointHeight;\n });\n }\n }, {\n key: \"viewPosition\",\n get: function get() {\n return this.options.viewPosition;\n },\n set: function set(v) {\n this.options.viewPosition = v;\n this.ids[0] && (this.viewer.entities.getById(this.ids[0]).position = new Cesium.Cartesian3.fromDegrees(v.lng, v.lat, v.alt));\n this.update();\n // let viewPosition3 = Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt)\n }\n }, {\n key: \"viewPositionEnd\",\n get: function get() {\n return this.options.viewPositionEnd;\n },\n set: function set(v) {\n this.options.viewPositionEnd = v;\n this.ids[1] && (this.viewer.entities.getById(this.ids[1]).position = new Cesium.Cartesian3.fromDegrees(v.lng, v.lat, v.alt));\n this.update();\n // let viewPositionEnd3 = Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng, this.options.viewPositionEnd.lat, this.options.viewPositionEnd.alt)\n // this.viewDistance = this.viewPositionEnd ? Cesium.Cartesian3.distance(this.viewPosition, this.viewPositionEnd) : (options.viewDistance || 100.0);\n }\n }, {\n key: \"horizontalViewAngle\",\n get: function get() {\n return this.options.horizontalViewAngle;\n },\n set: function set(v) {\n this.options.horizontalViewAngle = v;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n var contentElm = this._DialogObject._element.content;\n var e_horizontalViewAngle = contentElm.querySelector(\"input[name='horizontalViewAngle']\");\n e_horizontalViewAngle.value = v;\n var rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0];\n var rangeNodeActiveText = rangeNodeActive.getElementsByClassName('range-node-active-text')[0];\n rangeNodeActiveText.innerHTML = v + '°';\n var rangeProcess = contentElm.getElementsByClassName('range-process')[0];\n rangeProcess.style.width = v / 180 * 100 + '%';\n }\n this.update();\n }\n }, {\n key: \"horizontalViewAngles\",\n get: function get() {\n return this.horizontalViewAngle;\n },\n set: function set(v) {\n this.horizontalViewAngle = v;\n // this.update()\n }\n }, {\n key: \"visibleAreaColor\",\n get: function get() {\n return this.options.visibleAreaColor;\n },\n set: function set(v) {\n this.options.visibleAreaColor = v;\n this.update();\n }\n }, {\n key: \"invisibleAreaColor\",\n get: function get() {\n return this.options.invisibleAreaColor;\n },\n set: function set(v) {\n this.options.invisibleAreaColor = v;\n this.update();\n }\n }, {\n key: \"verticalViewAngle\",\n get: function get() {\n return this.options.verticalViewAngle;\n },\n set: function set(v) {\n this.options.verticalViewAngle = v;\n this.update();\n }\n }, {\n key: \"viewDistance\",\n get: function get() {\n if (this.options.viewPosition) {\n var viewPosition3 = Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight);\n var viewPositionEnd3 = Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng, this.options.viewPositionEnd.lat, this.options.viewPositionEnd.alt);\n var distance = Cesium.Cartesian3.distance(viewPosition3, viewPositionEnd3);\n return distance;\n }\n }\n }, {\n key: \"viewHeading\",\n get: function get() {\n var viewPosition3 = Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight);\n var viewPositionEnd3 = Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng, this.options.viewPositionEnd.lat, this.options.viewPositionEnd.alt);\n var heading = getHeading(viewPosition3, viewPositionEnd3);\n return heading;\n }\n }, {\n key: \"viewPitch\",\n get: function get() {\n var viewPosition3 = Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight);\n var viewPositionEnd3 = Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng, this.options.viewPositionEnd.lat, this.options.viewPositionEnd.alt);\n var pitch = getPitch(viewPosition3, viewPositionEnd3);\n return pitch;\n }\n }, {\n key: \"end\",\n value: function end() {\n var _this3 = this;\n this.ids.forEach(function (id) {\n var entity = _this3.viewer.entities.getById(id);\n entity && (entity.show = false);\n });\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n }\n }, {\n key: \"draw\",\n value: function draw(callBack) {\n ViewShedStage.create(this, callBack);\n }\n }, {\n key: \"add\",\n value: function add() {\n if (this.options.viewPositionEnd) {\n this.createLightCamera();\n this.createShadowMap();\n this.createPostStage();\n // this.drawFrustumOutline();\n this.drawSketch();\n ViewShedStage.getcanvas(this);\n }\n }\n }, {\n key: \"update\",\n value: function update() {\n this.clear();\n this.add();\n }\n }, {\n key: \"clear\",\n value: function clear() {\n YJ.Measure.SetMeasureStatus(false);\n // this.end()\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n if (this.sketch) {\n this.viewer.entities.removeById(this.sketch.id);\n this.sketch = null;\n }\n if (this.frustumOutline) {\n // this.frustumOutline.destroy();\n this.viewer.entities.removeById(this.frustumOutline.id);\n this.frustumOutline = null;\n }\n if (this.postStage) {\n this.viewer.scene.postProcessStages.remove(this.postStage);\n this.postStage = null;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this4 = this;\n this.clear();\n this.editevent && this.editevent.destroy();\n this.ControllerObject && this.ControllerObject.destroy();\n this.ids.forEach(function (id) {\n _this4.viewer.entities.removeById(id);\n });\n this.ids = [];\n if (this.viewBillboardPrimitive) {\n this.viewer.scene.primitives.remove(this.viewBillboardPrimitive);\n }\n this.viewBillboardPrimitive = null;\n this.options.viewPosition = null;\n this.options.viewPositionEnd = null;\n YJ.Measure.SetMeasureStatus(false);\n if (this._originalShadowMap) {\n this.viewer.scene.shadowMap = this._originalShadowMap;\n this._originalShadowMap = null;\n }\n this.viewer.shadows = this.viewer._shadows;\n }\n }, {\n key: \"close\",\n value: function close() {\n var _this5 = this;\n YJ.Measure.SetMeasureStatus(false);\n this.end();\n this.editevent && this.editevent.destroy();\n this.ControllerObject && this.ControllerObject.destroy();\n this.ids.forEach(function (id) {\n _this5.viewer.entities.removeById(id);\n });\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this6 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n this.tools.message({\n text: '上一次测量未结束',\n type: 'warning'\n });\n return;\n } else {\n this.editevent && this.editevent.destroy();\n this.ids.forEach(function (id) {\n var entity = _this6.viewer.entities.getById(id);\n entity.show = true;\n });\n var selectPoint;\n YJ.Measure.SetMeasureStatus(true);\n // this.tip = new MouseTip('左键选择要操作的观测点,右键取消', this.sdk)\n this.editevent = new _Event__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.sdk);\n this.editevent.mouse_left(function (movement, cartesian) {\n var pick = _this6.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.id && _this6.ids.indexOf(pick.id.id) != -1 && (!selectPoint || selectPoint.id != pick.id.id)) {\n selectPoint = pick.id;\n // this.event.destroy()\n // this.tip.destroy()\n _this6.viewer.entities.getById(_this6.ids[0]).position = new Cesium.Cartesian3.fromDegrees(_this6.viewPosition.lng, _this6.viewPosition.lat, _this6.viewPosition.alt);\n _this6.viewer.entities.getById(_this6.ids[1]).position = new Cesium.Cartesian3.fromDegrees(_this6.viewPositionEnd.lng, _this6.viewPositionEnd.lat, _this6.viewPositionEnd.alt);\n _this6.ControllerObject && _this6.ControllerObject.destroy();\n _this6.ControllerObject = new _Controller__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this6.sdk, {\n position: _objectSpread({}, _this6.cartesian3Towgs84(selectPoint.position._value, _this6.sdk.viewer))\n });\n _this6.ControllerObject.controllerCallBack = function (params, status) {\n if (params.position.alt < 0) {\n params.position.alt = 0;\n }\n selectPoint.position = new Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt);\n if (status) {\n if (_this6.ids.indexOf(pick.id.id) == 0) {\n _this6.viewPosition = params.position;\n } else {\n _this6.viewPositionEnd = params.position;\n }\n YJ.Measure.SetMeasureStatus(true);\n }\n };\n _this6.ControllerObject.editTranslational();\n }\n });\n this.editevent.mouse_right(function (movement, cartesian) {\n YJ.Measure.SetMeasureStatus(false);\n _this6.editevent && _this6.editevent.destroy();\n _this6.ControllerObject && _this6.ControllerObject.destroy();\n _this6.ids.forEach(function (id) {\n var entity = _this6.viewer.entities.getById(id);\n entity.show = false;\n });\n selectPoint = null;\n });\n this.editevent.mouse_move(function (movement, cartesian) {\n // this.tip.setPosition(\n // cartesian,\n // movement.endPosition.x,\n // movement.endPosition.y\n // )\n });\n this.editevent.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this6.editevent.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n YJ.Measure.SetMeasureStatus(false);\n _this6.editevent && _this6.editevent.destroy();\n _this6.ControllerObject && _this6.ControllerObject.destroy();\n _this6.ids.forEach(function (id) {\n var entity = _this6.viewer.entities.getById(id);\n entity.show = false;\n });\n selectPoint = null;\n }\n });\n });\n }\n }\n }, {\n key: \"createLightCamera\",\n value: function createLightCamera() {\n if (!this.options.viewPosition) {\n return;\n }\n var _this = this;\n this.lightCamera = new Cesium.Camera(this.viewer.scene);\n this.lightCamera.position = Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight);\n // if (this.viewPositionEnd) {\n // let direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.viewPositionEnd, this.viewPosition, new Cesium.Cartesian3()), new Cesium.Cartesian3());\n // this.lightCamera.direction = direction; // direction是相机面向的方向\n // }\n this.lightCamera.frustum.near = this.viewDistance * 0.001;\n this.lightCamera.frustum.far = this.viewDistance;\n var hr = Cesium.Math.toRadians(this.horizontalViewAngle);\n var vr = Cesium.Math.toRadians(this.verticalViewAngle);\n var aspectRatio = this.viewDistance * Math.tan(hr / 2) * 2 / (this.viewDistance * Math.tan(vr / 2) * 2);\n this.lightCamera.frustum.aspectRatio = aspectRatio;\n if (hr > vr) {\n this.lightCamera.frustum.fov = hr;\n } else {\n this.lightCamera.frustum.fov = vr;\n }\n this.lightCamera.setView({\n destination: Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight),\n orientation: {\n heading: Cesium.Math.toRadians(this.viewHeading || 0),\n pitch: Cesium.Math.toRadians(this.viewPitch || 0),\n roll: 0\n }\n });\n }\n }, {\n key: \"createShadowMap\",\n value: function createShadowMap() {\n this.shadowMap = new Cesium.ShadowMap({\n context: this.viewer.scene.context,\n lightCamera: this.lightCamera,\n enabled: true,\n isPointLight: true,\n pointLightRadius: this.viewDistance,\n cascadesEnabled: false,\n size: 2048,\n // 2048\n softShadows: true,\n normalOffset: false,\n fromLightSource: false\n });\n if (!this._originalShadowMap) {\n this._originalShadowMap = this.viewer.scene.shadowMap;\n }\n this.viewer.scene.shadowMap = this.shadowMap;\n // setTimeout(() => {\n // this.viewer.shadows = this.viewer._shadows\n // }, 0);\n }\n }, {\n key: \"createPostStage\",\n value: function createPostStage() {\n var _this7 = this;\n var fs = _glsl__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\n if (Number(Cesium.VERSION.split('.')[1]) >= 102) {\n _glsl2__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1___default()(\"fs\");\n }\n var postStage = new Cesium.PostProcessStage({\n fragmentShader: fs,\n uniforms: {\n shadowMap_textureCube: function shadowMap_textureCube() {\n _this7.shadowMap.update(Reflect.get(_this7.viewer.scene, \"_frameState\"));\n return Reflect.get(_this7.shadowMap, \"_shadowMapTexture\");\n },\n shadowMap_matrix: function shadowMap_matrix() {\n _this7.shadowMap.update(Reflect.get(_this7.viewer.scene, \"_frameState\"));\n return Reflect.get(_this7.shadowMap, \"_shadowMapMatrix\");\n },\n shadowMap_lightPositionEC: function shadowMap_lightPositionEC() {\n _this7.shadowMap.update(Reflect.get(_this7.viewer.scene, \"_frameState\"));\n return Reflect.get(_this7.shadowMap, \"_lightPositionEC\");\n },\n shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness: function shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness() {\n _this7.shadowMap.update(Reflect.get(_this7.viewer.scene, \"_frameState\"));\n var bias = _this7.shadowMap._pointBias;\n return Cesium.Cartesian4.fromElements(bias.normalOffsetScale, _this7.shadowMap._distance, _this7.shadowMap.maximumDistance, 0.0, new Cesium.Cartesian4());\n },\n shadowMap_texelSizeDepthBiasAndNormalShadingSmooth: function shadowMap_texelSizeDepthBiasAndNormalShadingSmooth() {\n _this7.shadowMap.update(Reflect.get(_this7.viewer.scene, \"_frameState\"));\n var bias = _this7.shadowMap._pointBias;\n var scratchTexelStepSize = new Cesium.Cartesian2();\n var texelStepSize = scratchTexelStepSize;\n texelStepSize.x = 1.0 / _this7.shadowMap._textureSize.x;\n texelStepSize.y = 1.0 / _this7.shadowMap._textureSize.y;\n return Cesium.Cartesian4.fromElements(texelStepSize.x, texelStepSize.y, bias.depthBias, bias.normalShadingSmooth, new Cesium.Cartesian4());\n },\n camera_projection_matrix: this.lightCamera.frustum.projectionMatrix,\n camera_view_matrix: this.lightCamera.viewMatrix,\n helsing_viewDistance: function helsing_viewDistance() {\n return _this7.viewDistance;\n },\n helsing_visibleAreaColor: Cesium.Color.fromCssColorString(this.visibleAreaColor),\n helsing_invisibleAreaColor: Cesium.Color.fromCssColorString(this.invisibleAreaColor)\n }\n });\n this.postStage = this.viewer.scene.postProcessStages.add(postStage);\n }\n }, {\n key: \"drawFrustumOutline\",\n value: function drawFrustumOutline() {\n var scratchRight = new Cesium.Cartesian3();\n var scratchRotation = new Cesium.Matrix3();\n var scratchOrientation = new Cesium.Quaternion();\n var position = this.lightCamera.positionWC;\n var direction = this.lightCamera.directionWC;\n var up = this.lightCamera.upWC;\n var right = this.lightCamera.rightWC;\n right = Cesium.Cartesian3.negate(right, scratchRight);\n var rotation = scratchRotation;\n Cesium.Matrix3.setColumn(rotation, 0, right, rotation);\n Cesium.Matrix3.setColumn(rotation, 1, up, rotation);\n Cesium.Matrix3.setColumn(rotation, 2, direction, rotation);\n var orientation = Cesium.Quaternion.fromRotationMatrix(rotation, scratchOrientation);\n var instance = new Cesium.GeometryInstance({\n geometry: new Cesium.FrustumOutlineGeometry({\n frustum: this.lightCamera.frustum,\n origin: Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight),\n orientation: orientation\n }),\n id: Math.random().toString(36).substr(2),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOWGREEN //new Cesium.Color(0.0, 1.0, 0.0, 1.0)\n ),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n });\n this.frustumOutline = this.viewer.scene.primitives.add(new Cesium.Primitive({\n geometryInstances: [instance],\n appearance: new Cesium.PerInstanceColorAppearance({\n flat: true,\n translucent: false\n })\n }));\n }\n }, {\n key: \"drawSketch\",\n value: function drawSketch() {\n this.sketch = this.viewer.entities.add({\n name: 'sketch',\n position: Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight),\n orientation: Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight), Cesium.HeadingPitchRoll.fromDegrees(this.viewHeading - 90, this.viewPitch, 0.0)),\n ellipsoid: {\n radii: new Cesium.Cartesian3(this.viewDistance, this.viewDistance, this.viewDistance),\n // innerRadii: new Cesium.Cartesian3(2.0, 2.0, 2.0),\n minimumClock: Cesium.Math.toRadians(-this.horizontalViewAngle / 2),\n maximumClock: Cesium.Math.toRadians(this.horizontalViewAngle / 2),\n minimumCone: Cesium.Math.toRadians(90 - this.verticalViewAngle / 2),\n maximumCone: Cesium.Math.toRadians(90 + this.verticalViewAngle / 2),\n fill: false,\n outline: true,\n subdivisions: 256,\n stackPartitions: 64,\n slicePartitions: 64,\n outlineColor: Cesium.Color.YELLOWGREEN\n }\n });\n this.frustumOutline = this.viewer.entities.add({\n name: 'sketch',\n position: Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight),\n orientation: Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng, this.options.viewPosition.lat, this.options.viewPosition.alt + this.viewPointHeight), Cesium.HeadingPitchRoll.fromDegrees(this.viewHeading - 90, this.viewPitch, 0.0)),\n ellipsoid: {\n radii: new Cesium.Cartesian3(this.viewDistance, this.viewDistance, this.viewDistance),\n innerRadii: new Cesium.Cartesian3(0.0001, 0.0001, 0.0001),\n minimumClock: Cesium.Math.toRadians(-this.horizontalViewAngle / 2),\n maximumClock: Cesium.Math.toRadians(this.horizontalViewAngle / 2),\n minimumCone: Cesium.Math.toRadians(90 - this.verticalViewAngle / 2),\n maximumCone: Cesium.Math.toRadians(90 + this.verticalViewAngle / 2),\n fill: false,\n outline: true,\n subdivisions: 256,\n stackPartitions: 1,\n slicePartitions: 1,\n outlineColor: Cesium.Color.YELLOWGREEN\n }\n });\n }\n }], [{\n key: \"create\",\n value: function create(that, callBack) {\n that.destroy();\n var count = 0;\n if (!YJ.Measure.GetMeasureStatus()) {\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_11__[\"default\"](that.sdk);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_12__[\"default\"]('左键选择观测点位置,右键取消', that.sdk);\n YJ.Measure.SetMeasureStatus(true);\n that.event.mouse_left(function (movement, cartesian) {\n if (!that.viewPosition) {\n that.options.viewPosition = that.cartesian3Towgs84(cartesian, that.viewer);\n that.ids.push(ViewShedStage.create_point(that, cartesian));\n that.tip.set_text(\"左键选择最远观测点位置,右键取消\");\n }\n count++;\n if (count === 2) {\n that.options.viewPositionEnd = that.cartesian3Towgs84(cartesian, that.viewer);\n that.ids.push(ViewShedStage.create_point(that, cartesian));\n that.end();\n that.update();\n callBack(true);\n }\n });\n that.event.mouse_move(function (movement, cartesian) {\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right(function (movement, cartesian) {\n that.ids.forEach(function (id) {\n that.viewer.entities.removeById(id);\n });\n that.ids = [];\n that.end();\n callBack(false);\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n that.ids.forEach(function (id) {\n that.viewer.entities.removeById(id);\n });\n that.ids = [];\n that.end();\n callBack(false);\n }\n });\n });\n } else {\n this.tools.message({\n text: '上一次测量未结束',\n type: 'warning'\n });\n callBack(false);\n }\n }\n }, {\n key: \"create_point\",\n value: function create_point(that, cartesian) {\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n var params = {\n id: id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n };\n that.viewer.entities.add(new Cesium.Entity(params));\n return id;\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(that) {\n var contentElm, resetBtn, drawElm, all_elm, e_horizontalViewAngle, rangeNodeActive, rangeNodeActiveText, rangeProcess, percentage, timeout;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_16__[\"default\"](that.sdk.viewer._container, {\n title: '可视域分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n YJ.Measure.SetMeasureStatus(false);\n that.editevent && that.editevent.destroy();\n that.ControllerObject && that.ControllerObject.destroy();\n that.ids.forEach(function (id) {\n that.viewer.entities.removeById(id);\n });\n }\n });\n case 3:\n that._DialogObject = _context.sent;\n _context.next = 6;\n return that._DialogObject.init();\n case 6:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' view-shed';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_17__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n resetBtn = that._DialogObject._element.body.getElementsByClassName('edit')[0];\n resetBtn.addEventListener('click', function () {\n that.nodeEdit();\n });\n drawElm = document.createElement('button');\n drawElm.innerHTML = '绘制';\n drawElm.addEventListener('click', function () {\n ViewShedStage.create(that);\n });\n that._DialogObject.footAppChild(drawElm);\n that.html = contentElm;\n all_elm = contentElm.getElementsByTagName(\"*\");\n that._EventBinding.on(that, all_elm);\n that._elms = that._EventBinding.element;\n // //经度值\n // let e_lng = contentElm.querySelector(\"span[name='lng']\")\n // e_lng.innerHTML = Number(that.options.viewPosition.lng.toFixed(8))\n\n // //纬度值\n // let e_lat = contentElm.querySelector(\"span[name='lat']\")\n // e_lat.innerHTML = Number(that.options.viewPosition.lat.toFixed(8))\n\n // //高度值\n // let e_alt = contentElm.querySelector(\"span[name='alt']\")\n // e_alt.innerHTML = Number(that.options.viewPosition.alt.toFixed(8))\n\n // //偏航角\n // let e_viewHeading = contentElm.querySelector(\"span[name='viewHeading']\")\n // e_viewHeading.innerHTML = Number(that.viewHeading.toFixed(8))\n\n // //俯仰角\n // let e_viewPitch = contentElm.querySelector(\"span[name='viewPitch']\")\n // e_viewPitch.innerHTML = Number(that.viewPitch.toFixed(8))\n\n //视域夹角\n e_horizontalViewAngle = contentElm.querySelector(\"input[name='horizontalViewAngle']\");\n e_horizontalViewAngle.value = that.options.horizontalViewAngle;\n rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0];\n rangeNodeActiveText = rangeNodeActive.getElementsByClassName('range-node-active-text')[0];\n rangeProcess = contentElm.getElementsByClassName('range-process')[0];\n percentage = that.horizontalViewAngle / 180 * 100;\n rangeNodeActive.style.left = percentage + '%';\n rangeProcess.style.width = percentage + '%';\n rangeNodeActiveText.innerHTML = that.horizontalViewAngle + '°';\n e_horizontalViewAngle.addEventListener('input', function () {\n var percentage = e_horizontalViewAngle.value / 180 * 100;\n rangeNodeActive.style.left = percentage + '%';\n rangeProcess.style.width = percentage + '%';\n rangeNodeActiveText.innerHTML = e_horizontalViewAngle.value + '°';\n });\n e_horizontalViewAngle.addEventListener('change', function () {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n that.horizontalViewAngle = e_horizontalViewAngle.value;\n }, 300);\n });\n case 31:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"getcanvas\",\n value: function getcanvas(that) {\n if (!that.viewPosition) {\n return;\n }\n if (that.viewBillboardPrimitive) {\n that.viewer.scene.primitives.remove(that.viewBillboardPrimitive);\n that.viewBillboardPrimitive = null;\n }\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n canvas.width = 220;\n canvas.height = 180;\n canvas.style.background = \"#000000\";\n var img = new Image();\n var data = [{\n images: that.getSourceRootPath() + '/img/bubble/lng.png',\n text: '经度:' + parseFloat(that.viewPosition.lng.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/lat.png',\n text: '纬度:' + parseFloat(that.viewPosition.lat.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/h.png',\n text: '高度:' + Number((parseFloat(that.viewPosition.alt.toFixed(2)) + Number(that.viewPointHeight)).toFixed(2)) + ' m'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/heading.png',\n text: '偏航角:' + parseFloat(that.viewHeading.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/pitch.png',\n text: '俯仰角:' + parseFloat(that.viewPitch.toFixed(10)) + '°'\n }];\n img.src = that.getSourceRootPath() + '/img/bubble/bubble.png';\n var imagesLoaded = 0;\n img.onload = function () {\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n data.forEach(function (item, index) {\n var img = new Image();\n img.src = item.images;\n img.onload = function () {\n ctx.drawImage(img, 12, 12 + index * 26);\n ctx.fillStyle = \"#fff\";\n ctx.font = \"12px Arial\";\n ctx.fillText(item.text, 44, 28 + index * 26);\n imagesLoaded++;\n if (imagesLoaded === data.length) {\n that.viewBillboardPrimitive = that.viewer.scene.primitives.add(new Cesium.BillboardCollection());\n that.viewBillboardPrimitive.add({\n position: Cesium.Cartesian3.fromDegrees(that.viewPosition.lng, that.viewPosition.lat, that.viewPosition.alt + that.viewPointHeight),\n image: canvas,\n width: 200,\n height: 180,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n });\n }\n };\n });\n };\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\nfunction getHeading(fromPosition, toPosition) {\n var finalPosition = new Cesium.Cartesian3();\n var matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(fromPosition);\n Cesium.Matrix4.inverse(matrix4, matrix4);\n Cesium.Matrix4.multiplyByPoint(matrix4, toPosition, finalPosition);\n Cesium.Cartesian3.normalize(finalPosition, finalPosition);\n return Cesium.Math.toDegrees(Math.atan2(finalPosition.x, finalPosition.y));\n}\nfunction getPitch(fromPosition, toPosition) {\n var finalPosition = new Cesium.Cartesian3();\n var matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(fromPosition);\n Cesium.Matrix4.inverse(matrix4, matrix4);\n Cesium.Matrix4.multiplyByPoint(matrix4, toPosition, finalPosition);\n Cesium.Cartesian3.normalize(finalPosition, finalPosition);\n return Cesium.Math.toDegrees(Math.asin(finalPosition.z));\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewShedStage);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1ZpZXdTaGVkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9WaWV3U2hlZC9pbmRleC5qcz9hNzdhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFZpZXdTaGVkLmpzXHJcbmltcG9ydCBnbHNsIGZyb20gJy4vZ2xzbCdcclxuaW1wb3J0IGdsc2wyIGZyb20gJy4vZ2xzbDInXHJcbmltcG9ydCBFdmVudCBmcm9tIFwiLi4vLi4vLi4vRXZlbnRcIjtcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gXCIuLi8uLi8uLi9Nb3VzZVRpcFwiO1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xsZXJcIjtcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi9CYXNlRGlhbG9nJztcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbi8qKlxyXG4gKiBAY29uc3RydWN0b3JcclxuICogQGRlc2NyaXB0aW9uIOWPr+inhuWfn+WIhuaekFxyXG4gKiBAcGFyYW0gc2RrXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIOmAiemhueOAglxyXG4gKiBAcGFyYW0ge0Nlc2l1bS5DYXJ0ZXNpYW4zfSBvcHRpb25zLnZpZXdQb3NpdGlvbiDop4LmtYvngrnkvY3nva7jgIJcclxuICogQHBhcmFtIHtDZXNpdW0uQ2FydGVzaWFuM30gb3B0aW9ucy52aWV3UG9zaXRpb25FbmQg5pyA6L+c6KeC5rWL54K55L2N572u77yI5aaC5p6c6K6+572u5LqG6KeC5rWL6Led56a777yM6L+Z5Liq5bGe5oCn5Y+v5Lul5LiN6K6+572u77yJ44CCXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLnZpZXdQb2ludEhlaWdodD0xLjgg6KeG54K56auY5bqm77yI5Y2V5L2NYOexs2DvvInjgIJcclxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMudmlld0Rpc3RhbmNlIOingua1i+i3neemu++8iOWNleS9jWDnsbNg77yJ44CCXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLnZpZXdIZWFkaW5nIOiIquWQkeinku+8iOWNleS9jWDluqZg77yJ44CCXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLnZpZXdQaXRjaCDkv6/ku7Dop5LvvIjljZXkvY1g5bqmYO+8ieOAglxyXG4gKiBAcGFyYW0ge051bWJlcn0gb3B0aW9ucy5ob3Jpem9udGFsVmlld0FuZ2xlPTkwIOWPr+inhuWfn+awtOW5s+Wkueinku+8iOWNleS9jWDluqZg77yJ44CCXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLnZlcnRpY2FsVmlld0FuZ2xlPTYwIOWPr+inhuWfn+WeguebtOWkueinku+8iOWNleS9jWDluqZg77yJ44CCXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25zLnZpc2libGVBcmVhQ29sb3I9IzAwODAwMCDlj6/op4bljLrln5/popzoibLvvIjpu5jorqTlgLxg57u/6ImyYO+8ieOAglxyXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucy5pbnZpc2libGVBcmVhQ29sb3I9I0ZGMDAwMCDkuI3lj6/op4bljLrln5/popzoibLvvIjpu5jorqTlgLxg57qi6ImyYO+8ieOAglxyXG4gKi9cclxuY2xhc3MgVmlld1NoZWRTdGFnZSBleHRlbmRzIFRvb2xzIHtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG5cclxuICAgIC8vIGlmIChPYmplY3QuaGFzT3duKG9wdGlvbnMudmlld1Bvc2l0aW9uLCAnbG5nJykgJiYgT2JqZWN0Lmhhc093bihvcHRpb25zLnZpZXdQb3NpdGlvbiwgJ2xhdCcpICYmIE9iamVjdC5oYXNPd24ob3B0aW9ucy52aWV3UG9zaXRpb24sICdhbHQnKSkge1xyXG4gICAgLy8gICAgIHRoaXMuZXJyb3IgPSAn6K+35o+Q5L6b6KeC5rWL54K55L2N572u77yBJ1xyXG4gICAgLy8gICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgLy8gICAgICAgICBtZXNzYWdlOiAn6K+35o+Q5L6b6KeC5rWL54K55L2N572u77yBJyxcclxuICAgIC8vICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgLy8gICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIHJldHVyblxyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlcjtcclxuICAgIHRoaXMub3B0aW9ucyA9IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uID0gb3B0aW9ucy52aWV3UG9zaXRpb247XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kID0gb3B0aW9ucy52aWV3UG9zaXRpb25FbmQ7XHJcbiAgICB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFZpZXdBbmdsZSA9IChvcHRpb25zLmhvcml6b250YWxWaWV3QW5nbGUgfHwgb3B0aW9ucy5ob3Jpem9udGFsVmlld0FuZ2xlID09PSAwKSA/IG9wdGlvbnMuaG9yaXpvbnRhbFZpZXdBbmdsZSA6IDkwLjA7XHJcbiAgICB0aGlzLm9wdGlvbnMudmVydGljYWxWaWV3QW5nbGUgPSAob3B0aW9ucy52ZXJ0aWNhbFZpZXdBbmdsZSB8fCBvcHRpb25zLnZlcnRpY2FsVmlld0FuZ2xlID09PSAwKSA/IG9wdGlvbnMudmVydGljYWxWaWV3QW5nbGUgOiA2MC4wO1xyXG4gICAgdGhpcy5vcHRpb25zLnZpc2libGVBcmVhQ29sb3IgPSBvcHRpb25zLnZpc2libGVBcmVhQ29sb3IgfHwgJyMwMDgwMDAnO1xyXG4gICAgdGhpcy5vcHRpb25zLmludmlzaWJsZUFyZWFDb2xvciA9IG9wdGlvbnMuaW52aXNpYmxlQXJlYUNvbG9yIHx8ICcjRkYwMDAwJztcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMudmlld1BvaW50SGVpZ2h0ID0gb3B0aW9ucy52aWV3UG9pbnRIZWlnaHRcclxuICAgIC8vIHRoaXMuZW5hYmxlZCA9ICh0eXBlb2Ygb3B0aW9ucy5lbmFibGVkID09PSBcImJvb2xlYW5cIikgPyBvcHRpb25zLmVuYWJsZWQgOiB0cnVlO1xyXG4gICAgLy8gdGhpcy5zb2Z0U2hhZG93cyA9ICh0eXBlb2Ygb3B0aW9ucy5zb2Z0U2hhZG93cyA9PT0gXCJib29sZWFuXCIpID8gb3B0aW9ucy5zb2Z0U2hhZG93cyA6IHRydWU7XHJcbiAgICAvLyB0aGlzLnNpemUgPSBvcHRpb25zLnNpemUgfHwgMTAyNDA7IC8vIDIwNDhcclxuICAgIHRoaXMuaWRzID0gW11cclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy50b29scyA9IG5ldyBUb29scyh0aGlzLnNkaylcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgdGhpcy5odG1sID0gbnVsbFxyXG4gICAgWUouQW5hbHlzaXMuQW5hbHlzZXNSZXN1bHRzLnB1c2godGhpcylcclxuICAgIC8vIFZpZXdTaGVkU3RhZ2UuZWRpdCh0aGlzKVxyXG4gICAgLy8gVmlld1NoZWRTdGFnZS5lZGl0KHRoaXMpXHJcbiAgICAvLyB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpZXdQb2ludEhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudmlld1BvaW50SGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgdmlld1BvaW50SGVpZ2h0KHYpIHtcclxuICAgIGxldCB2aWV3UG9pbnRIZWlnaHQgPSBNYXRoLmZsb29yKE51bWJlcih2KSAqIDEwKSAvIDEwXHJcbiAgICBpZiAoaXNOYU4odmlld1BvaW50SGVpZ2h0KSkge1xyXG4gICAgICB2aWV3UG9pbnRIZWlnaHQgPSAxLjhcclxuICAgIH1cclxuICAgIGlmICh2aWV3UG9pbnRIZWlnaHQgPCAwKSB7XHJcbiAgICAgIHZpZXdQb2ludEhlaWdodCA9IDBcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy52aWV3UG9pbnRIZWlnaHQgPSB2aWV3UG9pbnRIZWlnaHRcclxuICAgIHRoaXMuX2VsbXMudmlld1BvaW50SGVpZ2h0ICYmIHRoaXMuX2VsbXMudmlld1BvaW50SGVpZ2h0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZpZXdQb2ludEhlaWdodFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCB2aWV3UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvblxyXG4gIH1cclxuXHJcbiAgc2V0IHZpZXdQb3NpdGlvbih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uID0gdlxyXG4gICAgdGhpcy5pZHNbMF0gJiYgKHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5pZHNbMF0pLnBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHYubG5nLCB2LmxhdCwgdi5hbHQpKVxyXG4gICAgdGhpcy51cGRhdGUoKVxyXG4gICAgLy8gbGV0IHZpZXdQb3NpdGlvbjMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24uYWx0KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZpZXdQb3NpdGlvbkVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kXHJcbiAgfVxyXG5cclxuICBzZXQgdmlld1Bvc2l0aW9uRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQgPSB2XHJcbiAgICB0aGlzLmlkc1sxXSAmJiAodGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmlkc1sxXSkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModi5sbmcsIHYubGF0LCB2LmFsdCkpXHJcbiAgICB0aGlzLnVwZGF0ZSgpXHJcbiAgICAvLyBsZXQgdmlld1Bvc2l0aW9uRW5kMyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQubG5nLCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kLmxhdCwgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbkVuZC5hbHQpXHJcbiAgICAvLyB0aGlzLnZpZXdEaXN0YW5jZSA9IHRoaXMudmlld1Bvc2l0aW9uRW5kID8gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UodGhpcy52aWV3UG9zaXRpb24sIHRoaXMudmlld1Bvc2l0aW9uRW5kKSA6IChvcHRpb25zLnZpZXdEaXN0YW5jZSB8fCAxMDAuMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaG9yaXpvbnRhbFZpZXdBbmdsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFZpZXdBbmdsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGhvcml6b250YWxWaWV3QW5nbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmhvcml6b250YWxWaWV3QW5nbGUgPSB2XHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgIGxldCBlX2hvcml6b250YWxWaWV3QW5nbGUgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdob3Jpem9udGFsVmlld0FuZ2xlJ11cIilcclxuICAgICAgZV9ob3Jpem9udGFsVmlld0FuZ2xlLnZhbHVlID0gdlxyXG4gICAgICBsZXQgcmFuZ2VOb2RlQWN0aXZlID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1ub2RlLWFjdGl2ZScpWzBdXHJcbiAgICAgIGxldCByYW5nZU5vZGVBY3RpdmVUZXh0ID0gcmFuZ2VOb2RlQWN0aXZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmdlLW5vZGUtYWN0aXZlLXRleHQnKVswXVxyXG4gICAgICByYW5nZU5vZGVBY3RpdmVUZXh0LmlubmVySFRNTCA9IHYgKyAnwrAnO1xyXG4gICAgICBsZXQgcmFuZ2VQcm9jZXNzID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1wcm9jZXNzJylbMF1cclxuICAgICAgcmFuZ2VQcm9jZXNzLnN0eWxlLndpZHRoID0gdiAvIDE4MCAqIDEwMCArICclJ1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGUoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhvcml6b250YWxWaWV3QW5nbGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGhvcml6b250YWxWaWV3QW5nbGVzKHYpIHtcclxuICAgIHRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSA9IHZcclxuICAgIC8vIHRoaXMudXBkYXRlKClcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlQXJlYUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy52aXNpYmxlQXJlYUNvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgdmlzaWJsZUFyZWFDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudmlzaWJsZUFyZWFDb2xvciA9IHZcclxuICAgIHRoaXMudXBkYXRlKClcclxuICB9XHJcblxyXG4gIGdldCBpbnZpc2libGVBcmVhQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmludmlzaWJsZUFyZWFDb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGludmlzaWJsZUFyZWFDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaW52aXNpYmxlQXJlYUNvbG9yID0gdlxyXG4gICAgdGhpcy51cGRhdGUoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZlcnRpY2FsVmlld0FuZ2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy52ZXJ0aWNhbFZpZXdBbmdsZVxyXG4gIH1cclxuXHJcbiAgc2V0IHZlcnRpY2FsVmlld0FuZ2xlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy52ZXJ0aWNhbFZpZXdBbmdsZSA9IHZcclxuICAgIHRoaXMudXBkYXRlKClcclxuICB9XHJcblxyXG4gIGdldCB2aWV3RGlzdGFuY2UoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbikge1xyXG4gICAgICBsZXQgdmlld1Bvc2l0aW9uMyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5hbHQgKyB0aGlzLnZpZXdQb2ludEhlaWdodClcclxuICAgICAgbGV0IHZpZXdQb3NpdGlvbkVuZDMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kLmxuZywgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbkVuZC5sYXQsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQuYWx0KVxyXG4gICAgICBsZXQgZGlzdGFuY2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZSh2aWV3UG9zaXRpb24zLCB2aWV3UG9zaXRpb25FbmQzKVxyXG4gICAgICByZXR1cm4gZGlzdGFuY2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2aWV3SGVhZGluZygpIHtcclxuICAgIGxldCB2aWV3UG9zaXRpb24zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KVxyXG4gICAgbGV0IHZpZXdQb3NpdGlvbkVuZDMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kLmxuZywgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbkVuZC5sYXQsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQuYWx0KVxyXG4gICAgbGV0IGhlYWRpbmcgPSBnZXRIZWFkaW5nKHZpZXdQb3NpdGlvbjMsIHZpZXdQb3NpdGlvbkVuZDMpXHJcbiAgICByZXR1cm4gaGVhZGluZ1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpZXdQaXRjaCgpIHtcclxuICAgIGxldCB2aWV3UG9zaXRpb24zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KVxyXG4gICAgbGV0IHZpZXdQb3NpdGlvbkVuZDMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kLmxuZywgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbkVuZC5sYXQsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQuYWx0KVxyXG4gICAgbGV0IHBpdGNoID0gZ2V0UGl0Y2godmlld1Bvc2l0aW9uMywgdmlld1Bvc2l0aW9uRW5kMylcclxuICAgIHJldHVybiBwaXRjaFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0LCBjYWxsQmFjaykge1xyXG4gICAgdGhhdC5kZXN0cm95KClcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHRoYXQuZXZlbnQgPSBuZXcgRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCflt6bplK7pgInmi6nop4LmtYvngrnkvY3nva7vvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmICghdGhhdC52aWV3UG9zaXRpb24pIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy52aWV3UG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC52aWV3ZXIpXHJcbiAgICAgICAgICB0aGF0Lmlkcy5wdXNoKFZpZXdTaGVkU3RhZ2UuY3JlYXRlX3BvaW50KHRoYXQsIGNhcnRlc2lhbikpXHJcbiAgICAgICAgICB0aGF0LnRpcC5zZXRfdGV4dChcIuW3pumUrumAieaLqeacgOi/nOingua1i+eCueS9jee9ru+8jOWPs+mUruWPlua2iFwiKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgICAgaWYgKGNvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoYXQudmlld2VyKVxyXG4gICAgICAgICAgdGhhdC5pZHMucHVzaChWaWV3U2hlZFN0YWdlLmNyZWF0ZV9wb2ludCh0aGF0LCBjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgdGhhdC5lbmQoKVxyXG4gICAgICAgICAgdGhhdC51cGRhdGUoKVxyXG4gICAgICAgICAgY2FsbEJhY2sodHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoYXQudGlwLnNldFBvc2l0aW9uKGNhcnRlc2lhbiwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgfSlcclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoYXQuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICAgICAgdGhhdC52aWV3ZXIuZW50aXRpZXMucmVtb3ZlQnlJZChpZClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoYXQuaWRzID0gW11cclxuICAgICAgICB0aGF0LmVuZCgpXHJcbiAgICAgICAgY2FsbEJhY2soZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhhdC5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGF0Lmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5yZW1vdmVCeUlkKGlkKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGF0LmlkcyA9IFtdXHJcbiAgICAgICAgICAgIHRoYXQuZW5kKClcclxuICAgICAgICAgICAgY2FsbEJhY2soZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRvb2xzLm1lc3NhZ2Uoe1xyXG4gICAgICAgIHRleHQ6ICfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nLFxyXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgfSk7XHJcbiAgICAgIGNhbGxCYWNrKGZhbHNlKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG4gIGVuZCgpIHtcclxuICAgIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZClcclxuICAgICAgZW50aXR5ICYmIChlbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgfSlcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcbiAgICB0aGlzLmV2ZW50ID0gbnVsbFxyXG4gIH1cclxuICBkcmF3KGNhbGxCYWNrKSB7XHJcbiAgICBWaWV3U2hlZFN0YWdlLmNyZWF0ZSh0aGlzLCBjYWxsQmFjaylcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9pbnQodGhhdCwgY2FydGVzaWFuKSB7XHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICBsZXQgcCA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnZpZXdlcilcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBpZCxcclxuICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHBhcmFtcylcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgYWRkKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb25FbmQpIHtcclxuICAgICAgdGhpcy5jcmVhdGVMaWdodENhbWVyYSgpO1xyXG4gICAgICB0aGlzLmNyZWF0ZVNoYWRvd01hcCgpO1xyXG4gICAgICB0aGlzLmNyZWF0ZVBvc3RTdGFnZSgpO1xyXG4gICAgICAvLyB0aGlzLmRyYXdGcnVzdHVtT3V0bGluZSgpO1xyXG4gICAgICB0aGlzLmRyYXdTa2V0Y2goKTtcclxuICAgICAgVmlld1NoZWRTdGFnZS5nZXRjYW52YXModGhpcylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIHRoaXMuYWRkKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgZWRpdCh0aGF0KSB7XHJcbiAgICBpZiAodGhhdC5fRGlhbG9nT2JqZWN0ICYmIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGF0Ll9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoYXQuc2RrLnZpZXdlci5fY29udGFpbmVyLCB7XHJcbiAgICAgIHRpdGxlOiAn5Y+v6KeG5Z+f5YiG5p6QJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGF0LkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgdGhhdC5lZGl0ZXZlbnQgJiYgdGhhdC5lZGl0ZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgdGhhdC5Db250cm9sbGVyT2JqZWN0ICYmIHRoYXQuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgICAgICB0aGF0Lmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgICAgIHRoYXQudmlld2VyLmVudGl0aWVzLnJlbW92ZUJ5SWQoaWQpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICBhd2FpdCB0aGF0Ll9EaWFsb2dPYmplY3QuaW5pdCgpXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHZpZXctc2hlZCdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgbGV0IHJlc2V0QnRuID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWRpdCcpWzBdO1xyXG4gICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQubm9kZUVkaXQoKVxyXG4gICAgfSlcclxuICAgIGxldCBkcmF3RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcclxuICAgIGRyYXdFbG0uaW5uZXJIVE1MID0gJ+e7mOWItidcclxuICAgIGRyYXdFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIFZpZXdTaGVkU3RhZ2UuY3JlYXRlKHRoYXQpXHJcbiAgICB9KVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChkcmF3RWxtKVxyXG4gICAgdGhhdC5odG1sID0gY29udGVudEVsbVxyXG4gICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgdGhhdC5fRXZlbnRCaW5kaW5nLm9uKHRoYXQsIGFsbF9lbG0pXHJcbiAgICB0aGF0Ll9lbG1zID0gdGhhdC5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgIC8vIC8v57uP5bqm5YC8XHJcbiAgICAvLyBsZXQgZV9sbmcgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJzcGFuW25hbWU9J2xuZyddXCIpXHJcbiAgICAvLyBlX2xuZy5pbm5lckhUTUwgPSBOdW1iZXIodGhhdC5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcudG9GaXhlZCg4KSlcclxuXHJcbiAgICAvLyAvL+e6rOW6puWAvFxyXG4gICAgLy8gbGV0IGVfbGF0ID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdsYXQnXVwiKVxyXG4gICAgLy8gZV9sYXQuaW5uZXJIVE1MID0gTnVtYmVyKHRoYXQub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LnRvRml4ZWQoOCkpXHJcblxyXG4gICAgLy8gLy/pq5jluqblgLxcclxuICAgIC8vIGxldCBlX2FsdCA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcInNwYW5bbmFtZT0nYWx0J11cIilcclxuICAgIC8vIGVfYWx0LmlubmVySFRNTCA9IE51bWJlcih0aGF0Lm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdC50b0ZpeGVkKDgpKVxyXG5cclxuICAgIC8vIC8v5YGP6Iiq6KeSXHJcbiAgICAvLyBsZXQgZV92aWV3SGVhZGluZyA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcInNwYW5bbmFtZT0ndmlld0hlYWRpbmcnXVwiKVxyXG4gICAgLy8gZV92aWV3SGVhZGluZy5pbm5lckhUTUwgPSBOdW1iZXIodGhhdC52aWV3SGVhZGluZy50b0ZpeGVkKDgpKVxyXG5cclxuICAgIC8vIC8v5L+v5Luw6KeSXHJcbiAgICAvLyBsZXQgZV92aWV3UGl0Y2ggPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJzcGFuW25hbWU9J3ZpZXdQaXRjaCddXCIpXHJcbiAgICAvLyBlX3ZpZXdQaXRjaC5pbm5lckhUTUwgPSBOdW1iZXIodGhhdC52aWV3UGl0Y2gudG9GaXhlZCg4KSlcclxuXHJcbiAgICAvL+inhuWfn+WkueinklxyXG4gICAgbGV0IGVfaG9yaXpvbnRhbFZpZXdBbmdsZSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J2hvcml6b250YWxWaWV3QW5nbGUnXVwiKVxyXG4gICAgZV9ob3Jpem9udGFsVmlld0FuZ2xlLnZhbHVlID0gdGhhdC5vcHRpb25zLmhvcml6b250YWxWaWV3QW5nbGVcclxuICAgIGxldCByYW5nZU5vZGVBY3RpdmUgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmdlLW5vZGUtYWN0aXZlJylbMF1cclxuICAgIGxldCByYW5nZU5vZGVBY3RpdmVUZXh0ID0gcmFuZ2VOb2RlQWN0aXZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmdlLW5vZGUtYWN0aXZlLXRleHQnKVswXVxyXG4gICAgbGV0IHJhbmdlUHJvY2VzcyA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmFuZ2UtcHJvY2VzcycpWzBdXHJcbiAgICBsZXQgcGVyY2VudGFnZSA9IHRoYXQuaG9yaXpvbnRhbFZpZXdBbmdsZSAvIDE4MCAqIDEwMFxyXG4gICAgcmFuZ2VOb2RlQWN0aXZlLnN0eWxlLmxlZnQgPSBwZXJjZW50YWdlICsgJyUnO1xyXG4gICAgcmFuZ2VQcm9jZXNzLnN0eWxlLndpZHRoID0gcGVyY2VudGFnZSArICclJ1xyXG4gICAgcmFuZ2VOb2RlQWN0aXZlVGV4dC5pbm5lckhUTUwgPSB0aGF0Lmhvcml6b250YWxWaWV3QW5nbGUgKyAnwrAnO1xyXG4gICAgbGV0IHRpbWVvdXRcclxuICAgIGVfaG9yaXpvbnRhbFZpZXdBbmdsZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgbGV0IHBlcmNlbnRhZ2UgPSBlX2hvcml6b250YWxWaWV3QW5nbGUudmFsdWUgLyAxODAgKiAxMDBcclxuICAgICAgcmFuZ2VOb2RlQWN0aXZlLnN0eWxlLmxlZnQgPSBwZXJjZW50YWdlICsgJyUnO1xyXG4gICAgICByYW5nZVByb2Nlc3Muc3R5bGUud2lkdGggPSBwZXJjZW50YWdlICsgJyUnO1xyXG4gICAgICByYW5nZU5vZGVBY3RpdmVUZXh0LmlubmVySFRNTCA9IGVfaG9yaXpvbnRhbFZpZXdBbmdsZS52YWx1ZSArICfCsCc7XHJcbiAgICB9KVxyXG4gICAgZV9ob3Jpem9udGFsVmlld0FuZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXHJcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGF0Lmhvcml6b250YWxWaWV3QW5nbGUgPSBlX2hvcml6b250YWxWaWV3QW5nbGUudmFsdWU7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRjYW52YXModGhhdCkge1xyXG4gICAgaWYgKCF0aGF0LnZpZXdQb3NpdGlvbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICh0aGF0LnZpZXdCaWxsYm9hcmRQcmltaXRpdmUpIHtcclxuICAgICAgdGhhdC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhhdC52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKVxyXG4gICAgICB0aGF0LnZpZXdCaWxsYm9hcmRQcmltaXRpdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcbiAgICBjYW52YXMud2lkdGggPSAyMjBcclxuICAgIGNhbnZhcy5oZWlnaHQgPSAxODBcclxuICAgIGNhbnZhcy5zdHlsZS5iYWNrZ3JvdW5kID0gXCIjMDAwMDAwXCJcclxuICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpbWFnZXM6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9sbmcucG5nJyxcclxuICAgICAgICB0ZXh0OiAn57uP5bqm77yaJyArIHBhcnNlRmxvYXQodGhhdC52aWV3UG9zaXRpb24ubG5nLnRvRml4ZWQoMTApKSArICfCsCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL2xhdC5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfnuqzluqbvvJonICsgcGFyc2VGbG9hdCh0aGF0LnZpZXdQb3NpdGlvbi5sYXQudG9GaXhlZCgxMCkpICsgJ8KwJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvaC5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfpq5jluqbvvJonICsgTnVtYmVyKCgocGFyc2VGbG9hdCh0aGF0LnZpZXdQb3NpdGlvbi5hbHQudG9GaXhlZCgyKSkgKyBOdW1iZXIodGhhdC52aWV3UG9pbnRIZWlnaHQpKSkudG9GaXhlZCgyKSkgKyAnIG0nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpbWFnZXM6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9oZWFkaW5nLnBuZycsXHJcbiAgICAgICAgdGV4dDogJ+WBj+iIquinku+8micgKyBwYXJzZUZsb2F0KHRoYXQudmlld0hlYWRpbmcudG9GaXhlZCgxMCkpICsgJ8KwJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvcGl0Y2gucG5nJyxcclxuICAgICAgICB0ZXh0OiAn5L+v5Luw6KeS77yaJyArIHBhcnNlRmxvYXQodGhhdC52aWV3UGl0Y2gudG9GaXhlZCgxMCkpICsgJ8KwJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgICBpbWcuc3JjID0gdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL2J1YmJsZS5wbmcnO1xyXG4gICAgbGV0IGltYWdlc0xvYWRlZCA9IDBcclxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgaW1nLnNyYyA9IGl0ZW0uaW1hZ2VzO1xyXG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMTIsIDEyICsgKGluZGV4ICogMjYpKTtcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBcIiNmZmZcIjtcclxuICAgICAgICAgIGN0eC5mb250ID0gXCIxMnB4IEFyaWFsXCI7XHJcbiAgICAgICAgICBjdHguZmlsbFRleHQoaXRlbS50ZXh0LCA0NCwgMjggKyAoaW5kZXggKiAyNikpO1xyXG4gICAgICAgICAgaW1hZ2VzTG9hZGVkKys7XHJcbiAgICAgICAgICBpZiAoaW1hZ2VzTG9hZGVkID09PSBkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGF0LnZpZXdCaWxsYm9hcmRQcmltaXRpdmUgPSB0aGF0LnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChuZXcgQ2VzaXVtLkJpbGxib2FyZENvbGxlY3Rpb24oKSlcclxuICAgICAgICAgICAgdGhhdC52aWV3QmlsbGJvYXJkUHJpbWl0aXZlLmFkZCh7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQudmlld1Bvc2l0aW9uLmxuZywgdGhhdC52aWV3UG9zaXRpb24ubGF0LCB0aGF0LnZpZXdQb3NpdGlvbi5hbHQgKyB0aGF0LnZpZXdQb2ludEhlaWdodCksXHJcbiAgICAgICAgICAgICAgaW1hZ2U6IGNhbnZhcyxcclxuICAgICAgICAgICAgICB3aWR0aDogMjAwLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMTgwLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAvLyB0aGlzLmVuZCgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgdGhpcy5ldmVudCA9IG51bGxcclxuICAgIGlmICh0aGlzLnNrZXRjaCkge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmVCeUlkKHRoaXMuc2tldGNoLmlkKTtcclxuICAgICAgdGhpcy5za2V0Y2ggPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZnJ1c3R1bU91dGxpbmUpIHtcclxuICAgICAgLy8gdGhpcy5mcnVzdHVtT3V0bGluZS5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZUJ5SWQodGhpcy5mcnVzdHVtT3V0bGluZS5pZCk7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bU91dGxpbmUgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9zdFN0YWdlKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZSh0aGlzLnBvc3RTdGFnZSk7XHJcbiAgICAgIHRoaXMucG9zdFN0YWdlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5jbGVhcigpXHJcbiAgICB0aGlzLmVkaXRldmVudCAmJiB0aGlzLmVkaXRldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCAmJiB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICB0aGlzLmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlQnlJZChpZClcclxuICAgIH0pXHJcbiAgICB0aGlzLmlkcyA9IFtdXHJcbiAgICBpZiAodGhpcy52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMudmlld0JpbGxib2FyZFByaW1pdGl2ZSlcclxuICAgIH1cclxuICAgIHRoaXMudmlld0JpbGxib2FyZFByaW1pdGl2ZSA9IG51bGxcclxuICAgIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24gPSBudWxsXHJcbiAgICB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uRW5kID0gbnVsbFxyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgaWYgKHRoaXMuX29yaWdpbmFsU2hhZG93TWFwKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnNoYWRvd01hcCA9IHRoaXMuX29yaWdpbmFsU2hhZG93TWFwXHJcbiAgICAgIHRoaXMuX29yaWdpbmFsU2hhZG93TWFwID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3ZXIuc2hhZG93cyA9IHRoaXMudmlld2VyLl9zaGFkb3dzXHJcbiAgfVxyXG4gIGNsb3NlKCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5lbmQoKVxyXG4gICAgdGhpcy5lZGl0ZXZlbnQgJiYgdGhpcy5lZGl0ZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgJiYgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5pZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZUJ5SWQoaWQpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbm9kZUVkaXQoKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgdGhpcy50b29scy5tZXNzYWdlKHtcclxuICAgICAgICB0ZXh0OiAn5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJyxcclxuICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRldmVudCAmJiB0aGlzLmVkaXRldmVudC5kZXN0cm95KClcclxuICAgICAgdGhpcy5pZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoaWQpXHJcbiAgICAgICAgZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBzZWxlY3RQb2ludFxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgLy8gdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+W3pumUrumAieaLqeimgeaTjeS9nOeahOingua1i+eCue+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmVkaXRldmVudCA9IG5ldyBFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5lZGl0ZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrID0gdGhpcy52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLmlkICYmIHRoaXMuaWRzLmluZGV4T2YocGljay5pZC5pZCkgIT0gLTEgJiYgKCFzZWxlY3RQb2ludCB8fCBzZWxlY3RQb2ludC5pZCAhPSBwaWNrLmlkLmlkKSkge1xyXG4gICAgICAgICAgc2VsZWN0UG9pbnQgPSBwaWNrLmlkXHJcbiAgICAgICAgICAvLyB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgLy8gdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMudmlld1Bvc2l0aW9uLmxhdCwgdGhpcy52aWV3UG9zaXRpb24uYWx0KVxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmlkc1sxXSkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy52aWV3UG9zaXRpb25FbmQubG5nLCB0aGlzLnZpZXdQb3NpdGlvbkVuZC5sYXQsIHRoaXMudmlld1Bvc2l0aW9uRW5kLmFsdClcclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCAmJiB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgPSBuZXcgQ29udHJvbGxlcih0aGlzLnNkaywgeyBwb3NpdGlvbjogeyAuLi50aGlzLmNhcnRlc2lhbjNUb3dnczg0KHNlbGVjdFBvaW50LnBvc2l0aW9uLl92YWx1ZSwgdGhpcy5zZGsudmlld2VyKSB9IH0pXHJcbiAgICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuY29udHJvbGxlckNhbGxCYWNrID0gKHBhcmFtcywgc3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMucG9zaXRpb24uYWx0IDwgMCkge1xyXG4gICAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbi5hbHQgPSAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW1zLnBvc2l0aW9uLmxuZywgcGFyYW1zLnBvc2l0aW9uLmxhdCwgcGFyYW1zLnBvc2l0aW9uLmFsdClcclxuICAgICAgICAgICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlkcy5pbmRleE9mKHBpY2suaWQuaWQpID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1Bvc2l0aW9uID0gcGFyYW1zLnBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UG9zaXRpb25FbmQgPSBwYXJhbXMucG9zaXRpb25cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmVkaXRldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICB0aGlzLmVkaXRldmVudCAmJiB0aGlzLmVkaXRldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgJiYgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgICAgIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoaWQpXHJcbiAgICAgICAgICBlbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBzZWxlY3RQb2ludCA9IG51bGxcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lZGl0ZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgIC8vICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgLy8gICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgLy8gICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAvLyApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmVkaXRldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmVkaXRldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdGV2ZW50ICYmIHRoaXMuZWRpdGV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgJiYgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgICAgICAgICB0aGlzLmlkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZClcclxuICAgICAgICAgICAgICBlbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpZ2h0Q2FtZXJhKCkge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5saWdodENhbWVyYSA9IG5ldyBDZXNpdW0uQ2FtZXJhKHRoaXMudmlld2VyLnNjZW5lKTtcclxuICAgIHRoaXMubGlnaHRDYW1lcmEucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24uYWx0ICsgdGhpcy52aWV3UG9pbnRIZWlnaHQpO1xyXG4gICAgLy8gaWYgKHRoaXMudmlld1Bvc2l0aW9uRW5kKSB7XHJcbiAgICAvLyAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdCh0aGlzLnZpZXdQb3NpdGlvbkVuZCwgdGhpcy52aWV3UG9zaXRpb24sIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgLy8gICAgIHRoaXMubGlnaHRDYW1lcmEuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAvLyBkaXJlY3Rpb27mmK/nm7jmnLrpnaLlkJHnmoTmlrnlkJFcclxuICAgIC8vIH1cclxuICAgIHRoaXMubGlnaHRDYW1lcmEuZnJ1c3R1bS5uZWFyID0gdGhpcy52aWV3RGlzdGFuY2UgKiAwLjAwMTtcclxuICAgIHRoaXMubGlnaHRDYW1lcmEuZnJ1c3R1bS5mYXIgPSB0aGlzLnZpZXdEaXN0YW5jZTtcclxuICAgIGNvbnN0IGhyID0gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSk7XHJcbiAgICBjb25zdCB2ciA9IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLnZlcnRpY2FsVmlld0FuZ2xlKTtcclxuICAgIGNvbnN0IGFzcGVjdFJhdGlvID1cclxuICAgICAgKHRoaXMudmlld0Rpc3RhbmNlICogTWF0aC50YW4oaHIgLyAyKSAqIDIpIC9cclxuICAgICAgKHRoaXMudmlld0Rpc3RhbmNlICogTWF0aC50YW4odnIgLyAyKSAqIDIpO1xyXG4gICAgdGhpcy5saWdodENhbWVyYS5mcnVzdHVtLmFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87XHJcbiAgICBpZiAoaHIgPiB2cikge1xyXG4gICAgICB0aGlzLmxpZ2h0Q2FtZXJhLmZydXN0dW0uZm92ID0gaHI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpZ2h0Q2FtZXJhLmZydXN0dW0uZm92ID0gdnI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxpZ2h0Q2FtZXJhLnNldFZpZXcoe1xyXG4gICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KSxcclxuICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy52aWV3SGVhZGluZyB8fCAwKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMudmlld1BpdGNoIHx8IDApLFxyXG4gICAgICAgIHJvbGw6IDBcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTaGFkb3dNYXAoKSB7XHJcbiAgICB0aGlzLnNoYWRvd01hcCA9IG5ldyBDZXNpdW0uU2hhZG93TWFwKHtcclxuICAgICAgY29udGV4dDogKHRoaXMudmlld2VyLnNjZW5lKS5jb250ZXh0LFxyXG4gICAgICBsaWdodENhbWVyYTogdGhpcy5saWdodENhbWVyYSxcclxuICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgaXNQb2ludExpZ2h0OiB0cnVlLFxyXG4gICAgICBwb2ludExpZ2h0UmFkaXVzOiB0aGlzLnZpZXdEaXN0YW5jZSxcclxuICAgICAgY2FzY2FkZXNFbmFibGVkOiBmYWxzZSxcclxuICAgICAgc2l6ZTogMjA0OCwgLy8gMjA0OFxyXG4gICAgICBzb2Z0U2hhZG93czogdHJ1ZSxcclxuICAgICAgbm9ybWFsT2Zmc2V0OiBmYWxzZSxcclxuICAgICAgZnJvbUxpZ2h0U291cmNlOiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuX29yaWdpbmFsU2hhZG93TWFwKSB7XHJcbiAgICAgIHRoaXMuX29yaWdpbmFsU2hhZG93TWFwID0gdGhpcy52aWV3ZXIuc2NlbmUuc2hhZG93TWFwXHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdlci5zY2VuZS5zaGFkb3dNYXAgPSB0aGlzLnNoYWRvd01hcDtcclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMudmlld2VyLnNoYWRvd3MgPSB0aGlzLnZpZXdlci5fc2hhZG93c1xyXG4gICAgLy8gfSwgMCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVQb3N0U3RhZ2UoKSB7XHJcbiAgICBjb25zdCBmcyA9IGdsc2xcclxuICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTAyKSB7XHJcbiAgICAgIGZzID0gZ2xzbDJcclxuICAgIH1cclxuICAgIGNvbnN0IHBvc3RTdGFnZSA9IG5ldyBDZXNpdW0uUG9zdFByb2Nlc3NTdGFnZSh7XHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBmcyxcclxuICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICBzaGFkb3dNYXBfdGV4dHVyZUN1YmU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhZG93TWFwLnVwZGF0ZShSZWZsZWN0LmdldCh0aGlzLnZpZXdlci5zY2VuZSwgXCJfZnJhbWVTdGF0ZVwiKSk7XHJcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGhpcy5zaGFkb3dNYXAsIFwiX3NoYWRvd01hcFRleHR1cmVcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaGFkb3dNYXBfbWF0cml4OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYWRvd01hcC51cGRhdGUoUmVmbGVjdC5nZXQodGhpcy52aWV3ZXIuc2NlbmUsIFwiX2ZyYW1lU3RhdGVcIikpO1xyXG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRoaXMuc2hhZG93TWFwLCBcIl9zaGFkb3dNYXBNYXRyaXhcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaGFkb3dNYXBfbGlnaHRQb3NpdGlvbkVDOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYWRvd01hcC51cGRhdGUoUmVmbGVjdC5nZXQodGhpcy52aWV3ZXIuc2NlbmUsIFwiX2ZyYW1lU3RhdGVcIikpO1xyXG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRoaXMuc2hhZG93TWFwLCBcIl9saWdodFBvc2l0aW9uRUNcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaGFkb3dNYXBfbm9ybWFsT2Zmc2V0U2NhbGVEaXN0YW5jZU1heERpc3RhbmNlQW5kRGFya25lc3M6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhZG93TWFwLnVwZGF0ZShSZWZsZWN0LmdldCh0aGlzLnZpZXdlci5zY2VuZSwgXCJfZnJhbWVTdGF0ZVwiKSk7XHJcbiAgICAgICAgICBjb25zdCBiaWFzID0gdGhpcy5zaGFkb3dNYXAuX3BvaW50QmlhcztcclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuNC5mcm9tRWxlbWVudHMoXHJcbiAgICAgICAgICAgIGJpYXMubm9ybWFsT2Zmc2V0U2NhbGUsXHJcbiAgICAgICAgICAgIHRoaXMuc2hhZG93TWFwLl9kaXN0YW5jZSxcclxuICAgICAgICAgICAgdGhpcy5zaGFkb3dNYXAubWF4aW11bURpc3RhbmNlLFxyXG4gICAgICAgICAgICAwLjAsXHJcbiAgICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuNCgpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hhZG93TWFwX3RleGVsU2l6ZURlcHRoQmlhc0FuZE5vcm1hbFNoYWRpbmdTbW9vdGg6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhZG93TWFwLnVwZGF0ZShSZWZsZWN0LmdldCh0aGlzLnZpZXdlci5zY2VuZSwgXCJfZnJhbWVTdGF0ZVwiKSk7XHJcbiAgICAgICAgICBjb25zdCBiaWFzID0gdGhpcy5zaGFkb3dNYXAuX3BvaW50QmlhcztcclxuICAgICAgICAgIGNvbnN0IHNjcmF0Y2hUZXhlbFN0ZXBTaXplID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKCk7XHJcbiAgICAgICAgICBjb25zdCB0ZXhlbFN0ZXBTaXplID0gc2NyYXRjaFRleGVsU3RlcFNpemU7XHJcbiAgICAgICAgICB0ZXhlbFN0ZXBTaXplLnggPSAxLjAgLyB0aGlzLnNoYWRvd01hcC5fdGV4dHVyZVNpemUueDtcclxuICAgICAgICAgIHRleGVsU3RlcFNpemUueSA9IDEuMCAvIHRoaXMuc2hhZG93TWFwLl90ZXh0dXJlU2l6ZS55O1xyXG5cclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuNC5mcm9tRWxlbWVudHMoXHJcbiAgICAgICAgICAgIHRleGVsU3RlcFNpemUueCxcclxuICAgICAgICAgICAgdGV4ZWxTdGVwU2l6ZS55LFxyXG4gICAgICAgICAgICBiaWFzLmRlcHRoQmlhcyxcclxuICAgICAgICAgICAgYmlhcy5ub3JtYWxTaGFkaW5nU21vb3RoLFxyXG4gICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjQoKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbWVyYV9wcm9qZWN0aW9uX21hdHJpeDogdGhpcy5saWdodENhbWVyYS5mcnVzdHVtLnByb2plY3Rpb25NYXRyaXgsXHJcbiAgICAgICAgY2FtZXJhX3ZpZXdfbWF0cml4OiB0aGlzLmxpZ2h0Q2FtZXJhLnZpZXdNYXRyaXgsXHJcbiAgICAgICAgaGVsc2luZ192aWV3RGlzdGFuY2U6ICgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnZpZXdEaXN0YW5jZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlbHNpbmdfdmlzaWJsZUFyZWFDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLnZpc2libGVBcmVhQ29sb3IpLFxyXG4gICAgICAgIGhlbHNpbmdfaW52aXNpYmxlQXJlYUNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMuaW52aXNpYmxlQXJlYUNvbG9yKSxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBvc3RTdGFnZSA9IHRoaXMudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLmFkZChwb3N0U3RhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZHJhd0ZydXN0dW1PdXRsaW5lKCkge1xyXG4gICAgY29uc3Qgc2NyYXRjaFJpZ2h0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICBjb25zdCBzY3JhdGNoUm90YXRpb24gPSBuZXcgQ2VzaXVtLk1hdHJpeDMoKTtcclxuICAgIGNvbnN0IHNjcmF0Y2hPcmllbnRhdGlvbiA9IG5ldyBDZXNpdW0uUXVhdGVybmlvbigpO1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmxpZ2h0Q2FtZXJhLnBvc2l0aW9uV0M7XHJcbiAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmxpZ2h0Q2FtZXJhLmRpcmVjdGlvbldDO1xyXG4gICAgY29uc3QgdXAgPSB0aGlzLmxpZ2h0Q2FtZXJhLnVwV0M7XHJcbiAgICBsZXQgcmlnaHQgPSB0aGlzLmxpZ2h0Q2FtZXJhLnJpZ2h0V0M7XHJcbiAgICByaWdodCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5lZ2F0ZShyaWdodCwgc2NyYXRjaFJpZ2h0KTtcclxuICAgIGxldCByb3RhdGlvbiA9IHNjcmF0Y2hSb3RhdGlvbjtcclxuICAgIENlc2l1bS5NYXRyaXgzLnNldENvbHVtbihyb3RhdGlvbiwgMCwgcmlnaHQsIHJvdGF0aW9uKTtcclxuICAgIENlc2l1bS5NYXRyaXgzLnNldENvbHVtbihyb3RhdGlvbiwgMSwgdXAsIHJvdGF0aW9uKTtcclxuICAgIENlc2l1bS5NYXRyaXgzLnNldENvbHVtbihyb3RhdGlvbiwgMiwgZGlyZWN0aW9uLCByb3RhdGlvbik7XHJcbiAgICBsZXQgb3JpZW50YXRpb24gPSBDZXNpdW0uUXVhdGVybmlvbi5mcm9tUm90YXRpb25NYXRyaXgocm90YXRpb24sIHNjcmF0Y2hPcmllbnRhdGlvbik7XHJcblxyXG4gICAgbGV0IGluc3RhbmNlID0gbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uRnJ1c3R1bU91dGxpbmVHZW9tZXRyeSh7XHJcbiAgICAgICAgZnJ1c3R1bTogdGhpcy5saWdodENhbWVyYS5mcnVzdHVtLFxyXG4gICAgICAgIG9yaWdpbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KSxcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSksXHJcbiAgICAgIGlkOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiksXHJcbiAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICBDZXNpdW0uQ29sb3IuWUVMTE9XR1JFRU4vL25ldyBDZXNpdW0uQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgc2hvdzogbmV3IENlc2l1bS5TaG93R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZSh0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZydXN0dW1PdXRsaW5lID0gdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogW2luc3RhbmNlXSxcclxuICAgICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlKHtcclxuICAgICAgICAgIGZsYXQ6IHRydWUsXHJcbiAgICAgICAgICB0cmFuc2x1Y2VudDogZmFsc2VcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRyYXdTa2V0Y2goKSB7XHJcbiAgICB0aGlzLnNrZXRjaCA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIG5hbWU6ICdza2V0Y2gnLFxyXG4gICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KSxcclxuICAgICAgb3JpZW50YXRpb246IENlc2l1bS5UcmFuc2Zvcm1zLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uKFxyXG4gICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5hbHQgKyB0aGlzLnZpZXdQb2ludEhlaWdodCksXHJcbiAgICAgICAgQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXModGhpcy52aWV3SGVhZGluZyAtIDkwLCB0aGlzLnZpZXdQaXRjaCwgMC4wKVxyXG4gICAgICApLFxyXG4gICAgICBlbGxpcHNvaWQ6IHtcclxuICAgICAgICByYWRpaTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICAgICAgdGhpcy52aWV3RGlzdGFuY2UsXHJcbiAgICAgICAgICB0aGlzLnZpZXdEaXN0YW5jZSxcclxuICAgICAgICAgIHRoaXMudmlld0Rpc3RhbmNlXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBpbm5lclJhZGlpOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMi4wLCAyLjAsIDIuMCksXHJcbiAgICAgICAgbWluaW11bUNsb2NrOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLXRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSAvIDIpLFxyXG4gICAgICAgIG1heGltdW1DbG9jazogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSAvIDIpLFxyXG4gICAgICAgIG1pbmltdW1Db25lOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoOTAgLSAodGhpcy52ZXJ0aWNhbFZpZXdBbmdsZSAvIDIpKSxcclxuICAgICAgICBtYXhpbXVtQ29uZTogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDkwICsgKHRoaXMudmVydGljYWxWaWV3QW5nbGUgLyAyKSksXHJcbiAgICAgICAgZmlsbDogZmFsc2UsXHJcbiAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICBzdWJkaXZpc2lvbnM6IDI1NixcclxuICAgICAgICBzdGFja1BhcnRpdGlvbnM6IDY0LFxyXG4gICAgICAgIHNsaWNlUGFydGl0aW9uczogNjQsXHJcbiAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XR1JFRU5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mcnVzdHVtT3V0bGluZSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIG5hbWU6ICdza2V0Y2gnLFxyXG4gICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0KSxcclxuICAgICAgb3JpZW50YXRpb246IENlc2l1bS5UcmFuc2Zvcm1zLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uKFxyXG4gICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy52aWV3UG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMudmlld1Bvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnZpZXdQb3NpdGlvbi5hbHQgKyB0aGlzLnZpZXdQb2ludEhlaWdodCksXHJcbiAgICAgICAgQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXModGhpcy52aWV3SGVhZGluZyAtIDkwLCB0aGlzLnZpZXdQaXRjaCwgMC4wKVxyXG4gICAgICApLFxyXG4gICAgICBlbGxpcHNvaWQ6IHtcclxuICAgICAgICByYWRpaTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICAgICAgdGhpcy52aWV3RGlzdGFuY2UsXHJcbiAgICAgICAgICB0aGlzLnZpZXdEaXN0YW5jZSxcclxuICAgICAgICAgIHRoaXMudmlld0Rpc3RhbmNlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpbm5lclJhZGlpOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMC4wMDAxLCAwLjAwMDEsIDAuMDAwMSksXHJcbiAgICAgICAgbWluaW11bUNsb2NrOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLXRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSAvIDIpLFxyXG4gICAgICAgIG1heGltdW1DbG9jazogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuaG9yaXpvbnRhbFZpZXdBbmdsZSAvIDIpLFxyXG4gICAgICAgIG1pbmltdW1Db25lOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoOTAgLSAodGhpcy52ZXJ0aWNhbFZpZXdBbmdsZSAvIDIpKSxcclxuICAgICAgICBtYXhpbXVtQ29uZTogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDkwICsgKHRoaXMudmVydGljYWxWaWV3QW5nbGUgLyAyKSksXHJcbiAgICAgICAgZmlsbDogZmFsc2UsXHJcbiAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICBzdWJkaXZpc2lvbnM6IDI1NixcclxuICAgICAgICBzdGFja1BhcnRpdGlvbnM6IDEsXHJcbiAgICAgICAgc2xpY2VQYXJ0aXRpb25zOiAxLFxyXG4gICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLllFTExPV0dSRUVOXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRIZWFkaW5nKGZyb21Qb3NpdGlvbiwgdG9Qb3NpdGlvbikge1xyXG4gIGxldCBmaW5hbFBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgbGV0IG1hdHJpeDQgPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShmcm9tUG9zaXRpb24pO1xyXG4gIENlc2l1bS5NYXRyaXg0LmludmVyc2UobWF0cml4NCwgbWF0cml4NCk7XHJcbiAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KG1hdHJpeDQsIHRvUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pO1xyXG4gIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShmaW5hbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKTtcclxuICByZXR1cm4gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKE1hdGguYXRhbjIoZmluYWxQb3NpdGlvbi54LCBmaW5hbFBvc2l0aW9uLnkpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UGl0Y2goZnJvbVBvc2l0aW9uLCB0b1Bvc2l0aW9uKSB7XHJcbiAgbGV0IGZpbmFsUG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKTtcclxuICBsZXQgbWF0cml4NCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKGZyb21Qb3NpdGlvbik7XHJcbiAgQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZShtYXRyaXg0LCBtYXRyaXg0KTtcclxuICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQobWF0cml4NCwgdG9Qb3NpdGlvbiwgZmluYWxQb3NpdGlvbik7XHJcbiAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGZpbmFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pO1xyXG4gIHJldHVybiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoTWF0aC5hc2luKGZpbmFsUG9zaXRpb24ueikpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWaWV3U2hlZFN0YWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBa0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE0REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQTNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQVhBO0FBQUE7QUFBQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEvRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQW9XQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/ViewShed/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Visibility/_element.js": -/*!*************************************************!*\ - !*** ./src/Obj/Analysis/Visibility/_element.js ***! - \*************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u89C6\\u70B9\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Zpc2liaWxpdHkvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Zpc2liaWxpdHkvX2VsZW1lbnQuanM/NGQ2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7op4bngrnpq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTlcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwidmlld1BvaW50SGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFlQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Visibility/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/Visibility/index.js": -/*!**********************************************!*\ - !*** ./src/Obj/Analysis/Visibility/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/Visibility/_element.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/*\r\n *通视分析\r\n * @Author: Wang jianLei\r\n * @Date: 2022-04-17 22:04:52\r\n * @Last Modified by: Wang JianLei\r\n * @Last Modified time: 2022-04-17 22:05:13\r\n */\n\n\n\n\n\n\nvar VisibilityAnalysis = /*#__PURE__*/function (_Tools) {\n function VisibilityAnalysis(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, VisibilityAnalysis);\n _this = _callSuper(this, VisibilityAnalysis, [sdk, options]);\n _this.viewer = sdk.viewer;\n _this.resultObject = {\n viewPoint: undefined,\n //通视分析起点\n targetPoints: [],\n //通视分析目标点集合\n targetPoint: undefined,\n //当前目标点\n objectExclude: [],\n //射线排除集合\n entities: [] //创建的Entity对象\n };\n _this.options = {};\n _this._elms = {};\n _this.viewPointHeight = options.viewPointHeight;\n _this.Dialog = _Dialog;\n _this._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.sdk);\n YJ.Analysis.AnalysesResults.push(_this);\n // VisibilityAnalysis.edit(this)\n VisibilityAnalysis.create(_this);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(VisibilityAnalysis, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(VisibilityAnalysis, [{\n key: \"viewPointHeight\",\n get: function get() {\n return this.options.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.options.viewPointHeight = viewPointHeight;\n this._elms.viewPointHeight && this._elms.viewPointHeight.forEach(function (item) {\n item.value = viewPointHeight;\n });\n }\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n }\n\n // static update(that) {\n // if (!that.resultObject.viewPoint) {\n // return\n // }\n // for (let i = that.resultObject.entities.length - 1; i >= 0; i--) {\n // if (that.resultObject.entities[i].point) {\n // that.viewer.entities.remove(that.resultObject.entities[i]);\n // that.resultObject.entities.splice(i, 1)\n // }\n // }\n // setTimeout(() => {\n // for (let i = 0; i < that.resultObject.targetPoints.length; i++) {\n // that.resultObject.targetPoint = that.resultObject.targetPoints[i].targetPoint;\n // let direction = Cesium.Cartesian3.normalize(\n // Cesium.Cartesian3.subtract(\n // that.resultObject.targetPoint,\n // that.resultObject.viewPoint,\n // new Cesium.Cartesian3()\n // ),\n // new Cesium.Cartesian3()\n // );\n // let ray = new Cesium.Ray(that.resultObject.viewPoint, direction);\n // let pickedObjects = that.viewer.scene.drillPickFromRay(ray);\n // let result = {}\n // for (let i = 0; i < pickedObjects.length; i++) {\n // if (pickedObjects[i].position) {\n // result = pickedObjects[i]\n // break\n // }\n // }\n // // let result = that.viewer.scene.pickFromRay(\n // // ray,\n // // that.resultObject.objectExclude\n // // ); // 计算交互点,返回第一个\n // if (result) {\n // let dis0 = VisibilityAnalysis.distance(\n // that.resultObject.viewPoint,\n // that.resultObject.targetPoint\n // );\n // let dis1 = VisibilityAnalysis.distance(\n // that.resultObject.viewPoint,\n // result.position || cartesian\n // );\n // let dis2 = VisibilityAnalysis.distance(\n // result.position || cartesian,\n // that.resultObject.targetPoint\n // );\n // if (dis0 > dis1) {\n // let _poly0 = that.viewer.entities.add({\n // polyline: {\n // positions: [that.resultObject.viewPoint, result.position],\n // material: Cesium.Color.GREEN,\n // width: 3,\n // zIndex: 99999999\n // },\n // });\n // that.resultObject.entities.push(_poly0);\n // let _poly1 = that.viewer.entities.add({\n // polyline: {\n // positions: [result.position, that.resultObject.targetPoint],\n // material: Cesium.Color.RED,\n // width: 3,\n // zIndex: 99999999\n // },\n // });\n // that.resultObject.entities.push(_poly1);\n // } else {\n // let _poly2 = that.viewer.entities.add({\n // polyline: {\n // positions: [\n // that.resultObject.viewPoint,\n // that.resultObject.targetPoint,\n // ],\n // material: Cesium.Color.GREEN,\n // width: 3,\n // zIndex: 99999999\n // },\n // });\n // that.resultObject.entities.push(_poly2);\n // }\n // }\n // }\n // }, 1000);\n // }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n this.resultObject.entities.forEach(function (element) {\n _this2.viewer.entities.remove(element);\n });\n this.resultObject = {\n viewPoint: undefined,\n //通视分析起点\n targetPoints: [],\n //通视分析目标点集合\n targetPoint: undefined,\n //当前目标点\n objectExclude: [],\n //射线排除集合\n entities: [] //创建的Entity对象\n };\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n YJ.Measure.SetMeasureStatus(false);\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n if (!YJ.Measure.GetMeasureStatus()) {\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](that.sdk);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('左键点击创建视角起点', that.sdk);\n YJ.Measure.SetMeasureStatus(true);\n var count = 0;\n that.event.mouse_left(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(movement, cartesian) {\n var pos84, positions, pos, pointEntity, _pointEntity, direction, ray, pickedObjects, result, i, dis0, dis1, dis2, _poly0, _poly1, _poly2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n that.tip.set_text(\"左键创建视角终点,右键结束通视分析\");\n if (that.resultObject.viewPoint) {\n _context.next = 16;\n break;\n }\n pos84 = that.cartesian3Towgs84(cartesian, that.viewer);\n if (!that.sdk.viewer.terrainProvider.availability) {\n _context.next = 7;\n break;\n }\n _context.next = 6;\n return Cesium.sampleTerrainMostDetailed(that.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat)]);\n case 6:\n positions = _context.sent;\n case 7:\n if (positions && positions[0].height > pos84.alt) {\n pos84.alt = positions[0].height;\n }\n pos84.alt = pos84.alt + that.viewPointHeight;\n pos = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, pos84.alt);\n that.resultObject.viewPoint = pos;\n pointEntity = that.viewer.entities.add({\n position: pos,\n point: {\n color: Cesium.Color.YELLOW,\n pixelSize: 5\n }\n });\n that.resultObject.objectExclude.push(pointEntity);\n that.resultObject.entities.push(pointEntity);\n _context.next = 33;\n break;\n case 16:\n that.resultObject.targetPoint = cartesian;\n _pointEntity = that.viewer.entities.add({\n position: cartesian,\n point: {\n color: Cesium.Color.YELLOW,\n pixelSize: 5\n }\n });\n that.resultObject.objectExclude.push(_pointEntity);\n that.resultObject.entities.push(_pointEntity);\n direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(that.resultObject.targetPoint, that.resultObject.viewPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());\n ray = new Cesium.Ray(that.resultObject.viewPoint, direction);\n pickedObjects = that.viewer.scene.drillPickFromRay(ray);\n result = {};\n i = 0;\n case 25:\n if (!(i < pickedObjects.length)) {\n _context.next = 32;\n break;\n }\n if (!pickedObjects[i].position) {\n _context.next = 29;\n break;\n }\n result = pickedObjects[i];\n return _context.abrupt(\"break\", 32);\n case 29:\n i++;\n _context.next = 25;\n break;\n case 32:\n // let result = that.viewer.scene.pickFromRay(\n // ray,\n // that.resultObject.objectExclude\n // ); // 计算交互点,返回第一个\n if (result) {\n dis0 = VisibilityAnalysis.distance(that.resultObject.viewPoint, that.resultObject.targetPoint);\n dis1 = VisibilityAnalysis.distance(that.resultObject.viewPoint, result.position || cartesian);\n dis2 = VisibilityAnalysis.distance(result.position || cartesian, that.resultObject.targetPoint);\n if (dis0 > dis1) {\n _poly0 = that.viewer.entities.add({\n polyline: {\n positions: [that.resultObject.viewPoint, result.position],\n material: Cesium.Color.GREEN,\n width: 3,\n zIndex: 99999999\n }\n });\n that.resultObject.entities.push(_poly0);\n _poly1 = that.viewer.entities.add({\n polyline: {\n positions: [result.position, that.resultObject.targetPoint],\n material: Cesium.Color.RED,\n width: 3,\n zIndex: 99999999\n }\n });\n that.resultObject.entities.push(_poly1);\n that.resultObject.targetPoints.push({\n targetPoint: cartesian,\n visual: false,\n //如果dis2足够小,其实他是可视的\n distance: [dis0, dis1, dis2] //[初始点和终点,初始点和交点,交点和终点]\n });\n } else {\n _poly2 = that.viewer.entities.add({\n polyline: {\n positions: [that.resultObject.viewPoint, that.resultObject.targetPoint],\n material: Cesium.Color.GREEN,\n width: 3,\n zIndex: 99999999\n }\n });\n that.resultObject.entities.push(_poly2);\n that.resultObject.targetPoints.push({\n targetPoint: cartesian,\n visual: true,\n //如果dis2足够小,其实他是可视的\n distance: [dis0, dis1, dis2] //[初始点和终点,初始点和交点,交点和终点]\n });\n }\n }\n case 33:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n that.event.mouse_move(function (movement, cartesian) {\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right(function (movement, cartesian) {\n that.end();\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n that.end();\n }\n });\n });\n } else {\n that.tools.message({\n text: '上一次测量未结束',\n type: 'warning'\n });\n }\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee2(that) {\n var contentElm, drawElm, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context2.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](that.sdk.viewer._container, {\n title: '多点视线分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n YJ.Measure.SetMeasureStatus(false);\n }\n });\n case 3:\n that._DialogObject = _context2.sent;\n _context2.next = 6;\n return that._DialogObject.init();\n case 6:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' visibility';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n drawElm = document.createElement('button');\n drawElm.innerHTML = '绘制';\n drawElm.addEventListener('click', function () {\n VisibilityAnalysis.create(that);\n });\n that._DialogObject.footAppChild(drawElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n that._EventBinding.on(that, all_elm);\n that._elms = that._EventBinding.element;\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function edit(_x3) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }() //空间两点间距离\n }, {\n key: \"distance\",\n value: function distance(point1, point2) {\n var point1cartographic = Cesium.Cartographic.fromCartesian(point1);\n var point2cartographic = Cesium.Cartographic.fromCartesian(point2);\n /**根据经纬度计算出距离**/\n var geodesic = new Cesium.EllipsoidGeodesic();\n geodesic.setEndPoints(point1cartographic, point2cartographic);\n var s = geodesic.surfaceDistance;\n //返回两点之间的距离\n s = Math.sqrt(Math.pow(s, 2) + Math.pow(point2cartographic.height - point1cartographic.height, 2));\n return s;\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (VisibilityAnalysis);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Zpc2liaWxpdHkvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Zpc2liaWxpdHkvaW5kZXguanM/ODM2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKumAmuinhuWIhuaekFxyXG4gKiBAQXV0aG9yOiBXYW5nIGppYW5MZWlcclxuICogQERhdGU6IDIwMjItMDQtMTcgMjI6MDQ6NTJcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IFdhbmcgSmlhbkxlaVxyXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIyLTA0LTE3IDIyOjA1OjEzXHJcbiAqL1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCBFdmVudCBmcm9tIFwiLi4vLi4vLi4vRXZlbnRcIjtcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gXCIuLi8uLi8uLi9Nb3VzZVRpcFwiO1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5jbGFzcyBWaXNpYmlsaXR5QW5hbHlzaXMgZXh0ZW5kcyBUb29scyB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyO1xyXG4gICAgdGhpcy5yZXN1bHRPYmplY3QgPSB7XHJcbiAgICAgIHZpZXdQb2ludDogdW5kZWZpbmVkLCAvL+mAmuinhuWIhuaekOi1t+eCuVxyXG4gICAgICB0YXJnZXRQb2ludHM6IFtdLCAvL+mAmuinhuWIhuaekOebruagh+eCuembhuWQiFxyXG4gICAgICB0YXJnZXRQb2ludDogdW5kZWZpbmVkLCAvL+W9k+WJjeebruagh+eCuVxyXG4gICAgICBvYmplY3RFeGNsdWRlOiBbXSwgLy/lsITnur/mjpLpmaTpm4blkIhcclxuICAgICAgZW50aXRpZXM6IFtdLCAvL+WIm+W7uueahEVudGl0eeWvueixoVxyXG4gICAgfTtcclxuICAgIHRoaXMub3B0aW9ucyA9IHt9XHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLnZpZXdQb2ludEhlaWdodCA9IG9wdGlvbnMudmlld1BvaW50SGVpZ2h0XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgdGhpcy50b29scyA9IG5ldyBUb29scyh0aGlzLnNkaylcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICAvLyBWaXNpYmlsaXR5QW5hbHlzaXMuZWRpdCh0aGlzKVxyXG4gICAgVmlzaWJpbGl0eUFuYWx5c2lzLmNyZWF0ZSh0aGlzKVxyXG5cclxuICB9XHJcblxyXG4gIGdldCB2aWV3UG9pbnRIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnZpZXdQb2ludEhlaWdodFxyXG4gIH1cclxuXHJcbiAgc2V0IHZpZXdQb2ludEhlaWdodCh2KSB7XHJcbiAgICBsZXQgdmlld1BvaW50SGVpZ2h0ID0gTWF0aC5mbG9vcihOdW1iZXIodikgKiAxMCkgLyAxMFxyXG4gICAgaWYgKGlzTmFOKHZpZXdQb2ludEhlaWdodCkpIHtcclxuICAgICAgdmlld1BvaW50SGVpZ2h0ID0gMS44XHJcbiAgICB9XHJcbiAgICBpZiAodmlld1BvaW50SGVpZ2h0IDwgMCkge1xyXG4gICAgICB2aWV3UG9pbnRIZWlnaHQgPSAwXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld1BvaW50SGVpZ2h0ID0gdmlld1BvaW50SGVpZ2h0XHJcbiAgICB0aGlzLl9lbG1zLnZpZXdQb2ludEhlaWdodCAmJiB0aGlzLl9lbG1zLnZpZXdQb2ludEhlaWdodC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2aWV3UG9pbnRIZWlnaHRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICB0aGF0LmV2ZW50ID0gbmV3IEV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGF0LnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu54K55Ye75Yib5bu66KeG6KeS6LW354K5JywgdGhhdC5zZGspXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQoYXN5bmMgKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGF0LnRpcC5zZXRfdGV4dChcIuW3pumUruWIm+W7uuinhuinkue7iOeCue+8jOWPs+mUrue7k+adn+mAmuinhuWIhuaekFwiKVxyXG4gICAgICAgIGlmICghdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50KSB7XHJcbiAgICAgICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zXHJcbiAgICAgICAgICBpZiAodGhhdC5zZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHkpIHtcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gYXdhaXQgQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQoXHJcbiAgICAgICAgICAgICAgdGhhdC5zZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgICBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCldXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocG9zaXRpb25zICYmIHBvc2l0aW9uc1swXS5oZWlnaHQgPiBwb3M4NC5hbHQpIHtcclxuICAgICAgICAgICAgcG9zODQuYWx0ID0gcG9zaXRpb25zWzBdLmhlaWdodFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcG9zODQuYWx0ID0gcG9zODQuYWx0ICsgdGhhdC52aWV3UG9pbnRIZWlnaHRcclxuICAgICAgICAgIGxldCBwb3MgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgcG9zODQuYWx0KVxyXG4gICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50ID0gcG9zO1xyXG4gICAgICAgICAgbGV0IHBvaW50RW50aXR5ID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHBvcyxcclxuICAgICAgICAgICAgcG9pbnQ6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLllFTExPVyxcclxuICAgICAgICAgICAgICBwaXhlbFNpemU6IDUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0Lm9iamVjdEV4Y2x1ZGUucHVzaChwb2ludEVudGl0eSk7XHJcbiAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC5lbnRpdGllcy5wdXNoKHBvaW50RW50aXR5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnQgPSBjYXJ0ZXNpYW47XHJcbiAgICAgICAgICBsZXQgcG9pbnRFbnRpdHkgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBwb2ludDoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgICAgICAgIHBpeGVsU2l6ZTogNSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3Qub2JqZWN0RXhjbHVkZS5wdXNoKHBvaW50RW50aXR5KTtcclxuICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LmVudGl0aWVzLnB1c2gocG9pbnRFbnRpdHkpO1xyXG4gICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShcclxuICAgICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnQsXHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50LFxyXG4gICAgICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheSh0aGF0LnJlc3VsdE9iamVjdC52aWV3UG9pbnQsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoYXQudmlld2VyLnNjZW5lLmRyaWxsUGlja0Zyb21SYXkocmF5KTtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB7fVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0ID0gcGlja2VkT2JqZWN0c1tpXVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGxldCByZXN1bHQgPSB0aGF0LnZpZXdlci5zY2VuZS5waWNrRnJvbVJheShcclxuICAgICAgICAgIC8vICAgcmF5LFxyXG4gICAgICAgICAgLy8gICB0aGF0LnJlc3VsdE9iamVjdC5vYmplY3RFeGNsdWRlXHJcbiAgICAgICAgICAvLyApOyAvLyDorqHnrpfkuqTkupLngrnvvIzov5Tlm57nrKzkuIDkuKpcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgbGV0IGRpczAgPSBWaXNpYmlsaXR5QW5hbHlzaXMuZGlzdGFuY2UoXHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50LFxyXG4gICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBkaXMxID0gVmlzaWJpbGl0eUFuYWx5c2lzLmRpc3RhbmNlKFxyXG4gICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnZpZXdQb2ludCxcclxuICAgICAgICAgICAgICByZXN1bHQucG9zaXRpb24gfHwgY2FydGVzaWFuXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBkaXMyID0gVmlzaWJpbGl0eUFuYWx5c2lzLmRpc3RhbmNlKFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5wb3NpdGlvbiB8fCBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGRpczAgPiBkaXMxKSB7XHJcbiAgICAgICAgICAgICAgbGV0IF9wb2x5MCA9IHRoYXQudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IFt0aGF0LnJlc3VsdE9iamVjdC52aWV3UG9pbnQsIHJlc3VsdC5wb3NpdGlvbl0sXHJcbiAgICAgICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuR1JFRU4sXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAzLFxyXG4gICAgICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LmVudGl0aWVzLnB1c2goX3BvbHkwKTtcclxuICAgICAgICAgICAgICBsZXQgX3BvbHkxID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogW3Jlc3VsdC5wb3NpdGlvbiwgdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnRdLFxyXG4gICAgICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QuZW50aXRpZXMucHVzaChfcG9seTEpO1xyXG4gICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHRhcmdldFBvaW50OiBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICB2aXN1YWw6IGZhbHNlLCAvL+WmguaenGRpczLotrPlpJ/lsI/vvIzlhbblrp7ku5bmmK/lj6/op4bnmoRcclxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBbZGlzMCwgZGlzMSwgZGlzMl0sIC8vW+WIneWni+eCueWSjOe7iOeCue+8jOWIneWni+eCueWSjOS6pOeCue+8jOS6pOeCueWSjOe7iOeCuV1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgX3BvbHkyID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnZpZXdQb2ludCxcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC50YXJnZXRQb2ludCxcclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5HUkVFTixcclxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QuZW50aXRpZXMucHVzaChfcG9seTIpO1xyXG4gICAgICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHRhcmdldFBvaW50OiBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICB2aXN1YWw6IHRydWUsIC8v5aaC5p6cZGlzMui2s+Wkn+Wwj++8jOWFtuWunuS7luaYr+WPr+inhueahFxyXG4gICAgICAgICAgICAgICAgZGlzdGFuY2U6IFtkaXMwLCBkaXMxLCBkaXMyXSwgLy9b5Yid5aeL54K55ZKM57uI54K577yM5Yid5aeL54K55ZKM5Lqk54K577yM5Lqk54K55ZKM57uI54K5XVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGF0LnRpcC5zZXRQb3NpdGlvbihjYXJ0ZXNpYW4sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGF0LmVuZCgpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhhdC5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGF0LmVuZCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGF0LnRvb2xzLm1lc3NhZ2Uoe1xyXG4gICAgICAgIHRleHQ6ICfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nLFxyXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcbiAgZW5kKCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgIHRoaXMuZXZlbnQgPSBudWxsXHJcbiAgfVxyXG5cclxuICAvLyBzdGF0aWMgdXBkYXRlKHRoYXQpIHtcclxuICAvLyAgIGlmICghdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50KSB7XHJcbiAgLy8gICAgIHJldHVyblxyXG4gIC8vICAgfVxyXG4gIC8vICAgZm9yIChsZXQgaSA9IHRoYXQucmVzdWx0T2JqZWN0LmVudGl0aWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgLy8gICAgIGlmICh0aGF0LnJlc3VsdE9iamVjdC5lbnRpdGllc1tpXS5wb2ludCkge1xyXG4gIC8vICAgICAgIHRoYXQudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0LnJlc3VsdE9iamVjdC5lbnRpdGllc1tpXSk7XHJcbiAgLy8gICAgICAgdGhhdC5yZXN1bHRPYmplY3QuZW50aXRpZXMuc3BsaWNlKGksIDEpXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50ID0gdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnRzW2ldLnRhcmdldFBvaW50O1xyXG4gIC8vICAgICAgIGxldCBkaXJlY3Rpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoXHJcbiAgLy8gICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChcclxuICAvLyAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3QudGFyZ2V0UG9pbnQsXHJcbiAgLy8gICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnZpZXdQb2ludCxcclxuICAvLyAgICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAvLyAgICAgICAgICksXHJcbiAgLy8gICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gIC8vICAgICAgICk7XHJcbiAgLy8gICAgICAgbGV0IHJheSA9IG5ldyBDZXNpdW0uUmF5KHRoYXQucmVzdWx0T2JqZWN0LnZpZXdQb2ludCwgZGlyZWN0aW9uKTtcclxuICAvLyAgICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoYXQudmlld2VyLnNjZW5lLmRyaWxsUGlja0Zyb21SYXkocmF5KTtcclxuICAvLyAgICAgICBsZXQgcmVzdWx0ID0ge31cclxuICAvLyAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgLy8gICAgICAgICAgIHJlc3VsdCA9IHBpY2tlZE9iamVjdHNbaV1cclxuICAvLyAgICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgLy8gbGV0IHJlc3VsdCA9IHRoYXQudmlld2VyLnNjZW5lLnBpY2tGcm9tUmF5KFxyXG4gIC8vICAgICAgIC8vICAgcmF5LFxyXG4gIC8vICAgICAgIC8vICAgdGhhdC5yZXN1bHRPYmplY3Qub2JqZWN0RXhjbHVkZVxyXG4gIC8vICAgICAgIC8vICk7IC8vIOiuoeeul+S6pOS6kueCue+8jOi/lOWbnuesrOS4gOS4qlxyXG4gIC8vICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAvLyAgICAgICAgIGxldCBkaXMwID0gVmlzaWJpbGl0eUFuYWx5c2lzLmRpc3RhbmNlKFxyXG4gIC8vICAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC52aWV3UG9pbnQsXHJcbiAgLy8gICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50XHJcbiAgLy8gICAgICAgICApO1xyXG4gIC8vICAgICAgICAgbGV0IGRpczEgPSBWaXNpYmlsaXR5QW5hbHlzaXMuZGlzdGFuY2UoXHJcbiAgLy8gICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LnZpZXdQb2ludCxcclxuICAvLyAgICAgICAgICAgcmVzdWx0LnBvc2l0aW9uIHx8IGNhcnRlc2lhblxyXG4gIC8vICAgICAgICAgKTtcclxuICAvLyAgICAgICAgIGxldCBkaXMyID0gVmlzaWJpbGl0eUFuYWx5c2lzLmRpc3RhbmNlKFxyXG4gIC8vICAgICAgICAgICByZXN1bHQucG9zaXRpb24gfHwgY2FydGVzaWFuLFxyXG4gIC8vICAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC50YXJnZXRQb2ludFxyXG4gIC8vICAgICAgICAgKTtcclxuICAvLyAgICAgICAgIGlmIChkaXMwID4gZGlzMSkge1xyXG4gIC8vICAgICAgICAgICBsZXQgX3BvbHkwID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAvLyAgICAgICAgICAgICBwb2x5bGluZToge1xyXG4gIC8vICAgICAgICAgICAgICAgcG9zaXRpb25zOiBbdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50LCByZXN1bHQucG9zaXRpb25dLFxyXG4gIC8vICAgICAgICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5HUkVFTixcclxuICAvLyAgICAgICAgICAgICAgIHdpZHRoOiAzLFxyXG4gIC8vICAgICAgICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC5lbnRpdGllcy5wdXNoKF9wb2x5MCk7XHJcbiAgLy8gICAgICAgICAgIGxldCBfcG9seTEgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gIC8vICAgICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgLy8gICAgICAgICAgICAgICBwb3NpdGlvbnM6IFtyZXN1bHQucG9zaXRpb24sIHRoYXQucmVzdWx0T2JqZWN0LnRhcmdldFBvaW50XSxcclxuICAvLyAgICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gIC8vICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgLy8gICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LmVudGl0aWVzLnB1c2goX3BvbHkxKTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIGxldCBfcG9seTIgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gIC8vICAgICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgLy8gICAgICAgICAgICAgICBwb3NpdGlvbnM6IFtcclxuICAvLyAgICAgICAgICAgICAgICAgdGhhdC5yZXN1bHRPYmplY3Qudmlld1BvaW50LFxyXG4gIC8vICAgICAgICAgICAgICAgICB0aGF0LnJlc3VsdE9iamVjdC50YXJnZXRQb2ludCxcclxuICAvLyAgICAgICAgICAgICAgIF0sXHJcbiAgLy8gICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLkdSRUVOLFxyXG4gIC8vICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgLy8gICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICAgIHRoYXQucmVzdWx0T2JqZWN0LmVudGl0aWVzLnB1c2goX3BvbHkyKTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0sIDEwMDApO1xyXG4gIC8vIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIGVkaXQodGhhdCkge1xyXG4gICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGF0LnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgICB0aXRsZTogJ+WkmueCueinhue6v+WIhuaekCcsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIGF3YWl0IHRoYXQuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgdmlzaWJpbGl0eSdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgIGxldCBkcmF3RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcclxuICAgIGRyYXdFbG0uaW5uZXJIVE1MID0gJ+e7mOWItidcclxuICAgIGRyYXdFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIFZpc2liaWxpdHlBbmFseXNpcy5jcmVhdGUodGhhdClcclxuICAgIH0pXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKGRyYXdFbG0pXHJcblxyXG4gICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgdGhhdC5fRXZlbnRCaW5kaW5nLm9uKHRoYXQsIGFsbF9lbG0pXHJcbiAgICB0aGF0Ll9lbG1zID0gdGhhdC5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICB9XHJcblxyXG4gIC8v56m66Ze05Lik54K56Ze06Led56a7XHJcbiAgc3RhdGljIGRpc3RhbmNlKHBvaW50MSwgcG9pbnQyKSB7XHJcbiAgICBsZXQgcG9pbnQxY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHBvaW50MSk7XHJcbiAgICBsZXQgcG9pbnQyY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHBvaW50Mik7XHJcbiAgICAvKirmoLnmja7nu4/nuqzluqborqHnrpflh7rot53nprsqKi9cclxuICAgIGxldCBnZW9kZXNpYyA9IG5ldyBDZXNpdW0uRWxsaXBzb2lkR2VvZGVzaWMoKTtcclxuICAgIGdlb2Rlc2ljLnNldEVuZFBvaW50cyhwb2ludDFjYXJ0b2dyYXBoaWMsIHBvaW50MmNhcnRvZ3JhcGhpYyk7XHJcbiAgICBsZXQgcyA9IGdlb2Rlc2ljLnN1cmZhY2VEaXN0YW5jZTtcclxuICAgIC8v6L+U5Zue5Lik54K55LmL6Ze055qE6Led56a7XHJcbiAgICBzID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhzLCAyKSArXHJcbiAgICAgIE1hdGgucG93KHBvaW50MmNhcnRvZ3JhcGhpYy5oZWlnaHQgLSBwb2ludDFjYXJ0b2dyYXBoaWMuaGVpZ2h0LCAyKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBzO1xyXG4gIH1cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZXN1bHRPYmplY3QuZW50aXRpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoZWxlbWVudCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVzdWx0T2JqZWN0ID0ge1xyXG4gICAgICB2aWV3UG9pbnQ6IHVuZGVmaW5lZCwgLy/pgJrop4bliIbmnpDotbfngrlcclxuICAgICAgdGFyZ2V0UG9pbnRzOiBbXSwgLy/pgJrop4bliIbmnpDnm67moIfngrnpm4blkIhcclxuICAgICAgdGFyZ2V0UG9pbnQ6IHVuZGVmaW5lZCwgLy/lvZPliY3nm67moIfngrlcclxuICAgICAgb2JqZWN0RXhjbHVkZTogW10sIC8v5bCE57q/5o6S6Zmk6ZuG5ZCIXHJcbiAgICAgIGVudGl0aWVzOiBbXSwgLy/liJvlu7rnmoRFbnRpdHnlr7nosaFcclxuICAgIH07XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgdGhpcy5ldmVudCA9IG51bGxcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZpc2liaWxpdHlBbmFseXNpcztcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBK0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWxUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUhBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTVCQTtBQUFBO0FBQUE7QUFBQTtBQThCQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFvQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Visibility/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Analysis/clear.js": -/*!***********************************!*\ - !*** ./src/Obj/Analysis/clear.js ***! - \***********************************/ -/*! exports provided: AnalysisClear, SectionClear */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnalysisClear\", function() { return AnalysisClear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SectionClear\", function() { return SectionClear; });\nfunction AnalysisClear() {\n YJ.Analysis.AnalysesResults.forEach(function (m) {\n m.destroy();\n });\n // YJ.Analysis.AnalysesResults = []\n}\nfunction SectionClear() {\n YJ.Analysis.SectionResults.forEach(function (m) {\n m.destroy();\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL2NsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9jbGVhci5qcz9hZTZkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFuYWx5c2lzQ2xlYXIoKSB7XHJcbiAgWUouQW5hbHlzaXMuQW5hbHlzZXNSZXN1bHRzLmZvckVhY2gobSA9PiB7XHJcbiAgICBtLmRlc3Ryb3koKVxyXG4gIH0pXHJcbiAgLy8gWUouQW5hbHlzaXMuQW5hbHlzZXNSZXN1bHRzID0gW11cclxufVxyXG5cclxuZnVuY3Rpb24gU2VjdGlvbkNsZWFyKCkge1xyXG4gIFlKLkFuYWx5c2lzLlNlY3Rpb25SZXN1bHRzLmZvckVhY2gobSA9PiB7XHJcbiAgICBtLmRlc3Ryb3koKVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCB7QW5hbHlzaXNDbGVhciwgU2VjdGlvbkNsZWFyfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/clear.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/AssembleObject/_element.js": -/*!*************************************************!*\ - !*** ./src/Obj/Base/AssembleObject/_element.js ***! - \*************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQXNzZW1ibGVPYmplY3QvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQXNzZW1ibGVPYmplY3QvX2VsZW1lbnQuanM/NjU2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgNjAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMHB4O1wiPuaKleW9semdouenrzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlucHV0LXRleHRcIiByZWFkb25seT1cInJlYWRvbmx5XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJhcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWxlY3QtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFicyBpZD1cImFzc2VtYmxlLW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLlsZ7mgKfkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuepuumXtOS/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBoZWlnaHQtbW9kZS1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPumrmOW6puaooeW8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWlnaHQtbW9kZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlrlgLznu5/kuIDlop7liqA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGhlaWdodFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlybSBoZWlnaHQtY29uZmlybVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDtcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUgc3BhdGlhbC1pbmZvLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57uP5bqm77yIWO+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nuqzluqbvvIhZ77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPumrmOW6pu+8iFrvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIumdoumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumdouminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui+uee6v+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovrnnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIiBzdHlsZT1cIndpZHRoOiA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5XCIgQG1vZGVsPVwibGluZVdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+azqOmjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTEoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+etvumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTIoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQXVGQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/AssembleObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/AssembleObject/index.js": -/*!**********************************************!*\ - !*** ./src/Obj/Base/AssembleObject/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/AssembleObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 集结地\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import EditParticle from \"../../ModelController/EditParticle\";\nvar AssembleObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 集结地\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色\r\n * @param options.height {number} 高度\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function AssembleObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, AssembleObject);\n _this2 = _callSuper(this, AssembleObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"#ff000080\";\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.positions = options.positions || [];\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n _this2.entity;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.operate = {};\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.nodePoints = [];\n if (!_this2.options.positions || _this2.options.positions.length < 3) {\n _this2._error = '集结地最少需要三个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n if (!_this2.options.height && _this2.options.height !== 0) {\n var height = _this2.options.positions[0].alt;\n for (var i = 1; i < _this2.options.positions.length; i++) {\n if (height < _this2.options.positions[i].alt) {\n height = _this2.options.positions[i].alt;\n }\n }\n _this2.options.height = height;\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n AssembleObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(AssembleObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(AssembleObject, [{\n key: \"type\",\n get: function get() {\n return 'AssembleObject';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this4.options.heightMode = v || v == 0 ? v : 2;\n _this4.positionEditing = false;\n if (!_this4.entity) {\n return;\n }\n var heightModeName = '';\n _this4.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this4.renewPositions();\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positionsH), [_this4.positionsH[0], _this4.positionsH[1]]);\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positionsH);\n switch (_this4.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this4.previous = null;\n _this4.label.ground = ground;\n _this4.entity.polyline.clampToGround = ground;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4._elms.heightMode && (_this4._elms.heightMode.value = heightModeName);\n _this4._elms.heightModeObject && _this4._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this5 = this;\n if (!v || isNaN(Number(v))) {\n this.options.height = 0;\n } else {\n this.options.height = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this5.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this5.positionsH);\n _this5.entity.polygon.perPositionHeight = !ground ? true : false;\n _this5.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this5.positionsH), [_this5.positionsH[0], _this5.positionsH[1]]);\n _this5.entity.polyline.clampToGround = !ground ? false : true;\n _this5.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this5.options.height;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineColor && this._elms.lineColor.forEach(function (item) {\n item.value = _this7.options.line.width;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this12 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, heightBoxElm, heightElm, heightConfirmElm, heightModeData, heightModeObject, heightModeDataLegpElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 3:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 62;\n break;\n }\n createSpatialInfoTableContent = function createSpatialInfoTableContent() {\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n tBodyElm.innerHTML = '';\n _this._elms.lng = [];\n _this._elms.lngInput = [];\n _this._elms.lat = [];\n _this._elms.latInput = [];\n _this._elms.alt = [];\n _this._elms.altInput = [];\n var _loop = function _loop(i) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
\".concat(i + 1, \"
\\n
\\n
\\n
\\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this.options.positions[i].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this.options.positions[i].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this.height.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this.height.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AssembleObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this.options.positions[i].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n _this.height = _this.height;\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AssembleObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this.options.positions[i].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n _this.height = _this.height;\n });\n altBox.addEventListener('dblclick', function () {\n if (_this.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this.height.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AssembleObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this.height.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this.height = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = Number(_this.height.toFixed(2));\n });\n _this._elms.lng.push(lng);\n _this._elms.lngInput.push(lngInput);\n _this._elms.lat.push(lat);\n _this._elms.latInput.push(latInput);\n _this._elms.alt.push(alt);\n _this._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var i = 0; i < _this.options.positions.length; i++) {\n _loop(i);\n }\n };\n _context.next = 10;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '集结地属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this12.name = _this12.name.trim();\n if (!_this12.name) {\n _this12.name = '未命名对象';\n }\n _this12.options.label.position = {\n lng: _this12.label.position[0],\n lat: _this12.label.position[1],\n alt: _this12.label.position[2]\n };\n _this12.originalOptions = _this12.deepCopyObj(_this12.options);\n _this12._DialogObject.close();\n _this12.Dialog.confirmCallBack && _this12.Dialog.confirmCallBack(_this12.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(_this12.sdk, _this12.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(_this12.sdk, _this12.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this12.reset();\n _this12.Dialog.resetCallBack && _this12.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this12.Dialog.removeCallBack && _this12.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this12.reset();\n _this12.positionEditing = false;\n _this12.Dialog.closeCallBack && _this12.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this12.options.show = show;\n _this12.originalOptions.show = show;\n _this12.show = show;\n _this12.Dialog.showCallBack && _this12.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this12.positionEditing = !_this12.positionEditing;\n },\n // 二次编辑回调\n secondaryEditCallBack: function secondaryEditCallBack() {\n AssembleObject.nodeEdit(_this12, function () {\n createSpatialInfoTableContent();\n });\n }\n });\n case 10:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' assemble';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('assemble-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n AssembleObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (this.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context.next = 59;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = this._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n i = 0;\n case 43:\n if (!(i < heightModeData.length)) {\n _context.next = 51;\n break;\n }\n if (!(heightModeData[i].key == this.heightMode)) {\n _context.next = 48;\n break;\n }\n heightModeDataLegpElm.value = heightModeData[i].value;\n heightModeObject.legp_searchActive(heightModeData[i].value);\n return _context.abrupt(\"break\", 51);\n case 48:\n i++;\n _context.next = 43;\n break;\n case 51:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i = 0; _i < heightModeData.length; _i++) {\n if (heightModeData[_i].value === heightModeDataLegpElm.value) {\n _this12.heightMode = heightModeData[_i].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this12.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n this._elms.height = heightElm;\n this._elms.heightBox = heightBoxElm;\n this._elms.heightMode = heightModeDataLegpElm;\n this._elms.heightConfirm = heightConfirmElm;\n this._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this12.operate.positionEditing) {\n _this12.positionEditing = false;\n _this12.height = _this12.height + Number(heightElm.value);\n } else {\n AssembleObject.closeNodeEdit(_this12);\n _this12.heightMode = _this12.heightMode;\n setTimeout(function () {\n _this12.height = _this12.height + Number(heightElm.value);\n }, 100);\n }\n });\n case 59:\n setTimeout(function () {\n _this12.attributeLink = _this12.options.attribute.link.content;\n _this12.attributeVr = _this12.options.attribute.vr.content;\n _this12.cameraSelect && _this12.cameraSelect();\n _this12.goodsSelect && _this12.goodsSelect();\n var tagData = _this12.attributeSelect;\n var attributeElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i2 = 0; _i2 < tagData.length; _i2++) {\n if (tagData[_i2].key === _this12.options.attributeType) {\n attributeSelectElm.value = tagData[_i2].value;\n legpObject.legp_searchActive(tagData[_i2].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this12.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n }\n createSpatialInfoTableContent();\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this12.areaUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this12.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this12.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this12._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 63;\n break;\n case 62:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 63:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineColor = this.originalOptions.line.color;\n this.lineWidth = this.originalOptions.line.width;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n for (var i = 0; i < this.options.positions.length; i++) {\n if (this._elms.lng && this._elms.lng[i]) {\n this._elms.lng[i].innerHTML = this.options.positions[i].lng.toFixed(8);\n }\n if (this._elms.lat && this._elms.lat[i]) {\n this._elms.lat[i].innerHTML = this.options.positions[i].lat.toFixed(8);\n }\n if (this._elms.alt && this._elms.alt[i]) {\n this._elms.alt[i].innerHTML = Number(this.options.height.toFixed(2));\n }\n }\n this.heightMode = this.heightMode;\n for (var _i8 = 0; _i8 < this.nodePoints.length; _i8++) {\n this.sdk.viewer.entities.remove(this.nodePoints[_i8]);\n }\n this.previous = null;\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.sdk.viewer.entities.remove(this.entity);\n this.label && this.label.remove();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n ground,\n i,\n height,\n a,\n _i9,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 51;\n break;\n case 25:\n positionArray = [];\n _context3.t0 = this.heightMode;\n _context3.next = _context3.t0 === 0 ? 29 : _context3.t0 === '0' ? 29 : _context3.t0 === 1 ? 31 : _context3.t0 === '1' ? 31 : _context3.t0 === 2 ? 33 : _context3.t0 === '2' ? 33 : 35;\n break;\n case 29:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 31:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 33:\n ground = true;\n return _context3.abrupt(\"break\", 35);\n case 35:\n if (!ground) {\n _context3.next = 48;\n break;\n }\n i = 0;\n case 37:\n if (!(i < this.options.positions.length)) {\n _context3.next = 46;\n break;\n }\n _context3.next = 40;\n return this.getClampToHeight(this.options.positions[i]);\n case 40:\n height = _context3.sent;\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 43:\n i++;\n _context3.next = 37;\n break;\n case 46:\n _context3.next = 49;\n break;\n case 48:\n if (this.positionsH) {\n for (_i9 = 0; _i9 < this.positionsH.length; _i9++) {\n positionArray.push(this.positionsH[_i9].x, this.positionsH[_i9].y, this.positionsH[_i9].z);\n }\n }\n case 49:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 51:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this13 = this;\n // var ue = UE.getEditor('app');\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this13.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this14 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n if (status === true) {\n var _Cesium$Cartesian;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var array = [];\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i10 = 0; _i10 < positions.length; _i10++) {\n center.x - positions[_i10].x;\n disparity.push({\n x: center.x - positions[_i10].x,\n y: center.y - positions[_i10].y,\n z: center.z - positions[_i10].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n var position84 = _this14.cartesian3Towgs84(cartesian, _this14.sdk.viewer);\n newpositions = [];\n for (var _i11 = 0; _i11 < disparity.length; _i11++) {\n newpositions.push({\n x: cartesian.x - disparity[_i11].x,\n y: cartesian.y - disparity[_i11].y,\n z: cartesian.z - disparity[_i11].z\n });\n }\n // this.label.position = [position84.lng, position84.lat, position84.alt]\n _this14.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this14.event.mouse_move(function () {});\n _this14.event.mouse_left(function () {});\n _this14.event.mouse_right(function () {});\n _this14.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i12 = 0; _i12 < disparity.length; _i12++) {\n var pos3 = {\n x: cartesian.x - disparity[_i12].x,\n y: cartesian.y - disparity[_i12].y,\n z: cartesian.z - disparity[_i12].z\n };\n newpositions.push(pos3);\n _this14.options.positions[_i12] = _this14.cartesian3Towgs84(pos3, _this14.sdk.viewer);\n if (_this14._elms.lng && _this14._elms.lng[_i12]) {\n _this14._elms.lng[_i12].innerHTML = _this14.options.positions[_i12].lng.toFixed(8);\n }\n if (_this14._elms.lat && _this14._elms.lat[_i12]) {\n _this14._elms.lat[_i12].innerHTML = _this14.options.positions[_i12].lat.toFixed(8);\n }\n }\n _this14.positions = newpositions;\n _this14.previous = null;\n _this14.positionEditing = false;\n if (_this14._positionEditingCallback) {\n _this14._positionEditingCallback();\n _this14._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this14.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this14.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this14.positionEditing = false;\n } else {\n _this14.event.mouse_move(function () {});\n _this14.event.mouse_left(function () {});\n _this14.event.mouse_right(function () {});\n _this14.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i13 = 0; _i13 < disparity.length; _i13++) {\n var pos3 = {\n x: cartesian.x - disparity[_i13].x,\n y: cartesian.y - disparity[_i13].y,\n z: cartesian.z - disparity[_i13].z\n };\n newpositions.push(pos3);\n _this14.options.positions[_i13] = _this14.cartesian3Towgs84(pos3, _this14.sdk.viewer);\n if (_this14._elms.lng && _this14._elms.lng[_i13]) {\n _this14._elms.lng[_i13].innerHTML = _this14.options.positions[_i13].lng.toFixed(8);\n }\n if (_this14._elms.lat && _this14._elms.lat[_i13]) {\n _this14._elms.lat[_i13].innerHTML = _this14.options.positions[_i13].lat.toFixed(8);\n }\n }\n _this14.positions = newpositions;\n _this14.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this14.positions)\n };\n _this14.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var position84 = [];\n if (newpositions.length > 0) {\n for (var _i14 = 0; _i14 < newpositions.length; _i14++) {\n position84.push(_this.cartesian3Towgs84(newpositions[_i14], _this.sdk.viewer));\n }\n } else {\n for (var _i15 = 0; _i15 < positions.length; _i15++) {\n position84.push(_this.cartesian3Towgs84(positions[_i15], _this.sdk.viewer));\n }\n }\n _this.renewPositions(position84);\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n if (!this.previous) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n } else {\n this.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.previous.positions);\n }\n var position84 = [];\n for (var _i16 = 0; _i16 < this.positions.length; _i16++) {\n position84.push(_this.cartesian3Towgs84(this.positions[_i16], _this.sdk.viewer));\n }\n this.renewPositions(position84);\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this16 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n this.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var objectsToExclude, _i18, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.sdk.viewer.entities.values);\n _i18 = 0;\n case 2:\n if (!(_i18 < _this15.options.positions.length)) {\n _context4.next = 11;\n break;\n }\n _context4.next = 5;\n return _this15.getClampToHeight(_this15.options.positions[_i18], objectsToExclude);\n case 5:\n height = _context4.sent;\n entity = _this15.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i18,\n position: Cesium.Cartesian3.fromDegrees(_this15.options.positions[_i18].lng, _this15.options.positions[_i18].lat, height),\n billboard: {\n image: _this15.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this15.nodePoints.push(entity);\n case 8:\n _i18++;\n _context4.next = 2;\n break;\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints() {\n return _ref.apply(this, arguments);\n };\n }(); // for (let i = 0; i < this.options.positions.length; i++) {\n // let entity = this.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat),\n // billboard: {\n // image: this.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // },\n // })\n // nodePoints.push(entity)\n // }\n YJ.Measure.SetMeasureStatus(true);\n var _this15 = this;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var fromDegreesArray = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n fromDegreesArray.push(this.options.positions[i].lng, this.options.positions[i].lat);\n }\n var moveEvent = function moveEvent(movement, cartesian) {\n if (selectPoint) {\n _this16.options.positions[selectPoint.index] = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n if (_this16._elms.lng && _this16._elms.lng[selectPoint.index]) {\n _this16._elms.lng[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (_this16._elms.lat && _this16._elms.lat[selectPoint.index]) {\n _this16._elms.lat[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lat.toFixed(8);\n }\n _this16.renewPositions();\n }\n _this16.tip.setPosition(cartesian, movement.position ? movement.position.x : movement.endPosition.x, movement.position ? movement.position.y : movement.endPosition.y);\n };\n var leftEvent = function leftEvent(movement, cartesian) {\n moveEvent(movement, cartesian);\n var position84 = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n if (selectPoint) {\n var index = selectPoint.index;\n var entity = _this16.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: index,\n position: Cesium.Cartesian3.fromDegrees(_this16.options.positions[selectPoint.index].lng, _this16.options.positions[selectPoint.index].lat, position84.alt),\n billboard: {\n image: _this16.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this16.nodePoints.splice(selectPoint.index, 0, entity);\n selectPoint = null;\n _this16.tip.set_text('请选择一个顶点,右键取消');\n } else {\n var _position = movement.position;\n if (!_position) {\n _position = {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n };\n }\n var pick = _this16.sdk.viewer.scene.pick(_position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n originalPosition = _this16.cartesian3Towgs84(pick.id.position.getValue(), _this16.sdk.viewer);\n _this16.nodePoints.splice(pick.id.index, 1);\n _this16.sdk.viewer.entities.remove(pick.id);\n _this16.tip.set_text('左键确认,右键取消');\n }\n }\n _this16.renewPositions();\n cb('', _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.options.positions));\n };\n var rightEvent = function rightEvent() {\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n if (selectPoint) {\n if (!originalPosition) {\n _this16.options.positions.pop();\n } else {\n _this16.options.positions[selectPoint.index] = originalPosition;\n }\n if (_this16._elms.lng && _this16._elms.lng[selectPoint.index]) {\n _this16._elms.lng[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (_this16._elms.lat && _this16._elms.lat[selectPoint.index]) {\n _this16._elms.lat[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lat.toFixed(8);\n }\n }\n _this16.heightMode = _this16.heightMode;\n _this16.previous = null;\n };\n this.entity.polyline.clampToGround = true;\n this.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n this.entity.polygon.perPositionHeight = false;\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var arr = _this15.computeAssemble(_this15.options.positions);\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n var arr = _this15.computeAssemble(_this15.options.positions);\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n var points = [[]];\n var pos84 = [];\n for (var _i17 = 0; _i17 < this.positionsH.length; _i17++) {\n var _position2 = this.cartesian3Towgs84(this.positionsH[_i17], this.sdk.viewer);\n pos84.push(_position2);\n points[0].push([_position2.lng, _position2.lat]);\n }\n var position = this.cartesian3Towgs84(this.positionsH[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.sdk.viewer.entities.values);\n setTimeout(function () {\n _this16.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this16.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }, 200);\n setTimeout(function () {\n _this16.event.mouse_left(leftEvent);\n _this16.event.mouse_right(rightEvent);\n _this16.event.mouse_move(moveEvent);\n _this16.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this16.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n rightEvent();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n createNodePoints();\n }, 200);\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n var _Cesium$Cartesian2;\n var cartesian = Cesium.Cartesian3.fromDegrees(v.position.lng, v.position.lat, v.position.alt);\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var array = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i19 = 0; _i19 < positions.length; _i19++) {\n disparity.push({\n x: center.x - positions[_i19].x,\n y: center.y - positions[_i19].y,\n z: center.z - positions[_i19].z\n });\n }\n var newpositions = [];\n for (var _i20 = 0; _i20 < disparity.length; _i20++) {\n newpositions.push({\n x: cartesian.x - disparity[_i20].x,\n y: cartesian.y - disparity[_i20].y,\n z: cartesian.z - disparity[_i20].z\n });\n }\n this.label.position = [v.position.lng, v.position.lat, v.position.alt];\n var positions84 = [];\n if (newpositions.length > 0) {\n for (var _i21 = 0; _i21 < newpositions.length; _i21++) {\n positions84.push(this.cartesian3Towgs84(newpositions[_i21], this.sdk.viewer));\n }\n }\n var arr = this.computeAssemble(positions84);\n if (arr.length == 0) {\n return;\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this17 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var positions = this.computeAssemble(this.options.positions);\n if (positions.length == 0) {\n return;\n }\n var points = [[]];\n for (var i = 0; i < positions.length; i++) {\n var _position3 = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n points[0].push([_position3.lng, _position3.lat]);\n }\n var position = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this17.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(position84, cd) {\n var _this18 = this;\n if (this._error || !this.sdk.viewer) {\n return;\n }\n var ground = false;\n var array = [];\n var positions = this.options.positions;\n if (position84) {\n positions = position84;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = this.computeAssemble(positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n var pos84 = [];\n for (var _i22 = 0; _i22 < positionsA.length; _i22++) {\n var _position4 = this.cartesian3Towgs84(positionsA[_i22], this.sdk.viewer);\n pos84.push(_position4);\n points[0].push([_position4.lng, _position4.lat]);\n }\n var position = this.cartesian3Towgs84(positionsA[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var height = 0;\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray2 = [];\n if (!ground && this.nodePoints.length == 0) {\n for (var _i23 = 0; _i23 < points[0].length; _i23++) {\n fromDegreesArray2.push(points[0][_i23][0], points[0][_i23][1], this.height + height);\n }\n this.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.height + height]);\n } else {\n this.positionsH = positionsA;\n setTimeout(function () {\n if (!_this18.sdk.viewer) {\n return;\n }\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this18.sdk.viewer.entities.values);\n _this18.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this18.label && (_this18.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n this.areaByMeter = this.computeArea(pos84);\n this.areaChangeCallBack && this.areaChangeCallBack();\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = that.computeAssemble(that.options.positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n for (var _i24 = 0; _i24 < positionsA.length; _i24++) {\n var _position5 = that.cartesian3Towgs84(positionsA[_i24], that.sdk.viewer);\n points[0].push([_position5.lng, _position5.lat]);\n }\n var position = that.cartesian3Towgs84(positionsA[0], that.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n\n // if (!that.options.label.position) {\n // that.options.label.position = { lng: centroid.geometry.coordinates[0], lat: centroid.geometry.coordinates[1], alt: that.height + height }\n // }\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: that.height + height\n };\n var fromDegreesArray2 = [];\n for (var _i25 = 0; _i25 < points[0].length; _i25++) {\n fromDegreesArray2.push(points[0][_i25][0], points[0][_i25][1], that.height + height);\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n // that.options.label.ground = ground\n that.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n that.entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n id: that.options.id,\n polygon: {\n hierarchy: !ground ? new Cesium.PolygonHierarchy(that.positionsH) : new Cesium.PolygonHierarchy(positionsA),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n AssembleObject.createLabel(that);\n var pos84 = [];\n for (var _i26 = 0; _i26 < positionsA.length; _i26++) {\n pos84.push(that.cartesian3Towgs84(positionsA[_i26], that.sdk.viewer));\n }\n that.areaByMeter = that.computeArea(pos84);\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineWidth: that.options.label.lineWidth,\n lineColor: that.options.label.lineColor,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n // ground: that.options.label.ground,\n });\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (AssembleObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQXNzZW1ibGVPYmplY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQXNzZW1ibGVPYmplY3QvaW5kZXguanM/MTRmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog6ZuG57uT5ZywXHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbi8vIGltcG9ydCBFZGl0UGFydGljbGUgZnJvbSBcIi4uLy4uL01vZGVsQ29udHJvbGxlci9FZGl0UGFydGljbGVcIjtcclxuXHJcbmNsYXNzIEFzc2VtYmxlT2JqZWN0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDpm4bnu5PlnLBcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPSdyZ2JhKDI1NSwgMCwgMCwgMC41KScge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodE1vZGU9MntudW1iZXJ9IOmrmOW6puaooeW8j++8iDDvvJrmtbfmi5Tpq5jluqbvvJsx77ya55u45a+55Zyw6KGo77ybMu+8muS+nemZhOaooeW8j++8iVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUge29iamVjdH0g6L655qGGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS53aWR0aD0yIHtzdHJpbmd9IOi+ueahhuWuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUuY29sb3I9XCJyZ2JhKDE1NSwgMTU1LCAxMjQsIDAuODkpXCIge3N0cmluZ30g6L655qGG6aKc6ImyXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30ge29iamVjdH0g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCBcIiNmZjAwMDA4MFwiXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHRoaXMub3B0aW9ucy5saW5lLndpZHRoIHx8IHRoaXMub3B0aW9ucy5saW5lLndpZHRoID09PSAwKSA/IHRoaXMub3B0aW9ucy5saW5lLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgfHwgJ3JnYmEoMjU1LCAwLCAwLCAxKSdcclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogb3B0aW9ucy5sYWJlbC5wb3NpdGlvbixcclxuICAgICAgZm9udFNpemU6IChvcHRpb25zLmxhYmVsLmZvbnRTaXplIHx8IG9wdGlvbnMubGFiZWwuZm9udFNpemUgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA6IDIwLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBjb2xvcjogb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIGxpbmVXaWR0aDogKG9wdGlvbnMubGFiZWwubGluZVdpZHRoIHx8IG9wdGlvbnMubGFiZWwubGluZVdpZHRoID09PSAwKSA/IG9wdGlvbnMubGFiZWwubGluZVdpZHRoIDogNCxcclxuICAgICAgcGl4ZWxPZmZzZXQ6IChvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IHx8IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPT09IDApID8gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA6IDIwLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddLFxyXG4gICAgICBsaW5lQ29sb3I6IG9wdGlvbnMubGFiZWwubGluZUNvbG9yIHx8ICcjMDBmZmZmODAnLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHx8IGZhbHNlLFxyXG4gICAgICBuZWFyOiAob3B0aW9ucy5sYWJlbC5uZWFyIHx8IG9wdGlvbnMubGFiZWwubmVhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLm5lYXIgOiAyMDAwLFxyXG4gICAgICBmYXI6IChvcHRpb25zLmxhYmVsLmZhciB8fCBvcHRpb25zLmxhYmVsLmZhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZhciA6IDEwMDAwMCxcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgJydcclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kc1xyXG5cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wb3NpdGlvbnMgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yID0gJ+mbhue7k+WcsOacgOWwkemcgOimgeS4ieS4quWdkOagh++8gSdcclxuICAgICAgY29uc29sZS53YXJuKHRoaXMuX2Vycm9yKVxyXG4gICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLl9lcnJvcixcclxuICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVpZ2h0ICYmIHRoaXMub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHRcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChoZWlnaHQgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gaGVpZ2h0XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgICAgQXNzZW1ibGVPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQXNzZW1ibGVPYmplY3QnXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlnb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA/IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlIDogMFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0TW9kZSh2KSB7XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IFtdXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVOYW1lID0gJydcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnNILFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFswXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hcclxuICAgICAgKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5rW35ouU6auY5bqmJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfnm7jlr7nlnLDooagnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5L6d6ZmE5qih5Z6LJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICB0aGlzLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlID0gaGVpZ2h0TW9kZU5hbWUpXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lXHJcbiAgICAgICkpXHJcbiAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICB9XHJcblxyXG4gIHNldCBoZWlnaHQodikge1xyXG4gICAgaWYgKCF2IHx8IGlzTmFOKE51bWJlcih2KSkpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IDBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDIpKVxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9uc0gsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNIWzBdLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFsxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDXHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5jb2xvclxyXG4gIH1cclxuICBzZXQgbGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdiB8fCAncmdiYSgyNTUsIDAsIDAsIDAuNSknXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5bGluZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMubGluZS5jb2xvcilcclxuICAgIGlmICh0aGlzLl9lbG1zLmxpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMubGluZS5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICB9XHJcbiAgc2V0IGxpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9ICgodiB8fCB2ID09PSAwKSA/IHYgOiAzKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggPSB0aGlzLm9wdGlvbnMubGluZS53aWR0aFxyXG4gICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgJiYgdGhpcy5fZWxtcy5saW5lQ29sb3IuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgIH1cclxuICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgbGV0IHBvc2l0aW9uc0EgPSB0aGF0LmNvbXB1dGVBc3NlbWJsZSh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgaWYgKHBvc2l0aW9uc0EubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9pbnRzID0gW1tdXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnNBLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVtpXSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgfVxyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBWzBdLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKTtcclxuICAgIC8vIGxldCBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLnBvaW50T25GZWF0dXJlKHBvbHlnb24pO1xyXG5cclxuXHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG5cclxuICAgIHN3aXRjaCAodGhhdC5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgaGVpZ2h0ID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSkpIHx8IDBcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKCF0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24pIHtcclxuICAgIC8vICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLCBhbHQ6IHRoYXQuaGVpZ2h0ICsgaGVpZ2h0IH1cclxuICAgIC8vIH1cclxuICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgYWx0OiB0aGF0LmhlaWdodCArIGhlaWdodCB9XHJcblxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkyID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkyLnB1c2goXHJcbiAgICAgICAgcG9pbnRzWzBdW2ldWzBdLFxyXG4gICAgICAgIHBvaW50c1swXVtpXVsxXSxcclxuICAgICAgICB0aGF0LmhlaWdodCArIGhlaWdodFxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpXHJcbiAgICBpZiAodGhhdC5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgIGNvbG9yOiB0aGF0Lm9wdGlvbnMuY29sb3JcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIC8vIHRoYXQub3B0aW9ucy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgIHRoYXQucG9zaXRpb25zSCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkyKVxyXG5cclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgaGllcmFyY2h5OiAhZ3JvdW5kID8gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXQucG9zaXRpb25zSCkgOiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkocG9zaXRpb25zQSksXHJcbiAgICAgICAgcGVyUG9zaXRpb25IZWlnaHQ6ICFncm91bmQgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9LFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogWy4uLnRoYXQucG9zaXRpb25zSCwgdGhhdC5wb3NpdGlvbnNIWzBdLCB0aGF0LnBvc2l0aW9uc0hbMV1dLFxyXG4gICAgICAgIHdpZHRoOiB0aGF0Lm9wdGlvbnMubGluZS53aWR0aCxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGluZS5jb2xvciksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICBhcmNUeXBlOiAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIHRoYXQuc2RrLl9lbnRpdHlaSW5kZXgrK1xyXG4gICAgQXNzZW1ibGVPYmplY3QuY3JlYXRlTGFiZWwodGhhdClcclxuXHJcbiAgICBsZXQgcG9zODQgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnNBLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHBvczg0LnB1c2godGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBW2ldLCB0aGF0LnNkay52aWV3ZXIpKVxyXG4gICAgfVxyXG4gICAgdGhhdC5hcmVhQnlNZXRlciA9IHRoYXQuY29tcHV0ZUFyZWEocG9zODQpO1xyXG4gICAgdGhhdC5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhhdC5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgbGluZUNvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZUNvbG9yLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIC8vIGdyb3VuZDogdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KCkge1xyXG4gICAgICAgIGxldCB0YWJsZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3BhdGlhbC1pbmZvLXRhYmxlJylbMF1cclxuICAgICAgICBsZXQgdEJvZHlFbG0gPSB0YWJsZUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICB0Qm9keUVsbS5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZyA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgICAgICB0ci5jbGFzc05hbWUgPSAndHInXHJcbiAgICAgICAgICB0ci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj4ke2kgKyAxfTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxuZyBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsYXQgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgYWx0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgIGBcclxuICAgICAgICAgIGxldCBsbmdCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsbmcnKVswXVxyXG4gICAgICAgICAgbGV0IGxuZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbG5nLmlubmVySFRNTCA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOClcclxuICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmcpXHJcbiAgICAgICAgICBsZXQgbG5nSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBsbmdJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBsbmdJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGxuZ0lucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGxuZ0lucHV0Lm1pbiA9IC0xODBcclxuICAgICAgICAgIGxuZ0lucHV0Lm1heCA9IDE4MFxyXG4gICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgICAgbGV0IGxhdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhdCcpWzBdXHJcbiAgICAgICAgICBsZXQgbGF0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG4gICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdClcclxuICAgICAgICAgIGxldCBsYXRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGxhdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGxhdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgbGF0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgbGF0SW5wdXQubWluID0gLTkwXHJcbiAgICAgICAgICBsYXRJbnB1dC5tYXggPSA5MFxyXG4gICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgICAgbGV0IGFsdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsdCcpWzBdXHJcbiAgICAgICAgICBsZXQgYWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIGxldCBhbHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGFsdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGFsdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgYWx0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgYWx0SW5wdXQubWluID0gLTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0Lm1heCA9IDk5OTk5OTk5OVxyXG4gICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcblxyXG4gICAgICAgICAgbG5nQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZ0lucHV0KVxyXG4gICAgICAgICAgICBsbmdJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQXNzZW1ibGVPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nID0gTnVtYmVyKE51bWJlcihsbmdJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nLmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBsYXRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0SW5wdXQpXHJcbiAgICAgICAgICAgIGxhdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBBc3NlbWJsZU9iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxhdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxhdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQgPSBOdW1iZXIoTnVtYmVyKGxhdElucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gX3RoaXMuaGVpZ2h0XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGFsdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdElucHV0KVxyXG4gICAgICAgICAgICBhbHRJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQXNzZW1ibGVPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gTnVtYmVyKE51bWJlcihhbHRJbnB1dC52YWx1ZSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0LmlubmVySFRNTCA9IE51bWJlcihfdGhpcy5oZWlnaHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxuZy5wdXNoKGxuZylcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxuZ0lucHV0LnB1c2gobG5nSW5wdXQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sYXQucHVzaChsYXQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sYXRJbnB1dC5wdXNoKGxhdElucHV0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMuYWx0LnB1c2goYWx0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQucHVzaChhbHRJbnB1dClcclxuICAgICAgICAgIHRCb2R5RWxtLmFwcGVuZENoaWxkKHRyKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICfpm4bnu5PlnLDlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLmxhYmVsLnBvc2l0aW9uWzBdLCBsYXQ6IHRoaXMubGFiZWwucG9zaXRpb25bMV0sIGFsdDogdGhpcy5sYWJlbC5wb3NpdGlvblsyXSB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8g5LqM5qyh57yW6L6R5Zue6LCDXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBBc3NlbWJsZU9iamVjdC5ub2RlRWRpdCh0aGlzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGFzc2VtYmxlJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwodGhpcylcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdhc3NlbWJsZS1vYmplY3QtZWRpdC10YWJzJywgdW5kZWZpbmVkLCB0aGlzLnNkaylcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5saW5lQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxMaW5lQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0XCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yRW5kXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIEFzc2VtYmxlT2JqZWN0LkV2ZW50QmluZGluZyh0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvciA9IFtsaW5lY29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvciA9IFtsYWJlbENvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yID0gW2xhYmVsbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIGxldCBoZWlnaHRCb3hFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtYm94JylbMF1cclxuICAgICAgbGV0IGhlaWdodEVsbSA9IGhlaWdodEJveEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICBsZXQgaGVpZ2h0Q29uZmlybUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1jb25maXJtJylbMF1cclxuICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gMTBcclxuICAgICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICBoZWlnaHRDb25maXJtRWxtICYmIGhlaWdodENvbmZpcm1FbG0uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGhlaWdodEJveEVsbSAmJiAoaGVpZ2h0Qm94RWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94Jyk7XHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgaGVpZ2h0TW9kZURhdGEgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICB2YWx1ZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICBrZXk6ICcwJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgdmFsdWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAga2V5OiAnMScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgIGtleTogJzInLFxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgICBsZXQgaGVpZ2h0TW9kZU9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdoZWlnaHQtbW9kZS1ib3gnXHJcbiAgICAgICAgKVswXSxcclxuICAgICAgICAnLmhlaWdodC1tb2RlJ1xyXG4gICAgICApXHJcbiAgICAgIGlmIChoZWlnaHRNb2RlT2JqZWN0KSB7XHJcbiAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaChoZWlnaHRNb2RlRGF0YSlcclxuICAgICAgICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtbW9kZScpWzBdXHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaGVpZ2h0TW9kZURhdGFbaV0ua2V5ID09IHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUgPSBoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9kZURhdGFbaV0udmFsdWUgPT09IGhlaWdodE1vZGVEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBoZWlnaHRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0ID0gaGVpZ2h0RWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggPSBoZWlnaHRCb3hFbG1cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG1cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gPSBoZWlnaHRDb25maXJtRWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ID0gaGVpZ2h0TW9kZU9iamVjdFxyXG5cclxuICAgICAgICBoZWlnaHRDb25maXJtRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBBc3NlbWJsZU9iamVjdC5jbG9zZU5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICBsZXQgdGFnRGF0YSA9IHRoaXMuYXR0cmlidXRlU2VsZWN0XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QtYm94JylbMF1cclxuICAgICAgICBpZiAoYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AoYXR0cmlidXRlRWxtLCBcIi5hdHRyaWJ1dGUtc2VsZWN0XCIpXHJcbiAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0YWdEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuXHJcbiAgICAgICAgbGV0IHVuaXREYXRhID0gW3tcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5bmz5pa55Y2D57GzJyxcclxuICAgICAgICAgIHZhbHVlOiAn5bmz5pa55Y2D57GzJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S6qScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S6qSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflhazpobcnLFxyXG4gICAgICAgICAgdmFsdWU6ICflhazpobcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQtYm94JylbMF0sIFwiLmlucHV0LXNlbGVjdC11bml0XCIpXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJlYVVuaXQgPSB1bml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5saW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMubGFiZWxTaG93ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2hvd1xyXG4gICAgdGhpcy5sYWJlbENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuY29sb3JcclxuICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICAgIHRoaXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICAgIHRoaXMubGFiZWxOZWFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubmVhclxyXG4gICAgdGhpcy5sYWJlbEZhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZhclxyXG4gICAgdGhpcy5sYWJlbExpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gICAgdGhpcy5sYWJlbFBpeGVsT2Zmc2V0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG5cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5sbmdbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMubGF0W2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZWxtcy5hbHQgJiYgdGhpcy5fZWxtcy5hbHRbaV0pIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmFsdFtpXS5pbm5lckhUTUwgPSBOdW1iZXIodGhpcy5vcHRpb25zLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcblxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91cyA9IG51bGxcclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICog6aOe5YiwXHJcbiovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGxldCBncm91bmRcclxuICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChncm91bmQpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSlcclxuICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zSCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uc0gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKHRoaXMucG9zaXRpb25zSFtpXS54LCB0aGlzLnBvc2l0aW9uc0hbaV0ueSwgdGhpcy5wb3NpdGlvbnNIW2ldLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICAvLyB2YXIgdWUgPSBVRS5nZXRFZGl0b3IoJ2FwcCcpO1xyXG4gICAgcmljaFRleHQub3Blbih0aGlzLm9wdGlvbnMuaWQsIHRoaXMub3B0aW9ucy5uYW1lLCB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50KVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gKGNvbnRlbnQpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICpcclxuICAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkgfHwgIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5Z29uKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG5cclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+eCueWHu+m8oOagh+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDAuOSlgKSlcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgICAgbGV0IGRpc3Bhcml0eSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBhcnJheS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpcnN0cG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBhcnJheS5wdXNoKFtmaXJzdHBvc2l0aW9uLmxuZywgZmlyc3Rwb3NpdGlvbi5sYXRdKVxyXG4gICAgICB2YXIgcG9seWdvbiA9IHR1cmYucG9seWdvbihbYXJyYXldKTtcclxuICAgICAgdmFyIGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgICAgbGV0IGNlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNlbnRlci54IC0gcG9zaXRpb25zW2ldLnhcclxuICAgICAgICBkaXNwYXJpdHkucHVzaCh7XHJcbiAgICAgICAgICB4OiBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54LFxyXG4gICAgICAgICAgeTogY2VudGVyLnkgLSBwb3NpdGlvbnNbaV0ueSxcclxuICAgICAgICAgIHo6IGNlbnRlci56IC0gcG9zaXRpb25zW2ldLnosXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCBwb3NpdGlvbjg0LmFsdF1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgcG9zMyA9IHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHBvczMpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3MzLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0W2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBuZXdwb3NpdGlvbnNcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zMyA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gocG9zMylcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3MzLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbjg0ID0gW11cclxuICAgICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3cG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChuZXdwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy5yZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbjg0KVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zSClcclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLmVudGl0eSAmJiB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDEpYClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgaWYgKCF0aGlzLnByZXZpb3VzKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFsuLi50aGlzLnByZXZpb3VzLnBvc2l0aW9uc11cclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zaXRpb244NCA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbjg0LnB1c2goX3RoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5wb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKHBvc2l0aW9uODQpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuICBnZXQgYXJlYUNoYW5nZUNhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZWFDaGFuZ2VDYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgc2V0IGFyZWFDaGFuZ2VDYWxsQmFjayhjZCkge1xyXG4gICAgdGhpcy5fYXJlYUNoYW5nZUNhbGxCYWNrID0gY2RcclxuICB9XHJcblxyXG4gIG5vZGVFZGl0KGNiID0gKCkgPT4geyB9KSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn6K+36YCJ5oup5LiA5Liq6aG254K577yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgIGxldCBvcmlnaW5hbFBvc2l0aW9uXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG1vdmVFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubG5nW3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxhdFtzZWxlY3RQb2ludC5pbmRleF0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uID8gbW92ZW1lbnQucG9zaXRpb24ueCA6IG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbiA/IG1vdmVtZW50LnBvc2l0aW9uLnkgOiBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBtb3ZlRXZlbnQobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICBsZXQgaW5kZXggPSBzZWxlY3RQb2ludC5pbmRleFxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LCBwb3NpdGlvbjg0LmFsdCksXHJcbiAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5ub2RlUG9pbnRzLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgZW50aXR5KVxyXG4gICAgICAgICAgc2VsZWN0UG9pbnQgPSBudWxsXHJcblxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gbW92ZW1lbnQucG9zaXRpb25cclxuICAgICAgICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBwaWNrID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2socG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBwaWNrLmlkXHJcbiAgICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBpY2suaWQucG9zaXRpb24uZ2V0VmFsdWUoKSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUocGljay5pZClcclxuICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgIGNiKCcnLCBbLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc10pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHJpZ2h0RXZlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICBpZiAoIW9yaWdpbmFsUG9zaXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW3NlbGVjdFBvaW50LmluZGV4XSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxuZ1tzZWxlY3RQb2ludC5pbmRleF0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtzZWxlY3RQb2ludC5pbmRleF0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sYXRbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxhdC50b0ZpeGVkKDgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBudWxsXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSB0cnVlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gZmFsc2VcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBhcnIgPSBfdGhpcy5jb21wdXRlQXNzZW1ibGUoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShhcnIpXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBhcnIgPSBfdGhpcy5jb21wdXRlQXNzZW1ibGUoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgaWYgKGFyci5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIGFyclswXSwgYXJyWzFdXVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBbLi4uYXJyXVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgZmFsc2UpXHJcblxyXG5cclxuICAgICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgICAgbGV0IHBvczg0ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uc0gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zSFtpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHBvczg0LnB1c2gocG9zaXRpb24pXHJcbiAgICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zSFswXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb2ludHMpXHJcbiAgICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbilcclxuICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpc1xyXG4gICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSwgMjAwKTtcclxuXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZShtb3ZlRXZlbnQpXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgcmlnaHRFdmVudCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGVmdEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNyZWF0ZU5vZGVQb2ludHMoKVxyXG4gICAgICB9LCAyMDApO1xyXG4gICAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGVOb2RlUG9pbnRzKCkge1xyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLl90aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCBfdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IF90aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZywgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCBoZWlnaHQpLFxyXG4gICAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgICBpbWFnZTogX3RoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBfdGhpcy5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBsZXQgZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIC8vICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgIC8vICAgICBpbmRleDogaSxcclxuICAgICAgLy8gICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLFxyXG4gICAgICAvLyAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgIC8vICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAvLyAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgIC8vICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgIC8vICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAvLyAgICAgfSxcclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyAgIG5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlTm9kZUVkaXQoKSB7XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbnVsbFxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKHYpIHtcclxuICAgIGxldCBjYXJ0ZXNpYW4gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh2LnBvc2l0aW9uLmxuZywgdi5wb3NpdGlvbi5sYXQsIHYucG9zaXRpb24uYWx0KVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICBsZXQgZGlzcGFyaXR5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIGFycmF5LnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBmaXJzdHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIGFycmF5LnB1c2goW2ZpcnN0cG9zaXRpb24ubG5nLCBmaXJzdHBvc2l0aW9uLmxhdF0pXHJcbiAgICB2YXIgcG9seWdvbiA9IHR1cmYucG9seWdvbihbYXJyYXldKTtcclxuICAgIHZhciBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICBsZXQgY2VudGVyID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoLi4uY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBkaXNwYXJpdHkucHVzaCh7XHJcbiAgICAgICAgeDogY2VudGVyLnggLSBwb3NpdGlvbnNbaV0ueCxcclxuICAgICAgICB5OiBjZW50ZXIueSAtIHBvc2l0aW9uc1tpXS55LFxyXG4gICAgICAgIHo6IGNlbnRlci56IC0gcG9zaXRpb25zW2ldLnosXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBsZXQgbmV3cG9zaXRpb25zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICB4OiBjYXJ0ZXNpYW4ueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdi5wb3NpdGlvbi5sbmcsIHYucG9zaXRpb24ubGF0LCB2LnBvc2l0aW9uLmFsdF1cclxuXHJcbiAgICBsZXQgcG9zaXRpb25zODQgPSBbXVxyXG4gICAgaWYgKG5ld3Bvc2l0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3cG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcG9zaXRpb25zODQucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KG5ld3Bvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFyciA9IHRoaXMuY29tcHV0ZUFzc2VtYmxlKHBvc2l0aW9uczg0KVxyXG4gICAgaWYgKGFyci5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShhcnIpXHJcbiAgICB9LCBmYWxzZSlcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGlmIChhcnIubGVuZ3RoID49IDMpIHtcclxuICAgICAgICByZXR1cm4gWy4uLmFyciwgYXJyWzBdLCBhcnJbMV1dXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5hcnJdXHJcbiAgICAgIH1cclxuICAgIH0sIGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY29tcHV0ZUFzc2VtYmxlKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvaW50cyk7XHJcbiAgICAvLyBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKTtcclxuICAgIGxldCBzaXRlSW5mb0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuZG9taWQpXHJcbiAgICBsZXQgc2l0ZUluZm9Qb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSlcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKChwZXJjZW50YWdlKSA9PiB7XHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8IHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICcnKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHNpdGVJbmZvUG9zaXRpb24pO1xyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g5pu05paw5Z2Q5qCHXHJcbiAgcmVuZXdQb3NpdGlvbnMocG9zaXRpb244NCwgY2QpIHtcclxuICAgIGlmICh0aGlzLl9lcnJvciB8fCAhdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcblxyXG4gICAgbGV0IGFycmF5ID0gW11cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBpZiAocG9zaXRpb244NCkge1xyXG4gICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbjg0XHJcbiAgICB9XHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgIH1cclxuICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG5cclxuICAgIGxldCBwb3NpdGlvbnNBID0gdGhpcy5jb21wdXRlQXNzZW1ibGUocG9zaXRpb25zKVxyXG4gICAgaWYgKHBvc2l0aW9uc0EubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9pbnRzID0gW1tdXVxyXG4gICAgbGV0IHBvczg0ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgcG9zODQucHVzaChwb3NpdGlvbilcclxuICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVswXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb2ludHMpXHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLnBvaW50T25GZWF0dXJlKHBvbHlnb24pXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pKSB8fCAwXHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICBpZiAoIWdyb3VuZCAmJiB0aGlzLm5vZGVQb2ludHMubGVuZ3RoID09IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHNbMF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKFxyXG4gICAgICAgICAgcG9pbnRzWzBdW2ldWzBdLFxyXG4gICAgICAgICAgcG9pbnRzWzBdW2ldWzFdLFxyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wb3NpdGlvbnNIID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpXHJcblxyXG4gICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgIHRoaXMuaGVpZ2h0ICsgaGVpZ2h0XHJcbiAgICAgIF0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uc0ggPSBwb3NpdGlvbnNBXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgIGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSwgMTAwKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiuoeeul+aKleW9semdouenr1xyXG4gICAgdGhpcy5hcmVhQnlNZXRlciA9IHRoaXMuY29tcHV0ZUFyZWEocG9zODQpXHJcbiAgICB0aGlzLmFyZWFDaGFuZ2VDYWxsQmFjayAmJiB0aGlzLmFyZWFDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICByZXR1cm4gZnJvbURlZ3JlZXNBcnJheVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXNzZW1ibGVPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTBIQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpIQTtBQUFBO0FBQUE7QUEwSEE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBekNBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXhlQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBVUE7QUFBQTtBQVBBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQUE7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQXNHQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUE2TEE7QUFDQTtBQUFBO0FBeExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBMEtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQWRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQTtBQWxCQTtBQUFBO0FBQUE7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQWtDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFuM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb3hDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/AssembleObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/AttackArrowObject/_element.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/AttackArrowObject/_element.js ***! - \****************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u52A8\\u753B\\u65F6\\u957F\\n
\\n \\n ms\\n \\n
\\n
\\n
\\n
\\n
\\n \\u52A8\\u753B\\n \\n
\\n
\\n \\u52A8\\u753B\\u91CD\\u590D\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQXR0YWNrQXJyb3dPYmplY3QvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQXR0YWNrQXJyb3dPYmplY3QvX2VsZW1lbnQuanM/ZjU3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA2MCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+5oqV5b2x6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW5wdXQtdGV4dFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cImFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlbGVjdC11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Yqo55S75pe26ZW/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgYmx1clwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjUwMFwiIG1heD1cIjk5OTk5OTlcIiBAbW9kZWw9XCJzcHJlYWRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqjnlLs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzcHJlYWRTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWKqOeUu+mHjeWkjTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cImxvb3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJhdHRhY2stYXJyb3ctb2JqZWN0LWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1tb2RlLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1tb2RlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+WuWAvOe7n+S4gOWinuWKoDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIGhlaWdodC1jb25maXJtXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBzcGF0aWFsLWluZm8tdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nu4/luqbvvIhY77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue6rOW6pu+8iFnvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6auY5bqm77yIWu+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi6Z2i6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Z2i6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui+uee6v+WuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJsaW5lV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBNkdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/AttackArrowObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/AttackArrowObject/index.js": -/*!*************************************************!*\ - !*** ./src/Obj/Base/AttackArrowObject/index.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/AttackArrowObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 箭头\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import EditParticle from \"../../ModelController/EditParticle\";\nvar AttackArrowObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 箭头面\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色\r\n * @param options.height {number} 高度\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.areaUnit='平方米' {string} 面积单位\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.spreadState=false {boolean} 动画\r\n * @param options.loop=false {loop} 动画重复\r\n * @param options.spreadTime=3000 {number} 动画持续时长(毫秒)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function AttackArrowObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, AttackArrowObject);\n _this2 = _callSuper(this, AttackArrowObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"#ff000080\";\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.positions = options.positions || [];\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n _this2.entity;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.operate = {};\n _this2._elms = {};\n _this2.nodePoints = [];\n _this2.Dialog = _Dialog;\n _this2.options.loop = options.loop || false;\n _this2.options.spreadState = options.spreadState || false;\n _this2.spreadTime = options.spreadTime;\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n if (!_this2.options.positions || _this2.options.positions.length < 3) {\n _this2._error = '箭头面最少需要三个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n if (!_this2.options.height && _this2.options.height !== 0) {\n var height = _this2.options.positions[0].alt;\n for (var i = 1; i < _this2.options.positions.length; i++) {\n if (height < _this2.options.positions[i].alt) {\n height = _this2.options.positions[i].alt;\n }\n }\n _this2.options.height = height;\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n AttackArrowObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(AttackArrowObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(AttackArrowObject, [{\n key: \"type\",\n get: function get() {\n return 'AttackArrowObject';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this4.options.heightMode = v || v == 0 ? v : 2;\n _this4.positionEditing = false;\n if (!_this4.entity) {\n return;\n }\n var heightModeName = '';\n _this4.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this4.renewPositions();\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positionsH), [_this4.positionsH[0], _this4.positionsH[1]]);\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positionsH);\n switch (_this4.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this4.previous = null;\n _this4.label.ground = ground;\n _this4.entity.polyline.clampToGround = ground;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4._elms.heightMode && (_this4._elms.heightMode.value = heightModeName);\n _this4._elms.heightModeObject && _this4._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this5 = this;\n if (!v || isNaN(Number(v))) {\n this.options.height = 0;\n } else {\n this.options.height = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this5.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this5.positionsH);\n _this5.entity.polygon.perPositionHeight = !ground ? true : false;\n _this5.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this5.positionsH), [_this5.positionsH[0], _this5.positionsH[1]]);\n _this5.entity.polyline.clampToGround = !ground ? false : true;\n _this5.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this5.options.height;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineColor && this._elms.lineColor.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this11 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, heightBoxElm, heightElm, heightConfirmElm, heightModeData, heightModeObject, heightModeDataLegpElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 3:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n }\n if (!state) {\n _context.next = 62;\n break;\n }\n createSpatialInfoTableContent = function createSpatialInfoTableContent() {\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n tBodyElm.innerHTML = '';\n _this._elms.lng = [];\n _this._elms.lngInput = [];\n _this._elms.lat = [];\n _this._elms.latInput = [];\n _this._elms.alt = [];\n _this._elms.altInput = [];\n var _loop = function _loop(i) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
\".concat(i + 1, \"
\\n
\\n
\\n
\\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this.options.positions[i].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this.options.positions[i].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this.height.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this.height.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AttackArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this.options.positions[i].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n _this.height = _this.height;\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AttackArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this.options.positions[i].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n _this.height = _this.height;\n });\n altBox.addEventListener('dblclick', function () {\n if (_this.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this.height.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n AttackArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this.height.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this.height = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = Number(_this.height.toFixed(2));\n });\n _this._elms.lng.push(lng);\n _this._elms.lngInput.push(lngInput);\n _this._elms.lat.push(lat);\n _this._elms.latInput.push(latInput);\n _this._elms.alt.push(alt);\n _this._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var i = 0; i < _this.options.positions.length; i++) {\n _loop(i);\n }\n };\n _context.next = 10;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '箭头属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this11.name = _this11.name.trim();\n if (!_this11.name) {\n _this11.name = '未命名对象';\n }\n _this11.options.label.position = {\n lng: _this11.label.position[0],\n lat: _this11.label.position[1],\n alt: _this11.label.position[2]\n };\n _this11.originalOptions = _this11.deepCopyObj(_this11.options);\n _this11._DialogObject.close();\n _this11.Dialog.confirmCallBack && _this11.Dialog.confirmCallBack(_this11.originalOptions);\n },\n resetCallBack: function resetCallBack() {\n _this11.reset();\n _this11.Dialog.resetCallBack && _this11.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this11.Dialog.removeCallBack && _this11.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n var spreadState = _this11.options.spreadState;\n _this11.positionEditing = false;\n setTimeout(function () {\n _this11.options.spreadState = spreadState;\n _this11.reset();\n }, 10);\n _this11.Dialog.closeCallBack && _this11.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this11.options.show = show;\n _this11.originalOptions.show = show;\n _this11.show = show;\n _this11.Dialog.showCallBack && _this11.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this11.positionEditing = !_this11.positionEditing;\n },\n // 二次编辑回调\n secondaryEditCallBack: function secondaryEditCallBack() {\n AttackArrowObject.nodeEdit(_this11, function () {\n createSpatialInfoTableContent();\n });\n }\n });\n case 10:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' attackArrow';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('attack-arrow-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n AttackArrowObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (this.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context.next = 59;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = this._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n i = 0;\n case 43:\n if (!(i < heightModeData.length)) {\n _context.next = 51;\n break;\n }\n if (!(heightModeData[i].key == this.heightMode)) {\n _context.next = 48;\n break;\n }\n heightModeDataLegpElm.value = heightModeData[i].value;\n heightModeObject.legp_searchActive(heightModeData[i].value);\n return _context.abrupt(\"break\", 51);\n case 48:\n i++;\n _context.next = 43;\n break;\n case 51:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i = 0; _i < heightModeData.length; _i++) {\n if (heightModeData[_i].value === heightModeDataLegpElm.value) {\n _this11.heightMode = heightModeData[_i].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this11.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n this._elms.height = heightElm;\n this._elms.heightBox = heightBoxElm;\n this._elms.heightMode = heightModeDataLegpElm;\n this._elms.heightConfirm = heightConfirmElm;\n this._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this11.operate.positionEditing) {\n _this11.positionEditing = false;\n _this11.height = _this11.height + Number(heightElm.value);\n } else {\n AttackArrowObject.closeNodeEdit(_this11);\n _this11.heightMode = _this11.heightMode;\n setTimeout(function () {\n _this11.height = _this11.height + Number(heightElm.value);\n }, 100);\n }\n });\n case 59:\n setTimeout(function () {\n _this11.attributeLink = _this11.options.attribute.link.content;\n _this11.attributeVr = _this11.options.attribute.vr.content;\n _this11.cameraSelect && _this11.cameraSelect();\n _this11.goodsSelect && _this11.goodsSelect();\n var tagData = _this11.attributeSelect;\n var attributeElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i2 = 0; _i2 < tagData.length; _i2++) {\n if (tagData[_i2].key === _this11.options.attributeType) {\n attributeSelectElm.value = tagData[_i2].value;\n legpObject.legp_searchActive(tagData[_i2].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this11.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this11.options['area-unit'];\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this11.areaUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this11.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this11.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this11._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 63;\n break;\n case 62:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 63:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this12 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineColor = this.originalOptions.line.color;\n this.lineWidth = this.originalOptions.line.width;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n for (var i = 0; i < this.options.positions.length; i++) {\n if (this._elms.lng && this._elms.lng[i]) {\n this._elms.lng[i].innerHTML = this.options.positions[i].lng.toFixed(8);\n }\n if (this._elms.lat && this._elms.lat[i]) {\n this._elms.lat[i].innerHTML = this.options.positions[i].lat.toFixed(8);\n }\n if (this._elms.alt && this._elms.alt[i]) {\n this._elms.alt[i].innerHTML = Number(this.options.height.toFixed(2));\n }\n }\n this.heightMode = this.heightMode;\n for (var _i8 = 0; _i8 < this.nodePoints.length; _i8++) {\n this.sdk.viewer.entities.remove(this.nodePoints[_i8]);\n }\n this.previous = null;\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n var spreadState = this.options.spreadState;\n this.removeAnimate();\n setTimeout(function () {\n _this12.loop = _this12.options.loop;\n _this12.spreadState = spreadState;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(_this12.sdk, _this12.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(_this12.sdk, _this12.options.id);\n }, 200);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.removeAnimate();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.entity && this.sdk.viewer.entities.remove(this.entity);\n this.label && this.label.remove();\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 9;\n return this.sdk.removeIncetance(this.options.id);\n case 9:\n _context2.next = 11;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n ground,\n i,\n height,\n a,\n _i9,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 51;\n break;\n case 25:\n positionArray = [];\n _context3.t0 = this.heightMode;\n _context3.next = _context3.t0 === 0 ? 29 : _context3.t0 === '0' ? 29 : _context3.t0 === 1 ? 31 : _context3.t0 === '1' ? 31 : _context3.t0 === 2 ? 33 : _context3.t0 === '2' ? 33 : 35;\n break;\n case 29:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 31:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 33:\n ground = true;\n return _context3.abrupt(\"break\", 35);\n case 35:\n if (!ground) {\n _context3.next = 48;\n break;\n }\n i = 0;\n case 37:\n if (!(i < this.options.positions.length)) {\n _context3.next = 46;\n break;\n }\n _context3.next = 40;\n return this.getClampToHeight(this.options.positions[i]);\n case 40:\n height = _context3.sent;\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 43:\n i++;\n _context3.next = 37;\n break;\n case 46:\n _context3.next = 49;\n break;\n case 48:\n if (this.positionsH) {\n for (_i9 = 0; _i9 < this.positionsH.length; _i9++) {\n positionArray.push(this.positionsH[_i9].x, this.positionsH[_i9].y, this.positionsH[_i9].z);\n }\n }\n case 49:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 51:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n )\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this13 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.removeAnimate();\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n if (status === true) {\n var _Cesium$Cartesian;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var array = [];\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i10 = 0; _i10 < positions.length; _i10++) {\n center.x - positions[_i10].x;\n disparity.push({\n x: center.x - positions[_i10].x,\n y: center.y - positions[_i10].y,\n z: center.z - positions[_i10].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n newpositions = [];\n for (var _i11 = 0; _i11 < disparity.length; _i11++) {\n newpositions.push({\n x: cartesian.x - disparity[_i11].x,\n y: cartesian.y - disparity[_i11].y,\n z: cartesian.z - disparity[_i11].z\n });\n }\n // this.label.position = [position84.lng, position84.lat, position84.alt]\n _this13.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this13.event.mouse_move(function () {});\n _this13.event.mouse_left(function () {});\n _this13.event.mouse_right(function () {});\n _this13.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i12 = 0; _i12 < disparity.length; _i12++) {\n var pos3 = {\n x: cartesian.x - disparity[_i12].x,\n y: cartesian.y - disparity[_i12].y,\n z: cartesian.z - disparity[_i12].z\n };\n newpositions.push(pos3);\n _this13.options.positions[_i12] = _this13.cartesian3Towgs84(pos3, _this13.sdk.viewer);\n if (_this13._elms.lng && _this13._elms.lng[_i12]) {\n _this13._elms.lng[_i12].innerHTML = _this13.options.positions[_i12].lng.toFixed(8);\n }\n if (_this13._elms.lat && _this13._elms.lat[_i12]) {\n _this13._elms.lat[_i12].innerHTML = _this13.options.positions[_i12].lat.toFixed(8);\n }\n }\n _this13.positions = newpositions;\n _this13.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.positions)\n };\n _this13.positionEditing = false;\n if (_this13._positionEditingCallback) {\n _this13._positionEditingCallback();\n _this13._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this13.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this13.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this13.positionEditing = false;\n } else {\n _this13.event.mouse_move(function () {});\n _this13.event.mouse_left(function () {});\n _this13.event.mouse_right(function () {});\n _this13.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i13 = 0; _i13 < disparity.length; _i13++) {\n var pos3 = {\n x: cartesian.x - disparity[_i13].x,\n y: cartesian.y - disparity[_i13].y,\n z: cartesian.z - disparity[_i13].z\n };\n newpositions.push(pos3);\n _this13.options.positions[_i13] = _this13.cartesian3Towgs84(pos3, _this13.sdk.viewer);\n if (_this13._elms.lng && _this13._elms.lng[_i13]) {\n _this13._elms.lng[_i13].innerHTML = _this13.options.positions[_i13].lng.toFixed(8);\n }\n if (_this13._elms.lat && _this13._elms.lat[_i13]) {\n _this13._elms.lat[_i13].innerHTML = _this13.options.positions[_i13].lat.toFixed(8);\n }\n }\n _this13.positions = newpositions;\n _this13.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.positions)\n };\n _this13.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var position84 = [];\n if (newpositions.length > 0) {\n for (var _i14 = 0; _i14 < newpositions.length; _i14++) {\n position84.push(_this.cartesian3Towgs84(newpositions[_i14], _this.sdk.viewer));\n }\n } else {\n for (var _i15 = 0; _i15 < positions.length; _i15++) {\n position84.push(_this.cartesian3Towgs84(positions[_i15], _this.sdk.viewer));\n }\n }\n _this.renewPositions(position84);\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n if (!this.previous) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n } else {\n this.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.previous.positions);\n }\n var position84 = [];\n for (var _i16 = 0; _i16 < this.positions.length; _i16++) {\n position84.push(_this.cartesian3Towgs84(this.positions[_i16], _this.sdk.viewer));\n }\n _this.renewPositions(position84);\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this14 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n this.positionEditing = false;\n setTimeout(function () {\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var objectsToExclude, _i17, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.sdk.viewer.entities.values);\n _i17 = 0;\n case 2:\n if (!(_i17 < _this15.options.positions.length)) {\n _context4.next = 11;\n break;\n }\n _context4.next = 5;\n return _this15.getClampToHeight(_this15.options.positions[_i17], objectsToExclude);\n case 5:\n height = _context4.sent;\n entity = _this15.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i17,\n position: Cesium.Cartesian3.fromDegrees(_this15.options.positions[_i17].lng, _this15.options.positions[_i17].lat, height),\n billboard: {\n image: _this15.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this15.nodePoints.push(entity);\n case 8:\n _i17++;\n _context4.next = 2;\n break;\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints() {\n return _ref.apply(this, arguments);\n };\n }(); // for (let i = 0; i < this.options.positions.length; i++) {\n // let entity = this.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat),\n // billboard: {\n // image: this.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // },\n // })\n // nodePoints.push(entity)\n // }\n _this14.removeAnimate();\n YJ.Measure.SetMeasureStatus(true);\n var _this15 = _this14;\n _this14.event && _this14.event.destroy();\n _this14.tip && _this14.tip.destroy();\n _this14.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', _this14.sdk);\n _this14.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this14.sdk);\n _this14.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var moveEvent = function moveEvent(movement, cartesian) {\n if (selectPoint) {\n _this14.options.positions[selectPoint.index] = _this14.cartesian3Towgs84(cartesian, _this14.sdk.viewer);\n _this14.renewPositions();\n }\n _this14.tip.setPosition(cartesian, movement.position ? movement.position.x : movement.endPosition.x, movement.position ? movement.position.y : movement.endPosition.y);\n };\n var leftEvent = function leftEvent(movement, cartesian) {\n moveEvent(movement, cartesian);\n if (selectPoint) {\n _this14.options.positions[selectPoint.index] = _this14.cartesian3Towgs84(cartesian, _this14.sdk.viewer);\n var index = selectPoint.index;\n if (selectPoint.index === _this14.options.positions.length - 1) {\n index = index + 1;\n }\n var entity = _this14.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: index,\n position: Cesium.Cartesian3.fromDegrees(_this14.options.positions[selectPoint.index].lng, _this14.options.positions[selectPoint.index].lat, _this14.options.positions[selectPoint.index].alt),\n billboard: {\n image: _this14.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n selectPoint = entity;\n originalPosition = _this14.options.positions[selectPoint.index];\n _this14.nodePoints.splice(selectPoint.index, 0, entity);\n if (index < _this14.options.positions.length) {\n selectPoint = null;\n _this14.tip.set_text('请选择一个顶点,右键取消');\n } else {\n _this14.options.positions.splice(selectPoint.index, 0, _this14.options.positions[selectPoint.index]);\n _this14.options.positions[selectPoint.index] = _this14.cartesian3Towgs84(cartesian, _this14.sdk.viewer);\n }\n _this14.renewPositions();\n cb('', _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this14.options.positions));\n } else {\n var pick = _this14.sdk.viewer.scene.pick(movement.position || movement.endPosition);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n originalPosition = _this14.cartesian3Towgs84(pick.id.position.getValue(), _this14.sdk.viewer);\n _this14.nodePoints.splice(pick.id.index, 1);\n _this14.sdk.viewer.entities.remove(pick.id);\n _this14.tip.set_text('左键确认,右键结束,CTRL+右键撤销');\n }\n }\n };\n var rightEvent = function rightEvent(movement, cartesian) {\n _this14.event.mouse_move(function () {});\n _this14.event.mouse_left(function () {});\n _this14.event.mouse_right(function () {});\n _this14.event.gesture_pinck_start(function () {});\n if (selectPoint) {\n if (!originalPosition) {\n _this14.options.positions.pop();\n } else {\n _this14.options.positions[selectPoint.index] = originalPosition;\n if (_this14.options.positions.length > 3 && selectPoint.index === _this14.options.positions.length - 1) {\n _this14.options.positions.splice(selectPoint.index + 1, 1);\n }\n }\n if (_this14._elms.lng && _this14._elms.lng[selectPoint.index]) {\n _this14._elms.lng[selectPoint.index].innerHTML = _this14.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (_this14._elms.lat && _this14._elms.lat[selectPoint.index]) {\n _this14._elms.lat[selectPoint.index].innerHTML = _this14.options.positions[selectPoint.index].lat.toFixed(8);\n }\n }\n _this14.heightMode = _this14.heightMode;\n _this14.previous = null;\n };\n _this14.entity.polyline.clampToGround = true;\n _this14.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n _this14.entity.polygon.perPositionHeight = false;\n _this14.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this15.positionsH);\n }, false);\n _this14.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.positionsH), [_this15.positionsH[0], _this15.positionsH[1]]);\n }, false);\n var points = [[]];\n var pos84 = [];\n for (var i = 0; i < _this14.positionsH.length; i++) {\n var _position = _this14.cartesian3Towgs84(_this14.positionsH[i], _this14.sdk.viewer);\n pos84.push(_position);\n points[0].push([_position.lng, _position.lat]);\n }\n var position = _this14.cartesian3Towgs84(_this14.positionsH[0], _this14.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this14.sdk.viewer.entities.values);\n setTimeout(function () {\n _this14.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this14.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }, 200);\n setTimeout(function () {\n _this14.event.mouse_left(leftEvent);\n _this14.event.mouse_right(rightEvent);\n _this14.event.mouse_move(moveEvent);\n _this14.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n _this14.options.positions.pop();\n _this14.sdk.viewer.entities.remove(_this14.nodePoints[_this14.nodePoints.length - 1]);\n _this14.nodePoints.pop();\n if (!selectPoint.index) {\n // selectPoint = null\n } else if (selectPoint.index === _this14.options.positions.length) {\n if (_this14.nodePoints[selectPoint.index - 1]) {\n selectPoint = _this14.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = selectPoint.index - 1;\n }\n }\n _this14.renewPositions();\n }\n });\n _this14.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this14.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n createNodePoints();\n }, 200);\n }\n }, 0);\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n var _Cesium$Cartesian2;\n var cartesian = Cesium.Cartesian3.fromDegrees(v.position.lng, v.position.lat, v.position.alt);\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var array = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i18 = 0; _i18 < positions.length; _i18++) {\n disparity.push({\n x: center.x - positions[_i18].x,\n y: center.y - positions[_i18].y,\n z: center.z - positions[_i18].z\n });\n }\n var newpositions = [];\n for (var _i19 = 0; _i19 < disparity.length; _i19++) {\n newpositions.push({\n x: cartesian.x - disparity[_i19].x,\n y: cartesian.y - disparity[_i19].y,\n z: cartesian.z - disparity[_i19].z\n });\n }\n this.label.position = [v.position.lng, v.position.lat, v.position.alt];\n var positions84 = [];\n if (newpositions.length > 0) {\n for (var _i20 = 0; _i20 < newpositions.length; _i20++) {\n positions84.push(this.cartesian3Towgs84(newpositions[_i20], this.sdk.viewer));\n }\n }\n var arr = this.computeAttackArrow(positions84);\n if (arr.length == 0) {\n return;\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this16 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var positions = this.computeAttackArrow(this.options.positions);\n if (positions.length == 0) {\n return;\n }\n var points = [[]];\n for (var i = 0; i < positions.length; i++) {\n var _position2 = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n points[0].push([_position2.lng, _position2.lat]);\n }\n var position = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this16.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }, {\n key: \"spreadTime\",\n get: function get() {\n return this.options.spreadTime;\n },\n set: function set(v) {\n var spreadTime = Number(v);\n if (isNaN(spreadTime)) {\n spreadTime = 3000;\n } else if (spreadTime < 500) {\n spreadTime = 500;\n } else if (spreadTime > 9999999) {\n spreadTime = 9999999;\n }\n this.options.spreadTime = spreadTime;\n if (this.spreadState) {\n this.setSpreadProgressByTime();\n }\n this._elms.spreadTime && this._elms.spreadTime.forEach(function (item) {\n item.value = spreadTime;\n });\n }\n }, {\n key: \"loop\",\n get: function get() {\n return this.options.loop;\n },\n set: function set(v) {\n this.options.loop = v;\n if (this.TweenAnimate) {\n if (v) {\n this.TweenAnimate.repeat(Infinity);\n } else {\n this.TweenAnimate.repeat();\n }\n }\n this._elms.loop && this._elms.loop.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"spreadState\",\n get: function get() {\n return this.options.spreadState;\n },\n set: function set(v) {\n this.options.spreadState = v;\n if (this.TweenAnimate) {\n if (v) {\n this.lineEdit = false;\n this.setSpreadProgressByTime(this.TweenAnimate._object.distance / this.TweenAnimate._valuesEnd.distance * this.spreadTime);\n } else {\n this.TweenAnimate.pause();\n }\n } else {\n if (v) {\n this.setSpreadProgressByTime();\n }\n }\n this._elms.spreadState && this._elms.spreadState.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"setSpreadProgressByTime\",\n value: function setSpreadProgressByTime() {\n var _this17 = this;\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (!this.entity) {\n return;\n }\n var that = this;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n var AttackArrowArr = that.computeAttackArrow(that.options.positions);\n var arr;\n var lineArr;\n // if (arr.length >= 3) {\n // lineArr = [...arr, arr[0], arr[1]]\n // }\n // else {\n // lineArr = [...arr]\n // }\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n }\n var _getSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"getSdk\"])(),\n sdkP = _getSdk.sdkP,\n sdkD = _getSdk.sdkD;\n var thatP;\n if (sdkD && sdkP) {\n if (this.sdk === sdkD) {\n thatP = sdkP.entityMap.get(this.options.id);\n if (thatP && thatP.entity && thatP.entity.polygon && thatP.positionsH) {\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(thatP.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(thatP.positionsH), [thatP.positionsH[0], thatP.positionsH[1]]);\n }, false);\n }\n return;\n }\n }\n\n // this.entity.polygon.hierarchy = arr\n // this.entity.polyline.positions = lineArr\n\n var linePos84 = [[(that.options.positions[0].lng + that.options.positions[1].lng) / 2, (that.options.positions[0].lat + that.options.positions[1].lat) / 2]];\n for (var _i21 = 2; _i21 < that.options.positions.length; _i21++) {\n linePos84.push([that.options.positions[_i21].lng, that.options.positions[_i21].lat]);\n }\n var line = turf.lineString(linePos84);\n var distanceArray = [];\n for (var _i22 = 1; _i22 < linePos84.length; _i22++) {\n var from = turf.point(linePos84[_i22]);\n var to = turf.point(linePos84[_i22 - 1]);\n var d = turf.distance(from, to, {\n units: 'kilometers'\n });\n var od = distanceArray[distanceArray.length - 1] || 0;\n distanceArray.push(od + d);\n }\n var distance = turf.length(line, {\n units: 'kilometers'\n });\n var timeRatio = time / this.spreadTime;\n var m = 0;\n this.TweenAnimate = new TWEEN.Tween({\n distance: distance * timeRatio\n }).to({\n distance: distance\n }, this.spreadTime - time).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop ? Infinity : 0).onRepeat(function () {\n if (time) {\n _this17.setSpreadProgressByTime();\n } else {}\n }).onUpdate(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!(_this17.TweenAnimate._duration == Infinity)) {\n _context5.next = 2;\n break;\n }\n return _context5.abrupt(\"return\");\n case 2:\n m++;\n if (_this17.sdk.viewer) {\n _context5.next = 6;\n break;\n }\n _this17.removeAnimate();\n return _context5.abrupt(\"return\");\n case 6:\n setSpread(r);\n case 7:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return function (_x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n }()).onStart(function () {\n _this17.options.spreadState = true;\n _this17._elms.spreadState && _this17._elms.spreadState.forEach(function (item) {\n item.checked = true;\n });\n }).onComplete(function (d) {\n _this17.removeAnimate();\n });\n if (this.spreadState) {\n this.TweenAnimate.start();\n } else {\n setSpread({\n distance: distance * timeRatio\n });\n }\n function setSpread(_x4) {\n return _setSpread.apply(this, arguments);\n }\n function _setSpread() {\n _setSpread = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6(v) {\n var index, _i23, positions, _i24, sliced, coordinates;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (that.show) {\n _context6.next = 2;\n break;\n }\n return _context6.abrupt(\"return\");\n case 2:\n index = 2;\n _i23 = distanceArray.length - 2;\n case 4:\n if (!(_i23 >= 0)) {\n _context6.next = 12;\n break;\n }\n if (!(v.distance >= distanceArray[_i23])) {\n _context6.next = 9;\n break;\n }\n index = index + _i23 + 1;\n if (index > that.options.positions.length - 1) {\n index = that.options.positions.length - 1;\n }\n return _context6.abrupt(\"break\", 12);\n case 9:\n _i23--;\n _context6.next = 4;\n break;\n case 12:\n positions = [];\n for (_i24 = 0; _i24 < index; _i24++) {\n positions[_i24] = _objectSpread({}, that.options.positions[_i24]);\n }\n if (v.distance) {\n _context6.next = 18;\n break;\n }\n positions[index] = {\n lng: positions[1].lng,\n lat: positions[1].lat\n };\n _context6.next = 25;\n break;\n case 18:\n _context6.next = 20;\n return turf.lineSliceAlong(line, 0, v.distance, {\n units: 'kilometers'\n });\n case 20:\n sliced = _context6.sent;\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]);\n if (!positions[index]) {\n positions[index] = {};\n }\n positions[index].lng = coordinates[0];\n positions[index].lat = coordinates[1];\n case 25:\n // console.log('positions', positions)\n that.renewPositions(positions);\n case 26:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return _setSpread.apply(this, arguments);\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(that.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]);\n }, false);\n }\n\n // 移除动画\n }, {\n key: \"removeAnimate\",\n value: function removeAnimate() {\n this.spreadState = false;\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positionsH);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positionsH), [this.positionsH[0], this.positionsH[1]]);\n }\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(position84) {\n var _this18 = this;\n if (this._error || !this.sdk.viewer) {\n return;\n }\n var ground = false;\n var array = [];\n var positions = this.options.positions;\n if (position84) {\n positions = position84;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = this.computeAttackArrow(positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n var pos84 = [];\n for (var _i25 = 0; _i25 < positionsA.length; _i25++) {\n var _position3 = this.cartesian3Towgs84(positionsA[_i25], this.sdk.viewer);\n pos84.push(_position3);\n points[0].push([_position3.lng, _position3.lat]);\n }\n var position = this.cartesian3Towgs84(positionsA[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var height = 0;\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray2 = [];\n if (!ground && this.nodePoints.length == 0) {\n for (var _i26 = 0; _i26 < points[0].length; _i26++) {\n fromDegreesArray2.push(points[0][_i26][0], points[0][_i26][1], this.height + height);\n }\n this.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.height + height]);\n } else {\n this.positionsH = positionsA;\n setTimeout(function () {\n if (!_this18.sdk.viewer) {\n return;\n }\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this18.sdk.viewer.entities.values);\n _this18.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this18.label && (_this18.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n if (!this.spreadState) {\n this.areaByMeter = this.computeArea(pos84);\n this.areaChangeCallBack && this.areaChangeCallBack();\n }\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = that.computeAttackArrow(that.options.positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n for (var _i27 = 0; _i27 < positionsA.length; _i27++) {\n var _position4 = that.cartesian3Towgs84(positionsA[_i27], that.sdk.viewer);\n points[0].push([_position4.lng, _position4.lat]);\n }\n var position = that.cartesian3Towgs84(positionsA[0], that.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n\n // if (!that.options.label.position) {\n // that.options.label.position = { lng: centroid.geometry.coordinates[0], lat: centroid.geometry.coordinates[1], alt: that.height + height }\n // }\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: that.height + height\n };\n // that.options.label.ground = ground\n\n var fromDegreesArray2 = [];\n for (var _i28 = 0; _i28 < points[0].length; _i28++) {\n fromDegreesArray2.push(points[0][_i28][0], points[0][_i28][1], that.height + height);\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n that.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n that.entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n id: that.options.id,\n polygon: {\n hierarchy: !ground ? new Cesium.PolygonHierarchy(that.positionsH) : new Cesium.PolygonHierarchy(positionsA),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n AttackArrowObject.createLabel(that);\n var pos84 = [];\n for (var _i29 = 0; _i29 < positionsA.length; _i29++) {\n pos84.push(that.cartesian3Towgs84(positionsA[_i29], that.sdk.viewer));\n }\n that.areaByMeter = that.computeArea(pos84);\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n that.spreadState = that.options.spreadState;\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee7(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n // ground: that.options.label.ground,\n });\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n function createLabel(_x5) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop2 = function _loop2() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop3 = function _loop3() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop3();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n if (elements[i].className.indexOf('blur') !== -1) {\n ventType = 'blur';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop2()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (AttackArrowObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQXR0YWNrQXJyb3dPYmplY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQXR0YWNrQXJyb3dPYmplY3QvaW5kZXguanM/N2EyMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog566t5aS0XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgeyBodG1sLCBjc3MgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZGF0YWxpc3QnO1xyXG5pbXBvcnQgeyBnZXRGb250TGlzdCwgZ2V0Rm9udEZhbWlseU5hbWUgfSBmcm9tICcuLi8uLi9FbGVtZW50L2ZvbnRTZWxlY3QnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBnZXRTZGsgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbi8vIGltcG9ydCBFZGl0UGFydGljbGUgZnJvbSBcIi4uLy4uL01vZGVsQ29udHJvbGxlci9FZGl0UGFydGljbGVcIjtcclxuXHJcbmNsYXNzIEF0dGFja0Fycm93T2JqZWN0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDnrq3lpLTpnaJcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPSdyZ2JhKDI1NSwgMCwgMCwgMC41KScge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodE1vZGU9MntudW1iZXJ9IOmrmOW6puaooeW8j++8iDDvvJrmtbfmi5Tpq5jluqbvvJsx77ya55u45a+55Zyw6KGo77ybMu+8muS+nemZhOaooeW8j++8iVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmFyZWFVbml0PSflubPmlrnnsbMnIHtzdHJpbmd9IOmdouenr+WNleS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUge29iamVjdH0g6L655qGGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS53aWR0aD0yIHtzdHJpbmd9IOi+ueahhuWuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUuY29sb3I9XCJyZ2JhKDE1NSwgMTU1LCAxMjQsIDAuODkpXCIge3N0cmluZ30g6L655qGG6aKc6ImyXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zcHJlYWRTdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g5Yqo55S7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubG9vcD1mYWxzZSB7bG9vcH0g5Yqo55S76YeN5aSNXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3ByZWFkVGltZT0zMDAwIHtudW1iZXJ9IOWKqOeUu+aMgee7reaXtumVvyjmr6vnp5IpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5qCH562+5a+56LGhXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwudGV4dCB7c3RyaW5nfSDmoIfnrb7mlofmnKxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IHtvYmplY3R9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+acquWRveWQjeWvueixoSdcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgXCIjZmYwMDAwODBcIlxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUgPSBvcHRpb25zLmxpbmUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gKCh0aGlzLm9wdGlvbnMubGluZS53aWR0aCB8fCB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9PT0gMCkgPyB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA6IDMpXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHRoaXMub3B0aW9ucy5saW5lLmNvbG9yIHx8ICdyZ2JhKDI1NSwgMCwgMCwgMSknXHJcbiAgICB0aGlzLmVudGl0eVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMub3B0aW9ucy5sb29wID0gb3B0aW9ucy5sb29wIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSBvcHRpb25zLnNwcmVhZFN0YXRlIHx8IGZhbHNlXHJcbiAgICB0aGlzLnNwcmVhZFRpbWUgPSBvcHRpb25zLnNwcmVhZFRpbWVcclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kc1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG5cclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wb3NpdGlvbnMgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yID0gJ+eureWktOmdouacgOWwkemcgOimgeS4ieS4quWdkOagh++8gSdcclxuICAgICAgY29uc29sZS53YXJuKHRoaXMuX2Vycm9yKVxyXG4gICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLl9lcnJvcixcclxuICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVpZ2h0ICYmIHRoaXMub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHRcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChoZWlnaHQgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gaGVpZ2h0XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgICAgQXR0YWNrQXJyb3dPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQXR0YWNrQXJyb3dPYmplY3QnXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlnb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA/IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlIDogMFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0TW9kZSh2KSB7XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IFtdXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVOYW1lID0gJydcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnNILFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFswXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hcclxuICAgICAgKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5rW35ouU6auY5bqmJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfnm7jlr7nlnLDooagnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5L6d6ZmE5qih5Z6LJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wcmV2aW91cyA9IG51bGxcclxuICAgICAgdGhpcy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQyxcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZS52YWx1ZSA9IGhlaWdodE1vZGVOYW1lKVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZVxyXG4gICAgICApKVxyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIGlmICghdiB8fCBpc05hTihOdW1iZXIodikpKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSAwXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgyKSlcclxuICAgIH1cclxuICAgIGxldCBncm91bmRcclxuICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICBncm91bmQgPSB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhpcy5wb3NpdGlvbnNIKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnNILFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFswXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5fZWxtcy5hbHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUuY29sb3JcclxuICB9XHJcbiAgc2V0IGxpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHYgfHwgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJ1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWxpbmUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmxpbmUuY29sb3IpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5saW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmxpbmUuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwwLDAsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yW2ldID0gbGluZUNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgfVxyXG4gIHNldCBsaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHYgfHwgdiA9PT0gMCkgPyB2IDogMylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMuX2VsbXMubGluZUNvbG9yICYmIHRoaXMuX2VsbXMubGluZUNvbG9yLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgIH1cclxuICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgbGV0IHBvc2l0aW9uc0EgPSB0aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgaWYgKHBvc2l0aW9uc0EubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbaV0sIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVswXSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvaW50cyk7XHJcbiAgICAvLyBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKTtcclxuXHJcblxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgbGV0IGhlaWdodCA9IDBcclxuXHJcbiAgICBzd2l0Y2ggKHRoYXQub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGhlaWdodCA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pKSB8fCAwXHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgYWx0OiB0aGF0LmhlaWdodCArIGhlaWdodCB9XHJcbiAgICAvLyB9XHJcbiAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sIGFsdDogdGhhdC5oZWlnaHQgKyBoZWlnaHQgfVxyXG4gICAgLy8gdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG5cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50c1swXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKFxyXG4gICAgICAgIHBvaW50c1swXVtpXVswXSxcclxuICAgICAgICBwb2ludHNbMF1baV1bMV0sXHJcbiAgICAgICAgdGhhdC5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoYXQuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21Db2xvck1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmNvbG9yXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5wb3NpdGlvbnNIID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpXHJcblxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHBvbHlnb246IHtcclxuICAgICAgICBoaWVyYXJjaHk6ICFncm91bmQgPyBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnNIKSA6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb3NpdGlvbnNBKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogIWdyb3VuZCA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBtYXRlcmlhbDogbWF0ZXJpYWwsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhhdC5wb3NpdGlvbnNILCB0aGF0LnBvc2l0aW9uc0hbMF0sIHRoYXQucG9zaXRpb25zSFsxXV0sXHJcbiAgICAgICAgd2lkdGg6IHRoYXQub3B0aW9ucy5saW5lLndpZHRoLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5saW5lLmNvbG9yKSxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIGFyY1R5cGU6ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhhdC5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICBBdHRhY2tBcnJvd09iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG5cclxuICAgIGxldCBwb3M4NCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9zODQucHVzaCh0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbaV0sIHRoYXQuc2RrLnZpZXdlcikpXHJcbiAgICB9XHJcbiAgICB0aGF0LmFyZWFCeU1ldGVyID0gdGhhdC5jb21wdXRlQXJlYShwb3M4NCk7XHJcbiAgICB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjayAmJiB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcblxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5zcHJlYWRTdGF0ZSA9IHRoYXQub3B0aW9ucy5zcHJlYWRTdGF0ZVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIGNyZWF0ZUxhYmVsKHRoYXQpIHtcclxuICAgIC8vIOagh+etvlxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCwgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdF0sXHJcbiAgICAgIHRleHQ6IHRoYXQub3B0aW9ucy5uYW1lLFxyXG4gICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSxcclxuICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgcGl4ZWxPZmZzZXQ6IHRoYXQub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICBsaW5lQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGF0Lm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICBuZWFyOiB0aGF0Lm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMubGFiZWwuZmFyLFxyXG4gICAgICAvLyBncm91bmQ6IHRoYXQub3B0aW9ucy5sYWJlbC5ncm91bmQsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgZnVuY3Rpb24gY3JlYXRlU3BhdGlhbEluZm9UYWJsZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgbGV0IHRhYmxlRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzcGF0aWFsLWluZm8tdGFibGUnKVswXVxyXG4gICAgICAgIGxldCB0Qm9keUVsbSA9IHRhYmxlRWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIHRCb2R5RWxtLmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmdJbnB1dCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXRJbnB1dCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHRJbnB1dCA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgICAgIHRyLmNsYXNzTmFtZSA9ICd0cidcclxuICAgICAgICAgIHRyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPiR7aSArIDF9PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbG5nIGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxhdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBhbHQgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgYFxyXG4gICAgICAgICAgbGV0IGxuZ0JveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xuZycpWzBdXHJcbiAgICAgICAgICBsZXQgbG5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBsbmcuaW5uZXJIVE1MID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KVxyXG4gICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIGxldCBsbmdJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGxuZ0lucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGxuZ0lucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgbG5nSW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgbG5nSW5wdXQubWluID0gLTE4MFxyXG4gICAgICAgICAgbG5nSW5wdXQubWF4ID0gMTgwXHJcbiAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgICBsZXQgbGF0Qm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGF0JylbMF1cclxuICAgICAgICAgIGxldCBsYXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICAgIGxhdC5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0KVxyXG4gICAgICAgICAgbGV0IGxhdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgbGF0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgbGF0SW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBsYXRJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBsYXRJbnB1dC5taW4gPSAtOTBcclxuICAgICAgICAgIGxhdElucHV0Lm1heCA9IDkwXHJcbiAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgICBsZXQgYWx0Qm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWx0JylbMF1cclxuICAgICAgICAgIGxldCBhbHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcbiAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0KVxyXG4gICAgICAgICAgbGV0IGFsdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgYWx0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgYWx0SW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBhbHRJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBhbHRJbnB1dC5taW4gPSAtOTk5OTk5OVxyXG4gICAgICAgICAgYWx0SW5wdXQubWF4ID0gOTk5OTk5OTk5XHJcbiAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMilcclxuXHJcbiAgICAgICAgICBsbmdCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nSW5wdXQpXHJcbiAgICAgICAgICAgIGxuZ0lucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBBdHRhY2tBcnJvd09iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcgPSBOdW1iZXIoTnVtYmVyKGxuZ0lucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmcuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gX3RoaXMuaGVpZ2h0XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGxhdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXRJbnB1dClcclxuICAgICAgICAgICAgbGF0SW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEF0dGFja0Fycm93T2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCA9IE51bWJlcihOdW1iZXIobGF0SW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdC5pbm5lckhUTUwgPSBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBfdGhpcy5oZWlnaHRcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgYWx0Qm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0SW5wdXQpXHJcbiAgICAgICAgICAgIGFsdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBBdHRhY2tBcnJvd09iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBOdW1iZXIoTnVtYmVyKGFsdElucHV0LnZhbHVlKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gTnVtYmVyKF90aGlzLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubG5nLnB1c2gobG5nKVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQucHVzaChsbmdJbnB1dClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxhdC5wdXNoKGxhdClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxhdElucHV0LnB1c2gobGF0SW5wdXQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5hbHQucHVzaChhbHQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5hbHRJbnB1dC5wdXNoKGFsdElucHV0KVxyXG4gICAgICAgICAgdEJvZHlFbG0uYXBwZW5kQ2hpbGQodHIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+eureWktOWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgc3ByZWFkU3RhdGUgPSB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGVcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSBzcHJlYWRTdGF0ZVxyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIH0sIDEwKTtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIOS6jOasoee8lui+keWbnuiwg1xyXG4gICAgICAgIHNlY29uZGFyeUVkaXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgQXR0YWNrQXJyb3dPYmplY3Qubm9kZUVkaXQodGhpcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBhdHRhY2tBcnJvdydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygnYXR0YWNrLWFycm93LW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbExpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgQXR0YWNrQXJyb3dPYmplY3QuRXZlbnRCaW5kaW5nKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IgPSBbY29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yID0gW2xpbmVjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2xhYmVsQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IgPSBbbGFiZWxsaW5lQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IFtsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gW2xhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXVxyXG5cclxuICAgICAgbGV0IGhlaWdodEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1ib3gnKVswXVxyXG4gICAgICBsZXQgaGVpZ2h0RWxtID0gaGVpZ2h0Qm94RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodCcpWzBdXHJcbiAgICAgIGxldCBoZWlnaHRDb25maXJtRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWNvbmZpcm0nKVswXVxyXG4gICAgICBoZWlnaHRFbG0udmFsdWUgPSAxMFxyXG4gICAgICBpZiAodGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICBoZWlnaHRDb25maXJtRWxtICYmIGhlaWdodENvbmZpcm1FbG0ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgIGtleTogJzAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICB2YWx1ZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICBrZXk6ICcxJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfkvp3pmYTmqKHlnosnLFxyXG4gICAgICAgICAgdmFsdWU6ICfkvp3pmYTmqKHlnosnLFxyXG4gICAgICAgICAga2V5OiAnMicsXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICAgIGxldCBoZWlnaHRNb2RlT2JqZWN0ID0gbGVncChcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ2hlaWdodC1tb2RlLWJveCdcclxuICAgICAgICApWzBdLFxyXG4gICAgICAgICcuaGVpZ2h0LW1vZGUnXHJcbiAgICAgIClcclxuICAgICAgaWYgKGhlaWdodE1vZGVPYmplY3QpIHtcclxuICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoKGhlaWdodE1vZGVEYXRhKVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1tb2RlJylbMF1cclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0TW9kZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS5rZXkgPT0gdGhpcy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS52YWx1ZSA9IGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGhlaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAodGhpcy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHQgPSBoZWlnaHRFbG1cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCA9IGhlaWdodEJveEVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhTGVncEVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSA9IGhlaWdodENvbmZpcm1FbG1cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgPSBoZWlnaHRNb2RlT2JqZWN0XHJcblxyXG4gICAgICAgIGhlaWdodENvbmZpcm1FbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIEF0dGFja0Fycm93T2JqZWN0LmNsb3NlTm9kZUVkaXQodGhpcylcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgICB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbe1xyXG4gICAgICAgICAgbmFtZTogJ+W5s+aWueexsycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+W5s+aWueexsydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnljYPnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnljYPnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5LqpJyxcclxuICAgICAgICAgIHZhbHVlOiAn5LqpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+WFrOmhtycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+WFrOmhtydcclxuICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgdW5pdERhdGFMZWdwT2JqZWN0ID0gbGVncCh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdC1ib3gnKVswXSwgXCIuaW5wdXQtc2VsZWN0LXVuaXRcIilcclxuICAgICAgICBpZiAodW5pdERhdGFMZWdwT2JqZWN0KSB7XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2godW5pdERhdGEpXHJcbiAgICAgICAgICBsZXQgdW5pdERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zWydhcmVhLXVuaXQnXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh1bml0RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcmVhVW5pdCA9IHVuaXREYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcblxyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMubGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGluZS5jb2xvclxyXG4gICAgdGhpcy5saW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLndpZHRoXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5sbmdbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMubGF0W2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZWxtcy5hbHQgJiYgdGhpcy5fZWxtcy5hbHRbaV0pIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmFsdFtpXS5pbm5lckhUTUwgPSBOdW1iZXIodGhpcy5vcHRpb25zLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgIGxldCBzcHJlYWRTdGF0ZSA9IHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZVxyXG4gICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvb3AgPSB0aGlzLm9wdGlvbnMubG9vcFxyXG4gICAgICB0aGlzLnNwcmVhZFN0YXRlID0gc3ByZWFkU3RhdGVcclxuICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmVudGl0eSAmJiB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICog6aOe5YiwXHJcbiovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGxldCBncm91bmRcclxuICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChncm91bmQpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSlcclxuICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zSCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uc0gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKHRoaXMucG9zaXRpb25zSFtpXS54LCB0aGlzLnBvc2l0aW9uc0hbaV0ueSwgdGhpcy5wb3NpdGlvbnNIW2ldLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlQW5pbWF0ZSgpXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nID0gc3RhdHVzXHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjkpYCkpXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmaXJzdHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgYXJyYXkucHVzaChbZmlyc3Rwb3NpdGlvbi5sbmcsIGZpcnN0cG9zaXRpb24ubGF0XSlcclxuICAgICAgdmFyIHBvbHlnb24gPSB0dXJmLnBvbHlnb24oW2FycmF5XSk7XHJcbiAgICAgIHZhciBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICAgIGxldCBjZW50ZXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5jZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54XHJcbiAgICAgICAgZGlzcGFyaXR5LnB1c2goe1xyXG4gICAgICAgICAgeDogY2VudGVyLnggLSBwb3NpdGlvbnNbaV0ueCxcclxuICAgICAgICAgIHk6IGNlbnRlci55IC0gcG9zaXRpb25zW2ldLnksXHJcbiAgICAgICAgICB6OiBjZW50ZXIueiAtIHBvc2l0aW9uc1tpXS56LFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCBwb3NpdGlvbjg0LmFsdF1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgcG9zMyA9IHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHBvczMpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3MzLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0W2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBuZXdwb3NpdGlvbnNcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zMyA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gocG9zMylcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3MzLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbjg0ID0gW11cclxuICAgICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3cG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChuZXdwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy5yZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbjg0KVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zSClcclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLmVudGl0eSAmJiB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDEpYClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcblxyXG4gICAgICBpZiAoIXRoaXMucHJldmlvdXMpIHtcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gWy4uLnRoaXMucHJldmlvdXMucG9zaXRpb25zXVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBwb3NpdGlvbjg0ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnBvc2l0aW9uc1tpXSwgX3RoaXMuc2RrLnZpZXdlcikpXHJcbiAgICAgIH1cclxuICAgICAgX3RoaXMucmVuZXdQb3NpdGlvbnMocG9zaXRpb244NClcclxuXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcbiAgZ2V0IGFyZWFDaGFuZ2VDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBhcmVhQ2hhbmdlQ2FsbEJhY2soY2QpIHtcclxuICAgIHRoaXMuX2FyZWFDaGFuZ2VDYWxsQmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgRXZlbnRCaW5kaW5nKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBpZiAoIWVsZW1lbnRzW2ldIHx8ICFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHsgdGhhdFttLnZhbHVlXSA9IGUudGFyZ2V0LmNoZWNrZWQgfSlcclxuICAgICAgICAgICAgICBlbGVtZW50c1tpXS5jaGVja2VkID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0Ll9lbG1zW20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoYXQuX2VsbXNbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2hhbmdlJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJlbW92ZU5hbWUubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGxldCB2ZW50VHlwZSA9ICdpbnB1dCdcclxuICAgICAgICBpZiAoZWxlbWVudHNbaV0udGFnTmFtZSAhPSAnSU5QVVQnIHx8IGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgdmVudFR5cGUgPSAnY2hhbmdlJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudHNbaV0uY2xhc3NOYW1lLmluZGV4T2YoJ2JsdXInKSAhPT0gLTEpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2JsdXInXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5vZGVFZGl0KGNiID0gKCkgPT4geyB9KSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAgICAgICBsZXQgb3JpZ2luYWxQb3NpdGlvblxyXG5cclxuICAgICAgICBsZXQgbW92ZUV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24gPyBtb3ZlbWVudC5wb3NpdGlvbi54IDogbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24gPyBtb3ZlbWVudC5wb3NpdGlvbi55IDogbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIG1vdmVFdmVudChtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gc2VsZWN0UG9pbnQuaW5kZXhcclxuICAgICAgICAgICAgaWYgKHNlbGVjdFBvaW50LmluZGV4ID09PSB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ICsgMVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0KSxcclxuICAgICAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBzZWxlY3RQb2ludCA9IGVudGl0eVxyXG5cclxuICAgICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdXHJcbiAgICAgICAgICAgIHRoaXMubm9kZVBvaW50cy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDAsIGVudGl0eSlcclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDAsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdKVxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgICAgICAgY2IoJycsIFsuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgcGljayA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uIHx8IG1vdmVtZW50LmVuZFBvc2l0aW9uKTtcclxuICAgICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAgICAgICAgICAgICBvcmlnaW5hbFBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwaWNrLmlkLnBvc2l0aW9uLmdldFZhbHVlKCksIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICB0aGlzLm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShwaWNrLmlkKVxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7noa7orqTvvIzlj7PplK7nu5PmnZ/vvIxDVFJMK+WPs+mUruaSpOmUgCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJpZ2h0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgICAgaWYgKCFvcmlnaW5hbFBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+IDMgJiYgc2VsZWN0UG9pbnQuaW5kZXggPT09IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXggKyAxLCAxKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIHRoaXMucHJldmlvdXMgPSBudWxsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zSClcclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgICAgICBsZXQgcG9zODQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnNILmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zSFtpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgcG9zODQucHVzaChwb3NpdGlvbilcclxuICAgICAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5wb3NpdGlvbnNIWzBdLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb2ludHMpXHJcbiAgICAgICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKVxyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9LCAyMDApO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcblxyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodChyaWdodEV2ZW50KVxyXG5cclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZShtb3ZlRXZlbnQpXHJcblxyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1t0aGlzLm5vZGVQb2ludHMubGVuZ3RoIC0gMV0pXHJcbiAgICAgICAgICAgICAgdGhpcy5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgICAgICAgICAgICAgaWYgKCFzZWxlY3RQb2ludC5pbmRleCkge1xyXG4gICAgICAgICAgICAgICAgLy8gc2VsZWN0UG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGVjdFBvaW50LmluZGV4ID09PSB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZVBvaW50c1tzZWxlY3RQb2ludC5pbmRleCAtIDFdKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhpcy5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RQb2ludC5pbmRleCA9IHNlbGVjdFBvaW50LmluZGV4IC0gMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgICAgICByaWdodEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY3JlYXRlTm9kZVBvaW50cygpXHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGVOb2RlUG9pbnRzKCkge1xyXG4gICAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4uX3RoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF90aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCBfdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICBsZXQgZW50aXR5ID0gX3RoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsIGhlaWdodCksXHJcbiAgICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogX3RoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF90aGlzLm5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vICAgbGV0IGVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIC8vICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgLy8gICAgIGluZGV4OiBpLFxyXG4gICAgICAgIC8vICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KSxcclxuICAgICAgICAvLyAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgLy8gICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgLy8gICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgIC8vICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgLy8gICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICB9KVxyXG4gICAgICAgIC8vICAgbm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VOb2RlRWRpdCgpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24odikge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHYucG9zaXRpb24ubG5nLCB2LnBvc2l0aW9uLmxhdCwgdi5wb3NpdGlvbi5hbHQpXHJcbiAgICBsZXQgcG9zaXRpb25zID0gWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgbGV0IGFycmF5ID0gW11cclxuICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgYXJyYXkucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgfVxyXG4gICAgbGV0IGZpcnN0cG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgYXJyYXkucHVzaChbZmlyc3Rwb3NpdGlvbi5sbmcsIGZpcnN0cG9zaXRpb24ubGF0XSlcclxuICAgIHZhciBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKFthcnJheV0pO1xyXG4gICAgdmFyIGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgIGxldCBjZW50ZXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5jZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRpc3Bhcml0eS5wdXNoKHtcclxuICAgICAgICB4OiBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54LFxyXG4gICAgICAgIHk6IGNlbnRlci55IC0gcG9zaXRpb25zW2ldLnksXHJcbiAgICAgICAgejogY2VudGVyLnogLSBwb3NpdGlvbnNbaV0ueixcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGxldCBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbmV3cG9zaXRpb25zLnB1c2goe1xyXG4gICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt2LnBvc2l0aW9uLmxuZywgdi5wb3NpdGlvbi5sYXQsIHYucG9zaXRpb24uYWx0XVxyXG5cclxuICAgIGxldCBwb3NpdGlvbnM4NCA9IFtdXHJcbiAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbnM4NC5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQobmV3cG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYXJyID0gdGhpcy5jb21wdXRlQXR0YWNrQXJyb3cocG9zaXRpb25zODQpXHJcbiAgICBpZiAoYXJyLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgIH0sIGZhbHNlKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKGFyci5sZW5ndGggPj0gMykge1xyXG4gICAgICAgIHJldHVybiBbLi4uYXJyLCBhcnJbMF0sIGFyclsxXV1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gWy4uLmFycl1cclxuICAgICAgfVxyXG4gICAgfSwgZmFsc2UpXHJcbiAgfVxyXG5cclxuICBzZXRESVYob3B0aW9ucyA9IHsgZG9taWQ6IFwiXCIsIHg6IDEwLCB5OiAxMCB9KSB7XHJcbiAgICBvcHRpb25zLnggPSAob3B0aW9ucy54IHx8IG9wdGlvbnMueCA9PT0gMCkgPyBvcHRpb25zLnggOiAxMFxyXG4gICAgb3B0aW9ucy55ID0gKG9wdGlvbnMueSB8fCBvcHRpb25zLnkgPT09IDApID8gb3B0aW9ucy55IDogMTBcclxuXHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jb21wdXRlQXR0YWNrQXJyb3codGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9pbnRzID0gW1tdXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKTtcclxuICAgIC8vIGxldCBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLnBvaW50T25GZWF0dXJlKHBvbHlnb24pO1xyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3ByZWFkVGltZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3ByZWFkVGltZVxyXG4gIH1cclxuXHJcbiAgc2V0IHNwcmVhZFRpbWUodikge1xyXG4gICAgbGV0IHNwcmVhZFRpbWUgPSBOdW1iZXIodilcclxuICAgIGlmIChpc05hTihzcHJlYWRUaW1lKSkge1xyXG4gICAgICBzcHJlYWRUaW1lID0gMzAwMFxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc3ByZWFkVGltZSA8IDUwMCkge1xyXG4gICAgICBzcHJlYWRUaW1lID0gNTAwXHJcbiAgICB9IGVsc2UgaWYgKHNwcmVhZFRpbWUgPiA5OTk5OTk5KSB7XHJcbiAgICAgIHNwcmVhZFRpbWUgPSA5OTk5OTk5XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuc3ByZWFkVGltZSA9IHNwcmVhZFRpbWVcclxuICAgIGlmICh0aGlzLnNwcmVhZFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5zcHJlYWRUaW1lICYmIHRoaXMuX2VsbXMuc3ByZWFkVGltZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBzcHJlYWRUaW1lXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxvb3AoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxvb3BcclxuICB9XHJcbiAgc2V0IGxvb3Aodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxvb3AgPSB2XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgaWYgKHYpIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5yZXBlYXQoSW5maW5pdHkpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUucmVwZWF0KClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sb29wICYmIHRoaXMuX2VsbXMubG9vcC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3ByZWFkU3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwcmVhZFN0YXRlXHJcbiAgfVxyXG4gIHNldCBzcHJlYWRTdGF0ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSB2XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgaWYgKHYpIHtcclxuICAgICAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICB0aGlzLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoaXMuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UgLyB0aGlzLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlICogdGhpcy5zcHJlYWRUaW1lKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnBhdXNlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUgJiYgdGhpcy5fZWxtcy5zcHJlYWRTdGF0ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aW1lID0gMCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcblxyXG5cclxuXHJcbiAgICBsZXQgQXR0YWNrQXJyb3dBcnIgPSB0aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgbGV0IGFyclxyXG4gICAgbGV0IGxpbmVBcnJcclxuICAgIC8vIGlmIChhcnIubGVuZ3RoID49IDMpIHtcclxuICAgIC8vICAgbGluZUFyciA9IFsuLi5hcnIsIGFyclswXSwgYXJyWzFdXVxyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSB7XHJcbiAgICAvLyAgIGxpbmVBcnIgPSBbLi4uYXJyXVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHsgc2RrUCwgc2RrRCB9ID0gZ2V0U2RrKClcclxuICAgIGxldCB0aGF0UFxyXG4gICAgaWYgKHNka0QgJiYgc2RrUCkge1xyXG4gICAgICBpZiAodGhpcy5zZGsgPT09IHNka0QpIHtcclxuICAgICAgICB0aGF0UCA9IHNka1AuZW50aXR5TWFwLmdldCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgaWYgKHRoYXRQICYmIHRoYXRQLmVudGl0eSAmJiB0aGF0UC5lbnRpdHkucG9seWdvbiAmJiB0aGF0UC5wb3NpdGlvbnNIKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdFAucG9zaXRpb25zSClcclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsuLi50aGF0UC5wb3NpdGlvbnNILCB0aGF0UC5wb3NpdGlvbnNIWzBdLCB0aGF0UC5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBhcnJcclxuICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IGxpbmVBcnJcclxuXHJcbiAgICBsZXQgbGluZVBvczg0ID0gW1sodGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcgKyB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZykgLyAyLCAodGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQgKyB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzFdLmxhdCkgLyAyXV1cclxuICAgIGZvciAobGV0IGkgPSAyOyBpIDwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsaW5lUG9zODQucHVzaChbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcobGluZVBvczg0KTtcclxuXHJcbiAgICBsZXQgZGlzdGFuY2VBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVQb3M4NC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQobGluZVBvczg0W2ldKTtcclxuICAgICAgbGV0IHRvID0gdHVyZi5wb2ludChsaW5lUG9zODRbaSAtIDFdKTtcclxuICAgICAgbGV0IGQgPSB0dXJmLmRpc3RhbmNlKGZyb20sIHRvLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIGxldCBvZCA9IGRpc3RhbmNlQXJyYXlbZGlzdGFuY2VBcnJheS5sZW5ndGggLSAxXSB8fCAwXHJcbiAgICAgIGRpc3RhbmNlQXJyYXkucHVzaChvZCArIGQpXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRpc3RhbmNlID0gdHVyZi5sZW5ndGgobGluZSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgbGV0IHRpbWVSYXRpbyA9IHRpbWUgLyB0aGlzLnNwcmVhZFRpbWVcclxuICAgIGxldCBtID0gMFxyXG4gICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBuZXcgVFdFRU4uVHdlZW4oeyBkaXN0YW5jZTogZGlzdGFuY2UgKiB0aW1lUmF0aW8gfSkudG8oeyBkaXN0YW5jZTogZGlzdGFuY2UgfSwgdGhpcy5zcHJlYWRUaW1lIC0gdGltZSkuZWFzaW5nKFRXRUVOLkVhc2luZy5MaW5lYXIuTm9uZSkucmVwZWF0KHRoaXMub3B0aW9ucy5sb29wID8gSW5maW5pdHkgOiAwKS5vblJlcGVhdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aW1lKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSgpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuX2R1cmF0aW9uID09IEluZmluaXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbSsrXHJcbiAgICAgIGlmICghdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBzZXRTcHJlYWQocilcclxuICAgIH0pLm9uU3RhcnQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSB0cnVlXHJcbiAgICAgIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUgJiYgdGhpcy5fZWxtcy5zcHJlYWRTdGF0ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSkub25Db21wbGV0ZSgoZCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnNwcmVhZFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnN0YXJ0KClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXRTcHJlYWQoeyBkaXN0YW5jZTogZGlzdGFuY2UgKiB0aW1lUmF0aW8gfSlcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBzZXRTcHJlYWQodikge1xyXG4gICAgICBpZiAoIXRoYXQuc2hvdykge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBpbmRleCA9IDJcclxuICAgICAgZm9yIChsZXQgaSA9IGRpc3RhbmNlQXJyYXkubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAodi5kaXN0YW5jZSA+PSBkaXN0YW5jZUFycmF5W2ldKSB7XHJcbiAgICAgICAgICBpbmRleCA9IGluZGV4ICsgaSArIDFcclxuICAgICAgICAgIGlmIChpbmRleCA+IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBpbmRleCA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uc1tpXSA9IHsgLi4udGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXSB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF2LmRpc3RhbmNlKSB7XHJcbiAgICAgICAgcG9zaXRpb25zW2luZGV4XSA9IHtcclxuICAgICAgICAgIGxuZzogcG9zaXRpb25zWzFdLmxuZyxcclxuICAgICAgICAgIGxhdDogcG9zaXRpb25zWzFdLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgc2xpY2VkID0gYXdhaXQgdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lLCAwLCB2LmRpc3RhbmNlLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVzID0gWy4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1dXHJcbiAgICAgICAgaWYgKCFwb3NpdGlvbnNbaW5kZXhdKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbnNbaW5kZXhdID0ge31cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zaXRpb25zW2luZGV4XS5sbmcgPSBjb29yZGluYXRlc1swXVxyXG4gICAgICAgIHBvc2l0aW9uc1tpbmRleF0ubGF0ID0gY29vcmRpbmF0ZXNbMV1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ3Bvc2l0aW9ucycsIHBvc2l0aW9ucylcclxuICAgICAgdGhhdC5yZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXQucG9zaXRpb25zSClcclxuICAgIH0sIGZhbHNlKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIFsuLi50aGF0LnBvc2l0aW9uc0gsIHRoYXQucG9zaXRpb25zSFswXSwgdGhhdC5wb3NpdGlvbnNIWzFdXVxyXG4gICAgfSwgZmFsc2UpXHJcbiAgfVxyXG5cclxuICAvLyDnp7vpmaTliqjnlLtcclxuICByZW1vdmVBbmltYXRlKCkge1xyXG4gICAgdGhpcy5zcHJlYWRTdGF0ZSA9IGZhbHNlXHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgVFdFRU4ucmVtb3ZlKHRoaXMuVHdlZW5BbmltYXRlKVxyXG4gICAgICB0aGlzLlR3ZWVuQW5pbWF0ZSA9IG51bGxcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoaXMucG9zaXRpb25zSClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gWy4uLnRoaXMucG9zaXRpb25zSCwgdGhpcy5wb3NpdGlvbnNIWzBdLCB0aGlzLnBvc2l0aW9uc0hbMV1dXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbjg0KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG5cclxuICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgaWYgKHBvc2l0aW9uODQpIHtcclxuICAgICAgcG9zaXRpb25zID0gcG9zaXRpb244NFxyXG4gICAgfVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICB9XHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuXHJcbiAgICBsZXQgcG9zaXRpb25zQSA9IHRoaXMuY29tcHV0ZUF0dGFja0Fycm93KHBvc2l0aW9ucylcclxuICAgIGlmIChwb3NpdGlvbnNBLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGxldCBwb3M4NCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIHBvczg0LnB1c2gocG9zaXRpb24pXHJcbiAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKVxyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKVxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgaWYgKCFncm91bmQgJiYgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChcclxuICAgICAgICAgIHBvaW50c1swXVtpXVswXSxcclxuICAgICAgICAgIHBvaW50c1swXVtpXVsxXSxcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ICsgaGVpZ2h0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zSCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkyKVxyXG5cclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICB0aGlzLmhlaWdodCArIGhlaWdodFxyXG4gICAgICBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnNIID0gcG9zaXRpb25zQVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sIDEwMClcclxuICAgIH1cclxuXHJcbiAgICAvLyDorqHnrpfmipXlvbHpnaLnp69cclxuICAgIGlmICghdGhpcy5zcHJlYWRTdGF0ZSkge1xyXG4gICAgICB0aGlzLmFyZWFCeU1ldGVyID0gdGhpcy5jb21wdXRlQXJlYShwb3M4NClcclxuICAgICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEF0dGFja0Fycm93T2JqZWN0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUErSEE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekhBO0FBQUE7QUFBQTtBQTBIQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBM0NBO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBNWVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOGVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBQUE7QUFlQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBVUE7QUFBQTtBQVBBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQUE7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQXVHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQThMQTtBQUNBO0FBQUE7QUF6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFxR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXVMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkE7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0NBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5c0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBazRCQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJFQTtBQUFBO0FBQUE7QUFxRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9GQTtBQUFBO0FBS0E7QUEyRkE7QUFBQTtBQUFBO0FBdW9CQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/AttackArrowObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseLayer/ArcgisImagery/index.js": -/*!******************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseLayer/ArcgisImagery/index.js ***! - \******************************************************************/ -/*! exports provided: ArcgisWXImagery, ArcgisBLUEImagery, ArcgisLWImagery */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArcgisWXImagery\", function() { return ArcgisWXImagery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArcgisBLUEImagery\", function() { return ArcgisBLUEImagery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArcgisLWImagery\", function() { return ArcgisLWImagery; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseLayer/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 19:00\r\n * @description:index\r\n * @update: 2023-11-20 19:00\r\n */\n\n\n\nvar ArcgisLayer = /*#__PURE__*/function (_BaseLayer) {\n function ArcgisLayer(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ArcgisLayer);\n return _callSuper(this, ArcgisLayer, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(ArcgisLayer, _BaseLayer);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ArcgisLayer, [{\n key: \"type\",\n get: function get() {\n return \"layer\";\n }\n }, {\n key: \"createArcGis\",\n value: function () {\n var _createArcGis = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(url) {\n var imageryProvider, i, layer;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context.next = 6;\n break;\n }\n _context.next = 3;\n return Cesium.ArcGisMapServerImageryProvider.fromUrl(url);\n case 3:\n imageryProvider = _context.sent;\n _context.next = 7;\n break;\n case 6:\n imageryProvider = new Cesium.ArcGisMapServerImageryProvider({\n url: url\n });\n case 7:\n if (this.options.hasOwnProperty(\"layerIndex\")) {\n this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(imageryProvider, this.options.layerIndex);\n } else {\n this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(imageryProvider);\n }\n this.entity._id = this.options.id;\n for (i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(layer);\n }\n }\n this.show = this.options.show;\n this.alpha = this.options.alpha;\n this.brightness = this.options.brightness;\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"setSplitDirection\"])(0, this.options.id);\n }\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function createArcGis(_x) {\n return _createArcGis.apply(this, arguments);\n }\n return createArcGis;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nvar ArcgisWXImagery = /*#__PURE__*/function (_ArcgisLayer) {\n function ArcgisWXImagery(sdk, options) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ArcgisWXImagery);\n _this = _callSuper(this, ArcgisWXImagery, [sdk, options]);\n _this.createArcGis(\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer\");\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(ArcgisWXImagery, _ArcgisLayer);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ArcgisWXImagery);\n}(ArcgisLayer);\nvar ArcgisBLUEImagery = /*#__PURE__*/function (_ArcgisLayer2) {\n function ArcgisBLUEImagery(sdk, options) {\n var _this2;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ArcgisBLUEImagery);\n _this2 = _callSuper(this, ArcgisBLUEImagery, [sdk, options]);\n _this2.createArcGis(\"https://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer\");\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(ArcgisBLUEImagery, _ArcgisLayer2);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ArcgisBLUEImagery);\n}(ArcgisLayer);\nvar ArcgisLWImagery = /*#__PURE__*/function (_ArcgisLayer3) {\n function ArcgisLWImagery(sdk, options) {\n var _this3;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ArcgisLWImagery);\n _this3 = _callSuper(this, ArcgisLWImagery, [sdk, options]);\n _this3.createArcGis(\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer\");\n return _this3;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(ArcgisLWImagery, _ArcgisLayer3);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ArcgisLWImagery);\n}(ArcgisLayer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvQXJjZ2lzSW1hZ2VyeS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXNlU291cmNlL0Jhc2VMYXllci9BcmNnaXNJbWFnZXJ5L2luZGV4LmpzPzMxMGEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTExLTIwIDE5OjAwXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMTEtMjAgMTk6MDBcclxuICovXHJcblxyXG5pbXBvcnQgQmFzZUxheWVyIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcblxyXG5jbGFzcyBBcmNnaXNMYXllciBleHRlbmRzIEJhc2VMYXllciB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiBcImxheWVyXCJcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUFyY0dpcyh1cmwpIHtcclxuICAgIGxldCBpbWFnZXJ5UHJvdmlkZXJcclxuICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTA3KSB7XHJcbiAgICAgIGltYWdlcnlQcm92aWRlciA9IGF3YWl0IENlc2l1bS5BcmNHaXNNYXBTZXJ2ZXJJbWFnZXJ5UHJvdmlkZXIuZnJvbVVybCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGltYWdlcnlQcm92aWRlciA9IG5ldyBDZXNpdW0uQXJjR2lzTWFwU2VydmVySW1hZ2VyeVByb3ZpZGVyKHtcclxuICAgICAgICB1cmxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KFwibGF5ZXJJbmRleFwiKSkge1xyXG4gICAgICB0aGlzLmVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihpbWFnZXJ5UHJvdmlkZXIsIHRoaXMub3B0aW9ucy5sYXllckluZGV4KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIoaW1hZ2VyeVByb3ZpZGVyLClcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5Ll9pZCA9IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIgJiYgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnIHx8IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSA9PT0gJ2p3dycpKSB7XHJcbiAgICAgICAgbGV0IGxheWVyID0gdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLnJhaXNlVG9Ub3AobGF5ZXIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICB0aGlzLmFscGhhID0gdGhpcy5vcHRpb25zLmFscGhhXHJcbiAgICB0aGlzLmJyaWdodG5lc3MgPSB0aGlzLm9wdGlvbnMuYnJpZ2h0bmVzc1xyXG5cclxuICAgIGlmKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEFyY2dpc1dYSW1hZ2VyeSBleHRlbmRzIEFyY2dpc0xheWVyIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMpIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLmNyZWF0ZUFyY0dpcyhcImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXJcIilcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEFyY2dpc0JMVUVJbWFnZXJ5IGV4dGVuZHMgQXJjZ2lzTGF5ZXIge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucykge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMuY3JlYXRlQXJjR2lzKFwiaHR0cHM6Ly9tYXAuZ2VvcS5jbi9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9DaGluYU9ubGluZVN0cmVldFB1cnBsaXNoQmx1ZS9NYXBTZXJ2ZXJcIilcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEFyY2dpc0xXSW1hZ2VyeSBleHRlbmRzIEFyY2dpc0xheWVyIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMpIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLmNyZWF0ZUFyY0dpcyhcImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXJcIilcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7QXJjZ2lzV1hJbWFnZXJ5LCBBcmNnaXNCTFVFSW1hZ2VyeSwgQXJjZ2lzTFdJbWFnZXJ5fVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVEE7QUEwQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFKQTtBQVFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSkE7QUFRQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseLayer/ArcgisImagery/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseLayer/GdImagery/index.js": -/*!**************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseLayer/GdImagery/index.js ***! - \**************************************************************/ -/*! exports provided: GDLWImagery, GDWXImagery, GDSLImagery */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GDLWImagery\", function() { return GDLWImagery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GDWXImagery\", function() { return GDWXImagery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GDSLImagery\", function() { return GDSLImagery; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseLayer/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 19:18\r\n * @description:index\r\n * @update: 2023-11-20 19:18\r\n */\nvar GdImagery = /*#__PURE__*/function (_BaseLayer) {\n function GdImagery(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, GdImagery);\n return _callSuper(this, GdImagery, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GdImagery, _BaseLayer);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(GdImagery, [{\n key: \"type\",\n get: function get() {\n return \"layer\";\n }\n }, {\n key: \"createGD\",\n value: function createGD(url) {\n var gdLayer = new Cesium.UrlTemplateImageryProvider({\n url: url,\n minimumLevel: 3,\n maximumLevel: 18,\n tilingScheme: this.amapMercatorTilingScheme()\n });\n if (this.options.hasOwnProperty(\"layerIndex\")) {\n this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(gdLayer, this.options.layerIndex);\n } else {\n this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(gdLayer);\n }\n this.entity._id = this.options.id;\n for (var i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n var layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(layer);\n }\n }\n this.show = this.options.show;\n this.alpha = this.options.alpha;\n this.brightness = this.options.brightness;\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_6__[\"setSplitDirection\"])(0, this.options.id);\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar GDLWImagery = /*#__PURE__*/function (_GdImagery) {\n function GDLWImagery(earth) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, GDLWImagery);\n _this = _callSuper(this, GDLWImagery, [earth, options]);\n _this.createGD(\"https://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8\");\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GDLWImagery, _GdImagery);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(GDLWImagery);\n}(GdImagery);\nvar GDWXImagery = /*#__PURE__*/function (_GdImagery2) {\n function GDWXImagery(earth) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, GDWXImagery);\n _this2 = _callSuper(this, GDWXImagery, [earth, options]);\n _this2.createGD(\"https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}\");\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GDWXImagery, _GdImagery2);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(GDWXImagery);\n}(GdImagery);\nvar GDSLImagery = /*#__PURE__*/function (_GdImagery3) {\n function GDSLImagery(earth) {\n var _this3;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, GDSLImagery);\n _this3 = _callSuper(this, GDSLImagery, [earth, options]);\n _this3.createGD(\"https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}\");\n return _this3;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GDSLImagery, _GdImagery3);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(GDSLImagery);\n}(GdImagery);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvR2RJbWFnZXJ5L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZUxheWVyL0dkSW1hZ2VyeS9pbmRleC5qcz80OTc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlTGF5ZXIgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuXHJcbi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMy0xMS0yMCAxOToxOFxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIzLTExLTIwIDE5OjE4XHJcbiAqL1xyXG5jbGFzcyBHZEltYWdlcnkgZXh0ZW5kcyBCYXNlTGF5ZXIge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJsYXllclwiXHJcbiAgfVxyXG5cclxuICBjcmVhdGVHRCh1cmwpIHtcclxuICAgIGxldCBnZExheWVyID0gbmV3IENlc2l1bS5VcmxUZW1wbGF0ZUltYWdlcnlQcm92aWRlcih7XHJcbiAgICAgIHVybCxcclxuICAgICAgbWluaW11bUxldmVsOiAzLFxyXG4gICAgICBtYXhpbXVtTGV2ZWw6IDE4LFxyXG4gICAgICB0aWxpbmdTY2hlbWU6IHRoaXMuYW1hcE1lcmNhdG9yVGlsaW5nU2NoZW1lKClcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcImxheWVySW5kZXhcIikpIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIoZ2RMYXllciwgdGhpcy5vcHRpb25zLmxheWVySW5kZXgpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihnZExheWVyLClcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5Ll9pZCA9IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIgJiYgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnIHx8IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSA9PT0gJ2p3dycpKSB7XHJcbiAgICAgICAgbGV0IGxheWVyID0gdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLnJhaXNlVG9Ub3AobGF5ZXIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICB0aGlzLmFscGhhID0gdGhpcy5vcHRpb25zLmFscGhhXHJcbiAgICB0aGlzLmJyaWdodG5lc3MgPSB0aGlzLm9wdGlvbnMuYnJpZ2h0bmVzc1xyXG5cclxuICAgIGlmKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgICBcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgR0RMV0ltYWdlcnkgZXh0ZW5kcyBHZEltYWdlcnkge1xyXG4gIGNvbnN0cnVjdG9yKGVhcnRoLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKGVhcnRoLCBvcHRpb25zKTtcclxuICAgIHRoaXMuY3JlYXRlR0QoXCJodHRwczovL3dlYnN0MDIuaXMuYXV0b25hdmkuY29tL2FwcG1hcHRpbGU/eD17eH0meT17eX0mej17en0mbGFuZz16aF9jbiZzaXplPTEmc2NhbGU9MSZzdHlsZT04XCIpXHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBHRFdYSW1hZ2VyeSBleHRlbmRzIEdkSW1hZ2VyeSB7XHJcbiAgY29uc3RydWN0b3IoZWFydGgsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoZWFydGgsIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5jcmVhdGVHRChcImh0dHBzOi8vd2Vic3QwMi5pcy5hdXRvbmF2aS5jb20vYXBwbWFwdGlsZT9zdHlsZT02Jng9e3h9Jnk9e3l9Jno9e3p9XCIpXHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBHRFNMSW1hZ2VyeSBleHRlbmRzIEdkSW1hZ2VyeSB7XHJcbiAgY29uc3RydWN0b3IoZWFydGgsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoZWFydGgsIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5jcmVhdGVHRChcImh0dHBzOi8vd2VicmQwMi5pcy5hdXRvbmF2aS5jb20vYXBwbWFwdGlsZT9sYW5nPXpoX2NuJnNpemU9MSZzY2FsZT0xJnN0eWxlPTgmeD17eH0meT17eX0mej17en1cIilcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7R0RMV0ltYWdlcnksIEdEV1hJbWFnZXJ5LCBHRFNMSW1hZ2VyeX1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBckNBO0FBeUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFKQTtBQVFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFKQTtBQVFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseLayer/GdImagery/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseLayer/Layer/index.js": -/*!**********************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseLayer/Layer/index.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseLayer/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 15:51\r\n * @description:index\r\n * @update: 2023-11-20 15:51\r\n */\n\n\n\n\nvar Layer = /*#__PURE__*/function (_BaseLayer) {\n function Layer(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Layer);\n _this = _callSuper(this, Layer, [sdk, options]);\n _this.object = {};\n _this.options.host = _this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_8__[\"getHost\"])();\n _this.loadLayer(_this.options);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Layer, _BaseLayer);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Layer, [{\n key: \"type\",\n get: function get() {\n return \"layer\";\n }\n }, {\n key: \"loadLayer\",\n value: function () {\n var _loadLayer = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(data) {\n var url, o, params, layer, arr, _url, i, _layer;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n this.object = _objectSpread({}, data);\n url = \"\";\n if (this.object.url.startsWith(\"http\")) url = this.object.url;else {\n if (this.options.host) {\n o = new URL(this.object.url, this.options.host);\n url = o.href;\n } else url = this.object.url;\n }\n params = {\n url: url,\n mimmumLevel: this.object.minimumLevel,\n maximumLevel: this.object.maximumLevel,\n rectangle: new Cesium.Rectangle(Cesium.Math.toRadians(this.object.west), Cesium.Math.toRadians(this.object.south), Cesium.Math.toRadians(this.object.east), Cesium.Math.toRadians(this.object.north))\n }; // if (this.object.schemaName === \"GeographicTilingScheme\") {\n // console.log(\"添加GeographicTilingScheme\")\n // params.tilingScheme = new Cesium.GeographicTilingScheme()\n // }\n // if (this.object.schemaName === \"amapMercatorTilingScheme\") {\n // console.log(\"添加amapMercatorTilingScheme\")\n // params.tilingScheme = this.amapMercatorTilingScheme()\n // }\n _context.t0 = this.object.schemaName;\n _context.next = _context.t0 === \"amapMercatorTilingScheme\" ? 7 : _context.t0 === \"\" ? 9 : 10;\n break;\n case 7:\n params.tilingScheme = this.amapMercatorTilingScheme();\n return _context.abrupt(\"break\", 12);\n case 9:\n return _context.abrupt(\"break\", 12);\n case 10:\n params.tilingScheme = new Cesium[this.object.schemaName]();\n return _context.abrupt(\"break\", 12);\n case 12:\n _context.t1 = this.object.load_method;\n _context.next = _context.t1 === \"tms\" ? 15 : _context.t1 === \"xyz\" ? 24 : _context.t1 === \"wmts\" ? 26 : 28;\n break;\n case 15:\n if (this.object.url.endsWith(\"tilemapresource.xml\")) {\n arr = this.object.url.split(\"/\");\n arr.pop();\n _url = arr.join(\"/\");\n params.url = _url;\n }\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context.next = 22;\n break;\n }\n _context.next = 19;\n return Cesium.TileMapServiceImageryProvider.fromUrl(params.url, params);\n case 19:\n layer = _context.sent;\n _context.next = 23;\n break;\n case 22:\n layer = new Cesium.TileMapServiceImageryProvider(params);\n case 23:\n return _context.abrupt(\"break\", 30);\n case 24:\n layer = new Cesium.UrlTemplateImageryProvider(params);\n return _context.abrupt(\"break\", 30);\n case 26:\n layer = new Cesium.WebMapTileServiceImageryProvider(params);\n return _context.abrupt(\"break\", 30);\n case 28:\n layer = new Cesium.UrlTemplateImageryProvider(params);\n return _context.abrupt(\"break\", 30);\n case 30:\n if (!(!this.sdk || !this.sdk.viewer)) {\n _context.next = 32;\n break;\n }\n return _context.abrupt(\"return\");\n case 32:\n if (this.options.hasOwnProperty(\"layerIndex\")) {\n this.entity = this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer, this.options.layerIndex);\n } else {\n this.entity = this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer);\n }\n this.entity._id = this.options.id;\n for (i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n _layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(_layer);\n }\n }\n this.show = this.options.show;\n this.alpha = this.options.alpha;\n this.brightness = this.options.brightness;\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_11__[\"setSplitDirection\"])(0, this.options.id);\n }\n case 39:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function loadLayer(_x) {\n return _loadLayer.apply(this, arguments);\n }\n return loadLayer;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Layer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvTGF5ZXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvTGF5ZXIvaW5kZXguanM/Y2QwMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTEtMjAgMTU6NTFcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMS0yMCAxNTo1MVxyXG4gKi9cclxuaW1wb3J0IHsgZ2V0SG9zdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9vblwiO1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IEJhc2VMYXllciBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5cclxuXHJcbmNsYXNzIExheWVyIGV4dGVuZHMgQmFzZUxheWVyIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5vYmplY3QgPSB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmhvc3QgPSB0aGlzLm9wdGlvbnMuaG9zdCB8fCBnZXRIb3N0KClcclxuICAgIHRoaXMubG9hZExheWVyKHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuIFwibGF5ZXJcIlxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZExheWVyKGRhdGEpIHtcclxuICAgIHRoaXMub2JqZWN0ID0geyAuLi5kYXRhIH1cclxuICAgIGxldCB1cmwgPSBcIlwiXHJcbiAgICBpZiAodGhpcy5vYmplY3QudXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKVxyXG4gICAgICB1cmwgPSB0aGlzLm9iamVjdC51cmxcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmhvc3QpIHtcclxuICAgICAgICBsZXQgbyA9IG5ldyBVUkwodGhpcy5vYmplY3QudXJsLCB0aGlzLm9wdGlvbnMuaG9zdClcclxuICAgICAgICB1cmwgPSBvLmhyZWZcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdXJsID0gdGhpcy5vYmplY3QudXJsXHJcbiAgICB9XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICB1cmw6IHVybCxcclxuICAgICAgbWltbXVtTGV2ZWw6IHRoaXMub2JqZWN0Lm1pbmltdW1MZXZlbCxcclxuICAgICAgbWF4aW11bUxldmVsOiB0aGlzLm9iamVjdC5tYXhpbXVtTGV2ZWwsXHJcbiAgICAgIHJlY3RhbmdsZTogbmV3IENlc2l1bS5SZWN0YW5nbGUoXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub2JqZWN0Lndlc3QpLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9iamVjdC5zb3V0aCksXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub2JqZWN0LmVhc3QpLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9iamVjdC5ub3J0aClcclxuICAgICAgKSxcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLm9iamVjdC5zY2hlbWFOYW1lID09PSBcIkdlb2dyYXBoaWNUaWxpbmdTY2hlbWVcIikge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIua3u+WKoEdlb2dyYXBoaWNUaWxpbmdTY2hlbWVcIilcclxuICAgIC8vICAgcGFyYW1zLnRpbGluZ1NjaGVtZSA9IG5ldyBDZXNpdW0uR2VvZ3JhcGhpY1RpbGluZ1NjaGVtZSgpXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5vYmplY3Quc2NoZW1hTmFtZSA9PT0gXCJhbWFwTWVyY2F0b3JUaWxpbmdTY2hlbWVcIikge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIua3u+WKoGFtYXBNZXJjYXRvclRpbGluZ1NjaGVtZVwiKVxyXG4gICAgLy8gICBwYXJhbXMudGlsaW5nU2NoZW1lID0gdGhpcy5hbWFwTWVyY2F0b3JUaWxpbmdTY2hlbWUoKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGxldCBsYXllclxyXG4gICAgLy8gaWYgKHRoaXMub2JqZWN0LnRpbGV0cmFucyA9PT0gJ3RtcycpIHtcclxuICAgIC8vICAgcGFyYW1zLnVybCA9IHBhcmFtcy51cmwuc3Vic3RyKDAsIHBhcmFtcy51cmwuaW5kZXhPZigneycpKVxyXG4gICAgLy8gICB0bXMgPSBuZXcgQ2VzaXVtLlRpbGVNYXBTZXJ2aWNlSW1hZ2VyeVByb3ZpZGVyKHBhcmFtcylcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRtcyA9IG5ldyBDZXNpdW0uVXJsVGVtcGxhdGVJbWFnZXJ5UHJvdmlkZXIocGFyYW1zKVxyXG4gICAgLy8gfVxyXG4gICAgc3dpdGNoICh0aGlzLm9iamVjdC5zY2hlbWFOYW1lKSB7XHJcbiAgICAgIGNhc2UgXCJhbWFwTWVyY2F0b3JUaWxpbmdTY2hlbWVcIjpcclxuICAgICAgICBwYXJhbXMudGlsaW5nU2NoZW1lID0gdGhpcy5hbWFwTWVyY2F0b3JUaWxpbmdTY2hlbWUoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiXCI6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcGFyYW1zLnRpbGluZ1NjaGVtZSA9IG5ldyBDZXNpdW1bdGhpcy5vYmplY3Quc2NoZW1hTmFtZV0oKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0aGlzLm9iamVjdC5sb2FkX21ldGhvZCkge1xyXG4gICAgICBjYXNlIFwidG1zXCI6XHJcbiAgICAgICAgaWYgKHRoaXMub2JqZWN0LnVybC5lbmRzV2l0aChcInRpbGVtYXByZXNvdXJjZS54bWxcIikpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSB0aGlzLm9iamVjdC51cmwuc3BsaXQoXCIvXCIpXHJcbiAgICAgICAgICBhcnIucG9wKClcclxuICAgICAgICAgIGxldCB1cmwgPSBhcnIuam9pbihcIi9cIilcclxuICAgICAgICAgIHBhcmFtcy51cmwgPSB1cmxcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE51bWJlcihDZXNpdW0uVkVSU0lPTi5zcGxpdCgnLicpWzFdKSA+PSAxMDcpIHtcclxuICAgICAgICAgIGxheWVyID0gYXdhaXQgQ2VzaXVtLlRpbGVNYXBTZXJ2aWNlSW1hZ2VyeVByb3ZpZGVyLmZyb21VcmwocGFyYW1zLnVybCwgcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsYXllciA9IG5ldyBDZXNpdW0uVGlsZU1hcFNlcnZpY2VJbWFnZXJ5UHJvdmlkZXIocGFyYW1zKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInh5elwiOlxyXG4gICAgICAgIGxheWVyID0gbmV3IENlc2l1bS5VcmxUZW1wbGF0ZUltYWdlcnlQcm92aWRlcihwYXJhbXMpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJ3bXRzXCI6XHJcbiAgICAgICAgbGF5ZXIgPSBuZXcgQ2VzaXVtLldlYk1hcFRpbGVTZXJ2aWNlSW1hZ2VyeVByb3ZpZGVyKHBhcmFtcylcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsYXllciA9IG5ldyBDZXNpdW0uVXJsVGVtcGxhdGVJbWFnZXJ5UHJvdmlkZXIocGFyYW1zKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoXCJsYXllckluZGV4XCIpKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5ID1cclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIobGF5ZXIsIHRoaXMub3B0aW9ucy5sYXllckluZGV4KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPVxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihsYXllciwpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5faWQgPSB0aGlzLm9wdGlvbnMuaWRcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyICYmIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSAmJiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlID09PSAnZmx3JyB8fCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdqd3cnKSkge1xyXG4gICAgICAgIGxldCBsYXllciA9IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV1cclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZVRvVG9wKGxheWVyKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgdGhpcy5hbHBoYSA9IHRoaXMub3B0aW9ucy5hbHBoYVxyXG4gICAgdGhpcy5icmlnaHRuZXNzID0gdGhpcy5vcHRpb25zLmJyaWdodG5lc3NcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IExheWVyXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFTQTtBQUlBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQWtCQTtBQUFBO0FBaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseLayer/Layer/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseLayer/Layer3rdparty/index.js": -/*!******************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseLayer/Layer3rdparty/index.js ***! - \******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseLayer/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 15:51\r\n * @description:index\r\n * @update: 2023-11-20 15:51\r\n */\n\n\nvar Layer3rdparty = /*#__PURE__*/function (_BaseLayer) {\n function Layer3rdparty(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Layer3rdparty);\n _this = _callSuper(this, Layer3rdparty, [sdk, options]);\n _this.loadLayer();\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Layer3rdparty, _BaseLayer);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Layer3rdparty, [{\n key: \"type\",\n get: function get() {\n return \"layer\";\n }\n }, {\n key: \"loadLayer\",\n value: function loadLayer(data) {\n var params = {\n url: this.options.url,\n mimmumLevel: this.options.minimumLevel || 0,\n maximumLevel: this.options.maximumLevel || 20,\n subdomains: ['0', '1', '2', '3', '4', '5', '6', '7']\n };\n var layer;\n layer = new Cesium.UrlTemplateImageryProvider(params);\n if (this.options.hasOwnProperty(\"layerIndex\")) {\n this.entity = this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer, this.options.layerIndex);\n } else {\n this.entity = this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer);\n }\n this.entity._id = this.options.id;\n for (var i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n var _layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(_layer);\n }\n }\n this.show = this.options.show;\n this.alpha = this.options.alpha;\n this.brightness = this.options.brightness;\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_6__[\"setSplitDirection\"])(0, this.options.id);\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Layer3rdparty);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvTGF5ZXIzcmRwYXJ0eS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXNlU291cmNlL0Jhc2VMYXllci9MYXllcjNyZHBhcnR5L2luZGV4LmpzPzVkMjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTExLTIwIDE1OjUxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMTEtMjAgMTU6NTFcclxuICovXHJcbmltcG9ydCBCYXNlTGF5ZXIgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuXHJcblxyXG5jbGFzcyBMYXllcjNyZHBhcnR5IGV4dGVuZHMgQmFzZUxheWVyIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5sb2FkTGF5ZXIoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJsYXllclwiXHJcbiAgfVxyXG5cclxuICBsb2FkTGF5ZXIoZGF0YSkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgdXJsOiB0aGlzLm9wdGlvbnMudXJsLFxyXG4gICAgICBtaW1tdW1MZXZlbDogdGhpcy5vcHRpb25zLm1pbmltdW1MZXZlbCB8fCAwLFxyXG4gICAgICBtYXhpbXVtTGV2ZWw6IHRoaXMub3B0aW9ucy5tYXhpbXVtTGV2ZWwgfHwgMjAsXHJcbiAgICAgIHN1YmRvbWFpbnM6IFsnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnXSxcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbGF5ZXJcclxuXHJcbiAgICBsYXllciA9IG5ldyBDZXNpdW0uVXJsVGVtcGxhdGVJbWFnZXJ5UHJvdmlkZXIocGFyYW1zKVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcImxheWVySW5kZXhcIikpIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPVxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihsYXllciwgdGhpcy5vcHRpb25zLmxheWVySW5kZXgpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVudGl0eSA9XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuYWRkSW1hZ2VyeVByb3ZpZGVyKGxheWVyLClcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5Ll9pZCA9IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIgJiYgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmICh0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnIHx8IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSA9PT0gJ2p3dycpKSB7XHJcbiAgICAgICAgbGV0IGxheWVyID0gdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLnJhaXNlVG9Ub3AobGF5ZXIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICB0aGlzLmFscGhhID0gdGhpcy5vcHRpb25zLmFscGhhXHJcbiAgICB0aGlzLmJyaWdodG5lc3MgPSB0aGlzLm9wdGlvbnMuYnJpZ2h0bmVzc1xyXG5cclxuICAgIGlmKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBMYXllcjNyZHBhcnR5XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseLayer/Layer3rdparty/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseLayer/index.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseLayer/index.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _transform_CoordTransform__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../transform/CoordTransform */ \"./src/transform/CoordTransform.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 18:06\r\n * @description:index\r\n * @update: 2023-11-20 18:06\r\n */\n\n\n\n\n\n\n\nvar BaseLayer = /*#__PURE__*/function (_BaseSource) {\n function BaseLayer(sdk, options) {\n var _this;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, BaseLayer);\n _this = _callSuper(this, BaseLayer, [sdk, options]);\n _this.options.name = options.name || '未命名对象';\n _this.Dialog = _Dialog;\n _this._elms = {};\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(BaseLayer, _BaseSource);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(BaseLayer, [{\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n var _this$options$alpha, _this$options$brightn;\n _superPropGet(BaseLayer, \"setDefaultValue\", this, 3)([]);\n this.options.alpha = (_this$options$alpha = this.options.alpha) !== null && _this$options$alpha !== void 0 ? _this$options$alpha : 1;\n this.options.brightness = (_this$options$brightn = this.options.brightness) !== null && _this$options$brightn !== void 0 ? _this$options$brightn : 1;\n }\n }, {\n key: \"layerIndex\",\n get: function get() {\n return this.entity ? this.entity._layerIndex : undefined;\n }\n }, {\n key: \"layer_index\",\n get: function get() {\n return this.entity ? this.entity._layerIndex : undefined;\n }\n }, {\n key: \"brightness\",\n get: function get() {\n return this.options.brightness;\n },\n set: function set(v) {\n this.options.brightness = Number(v);\n this.entity.brightness = Number(v);\n }\n }, {\n key: \"alpha\",\n get: function get() {\n return this.options.alpha;\n },\n set: function set(v) {\n v = Number(v);\n if (v > 1) v = 1;\n if (v < 0) v = 0;\n this.entity.alpha = v;\n this.options.alpha = v;\n this._elms.alpha && this._elms.alpha.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**@description 提高图层的一层层级\r\n * @method layerRaise\r\n * @param id {string} 图层id\r\n *@memberOf Layer\r\n * */\n }, {\n key: \"layerRaise\",\n value: function layerRaise(id) {\n this.sdk.viewer.imageryLayers.raise(this.entity);\n for (var i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n var layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(layer);\n }\n }\n this.options.layerIndex = this.entity._layerIndex;\n return this.entity._layerIndex;\n }\n\n /**@description 降低图层的一层层级\r\n * @method layerLower\r\n * @memberOf Layer\r\n * */\n }, {\n key: \"layerLower\",\n value: function layerLower() {\n this.sdk.viewer.imageryLayers.lower(this.entity);\n this.options.layerIndex = this.entity._layerIndex;\n return this.entity._layerIndex;\n }\n\n /**@description 置顶\r\n * @method layerToTop\r\n * @memberOf Layer\r\n * */\n }, {\n key: \"layerToTop\",\n value: function layerToTop() {\n this.sdk.viewer.imageryLayers.raiseToTop(this.entity);\n for (var i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {\n if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {\n var layer = this.sdk.viewer.imageryLayers._layers[i];\n this.sdk.viewer.imageryLayers.raiseToTop(layer);\n }\n }\n this.options.layerIndex = this.entity._layerIndex;\n return this.entity._layerIndex;\n }\n\n /**@description 置底\r\n * @method lowerToBottom\r\n * @memberOf Layer\r\n * */\n }, {\n key: \"layerToBottom\",\n value: function layerToBottom() {\n this.sdk.viewer.imageryLayers.lowerToBottom(this.entity);\n this.options.layerIndex = this.entity._layerIndex;\n return this.entity._layerIndex;\n }\n }, {\n key: \"remove\",\n value: function remove() {\n _superPropGet(BaseLayer, \"remove\", this, 3)([]);\n this.sdk.viewer.scene.imageryLayers.remove(this.entity);\n this.entity = null;\n }\n\n /**@description 定位\r\n * @method flyTo\r\n * @memberOf Layer\r\n * */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n if (!this._error) {\n _context.next = 3;\n break;\n }\n return _context.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context.next = 18;\n break;\n }\n _context.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context.next = 26;\n break;\n case 25:\n this.sdk.viewer.flyTo(this.entity);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }() /*高德的纠偏*/)\n }, {\n key: \"amapMercatorTilingScheme\",\n value: function amapMercatorTilingScheme(options) {\n var AmapMercatorTilingScheme = /*#__PURE__*/function (_Cesium$WebMercatorTi) {\n function AmapMercatorTilingScheme(options) {\n var _this2;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, AmapMercatorTilingScheme);\n _this2 = _callSuper(this, AmapMercatorTilingScheme, [options]);\n var projection = new Cesium.WebMercatorProjection();\n _this2._projection.project = function (cartographic, result) {\n result = _transform_CoordTransform__WEBPACK_IMPORTED_MODULE_10__[\"default\"].WGS84ToGCJ02(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude));\n result = projection.project(new Cesium.Cartographic(Cesium.Math.toRadians(result[0]), Cesium.Math.toRadians(result[1])));\n return new Cesium.Cartesian2(result.x, result.y);\n };\n _this2._projection.unproject = function (cartesian, result) {\n var cartographic = projection.unproject(cartesian);\n result = _transform_CoordTransform__WEBPACK_IMPORTED_MODULE_10__[\"default\"].GCJ02ToWGS84(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude));\n return new Cesium.Cartographic(Cesium.Math.toRadians(result[0]), Cesium.Math.toRadians(result[1]));\n };\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(AmapMercatorTilingScheme, _Cesium$WebMercatorTi);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(AmapMercatorTilingScheme);\n }(Cesium.WebMercatorTilingScheme);\n return new AmapMercatorTilingScheme(options);\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var _this3 = this;\n var state,\n contentElm,\n html,\n nameElm,\n alphaElm,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n state = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 5;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '底图属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this3.name = _this3.name.trim();\n if (!_this3.name) {\n _this3.name = '未命名对象';\n }\n _this3.originalOptions = _this3.deepCopyObj(_this3.options);\n _this3._DialogObject.close();\n _this3.Dialog.confirmCallBack && _this3.Dialog.confirmCallBack(_this3.originalOptions);\n // syncData(this.sdk, this.options.id)\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(_this3.sdk, _this3.options.id);\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"get2DView\"])();\n if (sdk2D && sdk2D != _this3.sdk) {\n for (var i = 0; i < sdk2D.viewer.imageryLayers._layers.length; i++) {\n var layer = sdk2D.viewer.imageryLayers._layers[i];\n if (layer._id && layer._id == _this3.options.id) {\n layer.alpha = _this3.options.alpha;\n break;\n }\n }\n }\n },\n closeCallBack: function closeCallBack() {\n _this3.reset();\n _this3.Dialog.closeCallBack && _this3.Dialog.closeCallBack();\n },\n // resetCallBack: () => {\n // this.name = this.originalOptions.name\n // this.alpha = this.originalOptions.alpha\n // this.Dialog.resetCallBack && this.Dialog.resetCallBack()\n // },\n removeCallBack: function removeCallBack() {\n _this3.Dialog.removeCallBack && _this3.Dialog.removeCallBack();\n }\n }, true);\n case 5:\n this._DialogObject = _context2.sent;\n contentElm = document.createElement('div');\n contentElm.style.width = '300px';\n html = \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\uFF1A\\n \\n
\\n
\\n
\\n
\\n \\u900F\\u660E\\u5EA6\\uFF1A\\n \\n
\\n
\\n
\\n \";\n contentElm.innerHTML = html;\n nameElm = contentElm.getElementsByClassName('name')[0];\n alphaElm = contentElm.getElementsByClassName('alpha')[0];\n nameElm.value = this.name;\n alphaElm.value = this.alpha;\n nameElm.addEventListener('input', function () {\n _this3.name = nameElm.value;\n });\n alphaElm.addEventListener('input', function () {\n _this3.alpha = alphaElm.value;\n });\n this._DialogObject.contentAppChild(contentElm);\n this._elms.name = [nameElm];\n this._elms.alpha = [alphaElm];\n case 19:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity && !this._DialogObject) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n this.alpha = this.options.alpha;\n this.brightness = this.options.brightness;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseLayer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTGF5ZXIvaW5kZXguanM/ZDBjOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTEtMjAgMTg6MDZcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMS0yMCAxODowNlxyXG4gKi9cclxuXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgQ29vcmRUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uLy4uLy4uL3RyYW5zZm9ybS9Db29yZFRyYW5zZm9ybVwiO1xyXG5pbXBvcnQgQmFzZVNvdXJjZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IHsgc3luY0RhdGEsIGdldDJEVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBCYXNlTGF5ZXIgZXh0ZW5kcyBCYXNlU291cmNlIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIHN1cGVyLnNldERlZmF1bHRWYWx1ZSgpO1xyXG4gICAgdGhpcy5vcHRpb25zLmFscGhhID0gdGhpcy5vcHRpb25zLmFscGhhID8/IDFcclxuICAgIHRoaXMub3B0aW9ucy5icmlnaHRuZXNzID0gdGhpcy5vcHRpb25zLmJyaWdodG5lc3MgPz8gMVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxheWVySW5kZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHkgPyB0aGlzLmVudGl0eS5fbGF5ZXJJbmRleCA6IHVuZGVmaW5lZFxyXG4gIH1cclxuXHJcbiAgZ2V0IGxheWVyX2luZGV4KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5ID8gdGhpcy5lbnRpdHkuX2xheWVySW5kZXggOiB1bmRlZmluZWRcclxuICB9XHJcblxyXG4gIGdldCBicmlnaHRuZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5icmlnaHRuZXNzXHJcbiAgfVxyXG5cclxuICBzZXQgYnJpZ2h0bmVzcyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYnJpZ2h0bmVzcyA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5lbnRpdHkuYnJpZ2h0bmVzcyA9IE51bWJlcih2KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFscGhhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbHBoYVxyXG4gIH1cclxuXHJcblxyXG4gIHNldCBhbHBoYSh2KSB7XHJcbiAgICB2ID0gTnVtYmVyKHYpXHJcbiAgICBpZiAodiA+IDEpIHYgPSAxXHJcbiAgICBpZiAodiA8IDApIHYgPSAwXHJcbiAgICB0aGlzLmVudGl0eS5hbHBoYSA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5hbHBoYSA9IHZcclxuICAgIHRoaXMuX2VsbXMuYWxwaGEgJiYgdGhpcy5fZWxtcy5hbHBoYS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2NyaXB0aW9uIOaPkOmrmOWbvuWxgueahOS4gOWxguWxgue6p1xyXG4gICAqIEBtZXRob2QgbGF5ZXJSYWlzZVxyXG4gICAqIEBwYXJhbSBpZCB7c3RyaW5nfSDlm77lsYJpZFxyXG4gICAqQG1lbWJlck9mIExheWVyXHJcbiAgICogKi9cclxuICBsYXllclJhaXNlKGlkKSB7XHJcbiAgICB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZSh0aGlzLmVudGl0eSlcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyICYmIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSAmJiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlID09PSAnZmx3JyB8fCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdqd3cnKSkge1xyXG4gICAgICAgIGxldCBsYXllciA9IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV1cclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZVRvVG9wKGxheWVyKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGF5ZXJJbmRleCA9IHRoaXMuZW50aXR5Ll9sYXllckluZGV4XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHkuX2xheWVySW5kZXhcclxuICB9XHJcblxyXG4gIC8qKkBkZXNjcmlwdGlvbiDpmY3kvY7lm77lsYLnmoTkuIDlsYLlsYLnuqdcclxuICAgKiBAbWV0aG9kIGxheWVyTG93ZXJcclxuICAgKiBAbWVtYmVyT2YgTGF5ZXJcclxuXHJcbiAgICogKi9cclxuICBsYXllckxvd2VyKCkge1xyXG4gICAgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMubG93ZXIodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLm9wdGlvbnMubGF5ZXJJbmRleCA9IHRoaXMuZW50aXR5Ll9sYXllckluZGV4XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHkuX2xheWVySW5kZXhcclxuICB9XHJcblxyXG4gIC8qKkBkZXNjcmlwdGlvbiDnva7pobZcclxuICAgKiBAbWV0aG9kIGxheWVyVG9Ub3BcclxuICAgKiBAbWVtYmVyT2YgTGF5ZXJcclxuXHJcbiAgICogKi9cclxuICBsYXllclRvVG9wKCkge1xyXG4gICAgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMucmFpc2VUb1RvcCh0aGlzLmVudGl0eSlcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyICYmIHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSAmJiAodGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlID09PSAnZmx3JyB8fCB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdqd3cnKSkge1xyXG4gICAgICAgIGxldCBsYXllciA9IHRoaXMuc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV1cclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZVRvVG9wKGxheWVyKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGF5ZXJJbmRleCA9IHRoaXMuZW50aXR5Ll9sYXllckluZGV4XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHkuX2xheWVySW5kZXhcclxuICB9XHJcblxyXG4gIC8qKkBkZXNjcmlwdGlvbiDnva7lupVcclxuICAgKiBAbWV0aG9kIGxvd2VyVG9Cb3R0b21cclxuICAgKiBAbWVtYmVyT2YgTGF5ZXJcclxuXHJcbiAgICogKi9cclxuICBsYXllclRvQm90dG9tKCkge1xyXG4gICAgdGhpcy5zZGsudmlld2VyLmltYWdlcnlMYXllcnMubG93ZXJUb0JvdHRvbSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMub3B0aW9ucy5sYXllckluZGV4ID0gdGhpcy5lbnRpdHkuX2xheWVySW5kZXhcclxuICAgIHJldHVybiB0aGlzLmVudGl0eS5fbGF5ZXJJbmRleFxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgc3VwZXIucmVtb3ZlKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2NyaXB0aW9uIOWumuS9jVxyXG4gICAqIEBtZXRob2QgZmx5VG9cclxuICAgKiBAbWVtYmVyT2YgTGF5ZXJcclxuXHJcbiAgICogKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5mbHlUbyh0aGlzLmVudGl0eSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8q6auY5b6355qE57qg5YGPKi9cclxuICBhbWFwTWVyY2F0b3JUaWxpbmdTY2hlbWUob3B0aW9ucykge1xyXG4gICAgY2xhc3MgQW1hcE1lcmNhdG9yVGlsaW5nU2NoZW1lIGV4dGVuZHMgQ2VzaXVtLldlYk1lcmNhdG9yVGlsaW5nU2NoZW1lIHtcclxuICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpXHJcbiAgICAgICAgbGV0IHByb2plY3Rpb24gPSBuZXcgQ2VzaXVtLldlYk1lcmNhdG9yUHJvamVjdGlvbigpXHJcbiAgICAgICAgdGhpcy5fcHJvamVjdGlvbi5wcm9qZWN0ID0gZnVuY3Rpb24gKGNhcnRvZ3JhcGhpYywgcmVzdWx0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBDb29yZFRyYW5zZm9ybS5XR1M4NFRvR0NKMDIoXHJcbiAgICAgICAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHJlc3VsdCA9IHByb2plY3Rpb24ucHJvamVjdChcclxuICAgICAgICAgICAgbmV3IENlc2l1bS5DYXJ0b2dyYXBoaWMoXHJcbiAgICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHJlc3VsdFswXSksXHJcbiAgICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHJlc3VsdFsxXSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMihyZXN1bHQueCwgcmVzdWx0LnkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Byb2plY3Rpb24udW5wcm9qZWN0ID0gZnVuY3Rpb24gKGNhcnRlc2lhbiwgcmVzdWx0KSB7XHJcbiAgICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gcHJvamVjdGlvbi51bnByb2plY3QoY2FydGVzaWFuKVxyXG4gICAgICAgICAgcmVzdWx0ID0gQ29vcmRUcmFuc2Zvcm0uR0NKMDJUb1dHUzg0KFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSksXHJcbiAgICAgICAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0b2dyYXBoaWMoXHJcbiAgICAgICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhyZXN1bHRbMF0pLFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMocmVzdWx0WzFdKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQW1hcE1lcmNhdG9yVGlsaW5nU2NoZW1lKG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24g57yW6L6R5qGGXHJcbiAgICogQHBhcmFtIHN0YXRlPWZhbHNlIHtib29sZWFufSDnirbmgIE6IHRydWXmiZPlvIAsIGZhbHNl5YWz6ZetXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgIHRpdGxlOiAn5bqV5Zu+5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAvLyBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gICAgICAgIGlmIChzZGsyRCAmJiBzZGsyRCAhPSB0aGlzLnNkaykge1xyXG4gICAgICAgICAgZm9yKGxldCBpPTA7aTxzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgbGV0IGxheWVyID0gc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAgICAgICBpZihsYXllci5faWQgJiYgbGF5ZXIuX2lkID09IHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgICAgICAgIGxheWVyLmFscGhhID0gdGhpcy5vcHRpb25zLmFscGhhXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgICAvLyByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgIC8vICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgICAvLyAgIHRoaXMuYWxwaGEgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hbHBoYVxyXG4gICAgICAvLyAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgfSwgdHJ1ZSlcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGNvbnRlbnRFbG0uc3R5bGUud2lkdGggPSAnMzAwcHgnXHJcbiAgICBsZXQgaHRtbCA9IGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA2MHB4O1wiPuWQjeensO+8mjwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IG5hbWVcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA2MHB4O1wiPumAj+aYjuW6pu+8mjwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImFscGhhXCIgbWluPVwiMFwiIG1heD1cIjFcIiBzdGVwPVwiMC4wMVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYFxyXG4gICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sXHJcbiAgICBsZXQgbmFtZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmFtZScpWzBdXHJcbiAgICBsZXQgYWxwaGFFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FscGhhJylbMF1cclxuICAgIG5hbWVFbG0udmFsdWUgPSB0aGlzLm5hbWVcclxuICAgIGFscGhhRWxtLnZhbHVlID0gdGhpcy5hbHBoYVxyXG4gICAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgdGhpcy5uYW1lID0gbmFtZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICAgIGFscGhhRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmFscGhhID0gYWxwaGFFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICB0aGlzLl9lbG1zLm5hbWUgPSBbbmFtZUVsbV1cclxuICAgIHRoaXMuX2VsbXMuYWxwaGEgPSBbYWxwaGFFbG1dXHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkgJiYgIXRoaXMuX0RpYWxvZ09iamVjdCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5hbHBoYSA9IHRoaXMub3B0aW9ucy5hbHBoYVxyXG4gICAgdGhpcy5icmlnaHRuZXNzID0gdGhpcy5vcHRpb25zLmJyaWdodG5lc3NcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZUxheWVyXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBNURBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBcENBO0FBcUNBO0FBQ0E7QUFDQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE1RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseLayer/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseModel/Model/_element.js": -/*!*************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseModel/Model/_element.js ***! - \*************************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u6700\\u5927\\u6BD4\\u4F8B\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u6700\\u5C0F\\u50CF\\u7D20\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u56FA\\u5B9A\\u5927\\u5C0F\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n

\\u65CB\\u8F6C

\\n
\\n
\\n
\\n x \\u8F74\\n \\n
\\n \\n \\xB0\\n \\n
\\n
\\n
\\n
\\n
\\n y \\u8F74\\n \\n
\\n \\n \\xB0\\n \\n
\\n
\\n
\\n
\\n
\\n z \\u8F74\\n \\n
\\n \\n \\xB0\\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\u7F29\\u653E\\n
\\n \\n \\u662F\\u5426\\u7B49\\u6BD4\\u4F8B\\u7F29\\u653E\\n
\\n
\\n
\\n
\\n
\\n
\\n x \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n y \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n z \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7B49\\u6BD4\\u4F8B\\u7F29\\u653E\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n

\\u9AD8\\u5EA6

\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n \\n
\\n \\n m\\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwvX2VsZW1lbnQuanM/YmRkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgcmV0dXJuIGBcclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNjBweDtcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwibG5nXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwcHg7XCI+5pyA5aSn5q+U5L6LPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwLjFcIiBtYXg9XCI5OTk5OVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJtYXhpbXVtU2NhbGVcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPuWAjTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57qs5bqmPC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTkwXCIgbWF4PVwiOTBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNjBweDtcIj7mnIDlsI/lg4/ntKA8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OVwiIEBtb2RlbD1cIm1pbmltdW1QaXhlbFNpemVcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pq5jluqY8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OVwiIG1heD1cIjk5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA2MHB4O1wiPuWbuuWumuWkp+Wwjzwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwic2NhbGVCeURpc3RhbmNlXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxESVYtY3ktdGFicyBpZD1cIm1vZGVsLWVkaXQtdGFic1wiPlxyXG4gICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLlsZ7mgKfkv6Hmga9cIj5cclxuICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5pa55ZCR5L+h5oGvXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJsZS1sZWZ0LWxpbmVcIj7ml4vovaw8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPngg6L20PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMzYwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwicm90YXRlWFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIzNjBcIiBAbW9kZWw9XCJyb3RhdGVYXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPsKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnkg6L20PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMzYwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwicm90YXRlWVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIzNjBcIiBAbW9kZWw9XCJyb3RhdGVZXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPsKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnog6L20PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMzYwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwicm90YXRlWlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIzNjBcIiBAbW9kZWw9XCJyb3RhdGVaXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPsKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJsZS1sZWZ0LWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPue8qeaUvjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj7mmK/lkKbnrYnmr5TkvovnvKnmlL48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tZXF1YWxcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+eCDovbQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImZsZXg6IDE7bWFyZ2luLXJpZ2h0OiAxNXB4O1wiIHR5cGU9XCJyYW5nZVwiIG1heD1cIjk5OTk5XCIgbWluPVwiMFwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwic2NhbGVYXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OVwiIEBtb2RlbD1cInNjYWxlWFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPuWAjTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnkg6L20PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJmbGV4OiAxO21hcmdpbi1yaWdodDogMTVweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCI5OTk5OVwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cInNjYWxlWVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIiBzdHlsZT1cIndpZHRoOiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTlcIiBAbW9kZWw9XCJzY2FsZVlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj56IOi9tDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiOTk5OTlcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzY2FsZVpcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5XCIgQG1vZGVsPVwic2NhbGVaXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+5YCNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGVxdWFsXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuetieavlOS+i+e8qeaUvjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiOTk5OTlcIiBtaW49XCIwXCIgc3RlcD1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5XCIgc3RlcD1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImxhYmxlLWxlZnQtbGluZVwiPumrmOW6pjwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiOTk5OTk5XCIgbWluPVwiLTk5OTk5XCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTlcIiBtYXg9XCI5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+etvumjjuagvFwiPlxyXG4gICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQTZMQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseModel/Model/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseModel/Model/index.js": -/*!**********************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseModel/Model/index.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BaseSource/BaseModel/Model/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _ModelController_EditGltf__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../ModelController/EditGltf */ \"./src/Obj/ModelController/EditGltf.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseModel/index.js\");\n/* harmony import */ var _Draw_drawPoint_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../../../Draw/drawPoint.js */ \"./src/Draw/drawPoint.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Model = /*#__PURE__*/function (_BaseModel) {\n /**\r\n * @constructor\r\n * @description 加载模型\r\n * @param sdk {object} sdk\r\n * @param options {object} 模型参数\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 模型显隐\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 资源地址\r\n * @param options.position {object} 模型位置\r\n * @param options.position.lng {number} 经度\r\n * @param options.position.lat {number} 纬度\r\n * @param options.position.alt {number} 高度\r\n * @param options.scale {object} 比例\r\n * @param options.scale.x=1 {number} x轴比例\r\n * @param options.scale.y=1 {number} y轴比例\r\n * @param options.scale.z=1 {number} z轴比例\r\n * @param options.maximumScale=100 {number} 最大比例\r\n * @param options.minimumPixelSize=60 {number} 最小像素\r\n * @param options.scaleByDistance=true {boolean} 随视野缩放\r\n * @param options.rotate {object} 旋转角度\r\n * @param options.rotate.x {number} x轴旋转度数\r\n * @param options.rotate.y {number} y轴旋转度数\r\n * @param options.rotate.z {number} z轴旋转度数\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function Model(earth) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Model);\n _this2 = _callSuper(this, Model, [earth, options, _Dialog = {}]);\n if (!options.position) {\n console.warn(\"position is required!\");\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(_this2);\n }\n if (!options.position.lng && options.position.lng !== 0) {\n console.warn(\"lng is required!\");\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(_this2);\n }\n if (!options.position.lat && options.position.lat !== 0) {\n console.warn(\"lat is required!\");\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(_this2);\n }\n _this2._timeoutEventObject = null;\n if (_this2.options.earth) {\n delete _this2.options.earth;\n }\n _this2.picking = true;\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || '#ffffff';\n // this.options.scale = (options.scale || options.scale === 0) ? options.scale : 1\n if (typeof options.scale === 'number') {\n _this2.options.scale = {};\n _this2.options.scale.x = options.scale;\n _this2.options.scale.y = options.scale;\n _this2.options.scale.z = options.scale;\n } else {\n _this2.options.scale = options.scale || {};\n _this2.options.scale.x = _this2.options.scale.x || _this2.options.scale.x === 0 ? _this2.options.scale.x : 1;\n _this2.options.scale.y = _this2.options.scale.y || _this2.options.scale.y === 0 ? _this2.options.scale.y : 1;\n _this2.options.scale.z = _this2.options.scale.z || _this2.options.scale.z === 0 ? _this2.options.scale.z : 1;\n }\n _this2.options.url = options.url;\n _this2.options.maximumScale = options.maximumScale || options.maximumScale === 0 ? options.maximumScale : 100;\n _this2.options.minimumPixelSize = options.minimumPixelSize || options.minimumPixelSize === 0 ? options.minimumPixelSize : 60;\n _this2.options.position = options.position = options.position || {};\n _this2.options.position = {\n lng: options.position.lng,\n lat: options.position.lat,\n alt: options.position.alt\n };\n _this2.options.scaleByDistance = options.scaleByDistance || options.scaleByDistance === false ? options.scaleByDistance : true;\n _this2.options.rotate = options.rotate = options.rotate || {};\n _this2.options.rotate.x = options.rotate.x || 0;\n _this2.options.rotate.y = options.rotate.y || 0;\n _this2.options.rotate.z = options.rotate.z || 0;\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.vr = _this2.options.attribute.vr || {};\n _this2.options.attribute.vr.content = _this2.options.attribute.vr.content || [];\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.attribute.camera = _this2.options.attribute.camera || {};\n _this2.options.attribute.camera = _this2.options.attribute.camera.content || [];\n _this2.options.attribute.ISC = _this2.options.attribute.ISC || {};\n _this2.options.attribute.ISC.content = _this2.options.attribute.ISC.content || [];\n _this2.options.attribute.goods = _this2.options.attribute.goods || {};\n _this2.options.attribute.goods.content = _this2.options.attribute.goods.content || [];\n _this2.options.attributeType = options.attributeType || 'richText';\n _this2._elms = {};\n _this2.entity = {\n id: _this2.options.id\n };\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n _this2.on();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Model, _BaseModel);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Model, [{\n key: \"type\",\n get: function get() {\n return \"glb\";\n }\n }, {\n key: \"loadModel\",\n value: function () {\n var _loadModel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(url) {\n var _this3 = this;\n var _this, options, cartographic, position;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_21__[\"syncData\"])(this.sdk, this.options.id);\n if (!(!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene)) {\n _context.next = 3;\n break;\n }\n return _context.abrupt(\"return\");\n case 3:\n url = this.replaceHost(url, this.options.host);\n // this.handler = new Cesium.ScreenSpaceEventHandler(\n // this.sdk.viewer.canvas\n // )\n // this.handler.setInputAction((event) => {\n // let pickedObject = this.sdk.viewer.scene.pick(event.position);\n // // 判断是否拾取到模型\n // if (Cesium.defined(pickedObject)) {\n // let cartesian = this.sdk.viewer.scene.pickPosition(event.position);\n // // 是否获取到空间坐标\n // if (Cesium.defined(cartesian)) {\n // // // 空间坐标转世界坐标(弧度)\n // let cartographic = Cesium.Cartographic.fromCartesian(cartesian);\n // // 弧度转为角度(经纬度)\n // let lon = Cesium.Math.toDegrees(cartographic.longitude);\n // let lat = Cesium.Math.toDegrees(cartographic.latitude);\n // //模型高度\n // let height = cartographic.height;\n // // console.log(\"模型表面的经纬度高程是:\", {\n // // lng: lon,\n // // lat: lat,\n // // alt: height,\n // // });\n // }\n // }\n // }, Cesium.ScreenSpaceEventType.LEFT_CLICK)\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n options = {\n id: this.options.id,\n url: url,\n show: this.options.show,\n // 是否显示模型\n maximumScale: this.options.scaleByDistance ? undefined : this.options.maximumScale,\n minimumPixelSize: this.options.scaleByDistance ? undefined : this.options.minimumPixelSize\n // scale: this.options.scale,\n // minimumPixelSize: 1\n };\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context.next = 13;\n break;\n }\n _context.next = 10;\n return Cesium.Model.fromGltfAsync(options);\n case 10:\n this.entity = _context.sent;\n _context.next = 16;\n break;\n case 13:\n _context.next = 15;\n return Cesium.Model.fromGltf(options);\n case 15:\n this.entity = _context.sent;\n case 16:\n this.entity.imageBasedLighting.luminanceAtZenith = 0.6;\n this.entity.color = Cesium.Color.fromCssColorString(this.options.color);\n // this.entity.colorBlendMode = 1\n // 将模型添加到场景中\n _context.next = 20;\n return this.sdk.viewer.scene.primitives.add(this.entity);\n case 20:\n cartographic = Cesium.Cartographic.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt);\n position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.position = position;\n this.entity.rotate = _objectSpread({}, this.options.rotate);\n this.entity.customScale = this.options.scale;\n\n // 设置模型的旋转角度,使其水平放置于地面\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n // 模型大小比例\n // Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(this.options.scale, this.options.scale, this.options.scale), this.entity.modelMatrix)\n\n // Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(this.options.scale, this.options.scale, this.options.scale), this.entity.modelMatrix)\n if (Number(Cesium.VERSION.split('.')[1]) >= 107) {\n this.entity.readyEvent.addEventListener(function () {\n _this3.entity.originalBoundingSphereRadius = _this3.entity.boundingSphere.radius;\n _this3.editObj = new _ModelController_EditGltf__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this3.sdk, _this3.entity);\n _this3.editObj.transformCallBack = _this3.rotationEditingCallBack;\n _this3.updateModel(_this3.options.position.lng, _this3.options.position.lat, _this3.options.position.alt, _this3.options.rotate.x, _this3.options.rotate.y, _this3.options.rotate.z, _this3.options.scale);\n // 标签\n if (!_this3.label) {\n _this3.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this3.sdk, {\n id: _this3.options.id,\n show: _this3.options.show ? _this3.options.label.show : false,\n position: [_this3.options.position.lng, _this3.options.position.lat, _this3.options.position.alt],\n text: _this3.options.name,\n fontSize: _this3.options.label.fontSize,\n fontFamily: _this3.options.label.fontFamily ? _this3.options.label.fontFamily : 0,\n color: _this3.options.label.color,\n pixelOffset: _this3.options.label.pixelOffset,\n backgroundColor: _this3.options.label.backgroundColor,\n lineColor: _this3.options.label.lineColor,\n lineWidth: _this3.options.label.lineWidth,\n scaleByDistance: _this3.options.label.scaleByDistance,\n near: _this3.options.label.near,\n far: _this3.options.label.far\n }, _this3.entity);\n }\n _this3.entity.isMove = true;\n clearTimeout(_this3._timeoutEventObject);\n _this3._timeoutEventObject = setTimeout(function () {\n _this3.entity && (_this3.entity.isMove = false);\n }, 500);\n });\n this.activeAnimate = this.options.activeAnimate;\n this.modelAnimations = this.entity.loader.components.animations;\n } else {\n this.entity.readyPromise.then(function (entity) {\n _this3.entity.originalBoundingSphereRadius = _this3.entity.boundingSphere.radius;\n _this3.editObj = new _ModelController_EditGltf__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this3.sdk, _this3.entity);\n _this3.editObj.transformCallBack = _this3.rotationEditingCallBack;\n _this3.updateModel(_this3.options.position.lng, _this3.options.position.lat, _this3.options.position.alt, _this3.options.rotate.x, _this3.options.rotate.y, _this3.options.rotate.z, _this3.options.scale);\n\n // 标签\n if (!_this3.label) {\n _this3.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this3.sdk, {\n id: _this3.options.id,\n show: _this3.options.show ? _this3.options.label.show : false,\n position: [_this3.options.position.lng, _this3.options.position.lat, _this3.options.position.alt],\n text: _this3.options.name,\n fontSize: _this3.options.label.fontSize,\n fontFamily: _this3.options.label.fontFamily ? _this3.options.label.fontFamily : 0,\n color: _this3.options.label.color,\n pixelOffset: _this3.options.label.pixelOffset,\n backgroundColor: _this3.options.label.backgroundColor,\n lineColor: _this3.options.label.lineColor,\n lineWidth: _this3.options.label.lineWidth,\n scaleByDistance: _this3.options.label.scaleByDistance,\n near: _this3.options.label.near,\n far: _this3.options.label.far,\n ground: false\n }, _this3.entity);\n }\n _this3.entity.isMove = true;\n clearTimeout(_this3._timeoutEventObject);\n _this3._timeoutEventObject = setTimeout(function () {\n _this3.entity && (_this3.entity.isMove = false);\n }, 500);\n\n // 动画\n // entity.activeAnimations.add({\n // index: 1,\n // loop: Cesium.ModelAnimationLoop.REPEAT,\n // speedup: 2,\n // reverse: false\n // })\n\n _this3.activeAnimate = _this3.options.activeAnimate;\n _this3.modelAnimations = _this3.entity.loader.components.animations;\n });\n }\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 28:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function loadModel(_x) {\n return _loadModel.apply(this, arguments);\n }\n return loadModel;\n }()\n }, {\n key: \"getModelAnimations\",\n value: function () {\n var _getModelAnimations = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var _this4 = this;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (Number(Cesium.VERSION.split('.')[1]) >= 107) {\n _this4.entity.readyEvent.addEventListener(function () {\n _this4.modelAnimations = _this4.entity.loader.components.animations;\n resolve(_this4.modelAnimations);\n });\n } else {\n _this4.entity.readyPromise.then(function (entity) {\n _this4.modelAnimations = _this4.entity.loader.components.animations;\n resolve(_this4.modelAnimations);\n });\n }\n }));\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function getModelAnimations() {\n return _getModelAnimations.apply(this, arguments);\n }\n return getModelAnimations;\n }() // async loadModelBy2D(url) {\n // this.entity = this.sdk.viewer.entities.add({\n // show: this.options.show,\n // rectangle: {\n // coordinates: new Cesium.CallbackProperty(() => {\n // let gap = Math.abs(Math.cos(Math.PI / 180 * this.options.position.lat)) * (0.0001 * this.options.scale)\n // let fromDegreesArray = [\n // this.options.position.lng - (0.0001 * this.options.scale), this.options.position.lat - gap,\n // this.options.position.lng + (0.0001 * this.options.scale), this.options.position.lat + gap,\n // ]\n // return Cesium.Rectangle.fromDegrees(...fromDegreesArray)\n // }, false),\n // material: this.options.url,\n // rotation: new Cesium.CallbackProperty(() => {\n // return Cesium.Math.toRadians(this.options.angle)\n // }, false),\n // stRotation: new Cesium.CallbackProperty(() => {\n // return Cesium.Math.toRadians(this.options.angle)\n // }, false)\n // },\n // })\n // if (this.sdk.viewer._element.className === 'cesium-viewer 2d') {\n // this.entity.rectangle.height = 0\n // }\n // }\n }, {\n key: \"remove\",\n value: function remove() {\n _superPropGet(Model, \"remove\", this, 3)([]);\n this.label && this.label.remove();\n this.positionEditing = false;\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var _this5 = this;\n var orientation, lng, lat, alt, destination, position, boundingSphere;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 22;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 15;\n break;\n }\n _context3.next = 14;\n return this.getClampToHeight(position);\n case 14:\n position.alt = _context3.sent;\n case 15:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 23;\n break;\n case 22:\n if (Number(Cesium.VERSION.split('.')[1]) >= 107) {\n if (this.entity.ready) {\n boundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt), this.entity.originalBoundingSphereRadius * this.options.scale.z * 2);\n this.sdk.viewer.camera.flyToBoundingSphere(boundingSphere);\n }\n } else {\n this.entity.readyPromise.then(function () {\n var boundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(_this5.options.position.lng, _this5.options.position.lat, _this5.options.position.alt), (_this5.entity.originalBoundingSphereRadius || _this5.entity.boundingSphere.radius) * _this5.options.scale.z * 2);\n _this5.sdk.viewer.camera.flyToBoundingSphere(boundingSphere);\n });\n }\n case 23:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"on\",\n value: function on() {\n return this.add();\n }\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(Model, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getHost\"])();\n this.options.url = this.options.url || \"\";\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this.options.label.text = v;\n this.label && (this.label.text = v);\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.color = v;\n this.entity.color = Cesium.Color.fromCssColorString(v);\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.position.lng;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.position = {\n lng: Number(Number(v).toFixed(8)),\n lat: this.options.position.lat,\n alt: this.options.position.alt\n };\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label && (this.label.position = [this.options.position.lng, this.options.position.lat, this.options.position.alt]);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.position.lng;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.position.lat;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.position = {\n lng: this.options.position.lng,\n lat: Number(Number(v).toFixed(8)),\n alt: this.options.position.alt\n };\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label && (this.label.position = [this.options.position.lng, this.options.position.lat, this.options.position.alt]);\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this8.options.position.lat;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.position.alt;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.position = {\n lng: this.options.position.lng,\n lat: this.options.position.lat,\n alt: Number(Number(v).toFixed(2))\n };\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label && (this.label.position = [Number(this.options.position.lng), Number(this.options.position.lat), Number(this.options.position.alt)]);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this9.options.position.alt;\n });\n }\n }, {\n key: \"maximumScale\",\n get: function get() {\n return this.options.maximumScale;\n },\n set: function set(v) {\n this.options.maximumScale = v;\n this.entity.maximumScale = this.scaleByDistance ? undefined : v;\n this._elms.maximumScale && this._elms.maximumScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"minimumPixelSize\",\n get: function get() {\n return this.options.minimumPixelSize;\n },\n set: function set(v) {\n this.options.minimumPixelSize = v;\n this.entity.minimumPixelSize = this.scaleByDistance ? undefined : this.options.minimumPixelSize;\n this._elms.minimumPixelSize && this._elms.minimumPixelSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scaleByDistance\",\n get: function get() {\n return this.options.scaleByDistance;\n },\n set: function set(v) {\n this.options.scaleByDistance = v;\n this.entity.maximumScale = v ? undefined : this.maximumScale;\n this.entity.minimumPixelSize = v ? undefined : this.options.minimumPixelSize;\n this._elms.scaleByDistance && this._elms.scaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"rotateX\",\n get: function get() {\n return this.options.rotate.x;\n },\n set: function set(v) {\n var _this10 = this;\n this.options.rotate.x = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.rotateX && this._elms.rotateX.forEach(function (item) {\n item.value = _this10.options.rotate.x;\n });\n }\n }, {\n key: \"rotateY\",\n get: function get() {\n return this.options.rotate.y;\n },\n set: function set(v) {\n var _this11 = this;\n this.options.rotate.y = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.rotateY && this._elms.rotateY.forEach(function (item) {\n item.value = _this11.options.rotate.y;\n });\n }\n }, {\n key: \"rotateZ\",\n get: function get() {\n return this.options.rotate.z;\n },\n set: function set(v) {\n var _this12 = this;\n this.options.rotate.z = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.rotateZ && this._elms.rotateZ.forEach(function (item) {\n item.value = _this12.options.rotate.z;\n });\n }\n\n // get scale() {\n // return this.options.scale\n // }\n\n // set scale(v) {\n // this.options.scale = v\n // this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale)\n // this._elms.scale && this._elms.scale.forEach((item) => {\n // item.value = v\n // })\n // }\n }, {\n key: \"scaleX\",\n get: function get() {\n return this.options.scale.x;\n },\n set: function set(v) {\n var _this13 = this;\n this.options.scale.x = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.scaleX && this._elms.scaleX.forEach(function (item) {\n item.value = _this13.options.scale.x;\n });\n }\n }, {\n key: \"scaleY\",\n get: function get() {\n return this.options.scale.y;\n },\n set: function set(v) {\n var _this14 = this;\n this.options.scale.y = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.scaleY && this._elms.scaleY.forEach(function (item) {\n item.value = _this14.options.scale.y;\n });\n }\n }, {\n key: \"scaleZ\",\n get: function get() {\n return this.options.scale.z;\n },\n set: function set(v) {\n var _this15 = this;\n this.options.scale.z = Number(Number(v).toFixed(2));\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this._elms.scaleZ && this._elms.scaleZ.forEach(function (item) {\n item.value = _this15.options.scale.z;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label && (this.label.show = v);\n } else {\n this.label && (this.label.show = false);\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this16 = this;\n this.options.label.color = v;\n this.label && (this.label.color = v);\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this16.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this16.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this16.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this16._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label && (this.label.fontSize = v);\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label && (this.label.scaleByDistance = v);\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label && (this.label.lineWidth = v);\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label && (this.label.pixelOffset = v);\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this17 = this;\n this.options.label.lineColor = v;\n this.label && (this.label.lineColor = v);\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this17.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this17.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this17.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this17._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this18 = this;\n this.options.label.backgroundColor[0] = v;\n this.label && (this.label.backgroundColor = [v, this.label.backgroundColor[1]]);\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this18.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this18.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this18.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this18._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this19 = this;\n this.options.label.backgroundColor[1] = v;\n this.label && (this.label.backgroundColor = [this.label.backgroundColor[0], v]);\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this19.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this19.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this19.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this19._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"attributeType\",\n get: function get() {\n return this.options.attributeType;\n },\n set: function set(v) {\n this.options.attributeType = v;\n this._elms.attributeType && this._elms.attributeType.forEach(function (item) {\n item.value = v;\n });\n var attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content');\n for (var i = 0; i < attributeContent.length; i++) {\n if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) {\n attributeContent[i].style.display = 'block';\n } else {\n attributeContent[i].style.display = 'none';\n }\n }\n }\n }, {\n key: \"attributeLink\",\n get: function get() {\n return this.options.attribute.link.content;\n },\n set: function set(v) {\n var _this20 = this;\n this.options.attribute.link.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.link.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.link.content[i].name + \"
\\n
\" + this.options.attribute.link.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(index) {\n var table, tableContent, item, _loop, _i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this20.options.attribute.link.content;\n case 2:\n _this20.attributeLink = _context6.sent;\n table = _this20._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop(_i) {\n var height, _html, textareaElm, td, btn, n, _iterator, _step, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!(index === _i)) {\n _context5.next = 36;\n break;\n }\n height = item[_i].offsetHeight;\n _html = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i].innerHTML = _html;\n textareaElm = item[_i].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this20.options.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this20.options.attribute.link.content[index].url;\n btn = item[_i].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context5.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context5.next = 14;\n break;\n }\n return _context5.abrupt(\"continue\", 32);\n case 14:\n _iterator = _createForOfIteratorHelper(btn[n].attributes);\n _context5.prev = 15;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop2$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n m = _step.value;\n if (!(m.name === '@click')) {\n _context4.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context4.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _loop2);\n });\n _iterator.s();\n case 18:\n if ((_step = _iterator.n()).done) {\n _context5.next = 24;\n break;\n }\n return _context5.delegateYield(_loop2(), \"t0\", 20);\n case 20:\n if (!_context5.t0) {\n _context5.next = 22;\n break;\n }\n return _context5.abrupt(\"break\", 24);\n case 22:\n _context5.next = 18;\n break;\n case 24:\n _context5.next = 29;\n break;\n case 26:\n _context5.prev = 26;\n _context5.t1 = _context5[\"catch\"](15);\n _iterator.e(_context5.t1);\n case 29:\n _context5.prev = 29;\n _iterator.f();\n return _context5.finish(29);\n case 32:\n n++;\n _context5.next = 11;\n break;\n case 35:\n return _context5.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context5.stop();\n }\n }, _loop, null, [[15, 26, 29, 32]]);\n });\n _i = 0;\n case 8:\n if (!(_i < item.length)) {\n _context6.next = 15;\n break;\n }\n return _context6.delegateYield(_loop(_i), \"t0\", 10);\n case 10:\n if (!_context6.t0) {\n _context6.next = 12;\n break;\n }\n return _context6.abrupt(\"break\", 15);\n case 12:\n _i++;\n _context6.next = 8;\n break;\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee4);\n }));\n function linkEdit(_x2) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this20.options.attribute.link.content.splice(i, 1);\n _this20.attributeLink = _this20.options.attribute.link.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, \"\");\n var url = value.url && value.url.replace(/\\s/g, \"\");\n if (name && url) {\n _this20.options.attribute.link.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this20.attributeLink = _this20.options.attribute.link.content;\n },\n cancelEdit: function cancelEdit() {\n _this20.attributeLink = _this20.options.attribute.link.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect);\n fileElm.addEventListener('change', _fileSelect);\n }\n };\n var _fileSelect = function _fileSelect(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop3 = function _loop3(_i2) {\n var btn = item[_i2].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(btn[n].attributes),\n _step2;\n try {\n var _loop4 = function _loop4() {\n var m = _step2.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i2);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n for (var _i2 = 0; _i2 < item.length; _i2++) {\n _loop3(_i2);\n }\n }\n }, {\n key: \"attributeCamera\",\n get: function get() {\n return this.options.attribute.camera.content;\n },\n set: function set(v) {\n this.options.attribute.camera.content = v;\n }\n }, {\n key: \"attributeISC\",\n get: function get() {\n return this.options.attribute.ISC.content;\n },\n set: function set(v) {\n this.options.attribute.ISC.content = v;\n }\n }, {\n key: \"attributeVr\",\n get: function get() {\n return this.options.attribute.vr.content;\n },\n set: function set(v) {\n var _this21 = this;\n this.options.attribute.vr.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.vr.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.vr.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.vr.content[i].name + \"
\\n
\" + this.options.attribute.vr.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n vrEdit: function () {\n var _vrEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(index) {\n var table, tableContent, item, _loop5, _i3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this21.options.attribute.vr.content;\n case 2:\n _this21.attributeVr = _context9.sent;\n table = _this21._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop5 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop5(_i3) {\n var height, _html2, textareaElm, td, btn, n, _iterator3, _step3, _loop6;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop5$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (!(index === _i3)) {\n _context8.next = 36;\n break;\n }\n height = item[_i3].offsetHeight;\n _html2 = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i3].innerHTML = _html2;\n textareaElm = item[_i3].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i3].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this21.options.attribute.vr.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this21.options.attribute.vr.content[index].url;\n btn = item[_i3].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context8.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context8.next = 14;\n break;\n }\n return _context8.abrupt(\"continue\", 32);\n case 14:\n _iterator3 = _createForOfIteratorHelper(btn[n].attributes);\n _context8.prev = 15;\n _loop6 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop6() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop6$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n m = _step3.value;\n if (!(m.name === '@click')) {\n _context7.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i3);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context7.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context7.stop();\n }\n }, _loop6);\n });\n _iterator3.s();\n case 18:\n if ((_step3 = _iterator3.n()).done) {\n _context8.next = 24;\n break;\n }\n return _context8.delegateYield(_loop6(), \"t0\", 20);\n case 20:\n if (!_context8.t0) {\n _context8.next = 22;\n break;\n }\n return _context8.abrupt(\"break\", 24);\n case 22:\n _context8.next = 18;\n break;\n case 24:\n _context8.next = 29;\n break;\n case 26:\n _context8.prev = 26;\n _context8.t1 = _context8[\"catch\"](15);\n _iterator3.e(_context8.t1);\n case 29:\n _context8.prev = 29;\n _iterator3.f();\n return _context8.finish(29);\n case 32:\n n++;\n _context8.next = 11;\n break;\n case 35:\n return _context8.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context8.stop();\n }\n }, _loop5, null, [[15, 26, 29, 32]]);\n });\n _i3 = 0;\n case 8:\n if (!(_i3 < item.length)) {\n _context9.next = 15;\n break;\n }\n return _context9.delegateYield(_loop5(_i3), \"t0\", 10);\n case 10:\n if (!_context9.t0) {\n _context9.next = 12;\n break;\n }\n return _context9.abrupt(\"break\", 15);\n case 12:\n _i3++;\n _context9.next = 8;\n break;\n case 15:\n case \"end\":\n return _context9.stop();\n }\n }, _callee5);\n }));\n function vrEdit(_x3) {\n return _vrEdit.apply(this, arguments);\n }\n return vrEdit;\n }(),\n vrDelete: function vrDelete(i) {\n _this21.options.attribute.vr.content.splice(i, 1);\n _this21.attributeVr = _this21.options.attribute.vr.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, \"\");\n var url = value.url && value.url.replace(/\\s/g, \"\");\n if (name && url) {\n _this21.options.attribute.vr.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this21.attributeVr = _this21.options.attribute.vr.content;\n },\n cancelEdit: function cancelEdit() {\n _this21.attributeVr = _this21.options.attribute.vr.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect2);\n fileElm.addEventListener('change', _fileSelect2);\n }\n };\n var _fileSelect2 = function _fileSelect2(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop7 = function _loop7(_i4) {\n var btn = item[_i4].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator4 = _createForOfIteratorHelper(btn[n].attributes),\n _step4;\n try {\n var _loop8 = function _loop8() {\n var m = _step4.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i4);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n if (_loop8()) break;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n };\n for (var _i4 = 0; _i4 < item.length; _i4++) {\n _loop7(_i4);\n }\n }\n }, {\n key: \"attributeGoods\",\n get: function get() {\n return this.options.attribute.goods.content;\n },\n set: function set(v) {\n this.options.attribute.goods.content = v;\n }\n\n // get position() {\n // let cartographic = Cesium.Cartographic.fromCartesian(this.entity.position);\n // let lng = Cesium.Math.toDegrees(cartographic.longitude + 0.00000000663814);\n // let lat = Cesium.Math.toDegrees(cartographic.latitude + 0.00000025137835);\n // return { lng: lng, lat: lat, alt: cartographic.height - 2.19104611043234 }\n // }\n\n // set position(p) {\n\n // }\n\n /**\r\n * @desc 打开模型旋转功能\r\n * @param status {boolean}\r\n * @methodOf Source\r\n * */\n }, {\n key: \"rotationEditing\",\n get:\n /**\r\n * @desc 获取模型旋转状态\r\n * @method rotationEditing\r\n * @return boolean\r\n * @methodOf Source\r\n * */\n function get() {\n if (this.editObj.getActiveState() === 'rtation') {\n return true;\n }\n return false;\n }\n\n /**@desc 打开平移模型功能\r\n *\r\n * @memberOf Source\r\n *@param status {boolean}\r\n *\r\n * */,\n set: function set(status) {\n if (status) {\n this.editObj && this.editObj.editRtation();\n } else {\n this.editObj && this.editObj.destroy();\n }\n }\n }, {\n key: \"positionEditing\",\n get: function get() {\n if (this.editObj && this.editObj.getActiveState() === 'translational') {\n return true;\n }\n return false;\n }\n\n //平移时,坐标信息变化的回调\n ,\n set: function set(status) {\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n if (status) {\n this.leftClickState = Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_16__[\"getLeftClickState\"])();\n this.editObj && this.editObj.editTranslational();\n new _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_16__[\"closeLeftClick\"](this.sdk);\n } else {\n if (this.leftClickState && !Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_16__[\"getLeftClickState\"])()) {\n new _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_16__[\"openLeftClick\"](this.sdk);\n }\n this.editObj && this.editObj.destroy();\n }\n }\n }, {\n key: \"positionEditingCallBack\",\n get: function get() {}\n\n //旋转时,坐标信息变化的回调\n ,\n set: function set(callback) {\n return;\n }\n }, {\n key: \"rotationEditingCallBack\",\n get: function get() {\n var _this22 = this;\n return function (params) {\n // let params = this.editObj._params\n // this.options.position = {\n // lng: params.tx,\n // lat: params.ty,\n // alt: params.tz,\n // }\n _this22.lng = params.tx;\n _this22.lat = params.ty;\n _this22.alt = params.tz;\n _this22.rotateX = params.rx;\n _this22.rotateY = params.ry;\n _this22.rotateZ = params.rz;\n _this22._rotationEditingCallBack && _this22._rotationEditingCallBack(_this22.editObj._params);\n };\n },\n set: function set(callback) {\n this._rotationEditingCallBack = callback;\n }\n }, {\n key: \"activeAnimate\",\n get: function get() {\n return this.options.activeAnimate;\n },\n set: function set(v) {\n this.options.activeAnimate = v;\n if (!this.entity || !this.entity.loader.components || !this.modelAnimations) {\n return;\n }\n this.entity.activeAnimations.removeAll();\n if (this.modelAnimations && this.modelAnimations.length > 0) {\n for (var i = 0; i < this.modelAnimations.length; i++) {\n if (this.modelAnimations[i].name === v) {\n this.entity.activeAnimations.add({\n index: i,\n loop: Cesium.ModelAnimationLoop.REPEAT,\n speedup: 1,\n reverse: false\n });\n break;\n }\n }\n }\n }\n }, {\n key: \"resetAnimate\",\n value: function () {\n var _resetAnimate = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n if (this.entity) {\n _context10.next = 2;\n break;\n }\n return _context10.abrupt(\"return\");\n case 2:\n this.activeAnimate = undefined;\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.on();\n case 5:\n case \"end\":\n return _context10.stop();\n }\n }, _callee6, this);\n }));\n function resetAnimate() {\n return _resetAnimate.apply(this, arguments);\n }\n return resetAnimate;\n }()\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee7() {\n var _this23 = this;\n var state,\n _this,\n equal,\n contentElm,\n tabsElm,\n equalSwitchElm,\n equalBoxElm,\n noEqualBoxElm,\n equalElms,\n colorPicker,\n labelColorPicker,\n lineColorPicker,\n labelBackgroundColorStartPicker,\n labelBackgroundColorEndPicker,\n all_elm,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee7$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n state = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context11.next = 46;\n break;\n }\n equal = false;\n if (this.scaleX === this.scaleY && this.scaleX === this.scaleZ) {\n equal = true;\n }\n _context11.next = 9;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.sdk, this.originalOptions, {\n title: '模型属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this23.name = _this23.options.name || '未命名对象';\n _this23.originalOptions = _this23.deepCopyObj(_this23.options);\n _this23._DialogObject.close();\n var cdoptions = _this23.deepCopyObj(_this23.options);\n cdoptions.host = '';\n _this23.Dialog.confirmCallBack && _this23.Dialog.confirmCallBack(cdoptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_21__[\"syncData\"])(_this23.sdk, _this23.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(_this23.sdk, _this23.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this23.reset();\n _this23.Dialog.resetCallBack && _this23.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this23.Dialog.removeCallBack && _this23.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this23.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this23.positionEditing = false;\n _this23.editObj && _this23.editObj.destroy();\n _this23.Dialog.closeCallBack && _this23.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this23.show = show;\n _this23.Dialog.showCallBack && _this23.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n if (_this23.positionEditing) {\n _this23.positionEditing = false;\n } else {\n _this23.positionEditing = true;\n }\n }\n }, true);\n case 9:\n this._DialogObject = _context11.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' model';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeISC = this.options.attribute.ISC.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_13__[\"default\"]('model-edit-tabs', undefined, this.sdk);\n equalSwitchElm = this._DialogObject._element.content.getElementsByClassName('checkbox-box')[0].querySelector('input');\n equalBoxElm = this._DialogObject._element.content.getElementsByClassName('equal')[0];\n noEqualBoxElm = this._DialogObject._element.content.getElementsByClassName('no-equal')[0];\n equalSwitchElm.checked = equal;\n equalSwitchElm.addEventListener('change', function (e) {\n equal = e.target.checked;\n if (equal) {\n equalBoxElm.style.display = 'flex';\n noEqualBoxElm.style.display = 'none';\n _this23.scaleY = _this23.scaleX;\n _this23.scaleZ = _this23.scaleX;\n } else {\n equalBoxElm.style.display = 'none';\n noEqualBoxElm.style.display = 'flex';\n }\n });\n equalElms = equalBoxElm.getElementsByTagName('input');\n equalElms[0].value = this.scaleX;\n equalElms[1].value = this.scaleX;\n equalElms[0].addEventListener('input', function (e) {\n _this23.scaleX = e.target.value;\n _this23.scaleY = e.target.value;\n _this23.scaleZ = e.target.value;\n });\n equalElms[1].addEventListener('input', function (e) {\n _this23.scaleX = e.target.value;\n _this23.scaleY = e.target.value;\n _this23.scaleZ = e.target.value;\n });\n if (equal) {\n equalBoxElm.style.display = 'flex';\n noEqualBoxElm.style.display = 'none';\n } else {\n equalBoxElm.style.display = 'none';\n noEqualBoxElm.style.display = 'flex';\n }\n\n // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this23.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this23.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this23.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this23.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this23.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this23.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this23.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this23.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this23.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this23.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n this._elms.scaleX.push(equalElms[0], equalElms[1]);\n setTimeout(function () {\n _this23.attributeLink = _this23.options.attribute.link.content;\n _this23.attributeVr = _this23.options.attribute.vr.content;\n _this23.ISCSelect && _this23.ISCSelect();\n _this23.goodsSelect && _this23.goodsSelect();\n _this23.cameraSelect && _this23.cameraSelect();\n var tagData = _this23.attributeSelect;\n var attributeElm = _this23._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this23._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this23.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < tagData.length; _i5++) {\n if (tagData[_i5].value === attributeSelectElm.value) {\n _this23.attributeType = tagData[_i5].key;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this23._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this23._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this23.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this23.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this23._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context11.next = 46;\n break;\n case 46:\n case \"end\":\n return _context11.stop();\n }\n }, _callee7, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n this.options.position.lng = v.position.lng;\n this.options.position.lat = v.position.lat;\n this.options.position.alt = v.position.alt;\n this.options.rotate.z = -v.heading;\n this.options.rotate.x = -v.pitch;\n this.options.rotate.y = -v.roll;\n this.updateModel(this.options.position.lng, this.options.position.lat, this.options.position.alt, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label && (this.label.position = [this.options.position.lng, this.options.position.lat, this.options.position.alt]);\n }\n\n //更新模型位置\n }, {\n key: \"updateModel\",\n value: function updateModel(_tx, _ty, _tz) {\n var _this24 = this;\n var _rx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var _ry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var _rz = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var _scale = arguments.length > 6 ? arguments[6] : undefined;\n _tx = parseFloat(_tx);\n _ty = parseFloat(_ty);\n _tz = parseFloat(parseFloat(_tz).toFixed(2));\n _rx = parseFloat(_rx);\n _ry = parseFloat(_ry);\n _rz = parseFloat(_rz);\n _scale.x = parseFloat(_scale.x);\n _scale.y = parseFloat(_scale.y);\n _scale.z = parseFloat(_scale.z);\n // _scale = parseFloat(_scale)\n // this.label.position = [_tx, _ty, _tz]\n this.entity.position = new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz);\n this.entity.rotate = {\n x: _rx,\n y: _ry,\n z: _rz\n };\n this.entity.customScale = _scale;\n var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(_rx));\n var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(_ry));\n var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(_rz));\n // 平移\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz));\n // 旋转\n var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n var rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n var originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.multiply(m, rotationX, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationZ, this.entity.modelMatrix);\n // 缩放\n var scaleX = _scale.x;\n var scaleY = _scale.y;\n var scaleZ = _scale.z;\n if (scaleX === 0) {\n scaleX = 0.00001;\n }\n if (scaleY === 0) {\n scaleY = 0.00001;\n }\n if (scaleZ === 0) {\n scaleZ = 0.00001;\n }\n Cesium.Matrix4.multiplyByScale(this.entity.modelMatrix, new Cesium.Cartesian3(scaleX, scaleY, scaleZ), this.entity.modelMatrix);\n this.entity.minimumPixelSize = this.scaleByDistance ? undefined : this.options.minimumPixelSize;\n this.editObj && this.editObj.update();\n this.entity.isMove = true;\n clearTimeout(this._timeoutEventObject);\n this._timeoutEventObject = setTimeout(function () {\n _this24.entity && (_this24.entity.isMove = false);\n }, 500);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n try {\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lng = this.originalOptions.position.lng;\n this.lat = this.originalOptions.position.lat;\n this.alt = this.originalOptions.position.alt;\n this.maximumScale = this.originalOptions.maximumScale;\n this.minimumPixelSize = this.originalOptions.minimumPixelSize;\n this.scaleByDistance = this.originalOptions.scaleByDistance;\n this.rotateX = this.originalOptions.rotate.x;\n this.rotateY = this.originalOptions.rotate.y;\n this.rotateZ = this.originalOptions.rotate.z;\n this.scaleX = this.originalOptions.scale.x;\n this.scaleY = this.originalOptions.scale.y;\n this.scaleZ = this.originalOptions.scale.z;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.attributeLink = this.options.attribute.link.content;\n this.attributeVr = this.options.attribute.vr.content;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeGoods = this.options.attribute.goods.content;\n this.attributeISC = this.options.attribute.ISC.content;\n this.cameraSelect && this.cameraSelect();\n this.goodsSelect && this.goodsSelect();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_21__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(this.sdk, this.options.id);\n } catch (error) {}\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_17__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Model);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwvaW5kZXguanM/NmQ3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRIb3N0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tIFwiLi4vLi4vLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnNcIjtcclxuaW1wb3J0IEVkaXRHbHRmIGZyb20gXCIuLi8uLi8uLi8uLi9Nb2RlbENvbnRyb2xsZXIvRWRpdEdsdGZcIjtcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gXCIuLi8uLi8uLi9MYWJlbE9iamVjdFwiO1xyXG5pbXBvcnQgeyBvcGVuTGVmdENsaWNrLCBjbG9zZUxlZnRDbGljaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9HbG9iYWwvQ2xpY2tDYWxsYmFja1wiXHJcbmltcG9ydCBCYXNlTW9kZWwgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBEcmF3UG9pbnQgZnJvbSAnLi4vLi4vLi4vLi4vLi4vRHJhdy9kcmF3UG9pbnQuanMnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkLCBnZXRTZGsgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBNb2RlbCBleHRlbmRzIEJhc2VNb2RlbCB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOWKoOi9veaooeWei1xyXG4gICAqIEBwYXJhbSBzZGsge29iamVjdH0gc2RrXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5qih5Z6L5Y+C5pWwXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5ZSv5LiA5qCH6K+GXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmqKHlnovmmL7pmpBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnVybCB7c3RyaW5nfSDotYTmupDlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbiB7b2JqZWN0fSDmqKHlnovkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY2FsZSB7b2JqZWN0fSDmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY2FsZS54PTEge251bWJlcn0geOi9tOavlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNjYWxlLnk9MSB7bnVtYmVyfSB56L205q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2NhbGUuej0xIHtudW1iZXJ9IHrovbTmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhpbXVtU2NhbGU9MTAwIHtudW1iZXJ9IOacgOWkp+avlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1pbmltdW1QaXhlbFNpemU9NjAge251bWJlcn0g5pyA5bCP5YOP57SgXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlPXRydWUge2Jvb2xlYW59IOmaj+inhumHjue8qeaUvlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJvdGF0ZSB7b2JqZWN0fSDml4vovazop5LluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yb3RhdGUueCB7bnVtYmVyfSB46L205peL6L2s5bqm5pWwXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucm90YXRlLnkge251bWJlcn0geei9tOaXi+i9rOW6puaVsFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJvdGF0ZS56IHtudW1iZXJ9IHrovbTml4vovazluqbmlbBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuKiAqL1xyXG4gIGNvbnN0cnVjdG9yKGVhcnRoLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoZWFydGgsIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSlcclxuICAgIGlmICghb3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJwb3NpdGlvbiBpcyByZXF1aXJlZCFcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMucG9zaXRpb24ubG5nICYmIG9wdGlvbnMucG9zaXRpb24ubG5nICE9PSAwKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImxuZyBpcyByZXF1aXJlZCFcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMucG9zaXRpb24ubGF0ICYmIG9wdGlvbnMucG9zaXRpb24ubGF0ICE9PSAwKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImxhdCBpcyByZXF1aXJlZCFcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLl90aW1lb3V0RXZlbnRPYmplY3QgPSBudWxsXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmVhcnRoKSB7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuZWFydGhcclxuICAgIH1cclxuICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICcjZmZmZmZmJ1xyXG4gICAgLy8gdGhpcy5vcHRpb25zLnNjYWxlID0gKG9wdGlvbnMuc2NhbGUgfHwgb3B0aW9ucy5zY2FsZSA9PT0gMCkgPyBvcHRpb25zLnNjYWxlIDogMVxyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnNjYWxlID09PSAnbnVtYmVyJykge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUgPSB7fVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUueCA9IG9wdGlvbnMuc2NhbGVcclxuICAgICAgdGhpcy5vcHRpb25zLnNjYWxlLnkgPSBvcHRpb25zLnNjYWxlXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZS56ID0gb3B0aW9ucy5zY2FsZVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IG9wdGlvbnMuc2NhbGUgfHwge31cclxuICAgICAgdGhpcy5vcHRpb25zLnNjYWxlLnggPSAodGhpcy5vcHRpb25zLnNjYWxlLnggfHwgdGhpcy5vcHRpb25zLnNjYWxlLnggPT09IDApID8gdGhpcy5vcHRpb25zLnNjYWxlLnggOiAxXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZS55ID0gKHRoaXMub3B0aW9ucy5zY2FsZS55IHx8IHRoaXMub3B0aW9ucy5zY2FsZS55ID09PSAwKSA/IHRoaXMub3B0aW9ucy5zY2FsZS55IDogMVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUueiA9ICh0aGlzLm9wdGlvbnMuc2NhbGUueiB8fCB0aGlzLm9wdGlvbnMuc2NhbGUueiA9PT0gMCkgPyB0aGlzLm9wdGlvbnMuc2NhbGUueiA6IDFcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gb3B0aW9ucy51cmxcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtU2NhbGUgPSAob3B0aW9ucy5tYXhpbXVtU2NhbGUgfHwgb3B0aW9ucy5tYXhpbXVtU2NhbGUgPT09IDApID8gb3B0aW9ucy5tYXhpbXVtU2NhbGUgOiAxMDBcclxuICAgIHRoaXMub3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplID0gKG9wdGlvbnMubWluaW11bVBpeGVsU2l6ZSB8fCBvcHRpb25zLm1pbmltdW1QaXhlbFNpemUgPT09IDApID8gb3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplIDogNjBcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb24gPSAob3B0aW9ucy5wb3NpdGlvbiB8fCB7fSlcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHtcclxuICAgICAgbG5nOiBvcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgbGF0OiBvcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgYWx0OiBvcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA9IChvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSB8fCBvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA9PT0gZmFsc2UpID8gb3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlID0gb3B0aW9ucy5yb3RhdGUgPSAob3B0aW9ucy5yb3RhdGUgfHwge30pXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnggPSBvcHRpb25zLnJvdGF0ZS54IHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueSA9IG9wdGlvbnMucm90YXRlLnkgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZS56ID0gb3B0aW9ucy5yb3RhdGUueiB8fCAwXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogb3B0aW9ucy5sYWJlbC5wb3NpdGlvbixcclxuICAgICAgZm9udFNpemU6IChvcHRpb25zLmxhYmVsLmZvbnRTaXplIHx8IG9wdGlvbnMubGFiZWwuZm9udFNpemUgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA6IDIwLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBjb2xvcjogb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIGxpbmVXaWR0aDogKG9wdGlvbnMubGFiZWwubGluZVdpZHRoIHx8IG9wdGlvbnMubGFiZWwubGluZVdpZHRoID09PSAwKSA/IG9wdGlvbnMubGFiZWwubGluZVdpZHRoIDogNCxcclxuICAgICAgcGl4ZWxPZmZzZXQ6IChvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IHx8IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPT09IDApID8gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA6IDIwLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddLFxyXG4gICAgICBsaW5lQ29sb3I6IG9wdGlvbnMubGFiZWwubGluZUNvbG9yIHx8ICcjMDBmZmZmODAnLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHx8IGZhbHNlLFxyXG4gICAgICBuZWFyOiAob3B0aW9ucy5sYWJlbC5uZWFyIHx8IG9wdGlvbnMubGFiZWwubmVhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLm5lYXIgOiAyMDAwLFxyXG4gICAgICBmYXI6IChvcHRpb25zLmxhYmVsLmZhciB8fCBvcHRpb25zLmxhYmVsLmZhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZhciA6IDEwMDAwMCxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLklTQyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuSVNDIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLklTQy5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5JU0MuY29udGVudCB8fCBbXVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCB8fCBbXVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUgPSBvcHRpb25zLmF0dHJpYnV0ZVR5cGUgfHwgJ3JpY2hUZXh0J1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5lbnRpdHkgPSB7XHJcbiAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWRcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBvc2l0aW9uQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnJvdGF0aW9uQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLm9uQ2xpY2tDYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG5cclxuICAgIHRoaXMub24oKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJnbGJcIlxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGxvYWRNb2RlbCh1cmwpIHtcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuc2RrLnZpZXdlci5zY2VuZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHVybCA9IHRoaXMucmVwbGFjZUhvc3QodXJsLCB0aGlzLm9wdGlvbnMuaG9zdClcclxuICAgIC8vIHRoaXMuaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5jYW52YXNcclxuICAgIC8vIClcclxuICAgIC8vIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigoZXZlbnQpID0+IHtcclxuICAgIC8vICAgbGV0IHBpY2tlZE9iamVjdCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKGV2ZW50LnBvc2l0aW9uKTtcclxuICAgIC8vICAgLy8g5Yik5pat5piv5ZCm5ou+5Y+W5Yiw5qih5Z6LXHJcbiAgICAvLyAgIGlmIChDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QpKSB7XHJcbiAgICAvLyAgICAgbGV0IGNhcnRlc2lhbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24oZXZlbnQucG9zaXRpb24pO1xyXG4gICAgLy8gICAgIC8vIOaYr+WQpuiOt+WPluWIsOepuumXtOWdkOagh1xyXG4gICAgLy8gICAgIGlmIChDZXNpdW0uZGVmaW5lZChjYXJ0ZXNpYW4pKSB7XHJcbiAgICAvLyAgICAgICAvLyAvLyDnqbrpl7TlnZDmoIfovazkuJbnlYzlnZDmoIco5byn5bqmKVxyXG4gICAgLy8gICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihjYXJ0ZXNpYW4pO1xyXG4gICAgLy8gICAgICAgLy8g5byn5bqm6L2s5Li66KeS5bqm77yI57uP57qs5bqm77yJXHJcbiAgICAvLyAgICAgICBsZXQgbG9uID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgLy8gICAgICAgbGV0IGxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpO1xyXG4gICAgLy8gICAgICAgLy/mqKHlnovpq5jluqZcclxuICAgIC8vICAgICAgIGxldCBoZWlnaHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0O1xyXG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCLmqKHlnovooajpnaLnmoTnu4/nuqzluqbpq5jnqIvmmK/vvJpcIiwge1xyXG4gICAgLy8gICAgICAgLy8gICBsbmc6IGxvbixcclxuICAgIC8vICAgICAgIC8vICAgbGF0OiBsYXQsXHJcbiAgICAvLyAgICAgICAvLyAgIGFsdDogaGVpZ2h0LFxyXG4gICAgLy8gICAgICAgLy8gfSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZCxcclxuICAgICAgdXJsOiB1cmwsXHJcbiAgICAgIHNob3c6IHRoaXMub3B0aW9ucy5zaG93LCAvLyDmmK/lkKbmmL7npLrmqKHlnotcclxuICAgICAgbWF4aW11bVNjYWxlOiB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlID8gdW5kZWZpbmVkIDogdGhpcy5vcHRpb25zLm1heGltdW1TY2FsZSxcclxuICAgICAgbWluaW11bVBpeGVsU2l6ZTogdGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA/IHVuZGVmaW5lZCA6IHRoaXMub3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplLFxyXG4gICAgICAvLyBzY2FsZTogdGhpcy5vcHRpb25zLnNjYWxlLFxyXG4gICAgICAvLyBtaW5pbXVtUGl4ZWxTaXplOiAxXHJcbiAgICB9XHJcbiAgICBpZiAoTnVtYmVyKENlc2l1bS5WRVJTSU9OLnNwbGl0KCcuJylbMV0pID49IDEwNykge1xyXG4gICAgICB0aGlzLmVudGl0eSA9IGF3YWl0IENlc2l1bS5Nb2RlbC5mcm9tR2x0ZkFzeW5jKG9wdGlvbnMpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPSBhd2FpdCBDZXNpdW0uTW9kZWwuZnJvbUdsdGYob3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVudGl0eS5pbWFnZUJhc2VkTGlnaHRpbmcubHVtaW5hbmNlQXRaZW5pdGggPSAwLjZcclxuICAgIHRoaXMuZW50aXR5LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAvLyB0aGlzLmVudGl0eS5jb2xvckJsZW5kTW9kZSA9IDFcclxuICAgIC8vIOWwhuaooeWei+a3u+WKoOWIsOWcuuaZr+S4rVxyXG4gICAgYXdhaXQgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuZW50aXR5KTtcclxuICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQpO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgdGhpcy5lbnRpdHkucG9zaXRpb24gPSBwb3NpdGlvbjtcclxuICAgIHRoaXMuZW50aXR5LnJvdGF0ZSA9IHsgLi4udGhpcy5vcHRpb25zLnJvdGF0ZSB9O1xyXG4gICAgdGhpcy5lbnRpdHkuY3VzdG9tU2NhbGUgPSB0aGlzLm9wdGlvbnMuc2NhbGU7XHJcblxyXG5cclxuXHJcbiAgICAvLyDorr7nva7mqKHlnovnmoTml4vovazop5LluqbvvIzkvb/lhbbmsLTlubPmlL7nva7kuo7lnLDpnaJcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICAvLyDmqKHlnovlpKflsI/mr5TkvotcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMyh0aGlzLm9wdGlvbnMuc2NhbGUsIHRoaXMub3B0aW9ucy5zY2FsZSwgdGhpcy5vcHRpb25zLnNjYWxlKSwgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcblxyXG4gICAgLy8gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKG1hdHJpeCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKHRoaXMub3B0aW9ucy5zY2FsZSwgdGhpcy5vcHRpb25zLnNjYWxlLCB0aGlzLm9wdGlvbnMuc2NhbGUpLCB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeClcclxuICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTA3KSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnJlYWR5RXZlbnQuYWRkRXZlbnRMaXN0ZW5lcigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyA9IHRoaXMuZW50aXR5LmJvdW5kaW5nU3BoZXJlLnJhZGl1c1xyXG4gICAgICAgIHRoaXMuZWRpdE9iaiA9IG5ldyBFZGl0R2x0Zih0aGlzLnNkaywgdGhpcy5lbnRpdHkpXHJcbiAgICAgICAgdGhpcy5lZGl0T2JqLnRyYW5zZm9ybUNhbGxCYWNrID0gdGhpcy5yb3RhdGlvbkVkaXRpbmdDYWxsQmFja1xyXG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgICAgIC8vIOagh+etvlxyXG4gICAgICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGlzLnNkaywge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyA/IHRoaXMub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBbdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdF0sXHJcbiAgICAgICAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICAgICAgICBmb250RmFtaWx5OiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgICAgICAgcGl4ZWxPZmZzZXQ6IHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICBsaW5lQ29sb3I6IHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgICAgICAgIGxpbmVXaWR0aDogdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICAgICAgICBuZWFyOiB0aGlzLm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgICAgICAgZmFyOiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICAgICAgICB9LCB0aGlzLmVudGl0eSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuaXNNb3ZlID0gdHJ1ZVxyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0RXZlbnRPYmplY3QpXHJcbiAgICAgICAgdGhpcy5fdGltZW91dEV2ZW50T2JqZWN0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuaXNNb3ZlID0gZmFsc2UpXHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuYWN0aXZlQW5pbWF0ZSA9IHRoaXMub3B0aW9ucy5hY3RpdmVBbmltYXRlXHJcbiAgICAgIHRoaXMubW9kZWxBbmltYXRpb25zID0gdGhpcy5lbnRpdHkubG9hZGVyLmNvbXBvbmVudHMuYW5pbWF0aW9uc1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnJlYWR5UHJvbWlzZS50aGVuKChlbnRpdHkpID0+IHtcclxuICAgICAgICB0aGlzLmVudGl0eS5vcmlnaW5hbEJvdW5kaW5nU3BoZXJlUmFkaXVzID0gdGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUucmFkaXVzXHJcbiAgICAgICAgdGhpcy5lZGl0T2JqID0gbmV3IEVkaXRHbHRmKHRoaXMuc2RrLCB0aGlzLmVudGl0eSlcclxuICAgICAgICB0aGlzLmVkaXRPYmoudHJhbnNmb3JtQ2FsbEJhY2sgPSB0aGlzLnJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrXHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG5cclxuICAgICAgICAvLyDmoIfnrb5cclxuICAgICAgICBpZiAoIXRoaXMubGFiZWwpIHtcclxuICAgICAgICAgIHRoaXMubGFiZWwgPSBuZXcgTGFiZWxPYmplY3QodGhpcy5zZGssIHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgc2hvdzogdGhpcy5vcHRpb25zLnNob3cgPyB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA6IGZhbHNlLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogW3RoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRdLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgICAgICAgZm9udFNpemU6IHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSxcclxuICAgICAgICAgICAgZm9udEZhbWlseTogdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IsXHJcbiAgICAgICAgICAgIHBpeGVsT2Zmc2V0OiB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgbGluZUNvbG9yOiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yLFxyXG4gICAgICAgICAgICBsaW5lV2lkdGg6IHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGgsXHJcbiAgICAgICAgICAgIHNjYWxlQnlEaXN0YW5jZTogdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSxcclxuICAgICAgICAgICAgbmVhcjogdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIsXHJcbiAgICAgICAgICAgIGZhcjogdGhpcy5vcHRpb25zLmxhYmVsLmZhcixcclxuICAgICAgICAgICAgZ3JvdW5kOiBmYWxzZSxcclxuICAgICAgICAgIH0sIHRoaXMuZW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVudGl0eS5pc01vdmUgPSB0cnVlXHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRFdmVudE9iamVjdClcclxuICAgICAgICB0aGlzLl90aW1lb3V0RXZlbnRPYmplY3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5pc01vdmUgPSBmYWxzZSlcclxuICAgICAgICB9LCA1MDApO1xyXG5cclxuICAgICAgICAvLyDliqjnlLtcclxuICAgICAgICAvLyBlbnRpdHkuYWN0aXZlQW5pbWF0aW9ucy5hZGQoe1xyXG4gICAgICAgIC8vICAgaW5kZXg6IDEsXHJcbiAgICAgICAgLy8gICBsb29wOiBDZXNpdW0uTW9kZWxBbmltYXRpb25Mb29wLlJFUEVBVCxcclxuICAgICAgICAvLyAgIHNwZWVkdXA6IDIsXHJcbiAgICAgICAgLy8gICByZXZlcnNlOiBmYWxzZVxyXG4gICAgICAgIC8vIH0pXHJcblxyXG4gICAgICAgIHRoaXMuYWN0aXZlQW5pbWF0ZSA9IHRoaXMub3B0aW9ucy5hY3RpdmVBbmltYXRlXHJcbiAgICAgICAgdGhpcy5tb2RlbEFuaW1hdGlvbnMgPSB0aGlzLmVudGl0eS5sb2FkZXIuY29tcG9uZW50cy5hbmltYXRpb25zXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0TW9kZWxBbmltYXRpb25zKCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKE51bWJlcihDZXNpdW0uVkVSU0lPTi5zcGxpdCgnLicpWzFdKSA+PSAxMDcpIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWFkeUV2ZW50LmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEFuaW1hdGlvbnMgPSB0aGlzLmVudGl0eS5sb2FkZXIuY29tcG9uZW50cy5hbmltYXRpb25zXHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMubW9kZWxBbmltYXRpb25zKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkucmVhZHlQcm9taXNlLnRoZW4oKGVudGl0eSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbEFuaW1hdGlvbnMgPSB0aGlzLmVudGl0eS5sb2FkZXIuY29tcG9uZW50cy5hbmltYXRpb25zXHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMubW9kZWxBbmltYXRpb25zKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIGFzeW5jIGxvYWRNb2RlbEJ5MkQodXJsKSB7XHJcbiAgLy8gICB0aGlzLmVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gIC8vICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAvLyAgICAgcmVjdGFuZ2xlOiB7XHJcbiAgLy8gICAgICAgY29vcmRpbmF0ZXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgLy8gICAgICAgICBsZXQgZ2FwID0gTWF0aC5hYnMoTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQpKSAqICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgLy8gICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtcclxuICAvLyAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyAtICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gZ2FwLFxyXG4gIC8vICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgKyBnYXAsXHJcbiAgLy8gICAgICAgICBdXHJcbiAgLy8gICAgICAgICByZXR1cm4gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyguLi5mcm9tRGVncmVlc0FycmF5KVxyXG4gIC8vICAgICAgIH0sIGZhbHNlKSxcclxuICAvLyAgICAgICBtYXRlcmlhbDogdGhpcy5vcHRpb25zLnVybCxcclxuICAvLyAgICAgICByb3RhdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAvLyAgICAgICAgIHJldHVybiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmFuZ2xlKVxyXG4gIC8vICAgICAgIH0sIGZhbHNlKSxcclxuICAvLyAgICAgICBzdFJvdGF0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gIC8vICAgICAgICAgcmV0dXJuIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuYW5nbGUpXHJcbiAgLy8gICAgICAgfSwgZmFsc2UpXHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgaWYgKHRoaXMuc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPT09ICdjZXNpdW0tdmlld2VyIDJkJykge1xyXG4gIC8vICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuaGVpZ2h0ID0gMFxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgc3VwZXIucmVtb3ZlKClcclxuICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KTtcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbygpIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTA3KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5LnJlYWR5KSB7XHJcbiAgICAgICAgICBsZXQgYm91bmRpbmdTcGhlcmUgPSBuZXcgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQpLCB0aGlzLmVudGl0eS5vcmlnaW5hbEJvdW5kaW5nU3BoZXJlUmFkaXVzICogdGhpcy5vcHRpb25zLnNjYWxlLnogKiAyKVxyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKGJvdW5kaW5nU3BoZXJlKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWFkeVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgYm91bmRpbmdTcGhlcmUgPSBuZXcgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQpLCAodGhpcy5lbnRpdHkub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyB8fCB0aGlzLmVudGl0eS5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpICogdGhpcy5vcHRpb25zLnNjYWxlLnogKiAyKVxyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKGJvdW5kaW5nU3BoZXJlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCl9KVxyXG4gIH1cclxuXHJcblxyXG4gIG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkKClcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIHN1cGVyLnNldERlZmF1bHRWYWx1ZSgpXHJcbiAgICB0aGlzLm9wdGlvbnMuaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0IHx8IGdldEhvc3QoKVxyXG4gICAgdGhpcy5vcHRpb25zLnVybCA9IHRoaXMub3B0aW9ucy51cmwgfHwgXCJcIlxyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcbiAgc2V0IG5hbWUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSB2XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwudGV4dCA9IHZcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwudGV4dCA9IHYpXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgdGhpcy5lbnRpdHkuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbG5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmdcclxuICB9XHJcblxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0ge1xyXG4gICAgICBsbmc6IE51bWJlcihOdW1iZXIodikudG9GaXhlZCg4KSksXHJcbiAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgYWx0OiB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdF0pXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHtcclxuICAgICAgbG5nOiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICBsYXQ6IE51bWJlcihOdW1iZXIodikudG9GaXhlZCg4KSksXHJcbiAgICAgIGFsdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRdKVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBhbHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gIH1cclxuXHJcbiAgc2V0IGFsdCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSB7XHJcbiAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgbGF0OiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICBhbHQ6IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgyKSlcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyksIE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0KSwgTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQpXSlcclxuICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWF4aW11bVNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXhpbXVtU2NhbGVcclxuICB9XHJcblxyXG4gIHNldCBtYXhpbXVtU2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1TY2FsZSA9IHZcclxuICAgIHRoaXMuZW50aXR5Lm1heGltdW1TY2FsZSA9IHRoaXMuc2NhbGVCeURpc3RhbmNlID8gdW5kZWZpbmVkIDogdlxyXG4gICAgdGhpcy5fZWxtcy5tYXhpbXVtU2NhbGUgJiYgdGhpcy5fZWxtcy5tYXhpbXVtU2NhbGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBtaW5pbXVtUGl4ZWxTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplXHJcbiAgfVxyXG5cclxuICBzZXQgbWluaW11bVBpeGVsU2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVBpeGVsU2l6ZSA9IHZcclxuICAgIHRoaXMuZW50aXR5Lm1pbmltdW1QaXhlbFNpemUgPSB0aGlzLnNjYWxlQnlEaXN0YW5jZSA/IHVuZGVmaW5lZCA6IHRoaXMub3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplXHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1QaXhlbFNpemUgJiYgdGhpcy5fZWxtcy5taW5pbXVtUGl4ZWxTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcblxyXG4gIHNldCBzY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuZW50aXR5Lm1heGltdW1TY2FsZSA9IHYgPyB1bmRlZmluZWQgOiB0aGlzLm1heGltdW1TY2FsZVxyXG4gICAgdGhpcy5lbnRpdHkubWluaW11bVBpeGVsU2l6ZSA9IHYgPyB1bmRlZmluZWQgOiB0aGlzLm9wdGlvbnMubWluaW11bVBpeGVsU2l6ZVxyXG4gICAgdGhpcy5fZWxtcy5zY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5zY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0ZVgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZS54XHJcbiAgfVxyXG5cclxuICBzZXQgcm90YXRlWCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnggPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMucm90YXRlWCAmJiB0aGlzLl9lbG1zLnJvdGF0ZVguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnJvdGF0ZS54XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0ZVkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZS55XHJcbiAgfVxyXG5cclxuICBzZXQgcm90YXRlWSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnkgPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMucm90YXRlWSAmJiB0aGlzLl9lbG1zLnJvdGF0ZVkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnJvdGF0ZS55XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0ZVooKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZS56XHJcbiAgfVxyXG5cclxuICBzZXQgcm90YXRlWih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnogPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMucm90YXRlWiAmJiB0aGlzLl9lbG1zLnJvdGF0ZVouZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnJvdGF0ZS56XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IHNjYWxlKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IHNjYWxlKHYpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IHZcclxuICAvLyAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gIC8vICAgdGhpcy5fZWxtcy5zY2FsZSAmJiB0aGlzLl9lbG1zLnNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAvLyAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBnZXQgc2NhbGVYKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZS54XHJcbiAgfVxyXG5cclxuICBzZXQgc2NhbGVYKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZS54ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDIpKVxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlWCAmJiB0aGlzLl9lbG1zLnNjYWxlWC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuc2NhbGUueFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZVkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYWxlLnlcclxuICB9XHJcblxyXG4gIHNldCBzY2FsZVkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlLnkgPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMuc2NhbGVZICYmIHRoaXMuX2VsbXMuc2NhbGVZLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5zY2FsZS55XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNjYWxlWigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbGUuelxyXG4gIH1cclxuXHJcbiAgc2V0IHNjYWxlWih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGUueiA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgyKSlcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgdGhpcy5fZWxtcy5zY2FsZVogJiYgdGhpcy5fZWxtcy5zY2FsZVouZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnNjYWxlLnpcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IHYpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5zaG93ID0gZmFsc2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJiB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250RmFtaWx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250RmFtaWx5KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID0gdiB8fCAwXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZvbnRGYW1pbHkgPSB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSlcclxuXHJcbiAgICBsZXQgbmFtZSA9IGdldEZvbnRGYW1pbHlOYW1lKHRoaXMubGFiZWxGb250RmFtaWx5KSB8fCAnJ1xyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gbmFtZVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuY29sb3IgPSB2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gbGFiZWxDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZvbnRTaXplID0gdilcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZSAmJiB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2KVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTmVhciAmJiB0aGlzLl9lbG1zLmxhYmVsTmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5sYWJlbE5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5sYWJlbE5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRmFyICYmIHRoaXMuX2VsbXMubGFiZWxGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmxpbmVXaWR0aCA9IHYpXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdilcclxuICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldCAmJiB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0IGxhYmVsTGluZUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmxpbmVDb2xvciA9IHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dKVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XSlcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVUeXBlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5hdHRyaWJ1dGVUeXBlICYmIHRoaXMuX2VsbXMuYXR0cmlidXRlVHlwZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gICAgbGV0IGF0dHJpYnV0ZUNvbnRlbnQgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudCcpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGF0dHJpYnV0ZUNvbnRlbnRbaV0uY2xhc3NOYW1lLmluZGV4T2YoJ2F0dHJpYnV0ZS1jb250ZW50LScgKyB2KSA+IC0xKSB7XHJcbiAgICAgICAgYXR0cmlidXRlQ29udGVudFtpXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhdHRyaWJ1dGVDb250ZW50W2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhdHRyaWJ1dGVMaW5rKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlTGluayh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHZcclxuICAgIGlmICghdGhpcy5fRGlhbG9nT2JqZWN0IHx8ICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50IHx8IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKVsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdHIgPSBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldLm5hbWUgKyBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0udXJsICsgYDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRWRpdFwiPue8lui+kTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibGlua0RlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PmBcclxuICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGxldCBmdW4gPSB7XHJcbiAgICAgIGxpbmtFZGl0OiBhc3luYyAoaW5kZXgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSBhd2FpdCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKVsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gaXRlbVtpXS5vZmZzZXRIZWlnaHRcclxuICAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dCBsaW5rLWVkaXRcIiB0eXBlPVwidGV4dFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29uZmlybUVkaXRcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjYW5jZWxFZGl0XCI+5Y+W5raIPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICAgICAgbGV0IHRleHRhcmVhRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rLWVkaXQnKVswXVxyXG4gICAgICAgICAgICB0ZXh0YXJlYUVsbS5zdHlsZS5oZWlnaHQgPSAoaGVpZ2h0IC0gMTApICsgJ3B4J1xyXG4gICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpbmRleF0udXJsXHJcbiAgICAgICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgIGlmICghYnRuW25dIHx8ICFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChmdW5bbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oeyBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLCB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgfSwgaSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbGlua0RlbGV0ZTogKGkpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5zcGxpY2UoaSwgMSlcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGxldCB1cmwgPSB2YWx1ZS51cmwgJiYgdmFsdWUudXJsLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGlmIChuYW1lICYmIHVybCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0gPSB2YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiAn5ZCN56ew5oiW6ZO+5o6l5LiN6IO95Li656m677yBJyxcclxuICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBmaWxlU2VsZWN0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgZmlsZUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXVxyXG4gICAgICAgIGZpbGVFbG0uY2xpY2soKVxyXG4gICAgICAgIGZpbGVFbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgICBmaWxlRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlU2VsZWN0ID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgICBsZXQgdGQgPSBpdGVtW2V2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2luZGV4JyldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXShpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZUNhbWVyYSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlQ2FtZXJhKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgPSB2XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlSVNDKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuSVNDLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVJU0Modikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5JU0MuY29udGVudCA9IHZcclxuICB9XHJcblxyXG4gIGdldCBhdHRyaWJ1dGVWcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVWcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPSB2XHJcbiAgICBpZiAoIXRoaXMuX0RpYWxvZ09iamVjdCB8fCAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8ICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fCB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC12cicpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtdnInKVsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ciA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldLm5hbWUgKyBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldLnVybCArIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwidnJFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ2ckRlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PmBcclxuICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGxldCBmdW4gPSB7XHJcbiAgICAgIHZyRWRpdDogYXN5bmMgKGluZGV4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LXZyJylbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUnKVswXVxyXG4gICAgICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICBsZXQgaXRlbSA9IHRhYmxlQ29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcclxuICAgICAgICAgICAgbGV0IGhlaWdodCA9IGl0ZW1baV0ub2Zmc2V0SGVpZ2h0XHJcbiAgICAgICAgICAgIGxldCBodG1sID0gYFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQgbGluay1lZGl0XCIgdHlwZT1cInRleHRcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNvbmZpcm1FZGl0XCI+56Gu6K6kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY2FuY2VsRWRpdFwiPuWPlua2iDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgaXRlbVtpXS5pbm5lckhUTUwgPSBodG1sXHJcbiAgICAgICAgICAgIGxldCB0ZXh0YXJlYUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluay1lZGl0JylbMF1cclxuICAgICAgICAgICAgdGV4dGFyZWFFbG0uc3R5bGUuaGVpZ2h0ID0gKGhlaWdodCAtIDEwKSArICdweCdcclxuICAgICAgICAgICAgbGV0IHRkID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgICAgICAgICAgIHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaW5kZXhdLm5hbWVcclxuICAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpbmRleF0udXJsXHJcbiAgICAgICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgIGlmICghYnRuW25dIHx8ICFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChmdW5bbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oeyBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLCB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgfSwgaSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdnJEZWxldGU6IChpKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50LnNwbGljZShpLCAxKVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGNvbmZpcm1FZGl0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgbmFtZSA9IHZhbHVlLm5hbWUgJiYgdmFsdWUubmFtZS5yZXBsYWNlKC9cXHMvZywgXCJcIilcclxuICAgICAgICBsZXQgdXJsID0gdmFsdWUudXJsICYmIHZhbHVlLnVybC5yZXBsYWNlKC9cXHMvZywgXCJcIilcclxuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DmiJbpk77mjqXkuI3og73kuLrnqbrvvIEnLFxyXG4gICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBjYW5jZWxFZGl0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBmaWxlU2VsZWN0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgZmlsZUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXVxyXG4gICAgICAgIGZpbGVFbG0uY2xpY2soKVxyXG4gICAgICAgIGZpbGVFbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgICBmaWxlRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlU2VsZWN0ID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgICBsZXQgdGQgPSBpdGVtW2V2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2luZGV4JyldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXShpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlR29vZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlR29vZHModikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID0gdlxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IHBvc2l0aW9uKCkge1xyXG4gIC8vICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbih0aGlzLmVudGl0eS5wb3NpdGlvbik7XHJcbiAgLy8gICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUgKyAwLjAwMDAwMDAwNjYzODE0KTtcclxuICAvLyAgIGxldCBsYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlICsgMC4wMDAwMDAyNTEzNzgzNSk7XHJcbiAgLy8gICByZXR1cm4geyBsbmc6IGxuZywgbGF0OiBsYXQsIGFsdDogY2FydG9ncmFwaGljLmhlaWdodCAtIDIuMTkxMDQ2MTEwNDMyMzQgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IHBvc2l0aW9uKHApIHtcclxuXHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDmiZPlvIDmqKHlnovml4vovazlip/og71cclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuICAgKiAqL1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iaiAmJiB0aGlzLmVkaXRPYmouZWRpdFJ0YXRpb24oKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iaiAmJiB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDojrflj5bmqKHlnovml4vovaznirbmgIFcclxuICAgKiBAbWV0aG9kIHJvdGF0aW9uRWRpdGluZ1xyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuXHJcbiAgICogKi9cclxuICBnZXQgcm90YXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdE9iai5nZXRBY3RpdmVTdGF0ZSgpID09PSAncnRhdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75qih5Z6L5Yqf6IO9XHJcbiAgICpcclxuICAgKiBAbWVtYmVyT2YgU291cmNlXHJcbiAgICpAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgdGhpcy5sZWZ0Q2xpY2tTdGF0ZSA9IGdldExlZnRDbGlja1N0YXRlKClcclxuICAgICAgdGhpcy5lZGl0T2JqICYmIHRoaXMuZWRpdE9iai5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgIG5ldyBjbG9zZUxlZnRDbGljayh0aGlzLnNkaylcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sZWZ0Q2xpY2tTdGF0ZSAmJiAhZ2V0TGVmdENsaWNrU3RhdGUoKSkge1xyXG4gICAgICAgIG5ldyBvcGVuTGVmdENsaWNrKHRoaXMuc2RrKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZWRpdE9iaiAmJiB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdE9iaiAmJiB0aGlzLmVkaXRPYmouZ2V0QWN0aXZlU3RhdGUoKSA9PT0gJ3RyYW5zbGF0aW9uYWwnKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIC8v5bmz56e75pe277yM5Z2Q5qCH5L+h5oGv5Y+Y5YyW55qE5Zue6LCDXHJcbiAgc2V0IHBvc2l0aW9uRWRpdGluZ0NhbGxCYWNrKGNhbGxiYWNrKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmdDYWxsQmFjaygpIHtcclxuICB9XHJcblxyXG4gIC8v5peL6L2s5pe277yM5Z2Q5qCH5L+h5oGv5Y+Y5YyW55qE5Zue6LCDXHJcbiAgc2V0IHJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKGNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLl9yb3RhdGlvbkVkaXRpbmdDYWxsQmFjayA9IGNhbGxiYWNrXHJcbiAgfVxyXG5cclxuICBnZXQgcm90YXRpb25FZGl0aW5nQ2FsbEJhY2soKSB7XHJcbiAgICByZXR1cm4gKHBhcmFtcykgPT4ge1xyXG4gICAgICAvLyBsZXQgcGFyYW1zID0gdGhpcy5lZGl0T2JqLl9wYXJhbXNcclxuICAgICAgLy8gdGhpcy5vcHRpb25zLnBvc2l0aW9uID0ge1xyXG4gICAgICAvLyAgIGxuZzogcGFyYW1zLnR4LFxyXG4gICAgICAvLyAgIGxhdDogcGFyYW1zLnR5LFxyXG4gICAgICAvLyAgIGFsdDogcGFyYW1zLnR6LFxyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMubG5nID0gcGFyYW1zLnR4XHJcbiAgICAgIHRoaXMubGF0ID0gcGFyYW1zLnR5XHJcbiAgICAgIHRoaXMuYWx0ID0gcGFyYW1zLnR6XHJcbiAgICAgIHRoaXMucm90YXRlWCA9IHBhcmFtcy5yeFxyXG4gICAgICB0aGlzLnJvdGF0ZVkgPSBwYXJhbXMucnlcclxuICAgICAgdGhpcy5yb3RhdGVaID0gcGFyYW1zLnJ6XHJcbiAgICAgIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrICYmIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKHRoaXMuZWRpdE9iai5fcGFyYW1zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUFuaW1hdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFjdGl2ZUFuaW1hdGVcclxuICB9XHJcblxyXG4gIHNldCBhY3RpdmVBbmltYXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hY3RpdmVBbmltYXRlID0gdlxyXG4gICAgaWYgKCF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkubG9hZGVyLmNvbXBvbmVudHMgfHwgIXRoaXMubW9kZWxBbmltYXRpb25zKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkuYWN0aXZlQW5pbWF0aW9ucy5yZW1vdmVBbGwoKVxyXG4gICAgaWYgKHRoaXMubW9kZWxBbmltYXRpb25zICYmIHRoaXMubW9kZWxBbmltYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1vZGVsQW5pbWF0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsQW5pbWF0aW9uc1tpXS5uYW1lID09PSB2KSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5hY3RpdmVBbmltYXRpb25zLmFkZCh7XHJcbiAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICBsb29wOiBDZXNpdW0uTW9kZWxBbmltYXRpb25Mb29wLlJFUEVBVCxcclxuICAgICAgICAgICAgc3BlZWR1cDogMSxcclxuICAgICAgICAgICAgcmV2ZXJzZTogZmFsc2VcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVzZXRBbmltYXRlKCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlQW5pbWF0ZSA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5vbigpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24g57yW6L6R5qGGXHJcbiAgICogQHBhcmFtIHN0YXRlPWZhbHNlIHtib29sZWFufSDnirbmgIE6IHRydWXmiZPlvIAsIGZhbHNl5YWz6ZetXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgLy8gbGV0IGVsbXMgPSB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tYmFzZS1kaWFsb2cnKVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IGVsbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoZWxtc1tpXSlcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGxldCBlcXVhbCA9IGZhbHNlXHJcbiAgICAgIGlmICh0aGlzLnNjYWxlWCA9PT0gdGhpcy5zY2FsZVkgJiYgdGhpcy5zY2FsZVggPT09IHRoaXMuc2NhbGVaKSB7XHJcbiAgICAgICAgZXF1YWwgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+aooeWei+WxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICBsZXQgY2RvcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICBjZG9wdGlvbnMuaG9zdCA9ICcnXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKGNkb3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICAgICAgLy8gICBjb2xvcjogXCJjb2xvcigncmdiYSgyNTUsMjU1LDI1NSxcIiArIHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kgKyBcIiknKVwiLFxyXG4gICAgICAgICAgLy8gICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmVkaXRPYmogJiYgdGhpcy5lZGl0T2JqLmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBtb2RlbCdcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcblxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlQ2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudFxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUlTQyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuSVNDLmNvbnRlbnRcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdtb2RlbC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG5cclxuICAgICAgbGV0IGVxdWFsU3dpdGNoRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2hlY2tib3gtYm94JylbMF0ucXVlcnlTZWxlY3RvcignaW5wdXQnKVxyXG4gICAgICBsZXQgZXF1YWxCb3hFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdlcXVhbCcpWzBdXHJcbiAgICAgIGxldCBub0VxdWFsQm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbm8tZXF1YWwnKVswXVxyXG4gICAgICBlcXVhbFN3aXRjaEVsbS5jaGVja2VkID0gZXF1YWxcclxuICAgICAgZXF1YWxTd2l0Y2hFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgICAgICBlcXVhbCA9IGUudGFyZ2V0LmNoZWNrZWRcclxuICAgICAgICBpZiAoZXF1YWwpIHtcclxuICAgICAgICAgIGVxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgIG5vRXF1YWxCb3hFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgdGhpcy5zY2FsZVkgPSB0aGlzLnNjYWxlWFxyXG4gICAgICAgICAgdGhpcy5zY2FsZVogPSB0aGlzLnNjYWxlWFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGVxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgIG5vRXF1YWxCb3hFbG0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBlcXVhbEVsbXMgPSBlcXVhbEJveEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVxyXG4gICAgICBlcXVhbEVsbXNbMF0udmFsdWUgPSB0aGlzLnNjYWxlWFxyXG4gICAgICBlcXVhbEVsbXNbMV0udmFsdWUgPSB0aGlzLnNjYWxlWFxyXG5cclxuICAgICAgZXF1YWxFbG1zWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLnNjYWxlWCA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgdGhpcy5zY2FsZVkgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgIHRoaXMuc2NhbGVaID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgfSlcclxuICAgICAgZXF1YWxFbG1zWzFdLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLnNjYWxlWCA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgdGhpcy5zY2FsZVkgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgIHRoaXMuc2NhbGVaID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmIChlcXVhbCkge1xyXG4gICAgICAgIGVxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICBub0VxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlcXVhbEJveEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgbm9FcXVhbEJveEVsbS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxMaW5lQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0XCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yRW5kXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IgPSBbY29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvciA9IFtsYWJlbENvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yID0gW2xpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMuc2NhbGVYLnB1c2goZXF1YWxFbG1zWzBdLCBlcXVhbEVsbXNbMV0pXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLklTQ1NlbGVjdCAmJiB0aGlzLklTQ1NlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgbGV0IHRhZ0RhdGEgPSB0aGlzLmF0dHJpYnV0ZVNlbGVjdFxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0LWJveCcpWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgXCIuYXR0cmlidXRlLXNlbGVjdFwiKVxyXG4gICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZVNlbGVjdEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvbnREYXRhID0gZ2V0Rm9udExpc3QoKVxyXG4gICAgICAgIGxldCBmb250T2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdmb250LXNlbGVjdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5mb250LXNlbGVjdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGZvbnRPYmplY3QpIHtcclxuICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2goZm9udERhdGEpXHJcbiAgICAgICAgICBsZXQgZm9udERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvbnQtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0udmFsdWUgPSBmb250RGF0YVt0aGlzLmxhYmVsRm9udEZhbWlseV0udmFsdWVcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoZm9udERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gZm9udERhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ID0gW2ZvbnREYXRhTGVncEVsbV1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB2LnBvc2l0aW9uLmxuZ1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHYucG9zaXRpb24ubGF0XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gdi5wb3NpdGlvbi5hbHRcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueiA9IC12LmhlYWRpbmdcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueCA9IC12LnBpdGNoXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnkgPSAtdi5yb2xsXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdF0pXHJcbiAgfVxyXG5cclxuICAvL+abtOaWsOaooeWei+S9jee9rlxyXG4gIHVwZGF0ZU1vZGVsKF90eCwgX3R5LCBfdHosIF9yeCA9IDAsIF9yeSA9IDAsIF9yeiA9IDAsIF9zY2FsZSkge1xyXG4gICAgX3R4ID0gcGFyc2VGbG9hdChfdHgpXHJcbiAgICBfdHkgPSBwYXJzZUZsb2F0KF90eSlcclxuICAgIF90eiA9IHBhcnNlRmxvYXQocGFyc2VGbG9hdChfdHopLnRvRml4ZWQoMikpXHJcbiAgICBfcnggPSBwYXJzZUZsb2F0KF9yeClcclxuICAgIF9yeSA9IHBhcnNlRmxvYXQoX3J5KVxyXG4gICAgX3J6ID0gcGFyc2VGbG9hdChfcnopXHJcbiAgICBfc2NhbGUueCA9IHBhcnNlRmxvYXQoX3NjYWxlLngpXHJcbiAgICBfc2NhbGUueSA9IHBhcnNlRmxvYXQoX3NjYWxlLnkpXHJcbiAgICBfc2NhbGUueiA9IHBhcnNlRmxvYXQoX3NjYWxlLnopXHJcbiAgICAvLyBfc2NhbGUgPSBwYXJzZUZsb2F0KF9zY2FsZSlcclxuICAgIC8vIHRoaXMubGFiZWwucG9zaXRpb24gPSBbX3R4LCBfdHksIF90el1cclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKF90eCwgX3R5LCBfdHopXHJcbiAgICB0aGlzLmVudGl0eS5yb3RhdGUgPSB7IHg6IF9yeCwgeTogX3J5LCB6OiBfcnogfTtcclxuICAgIHRoaXMuZW50aXR5LmN1c3RvbVNjYWxlID0gX3NjYWxlO1xyXG4gICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeClcclxuICAgIClcclxuICAgIGxldCBteSA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblkoXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnkpXHJcbiAgICApXHJcbiAgICBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J6KVxyXG4gICAgKVxyXG4gICAgLy8g5bmz56e7XHJcbiAgICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KSlcclxuICAgIC8vIOaXi+i9rFxyXG4gICAgbGV0IHJvdGF0aW9uWCA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG14KVxyXG4gICAgbGV0IHJvdGF0aW9uWSA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG15KVxyXG4gICAgbGV0IHJvdGF0aW9uWiA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG16KVxyXG4gICAgbGV0IG9yaWdpbmFsTWF0cml4ID0gbmV3IENlc2l1bS5NYXRyaXg0KClcclxuXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShtLCByb3RhdGlvblgsIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkob3JpZ2luYWxNYXRyaXgsIHJvdGF0aW9uWSwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25aLCB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeClcclxuICAgIC8vIOe8qeaUvlxyXG4gICAgbGV0IHNjYWxlWCA9IF9zY2FsZS54XHJcbiAgICBsZXQgc2NhbGVZID0gX3NjYWxlLnlcclxuICAgIGxldCBzY2FsZVogPSBfc2NhbGUuelxyXG4gICAgaWYgKHNjYWxlWCA9PT0gMCkge1xyXG4gICAgICBzY2FsZVggPSAwLjAwMDAxXHJcbiAgICB9XHJcbiAgICBpZiAoc2NhbGVZID09PSAwKSB7XHJcbiAgICAgIHNjYWxlWSA9IDAuMDAwMDFcclxuICAgIH1cclxuICAgIGlmIChzY2FsZVogPT09IDApIHtcclxuICAgICAgc2NhbGVaID0gMC4wMDAwMVxyXG4gICAgfVxyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoc2NhbGVYLCBzY2FsZVksIHNjYWxlWiksIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4KVxyXG4gICAgdGhpcy5lbnRpdHkubWluaW11bVBpeGVsU2l6ZSA9IHRoaXMuc2NhbGVCeURpc3RhbmNlID8gdW5kZWZpbmVkIDogdGhpcy5vcHRpb25zLm1pbmltdW1QaXhlbFNpemVcclxuICAgIHRoaXMuZWRpdE9iaiAmJiB0aGlzLmVkaXRPYmoudXBkYXRlKClcclxuICAgIHRoaXMuZW50aXR5LmlzTW92ZSA9IHRydWVcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0RXZlbnRPYmplY3QpXHJcbiAgICB0aGlzLl90aW1lb3V0RXZlbnRPYmplY3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LmlzTW92ZSA9IGZhbHNlKVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICAgIHRoaXMubG5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICAgIHRoaXMubGF0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgICAgIHRoaXMuYWx0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICAgIHRoaXMubWF4aW11bVNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVNjYWxlXHJcbiAgICAgIHRoaXMubWluaW11bVBpeGVsU2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1pbmltdW1QaXhlbFNpemVcclxuICAgICAgdGhpcy5zY2FsZUJ5RGlzdGFuY2UgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2VcclxuICAgICAgdGhpcy5yb3RhdGVYID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm90YXRlLnhcclxuICAgICAgdGhpcy5yb3RhdGVZID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm90YXRlLnlcclxuICAgICAgdGhpcy5yb3RhdGVaID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm90YXRlLnpcclxuICAgICAgdGhpcy5zY2FsZVggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zY2FsZS54XHJcbiAgICAgIHRoaXMuc2NhbGVZID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2NhbGUueVxyXG4gICAgICB0aGlzLnNjYWxlWiA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNjYWxlLnpcclxuICAgICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgICAgdGhpcy5sYWJlbFBpeGVsT2Zmc2V0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gICAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgICAgdGhpcy5sYWJlbEZhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZhclxyXG5cclxuICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVHb29kcyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudFxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUlTQyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuSVNDLmNvbnRlbnRcclxuICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG4gICAgICB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb2RlbFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF2SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQXRFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0NBO0FBN0NBO0FBQUE7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFWQTtBQUFBO0FBUUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUF1QkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBckJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3Q0E7QUE3Q0E7QUFBQTtBQUFBO0FBQUE7QUE4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVZBO0FBQUE7QUFRQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW1CQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQXRCQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdCQTtBQUFBO0FBQUE7QUFOQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbkJBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUF6Q0E7QUEwQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFqUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseModel/Model/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseModel/Model2/_element.js": -/*!**************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseModel/Model2/_element.js ***! - \**************************************************************/ -/*! exports provided: html, css */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u6700\\u5927\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u6700\\u5C0F\\u50CF\\u7D20\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n \\n
\\n
\\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n
\\n x\\u8F74\\n \\n \\n
\\n
\\n
\\n
\\n y\\u8F74\\n \\n \\n
\\n
\\n
\\n
\\n z\\u8F74\\n \\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n \\n \\n
\\n
\\n
\\n
\\n \\u7F29\\u653E\\n \\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n \");\n}\nfunction css() {\n return \"\\n .YJ-custom-base-dialog>.content {\\n width: 600px;\\n }\\n .YJ-custom-base-dialog>.content>div>.row .col {\\n margin: 0 10px;\\n }\\n .YJ-custom-base-dialog>.content>div>.row .col:first-child {\\n margin-left: 0;\\n }\\n .YJ-custom-base-dialog>.content>div>.row .col:last-child {\\n margin-right: 0;\\n }\\n .YJ-custom-base-dialog>.content>div>.row .label {\\n flex: 0 0 74px;\\n }\\n .YJ-custom-base-dialog>.content .DIV-cy-tab-content-pane .input-select {\\n width: 100px;\\n }\\n\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwyL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZU1vZGVsL01vZGVsMi9fZWxlbWVudC5qcz9jYjkyIl0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uLy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICByZXR1cm4gYFxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuminOiJsjwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTE4MFwiIG1heD1cIjE4MFwiIEBtb2RlbD1cImxuZ1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDlpKfmr5Tkvos8L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMC4xXCIgbWF4PVwiOTk5OTlcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwibWF4aW11bVNjYWxlXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTkwXCIgbWF4PVwiOTBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pyA5bCP5YOP57SgPC9zcGFuPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OVwiIEBtb2RlbD1cIm1pbmltdW1QaXhlbFNpemVcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiIEBtb2RlbD1cImFsdFwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7op4bph47nvKnmlL48L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzY2FsZUJ5RGlzdGFuY2VcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxESVYtY3ktdGFicyBpZD1cIm1vZGVsLWVkaXQtdGFic1wiPlxyXG4gICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5L+h5oGvXCI+XHJcbiAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuaWueWQkeS/oeaBr1wiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+eOi9tDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ3aWR0aDogMzMycHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMzYwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwicm90YXRlWFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDt3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjM2MFwiIEBtb2RlbD1cInJvdGF0ZVhcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj556L20PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAzMzJweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzNjBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJyb3RhdGVZXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZm9udC1zaXplOiAxM3B4O3dpZHRoOiAxMDBweDtcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMzYwXCIgQG1vZGVsPVwicm90YXRlWVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnrovbQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDMzMnB4O1wiIHR5cGU9XCJyYW5nZVwiIG1heD1cIjM2MFwiIG1pbj1cIjBcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInJvdGF0ZVpcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJmb250LXNpemU6IDEzcHg7d2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIzNjBcIiBAbW9kZWw9XCJyb3RhdGVaXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAzMzJweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCI5OTk5OTlcIiBtaW49XCItOTk5OTlcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cImFsdFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDt3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5XCIgbWF4PVwiOTk5OTk5XCIgQG1vZGVsPVwiYWx0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57yp5pS+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAzMzJweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCI5OTlcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzY2FsZVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDt3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwic2NhbGVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgPC9kaXY+XHJcbiAgYFxyXG59XHJcbmZ1bmN0aW9uIGNzcygpIHtcclxuICByZXR1cm4gYFxyXG4gIC5ZSi1jdXN0b20tYmFzZS1kaWFsb2c+LmNvbnRlbnQge1xyXG4gICAgd2lkdGg6IDYwMHB4O1xyXG4gIH1cclxuICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50PmRpdj4ucm93IC5jb2wge1xyXG4gICAgICBtYXJnaW46IDAgMTBweDtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudD5kaXY+LnJvdyAuY29sOmZpcnN0LWNoaWxkIHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgfVxyXG4gIC5ZSi1jdXN0b20tYmFzZS1kaWFsb2c+LmNvbnRlbnQ+ZGl2Pi5yb3cgLmNvbDpsYXN0LWNoaWxkIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gIH1cclxuICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50PmRpdj4ucm93IC5sYWJlbCB7XHJcbiAgICAgIGZsZXg6IDAgMCA3NHB4O1xyXG4gIH1cclxuICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50IC5ESVYtY3ktdGFiLWNvbnRlbnQtcGFuZSAuaW5wdXQtc2VsZWN0IHtcclxuICAgICAgd2lkdGg6IDEwMHB4O1xyXG4gIH1cclxuYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sLCBjc3MgfSJdLCJtYXBwaW5ncyI6IkFBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUE4RkE7QUFDQTtBQUNBO0FBb0JBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseModel/Model2/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseModel/Model2/index.js": -/*!***********************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseModel/Model2/index.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BaseSource/BaseModel/Model2/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseModel/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n\n\n\n\n\n\n\nvar Model2 = /*#__PURE__*/function (_BaseModel) {\n /**\r\n * @constructor\r\n * @description 加载模型\r\n * @param sdk {object} sdk\r\n * @param options {object} 模型参数\r\n * @param options.id {string} 对象id\r\n * @param options.show=true {boolean} 模型显隐\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 资源地址\r\n * @param options.positions {Array.} 坐标数组 [{lng,lat,alt},...]\r\n * @param options.height {number} 高程,为空时取坐标中最低高程\r\n * @param options.type=0 {number} 类型 0:点;1:线;2:多边形;3:矩形\r\n * @param options.interval=1 {number} 间隔(米),type=0时不生效\r\n * @param options.quantity {object} 数量,type=3时生效\r\n * @param options.quantity.x {number} x轴方向数量,type=3时生效\r\n * @param options.quantity.y {number} y轴方向数量,type=3时生效\r\n * @param options.scale=1 {number} 比例\r\n * @param options.maximumScale=100 {number} 最大比例\r\n * @param options.minimumPixelSize=60 {number} 最小像素\r\n * @param options.scaleByDistance=true {boolean} 随视野缩放\r\n * @param options.rotate {object} 旋转角度\r\n * @param options.rotate.x {number} x轴旋转度数\r\n * @param options.rotate.y {number} y轴旋转度数\r\n * @param options.rotate.z {number} z轴旋转度数\r\n * */\n function Model2(earth) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Model2);\n _this2 = _callSuper(this, Model2, [earth, options, _Dialog = {}]);\n _this2.picking = true;\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || '#ffffff';\n _this2.options.scale = options.scale || options.scale === 0 ? options.scale : 1;\n _this2.options.url = options.url;\n _this2.options.maximumScale = options.maximumScale || options.maximumScale === 0 ? options.maximumScale : 100;\n _this2.options.minimumPixelSize = options.minimumPixelSize || options.minimumPixelSize === 0 ? options.minimumPixelSize : 60;\n _this2.options.positions = options.positions || [];\n _this2.options.type = options.type || 0;\n _this2.options.interval = options.interval || options.interval === 0 ? options.interval : 1;\n _this2.options.quantity = options.quantity;\n _this2.options.scaleByDistance = options.scaleByDistance || options.scaleByDistance === false ? options.scaleByDistance : true;\n _this2.options.rotate = options.rotate = options.rotate || {};\n _this2.options.rotate.x = options.rotate.x || 0;\n _this2.options.rotate.y = options.rotate.y || 0;\n _this2.options.rotate.z = options.rotate.z || 0;\n _this2.options.label = options.label = options.label || {};\n _this2.options.label.show = options.label.show || options.label.show === false ? options.label.show : false;\n _this2.options.label.fontSize = options.label.fontSize || 20;\n _this2.options.label.color = options.label.color || '#ffffff';\n _this2.options.label.near = options.label.near || options.label.near === 0 ? options.label.near : 2000;\n _this2.options.label.far = options.label.far || options.label.far === 0 ? options.label.far : 100000;\n _this2.options.label.scaleByDistance = options.label.scaleByDistance || false;\n _this2.options.label.backgroundColor = options.label.backgroundColor || ['#42c6ef', '#42c6ef'];\n _this2.options.line = options.line = options.line || {};\n _this2.options.line.width = options.line.width || 2;\n _this2.options.line.length = options.line.length || 20;\n _this2.options.line.color = options.line.color || '#fff000';\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.attribute.camera = _this2.options.attribute.camera || [];\n _this2.options.attributeType = options.attributeType || 'richText';\n _this2.ModelPositions = [];\n _this2._elms = {};\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2._element_style = null;\n _this2.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.ControllerObject.controllerCallBack = function (params) {\n _this2.lng = params.position.lng;\n _this2.lat = params.position.lat;\n _this2.alt = params.position.alt;\n // this.rotateX = params.rotate.x\n // this.rotateY = params.rotate.y\n // this.rotateZ = params.rotate.z\n // this.updateModel(params.position.lng, params.position.lat, params.position.alt, params.rotate.x, params.rotate.y, params.rotate.z, this.options.scale)\n };\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__[\"default\"]();\n _this2.on();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(Model2, _BaseModel);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Model2, [{\n key: \"type\",\n get: function get() {\n return \"glb\";\n }\n }, {\n key: \"loadModel\",\n value: function () {\n var _loadModel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(url) {\n var _this3 = this;\n var o, collection, positions, height, i, polygon, centroid, ModelPositions, grid, scripts, turfUrl, _i, params, threadFn, createWorker, worker;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n createWorker = function _createWorker(fn) {\n var worker = new Worker(\"data:,(\".concat(fn.toString(), \")(\").concat(JSON.stringify(params), \")\"));\n return worker;\n };\n threadFn = function _threadFn(_ref) {\n var type = _ref.type,\n interval = _ref.interval,\n positions = _ref.positions,\n optionsPositions = _ref.optionsPositions,\n quantity = _ref.quantity,\n turfUrl = _ref.turfUrl;\n importScripts(turfUrl);\n var ModelPositions = [];\n switch (type) {\n case 1:\n var line = turf.lineString(positions[0]);\n var chunk = turf.lineChunk(line, interval / 1000, {\n units: 'kilometers'\n });\n ModelPositions.push({\n lng: chunk.features[0].geometry.coordinates[0][0],\n lat: chunk.features[0].geometry.coordinates[0][1]\n });\n for (var _i2 = 0; _i2 < chunk.features.length; _i2++) {\n ModelPositions.push({\n lng: chunk.features[_i2].geometry.coordinates[1][0],\n lat: chunk.features[_i2].geometry.coordinates[1][1]\n });\n }\n break;\n case 2:\n var _polygon = turf.polygon(positions);\n var bbox = turf.bbox(_polygon);\n grid = turf.pointGrid(bbox, interval / 1000, {\n units: 'kilometers'\n });\n var ptsWithin = turf.pointsWithinPolygon(grid, _polygon);\n for (var _i3 = 0; _i3 < ptsWithin.features.length; _i3++) {\n ModelPositions.push({\n lng: ptsWithin.features[_i3].geometry.coordinates[0],\n lat: ptsWithin.features[_i3].geometry.coordinates[1]\n });\n }\n break;\n case 3:\n if (quantity) {\n var minX = optionsPositions[0].lng;\n var minY = optionsPositions[0].lat;\n var maxX = optionsPositions[2].lng;\n var maxY = optionsPositions[2].lat;\n var fromX = turf.point([minX, maxY]);\n var toX = turf.point([maxX, maxY]);\n var distanceX = turf.distance(fromX, toX, {\n units: 'kilometers'\n });\n var x = distanceX / quantity.x;\n var fromY = turf.point([minX, maxY]);\n var toY = turf.point([minX, minY]);\n var distanceY = turf.distance(fromY, toY, {\n units: 'kilometers'\n });\n var y = distanceY / quantity.y;\n var lineX = turf.lineString([[minX, maxY], [maxX, maxY]]);\n var chunkX = turf.lineChunk(lineX, x, {\n units: 'kilometers'\n });\n var lineY = turf.lineString([[minX, maxY], [minX, minY]]);\n var chunkY = turf.lineChunk(lineY, y, {\n units: 'kilometers'\n });\n for (var _i4 = 0; _i4 < chunkX.features.length; _i4++) {\n var Xcoordinates = chunkX.features[_i4].geometry.coordinates;\n for (var m = 0; m < chunkY.features.length; m++) {\n var Ycoordinates = chunkY.features[m].geometry.coordinates;\n ModelPositions.push({\n lng: (Xcoordinates[0][0] + Xcoordinates[1][0]) / 2,\n lat: (Ycoordinates[0][1] + Ycoordinates[1][1]) / 2\n });\n }\n }\n } else {\n grid = turf.pointGrid([optionsPositions[0].lng, optionsPositions[0].lat, optionsPositions[2].lng, optionsPositions[2].lat], interval / 1000, {\n units: 'kilometers'\n });\n for (var _i5 = 0; _i5 < grid.features.length; _i5++) {\n ModelPositions.push({\n lng: grid.features[_i5].geometry.coordinates[0],\n lat: grid.features[_i5].geometry.coordinates[1]\n });\n }\n }\n break;\n default:\n ModelPositions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(optionsPositions);\n }\n self.postMessage(ModelPositions);\n };\n if (!url.startsWith(\"http\")) {\n //说明是本地的json,在磁盘中存在的\n if (!url.includes(\":\")) {\n if (this.options.host) {\n o = new URL(url, this.options.host);\n url = o.href;\n }\n }\n }\n this.originalOptions = this.deepCopyObj(this.options);\n collection = new Cesium.PrimitiveCollection();\n positions = [[]];\n height = this.options.positions[0].alt;\n for (i = 0; i < this.options.positions.length; i++) {\n positions[0].push([this.options.positions[i].lng, this.options.positions[i].lat]);\n if (this.options.positions[i].alt > this.options.height) {\n height = this.options.positions[i].alt;\n }\n }\n if (positions[0].length > 2) {\n positions[0].push([this.options.positions[0].lng, this.options.positions[0].lat]);\n polygon = turf.polygon(positions);\n centroid = turf.pointOnFeature(polygon);\n this.center = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n };\n } else if (positions[0].length == 2) {\n this.center = {\n lng: (this.options.positions[0].lng + this.options.positions[1].lng) / 2,\n lat: (this.options.positions[0].lat + this.options.positions[1].lat) / 2\n };\n } else {\n this.center = {\n lng: this.options.positions[0].lng,\n lat: this.options.positions[0].lat\n };\n }\n ModelPositions = [];\n if (!this.options.height && this.options.height !== 0) {\n this.options.height = height;\n }\n scripts = document.scripts;\n turfUrl = '';\n _i = 0;\n case 14:\n if (!(_i < scripts.length)) {\n _context.next = 21;\n break;\n }\n if (!(scripts[_i].src && scripts[_i].src.includes('turf.min.js'))) {\n _context.next = 18;\n break;\n }\n turfUrl = scripts[_i].src && scripts[_i].src;\n return _context.abrupt(\"break\", 21);\n case 18:\n _i++;\n _context.next = 14;\n break;\n case 21:\n params = {\n type: this.options.type,\n interval: this.options.interval,\n positions: positions,\n optionsPositions: this.options.positions,\n quantity: this.options.quantity,\n turfUrl: turfUrl\n };\n worker = createWorker(threadFn);\n worker.onmessage = function (e) {\n _this3.ModelPositions = ModelPositions = e.data;\n var instances = [];\n for (var _i6 = 0; _i6 < ModelPositions.length; _i6++) {\n var heading = 0;\n var pitch = 0;\n var roll = 0;\n var scale = 1;\n // let cartographic = Cesium.Cartographic.fromDegrees(ModelPositions[i].lng, ModelPositions[i].lat, this.options.height);\n var position = Cesium.Cartesian3.fromDegrees(ModelPositions[_i6].lng, ModelPositions[_i6].lat, _this3.options.height);\n var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(position, new Cesium.HeadingPitchRoll(heading, pitch, roll));\n Cesium.Matrix4.multiplyByUniformScale(modelMatrix, scale, modelMatrix);\n instances.push({\n modelMatrix: modelMatrix\n });\n }\n _this3.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_16__[\"default\"](_this3.sdk, {\n show: _this3.options.show ? _this3.options.label.show : false,\n position: [_this3.center.lng, _this3.center.lat, _this3.options.height],\n text: _this3.options.name,\n fontSize: _this3.options.label.fontSize,\n color: _this3.options.label.color,\n pixelOffset: _this3.options.line.length,\n backgroundColor: _this3.options.label.backgroundColor,\n lineColor: _this3.options.line.color,\n lineWidth: _this3.options.line.width,\n scaleByDistance: _this3.options.label.scaleByDistance,\n near: _this3.options.label.near,\n far: _this3.options.label.far\n });\n\n // this.entity = collection\n _this3.entity = new Cesium2.ModelInstanceCollection({\n url: url,\n instances: instances\n });\n _this3.entity.position = new Cesium.Cartesian3.fromDegrees(_this3.center.lng, _this3.center.lat, _this3.options.height);\n _this3.entity.rotate = {\n x: _this3.options.rotate.x,\n y: _this3.options.rotate.y,\n z: _this3.options.rotate.z\n };\n _this3.updateModel(_this3.center.lng, _this3.center.lat, _this3.options.height, _this3.options.rotate.x, _this3.options.rotate.y, _this3.options.rotate.z, _this3.options.scale);\n _this3.sdk.viewer.scene.primitives.add(_this3.entity);\n };\n case 24:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function loadModel(_x) {\n return _loadModel.apply(this, arguments);\n }\n return loadModel;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n _superPropGet(Model2, \"remove\", this, 3)([]);\n this.label.remove();\n this.positionEditing = false;\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2() {\n var orientation, lng, lat, alt, destination, position;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 22;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 15;\n break;\n }\n _context2.next = 14;\n return this.getClampToHeight(position);\n case 14:\n position.alt = _context2.sent;\n case 15:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 23;\n break;\n case 22:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.center.lng, this.center.lat, this.options.height + 500)\n });\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"on\",\n value: function on() {\n return this.add();\n }\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(Model2, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getHost\"])();\n this.options.url = this.options.url || \"\";\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.color = v;\n this.entity.color = Cesium.Color.fromCssColorString(v);\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.center.lng;\n },\n set: function set(v) {\n this.center.lng = v;\n this._ControllerChangePosition(50);\n this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label.position = [this.center.lng, this.center.lat, this.options.height];\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.center.lat;\n },\n set: function set(v) {\n this.center.lat = v;\n this._ControllerChangePosition(50);\n this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label.position = [this.center.lng, this.center.lat, this.options.height];\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.center.alt = v;\n this.options.height = v;\n this._ControllerChangePosition(50);\n this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.label.position = [Number(this.center.lng), Number(this.center.lat), Number(this.options.height)];\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"_ControllerChangePosition\",\n value: function _ControllerChangePosition(delay) {\n var _this = this;\n clearTimeout(_this._ControllerChangePositionEvent);\n _this._ControllerChangePositionEvent = setTimeout(function () {\n _this.ControllerObject.position = {\n lng: _this.center.lng,\n lat: _this.center.lat,\n alt: _this.options.height\n };\n }, delay);\n }\n }, {\n key: \"maximumScale\",\n get: function get() {\n return this.options.maximumScale;\n },\n set: function set(v) {\n this.options.maximumScale = v;\n this.entity.maximumScale = this.scaleByDistance ? undefined : v;\n this._elms.maximumScale && this._elms.maximumScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"minimumPixelSize\",\n get: function get() {\n return this.options.minimumPixelSize;\n },\n set: function set(v) {\n this.options.minimumPixelSize = v;\n this.entity.minimumPixelSize = this.scaleByDistance ? undefined : v;\n this._elms.minimumPixelSize && this._elms.minimumPixelSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scaleByDistance\",\n get: function get() {\n return this.options.scaleByDistance;\n },\n set: function set(v) {\n this.options.scaleByDistance = v;\n this.entity.maximumScale = v ? undefined : this.maximumScale;\n this.entity.minimumPixelSize = v ? undefined : this.minimumPixelSize;\n this._elms.scaleByDistance && this._elms.scaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"rotateX\",\n get: function get() {\n return this.options.rotate.x;\n },\n set: function set(v) {\n this.options.rotate.x = v;\n this.updateModelRotate(this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n // this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale)\n this._elms.rotateX && this._elms.rotateX.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"rotateY\",\n get: function get() {\n return this.options.rotate.y;\n },\n set: function set(v) {\n this.options.rotate.y = v;\n this.updateModelRotate(this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n // this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale)\n this._elms.rotateY && this._elms.rotateY.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"rotateZ\",\n get: function get() {\n return this.options.rotate.z;\n },\n set: function set(v) {\n this.options.rotate.z = v;\n this.updateModelRotate(this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n // this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale)\n this._elms.rotateZ && this._elms.rotateZ.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.options.scale;\n },\n set: function set(v) {\n this.options.scale = v;\n this.updateModelRotate(this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n // this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale)\n this._elms.scale && this._elms.scale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this5.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this5.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n this.options.line.width = v;\n this.label.lineWidth = v;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lineLength\",\n get: function get() {\n return this.options.line.length;\n },\n set: function set(v) {\n this.options.line.length = v;\n this.label.pixelOffset = v;\n this._elms.lineLength && this._elms.lineLength.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v;\n this.label.lineColor = v;\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.labelBackgroundColorEnd];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.labelBackgroundColorStart, v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"attributeType\",\n get: function get() {\n return this.options.attributeType;\n },\n set: function set(v) {\n this.options.attributeType = v;\n this._elms.attributeType && this._elms.attributeType.forEach(function (item) {\n item.value = v;\n });\n var attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content');\n for (var i = 0; i < attributeContent.length; i++) {\n if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) {\n attributeContent[i].style.display = 'block';\n } else {\n attributeContent[i].style.display = 'none';\n }\n }\n }\n }, {\n key: \"attributeLink\",\n get: function get() {\n return this.options.attribute.link.content;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.attribute.link.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.link.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.link.content[i].name + \"
\\n
\" + this.options.attribute.link.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3(index) {\n var table, tableContent, item, _loop, _i7;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return _this9.options.attribute.link.content;\n case 2:\n _this9.attributeLink = _context5.sent;\n table = _this9._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop(_i7) {\n var height, _html, textareaElm, td, btn, n, _iterator, _step, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(index === _i7)) {\n _context4.next = 36;\n break;\n }\n height = item[_i7].offsetHeight;\n _html = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i7].innerHTML = _html;\n textareaElm = item[_i7].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i7].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this9.options.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this9.options.attribute.link.content[index].url;\n btn = item[_i7].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context4.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context4.next = 14;\n break;\n }\n return _context4.abrupt(\"continue\", 32);\n case 14:\n _iterator = _createForOfIteratorHelper(btn[n].attributes);\n _context4.prev = 15;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop2$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n m = _step.value;\n if (!(m.name === '@click')) {\n _context3.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i7);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context3.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }, _loop2);\n });\n _iterator.s();\n case 18:\n if ((_step = _iterator.n()).done) {\n _context4.next = 24;\n break;\n }\n return _context4.delegateYield(_loop2(), \"t0\", 20);\n case 20:\n if (!_context4.t0) {\n _context4.next = 22;\n break;\n }\n return _context4.abrupt(\"break\", 24);\n case 22:\n _context4.next = 18;\n break;\n case 24:\n _context4.next = 29;\n break;\n case 26:\n _context4.prev = 26;\n _context4.t1 = _context4[\"catch\"](15);\n _iterator.e(_context4.t1);\n case 29:\n _context4.prev = 29;\n _iterator.f();\n return _context4.finish(29);\n case 32:\n n++;\n _context4.next = 11;\n break;\n case 35:\n return _context4.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context4.stop();\n }\n }, _loop, null, [[15, 26, 29, 32]]);\n });\n _i7 = 0;\n case 8:\n if (!(_i7 < item.length)) {\n _context5.next = 15;\n break;\n }\n return _context5.delegateYield(_loop(_i7), \"t0\", 10);\n case 10:\n if (!_context5.t0) {\n _context5.next = 12;\n break;\n }\n return _context5.abrupt(\"break\", 15);\n case 12:\n _i7++;\n _context5.next = 8;\n break;\n case 15:\n case \"end\":\n return _context5.stop();\n }\n }, _callee3);\n }));\n function linkEdit(_x2) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this9.options.attribute.link.content.splice(i, 1);\n _this9.attributeLink = _this9.options.attribute.link.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, \"\");\n var url = value.url && value.url.replace(/\\s/g, \"\");\n if (name && url) {\n _this9.options.attribute.link.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this9.attributeLink = _this9.options.attribute.link.content;\n },\n cancelEdit: function cancelEdit() {\n _this9.attributeLink = _this9.options.attribute.link.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect);\n fileElm.addEventListener('change', _fileSelect);\n }\n };\n var _fileSelect = function _fileSelect(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop3 = function _loop3(_i8) {\n var btn = item[_i8].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(btn[n].attributes),\n _step2;\n try {\n var _loop4 = function _loop4() {\n var m = _step2.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i8);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n for (var _i8 = 0; _i8 < item.length; _i8++) {\n _loop3(_i8);\n }\n }\n }, {\n key: \"attributeCamera\",\n get: function get() {\n return this.options.attribute.camera;\n },\n set: function set(v) {\n this.options.attribute.camera = v;\n }\n\n // get position() {\n // let cartographic = Cesium.Cartographic.fromCartesian(this.entity.position);\n // let lng = Cesium.Math.toDegrees(cartographic.longitude + 0.00000000663814);\n // let lat = Cesium.Math.toDegrees(cartographic.latitude + 0.00000025137835);\n // return { lng: lng, lat: lat, alt: cartographic.height - 2.19104611043234 }\n // }\n\n // set position(p) {\n\n // }\n\n /**\r\n * @desc 打开模型旋转功能\r\n * @param status {boolean}\r\n * @methodOf Source\r\n * */\n }, {\n key: \"rotationEditing\",\n get:\n /**\r\n * @desc 获取模型旋转状态\r\n * @method rotationEditing\r\n * @return boolean\r\n * @methodOf Source\r\n * */\n function get() {\n if (this.ControllerObject.getActiveState() === 'rtation') {\n return true;\n }\n return false;\n }\n\n /**@desc 打开平移模型功能\r\n *\r\n * @memberOf Source\r\n *@param status {boolean}\r\n *\r\n * */,\n set: function set(status) {\n if (status) {\n this.ControllerObject.editRtation();\n } else {\n this.ControllerObject.destroy();\n }\n }\n }, {\n key: \"positionEditing\",\n get: function get() {\n if (this.ControllerObject.getActiveState() === 'translational') {\n return true;\n }\n return false;\n }\n\n //平移时,坐标信息变化的回调\n ,\n set: function set(status) {\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer) {\n return;\n }\n if (status) {\n this.leftClickState = Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_17__[\"getLeftClickState\"])();\n this.ControllerObject.position = {\n lng: this.center.lng,\n lat: this.center.lat,\n alt: this.options.height\n };\n this.ControllerObject.editTranslational();\n new _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_17__[\"closeLeftClick\"](this.sdk);\n } else {\n if (this.leftClickState && !Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_17__[\"getLeftClickState\"])()) {\n new _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_17__[\"openLeftClick\"](this.sdk);\n }\n this.ControllerObject.destroy();\n }\n }\n }, {\n key: \"positionEditingCallBack\",\n get: function get() {}\n\n //旋转时,坐标信息变化的回调\n ,\n set: function set(callback) {\n return;\n }\n }, {\n key: \"rotationEditingCallBack\",\n get: function get() {\n var _this10 = this;\n return function (params) {\n // let params = this.ControllerObject._params\n // this.center = {\n // lng: params.tx,\n // lat: params.ty,\n // alt: params.tz,\n // }\n _this10.lng = params.tx;\n _this10.lat = params.ty;\n _this10.alt = params.tz;\n _this10.rotateX = params.rx;\n _this10.rotateY = params.ry;\n _this10.rotateZ = params.rz;\n _this10._rotationEditingCallBack && _this10._rotationEditingCallBack(_this10.ControllerObject._params);\n };\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */,\n set: function set(callback) {\n this._rotationEditingCallBack = callback;\n }\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n var _this11 = this;\n var state,\n _this,\n contentElm,\n tabsElm,\n colorPicker,\n labelColorPicker,\n lineColorPicker,\n labelBackgroundColorStartPicker,\n labelBackgroundColorEndPicker,\n all_elm,\n _args6 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n state = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n this._element_style = null;\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context6.next = 36;\n break;\n }\n this._element_style = document.createElement('style');\n this._element_style.type = 'text/css';\n this._element_style.setAttribute('data-name', 'YJ_style_dialog');\n this._element_style.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"css\"])();\n _context6.next = 12;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.sdk, this.originalOptions, {\n title: '编辑属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this11.name = _this11.options.name || '未命名对象';\n _this11.originalOptions = _this11.deepCopyObj(_this11.options);\n _this11._DialogObject.close();\n _this11.Dialog.confirmCallBack && _this11.Dialog.confirmCallBack(_this11.originalOptions);\n },\n resetCallBack: function resetCallBack() {\n _this11.reset();\n _this11.Dialog.resetCallBack && _this11.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this11.Dialog.removeCallBack && _this11.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this11.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this11.positionEditing = false;\n _this11.ControllerObject && _this11.ControllerObject.destroy();\n _this11.Dialog.closeCallBack && _this11.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this11.show = show;\n _this11.Dialog.showCallBack && _this11.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n if (_this11.positionEditing) {\n _this11.positionEditing = false;\n } else {\n _this11.positionEditing = true;\n }\n }\n }, true);\n case 12:\n this._DialogObject = _context6.sent;\n document.getElementsByTagName('head')[0].appendChild(this._element_style);\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_14__[\"default\"]('model-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"label_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"line_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.lineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this11.attributeLink = _this11.options.attribute.link.content;\n _this11.cameraSelect && _this11.cameraSelect();\n var tagData = _this11.attributeSelect;\n var attributeElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this11.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < tagData.length; _i9++) {\n if (tagData[_i9].value === attributeSelectElm.value) {\n _this11.attributeType = tagData[_i9].key;\n break;\n }\n }\n });\n }\n }, 0);\n _context6.next = 36;\n break;\n case 36:\n case \"end\":\n return _context6.stop();\n }\n }, _callee4, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }() //更新模型位置\n )\n }, {\n key: \"updateModel\",\n value: function updateModel(_tx, _ty, _tz) {\n var _rx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var _ry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var _rz = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var _scale = arguments.length > 6 ? arguments[6] : undefined;\n _tx = parseFloat(_tx);\n _ty = parseFloat(_ty);\n _tz = parseFloat(_tz);\n _rx = parseFloat(_rx);\n _ry = parseFloat(_ry);\n _rz = parseFloat(_rz);\n _scale = parseFloat(_scale);\n this.entity.rotate = {\n x: _rx,\n y: _ry,\n z: _rz\n };\n var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(_rx));\n var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(_ry));\n var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(_rz));\n // 平移\n var position = new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz);\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3(position.x - this.entity._center.x, position.y - this.entity._center.y, position.z - this.entity._center.z));\n // 旋转\n var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n var rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n var originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(position.x - this.entity._center.x, position.y - this.entity._center.y, position.z - this.entity._center.z), this.entity.modelMatrix);\n\n // console.log(position.z, this.entity._center.z)\n // Cesium.Matrix4.multiply(this.entity.modelMatrix, rotationX, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationZ, this.entity.modelMatrix)\n // 缩放\n // Cesium.Matrix4.multiplyByScale(this.entity.modelMatrix, new Cesium.Cartesian3(_scale, _scale, _scale), this.entity.modelMatrix)\n\n this.ControllerObject.update();\n this.entity.position = new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz);\n }\n }, {\n key: \"updateModelRotate\",\n value: function updateModelRotate() {\n var _rx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var _ry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var _rz = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var _scale = arguments.length > 3 ? arguments[3] : undefined;\n _rx = parseFloat(_rx);\n _ry = parseFloat(_ry);\n _rz = parseFloat(_rz);\n _scale = parseFloat(_scale);\n this.sdk.viewer.scene.primitives.remove(this.entity);\n var url = this.options.url;\n if (!url.startsWith(\"http\")) {\n //说明是本地的json,在磁盘中存在的\n if (!url.includes(\":\")) {\n if (this.options.host) {\n var o = new URL(url, this.options.host);\n url = o.href;\n }\n }\n }\n var instances = [];\n for (var i = 0; i < this.ModelPositions.length; i++) {\n var scale = _scale;\n // let cartographic = Cesium.Cartographic.fromDegrees(ModelPositions[i].lng, ModelPositions[i].lat, this.options.height);\n var position = Cesium.Cartesian3.fromDegrees(this.ModelPositions[i].lng, this.ModelPositions[i].lat, this.options.height);\n var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(position, new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(_rz), Cesium.Math.toRadians(_ry), Cesium.Math.toRadians(_rx)));\n Cesium.Matrix4.multiplyByUniformScale(modelMatrix, scale, modelMatrix);\n instances.push({\n modelMatrix: modelMatrix\n });\n }\n this.entity = new Cesium.ModelInstanceCollection({\n url: url,\n instances: instances\n });\n this.entity.position = new Cesium.Cartesian3.fromDegrees(this.center.lng, this.center.lat, this.options.height);\n this.entity.rotate = {\n x: this.options.rotate.x,\n y: this.options.rotate.y,\n z: this.options.rotate.z\n };\n this.updateModel(this.center.lng, this.center.lat, this.options.height, this.options.rotate.x, this.options.rotate.y, this.options.rotate.z, this.options.scale);\n this.sdk.viewer.scene.primitives.add(this.entity);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lng = this.originalOptions.position.lng;\n this.lat = this.originalOptions.position.lat;\n this.alt = this.originalOptions.position.alt;\n this.maximumScale = this.originalOptions.maximumScale;\n this.minimumPixelSize = this.originalOptions.minimumPixelSize;\n this.scaleByDistance = this.originalOptions.scaleByDistance;\n this.rotateX = this.originalOptions.rotate.x;\n this.rotateY = this.originalOptions.rotate.y;\n this.rotateZ = this.originalOptions.rotate.z;\n this.scale = this.originalOptions.scale;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.attributeLink = this.options.attribute.link.content;\n this.attributeCamera = this.options.attribute.camera;\n this.cameraSelect && this.cameraSelect();\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_18__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Model2);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvTW9kZWwyL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZU1vZGVsL01vZGVsMi9pbmRleC5qcz84YTBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEhvc3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vb25cIjtcclxuaW1wb3J0IHsgaHRtbCwgY3NzIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uLy4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db250cm9sbGVyL2luZGV4XCI7XHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tIFwiLi4vLi4vLi4vTGFiZWxPYmplY3RcIjtcclxuaW1wb3J0IHsgb3BlbkxlZnRDbGljaywgY2xvc2VMZWZ0Q2xpY2ssIG9wZW5SaWdodENsaWNrLCBjbG9zZVJpZ2h0Q2xpY2ssIGdldExlZnRDbGlja1N0YXRlLCBnZXRSaWdodENsaWNrU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vR2xvYmFsL0NsaWNrQ2FsbGJhY2tcIlxyXG5pbXBvcnQgQmFzZU1vZGVsIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIE1vZGVsMiBleHRlbmRzIEJhc2VNb2RlbCB7XHJcbiAgLyoqXHJcbiogQGNvbnN0cnVjdG9yXHJcbiogQGRlc2NyaXB0aW9uIOWKoOi9veaooeWei1xyXG4qIEBwYXJhbSBzZGsge29iamVjdH0gc2RrXHJcbiogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5qih5Z6L5Y+C5pWwXHJcbiogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5a+56LGhaWRcclxuKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaooeWei+aYvumakFxyXG4qIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiogQHBhcmFtIG9wdGlvbnMudXJsIHtzdHJpbmd9IOi1hOa6kOWcsOWdgFxyXG4qIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9ucyB7QXJyYXkuPG9iamVjdD59IOWdkOagh+aVsOe7hCBbe2xuZyxsYXQsYWx0fSwuLi5dXHJcbiogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0IHtudW1iZXJ9IOmrmOeoi++8jOS4uuepuuaXtuWPluWdkOagh+S4reacgOS9jumrmOeoi1xyXG4qIEBwYXJhbSBvcHRpb25zLnR5cGU9MCB7bnVtYmVyfSDnsbvlnosgMDrngrnvvJsxOue6v++8mzI65aSa6L655b2i77ybMzrnn6nlvaJcclxuKiBAcGFyYW0gb3B0aW9ucy5pbnRlcnZhbD0xIHtudW1iZXJ9IOmXtOmalCjnsbMp77yMdHlwZT0w5pe25LiN55Sf5pWIXHJcbiogQHBhcmFtIG9wdGlvbnMucXVhbnRpdHkge29iamVjdH0g5pWw6YeP77yMdHlwZT0z5pe255Sf5pWIXHJcbiogQHBhcmFtIG9wdGlvbnMucXVhbnRpdHkueCB7bnVtYmVyfSB46L205pa55ZCR5pWw6YeP77yMdHlwZT0z5pe255Sf5pWIXHJcbiogQHBhcmFtIG9wdGlvbnMucXVhbnRpdHkueSB7bnVtYmVyfSB56L205pa55ZCR5pWw6YeP77yMdHlwZT0z5pe255Sf5pWIXHJcbiogQHBhcmFtIG9wdGlvbnMuc2NhbGU9MSB7bnVtYmVyfSDmr5TkvotcclxuKiBAcGFyYW0gb3B0aW9ucy5tYXhpbXVtU2NhbGU9MTAwIHtudW1iZXJ9IOacgOWkp+avlOS+i1xyXG4qIEBwYXJhbSBvcHRpb25zLm1pbmltdW1QaXhlbFNpemU9NjAge251bWJlcn0g5pyA5bCP5YOP57SgXHJcbiogQHBhcmFtIG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlPXRydWUge2Jvb2xlYW59IOmaj+inhumHjue8qeaUvlxyXG4qIEBwYXJhbSBvcHRpb25zLnJvdGF0ZSB7b2JqZWN0fSDml4vovazop5LluqZcclxuKiBAcGFyYW0gb3B0aW9ucy5yb3RhdGUueCB7bnVtYmVyfSB46L205peL6L2s5bqm5pWwXHJcbiogQHBhcmFtIG9wdGlvbnMucm90YXRlLnkge251bWJlcn0geei9tOaXi+i9rOW6puaVsFxyXG4qIEBwYXJhbSBvcHRpb25zLnJvdGF0ZS56IHtudW1iZXJ9IHrovbTml4vovazluqbmlbBcclxuKiAqL1xyXG4gIGNvbnN0cnVjdG9yKGVhcnRoLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoZWFydGgsIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSlcclxuICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICcjZmZmZmZmJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlID0gKG9wdGlvbnMuc2NhbGUgfHwgb3B0aW9ucy5zY2FsZSA9PT0gMCkgPyBvcHRpb25zLnNjYWxlIDogMVxyXG4gICAgdGhpcy5vcHRpb25zLnVybCA9IG9wdGlvbnMudXJsXHJcbiAgICB0aGlzLm9wdGlvbnMubWF4aW11bVNjYWxlID0gKG9wdGlvbnMubWF4aW11bVNjYWxlIHx8IG9wdGlvbnMubWF4aW11bVNjYWxlID09PSAwKSA/IG9wdGlvbnMubWF4aW11bVNjYWxlIDogMTAwXHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVBpeGVsU2l6ZSA9IChvcHRpb25zLm1pbmltdW1QaXhlbFNpemUgfHwgb3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplID09PSAwKSA/IG9wdGlvbnMubWluaW11bVBpeGVsU2l6ZSA6IDYwXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gb3B0aW9ucy5wb3NpdGlvbnMgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy50eXBlID0gb3B0aW9ucy50eXBlIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5pbnRlcnZhbCA9IChvcHRpb25zLmludGVydmFsIHx8IG9wdGlvbnMuaW50ZXJ2YWwgPT09IDApID8gb3B0aW9ucy5pbnRlcnZhbCA6IDFcclxuICAgIHRoaXMub3B0aW9ucy5xdWFudGl0eSA9IG9wdGlvbnMucXVhbnRpdHlcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPSAob3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgfHwgb3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlIDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZSA9IG9wdGlvbnMucm90YXRlID0gKG9wdGlvbnMucm90YXRlIHx8IHt9KVxyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZS54ID0gb3B0aW9ucy5yb3RhdGUueCB8fCAwXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnkgPSBvcHRpb25zLnJvdGF0ZS55IHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueiA9IG9wdGlvbnMucm90YXRlLnogfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCA9IChvcHRpb25zLmxhYmVsIHx8IHt9KVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSAob3B0aW9ucy5sYWJlbC5zaG93IHx8IG9wdGlvbnMubGFiZWwuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgMjBcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnXHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDBcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDBcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzQyYzZlZicsICcjNDJjNmVmJ11cclxuICAgIHRoaXMub3B0aW9ucy5saW5lID0gb3B0aW9ucy5saW5lID0gKG9wdGlvbnMubGluZSB8fCB7fSlcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gb3B0aW9ucy5saW5lLndpZHRoIHx8IDJcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmxlbmd0aCA9IG9wdGlvbnMubGluZS5sZW5ndGggfHwgMjBcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gb3B0aW9ucy5saW5lLmNvbG9yIHx8ICcjZmZmMDAwJ1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSA9IG9wdGlvbnMuYXR0cmlidXRlVHlwZSB8fCAncmljaFRleHQnXHJcbiAgICB0aGlzLk1vZGVsUG9zaXRpb25zID0gW11cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuXHJcbiAgICB0aGlzLnBvc2l0aW9uQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnJvdGF0aW9uQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLm9uQ2xpY2tDYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcblxyXG4gICAgdGhpcy5Db250cm9sbGVyT2JqZWN0ID0gbmV3IENvbnRyb2xsZXIodGhpcy5zZGspXHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuY29udHJvbGxlckNhbGxCYWNrID0gKHBhcmFtcykgPT4ge1xyXG4gICAgICB0aGlzLmxuZyA9IHBhcmFtcy5wb3NpdGlvbi5sbmdcclxuICAgICAgdGhpcy5sYXQgPSBwYXJhbXMucG9zaXRpb24ubGF0XHJcbiAgICAgIHRoaXMuYWx0ID0gcGFyYW1zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAvLyB0aGlzLnJvdGF0ZVggPSBwYXJhbXMucm90YXRlLnhcclxuICAgICAgLy8gdGhpcy5yb3RhdGVZID0gcGFyYW1zLnJvdGF0ZS55XHJcbiAgICAgIC8vIHRoaXMucm90YXRlWiA9IHBhcmFtcy5yb3RhdGUuelxyXG4gICAgICAvLyB0aGlzLnVwZGF0ZU1vZGVsKHBhcmFtcy5wb3NpdGlvbi5sbmcsIHBhcmFtcy5wb3NpdGlvbi5sYXQsIHBhcmFtcy5wb3NpdGlvbi5hbHQsIHBhcmFtcy5yb3RhdGUueCwgcGFyYW1zLnJvdGF0ZS55LCBwYXJhbXMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG5cclxuICAgIHRoaXMub24oKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJnbGJcIlxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGxvYWRNb2RlbCh1cmwpIHtcclxuICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgIC8v6K+05piO5piv5pys5Zyw55qEanNvbu+8jOWcqOejgeebmOS4reWtmOWcqOeahFxyXG4gICAgICBpZiAoIXVybC5pbmNsdWRlcyhcIjpcIikpIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhvc3QpIHtcclxuICAgICAgICAgIGxldCBvID0gbmV3IFVSTCh1cmwsIHRoaXMub3B0aW9ucy5ob3N0KVxyXG4gICAgICAgICAgdXJsID0gby5ocmVmXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgQ2VzaXVtLlByaW1pdGl2ZUNvbGxlY3Rpb24oKTtcclxuXHJcbiAgICBsZXQgcG9zaXRpb25zID0gW1tdXVxyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9zaXRpb25zWzBdLnB1c2goW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCA+IHRoaXMub3B0aW9ucy5oZWlnaHQpIHtcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocG9zaXRpb25zWzBdLmxlbmd0aCA+IDIpIHtcclxuICAgICAgcG9zaXRpb25zWzBdLnB1c2goW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdF0pXHJcbiAgICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9ucyk7XHJcbiAgICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbik7XHJcbiAgICAgIHRoaXMuY2VudGVyID0geyBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHBvc2l0aW9uc1swXS5sZW5ndGggPT0gMikge1xyXG4gICAgICB0aGlzLmNlbnRlciA9IHsgbG5nOiAodGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcgKyB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZykgLyAyLCBsYXQ6ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCArIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMV0ubGF0KSAvIDIgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2VudGVyID0geyBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0IH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgTW9kZWxQb3NpdGlvbnMgPSBbXVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVpZ2h0ICYmIHRoaXMub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgfVxyXG4gICAgbGV0IGdyaWRcclxuXHJcbiAgICBsZXQgc2NyaXB0cyA9IGRvY3VtZW50LnNjcmlwdHM7XHJcbiAgICBsZXQgdHVyZlVybCA9ICcnXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHNjcmlwdHNbaV0uc3JjICYmIHNjcmlwdHNbaV0uc3JjLmluY2x1ZGVzKCd0dXJmLm1pbi5qcycpKSB7XHJcbiAgICAgICAgdHVyZlVybCA9IHNjcmlwdHNbaV0uc3JjICYmIHNjcmlwdHNbaV0uc3JjXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgdHlwZTogdGhpcy5vcHRpb25zLnR5cGUsXHJcbiAgICAgIGludGVydmFsOiB0aGlzLm9wdGlvbnMuaW50ZXJ2YWwsXHJcbiAgICAgIHBvc2l0aW9uczogcG9zaXRpb25zLFxyXG4gICAgICBvcHRpb25zUG9zaXRpb25zOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zLFxyXG4gICAgICBxdWFudGl0eTogdGhpcy5vcHRpb25zLnF1YW50aXR5LFxyXG4gICAgICB0dXJmVXJsOiB0dXJmVXJsXHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB0aHJlYWRGbih7IHR5cGUsIGludGVydmFsLCBwb3NpdGlvbnMsIG9wdGlvbnNQb3NpdGlvbnMsIHF1YW50aXR5LCB0dXJmVXJsIH0pIHtcclxuICAgICAgaW1wb3J0U2NyaXB0cyh0dXJmVXJsKTtcclxuICAgICAgbGV0IE1vZGVsUG9zaXRpb25zID0gW11cclxuICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcocG9zaXRpb25zWzBdKTtcclxuICAgICAgICAgIGxldCBjaHVuayA9IHR1cmYubGluZUNodW5rKGxpbmUsIGludGVydmFsIC8gMTAwMCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgICAgTW9kZWxQb3NpdGlvbnMucHVzaCh7IGxuZzogY2h1bmsuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1bMF0sIGxhdDogY2h1bmsuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1bMV0gfSlcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2h1bmsuZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgTW9kZWxQb3NpdGlvbnMucHVzaCh7IGxuZzogY2h1bmsuZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMF0sIGxhdDogY2h1bmsuZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMV0gfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9ucyk7XHJcbiAgICAgICAgICBsZXQgYmJveCA9IHR1cmYuYmJveChwb2x5Z29uKTtcclxuICAgICAgICAgIGdyaWQgPSB0dXJmLnBvaW50R3JpZChiYm94LCBpbnRlcnZhbCAvIDEwMDAsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICAgIGxldCBwdHNXaXRoaW4gPSB0dXJmLnBvaW50c1dpdGhpblBvbHlnb24oZ3JpZCwgcG9seWdvbik7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB0c1dpdGhpbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBNb2RlbFBvc2l0aW9ucy5wdXNoKHsgbG5nOiBwdHNXaXRoaW4uZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGxhdDogcHRzV2l0aGluLmZlYXR1cmVzW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICBpZiAocXVhbnRpdHkpIHtcclxuICAgICAgICAgICAgbGV0IG1pblggPSBvcHRpb25zUG9zaXRpb25zWzBdLmxuZ1xyXG4gICAgICAgICAgICBsZXQgbWluWSA9IG9wdGlvbnNQb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgIGxldCBtYXhYID0gb3B0aW9uc1Bvc2l0aW9uc1syXS5sbmdcclxuICAgICAgICAgICAgbGV0IG1heFkgPSBvcHRpb25zUG9zaXRpb25zWzJdLmxhdFxyXG4gICAgICAgICAgICBsZXQgZnJvbVggPSB0dXJmLnBvaW50KFttaW5YLCBtYXhZXSk7XHJcbiAgICAgICAgICAgIGxldCB0b1ggPSB0dXJmLnBvaW50KFttYXhYLCBtYXhZXSk7XHJcbiAgICAgICAgICAgIGxldCBkaXN0YW5jZVggPSB0dXJmLmRpc3RhbmNlKGZyb21YLCB0b1gsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICAgICAgbGV0IHggPSBkaXN0YW5jZVggLyBxdWFudGl0eS54XHJcbiAgICAgICAgICAgIGxldCBmcm9tWSA9IHR1cmYucG9pbnQoW21pblgsIG1heFldKTtcclxuICAgICAgICAgICAgbGV0IHRvWSA9IHR1cmYucG9pbnQoW21pblgsIG1pblldKTtcclxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlWSA9IHR1cmYuZGlzdGFuY2UoZnJvbVksIHRvWSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgICAgICBsZXQgeSA9IGRpc3RhbmNlWSAvIHF1YW50aXR5LnlcclxuXHJcbiAgICAgICAgICAgIGxldCBsaW5lWCA9IHR1cmYubGluZVN0cmluZyhbW21pblgsIG1heFldLCBbbWF4WCwgbWF4WV1dKTtcclxuICAgICAgICAgICAgbGV0IGNodW5rWCA9IHR1cmYubGluZUNodW5rKGxpbmVYLCB4LCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgIGxldCBsaW5lWSA9IHR1cmYubGluZVN0cmluZyhbW21pblgsIG1heFldLCBbbWluWCwgbWluWV1dKTtcclxuICAgICAgICAgICAgbGV0IGNodW5rWSA9IHR1cmYubGluZUNodW5rKGxpbmVZLCB5LCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2h1bmtYLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IFhjb29yZGluYXRlcyA9IGNodW5rWC5mZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgY2h1bmtZLmZlYXR1cmVzLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgWWNvb3JkaW5hdGVzID0gY2h1bmtZLmZlYXR1cmVzW21dLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgICAgICAgICBNb2RlbFBvc2l0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG5nOiAoWGNvb3JkaW5hdGVzWzBdWzBdICsgWGNvb3JkaW5hdGVzWzFdWzBdKSAvIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgbGF0OiAoWWNvb3JkaW5hdGVzWzBdWzFdICsgWWNvb3JkaW5hdGVzWzFdWzFdKSAvIDIsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBncmlkID0gdHVyZi5wb2ludEdyaWQoW29wdGlvbnNQb3NpdGlvbnNbMF0ubG5nLCBvcHRpb25zUG9zaXRpb25zWzBdLmxhdCwgb3B0aW9uc1Bvc2l0aW9uc1syXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbMl0ubGF0XSwgaW50ZXJ2YWwgLyAxMDAwLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JpZC5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIE1vZGVsUG9zaXRpb25zLnB1c2goeyBsbmc6IGdyaWQuZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGxhdDogZ3JpZC5mZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTW9kZWxQb3NpdGlvbnMgPSBbLi4ub3B0aW9uc1Bvc2l0aW9uc11cclxuICAgICAgfVxyXG5cclxuICAgICAgc2VsZi5wb3N0TWVzc2FnZShNb2RlbFBvc2l0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY3JlYXRlV29ya2VyKGZuKSB7XHJcbiAgICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoYGRhdGE6LCgke2ZuLnRvU3RyaW5nKCl9KSgke0pTT04uc3RyaW5naWZ5KHBhcmFtcyl9KWApXHJcbiAgICAgIHJldHVybiB3b3JrZXJcclxuICAgIH1cclxuICAgIGNvbnN0IHdvcmtlciA9IGNyZWF0ZVdvcmtlcih0aHJlYWRGbilcclxuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBlID0+IHtcclxuICAgICAgdGhpcy5Nb2RlbFBvc2l0aW9ucyA9IE1vZGVsUG9zaXRpb25zID0gZS5kYXRhXHJcbiAgICAgIGxldCBpbnN0YW5jZXMgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1vZGVsUG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGhlYWRpbmcgPSAwXHJcbiAgICAgICAgbGV0IHBpdGNoID0gMFxyXG4gICAgICAgIGxldCByb2xsID0gMFxyXG4gICAgICAgIGxldCBzY2FsZSA9IDFcclxuICAgICAgICAvLyBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhNb2RlbFBvc2l0aW9uc1tpXS5sbmcsIE1vZGVsUG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLmhlaWdodCk7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICBNb2RlbFBvc2l0aW9uc1tpXS5sbmcsIE1vZGVsUG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmFyIG1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuaGVhZGluZ1BpdGNoUm9sbFRvRml4ZWRGcmFtZShcclxuICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsKGhlYWRpbmcsIHBpdGNoLCByb2xsKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVVuaWZvcm1TY2FsZShcclxuICAgICAgICAgIG1vZGVsTWF0cml4LFxyXG4gICAgICAgICAgc2NhbGUsXHJcbiAgICAgICAgICBtb2RlbE1hdHJpeFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGluc3RhbmNlcy5wdXNoKHtcclxuICAgICAgICAgIG1vZGVsTWF0cml4OiBtb2RlbE1hdHJpeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubGFiZWwgPSBuZXcgTGFiZWxPYmplY3QodGhpcy5zZGssIHtcclxuICAgICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyA/IHRoaXMub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgICAgcG9zaXRpb246IFt0aGlzLmNlbnRlci5sbmcsIHRoaXMuY2VudGVyLmxhdCwgdGhpcy5vcHRpb25zLmhlaWdodF0sXHJcbiAgICAgICAgdGV4dDogdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgICAgZm9udFNpemU6IHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSxcclxuICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiB0aGlzLm9wdGlvbnMubGluZS5sZW5ndGgsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgIGxpbmVDb2xvcjogdGhpcy5vcHRpb25zLmxpbmUuY29sb3IsXHJcbiAgICAgICAgbGluZVdpZHRoOiB0aGlzLm9wdGlvbnMubGluZS53aWR0aCxcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgICAgbmVhcjogdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIsXHJcbiAgICAgICAgZmFyOiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyB0aGlzLmVudGl0eSA9IGNvbGxlY3Rpb25cclxuICAgICAgdGhpcy5lbnRpdHkgPSBuZXcgQ2VzaXVtMi5Nb2RlbEluc3RhbmNlQ29sbGVjdGlvbih7XHJcbiAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgaW5zdGFuY2VzOiBpbnN0YW5jZXNcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5jZW50ZXIubG5nLCB0aGlzLmNlbnRlci5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQpXHJcbiAgICAgIHRoaXMuZW50aXR5LnJvdGF0ZSA9IHsgeDogdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB5OiB0aGlzLm9wdGlvbnMucm90YXRlLnksIHo6IHRoaXMub3B0aW9ucy5yb3RhdGUueiB9O1xyXG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZCh0aGlzLmVudGl0eSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUoKSB7XHJcbiAgICBzdXBlci5yZW1vdmUoKVxyXG4gICAgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KTtcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbygpIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5jZW50ZXIubG5nLCB0aGlzLmNlbnRlci5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQgKyA1MDApXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7ZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0KX0pXHJcbiAgfVxyXG5cclxuXHJcbiAgb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGQoKVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFZhbHVlKCkge1xyXG4gICAgc3VwZXIuc2V0RGVmYXVsdFZhbHVlKClcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gdGhpcy5vcHRpb25zLnVybCB8fCBcIlwiXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgdGhpcy5lbnRpdHkuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbG5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2VudGVyLmxuZ1xyXG4gIH1cclxuXHJcbiAgc2V0IGxuZyh2KSB7XHJcbiAgICB0aGlzLmNlbnRlci5sbmcgPSB2XHJcbiAgICB0aGlzLl9Db250cm9sbGVyQ2hhbmdlUG9zaXRpb24oNTApXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0XVxyXG4gICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jZW50ZXIubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMuY2VudGVyLmxhdCA9IHZcclxuICAgIHRoaXMuX0NvbnRyb2xsZXJDaGFuZ2VQb3NpdGlvbig1MClcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5jZW50ZXIubG5nLCB0aGlzLmNlbnRlci5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5jZW50ZXIubG5nLCB0aGlzLmNlbnRlci5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHRdXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMuY2VudGVyLmFsdCA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSB2XHJcbiAgICB0aGlzLl9Db250cm9sbGVyQ2hhbmdlUG9zaXRpb24oNTApXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW051bWJlcih0aGlzLmNlbnRlci5sbmcpLCBOdW1iZXIodGhpcy5jZW50ZXIubGF0KSwgTnVtYmVyKHRoaXMub3B0aW9ucy5oZWlnaHQpXVxyXG4gICAgdGhpcy5fZWxtcy5hbHQgJiYgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIF9Db250cm9sbGVyQ2hhbmdlUG9zaXRpb24oZGVsYXkpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGNsZWFyVGltZW91dChfdGhpcy5fQ29udHJvbGxlckNoYW5nZVBvc2l0aW9uRXZlbnQpO1xyXG4gICAgX3RoaXMuX0NvbnRyb2xsZXJDaGFuZ2VQb3NpdGlvbkV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIF90aGlzLkNvbnRyb2xsZXJPYmplY3QucG9zaXRpb24gPSB7XHJcbiAgICAgICAgbG5nOiBfdGhpcy5jZW50ZXIubG5nLFxyXG4gICAgICAgIGxhdDogX3RoaXMuY2VudGVyLmxhdCxcclxuICAgICAgICBhbHQ6IF90aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgICAgIH1cclxuICAgIH0sIGRlbGF5KTtcclxuICB9XHJcblxyXG4gIGdldCBtYXhpbXVtU2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1heGltdW1TY2FsZVxyXG4gIH1cclxuXHJcbiAgc2V0IG1heGltdW1TY2FsZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWF4aW11bVNjYWxlID0gdlxyXG4gICAgdGhpcy5lbnRpdHkubWF4aW11bVNjYWxlID0gdGhpcy5zY2FsZUJ5RGlzdGFuY2UgPyB1bmRlZmluZWQgOiB2XHJcbiAgICB0aGlzLl9lbG1zLm1heGltdW1TY2FsZSAmJiB0aGlzLl9lbG1zLm1heGltdW1TY2FsZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbmltdW1QaXhlbFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1pbmltdW1QaXhlbFNpemVcclxuICB9XHJcblxyXG4gIHNldCBtaW5pbXVtUGl4ZWxTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplID0gdlxyXG4gICAgdGhpcy5lbnRpdHkubWluaW11bVBpeGVsU2l6ZSA9IHRoaXMuc2NhbGVCeURpc3RhbmNlID8gdW5kZWZpbmVkIDogdlxyXG4gICAgdGhpcy5fZWxtcy5taW5pbXVtUGl4ZWxTaXplICYmIHRoaXMuX2VsbXMubWluaW11bVBpeGVsU2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG5cclxuICBzZXQgc2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmVudGl0eS5tYXhpbXVtU2NhbGUgPSB2ID8gdW5kZWZpbmVkIDogdGhpcy5tYXhpbXVtU2NhbGVcclxuICAgIHRoaXMuZW50aXR5Lm1pbmltdW1QaXhlbFNpemUgPSB2ID8gdW5kZWZpbmVkIDogdGhpcy5taW5pbXVtUGl4ZWxTaXplXHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLnNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcm90YXRlWCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucm90YXRlLnhcclxuICB9XHJcblxyXG4gIHNldCByb3RhdGVYKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUueCA9IHZcclxuICAgIHRoaXMudXBkYXRlTW9kZWxSb3RhdGUodGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgLy8gdGhpcy51cGRhdGVNb2RlbCh0aGlzLmNlbnRlci5sbmcsIHRoaXMuY2VudGVyLmxhdCwgdGhpcy5vcHRpb25zLmhlaWdodCwgdGhpcy5vcHRpb25zLnJvdGF0ZS54LCB0aGlzLm9wdGlvbnMucm90YXRlLnksIHRoaXMub3B0aW9ucy5yb3RhdGUueiwgdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgdGhpcy5fZWxtcy5yb3RhdGVYICYmIHRoaXMuX2VsbXMucm90YXRlWC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0ZVkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZS55XHJcbiAgfVxyXG5cclxuICBzZXQgcm90YXRlWSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlLnkgPSB2XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsUm90YXRlKHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIC8vIHRoaXMudXBkYXRlTW9kZWwodGhpcy5jZW50ZXIubG5nLCB0aGlzLmNlbnRlci5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQsIHRoaXMub3B0aW9ucy5yb3RhdGUueCwgdGhpcy5vcHRpb25zLnJvdGF0ZS55LCB0aGlzLm9wdGlvbnMucm90YXRlLnosIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMucm90YXRlWSAmJiB0aGlzLl9lbG1zLnJvdGF0ZVkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCByb3RhdGVaKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yb3RhdGUuelxyXG4gIH1cclxuXHJcbiAgc2V0IHJvdGF0ZVoodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJvdGF0ZS56ID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbFJvdGF0ZSh0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAvLyB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLl9lbG1zLnJvdGF0ZVogJiYgdGhpcy5fZWxtcy5yb3RhdGVaLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYWxlXHJcbiAgfVxyXG5cclxuICBzZXQgc2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbFJvdGF0ZSh0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAvLyB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlICYmIHRoaXMuX2VsbXMuc2NhbGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93KSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlICYmIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgfVxyXG5cclxuICBzZXQgbGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxpbmVXaWR0aCAmJiB0aGlzLl9lbG1zLmxpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUubGVuZ3RoXHJcbiAgfVxyXG5cclxuICBzZXQgbGluZUxlbmd0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5sZW5ndGggPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5saW5lTGVuZ3RoICYmIHRoaXMuX2VsbXMubGluZUxlbmd0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5jb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGxpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGluZUNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt2LCB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZVxyXG4gIH1cclxuXHJcbiAgc2V0IGF0dHJpYnV0ZVR5cGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmF0dHJpYnV0ZVR5cGUgJiYgdGhpcy5fZWxtcy5hdHRyaWJ1dGVUeXBlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgICBsZXQgYXR0cmlidXRlQ29udGVudCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50JylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlQ29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXR0cmlidXRlQ29udGVudFtpXS5jbGFzc05hbWUuaW5kZXhPZignYXR0cmlidXRlLWNvbnRlbnQtJyArIHYpID4gLTEpIHtcclxuICAgICAgICBhdHRyaWJ1dGVDb250ZW50W2ldLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGF0dHJpYnV0ZUNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZUxpbmsoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVMaW5rKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdlxyXG4gICAgaWYgKCF0aGlzLl9EaWFsb2dPYmplY3QgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fCAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgfHwgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ciA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0ubmFtZSArIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS51cmwgKyBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImxpbmtFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+YFxyXG4gICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gICAgfVxyXG4gICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgbGV0IGZ1biA9IHtcclxuICAgICAgbGlua0VkaXQ6IGFzeW5jIChpbmRleCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpdGVtW2ldLm9mZnNldEhlaWdodFxyXG4gICAgICAgICAgICBsZXQgaHRtbCA9IGBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0IGxpbmstZWRpdFwiIHR5cGU9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgICAgICAgICAgIGl0ZW1baV0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgICAgICAgICBsZXQgdGV4dGFyZWFFbG0gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmstZWRpdCcpWzBdXHJcbiAgICAgICAgICAgIHRleHRhcmVhRWxtLnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSAxMCkgKyAncHgnXHJcbiAgICAgICAgICAgIGxldCB0ZCA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgICAgICB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaW5kZXhdLm5hbWVcclxuICAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZSBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChmdW5bbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oeyBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLCB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgfSwgaSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbGlua0RlbGV0ZTogKGkpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5zcGxpY2UoaSwgMSlcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGxldCB1cmwgPSB2YWx1ZS51cmwgJiYgdmFsdWUudXJsLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGlmKG5hbWUgJiYgdXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DmiJbpk77mjqXkuI3og73kuLrnqbrvvIEnLFxyXG4gICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgfSxcclxuICAgICAgY2FuY2VsRWRpdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVTZWxlY3QgPSAoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIGxldCB0ZCA9IGl0ZW1bZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBpZiAoIWJ0bltuXSB8fCFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgY29udGludWUgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnVuW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlQ2FtZXJhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhXHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlQ2FtZXJhKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhID0gdlxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IHBvc2l0aW9uKCkge1xyXG4gIC8vICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbih0aGlzLmVudGl0eS5wb3NpdGlvbik7XHJcbiAgLy8gICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUgKyAwLjAwMDAwMDAwNjYzODE0KTtcclxuICAvLyAgIGxldCBsYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlICsgMC4wMDAwMDAyNTEzNzgzNSk7XHJcbiAgLy8gICByZXR1cm4geyBsbmc6IGxuZywgbGF0OiBsYXQsIGFsdDogY2FydG9ncmFwaGljLmhlaWdodCAtIDIuMTkxMDQ2MTEwNDMyMzQgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IHBvc2l0aW9uKHApIHtcclxuXHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDmiZPlvIDmqKHlnovml4vovazlip/og71cclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuICAgKiAqL1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0UnRhdGlvbigpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg6I635Y+W5qih5Z6L5peL6L2s54q25oCBXHJcbiAgICogQG1ldGhvZCByb3RhdGlvbkVkaXRpbmdcclxuICAgKiBAcmV0dXJuIGJvb2xlYW5cclxuICAgKiBAbWV0aG9kT2YgU291cmNlXHJcblxyXG4gICAqICovXHJcbiAgZ2V0IHJvdGF0aW9uRWRpdGluZygpIHtcclxuICAgIGlmICh0aGlzLkNvbnRyb2xsZXJPYmplY3QuZ2V0QWN0aXZlU3RhdGUoKSA9PT0gJ3J0YXRpb24nKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+aooeWei+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICAgKlxyXG4gICAqICovXHJcbiAgc2V0IHBvc2l0aW9uRWRpdGluZyhzdGF0dXMpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgdGhpcy5sZWZ0Q2xpY2tTdGF0ZSA9IGdldExlZnRDbGlja1N0YXRlKClcclxuICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LnBvc2l0aW9uID0ge1xyXG4gICAgICAgIGxuZzogdGhpcy5jZW50ZXIubG5nLFxyXG4gICAgICAgIGxhdDogdGhpcy5jZW50ZXIubGF0LFxyXG4gICAgICAgIGFsdDogdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgIG5ldyBjbG9zZUxlZnRDbGljayh0aGlzLnNkaylcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sZWZ0Q2xpY2tTdGF0ZSAmJiAhZ2V0TGVmdENsaWNrU3RhdGUoKSkge1xyXG4gICAgICAgIG5ldyBvcGVuTGVmdENsaWNrKHRoaXMuc2RrKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5Db250cm9sbGVyT2JqZWN0LmdldEFjdGl2ZVN0YXRlKCkgPT09ICd0cmFuc2xhdGlvbmFsJykge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICAvL+W5s+enu+aXtu+8jOWdkOagh+S/oeaBr+WPmOWMlueahOWbnuiwg1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmdDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nQ2FsbEJhY2soKSB7XHJcbiAgfVxyXG5cclxuICAvL+aXi+i9rOaXtu+8jOWdkOagh+S/oeaBr+WPmOWMlueahOWbnuiwg1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmdDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgdGhpcy5fcm90YXRpb25FZGl0aW5nQ2FsbEJhY2sgPSBjYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIChwYXJhbXMpID0+IHtcclxuICAgICAgLy8gbGV0IHBhcmFtcyA9IHRoaXMuQ29udHJvbGxlck9iamVjdC5fcGFyYW1zXHJcbiAgICAgIC8vIHRoaXMuY2VudGVyID0ge1xyXG4gICAgICAvLyAgIGxuZzogcGFyYW1zLnR4LFxyXG4gICAgICAvLyAgIGxhdDogcGFyYW1zLnR5LFxyXG4gICAgICAvLyAgIGFsdDogcGFyYW1zLnR6LFxyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMubG5nID0gcGFyYW1zLnR4XHJcbiAgICAgIHRoaXMubGF0ID0gcGFyYW1zLnR5XHJcbiAgICAgIHRoaXMuYWx0ID0gcGFyYW1zLnR6XHJcbiAgICAgIHRoaXMucm90YXRlWCA9IHBhcmFtcy5yeFxyXG4gICAgICB0aGlzLnJvdGF0ZVkgPSBwYXJhbXMucnlcclxuICAgICAgdGhpcy5yb3RhdGVaID0gcGFyYW1zLnJ6XHJcbiAgICAgIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrICYmIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKHRoaXMuQ29udHJvbGxlck9iamVjdC5fcGFyYW1zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIOe8lui+keahhlxyXG4gICAqIEBwYXJhbSBzdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g54q25oCBOiB0cnVl5omT5byALCBmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUgPSBmYWxzZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcblxyXG4gICAgLy8gbGV0IGVsbXMgPSB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tYmFzZS1kaWFsb2cnKVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IGVsbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoZWxtc1tpXSlcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICB0aGlzLl9lbGVtZW50X3N0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xyXG4gICAgICB0aGlzLl9lbGVtZW50X3N0eWxlLnNldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJywgJ1lKX3N0eWxlX2RpYWxvZycpO1xyXG4gICAgICB0aGlzLl9lbGVtZW50X3N0eWxlLmlubmVySFRNTCA9IGNzcygpO1xyXG5cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+e8lui+keWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAgICAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0ICYmIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSk7XHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlQ2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdtb2RlbC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsX2NvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsaW5lX2NvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgPSBbbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+abtOaWsOaooeWei+S9jee9rlxyXG4gIHVwZGF0ZU1vZGVsKF90eCwgX3R5LCBfdHosIF9yeCA9IDAsIF9yeSA9IDAsIF9yeiA9IDAsIF9zY2FsZSkge1xyXG4gICAgX3R4ID0gcGFyc2VGbG9hdChfdHgpXHJcbiAgICBfdHkgPSBwYXJzZUZsb2F0KF90eSlcclxuICAgIF90eiA9IHBhcnNlRmxvYXQoX3R6KVxyXG4gICAgX3J4ID0gcGFyc2VGbG9hdChfcngpXHJcbiAgICBfcnkgPSBwYXJzZUZsb2F0KF9yeSlcclxuICAgIF9yeiA9IHBhcnNlRmxvYXQoX3J6KVxyXG4gICAgX3NjYWxlID0gcGFyc2VGbG9hdChfc2NhbGUpXHJcblxyXG4gICAgdGhpcy5lbnRpdHkucm90YXRlID0geyB4OiBfcngsIHk6IF9yeSwgejogX3J6IH07XHJcbiAgICBsZXQgbXggPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25YKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J4KVxyXG4gICAgKVxyXG4gICAgbGV0IG15ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWShcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeSlcclxuICAgIClcclxuICAgIGxldCBteiA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblooXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnopXHJcbiAgICApXHJcbiAgICAvLyDlubPnp7tcclxuICAgIGxldCBwb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KVxyXG4gICAgbGV0IG0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShuZXcgQ2VzaXVtLkNhcnRlc2lhbjMocG9zaXRpb24ueCAtIHRoaXMuZW50aXR5Ll9jZW50ZXIueCwgcG9zaXRpb24ueSAtIHRoaXMuZW50aXR5Ll9jZW50ZXIueSwgcG9zaXRpb24ueiAtIHRoaXMuZW50aXR5Ll9jZW50ZXIueikpXHJcbiAgICAvLyDml4vovaxcclxuICAgIGxldCByb3RhdGlvblggPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteClcclxuICAgIGxldCByb3RhdGlvblkgPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteSlcclxuICAgIGxldCByb3RhdGlvblogPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteilcclxuICAgIGxldCBvcmlnaW5hbE1hdHJpeCA9IG5ldyBDZXNpdW0uTWF0cml4NCgpXHJcblxyXG4gICAgQ2VzaXVtLk1hdHJpeDQuZnJvbVRyYW5zbGF0aW9uKG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhwb3NpdGlvbi54IC0gdGhpcy5lbnRpdHkuX2NlbnRlci54LCBwb3NpdGlvbi55IC0gdGhpcy5lbnRpdHkuX2NlbnRlci55LCBwb3NpdGlvbi56IC0gdGhpcy5lbnRpdHkuX2NlbnRlci56KSwgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcblxyXG4gICAgLy8gY29uc29sZS5sb2cocG9zaXRpb24ueiwgdGhpcy5lbnRpdHkuX2NlbnRlci56KVxyXG4gICAgLy8gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkodGhpcy5lbnRpdHkubW9kZWxNYXRyaXgsIHJvdGF0aW9uWCwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICAvLyBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25ZLCBvcmlnaW5hbE1hdHJpeClcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4KVxyXG4gICAgLy8g57yp5pS+XHJcbiAgICAvLyBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5U2NhbGUodGhpcy5lbnRpdHkubW9kZWxNYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhfc2NhbGUsIF9zY2FsZSwgX3NjYWxlKSwgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcblxyXG4gICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LnVwZGF0ZSgpXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZU1vZGVsUm90YXRlKF9yeCA9IDAsIF9yeSA9IDAsIF9yeiA9IDAsIF9zY2FsZSkge1xyXG4gICAgX3J4ID0gcGFyc2VGbG9hdChfcngpXHJcbiAgICBfcnkgPSBwYXJzZUZsb2F0KF9yeSlcclxuICAgIF9yeiA9IHBhcnNlRmxvYXQoX3J6KVxyXG4gICAgX3NjYWxlID0gcGFyc2VGbG9hdChfc2NhbGUpXHJcblxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KTtcclxuXHJcbiAgICBsZXQgdXJsID0gdGhpcy5vcHRpb25zLnVybFxyXG4gICAgaWYgKCF1cmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcclxuICAgICAgLy/or7TmmI7mmK/mnKzlnLDnmoRqc29u77yM5Zyo56OB55uY5Lit5a2Y5Zyo55qEXHJcbiAgICAgIGlmICghdXJsLmluY2x1ZGVzKFwiOlwiKSkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaG9zdCkge1xyXG4gICAgICAgICAgbGV0IG8gPSBuZXcgVVJMKHVybCwgdGhpcy5vcHRpb25zLmhvc3QpXHJcbiAgICAgICAgICB1cmwgPSBvLmhyZWZcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW5zdGFuY2VzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5Nb2RlbFBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgc2NhbGUgPSBfc2NhbGVcclxuICAgICAgLy8gbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoTW9kZWxQb3NpdGlvbnNbaV0ubG5nLCBNb2RlbFBvc2l0aW9uc1tpXS5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQpO1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICB0aGlzLk1vZGVsUG9zaXRpb25zW2ldLmxuZywgdGhpcy5Nb2RlbFBvc2l0aW9uc1tpXS5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgICAgKTtcclxuICAgICAgdmFyIG1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuaGVhZGluZ1BpdGNoUm9sbFRvRml4ZWRGcmFtZShcclxuICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICBuZXcgQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeiksIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnkpLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J4KSlcclxuICAgICAgKTtcclxuICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVVuaWZvcm1TY2FsZShcclxuICAgICAgICBtb2RlbE1hdHJpeCxcclxuICAgICAgICBzY2FsZSxcclxuICAgICAgICBtb2RlbE1hdHJpeFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaW5zdGFuY2VzLnB1c2goe1xyXG4gICAgICAgIG1vZGVsTWF0cml4OiBtb2RlbE1hdHJpeFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW50aXR5ID0gbmV3IENlc2l1bS5Nb2RlbEluc3RhbmNlQ29sbGVjdGlvbih7XHJcbiAgICAgIHVybDogdXJsLFxyXG4gICAgICBpbnN0YW5jZXM6IGluc3RhbmNlc1xyXG4gICAgfSlcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0KVxyXG4gICAgdGhpcy5lbnRpdHkucm90YXRlID0geyB4OiB0aGlzLm9wdGlvbnMucm90YXRlLngsIHk6IHRoaXMub3B0aW9ucy5yb3RhdGUueSwgejogdGhpcy5vcHRpb25zLnJvdGF0ZS56IH07XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuY2VudGVyLmxuZywgdGhpcy5jZW50ZXIubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0LCB0aGlzLm9wdGlvbnMucm90YXRlLngsIHRoaXMub3B0aW9ucy5yb3RhdGUueSwgdGhpcy5vcHRpb25zLnJvdGF0ZS56LCB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGhpcy5lbnRpdHkpO1xyXG5cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMubG5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICB0aGlzLmxhdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgdGhpcy5hbHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgIHRoaXMubWF4aW11bVNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVNjYWxlXHJcbiAgICB0aGlzLm1pbmltdW1QaXhlbFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5taW5pbXVtUGl4ZWxTaXplXHJcbiAgICB0aGlzLnNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNjYWxlQnlEaXN0YW5jZVxyXG4gICAgdGhpcy5yb3RhdGVYID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm90YXRlLnhcclxuICAgIHRoaXMucm90YXRlWSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnJvdGF0ZS55XHJcbiAgICB0aGlzLnJvdGF0ZVogPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5yb3RhdGUuelxyXG4gICAgdGhpcy5zY2FsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNjYWxlXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhXHJcbiAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb2RlbDJcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUE0SEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFJQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckxBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFyQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdDQTtBQTdDQTtBQUFBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBVkE7QUFBQTtBQVFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBdUJBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBdEJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUE1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdCQTtBQUFBO0FBQUE7QUFOQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQXJCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBckNBO0FBc0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUF6TEE7QUFBQTtBQUFBO0FBQUE7QUEyTEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUlBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseModel/Model2/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseModel/index.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseModel/index.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/index.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\nvar BaseModel = /*#__PURE__*/function (_BaseSource) {\n function BaseModel(sdk, options) {\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, BaseModel);\n return _callSuper(this, BaseModel, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(BaseModel, _BaseSource);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(BaseModel, [{\n key: \"add\",\n value: function () {\n var _add = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!this.options.url) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\", this.loadModel(this.options.url));\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function add() {\n return _add.apply(this, arguments);\n }\n return add;\n }()\n }, {\n key: \"_addLink\",\n value: function _addLink() {\n // document.getElementsByClassName\n if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '';\n this.attributeLink = this.options.attribute.link.content;\n } else {\n this.Dialog.clickAddLink && this.Dialog.clickAddLink();\n }\n }\n }, {\n key: \"addAttributeLink\",\n value: function addAttributeLink(link) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.attributeLink = this.options.attribute.link.content;\n }\n }, {\n key: \"_addRr\",\n value: function _addRr() {\n if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = '';\n this.attributeVr = this.options.attribute.vr.content;\n } else {\n this.Dialog.clickAddVr && this.Dialog.clickAddVr();\n }\n }\n }, {\n key: \"addAttributeRr\",\n value: function addAttributeRr(vr) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: vr\n });\n this.attributeVr = this.options.attribute.vr.content;\n }\n\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this = this;\n // var ue = UE.getEditor('app');\n _Element_richText__WEBPACK_IMPORTED_MODULE_7__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_7__[\"default\"].primaryCallBack = function (content) {\n _this.options.richTextContent = content;\n };\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseModel);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlTW9kZWwvaW5kZXguanM/ZDhhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmljaFRleHQgZnJvbSBcIi4uLy4uLy4uL0VsZW1lbnQvcmljaFRleHRcIjtcclxuaW1wb3J0IEJhc2VTb3VyY2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBCYXNlTW9kZWwgZXh0ZW5kcyBCYXNlU291cmNlIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudXJsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRNb2RlbCh0aGlzLm9wdGlvbnMudXJsKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2FkZExpbmsoKSB7XHJcbiAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXS52YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5wdXNoKHtcclxuICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICB1cmw6IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0udmFsdWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXS52YWx1ZSA9ICcnXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5EaWFsb2cuY2xpY2tBZGRMaW5rICYmIHRoaXMuRGlhbG9nLmNsaWNrQWRkTGluaygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBdHRyaWJ1dGVMaW5rKGxpbmspIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50LnB1c2goe1xyXG4gICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgdXJsOiBsaW5rXHJcbiAgICB9KVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIF9hZGRScigpIHtcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2cl9hZGQnKVswXS52YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgICAgbmFtZTogJ+WFqOaZr+WbvicgLFxyXG4gICAgICAgIHVybDogdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndnJfYWRkJylbMF0udmFsdWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndnJfYWRkJylbMF0udmFsdWUgPSAnJ1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5EaWFsb2cuY2xpY2tBZGRWciAmJiB0aGlzLkRpYWxvZy5jbGlja0FkZFZyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEF0dHJpYnV0ZVJyKHZyKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgIG5hbWU6ICflhajmma/lm74nICxcclxuICAgICAgdXJsOiB2clxyXG4gICAgfSlcclxuICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICAvLyB2YXIgdWUgPSBVRS5nZXRFZGl0b3IoJ2FwcCcpO1xyXG4gICAgcmljaFRleHQub3Blbih0aGlzLm9wdGlvbnMuaWQsIHRoaXMub3B0aW9ucy5uYW1lLCB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50KVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gKGNvbnRlbnQpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCYXNlTW9kZWxcclxuXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseModel/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTerrain/index.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTerrain/index.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 17:54\r\n * @description:index\r\n * @update: 2023-11-20 17:54\r\n */\n\n\n\n\n\nvar _updateModelTimeout = /*#__PURE__*/new WeakMap();\nvar BaseTerrain = /*#__PURE__*/function (_BaseSource) {\n function BaseTerrain(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var object = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _Dialog = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, BaseTerrain);\n _this = _callSuper(this, BaseTerrain, [sdk, options]);\n _classPrivateFieldInitSpec(_this, _updateModelTimeout, void 0);\n _this.object = JSON.parse(JSON.stringify(object));\n _this.object.west || (_this.object.west = 40);\n _this.object.south || (_this.object.south = 30);\n _this.object.east || (_this.object.east = 160);\n _this.object.north || (_this.object.north = 50);\n _this.show = _this.options.show;\n _this._elms = {};\n _this.Dialog = _Dialog;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(BaseTerrain, _BaseSource);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(BaseTerrain, [{\n key: \"type\",\n get: function get() {\n return \"terrain\";\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"show\",\n get: function get() {\n return !(this.sdk.viewer.scene.terrainProvider instanceof Cesium.EllipsoidTerrainProvider);\n },\n set: function set(status) {\n status ? this.open() : this.close();\n }\n }, {\n key: \"open\",\n value: function () {\n var _open = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee() {\n var res, text;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!this.options.url) {\n _context.next = 4;\n break;\n }\n return _context.abrupt(\"return\", this.loadTerrain({\n url: this.options.url\n }));\n case 4:\n _context.next = 6;\n return this.requestResource();\n case 6:\n res = _context.sent;\n _context.next = 9;\n return res.text();\n case 9:\n text = _context.sent;\n text = JSON.parse(text);\n if (![0, 200].includes(text.code)) {\n _context.next = 19;\n break;\n }\n if (!text.data.url.length) {\n _context.next = 16;\n break;\n }\n return _context.abrupt(\"return\", this.loadTerrain(text.data));\n case 16:\n return _context.abrupt(\"return\", new Promise(function (res, reject) {\n reject('资源不存在');\n }));\n case 17:\n _context.next = 20;\n break;\n case 19:\n return _context.abrupt(\"return\", new Promise(function (res, reject) {\n reject(text.msg || text.message);\n }));\n case 20:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function open() {\n return _open.apply(this, arguments);\n }\n return open;\n }() //关闭地形\n }, {\n key: \"close\",\n value: function close() {\n var _this2 = this;\n this.sdk.viewer.scene.terrainProvider = new Cesium.EllipsoidTerrainProvider({});\n for (var i = 0; i < YJ.Analysis.AnalysesResults.length; i++) {\n if (YJ.Analysis.AnalysesResults[i].type === 'ContourAnalysis') {\n YJ.Analysis.AnalysesResults[i].destroy();\n }\n }\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_14__[\"syncSplitData\"])(this.sdk, this.options.id);\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, this));\n _classPrivateFieldSet(_updateModelTimeout, this, setTimeout(function () {\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, _this2));\n var _iterator = _createForOfIteratorHelper(_this2.sdk.entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2),\n key = _step$value[0],\n entity = _step$value[1];\n if (entity.type === 'BillboardObject' && (entity.heightMode == 1 || entity.heightMode == 3)) {\n entity.updateHeight();\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }, 500));\n }\n }, {\n key: \"loadTerrain\",\n value: function () {\n var _loadTerrain = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(options) {\n var _this3 = this;\n var object, url, o;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n object = _objectSpread({}, options);\n url = \"\";\n if (object.url.startsWith(\"http\")) url = object.url;else {\n //说明是本地的json,在磁盘中存在的\n if (object.url.includes(\":\")) {\n url = object.url;\n } else {\n if (this.options.host) {\n o = new URL(object.url, this.options.host);\n url = o.href;\n } else url = object.url;\n }\n }\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context2.next = 9;\n break;\n }\n _context2.next = 6;\n return Cesium.CesiumTerrainProvider.fromUrl(url);\n case 6:\n this.terrainProvider = _context2.sent;\n _context2.next = 10;\n break;\n case 9:\n this.terrainProvider = new Cesium.CesiumTerrainProvider({\n url: url\n });\n case 10:\n if (!(!this.sdk || !this.sdk.viewer)) {\n _context2.next = 12;\n break;\n }\n return _context2.abrupt(\"return\");\n case 12:\n this.sdk.viewer.terrainProvider = this.terrainProvider;\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, this));\n _classPrivateFieldSet(_updateModelTimeout, this, setTimeout(function () {\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, _this3));\n _this3.terrainProvider.readyPromise.then(function () {\n var _iterator2 = _createForOfIteratorHelper(_this3.sdk.entityMap),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step2.value, 2),\n key = _step2$value[0],\n entity = _step2$value[1];\n if (entity.type === 'BillboardObject' && (entity.heightMode == 1 || entity.heightMode == 3)) {\n entity.updateHeight();\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n }, 1000));\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_14__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function loadTerrain(_x) {\n return _loadTerrain.apply(this, arguments);\n }\n return loadTerrain;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n this.close();\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3() {\n var duration,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n rectangle,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n duration = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 3;\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_13__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_13__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_13__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation,\n duration: duration\n });\n _context3.next = 27;\n break;\n case 25:\n rectangle = new Cesium.Rectangle(Cesium.Math.toRadians(this.object.west), Cesium.Math.toRadians(this.object.south), Cesium.Math.toRadians(this.object.east), Cesium.Math.toRadians(this.object.north));\n this.sdk.viewer.camera.flyTo({\n destination: rectangle,\n duration: duration\n });\n case 27:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(BaseTerrain, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getHost\"])();\n this.options.url = this.options.url || \"\";\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n var _this4 = this;\n var state,\n contentElm,\n html,\n nameElm,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n state = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : false;\n return _context4.abrupt(\"return\");\n case 6:\n this._DialogObject = _context4.sent;\n contentElm = document.createElement('div');\n contentElm.style.width = '300px';\n html = \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\uFF1A\\n \\n
\\n
\\n
\\n \";\n contentElm.innerHTML = html;\n nameElm = contentElm.getElementsByClassName('name')[0];\n nameElm.value = this.name;\n nameElm.addEventListener('input', function () {\n _this4.name = nameElm.value;\n });\n this._DialogObject.contentAppChild(contentElm);\n this._elms.name = [nameElm];\n case 16:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseTerrain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGVycmFpbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXNlU291cmNlL0Jhc2VUZXJyYWluL2luZGV4LmpzPzZmZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTExLTIwIDE3OjU0XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMTEtMjAgMTc6NTRcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBnZXRIb3N0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCBCYXNlU291cmNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuXHJcbmNsYXNzIEJhc2VUZXJyYWluIGV4dGVuZHMgQmFzZVNvdXJjZSB7XHJcbiAgI3VwZGF0ZU1vZGVsVGltZW91dDtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgb2JqZWN0ID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub2JqZWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpKVxyXG4gICAgdGhpcy5vYmplY3Qud2VzdCB8fCAodGhpcy5vYmplY3Qud2VzdCA9IDQwKVxyXG4gICAgdGhpcy5vYmplY3Quc291dGggfHwgKHRoaXMub2JqZWN0LnNvdXRoID0gMzApXHJcbiAgICB0aGlzLm9iamVjdC5lYXN0IHx8ICh0aGlzLm9iamVjdC5lYXN0ID0gMTYwKVxyXG4gICAgdGhpcy5vYmplY3Qubm9ydGggfHwgKHRoaXMub2JqZWN0Lm5vcnRoID0gNTApXHJcbiAgICB0aGlzLnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiBcInRlcnJhaW5cIlxyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcbiAgc2V0IG5hbWUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm5hbWUgJiYgdGhpcy5fZWxtcy5uYW1lLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiAhKFxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUudGVycmFpblByb3ZpZGVyIGluc3RhbmNlb2ZcclxuICAgICAgQ2VzaXVtLkVsbGlwc29pZFRlcnJhaW5Qcm92aWRlclxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc2V0IHNob3coc3RhdHVzKSB7XHJcbiAgICBzdGF0dXMgPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudXJsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRUZXJyYWluKHtcclxuICAgICAgICB1cmw6IHRoaXMub3B0aW9ucy51cmxcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnJlcXVlc3RSZXNvdXJjZSgpXHJcbiAgICAgIGxldCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKVxyXG4gICAgICB0ZXh0ID0gSlNPTi5wYXJzZSh0ZXh0KVxyXG4gICAgICBpZiAoWzAsIDIwMF0uaW5jbHVkZXModGV4dC5jb2RlKSkge1xyXG4gICAgICAgIGlmICh0ZXh0LmRhdGEudXJsLmxlbmd0aClcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRUZXJyYWluKHRleHQuZGF0YSlcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdCgn6LWE5rqQ5LiN5a2Y5ZyoJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KHRleHQubXNnIHx8IHRleHQubWVzc2FnZSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreWcsOW9olxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlciA9XHJcbiAgICAgIG5ldyBDZXNpdW0uRWxsaXBzb2lkVGVycmFpblByb3ZpZGVyKHt9KVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0c1tpXS50eXBlID09PSAnQ29udG91ckFuYWx5c2lzJykge1xyXG4gICAgICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0c1tpXS5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG5cclxuICAgIGNsZWFyVGltZW91dCh0aGlzLiN1cGRhdGVNb2RlbFRpbWVvdXQpXHJcbiAgICB0aGlzLiN1cGRhdGVNb2RlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuI3VwZGF0ZU1vZGVsVGltZW91dClcclxuICAgICAgZm9yIChsZXQgW2tleSwgZW50aXR5XSBvZiB0aGlzLnNkay5lbnRpdHlNYXApIHtcclxuICAgICAgICBpZiAoZW50aXR5LnR5cGUgPT09ICdCaWxsYm9hcmRPYmplY3QnICYmIChlbnRpdHkuaGVpZ2h0TW9kZSA9PSAxIHx8IGVudGl0eS5oZWlnaHRNb2RlID09IDMpKSB7XHJcbiAgICAgICAgICBlbnRpdHkudXBkYXRlSGVpZ2h0KClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5LmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGVudGl0eS5sYWJlbC5zaG93ID0gZW50aXR5LmxhYmVsLnNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkVGVycmFpbihvcHRpb25zKSB7XHJcbiAgICBsZXQgb2JqZWN0ID0geyAuLi5vcHRpb25zIH1cclxuICAgIGxldCB1cmwgPSBcIlwiXHJcbiAgICBpZiAob2JqZWN0LnVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSlcclxuICAgICAgdXJsID0gb2JqZWN0LnVybFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8v6K+05piO5piv5pys5Zyw55qEanNvbu+8jOWcqOejgeebmOS4reWtmOWcqOeahFxyXG4gICAgICBpZiAob2JqZWN0LnVybC5pbmNsdWRlcyhcIjpcIikpIHtcclxuICAgICAgICB1cmwgPSBvYmplY3QudXJsXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0KSB7XHJcbiAgICAgICAgICBsZXQgbyA9IG5ldyBVUkwob2JqZWN0LnVybCwgdGhpcy5vcHRpb25zLmhvc3QpXHJcbiAgICAgICAgICB1cmwgPSBvLmhyZWZcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIHVybCA9IG9iamVjdC51cmxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKE51bWJlcihDZXNpdW0uVkVSU0lPTi5zcGxpdCgnLicpWzFdKSA+PSAxMDcpIHtcclxuICAgICAgdGhpcy50ZXJyYWluUHJvdmlkZXIgPSBhd2FpdCBDZXNpdW0uQ2VzaXVtVGVycmFpblByb3ZpZGVyLmZyb21VcmwodXJsKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudGVycmFpblByb3ZpZGVyID0gbmV3IENlc2l1bS5DZXNpdW1UZXJyYWluUHJvdmlkZXIoe1xyXG4gICAgICAgIHVybDogdXJsXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNkay52aWV3ZXIudGVycmFpblByb3ZpZGVyID0gdGhpcy50ZXJyYWluUHJvdmlkZXI7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy4jdXBkYXRlTW9kZWxUaW1lb3V0KVxyXG4gICAgdGhpcy4jdXBkYXRlTW9kZWxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLiN1cGRhdGVNb2RlbFRpbWVvdXQpXHJcbiAgICAgIHRoaXMudGVycmFpblByb3ZpZGVyLnJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBba2V5LCBlbnRpdHldIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgICAgaWYgKGVudGl0eS50eXBlID09PSAnQmlsbGJvYXJkT2JqZWN0JyAmJiAoZW50aXR5LmhlaWdodE1vZGUgPT0gMSB8fCBlbnRpdHkuaGVpZ2h0TW9kZSA9PSAzKSkge1xyXG4gICAgICAgICAgICBlbnRpdHkudXBkYXRlSGVpZ2h0KClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZW50aXR5LmxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LmxhYmVsLnNob3cgPSBlbnRpdHkubGFiZWwuc2hvd1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSwgMTAwMCk7XHJcblxyXG5cclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuY2xvc2UoKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmx5VG8oZHVyYXRpb24gPSAzKSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXHJcbiAgICAgICAgZHVyYXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcmVjdGFuZ2xlID0gbmV3IENlc2l1bS5SZWN0YW5nbGUoXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub2JqZWN0Lndlc3QpLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9iamVjdC5zb3V0aCksXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub2JqZWN0LmVhc3QpLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9iamVjdC5ub3J0aClcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogcmVjdGFuZ2xlLFxyXG4gICAgICAgIGR1cmF0aW9uLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFZhbHVlKCkge1xyXG4gICAgc3VwZXIuc2V0RGVmYXVsdFZhbHVlKClcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gdGhpcy5vcHRpb25zLnVybCB8fCBcIlwiXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24g57yW6L6R5qGGXHJcbiAgICogQHBhcmFtIHN0YXRlPWZhbHNlIHtib29sZWFufSDnirbmgIE6IHRydWXmiZPlvIAsIGZhbHNl5YWz6ZetXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgdGl0bGU6ICflnLDlvaLlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICBsZXQgY2RvcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgY2RvcHRpb25zLmhvc3QgPSAnJ1xyXG4gICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soY2RvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICAvLyByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgIC8vICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgICAvLyAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgfSwgdHJ1ZSlcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGNvbnRlbnRFbG0uc3R5bGUud2lkdGggPSAnMzAwcHgnXHJcbiAgICBsZXQgaHRtbCA9IGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7DvvJo8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBuYW1lXCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIGBcclxuICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgbGV0IG5hbWVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ25hbWUnKVswXVxyXG4gICAgbmFtZUVsbS52YWx1ZSA9IHRoaXMubmFtZVxyXG4gICAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgdGhpcy5uYW1lID0gbmFtZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgIHRoaXMuX2VsbXMubmFtZSA9IFtuYW1lRWxtXVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVRlcnJhaW5cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUlBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUF0QkE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQXFCQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFqREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTerrain/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/BIM/_element.js": -/*!*************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/BIM/_element.js ***! - \*************************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n x\\u8F74\\n \\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n y\\u8F74\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n z\\u8F74\\n \\n
\\n
\\n
\\n
\\n \\u5927\\u5C0F\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n

BIM\\u5C5E\\u6027\\u5BFC\\u51FA\\u9009\\u9879

\\n
\\n
\\n
\\n
\\n
\\n \\n \\u4FEE\\u5EFA\\u4E2D\\n
\\n
\\n \\n \\u672A\\u5B8C\\u6210\\n
\\n
\\n \\n \\u5DF2\\u5B8C\\u6210\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9CSU0vX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9CSU0vX2VsZW1lbnQuanM/MGJlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgcmV0dXJuIGBcclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue7j+W6pjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+eOi9tDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTE4MFwiIG1heD1cIjE4MFwiIEBtb2RlbD1cInJvbGxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTBcIiBtYXg9XCI5MFwiIEBtb2RlbD1cImxhdFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj556L20PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwiaGVhZGluZ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJoZWlnaHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj566L20PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwicGl0Y2hcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lpKflsI88L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMC4xXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cInNjYWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlclwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O21hcmdpbi1sZWZ0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIxMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzY2FsZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IGNsYXNzPVwiZGl2aWRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGluZVwiPjwvZGl2PlxyXG4gICAgPHA+QklN5bGe5oCn5a+85Ye66YCJ6aG5PC9wPlxyXG4gICAgPGRpdiBjbGFzcz1cImxpbmVcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWJveFwiIEBjbGljaz1cImV4cG9ydFN0YXRlXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiM1wiPlxyXG4gICAgICAgIDxzcGFuPuS/ruW7uuS4rTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ib3hcIiBAY2xpY2s9XCJleHBvcnRTdGF0ZVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIjJcIj5cclxuICAgICAgICA8c3Bhbj7mnKrlrozmiJA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtYm94XCIgQGNsaWNrPVwiZXhwb3J0U3RhdGVcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIxXCI+XHJcbiAgICAgICAgPHNwYW4+5bey5a6M5oiQPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICA8YnV0dG9uIEBjbGljaz1cImV4cG9ydFByb3BlcnR5XCI+5a+8IOWHujwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBRUE7QUFBQTtBQUFBO0FBQ0E7QUF1RkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/BIM/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/BIM/_element2.js": -/*!**************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/BIM/_element2.js ***! - \**************************************************************/ -/*! exports provided: html2, css2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html2\", function() { return html2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css2\", function() { return css2; });\nfunction html2() {\n return \"\\n
\\n
\\n \\u6784\\u4EF6\\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u9009\\u62E9\\u72B6\\u6001\\n \\n
\\n
\\n
\\n
\\n

\\u81EA\\u5B9A\\u4E49\\u5C5E\\u6027

\\n
\\n
\\n
\\n
\\n \";\n}\nfunction css2() {\n return \"\\n .YJ-custom-base-dialog>.content {\\n width: 440px;\\n }\\n .YJ-custom-base-dialog>.content .row .label {\\n flex: 0 0 110px;\\n }\\n .col:first-child {\\n margin-right: 10px;\\n }\\n .col:last-child {\\n margin-left: 10px;\\n }\\n .YJ-custom-base-dialog>.content .divide {\\n position: relative;\\n display: flex;\\n align-items: center;\\n margin: 20px 0;\\n }\\n .YJ-custom-base-dialog>.content .divide .line{\\n height: 1px;\\n background: #ddd;\\n flex: 1;\\n }\\n .YJ-custom-base-dialog>.content .divide p{\\n margin: 0 10px;\\n }\\n .YJ-custom-base-dialog>.content .property .property-item .btn{\\n font-size: 24px;\\n line-height: 20px;\\n padding: 2px 0;\\n }\\n .YJ-custom-base-dialog>.content .property .property-item .input_lable {\\n flex: 0 0 115px;\\n border: none;\\n margin-right: 15px;\\n text-align: right;\\n }\\n .YJ-custom-base-dialog>.content .property .property-item:first-child .delete{\\n display: none\\n }\\n .YJ-custom-base-dialog>.content .property .property-item .add{\\n display: none;\\n }\\n .YJ-custom-base-dialog>.content .property .property-item:last-child .add{\\n display: inline-block;\\n }\\n\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9CSU0vX2VsZW1lbnQyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZVRpbGVzZXQvQklNL19lbGVtZW50Mi5qcz83ODIxIl0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuZnVuY3Rpb24gaHRtbDIoKSB7XHJcbiAgcmV0dXJuIGBcclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnoTku7blkI3np7A8L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbmFtZT1cIm5hbWVcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pgInmi6nnirbmgIE8L3NwYW4+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dCBpbnB1dC1zZWxlY3RcIiBuYW1lPVwic3RhdGUtc2VsZWN0XCI+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjBcIiBzdHlsZT1cImNvbG9yOiAjMDAwO1wiPumHjee9rjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCIgc3R5bGU9XCJjb2xvcjogI2YwMDtcIj7lt7LlrozmiJA8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiIHN0eWxlPVwiY29sb3I6ICMwZjA7XCI+5pyq5a6M5oiQPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjNcIiBzdHlsZT1cImNvbG9yOiAjMDBmO1wiPuS/ruW7uuS4rTwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkaXZpZGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+PC9kaXY+XHJcbiAgICA8cD7oh6rlrprkuYnlsZ7mgKc8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGluZVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eVwiPlxyXG4gIDwvZGl2PlxyXG4gIGBcclxufVxyXG5mdW5jdGlvbiBjc3MyKCkge1xyXG4gIHJldHVybiBgXHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCB7XHJcbiAgICB3aWR0aDogNDQwcHg7XHJcbiAgfVxyXG4gIC5ZSi1jdXN0b20tYmFzZS1kaWFsb2c+LmNvbnRlbnQgLnJvdyAubGFiZWwge1xyXG4gICAgZmxleDogMCAwIDExMHB4O1xyXG4gIH1cclxuICAuY29sOmZpcnN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICB9XHJcbiAgLmNvbDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gIH1cclxuICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50IC5kaXZpZGUge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDIwcHggMDtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAuZGl2aWRlIC5saW5le1xyXG4gICAgaGVpZ2h0OiAxcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZGRkO1xyXG4gICAgZmxleDogMTtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAuZGl2aWRlIHB7XHJcbiAgICBtYXJnaW46IDAgMTBweDtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAucHJvcGVydHkgLnByb3BlcnR5LWl0ZW0gLmJ0bntcclxuICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgcGFkZGluZzogMnB4IDA7XHJcbiAgfVxyXG4gIC5ZSi1jdXN0b20tYmFzZS1kaWFsb2c+LmNvbnRlbnQgLnByb3BlcnR5IC5wcm9wZXJ0eS1pdGVtIC5pbnB1dF9sYWJsZSB7XHJcbiAgICBmbGV4OiAwIDAgMTE1cHg7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAucHJvcGVydHkgLnByb3BlcnR5LWl0ZW06Zmlyc3QtY2hpbGQgLmRlbGV0ZXtcclxuICAgIGRpc3BsYXk6IG5vbmVcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAucHJvcGVydHkgLnByb3BlcnR5LWl0ZW0gLmFkZHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG4gIC5ZSi1jdXN0b20tYmFzZS1kaWFsb2c+LmNvbnRlbnQgLnByb3BlcnR5IC5wcm9wZXJ0eS1pdGVtOmxhc3QtY2hpbGQgLmFkZHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbmBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbDIsIGNzczIgfSJdLCJtYXBwaW5ncyI6IkFBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBCQTtBQUNBO0FBQ0E7QUFnREE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/BIM/_element2.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/BIM/index.js": -/*!**********************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/BIM/index.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseTileset/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BaseSource/BaseTileset/BIM/_element.js\");\n/* harmony import */ var _element2__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element2 */ \"./src/Obj/Base/BaseSource/BaseTileset/BIM/_element2.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 16:05\r\n * @description:index\r\n * @update: 2023-11-20 16:05\r\n */\n\n\n\n\n\n\n\n\n\nvar _updateModelTimeout = /*#__PURE__*/new WeakMap();\nvar BIM = /*#__PURE__*/function (_BaseTileset) {\n /**\r\n * @constructor\r\n * @description 加载BIM模型\r\n * @param sdk {object} sdk\r\n * @param options {object} 模型参数\r\n * @param options.id {string} 对象id\r\n * @param options.show=true {boolean} 模型显隐\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 资源地址\r\n * @param options.position {object} 模型位置\r\n * @param options.position.lng {number} 经度\r\n * @param options.position.lat {number} 纬度\r\n * @param options.position.alt {number} 高度\r\n * */\n function BIM(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, BIM);\n _this2 = _callSuper(this, BIM, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _updateModelTimeout, void 0);\n _this2.picking = false;\n _this2.features = options.features || [];\n _this2.exportStateArray = [];\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__[\"default\"]();\n _this2.Dialog.exportState = function (e) {\n _this2.exportState(e);\n };\n _this2.Dialog.exportProperty = function (e) {\n _this2.exportProperty(_this2.exportStateArray);\n };\n _this2.features = new Map();\n _this2.on();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(BIM, _BaseTileset);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(BIM, [{\n key: \"type\",\n get: function get() {\n return \"bim\";\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.newData.name;\n },\n set: function set(v) {\n this.newData.name = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.newData.lng;\n },\n set: function set(v) {\n this.newData.lng = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.newData.lat;\n },\n set: function set(v) {\n this.newData.lat = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.newData.height;\n },\n set: function set(v) {\n this.newData.height = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"roll\",\n get: function get() {\n return this.newData.roll;\n },\n set: function set(v) {\n this.newData.roll = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.roll && this._elms.roll.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"heading\",\n get: function get() {\n return this.newData.heading;\n },\n set: function set(v) {\n this.newData.heading = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.heading && this._elms.heading.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return this.newData.pitch;\n },\n set: function set(v) {\n this.newData.pitch = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.pitch && this._elms.pitch.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.newData.scale;\n },\n set: function set(v) {\n this.newData.scale = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n this._elms.scale && this._elms.scale.forEach(function (item) {\n item.value = v;\n });\n }\n\n // get transparency() {\n // return this.newData.transparency\n // }\n\n // set transparency(v) {\n // this.newData.transparency = v\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n // this.entity.transparency = Number(this.newData.transparency)\n // this._elms.transparency && this._elms.transparency.forEach((item) => {\n // item.value = v\n // })\n // }\n }, {\n key: \"loadSceneTree\",\n value: function () {\n var _loadSceneTree = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(url) {\n var _this3 = this;\n var array;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n // Cesium.ExperimentalFeatures.enableModelExperimental = true;\n array = url.split('/');\n array[array.length - 1] = 'scenetree.json';\n _context.next = 4;\n return Cesium.Resource.fetchJson({\n url: array.join('/')\n }).then(function (res) {\n _this3.scenetree = res;\n var _initData = function initData(array) {\n array.forEach(function (item) {\n if (_this3.features.has(item.id)) {\n _this3.features.get(item.id).sphere = item.sphere;\n } else {\n _this3.features.set(item.id, {\n sphere: item.sphere\n });\n }\n if (item.children) {\n _initData(item.children);\n }\n });\n };\n _initData(res.scenes[0].children);\n\n // res.scenes[0].children.forEach(item => {\n // if (this.features.has(item.id)) {\n // this.features.get(item.id).sphere = item.sphere\n // }\n // else {\n // this.features.set(item.id, {sphere: item.sphere})\n // }\n // })\n });\n case 4:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function loadSceneTree(_x) {\n return _loadSceneTree.apply(this, arguments);\n }\n return loadSceneTree;\n }() // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(state) {\n var _this4 = this;\n var _this, contentElm, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context2.next = 16;\n break;\n }\n _context2.next = 6;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.sdk, this.newData, {\n title: 'BIM模型属性',\n left: '180px',\n top: '100px',\n resetCallBack: function resetCallBack() {\n _this4.reset();\n _this4.Dialog.resetCallBack && _this4.Dialog.resetCallBack();\n },\n confirmCallBack: function confirmCallBack(info) {\n _this4.name = _this4.name.trim();\n if (!_this4.name) {\n _this4.name = '未命名对象';\n }\n _this4.oldData.name = _this4.newData.name;\n _this4.oldData.height = _this4.newData.height;\n _this4.oldData.lng = _this4.newData.lng;\n _this4.oldData.lat = _this4.newData.lat;\n // this.oldData.transparency = this.newData.transparency\n _this4.oldData.scale = _this4.newData.scale;\n _this4.oldData.roll = _this4.newData.roll;\n _this4.oldData.heading = _this4.newData.heading;\n _this4.oldData.pitch = _this4.newData.pitch;\n _this4._DialogObject.close();\n var features = new Map();\n _this4.features.forEach(function (item, key) {\n var data = _objectSpread({}, item);\n delete data.features;\n features.set(key, data);\n });\n _this4.Dialog.confirmCallBack && _this4.Dialog.confirmCallBack(_objectSpread(_objectSpread({}, _this4.oldData), {}, {\n features: features,\n type: _this4.type\n }));\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(_this4.sdk, _this4.oldData.id);\n },\n removeCallBack: function removeCallBack() {\n _this4.Dialog.removeCallBack && _this4.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this4.reset();\n // this.newData.transparency = this.oldData.transparency\n // this.newData.name = this.oldData.name\n // this.newData.height = this.oldData.height\n // this.newData.lng = this.oldData.lng\n // this.newData.lat = this.oldData.lat\n // this.newData.scale = this.oldData.scale\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this4.editObj.destroy();\n _this4.Dialog.closeCallBack && _this4.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this4.newData.show = show;\n _this4.entity && (_this4.entity.show = show);\n _this4.Dialog.showCallBack && _this4.Dialog.showCallBack();\n },\n rotateCallBack: function rotateCallBack() {\n if (_this4.rotationEditing) {\n _this4.rotationEditing = false;\n } else {\n _this4.rotationEditing = true;\n }\n },\n translationalCallBack: function translationalCallBack() {\n if (_this4.positionEditing) {\n _this4.positionEditing = false;\n } else {\n _this4.positionEditing = true;\n }\n }\n });\n case 6:\n this._DialogObject = _context2.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' tileset-bim';\n // 内容部分\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n _context2.next = 17;\n break;\n case 16:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit(_x2) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"featureEdit\",\n value: function () {\n var _featureEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(state, feature) {\n var _this5 = this;\n var _this, _createPropertyItem, name, data, content, e_name, e_state, e_property, i, target, confirmBtn;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _this = this;\n this._element_style = null;\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context3.next = 46;\n break;\n }\n _createPropertyItem = function createPropertyItem(item) {\n var html = \"
\\n
\\n \\n \\n \\n \\n
\\n
\");\n // document.createRange().createContextualFragment(html)\n var newElement = document.createElement(\"div\");\n newElement.innerHTML = html;\n var itemElm = newElement.getElementsByClassName('property-item')[0];\n var e_key = itemElm.querySelector(\"input[name='key']\");\n var e_value = itemElm.querySelector(\"input[name='value']\");\n var e_add = itemElm.getElementsByClassName('add')[0];\n var e_delete = itemElm.getElementsByClassName('delete')[0];\n e_key.addEventListener('input', function (e) {\n item.key = e.target.value;\n });\n e_value.addEventListener('input', function (e) {\n item.value = e.target.value;\n });\n e_add.addEventListener('click', function () {\n var newItem = {\n id: _this.randomString(),\n key: \"点击此处可编辑\",\n value: \"\"\n };\n data.descriptions.push(newItem);\n _createPropertyItem(newItem);\n });\n e_delete.addEventListener('click', function (e) {\n for (var _i = 0; _i < data.descriptions.length; _i++) {\n if (data.descriptions[_i].id === item.id) {\n data.descriptions.splice(_i, 1);\n break;\n }\n }\n e_property.removeChild(itemElm);\n // let item = {\n // key: \"点击此处可编辑\",\n // value: \"\"\n // }\n // createPropertyItem(item)\n });\n e_property.appendChild(itemElm);\n };\n // console.log(this.entity)\n // console.log(this.entity.root.children[0].content)\n // console.log(feature.getProperty('id'), feature.getProperty('name'), feature.getProperty('state'))\n name = feature.getProperty('name'); // console.log(feature.getProperty('descriptions'))\n data = {\n id: feature.getProperty('id'),\n name: name,\n state: feature.getProperty('state') || 0,\n descriptions: feature.getProperty('descriptions') || [{\n id: this.randomString(),\n key: \"点击此处可编辑\",\n value: \"\"\n }]\n };\n _context3.t0 = feature.getProperty('state');\n _context3.next = _context3.t0 === '0' ? 10 : _context3.t0 === '1' ? 12 : _context3.t0 === '2' ? 14 : _context3.t0 === '3' ? 16 : 18;\n break;\n case 10:\n data.stateCH = '';\n return _context3.abrupt(\"break\", 18);\n case 12:\n data.stateCH = '已完成';\n return _context3.abrupt(\"break\", 18);\n case 14:\n data.stateCH = '未完成';\n return _context3.abrupt(\"break\", 18);\n case 16:\n data.stateCH = '修建中';\n return _context3.abrupt(\"break\", 18);\n case 18:\n // let feature = this.entity.root.children[0].content.getFeature(0)\n // console.log(id,feature, this.entity)\n // return\n this._element_style = document.createElement('style');\n this._element_style.type = 'text/css';\n this._element_style.setAttribute('data-name', 'YJ_style_dialog');\n this._element_style.innerHTML = Object(_element2__WEBPACK_IMPORTED_MODULE_11__[\"css2\"])();\n _context3.next = 24;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_14__[\"default\"](this.sdk.viewer._container, {\n title: this.oldData.name + '-----设置状态',\n left: 'calc(50% - 200px)',\n top: 'calc(50% - 200px)',\n closeCallBack: function closeCallBack() {\n _this5.Dialog.closeCallBack && _this5.Dialog.closeCallBack();\n }\n });\n case 24:\n this._DialogObject = _context3.sent;\n _context3.next = 27;\n return this._DialogObject.init();\n case 27:\n document.getElementsByTagName('head')[0].appendChild(this._element_style);\n // 内容部分\n content = document.createElement('div');\n content.innerHTML = Object(_element2__WEBPACK_IMPORTED_MODULE_11__[\"html2\"])();\n // 名称\n e_name = content.querySelector(\"input[name='name']\");\n e_name.value = name;\n //状态\n e_state = content.querySelector(\"select[name='state-select']\");\n e_state.value = data.state;\n e_state.addEventListener('change', function (e) {\n data.state = e.target.value;\n switch (data.state) {\n case '0':\n data.stateCH = '';\n break;\n case '1':\n data.stateCH = '已完成';\n break;\n case '2':\n data.stateCH = '未完成';\n break;\n case '3':\n data.stateCH = '修建中';\n break;\n }\n });\n //自定义属性\n e_property = content.getElementsByClassName('property')[0];\n for (i = 0; i < data.descriptions.length; i++) {\n _createPropertyItem(data.descriptions[i], i);\n }\n target = this._DialogObject._element.foot.getElementsByClassName('translational')[0];\n this._DialogObject.contentAppChild(content);\n // foot部分\n confirmBtn = document.createElement('button');\n confirmBtn.className = 'confirm';\n confirmBtn.innerHTML = '确认';\n this._DialogObject.footAppChild(confirmBtn, target);\n confirmBtn.addEventListener('click', function () {\n var flag = false;\n for (var _i2 = 0; _i2 < _this5.features.length; _i2++) {\n if (_this5.features[_i2].id == data.id) {\n _this5.features[_i2] = data;\n flag = true;\n break;\n }\n }\n if (!flag) {\n _this5.features.push(data);\n }\n feature.setProperty('state', data.state);\n feature.setProperty('descriptions', data.descriptions);\n var color = '#fff';\n switch (data.state) {\n case '0':\n color = '#fff';\n break;\n case '1':\n color = '#f00';\n break;\n case '2':\n color = '#0f0';\n break;\n case '3':\n color = '#00f';\n break;\n default:\n }\n feature.color = Cesium.Color.fromCssColorString(color);\n _this5._DialogObject.close();\n _this5.Dialog.confirmCallBack && _this5.Dialog.confirmCallBack(_objectSpread(_objectSpread({}, _this5.newData), {}, {\n features: _this5.features\n }));\n });\n _context3.next = 48;\n break;\n case 46:\n if (this._element_style) {\n document.getElementsByTagName('head')[0].removeChild(this._element_style);\n this._element_style = null;\n }\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 48:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function featureEdit(_x3, _x4) {\n return _featureEdit.apply(this, arguments);\n }\n return featureEdit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n // this.transparency = this.oldData.transparency\n this.name = this.oldData.name;\n this.height = this.oldData.height;\n this.lng = this.oldData.lng;\n this.lat = this.oldData.lat;\n this.roll = this.oldData.roll;\n this.heading = this.oldData.heading;\n this.pitch = this.oldData.pitch;\n this.scale = this.oldData.scale;\n }\n\n //更新模型位置\n }, {\n key: \"updateModel\",\n value: function updateModel(_tx, _ty, _tz) {\n var _this6 = this;\n var _rx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var _ry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var _rz = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var s = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n if (!this.tileset.root.transform) {\n if (window.ELEMENT) {\n window.ELEMENT.Message.closeAll();\n window.ELEMENT.Message({\n message: '该模型不支持移动和旋转!',\n type: 'warning',\n duration: 1500\n });\n }\n console.warn('该模型不支持移动和旋转!');\n return;\n }\n if (!_tx && _tx !== 0 || !_ty && _ty !== 0 || !_tz && _tz !== 0) {\n return;\n }\n var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(_rx));\n var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(_ry));\n var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(_rz));\n // 平移\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz));\n // 旋转\n var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n var rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n var originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.multiply(m, rotationX, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationZ, originalMatrix);\n var scale = Cesium.Matrix4.fromUniformScale(s);\n Cesium.Matrix4.multiply(originalMatrix, scale, this.entity._root.transform);\n if (!this.editObj.activeAxis) {\n this.editObj.position = {\n lng: _tx,\n lat: _ty,\n alt: _tz\n };\n }\n if (!this.editObj.activeCircle) {\n this.editObj.rotate = {\n x: _rx,\n y: _ry,\n z: _rz\n };\n }\n this.editObj && this.editObj.update();\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, this));\n _classPrivateFieldSet(_updateModelTimeout, this, setTimeout(function () {\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, _this6));\n var center = _this6.cartesian3Towgs84(_this6.entity.boundingSphere.center, _this6.sdk.viewer);\n var circle = turf.circle([center.lng, center.lat], _this6.entity.boundingSphere.radius / 1000, {\n steps: 360,\n units: 'kilometers'\n });\n var _iterator = _createForOfIteratorHelper(_this6.sdk.entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2),\n key = _step$value[0],\n entity = _step$value[1];\n if (entity.type === 'BillboardObject' && entity.heightMode == 3) {\n var pt = turf.point([entity.lng, entity.lat]);\n if (turf.booleanPointInPolygon(pt, circle)) {\n entity.updateHeight();\n }\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }, 300));\n }\n\n // exportProperty(states) {\n // console.log(this.features)\n // let fieldKeys = ['name', '', '', '', '', '', '', '', '', '', '', '', 'stateCH', 'descriptions']\n // let fieldLabels = ['构件名称', '体积', '墩全高H', '墩身高h', '底部高程', '承台宽', '承台长', '承台高', '族', '桩径', '桩长', '结构材质', '完成情况', '自定义属性']\n\n // let dataStr = fieldLabels.toString() + '\\r\\n';\n // for (let i = 0; i < this.features.length; i++) {\n // for (let j = 0; j < states.length; j++) {\n // if (this.features[i].state == states[j]) {\n // fieldKeys.forEach(key => {\n // if (Array.isArray(this.features[i][key])) {\n // let str = ''\n // for (let k in this.features[i][key]) {\n // str += `${this.features[i][key][k].key + ':' + this.features[i][key][k].value}\\n`\n // }\n // dataStr += `\"${str}\"\\t`\n // }\n // else {\n // // 加引号是为了使换行符在单元格内正常显示\n // dataStr += `\"${this.features[i][key] ? this.features[i][key] : ''}\"\\t,`;\n // }\n // });\n // dataStr += '\\r\\n';\n // break\n // }\n // }\n // }\n\n // // encodeURIComponent 解决中文乱码\n // const url = \"data:text/xls;charset=utf-8,\\ufeff\" + encodeURIComponent(dataStr);\n // console.log(url)\n // // const link = document.createElement(\"a\");\n // // link.href = url;\n // // link.download = this.oldData.name + \"--构件属性.xls\";\n // // link.style.display = 'none';\n // // document.body.appendChild(link);\n // // link.click();\n // // document.body.removeChild(link); //释放标签\n // }\n }, {\n key: \"getScenetree\",\n value: function getScenetree() {\n return this.scenetree;\n }\n\n // 设置feature颜色\n }, {\n key: \"featureColor\",\n value: function featureColor(id, color) {\n if (this.features.has(id)) {\n var features = this.features.get(id).features;\n for (var key in features) {\n if (features[key].content._model) {\n features[key].color = Cesium.Color.fromCssColorString(color);\n }\n features[key].customColor = Cesium.Color.fromCssColorString(color);\n }\n this.features.get(id).customColor = Cesium.Color.fromCssColorString(color);\n }\n }\n }, {\n key: \"getFeatureColor\",\n value: function getFeatureColor(id) {\n if (this.features.has(id)) {\n if (this.features.get(id).customColor) {\n return this.features.get(id).customColor;\n }\n var features = this.features.get(id).features;\n for (var key in features) {\n if (features[key].content._model) {\n return features[key].customColor || features[key].color;\n }\n }\n }\n }\n\n // 设置feature显隐\n }, {\n key: \"featureShow\",\n value: function featureShow(id, show) {\n if (this.features.has(id)) {\n var features = this.features.get(id).features;\n for (var key in features) {\n if (features[key].content._model) {\n features[key].show = show;\n }\n features[key].customShow = show;\n }\n this.features.get(id).customShow = show;\n }\n }\n\n //飞到feature位置\n }, {\n key: \"featureFlyto\",\n value: function () {\n var _featureFlyto = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(id) {\n var _this7 = this;\n var sphere, center, srcMatInv, curMat, mat, center2, wgs84, cartesian3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (this.features.has(id)) {\n sphere = this.features.get(id).sphere;\n center = new Cesium.Cartesian3(sphere[0], sphere[1], sphere[2]);\n srcMatInv = this.entity._root.originalTransform;\n srcMatInv = Cesium.Matrix4.inverse(srcMatInv, new Cesium.Matrix4());\n curMat = this.entity._root.transform;\n mat = Cesium.Matrix4.multiply(curMat, srcMatInv, new Cesium.Matrix4());\n center2 = Cesium.Matrix4.multiplyByPoint(mat, center, new Cesium.Cartesian3());\n wgs84 = this.cartesian3Towgs84(center2, this.sdk.viewer);\n cartesian3 = Cesium.Cartesian3.fromDegrees(wgs84.lng, wgs84.lat, wgs84.alt + sphere[3]);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeViewFollow\"])(this.sdk);\n this.sdk.viewer.camera.flyTo({\n destination: cartesian3\n });\n // this.entity.style = await new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,0.2)')\"\n // });\n this.features.forEach(function (item, key) {\n if (key === id) {\n var color = _this7.getFeatureColor(id);\n if (_this7.features.has(id) && color) {\n var features = _this7.features.get(id).features;\n for (var k in features) {\n if (features[k].content._model) {\n features[k].color = color;\n }\n features[k].customAlpha = 1;\n }\n _this7.features.get(id).customAlpha = 1;\n }\n // this.featureColor(id, `rgba(${Cesium.Color.floatToByte(color.red)},${Cesium.Color.floatToByte(color.green)},${Cesium.Color.floatToByte(color.blue)},${color.alpha})`)\n } else {\n var _color = _this7.getFeatureColor(key);\n if (_this7.features.has(key) && _color) {\n var _features = _this7.features.get(key).features;\n for (var _k in _features) {\n if (_features[_k].content._model) {\n _features[_k].color = Cesium.Color.fromCssColorString(\"rgba(\".concat(Cesium.Color.floatToByte(_color.red), \",\").concat(Cesium.Color.floatToByte(_color.green), \",\").concat(Cesium.Color.floatToByte(_color.blue), \",\").concat(_color.alpha * 0.2, \")\"));\n }\n _features[_k].customAlpha = _color.alpha * 0.2;\n }\n _this7.features.get(key).customAlpha = _color.alpha * 0.2;\n }\n // this.featureColor(key, `rgba(${Cesium.Color.floatToByte(color.red)},${Cesium.Color.floatToByte(color.green)},${Cesium.Color.floatToByte(color.blue)},${color.alpha * 0.2})`)\n }\n });\n // this.entity.readyPromise.then(()=>{\n // this.featureColor(id, '#ffffff')\n // })\n } else {\n this.features.forEach(function (item, key) {\n var features = _this7.features.get(key).features;\n var color = _this7.getFeatureColor(key);\n if (color) {\n for (var k in features) {\n if (features[k].content._model) {\n features[k].color = color;\n }\n features[k].customAlpha = 1;\n }\n _this7.features.get(key).customAlpha = color.alpha * 0.2;\n }\n });\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function featureFlyto(_x5) {\n return _featureFlyto.apply(this, arguments);\n }\n return featureFlyto;\n }() // 导出属性\n }, {\n key: \"exportProperty\",\n value: function exportProperty(states) {\n if (this.exportStateArray.length === 0) {\n window.ELEMENT && window.ELEMENT.Message({\n message: '未选择属性导出选项!',\n type: 'warning',\n duration: 1500\n });\n return;\n }\n var fieldKeys = ['name', '', '', '', '', '', '', '', '', '', '', '', 'stateCH', 'descriptions'];\n var fieldLabels = ['构件名称', '体积', '墩全高H', '墩身高h', '底部高程', '承台宽', '承台长', '承台高', '族', '桩径', '桩长', '结构材质', '完成情况', '自定义属性'];\n var url = 'data:application/vnd.ms-excel;base64,',\n tmplWorkbookXML = '' + 'Axel Richter{created}' + '' + '' + '' + '' + '{worksheets}',\n tmplWorksheetXML = '{rows}
',\n tmplCellXML = '{data}',\n base64 = function base64(s) {\n return window.btoa(unescape(encodeURIComponent(s)));\n },\n format = function format(s, c) {\n return s.replace(/{(\\w+)}/g, function (m, p) {\n return c[p];\n });\n };\n var ctx = \"\";\n var workbookXML = \"\";\n var worksheetsXML = \"\";\n var rowsXML = \"\";\n var pil = 0;\n for (var i = 0; i < this.features.length; i++) {\n for (var j = 0; j < states.length; j++) {\n if (this.features[i].state == states[j]) {\n if (i == 0) {\n rowsXML += '' + '构件名称' + '体积' + '墩全高H' + '墩身高h' + '底部高程' + '承台宽' + '承台长' + '承台高' + '' + '桩径' + '桩长' + '结构材质' + '完成情况' + '自定义属性' + '';\n }\n rowsXML += '';\n for (var key in fieldKeys) {\n if (Array.isArray(this.features[i][fieldKeys[key]])) {\n var str = '';\n for (var k in this.features[i][fieldKeys[key]]) {\n str += \"\".concat(this.features[i][fieldKeys[key]][k].key + ':' + this.features[i][fieldKeys[key]][k].value, \" \");\n }\n ctx = {\n nameType: 'String',\n data: str\n };\n } else {\n ctx = {\n nameType: 'String',\n data: this.features[i][fieldKeys[key]] || \"0\"\n };\n }\n rowsXML += format(tmplCellXML, ctx);\n }\n rowsXML += '';\n if (i > 0 && i / 60000 % 1 === 0) {\n pil++;\n ctx = {\n rows: rowsXML,\n nameWS: 'Sheet' + i\n };\n worksheetsXML += format(tmplWorksheetXML, ctx);\n rowsXML = \"\";\n rowsXML += '' + '构件名称' + '体积' + '墩全高H' + '墩身高h' + '底部高程' + '承台宽' + '承台长' + '承台高' + '' + '桩径' + '桩长' + '结构材质' + '完成情况' + '自定义属性' + '';\n }\n }\n }\n }\n ctx = {\n rows: rowsXML,\n nameWS: 'Sheet'\n };\n worksheetsXML += format(tmplWorksheetXML, ctx);\n rowsXML = \"\";\n ctx = {\n created: new Date().getTime(),\n worksheets: worksheetsXML\n };\n workbookXML = format(tmplWorkbookXML, ctx);\n var link = document.createElement(\"A\");\n link.href = url + base64(workbookXML);\n link.download = this.oldData.name + \"--构件属性.xls\";\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }, {\n key: \"exportState\",\n value: function exportState(e) {\n var checkbox = e.target.getElementsByTagName('input')[0];\n checkbox.checked = !checkbox.checked;\n if (checkbox.checked) {\n this.exportStateArray.push(checkbox.value);\n this.exportStateArray = Array.from(new Set(this.exportStateArray));\n } else {\n for (var i = 0; i < this.exportStateArray.length; i++) {\n if (this.exportStateArray[i] == checkbox.value) {\n this.exportStateArray.splice(i, 1);\n break;\n }\n }\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BIM);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9CSU0vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9CSU0vaW5kZXguanM/ZGM3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTEtMjAgMTY6MDVcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMS0yMCAxNjowNVxyXG4gKi9cclxuaW1wb3J0IEJhc2VUaWxlc2V0IGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IHsgaHRtbDIsIGNzczIgfSBmcm9tIFwiLi9fZWxlbWVudDJcIjtcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IEJhc2VEaWFsb2cgZnJvbSAnLi4vLi4vLi4vLi4vLi4vQmFzZURpYWxvZydcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHN5bmNTcGxpdERhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEJJTSBleHRlbmRzIEJhc2VUaWxlc2V0IHtcclxuICAjdXBkYXRlTW9kZWxUaW1lb3V0XHJcbiAgLyoqXHJcbiAqIEBjb25zdHJ1Y3RvclxyXG4gKiBAZGVzY3JpcHRpb24g5Yqg6L29QklN5qih5Z6LXHJcbiAqIEBwYXJhbSBzZGsge29iamVjdH0gc2RrXHJcbiAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOaooeWei+WPguaVsFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDlr7nosaFpZFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaooeWei+aYvumakFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gKiBAcGFyYW0gb3B0aW9ucy51cmwge3N0cmluZ30g6LWE5rqQ5Zyw5Z2AXHJcbiAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uIHtvYmplY3R9IOaooeWei+S9jee9rlxyXG4gKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICB0aGlzLmZlYXR1cmVzID0gb3B0aW9ucy5mZWF0dXJlcyB8fCBbXVxyXG4gICAgdGhpcy5leHBvcnRTdGF0ZUFycmF5ID0gW11cclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLkRpYWxvZy5leHBvcnRTdGF0ZSA9IChlKSA9PiB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U3RhdGUoZSlcclxuICAgIH1cclxuICAgIHRoaXMuRGlhbG9nLmV4cG9ydFByb3BlcnR5ID0gKGUpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRQcm9wZXJ0eSh0aGlzLmV4cG9ydFN0YXRlQXJyYXkpXHJcbiAgICB9XHJcbiAgICB0aGlzLmZlYXR1cmVzID0gbmV3IE1hcCgpXHJcbiAgICB0aGlzLm9uKClcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuIFwiYmltXCJcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV3RGF0YS5uYW1lXHJcbiAgfVxyXG5cclxuICBzZXQgbmFtZSh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEubmFtZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubmFtZSAmJiB0aGlzLl9lbG1zLm5hbWUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLmxuZ1xyXG4gIH1cclxuXHJcbiAgc2V0IGxuZyh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEubG5nID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm5ld0RhdGEubG5nLCB0aGlzLm5ld0RhdGEubGF0LCB0aGlzLm5ld0RhdGEuaGVpZ2h0LCB0aGlzLm5ld0RhdGEucm9sbCwgdGhpcy5uZXdEYXRhLmhlYWRpbmcsIHRoaXMubmV3RGF0YS5waXRjaCwgdGhpcy5uZXdEYXRhLnNjYWxlKVxyXG4gICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLmxhdFxyXG4gIH1cclxuXHJcbiAgc2V0IGxhdCh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEubGF0ID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm5ld0RhdGEubG5nLCB0aGlzLm5ld0RhdGEubGF0LCB0aGlzLm5ld0RhdGEuaGVpZ2h0LCB0aGlzLm5ld0RhdGEucm9sbCwgdGhpcy5uZXdEYXRhLmhlYWRpbmcsIHRoaXMubmV3RGF0YS5waXRjaCwgdGhpcy5uZXdEYXRhLnNjYWxlKVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLmhlaWdodFxyXG4gIH1cclxuXHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEuaGVpZ2h0ID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm5ld0RhdGEubG5nLCB0aGlzLm5ld0RhdGEubGF0LCB0aGlzLm5ld0RhdGEuaGVpZ2h0LCB0aGlzLm5ld0RhdGEucm9sbCwgdGhpcy5uZXdEYXRhLmhlYWRpbmcsIHRoaXMubmV3RGF0YS5waXRjaCwgdGhpcy5uZXdEYXRhLnNjYWxlKVxyXG4gICAgdGhpcy5fZWxtcy5oZWlnaHQgJiYgdGhpcy5fZWxtcy5oZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCByb2xsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV3RGF0YS5yb2xsXHJcbiAgfVxyXG5cclxuICBzZXQgcm9sbCh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEucm9sbCA9IHZcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5uZXdEYXRhLmxuZywgdGhpcy5uZXdEYXRhLmxhdCwgdGhpcy5uZXdEYXRhLmhlaWdodCwgdGhpcy5uZXdEYXRhLnJvbGwsIHRoaXMubmV3RGF0YS5oZWFkaW5nLCB0aGlzLm5ld0RhdGEucGl0Y2gsIHRoaXMubmV3RGF0YS5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMucm9sbCAmJiB0aGlzLl9lbG1zLnJvbGwuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBoZWFkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV3RGF0YS5oZWFkaW5nXHJcbiAgfVxyXG5cclxuICBzZXQgaGVhZGluZyh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEuaGVhZGluZyA9IHZcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5uZXdEYXRhLmxuZywgdGhpcy5uZXdEYXRhLmxhdCwgdGhpcy5uZXdEYXRhLmhlaWdodCwgdGhpcy5uZXdEYXRhLnJvbGwsIHRoaXMubmV3RGF0YS5oZWFkaW5nLCB0aGlzLm5ld0RhdGEucGl0Y2gsIHRoaXMubmV3RGF0YS5zY2FsZSlcclxuICAgIHRoaXMuX2VsbXMuaGVhZGluZyAmJiB0aGlzLl9lbG1zLmhlYWRpbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBwaXRjaCgpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEucGl0Y2hcclxuICB9XHJcblxyXG4gIHNldCBwaXRjaCh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEucGl0Y2ggPSB2XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMubmV3RGF0YS5sbmcsIHRoaXMubmV3RGF0YS5sYXQsIHRoaXMubmV3RGF0YS5oZWlnaHQsIHRoaXMubmV3RGF0YS5yb2xsLCB0aGlzLm5ld0RhdGEuaGVhZGluZywgdGhpcy5uZXdEYXRhLnBpdGNoLCB0aGlzLm5ld0RhdGEuc2NhbGUpXHJcbiAgICB0aGlzLl9lbG1zLnBpdGNoICYmIHRoaXMuX2VsbXMucGl0Y2guZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEuc2NhbGVcclxuICB9XHJcblxyXG4gIHNldCBzY2FsZSh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEuc2NhbGUgPSB2XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMubmV3RGF0YS5sbmcsIHRoaXMubmV3RGF0YS5sYXQsIHRoaXMubmV3RGF0YS5oZWlnaHQsIHRoaXMubmV3RGF0YS5yb2xsLCB0aGlzLm5ld0RhdGEuaGVhZGluZywgdGhpcy5uZXdEYXRhLnBpdGNoLCB0aGlzLm5ld0RhdGEuc2NhbGUpXHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlICYmIHRoaXMuX2VsbXMuc2NhbGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIGdldCB0cmFuc3BhcmVuY3koKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IHRyYW5zcGFyZW5jeSh2KSB7XHJcbiAgLy8gICB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ID0gdlxyXG4gIC8vICAgdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAvLyAgICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAvLyAgICAgc2hvdzogdHJ1ZSxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgdGhpcy5lbnRpdHkudHJhbnNwYXJlbmN5ID0gTnVtYmVyKHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kpXHJcbiAgLy8gICB0aGlzLl9lbG1zLnRyYW5zcGFyZW5jeSAmJiB0aGlzLl9lbG1zLnRyYW5zcGFyZW5jeS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgLy8gICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgbG9hZFNjZW5lVHJlZSh1cmwpIHtcclxuXHJcbiAgICAvLyBDZXNpdW0uRXhwZXJpbWVudGFsRmVhdHVyZXMuZW5hYmxlTW9kZWxFeHBlcmltZW50YWwgPSB0cnVlO1xyXG4gICAgbGV0IGFycmF5ID0gdXJsLnNwbGl0KCcvJylcclxuICAgIGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdID0gJ3NjZW5ldHJlZS5qc29uJ1xyXG5cclxuXHJcbiAgICBhd2FpdCBDZXNpdW0uUmVzb3VyY2UuZmV0Y2hKc29uKHtcclxuICAgICAgdXJsOiBhcnJheS5qb2luKCcvJylcclxuICAgIH0pLnRoZW4ocmVzID0+IHtcclxuICAgICAgdGhpcy5zY2VuZXRyZWUgPSByZXNcclxuXHJcbiAgICAgIGNvbnN0IGluaXREYXRhID0gKGFycmF5KSA9PiB7XHJcbiAgICAgICAgYXJyYXkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVzLmdldChpdGVtLmlkKS5zcGhlcmUgPSBpdGVtLnNwaGVyZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZXMuc2V0KGl0ZW0uaWQsIHsgc3BoZXJlOiBpdGVtLnNwaGVyZSB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgaW5pdERhdGEoaXRlbS5jaGlsZHJlbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpbml0RGF0YShyZXMuc2NlbmVzWzBdLmNoaWxkcmVuKVxyXG5cclxuICAgICAgLy8gcmVzLnNjZW5lc1swXS5jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpdGVtLmlkKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5mZWF0dXJlcy5nZXQoaXRlbS5pZCkuc3BoZXJlID0gaXRlbS5zcGhlcmVcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmZlYXR1cmVzLnNldChpdGVtLmlkLCB7c3BoZXJlOiBpdGVtLnNwaGVyZX0pXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9KVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG5cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5uZXdEYXRhLCB7XHJcbiAgICAgICAgdGl0bGU6ICdCSU3mqKHlnovlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAoaW5mbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5uYW1lID0gdGhpcy5uZXdEYXRhLm5hbWVcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5oZWlnaHQgPSB0aGlzLm5ld0RhdGEuaGVpZ2h0XHJcbiAgICAgICAgICB0aGlzLm9sZERhdGEubG5nID0gdGhpcy5uZXdEYXRhLmxuZ1xyXG4gICAgICAgICAgdGhpcy5vbGREYXRhLmxhdCA9IHRoaXMubmV3RGF0YS5sYXRcclxuICAgICAgICAgIC8vIHRoaXMub2xkRGF0YS50cmFuc3BhcmVuY3kgPSB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5XHJcbiAgICAgICAgICB0aGlzLm9sZERhdGEuc2NhbGUgPSB0aGlzLm5ld0RhdGEuc2NhbGVcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5yb2xsID0gdGhpcy5uZXdEYXRhLnJvbGxcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5oZWFkaW5nID0gdGhpcy5uZXdEYXRhLmhlYWRpbmdcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5waXRjaCA9IHRoaXMubmV3RGF0YS5waXRjaFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIGxldCBmZWF0dXJlcyA9IG5ldyBNYXAoKVxyXG4gICAgICAgICAgdGhpcy5mZWF0dXJlcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLml0ZW0gfVxyXG4gICAgICAgICAgICBkZWxldGUgZGF0YS5mZWF0dXJlc1xyXG4gICAgICAgICAgICBmZWF0dXJlcy5zZXQoa2V5LCBkYXRhKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soeyAuLi50aGlzLm9sZERhdGEsIGZlYXR1cmVzOiBmZWF0dXJlcywgdHlwZTogdGhpcy50eXBlIH0pXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9sZERhdGEuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICAvLyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ID0gdGhpcy5vbGREYXRhLnRyYW5zcGFyZW5jeVxyXG4gICAgICAgICAgLy8gdGhpcy5uZXdEYXRhLm5hbWUgPSB0aGlzLm9sZERhdGEubmFtZVxyXG4gICAgICAgICAgLy8gdGhpcy5uZXdEYXRhLmhlaWdodCA9IHRoaXMub2xkRGF0YS5oZWlnaHRcclxuICAgICAgICAgIC8vIHRoaXMubmV3RGF0YS5sbmcgPSB0aGlzLm9sZERhdGEubG5nXHJcbiAgICAgICAgICAvLyB0aGlzLm5ld0RhdGEubGF0ID0gdGhpcy5vbGREYXRhLmxhdFxyXG4gICAgICAgICAgLy8gdGhpcy5uZXdEYXRhLnNjYWxlID0gdGhpcy5vbGREYXRhLnNjYWxlXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICAgICAgLy8gICBjb2xvcjogXCJjb2xvcigncmdiYSgyNTUsMjU1LDI1NSxcIiArIHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kgKyBcIiknKVwiLFxyXG4gICAgICAgICAgLy8gICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uZXdEYXRhLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuc2hvdyA9IHNob3cpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJvdGF0ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3RhdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3RhdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm90YXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyB0aWxlc2V0LWJpbSdcclxuICAgICAgLy8g5YaF5a656YOo5YiGXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZlYXR1cmVFZGl0KHN0YXRlLCBmZWF0dXJlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmVudGl0eSlcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5lbnRpdHkucm9vdC5jaGlsZHJlblswXS5jb250ZW50KVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhmZWF0dXJlLmdldFByb3BlcnR5KCdpZCcpLCBmZWF0dXJlLmdldFByb3BlcnR5KCduYW1lJyksIGZlYXR1cmUuZ2V0UHJvcGVydHkoJ3N0YXRlJykpXHJcbiAgICAgIGxldCBuYW1lID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnbmFtZScpXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGZlYXR1cmUuZ2V0UHJvcGVydHkoJ2Rlc2NyaXB0aW9ucycpKVxyXG4gICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICBpZDogZmVhdHVyZS5nZXRQcm9wZXJ0eSgnaWQnKSxcclxuICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgIHN0YXRlOiBmZWF0dXJlLmdldFByb3BlcnR5KCdzdGF0ZScpIHx8IDAsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBmZWF0dXJlLmdldFByb3BlcnR5KCdkZXNjcmlwdGlvbnMnKSB8fCBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLnJhbmRvbVN0cmluZygpLFxyXG4gICAgICAgICAgICBrZXk6IFwi54K55Ye75q2k5aSE5Y+v57yW6L6RXCIsXHJcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKSkge1xyXG4gICAgICAgIGNhc2UgJzAnOiBkYXRhLnN0YXRlQ0ggPSAnJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzogZGF0YS5zdGF0ZUNIID0gJ+W3suWujOaIkCdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMic6IGRhdGEuc3RhdGVDSCA9ICfmnKrlrozmiJAnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzMnOiBkYXRhLnN0YXRlQ0ggPSAn5L+u5bu65LitJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICAvLyBsZXQgZmVhdHVyZSA9IHRoaXMuZW50aXR5LnJvb3QuY2hpbGRyZW5bMF0uY29udGVudC5nZXRGZWF0dXJlKDApXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGlkLGZlYXR1cmUsIHRoaXMuZW50aXR5KVxyXG4gICAgICAvLyByZXR1cm5cclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUuc2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnLCAnWUpfc3R5bGVfZGlhbG9nJyk7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUuaW5uZXJIVE1MID0gY3NzMigpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBCYXNlRGlhbG9nKHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLCB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMub2xkRGF0YS5uYW1lICsgJy0tLS0t6K6+572u54q25oCBJywgbGVmdDogJ2NhbGMoNTAlIC0gMjAwcHgpJywgdG9wOiAnY2FsYyg1MCUgLSAyMDBweCknLFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBhd2FpdCB0aGlzLl9EaWFsb2dPYmplY3QuaW5pdCgpXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSk7XHJcbiAgICAgIC8vIOWGheWuuemDqOWIhlxyXG4gICAgICBsZXQgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50LmlubmVySFRNTCA9IGh0bWwyKClcclxuICAgICAgLy8g5ZCN56ewXHJcbiAgICAgIGxldCBlX25hbWUgPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSduYW1lJ11cIilcclxuICAgICAgZV9uYW1lLnZhbHVlID0gbmFtZVxyXG4gICAgICAvL+eKtuaAgVxyXG4gICAgICBsZXQgZV9zdGF0ZSA9IGNvbnRlbnQucXVlcnlTZWxlY3RvcihcInNlbGVjdFtuYW1lPSdzdGF0ZS1zZWxlY3QnXVwiKVxyXG4gICAgICBlX3N0YXRlLnZhbHVlID0gZGF0YS5zdGF0ZVxyXG4gICAgICBlX3N0YXRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICAgICAgZGF0YS5zdGF0ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgc3dpdGNoIChkYXRhLnN0YXRlKSB7XHJcbiAgICAgICAgICBjYXNlICcwJzogZGF0YS5zdGF0ZUNIID0gJydcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJzEnOiBkYXRhLnN0YXRlQ0ggPSAn5bey5a6M5oiQJ1xyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAnMic6IGRhdGEuc3RhdGVDSCA9ICfmnKrlrozmiJAnXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICczJzogZGF0YS5zdGF0ZUNIID0gJ+S/ruW7uuS4rSdcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAvL+iHquWumuS5ieWxnuaAp1xyXG4gICAgICBsZXQgZV9wcm9wZXJ0eSA9IGNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncHJvcGVydHknKVswXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuZGVzY3JpcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY3JlYXRlUHJvcGVydHlJdGVtKGRhdGEuZGVzY3JpcHRpb25zW2ldLCBpKVxyXG4gICAgICB9XHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5SXRlbShpdGVtKSB7XHJcbiAgICAgICAgbGV0IGh0bWwgPSBgPGRpdiBjbGFzcz1cInJvdyBwcm9wZXJ0eS1pdGVtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0X2xhYmxlXCIgbmFtZT1cImtleVwiIHZhbHVlPVwiJHtpdGVtLmtleX1cIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBuYW1lPVwidmFsdWVcIiB2YWx1ZT1cIiR7aXRlbS52YWx1ZX1cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBhZGRcIj7vvIs8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBkZWxldGVcIj7vvI08L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PmBcclxuICAgICAgICAvLyBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChodG1sKVxyXG4gICAgICAgIGxldCBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICBsZXQgaXRlbUVsbSA9IG5ld0VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncHJvcGVydHktaXRlbScpWzBdXHJcbiAgICAgICAgbGV0IGVfa2V5ID0gaXRlbUVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0na2V5J11cIilcclxuICAgICAgICBsZXQgZV92YWx1ZSA9IGl0ZW1FbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3ZhbHVlJ11cIilcclxuICAgICAgICBsZXQgZV9hZGQgPSBpdGVtRWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FkZCcpWzBdXHJcbiAgICAgICAgbGV0IGVfZGVsZXRlID0gaXRlbUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkZWxldGUnKVswXVxyXG4gICAgICAgIGVfa2V5LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICAgIGl0ZW0ua2V5ID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICB9KVxyXG4gICAgICAgIGVfdmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBlX2FkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGxldCBuZXdJdGVtID0ge1xyXG4gICAgICAgICAgICBpZDogX3RoaXMucmFuZG9tU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGtleTogXCLngrnlh7vmraTlpITlj6/nvJbovpFcIixcclxuICAgICAgICAgICAgdmFsdWU6IFwiXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGEuZGVzY3JpcHRpb25zLnB1c2gobmV3SXRlbSlcclxuICAgICAgICAgIGNyZWF0ZVByb3BlcnR5SXRlbShuZXdJdGVtKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZV9kZWxldGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5kZXNjcmlwdGlvbnNbaV0uaWQgPT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICBkYXRhLmRlc2NyaXB0aW9ucy5zcGxpY2UoaSwgMSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlX3Byb3BlcnR5LnJlbW92ZUNoaWxkKGl0ZW1FbG0pXHJcbiAgICAgICAgICAvLyBsZXQgaXRlbSA9IHtcclxuICAgICAgICAgIC8vICAga2V5OiBcIueCueWHu+atpOWkhOWPr+e8lui+kVwiLFxyXG4gICAgICAgICAgLy8gICB2YWx1ZTogXCJcIlxyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gY3JlYXRlUHJvcGVydHlJdGVtKGl0ZW0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICBlX3Byb3BlcnR5LmFwcGVuZENoaWxkKGl0ZW1FbG0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyYW5zbGF0aW9uYWwnKVswXVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnQpXHJcbiAgICAgIC8vIGZvb3Tpg6jliIZcclxuICAgICAgbGV0IGNvbmZpcm1CdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgY29uZmlybUJ0bi5jbGFzc05hbWUgPSAnY29uZmlybSc7XHJcbiAgICAgIGNvbmZpcm1CdG4uaW5uZXJIVE1MID0gJ+ehruiupCdcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChjb25maXJtQnRuLCB0YXJnZXQpXHJcbiAgICAgIGNvbmZpcm1CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXNbaV0uaWQgPT0gZGF0YS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVzW2ldID0gZGF0YVxyXG4gICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuZmVhdHVyZXMucHVzaChkYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLnNldFByb3BlcnR5KCdzdGF0ZScsIGRhdGEuc3RhdGUpXHJcbiAgICAgICAgZmVhdHVyZS5zZXRQcm9wZXJ0eSgnZGVzY3JpcHRpb25zJywgZGF0YS5kZXNjcmlwdGlvbnMpXHJcbiAgICAgICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAgICAgc3dpdGNoIChkYXRhLnN0YXRlKSB7XHJcbiAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgY29sb3IgPSAnI2ZmZidcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgY29sb3IgPSAnI2YwMCdcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgY29sb3IgPSAnIzBmMCdcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICczJzpcclxuICAgICAgICAgICAgY29sb3IgPSAnIzAwZidcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhjb2xvcilcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soeyAuLi50aGlzLm5ld0RhdGEsIGZlYXR1cmVzOiB0aGlzLmZlYXR1cmVzIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRyYW5zcGFyZW5jeSA9IHRoaXMub2xkRGF0YS50cmFuc3BhcmVuY3lcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub2xkRGF0YS5uYW1lXHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMub2xkRGF0YS5oZWlnaHRcclxuICAgIHRoaXMubG5nID0gdGhpcy5vbGREYXRhLmxuZ1xyXG4gICAgdGhpcy5sYXQgPSB0aGlzLm9sZERhdGEubGF0XHJcbiAgICB0aGlzLnJvbGwgPSB0aGlzLm9sZERhdGEucm9sbFxyXG4gICAgdGhpcy5oZWFkaW5nID0gdGhpcy5vbGREYXRhLmhlYWRpbmdcclxuICAgIHRoaXMucGl0Y2ggPSB0aGlzLm9sZERhdGEucGl0Y2hcclxuICAgIHRoaXMuc2NhbGUgPSB0aGlzLm9sZERhdGEuc2NhbGVcclxuICB9XHJcblxyXG4gIC8v5pu05paw5qih5Z6L5L2N572uXHJcbiAgdXBkYXRlTW9kZWwoX3R4LCBfdHksIF90eiwgX3J4ID0gMCwgX3J5ID0gMCwgX3J6ID0gMCwgcyA9IDEpIHtcclxuICAgIGlmICghdGhpcy50aWxlc2V0LnJvb3QudHJhbnNmb3JtKSB7XHJcbiAgICAgIGlmICh3aW5kb3cuRUxFTUVOVCkge1xyXG4gICAgICAgIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2UuY2xvc2VBbGwoKTtcclxuICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgIG1lc3NhZ2U6ICfor6XmqKHlnovkuI3mlK/mjIHnp7vliqjlkozml4vovazvvIEnLFxyXG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLndhcm4oJ+ivpeaooeWei+S4jeaUr+aMgeenu+WKqOWSjOaXi+i9rO+8gScpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKCghX3R4ICYmIF90eCE9PTApIHx8ICghX3R5ICYmIF90eSE9PTApIHx8ICghX3R6ICYmIF90eiE9PTApKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeClcclxuICAgIClcclxuICAgIGxldCBteSA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblkoXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnkpXHJcbiAgICApXHJcbiAgICBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J6KVxyXG4gICAgKVxyXG4gICAgLy8g5bmz56e7XHJcbiAgICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KSlcclxuICAgIC8vIOaXi+i9rFxyXG4gICAgbGV0IHJvdGF0aW9uWCA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG14KVxyXG4gICAgbGV0IHJvdGF0aW9uWSA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG15KVxyXG4gICAgbGV0IHJvdGF0aW9uWiA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG16KVxyXG4gICAgbGV0IG9yaWdpbmFsTWF0cml4ID0gbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG0sIHJvdGF0aW9uWCwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25ZLCBvcmlnaW5hbE1hdHJpeClcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgY29uc3Qgc2NhbGUgPSBDZXNpdW0uTWF0cml4NC5mcm9tVW5pZm9ybVNjYWxlKHMpO1xyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkob3JpZ2luYWxNYXRyaXgsIHNjYWxlLCB0aGlzLmVudGl0eS5fcm9vdC50cmFuc2Zvcm0pXHJcbiAgICBpZiAoIXRoaXMuZWRpdE9iai5hY3RpdmVBeGlzKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iai5wb3NpdGlvbiA9IHsgbG5nOiBfdHgsIGxhdDogX3R5LCBhbHQ6IF90eiB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZWRpdE9iai5hY3RpdmVDaXJjbGUpIHtcclxuICAgICAgdGhpcy5lZGl0T2JqLnJvdGF0ZSA9IHsgeDogX3J4LCB5OiBfcnksIHo6IF9yeiB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVkaXRPYmogJiYgdGhpcy5lZGl0T2JqLnVwZGF0ZSgpXHJcblxyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuI3VwZGF0ZU1vZGVsVGltZW91dClcclxuICAgIHRoaXMuI3VwZGF0ZU1vZGVsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy4jdXBkYXRlTW9kZWxUaW1lb3V0KVxyXG4gICAgICBsZXQgY2VudGVyID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmVudGl0eS5ib3VuZGluZ1NwaGVyZS5jZW50ZXIsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgbGV0IGNpcmNsZSA9IHR1cmYuY2lyY2xlKFtjZW50ZXIubG5nLCBjZW50ZXIubGF0XSwgdGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUucmFkaXVzIC8gMTAwMCwgeyBzdGVwczogMzYwLCB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBmb3IgKGxldCBba2V5LCBlbnRpdHldIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgIGlmIChlbnRpdHkudHlwZSA9PT0gJ0JpbGxib2FyZE9iamVjdCcgJiYgZW50aXR5LmhlaWdodE1vZGUgPT0gMykge1xyXG4gICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbZW50aXR5LmxuZywgZW50aXR5LmxhdF0pO1xyXG4gICAgICAgICAgaWYgKHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpKSB7XHJcbiAgICAgICAgICAgIGVudGl0eS51cGRhdGVIZWlnaHQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmKGVudGl0eS5sYWJlbCkge1xyXG4gICAgICAgICAgICBlbnRpdHkubGFiZWwuc2hvdyA9IGVudGl0eS5sYWJlbC5zaG93XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIGV4cG9ydFByb3BlcnR5KHN0YXRlcykge1xyXG4gIC8vICAgY29uc29sZS5sb2codGhpcy5mZWF0dXJlcylcclxuICAvLyAgIGxldCBmaWVsZEtleXMgPSBbJ25hbWUnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdzdGF0ZUNIJywgJ2Rlc2NyaXB0aW9ucyddXHJcbiAgLy8gICBsZXQgZmllbGRMYWJlbHMgPSBbJ+aehOS7tuWQjeensCcsICfkvZPnp68nLCAn5aKp5YWo6auYSCcsICfloqnouqvpq5hoJywgJ+W6lemDqOmrmOeoiycsICfmib/lj7Dlrr0nLCAn5om/5Y+w6ZW/JywgJ+aJv+WPsOmrmCcsICfml48nLCAn5qGp5b6EJywgJ+ahqemVvycsICfnu5PmnoTmnZDotKgnLCAn5a6M5oiQ5oOF5Ya1JywgJ+iHquWumuS5ieWxnuaApyddXHJcblxyXG4gIC8vICAgbGV0IGRhdGFTdHIgPSBmaWVsZExhYmVscy50b1N0cmluZygpICsgJ1xcclxcbic7XHJcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdGF0ZXMubGVuZ3RoOyBqKyspIHtcclxuICAvLyAgICAgICBpZiAodGhpcy5mZWF0dXJlc1tpXS5zdGF0ZSA9PSBzdGF0ZXNbal0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmVhdHVyZXNbaV1ba2V5XSkpIHtcclxuICAvLyAgICAgICAgICAgICBsZXQgc3RyID0gJydcclxuICAvLyAgICAgICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuZmVhdHVyZXNbaV1ba2V5XSkge1xyXG4gIC8vICAgICAgICAgICAgICAgc3RyICs9IGAke3RoaXMuZmVhdHVyZXNbaV1ba2V5XVtrXS5rZXkgKyAn77yaJyArIHRoaXMuZmVhdHVyZXNbaV1ba2V5XVtrXS52YWx1ZX1cXG5gXHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIGRhdGFTdHIgKz0gYFwiJHtzdHJ9XCJcXHRgXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgZWxzZSB7XHJcbiAgLy8gICAgICAgICAgICAgLy8g5Yqg5byV5Y+35piv5Li65LqG5L2/5o2i6KGM56ym5Zyo5Y2V5YWD5qC85YaF5q2j5bi45pi+56S6XHJcbiAgLy8gICAgICAgICAgICAgZGF0YVN0ciArPSBgXCIke3RoaXMuZmVhdHVyZXNbaV1ba2V5XSA/IHRoaXMuZmVhdHVyZXNbaV1ba2V5XSA6ICcnfVwiXFx0LGA7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgZGF0YVN0ciArPSAnXFxyXFxuJztcclxuICAvLyAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgLy8gZW5jb2RlVVJJQ29tcG9uZW50IOino+WGs+S4reaWh+S5seeggVxyXG4gIC8vICAgY29uc3QgdXJsID0gXCJkYXRhOnRleHQveGxzO2NoYXJzZXQ9dXRmLTgsXFx1ZmVmZlwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGRhdGFTdHIpO1xyXG4gIC8vICAgY29uc29sZS5sb2codXJsKVxyXG4gIC8vICAgLy8gY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gIC8vICAgLy8gbGluay5ocmVmID0gdXJsO1xyXG4gIC8vICAgLy8gbGluay5kb3dubG9hZCA9IHRoaXMub2xkRGF0YS5uYW1lICsgXCItLeaehOS7tuWxnuaApy54bHNcIjtcclxuICAvLyAgIC8vIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAvLyAgIC8vIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgLy8gICAvLyBsaW5rLmNsaWNrKCk7XHJcbiAgLy8gICAvLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspOyAvL+mHiuaUvuagh+etvlxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0U2NlbmV0cmVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2NlbmV0cmVlXHJcbiAgfVxyXG5cclxuICAvLyDorr7nva5mZWF0dXJl6aKc6ImyXHJcbiAgZmVhdHVyZUNvbG9yKGlkLCBjb2xvcikge1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZXMuaGFzKGlkKSkge1xyXG4gICAgICBsZXQgZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNcclxuICAgICAgZm9yIChsZXQga2V5IGluIGZlYXR1cmVzKSB7XHJcbiAgICAgICAgaWYgKGZlYXR1cmVzW2tleV0uY29udGVudC5fbW9kZWwpIHtcclxuICAgICAgICAgIGZlYXR1cmVzW2tleV0uY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlc1trZXldLmN1c3RvbUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhjb2xvcilcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZUNvbG9yKGlkKSB7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlcy5oYXMoaWQpKSB7XHJcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmN1c3RvbUNvbG9yXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZlYXR1cmVzID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzXHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmVhdHVyZXNba2V5XS5jdXN0b21Db2xvciB8fCBmZWF0dXJlc1trZXldLmNvbG9yXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDorr7nva5mZWF0dXJl5pi+6ZqQXHJcbiAgZmVhdHVyZVNob3coaWQsIHNob3cpIHtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpZCkpIHtcclxuICAgICAgbGV0IGZlYXR1cmVzID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzXHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICBmZWF0dXJlc1trZXldLnNob3cgPSBzaG93XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmVzW2tleV0uY3VzdG9tU2hvdyA9IHNob3dcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tU2hvdyA9IHNob3dcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL+mjnuWIsGZlYXR1cmXkvY3nva5cclxuICBhc3luYyBmZWF0dXJlRmx5dG8oaWQpIHtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpZCkpIHtcclxuICAgICAgbGV0IHNwaGVyZSA9IHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5zcGhlcmVcclxuICAgICAgbGV0IGNlbnRlciA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhcclxuICAgICAgICBzcGhlcmVbMF0sXHJcbiAgICAgICAgc3BoZXJlWzFdLFxyXG4gICAgICAgIHNwaGVyZVsyXVxyXG4gICAgICApXHJcbiAgICAgIGxldCBzcmNNYXRJbnYgPSB0aGlzLmVudGl0eS5fcm9vdC5vcmlnaW5hbFRyYW5zZm9ybVxyXG4gICAgICBzcmNNYXRJbnYgPSBDZXNpdW0uTWF0cml4NC5pbnZlcnNlKHNyY01hdEludiwgbmV3IENlc2l1bS5NYXRyaXg0KCkpXHJcbiAgICAgIGxldCBjdXJNYXQgPSB0aGlzLmVudGl0eS5fcm9vdC50cmFuc2Zvcm1cclxuICAgICAgbGV0IG1hdCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KGN1ck1hdCwgc3JjTWF0SW52LCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSlcclxuICAgICAgbGV0IGNlbnRlcjIgPSBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQoXHJcbiAgICAgICAgbWF0LFxyXG4gICAgICAgIGNlbnRlcixcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApXHJcbiAgICAgIGxldCB3Z3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2VudGVyMiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBsZXQgY2FydGVzaWFuMyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHdnczg0LmxuZyxcclxuICAgICAgICB3Z3M4NC5sYXQsXHJcbiAgICAgICAgd2dzODQuYWx0ICsgc3BoZXJlWzNdXHJcbiAgICAgIClcclxuICAgICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBjYXJ0ZXNpYW4zXHJcbiAgICAgIH0pXHJcbiAgICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gYXdhaXQgbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsMC4yKScpXCJcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuZmVhdHVyZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gaWQpIHtcclxuICAgICAgICAgIGxldCBjb2xvciA9IHRoaXMuZ2V0RmVhdHVyZUNvbG9yKGlkKVxyXG4gICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuaGFzKGlkKSAmJiBjb2xvcikge1xyXG4gICAgICAgICAgICBsZXQgZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNcclxuICAgICAgICAgICAgZm9yIChsZXQgayBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlc1trXS5jb250ZW50Ll9tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXNba10uY29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmZWF0dXJlc1trXS5jdXN0b21BbHBoYSA9IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQWxwaGEgPSAxXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLmZlYXR1cmVDb2xvcihpZCwgYHJnYmEoJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IucmVkKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuZ3JlZW4pfSwke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5ibHVlKX0sJHtjb2xvci5hbHBoYX0pYClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsZXQgY29sb3IgPSB0aGlzLmdldEZlYXR1cmVDb2xvcihrZXkpXHJcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlcy5oYXMoa2V5KSAmJiBjb2xvcikge1xyXG4gICAgICAgICAgICBsZXQgZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmdldChrZXkpLmZlYXR1cmVzXHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgaW4gZmVhdHVyZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXNba10uY29udGVudC5fbW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVzW2tdLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5yZWQpfSwke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5ncmVlbil9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmJsdWUpfSwke2NvbG9yLmFscGhhICogMC4yfSlgKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmZWF0dXJlc1trXS5jdXN0b21BbHBoYSA9IGNvbG9yLmFscGhhICogMC4yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlcy5nZXQoa2V5KS5jdXN0b21BbHBoYSA9IGNvbG9yLmFscGhhICogMC4yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLmZlYXR1cmVDb2xvcihrZXksIGByZ2JhKCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLnJlZCl9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmdyZWVuKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuYmx1ZSl9LCR7Y29sb3IuYWxwaGEgKiAwLjJ9KWApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAvLyB0aGlzLmVudGl0eS5yZWFkeVByb21pc2UudGhlbigoKT0+e1xyXG4gICAgICAvLyAgIHRoaXMuZmVhdHVyZUNvbG9yKGlkLCAnI2ZmZmZmZicpXHJcbiAgICAgIC8vIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5mZWF0dXJlcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmdldChrZXkpLmZlYXR1cmVzXHJcbiAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5nZXRGZWF0dXJlQ29sb3Ioa2V5KVxyXG4gICAgICAgIGlmIChjb2xvcikge1xyXG4gICAgICAgICAgZm9yIChsZXQgayBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICBpZiAoZmVhdHVyZXNba10uY29udGVudC5fbW9kZWwpIHtcclxuICAgICAgICAgICAgICBmZWF0dXJlc1trXS5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmVhdHVyZXNba10uY3VzdG9tQWxwaGEgPSAxXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZlYXR1cmVzLmdldChrZXkpLmN1c3RvbUFscGhhID0gY29sb3IuYWxwaGEgKiAwLjJcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDlr7zlh7rlsZ7mgKdcclxuICBleHBvcnRQcm9wZXJ0eShzdGF0ZXMpIHtcclxuICAgIGlmICh0aGlzLmV4cG9ydFN0YXRlQXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgIG1lc3NhZ2U6ICfmnKrpgInmi6nlsZ7mgKflr7zlh7rpgInpobnvvIEnLFxyXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgZmllbGRLZXlzID0gWyduYW1lJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnc3RhdGVDSCcsICdkZXNjcmlwdGlvbnMnXVxyXG4gICAgbGV0IGZpZWxkTGFiZWxzID0gWyfmnoTku7blkI3np7AnLCAn5L2T56evJywgJ+WiqeWFqOmrmEgnLCAn5aKp6Lqr6auYaCcsICflupXpg6jpq5jnqIsnLCAn5om/5Y+w5a69JywgJ+aJv+WPsOmVvycsICfmib/lj7Dpq5gnLCAn5pePJywgJ+ahqeW+hCcsICfmoanplb8nLCAn57uT5p6E5p2Q6LSoJywgJ+WujOaIkOaDheWGtScsICfoh6rlrprkuYnlsZ7mgKcnXVxyXG4gICAgdmFyIHVybCA9ICdkYXRhOmFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbDtiYXNlNjQsJyxcclxuICAgICAgdG1wbFdvcmtib29rWE1MID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIj8+PD9tc28tYXBwbGljYXRpb24gcHJvZ2lkPVwiRXhjZWwuU2hlZXRcIj8+PFdvcmtib29rIHhtbG5zPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6c3ByZWFkc2hlZXRcIiB4bWxuczpzcz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnNwcmVhZHNoZWV0XCI+J1xyXG4gICAgICAgICsgJzxEb2N1bWVudFByb3BlcnRpZXMgeG1sbnM9XCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2VcIj48QXV0aG9yPkF4ZWwgUmljaHRlcjwvQXV0aG9yPjxDcmVhdGVkPntjcmVhdGVkfTwvQ3JlYXRlZD48L0RvY3VtZW50UHJvcGVydGllcz4nXHJcbiAgICAgICAgKyAnPFN0eWxlcz4nXHJcbiAgICAgICAgKyAnPFN0eWxlIHNzOklEPVwiQ3VycmVuY3lcIj48TnVtYmVyRm9ybWF0IHNzOkZvcm1hdD1cIkN1cnJlbmN5XCI+PC9OdW1iZXJGb3JtYXQ+PC9TdHlsZT4nXHJcbiAgICAgICAgKyAnPFN0eWxlIHNzOklEPVwiRGF0ZVwiPjxOdW1iZXJGb3JtYXQgc3M6Rm9ybWF0PVwiTWVkaXVtIERhdGVcIj48L051bWJlckZvcm1hdD48L1N0eWxlPidcclxuICAgICAgICArICc8L1N0eWxlcz4nXHJcbiAgICAgICAgKyAne3dvcmtzaGVldHN9PC9Xb3JrYm9vaz4nXHJcbiAgICAgICwgdG1wbFdvcmtzaGVldFhNTCA9ICc8V29ya3NoZWV0IHNzOk5hbWU9XCJ7bmFtZVdTfVwiPjxUYWJsZT48c3M6Q29sdW1uIHNzOldpZHRoPVwiMTIwXCIvPjxzczpDb2x1bW4gc3M6V2lkdGg9XCIxMjBcIi8+PHNzOkNvbHVtbiBzczpXaWR0aD1cIjEyMFwiLz48c3M6Q29sdW1uIHNzOldpZHRoPVwiMTIwXCIvPjxzczpDb2x1bW4gc3M6V2lkdGg9XCIxMjBcIi8+PHNzOkNvbHVtbiBzczpXaWR0aD1cIjEyMFwiLz48c3M6Q29sdW1uIHNzOldpZHRoPVwiMTIwXCIvPjxzczpDb2x1bW4gc3M6V2lkdGg9XCIxMjBcIi8+PHNzOkNvbHVtbiBzczpXaWR0aD1cIjEyMFwiLz48c3M6Q29sdW1uIHNzOldpZHRoPVwiMTIwXCIvPjxzczpDb2x1bW4gc3M6V2lkdGg9XCIxMjBcIi8+PHNzOkNvbHVtbiBzczpXaWR0aD1cIjEyMFwiLz48c3M6Q29sdW1uIHNzOldpZHRoPVwiMTIwXCIvPjxzczpDb2x1bW4gc3M6V2lkdGg9XCIyNDBcIi8+e3Jvd3N9PC9UYWJsZT48L1dvcmtzaGVldD4nXHJcbiAgICAgICwgdG1wbENlbGxYTUwgPSAnPENlbGw+PERhdGEgc3M6VHlwZT1cIntuYW1lVHlwZX1cIj57ZGF0YX08L0RhdGE+PC9DZWxsPidcclxuICAgICAgLCBiYXNlNjQgPSBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQocykpKVxyXG4gICAgICB9XHJcbiAgICAgICwgZm9ybWF0ID0gZnVuY3Rpb24gKHMsIGMpIHtcclxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC97KFxcdyspfS9nLCBmdW5jdGlvbiAobSwgcCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNbcF07XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIHZhciBjdHggPSBcIlwiO1xyXG4gICAgdmFyIHdvcmtib29rWE1MID0gXCJcIjtcclxuICAgIHZhciB3b3Jrc2hlZXRzWE1MID0gXCJcIjtcclxuICAgIHZhciByb3dzWE1MID0gXCJcIjtcclxuXHJcbiAgICB2YXIgcGlsID0gMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHN0YXRlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVzW2ldLnN0YXRlID09IHN0YXRlc1tqXSkge1xyXG4gICAgICAgICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAgICAgICByb3dzWE1MICs9ICc8Um93PicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5p6E5Lu25ZCN56ewPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuS9k+enrzwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7loqnlhajpq5hIPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuWiqei6q+mrmGg8L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5bqV6YOo6auY56iLPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuaJv+WPsOWuvTwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7mib/lj7Dplb88L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5om/5Y+w6auYPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuaXjzwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7moanlvoQ8L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5qGp6ZW/PC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPue7k+aehOadkOi0qDwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7lrozmiJDmg4XlhrU8L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+6Ieq5a6a5LmJ5bGe5oCnPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPC9Sb3c+JztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvd3NYTUwgKz0gJzxSb3c+JztcclxuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmaWVsZEtleXMpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5mZWF0dXJlc1tpXVtmaWVsZEtleXNba2V5XV0pKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHN0ciA9ICcnXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLmZlYXR1cmVzW2ldW2ZpZWxkS2V5c1trZXldXSkge1xyXG4gICAgICAgICAgICAgICAgc3RyICs9IGAke3RoaXMuZmVhdHVyZXNbaV1bZmllbGRLZXlzW2tleV1dW2tdLmtleSArICfvvJonICsgdGhpcy5mZWF0dXJlc1tpXVtmaWVsZEtleXNba2V5XV1ba10udmFsdWV9JiMxMDtgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGN0eCA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWVUeXBlOiAnU3RyaW5nJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHN0clxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY3R4ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZVR5cGU6ICdTdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5mZWF0dXJlc1tpXVtmaWVsZEtleXNba2V5XV0gfHwgXCIwXCJcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvd3NYTUwgKz0gZm9ybWF0KHRtcGxDZWxsWE1MLCBjdHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm93c1hNTCArPSAnPC9Sb3c+JztcclxuICAgICAgICAgIGlmIChpID4gMCAmJiAoaSAvIDYwMDAwKSAlIDEgPT09IDApIHtcclxuICAgICAgICAgICAgcGlsKys7XHJcbiAgICAgICAgICAgIGN0eCA9IHsgcm93czogcm93c1hNTCwgbmFtZVdTOiAnU2hlZXQnICsgaSB9O1xyXG4gICAgICAgICAgICB3b3Jrc2hlZXRzWE1MICs9IGZvcm1hdCh0bXBsV29ya3NoZWV0WE1MLCBjdHgpO1xyXG4gICAgICAgICAgICByb3dzWE1MID0gXCJcIjtcclxuICAgICAgICAgICAgcm93c1hNTCArPSAnPFJvdz4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuaehOS7tuWQjeensDwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7kvZPnp688L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5aKp5YWo6auYSDwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7loqnouqvpq5hoPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuW6lemDqOmrmOeoizwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7mib/lj7Dlrr08L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5om/5Y+w6ZW/PC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuaJv+WPsOmrmDwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7ml488L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5qGp5b6EPC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuahqemVvzwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzxDZWxsPjxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj7nu5PmnoTmnZDotKg8L0RhdGE+PC9DZWxsPicgK1xyXG4gICAgICAgICAgICAgICc8Q2VsbD48RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+5a6M5oiQ5oOF5Ya1PC9EYXRhPjwvQ2VsbD4nICtcclxuICAgICAgICAgICAgICAnPENlbGw+PERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPuiHquWumuS5ieWxnuaApzwvRGF0YT48L0NlbGw+JyArXHJcbiAgICAgICAgICAgICAgJzwvUm93Pic7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjdHggPSB7IHJvd3M6IHJvd3NYTUwsIG5hbWVXUzogJ1NoZWV0JyB9O1xyXG4gICAgd29ya3NoZWV0c1hNTCArPSBmb3JtYXQodG1wbFdvcmtzaGVldFhNTCwgY3R4KTtcclxuICAgIHJvd3NYTUwgPSBcIlwiO1xyXG4gICAgY3R4ID0geyBjcmVhdGVkOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpLCB3b3Jrc2hlZXRzOiB3b3Jrc2hlZXRzWE1MIH07XHJcbiAgICB3b3JrYm9va1hNTCA9IGZvcm1hdCh0bXBsV29ya2Jvb2tYTUwsIGN0eCk7XHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJBXCIpO1xyXG4gICAgbGluay5ocmVmID0gdXJsICsgYmFzZTY0KHdvcmtib29rWE1MKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLm9sZERhdGEubmFtZSArIFwiLS3mnoTku7blsZ7mgKcueGxzXCJcclxuICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFN0YXRlKGUpIHtcclxuICAgIGxldCBjaGVja2JveCA9IGUudGFyZ2V0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICBjaGVja2JveC5jaGVja2VkID0gIWNoZWNrYm94LmNoZWNrZWRcclxuICAgIGlmIChjaGVja2JveC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U3RhdGVBcnJheS5wdXNoKGNoZWNrYm94LnZhbHVlKVxyXG4gICAgICB0aGlzLmV4cG9ydFN0YXRlQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5leHBvcnRTdGF0ZUFycmF5KSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXhwb3J0U3RhdGVBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLmV4cG9ydFN0YXRlQXJyYXlbaV0gPT0gY2hlY2tib3gudmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZXhwb3J0U3RhdGVBcnJheS5zcGxpY2UoaSwgMSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCSU1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWhCQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdENBO0FBQUE7QUFBQTtBQUFBO0FBd0NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBckVBO0FBc0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBaEdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBd0VBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0SEE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFPQTtBQUFBO0FBTkE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUxBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQW5MQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFBQTtBQW9GQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/BIM/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/Tileset/_element.js": -/*!*****************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/Tileset/_element.js ***! - \*****************************************************************/ -/*! exports provided: html, css */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u7CBE\\u5EA6\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n \\u900F\\u89C6\\n \\n
\\n
\\n
\\n \";\n}\nfunction css() {\n return \"\\n .YJ-custom-base-dialog>.content {\\n width: 420px;\\n }\\n .YJ-custom-base-dialog>.content .row .label {\\n flex: 0 0 45px;\\n }\\n\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9UaWxlc2V0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZVRpbGVzZXQvVGlsZXNldC9fZWxlbWVudC5qcz85YjQ3Il0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuZnVuY3Rpb24gaHRtbCgpIHtcclxuICByZXR1cm4gYFxyXG4gIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6auY5bqmPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtM1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBAbW9kZWw9XCJoZWlnaHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nsr7luqY8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjAuMVwiIG1heD1cIjEwXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cImFjY3VyYWN5XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumAj+inhjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjFcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInRyYW5zcGFyZW5jeVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIGBcclxufVxyXG5mdW5jdGlvbiBjc3MoKSB7XHJcbiAgcmV0dXJuIGBcclxuICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50IHtcclxuICAgIHdpZHRoOiA0MjBweDtcclxuICB9XHJcbiAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAucm93IC5sYWJlbCB7XHJcbiAgICBmbGV4OiAwIDAgNDVweDtcclxuICB9XHJcbmBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCwgY3NzIH0iXSwibWFwcGluZ3MiOiJBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFzQ0E7QUFDQTtBQUNBO0FBUUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/Tileset/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js": -/*!**************************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js ***! - \**************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/BaseTileset/index.js\");\n/* harmony import */ var _Element_cy_html_slider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../Element/cy_html_slider */ \"./src/Obj/Element/cy_html_slider.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BaseSource/BaseTileset/Tileset/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 16:05\r\n * @description:index\r\n * @update: 2023-11-20 16:05\r\n */\n\n\n\n\n\n\nvar Tileset = /*#__PURE__*/function (_BaseTileset) {\n /**\r\n * @constructor\r\n * @description 加载Tileset模型\r\n * @param sdk {object} sdk\r\n * @param options {object} 模型参数\r\n * @param options.id {string} 对象id\r\n * @param options.show=true {boolean} 模型显隐\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 资源地址\r\n * @param options.accuracy=1 {number} 精度(倍)\r\n * @param options.position {object} 模型位置\r\n * @param options.position.lng {number} 经度\r\n * @param options.position.lat {number} 纬度\r\n * @param options.position.alt {number} 高度\r\n * */\n function Tileset(earth) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Tileset);\n _this2 = _callSuper(this, Tileset, [earth, options]);\n _this2.picking = false;\n _this2.on();\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Tileset, _BaseTileset);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Tileset, [{\n key: \"type\",\n get: function get() {\n return \"tileset\";\n }\n }, {\n key: \"on\",\n value: function on() {\n return this.loadTileset(this.options);\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.newData.name;\n },\n set: function set(v) {\n this.newData.name = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.newData.height;\n },\n set: function set(v) {\n this.newData.height = v;\n this.options.position.alt = v;\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = v;\n });\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch);\n }\n }, {\n key: \"accuracy\",\n get: function get() {\n return this.newData.accuracy;\n },\n set: function set(v) {\n var _this3 = this;\n this.newData.accuracy = Number(v.toFixed(1));\n if (this.newData.accuracy < 0.1) {\n this.newData.accuracy = 0.1;\n }\n if (this.entity) {\n this.entity.maximumScreenSpaceError = 32 / this.newData.accuracy;\n }\n this._elms.accuracy && this._elms.accuracy.forEach(function (item) {\n item.value = _this3.newData.accuracy;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.newData.lng;\n },\n set: function set(v) {\n this.newData.lng = v;\n this.options.position.lng = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch);\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.newData.lat;\n },\n set: function set(v) {\n this.newData.lat = v;\n this.options.position.lat = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch);\n }\n }, {\n key: \"roll\",\n get: function get() {\n return this.newData.roll;\n },\n set: function set(v) {\n this.newData.roll = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n }\n }, {\n key: \"heading\",\n get: function get() {\n return this.newData.heading;\n },\n set: function set(v) {\n this.newData.heading = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return this.newData.pitch;\n },\n set: function set(v) {\n this.newData.pitch = v;\n this.updateModel(this.newData.lng, this.newData.lat, this.newData.height, this.newData.roll, this.newData.heading, this.newData.pitch, this.newData.scale);\n }\n }, {\n key: \"transparency\",\n get: function get() {\n return this.newData.transparency;\n },\n set: function set(v) {\n if (!this.newData) {\n return;\n }\n this.newData.transparency = Number(v);\n this._elms.transparency && this._elms.transparency.forEach(function (item) {\n item.value = v;\n });\n var transparency = this.newData.transparency;\n // if (transparency == 1) {\n // transparency = 0.99\n // }\n this.entity.style = new Cesium.Cesium3DTileStyle({\n color: {\n \"conditions\": [\n //有size属性表示为点云,需要与点颜色融合\n [\"Boolean(${SIZE})\", \"${COLOR} * color('rgba(255,255,255)', \" + transparency + \")\"], [\"true\", \"color('rgba(255,255,255,\" + transparency + \")')\"]]\n },\n show: true\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this4 = this;\n var state,\n _this,\n contentElm,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n return _context.abrupt(\"return\");\n case 12:\n this._DialogObject = _context.sent;\n document.getElementsByTagName('head')[0].appendChild(this._element_style);\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n _context.next = 22;\n break;\n case 22:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }() //更新模型位置\n )\n }, {\n key: \"updateModel\",\n value: function updateModel(_tx, _ty, _tz) {\n var _this5 = this;\n var _rx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var _ry = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var _rz = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var s = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n if (!this.tileset.root.transform) {\n if (window.ELEMENT) {\n window.ELEMENT.Message.closeAll();\n window.ELEMENT.Message({\n message: '该模型不支持移动和旋转!',\n type: 'warning',\n duration: 1500\n });\n }\n console.warn('该模型不支持移动和旋转!');\n return;\n }\n if (!_tx && _tx !== 0 || !_ty && _ty !== 0 || !_tz && _tz !== 0) {\n return;\n }\n var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(_rx));\n var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(_ry));\n var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(_rz));\n // 平移\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(_tx, _ty, _tz));\n // 旋转\n var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n var rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n var originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.multiply(m, rotationX, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationZ, originalMatrix);\n var scale = Cesium.Matrix4.fromUniformScale(s);\n Cesium.Matrix4.multiply(originalMatrix, scale, this.entity._root.transform);\n // console.log(_tx, _ty, _tz)\n if (!this.editObj.activeAxis) {\n this.editObj.position = {\n lng: _tx,\n lat: _ty,\n alt: _tz\n };\n }\n if (!this.editObj.activeCircle) {\n this.editObj.rotate = {\n x: _rx,\n y: _ry,\n z: _rz\n };\n }\n this.editObj && this.editObj.update();\n clearTimeout(this._updateModelTimeout);\n this._updateModelTimeout = setTimeout(function () {\n clearTimeout(_this5._updateModelTimeout);\n var center = _this5.cartesian3Towgs84(_this5.entity.boundingSphere.center, _this5.sdk.viewer);\n var circle = turf.circle([center.lng, center.lat], _this5.entity.boundingSphere.radius / 1000, {\n steps: 360,\n units: 'kilometers'\n });\n var _iterator = _createForOfIteratorHelper(_this5.sdk.entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2),\n key = _step$value[0],\n entity = _step$value[1];\n if (entity.type === 'BillboardObject' && entity.heightMode == 3) {\n var pt = turf.point([entity.lng, entity.lat]);\n if (turf.booleanPointInPolygon(pt, circle)) {\n entity.updateHeight();\n }\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }, 300);\n }\n\n // flyTo() {\n // this.entity.readyPromise.then(() => {\n // console.log(this.entity)\n // let boundingSphere\n // if(!this.lng || !this.lat) {\n // boundingSphere = new Cesium.BoundingSphere(this.entity.boundingSphere)\n // }\n // else {\n // boundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(this.lng, this.lat, this.height), this.entity.boundingSphere.radius)\n // }\n // this.sdk.viewer.camera.flyToBoundingSphere(boundingSphere)\n // })\n // }\n }, {\n key: \"reset\",\n value: function reset() {\n this.editObj.destroy();\n if (!this.entity) {\n return;\n }\n this.transparency = this.oldData.transparency;\n this.name = this.oldData.name;\n this.height = this.oldData.height;\n this.lng = this.oldData.lng;\n this.lat = this.oldData.lat;\n this.roll = this.oldData.roll;\n this.heading = this.oldData.heading;\n this.pitch = this.oldData.pitch;\n this.scale = this.oldData.scale;\n this.accuracy = this.oldData.accuracy;\n this.entity.style = new Cesium.Cesium3DTileStyle({\n color: {\n \"conditions\": [[\"Boolean(${SIZE})\", \"${COLOR} * color('rgba(255,255,255)', \" + this.transparency + \")\"], [\"true\", \"color('rgba(255,255,255,\" + this.transparency + \")')\"]]\n },\n show: true\n });\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tileset);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9UaWxlc2V0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0Jhc2VTb3VyY2UvQmFzZVRpbGVzZXQvVGlsZXNldC9pbmRleC5qcz8wYTZjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMy0xMS0yMCAxNjowNVxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIzLTExLTIwIDE2OjA1XHJcbiAqL1xyXG5pbXBvcnQgQmFzZVRpbGVzZXQgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBjeV9zbGlkZXIgZnJvbSBcIi4uLy4uLy4uLy4uL0VsZW1lbnQvY3lfaHRtbF9zbGlkZXJcIjtcclxuaW1wb3J0IHsgaHRtbCwgY3NzIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi8uLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgeyBzeW5jU3BsaXREYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuXHJcbmNsYXNzIFRpbGVzZXQgZXh0ZW5kcyBCYXNlVGlsZXNldCB7XHJcbiAgLyoqXHJcbiAqIEBjb25zdHJ1Y3RvclxyXG4gKiBAZGVzY3JpcHRpb24g5Yqg6L29VGlsZXNldOaooeWei1xyXG4gKiBAcGFyYW0gc2RrIHtvYmplY3R9IHNka1xyXG4gKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDmqKHlnovlj4LmlbBcclxuICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5a+56LGhaWRcclxuICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmqKHlnovmmL7pmpBcclxuICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICogQHBhcmFtIG9wdGlvbnMudXJsIHtzdHJpbmd9IOi1hOa6kOWcsOWdgFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5hY2N1cmFjeT0xIHtudW1iZXJ9IOeyvuW6pijlgI0pXHJcbiAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uIHtvYmplY3R9IOaooeWei+S9jee9rlxyXG4gKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gKiAqL1xyXG4gIGNvbnN0cnVjdG9yKGVhcnRoLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoZWFydGgsIG9wdGlvbnMpXHJcbiAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5vbigpXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJ0aWxlc2V0XCJcclxuICB9XHJcblxyXG4gIG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZFRpbGVzZXQodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLm5hbWVcclxuICB9XHJcblxyXG4gIHNldCBuYW1lKHYpIHtcclxuICAgIHRoaXMubmV3RGF0YS5uYW1lID0gdlxyXG4gICAgdGhpcy5fZWxtcy5uYW1lICYmIHRoaXMuX2VsbXMubmFtZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIHRoaXMubmV3RGF0YS5oZWlnaHQgPSB2XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5oZWlnaHQgJiYgdGhpcy5fZWxtcy5oZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5uZXdEYXRhLmxuZywgdGhpcy5uZXdEYXRhLmxhdCwgdGhpcy5uZXdEYXRhLmhlaWdodCwgdGhpcy5uZXdEYXRhLnJvbGwsIHRoaXMubmV3RGF0YS5oZWFkaW5nLCB0aGlzLm5ld0RhdGEucGl0Y2gpXHJcbiAgfVxyXG4gIFxyXG4gIGdldCBhY2N1cmFjeSgpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEuYWNjdXJhY3lcclxuICB9XHJcblxyXG4gIHNldCBhY2N1cmFjeSh2KSB7XHJcbiAgICB0aGlzLm5ld0RhdGEuYWNjdXJhY3kgPSBOdW1iZXIodi50b0ZpeGVkKDEpKVxyXG4gICAgaWYodGhpcy5uZXdEYXRhLmFjY3VyYWN5PDAuMSkge1xyXG4gICAgICB0aGlzLm5ld0RhdGEuYWNjdXJhY3kgPSAwLjFcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHRoaXMuZW50aXR5Lm1heGltdW1TY3JlZW5TcGFjZUVycm9yID0gMzIvdGhpcy5uZXdEYXRhLmFjY3VyYWN5XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmFjY3VyYWN5ICYmIHRoaXMuX2VsbXMuYWNjdXJhY3kuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5uZXdEYXRhLmFjY3VyYWN5XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEubG5nXHJcbiAgfVxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5uZXdEYXRhLmxuZyA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB2XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMubmV3RGF0YS5sbmcsIHRoaXMubmV3RGF0YS5sYXQsIHRoaXMubmV3RGF0YS5oZWlnaHQsIHRoaXMubmV3RGF0YS5yb2xsLCB0aGlzLm5ld0RhdGEuaGVhZGluZywgdGhpcy5uZXdEYXRhLnBpdGNoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm5ld0RhdGEubGF0XHJcbiAgfVxyXG4gIHNldCBsYXQodikge1xyXG4gICAgdGhpcy5uZXdEYXRhLmxhdCA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSB2XHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMubmV3RGF0YS5sbmcsIHRoaXMubmV3RGF0YS5sYXQsIHRoaXMubmV3RGF0YS5oZWlnaHQsIHRoaXMubmV3RGF0YS5yb2xsLCB0aGlzLm5ld0RhdGEuaGVhZGluZywgdGhpcy5uZXdEYXRhLnBpdGNoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJvbGwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLnJvbGxcclxuICB9XHJcblxyXG4gIHNldCByb2xsKHYpIHtcclxuICAgIHRoaXMubmV3RGF0YS5yb2xsID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm5ld0RhdGEubG5nLCB0aGlzLm5ld0RhdGEubGF0LCB0aGlzLm5ld0RhdGEuaGVpZ2h0LCB0aGlzLm5ld0RhdGEucm9sbCwgdGhpcy5uZXdEYXRhLmhlYWRpbmcsIHRoaXMubmV3RGF0YS5waXRjaCwgdGhpcy5uZXdEYXRhLnNjYWxlKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlYWRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLmhlYWRpbmdcclxuICB9XHJcblxyXG4gIHNldCBoZWFkaW5nKHYpIHtcclxuICAgIHRoaXMubmV3RGF0YS5oZWFkaW5nID0gdlxyXG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLm5ld0RhdGEubG5nLCB0aGlzLm5ld0RhdGEubGF0LCB0aGlzLm5ld0RhdGEuaGVpZ2h0LCB0aGlzLm5ld0RhdGEucm9sbCwgdGhpcy5uZXdEYXRhLmhlYWRpbmcsIHRoaXMubmV3RGF0YS5waXRjaCwgdGhpcy5uZXdEYXRhLnNjYWxlKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBpdGNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV3RGF0YS5waXRjaFxyXG4gIH1cclxuXHJcbiAgc2V0IHBpdGNoKHYpIHtcclxuICAgIHRoaXMubmV3RGF0YS5waXRjaCA9IHZcclxuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5uZXdEYXRhLmxuZywgdGhpcy5uZXdEYXRhLmxhdCwgdGhpcy5uZXdEYXRhLmhlaWdodCwgdGhpcy5uZXdEYXRhLnJvbGwsIHRoaXMubmV3RGF0YS5oZWFkaW5nLCB0aGlzLm5ld0RhdGEucGl0Y2gsIHRoaXMubmV3RGF0YS5zY2FsZSlcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc3BhcmVuY3koKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeVxyXG4gIH1cclxuXHJcbiAgc2V0IHRyYW5zcGFyZW5jeSh2KSB7XHJcbiAgICBpZiAoIXRoaXMubmV3RGF0YSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kgPSBOdW1iZXIodilcclxuICAgIHRoaXMuX2VsbXMudHJhbnNwYXJlbmN5ICYmIHRoaXMuX2VsbXMudHJhbnNwYXJlbmN5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgICBsZXQgdHJhbnNwYXJlbmN5ID0gdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeVxyXG4gICAgLy8gaWYgKHRyYW5zcGFyZW5jeSA9PSAxKSB7XHJcbiAgICAvLyAgIHRyYW5zcGFyZW5jeSA9IDAuOTlcclxuICAgIC8vIH1cclxuICAgIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgXCJjb25kaXRpb25zXCI6IFtcclxuICAgICAgICAgIC8v5pyJc2l6ZeWxnuaAp+ihqOekuuS4uueCueS6ke+8jOmcgOimgeS4jueCueminOiJsuiejeWQiFxyXG4gICAgICAgICAgW1wiQm9vbGVhbigke1NJWkV9KVwiLCBcIiR7Q09MT1J9ICogY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUpJywgXCIgKyB0cmFuc3BhcmVuY3kgKyBcIilcIl0sXHJcbiAgICAgICAgICBbXCJ0cnVlXCIsIFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0cmFuc3BhcmVuY3kgKyBcIiknKVwiXVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIOe8lui+keahhlxyXG4gICAqIEBwYXJhbSBzdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g54q25oCBOiB0cnVl5omT5byALCBmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG5cclxuICAgIC8vIGxldCBlbG1zID0gdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWJhc2UtZGlhbG9nJylcclxuICAgIC8vIGZvciAobGV0IGkgPSBlbG1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLnJlbW92ZUNoaWxkKGVsbXNbaV0pXHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50X3N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZS50eXBlID0gJ3RleHQvY3NzJztcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScsICdZSl9zdHlsZV9kaWFsb2cnKTtcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZS5pbm5lckhUTUwgPSBjc3MoKTtcclxuXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMubmV3RGF0YSwge1xyXG4gICAgICAgIHRpdGxlOiAn5YC+5pac5qih5Z6L5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5uYW1lID0gdGhpcy5uZXdEYXRhLm5hbWVcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5oZWlnaHQgPSB0aGlzLm5ld0RhdGEuaGVpZ2h0XHJcbiAgICAgICAgICB0aGlzLm9sZERhdGEubG5nID0gdGhpcy5uZXdEYXRhLmxuZ1xyXG4gICAgICAgICAgdGhpcy5vbGREYXRhLmxhdCA9IHRoaXMubmV3RGF0YS5sYXRcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS50cmFuc3BhcmVuY3kgPSB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5XHJcbiAgICAgICAgICB0aGlzLm9sZERhdGEuc2NhbGUgPSB0aGlzLm5ld0RhdGEuc2NhbGVcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5yb2xsID0gdGhpcy5uZXdEYXRhLnJvbGxcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5oZWFkaW5nID0gdGhpcy5uZXdEYXRhLmhlYWRpbmdcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5waXRjaCA9IHRoaXMubmV3RGF0YS5waXRjaFxyXG4gICAgICAgICAgdGhpcy5vbGREYXRhLnR5cGUgPSB0aGlzLnR5cGVcclxuICAgICAgICAgIHRoaXMub2xkRGF0YS5hY2N1cmFjeSA9IHRoaXMubmV3RGF0YS5hY2N1cmFjeVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIGxldCBuZXdPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5uZXdEYXRhLmlkLFxyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5ld0RhdGEubmFtZSxcclxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm5ld0RhdGEuaGVpZ2h0LFxyXG4gICAgICAgICAgICBhY2N1cmFjeTogdGhpcy5uZXdEYXRhLmFjY3VyYWN5LFxyXG4gICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3ksXHJcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLm5ld0RhdGEuc2NhbGUsXHJcbiAgICAgICAgICAgIHVybDogdGhpcy5uZXdEYXRhLnVybCxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICAgICAgICByb2xsOiB0aGlzLm5ld0RhdGEucm9sbCxcclxuICAgICAgICAgICAgICBoZWFkaW5nOiB0aGlzLm5ld0RhdGEuaGVhZGluZyxcclxuICAgICAgICAgICAgICBwaXRjaDogdGhpcy5uZXdEYXRhLnBpdGNoXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgbG5nOiB0aGlzLm5ld0RhdGEubG5nLFxyXG4gICAgICAgICAgICAgIGxhdDogdGhpcy5uZXdEYXRhLmxhdCxcclxuICAgICAgICAgICAgICBhbHQ6IHRoaXMubmV3RGF0YS5oZWlnaHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh7IC4uLm5ld09wdGlvbnMgfSlcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub2xkRGF0YS5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3RhdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3RhdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMubmV3RGF0YS5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LnNob3cgPSBzaG93KVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByb3RhdGVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm90YXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm90YXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdGF0aW9uRWRpdGluZyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSk7XHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5pu05paw5qih5Z6L5L2N572uXHJcbiAgdXBkYXRlTW9kZWwoX3R4LCBfdHksIF90eiwgX3J4ID0gMCwgX3J5ID0gMCwgX3J6ID0gMCwgcyA9IDEpIHtcclxuICAgIGlmICghdGhpcy50aWxlc2V0LnJvb3QudHJhbnNmb3JtKSB7XHJcbiAgICAgIGlmICh3aW5kb3cuRUxFTUVOVCkge1xyXG4gICAgICAgIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2UuY2xvc2VBbGwoKTtcclxuICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgIG1lc3NhZ2U6ICfor6XmqKHlnovkuI3mlK/mjIHnp7vliqjlkozml4vovazvvIEnLFxyXG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLndhcm4oJ+ivpeaooeWei+S4jeaUr+aMgeenu+WKqOWSjOaXi+i9rO+8gScpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKCghX3R4ICYmIF90eCE9PTApIHx8ICghX3R5ICYmIF90eSE9PTApIHx8ICghX3R6ICYmIF90eiE9PTApKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF9yeClcclxuICAgIClcclxuICAgIGxldCBteSA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblkoXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhfcnkpXHJcbiAgICApXHJcbiAgICBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3J6KVxyXG4gICAgKVxyXG4gICAgLy8g5bmz56e7XHJcbiAgICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdHgsIF90eSwgX3R6KSlcclxuICAgIC8vIOaXi+i9rFxyXG4gICAgbGV0IHJvdGF0aW9uWCA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG14KVxyXG4gICAgbGV0IHJvdGF0aW9uWSA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG15KVxyXG4gICAgbGV0IHJvdGF0aW9uWiA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG16KVxyXG4gICAgbGV0IG9yaWdpbmFsTWF0cml4ID0gbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG0sIHJvdGF0aW9uWCwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25ZLCBvcmlnaW5hbE1hdHJpeClcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgY29uc3Qgc2NhbGUgPSBDZXNpdW0uTWF0cml4NC5mcm9tVW5pZm9ybVNjYWxlKHMpO1xyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkob3JpZ2luYWxNYXRyaXgsIHNjYWxlLCB0aGlzLmVudGl0eS5fcm9vdC50cmFuc2Zvcm0pXHJcbiAgICAvLyBjb25zb2xlLmxvZyhfdHgsIF90eSwgX3R6KVxyXG4gICAgaWYgKCF0aGlzLmVkaXRPYmouYWN0aXZlQXhpcykge1xyXG4gICAgICB0aGlzLmVkaXRPYmoucG9zaXRpb24gPSB7IGxuZzogX3R4LCBsYXQ6IF90eSwgYWx0OiBfdHogfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmVkaXRPYmouYWN0aXZlQ2lyY2xlKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iai5yb3RhdGUgPSB7IHg6IF9yeCwgeTogX3J5LCB6OiBfcnogfVxyXG4gICAgfVxyXG4gICAgdGhpcy5lZGl0T2JqICYmIHRoaXMuZWRpdE9iai51cGRhdGUoKVxyXG5cclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVNb2RlbFRpbWVvdXQpXHJcbiAgICB0aGlzLl91cGRhdGVNb2RlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZU1vZGVsVGltZW91dClcclxuICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUuY2VudGVyLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIGxldCBjaXJjbGUgPSB0dXJmLmNpcmNsZShbY2VudGVyLmxuZywgY2VudGVyLmxhdF0sIHRoaXMuZW50aXR5LmJvdW5kaW5nU3BoZXJlLnJhZGl1cyAvIDEwMDAsIHsgc3RlcHM6IDM2MCwgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgZm9yIChsZXQgW2tleSwgZW50aXR5XSBvZiB0aGlzLnNkay5lbnRpdHlNYXApIHtcclxuICAgICAgICBpZiAoZW50aXR5LnR5cGUgPT09ICdCaWxsYm9hcmRPYmplY3QnICYmIGVudGl0eS5oZWlnaHRNb2RlID09IDMpIHtcclxuICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW2VudGl0eS5sbmcsIGVudGl0eS5sYXRdKTtcclxuICAgICAgICAgIGlmICh0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgY2lyY2xlKSkge1xyXG4gICAgICAgICAgICBlbnRpdHkudXBkYXRlSGVpZ2h0KClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5LmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGVudGl0eS5sYWJlbC5zaG93ID0gZW50aXR5LmxhYmVsLnNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBmbHlUbygpIHtcclxuICAvLyAgIHRoaXMuZW50aXR5LnJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAvLyAgICAgY29uc29sZS5sb2codGhpcy5lbnRpdHkpXHJcbiAgLy8gICAgIGxldCBib3VuZGluZ1NwaGVyZVxyXG4gIC8vICAgICBpZighdGhpcy5sbmcgfHwgIXRoaXMubGF0KSB7XHJcbiAgLy8gICAgICAgYm91bmRpbmdTcGhlcmUgPSBuZXcgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlKHRoaXMuZW50aXR5LmJvdW5kaW5nU3BoZXJlKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGVsc2Uge1xyXG4gIC8vICAgICAgIGJvdW5kaW5nU3BoZXJlID0gbmV3IENlc2l1bS5Cb3VuZGluZ1NwaGVyZShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLmxuZywgdGhpcy5sYXQsIHRoaXMuaGVpZ2h0KSwgdGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUucmFkaXVzKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShib3VuZGluZ1NwaGVyZSlcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuZWRpdE9iai5kZXN0cm95KClcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zcGFyZW5jeSA9IHRoaXMub2xkRGF0YS50cmFuc3BhcmVuY3lcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub2xkRGF0YS5uYW1lXHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMub2xkRGF0YS5oZWlnaHRcclxuICAgIHRoaXMubG5nID0gdGhpcy5vbGREYXRhLmxuZ1xyXG4gICAgdGhpcy5sYXQgPSB0aGlzLm9sZERhdGEubGF0XHJcbiAgICB0aGlzLnJvbGwgPSB0aGlzLm9sZERhdGEucm9sbFxyXG4gICAgdGhpcy5oZWFkaW5nID0gdGhpcy5vbGREYXRhLmhlYWRpbmdcclxuICAgIHRoaXMucGl0Y2ggPSB0aGlzLm9sZERhdGEucGl0Y2hcclxuICAgIHRoaXMuc2NhbGUgPSB0aGlzLm9sZERhdGEuc2NhbGVcclxuICAgIHRoaXMuYWNjdXJhY3kgPSB0aGlzLm9sZERhdGEuYWNjdXJhY3lcclxuXHJcbiAgICB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICBjb2xvcjoge1xyXG4gICAgICAgIFwiY29uZGl0aW9uc1wiOiBbXHJcbiAgICAgICAgICBbXCJCb29sZWFuKCR7U0laRX0pXCIsIFwiJHtDT0xPUn0gKiBjb2xvcigncmdiYSgyNTUsMjU1LDI1NSknLCBcIiArIHRoaXMudHJhbnNwYXJlbmN5ICsgXCIpXCJdLFxyXG4gICAgICAgICAgW1widHJ1ZVwiLCBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy50cmFuc3BhcmVuY3kgKyBcIiknKVwiXVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgVGlsZXNldFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUJBO0FBNEVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBbkhBO0FBQUE7QUFBQTtBQUFBO0FBcUhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/BaseTileset/index.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/BaseSource/BaseTileset/index.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/BaseSource/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_7___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 17:54\r\n * @description:index\r\n * @update: 2023-11-20 17:54\r\n */\n\n\n\n\n\n\nvar _updateModelTimeout = /*#__PURE__*/new WeakMap();\nvar BaseTileset = /*#__PURE__*/function (_BaseSource) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 模型\r\n * @param options {object}\r\n * @param options.id{string} id\r\n * @param options.name{string} 名称\r\n * @param options.url{string} 模型地址\r\n * @param options.lng{number} 经度\r\n * @param options.lat{number} 纬度\r\n * @param options.height=0{number} 高度\r\n * @param options.scale=1{number} 模型比例\r\n * @param options.roll=0{number} 模型x旋转\r\n * @param options.heading=0{number} 模型z轴旋转角度\r\n * @param options.pitch=0{number} 模型y轴旋转角度\r\n * */\n function BaseTileset(sdk, options) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, BaseTileset);\n _this = _callSuper(this, BaseTileset, [sdk, options]);\n _classPrivateFieldInitSpec(_this, _updateModelTimeout, void 0);\n _this._loadEvent = void 0;\n _this._loaded = false;\n _this.setDefaultValue();\n _this.watchs = [];\n _this.positionCallBack = null;\n _this.rotationCallback = null;\n _this.onClickCallback = null;\n _this._DialogObject = null;\n _this._element_style = null;\n _this.options.accuracy = options.accuracy ? Number(options.accuracy.toFixed(1)) : 1;\n _this.options.orientation = _this.options.orientation || {};\n _this.options.position = _this.options.position || {};\n _this.oldData = {\n id: _this.options.id,\n transparency: _this.options.transparency || _this.options.transparency === 0 ? _this.options.transparency : 1,\n name: _this.options.name,\n accuracy: _this.options.accuracy,\n url: _this.options.url,\n height: _this.options.position.alt || 0,\n lng: _this.options.position.lng,\n lat: _this.options.position.lat,\n scale: _this.options.scale || _this.options.scale === 0 ? _this.options.scale : 1,\n roll: _this.options.orientation.roll || 0,\n heading: _this.options.orientation.heading || 0,\n pitch: _this.options.orientation.pitch || 0\n };\n _this.newData = {\n id: _this.options.id,\n transparency: _this.options.transparency || _this.options.transparency === 0 ? _this.options.transparency : 1,\n name: _this.options.name,\n accuracy: _this.options.accuracy,\n url: _this.options.url,\n height: _this.options.position.alt || 0,\n lng: _this.options.position.lng,\n lat: _this.options.position.lat,\n scale: _this.options.scale || _this.options.scale === 0 ? _this.options.scale : 1,\n roll: _this.options.orientation.roll || 0,\n heading: _this.options.orientation.heading || 0,\n pitch: _this.options.orientation.pitch || 0\n };\n _this.tileset = undefined;\n _this.editObj = new _Controller_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.sdk);\n _this.editObj.controllerCallBack = _this.rotationEditingCallBack;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(BaseTileset, _BaseSource);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(BaseTileset, [{\n key: \"loadSceneTree\",\n value: function loadSceneTree() {}\n }, {\n key: \"loadTileset\",\n value: function () {\n var _loadTileset = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(options) {\n var _this2 = this;\n var object, url, o, response, params, tileset, _initData, cartographic, m, scale, _cartographic;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n object = _objectSpread({}, options);\n url = \"\";\n if (object.url.startsWith(\"http\")) url = object.url;else {\n //说明是本地的json,在磁盘中存在的\n if (object.url.includes(\":\")) {\n url = object.url;\n } else {\n if (this.options.host) {\n o = new URL(object.url, this.options.host);\n url = o.href;\n } else url = object.url;\n }\n }\n _context.next = 5;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 5:\n response = _context.sent;\n if (!(response.status === 200)) {\n _context.next = 10;\n break;\n }\n _context.next = 9;\n return response.json();\n case 9:\n this.tileset = _context.sent;\n case 10:\n params = {\n show: this.options.show,\n skipLevelOfDetail: true,\n baseScreenSpaceError: 1024,\n maximumScreenSpaceError: 32,\n // 数值加大,能让最终成像变模糊\n skipScreenSpaceErrorFactor: 16,\n skipLevels: 1,\n immediatelyLoadDesiredLevelOfDetail: false,\n loadSiblings: true,\n // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋\n cullWithChildrenBounds: true,\n cullRequestsWhileMoving: true,\n cullRequestsWhileMovingMultiplier: 10,\n // 值越小能够更快的剔除\n preloadWhenHidden: false,\n preferLeaves: true,\n maximumCacheOverflowBytes: 128,\n // 内存分配变小有利于倾斜摄影数据回收,提升性能体验\n progressiveResolutionHeightFraction: 0.5,\n // 数值偏于0能够让初始加载变得模糊\n dynamicScreenSpaceErrorDensity: 0.1,\n // 数值加大,能让周边加载变快\n dynamicScreenSpaceErrorFactor: 1,\n dynamicScreenSpaceError: true,\n // 有了这个后,会在真正的全屏加载完之后才清晰化房屋\n backFaceCulling: false // 开启后,会剔除掉模型的背面,提升性能体验\n };\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context.next = 19;\n break;\n }\n _context.next = 14;\n return Cesium.Cesium3DTileset.fromUrl(url, params);\n case 14:\n tileset = _context.sent;\n this.entity = tileset;\n this.entity.imageBasedLighting.luminanceAtZenith = 0.1;\n _context.next = 25;\n break;\n case 19:\n params.url = url;\n tileset = new Cesium.Cesium3DTileset(params);\n _context.next = 23;\n return tileset.readyPromise;\n case 23:\n this.entity = _context.sent;\n this.entity.imageBasedLighting.luminanceAtZenith = 0.1;\n case 25:\n _context.next = 27;\n return this.loadSceneTree(url);\n case 27:\n _initData = function initData(tile) {\n if (tile._contents) {\n for (var i = 0; i < tile._contents.length; i++) {\n _initData(tile._contents[i]);\n }\n } else {\n for (var _i = 0; _i < tile.featuresLength; _i++) {\n var feature = tile.getFeature(_i);\n var file = feature.content.url;\n var id = feature.getProperty('id');\n if (_this2.features.has(id)) {\n if (_this2.features.get(id).features) {\n if (_this2.features.get(id).features[file]) {\n // feature = this.features.get(id).features[feature.featureId]\n if (_this2.features.get(id).features[file].customColor) {\n feature.color = _this2.features.get(id).features[file].customColor;\n feature.customColor = _this2.features.get(id).features[file].customColor;\n }\n if (_this2.features.get(id).features[file].customAlpha) {\n var color = feature.color;\n feature.color = Cesium.Color.fromCssColorString(\"rgba(\".concat(Cesium.Color.floatToByte(color.red), \",\").concat(Cesium.Color.floatToByte(color.green), \",\").concat(Cesium.Color.floatToByte(color.blue), \",\").concat(_this2.features.get(id).features[file].customAlpha, \")\"));\n feature.customAlpha = _this2.features.get(id).features[file].customAlpha;\n }\n if (_this2.features.get(id).features[file].customShow) {\n feature.show = _this2.features.get(id).features[file].customShow;\n feature.customShow = _this2.features.get(id).features[file].customShow;\n }\n }\n _this2.features.get(id).features[file] = feature;\n } else {\n var _object = {};\n if (_this2.features.get(id).customColor) {\n feature.color = _this2.features.get(id).customColor;\n feature.customColor = _this2.features.get(id).customColor;\n }\n if (_this2.features.get(id).customAlpha) {\n var _color = feature.color;\n feature.color = Cesium.Color.fromCssColorString(\"rgba(\".concat(Cesium.Color.floatToByte(_color.red), \",\").concat(Cesium.Color.floatToByte(_color.green), \",\").concat(Cesium.Color.floatToByte(_color.blue), \",\").concat(_this2.features.get(id).customAlpha, \")\"));\n feature.customAlpha = _this2.features.get(id).customAlpha;\n }\n if (_this2.features.get(id).customShow) {\n feature.show = _this2.features.get(id).customShow;\n feature.customShow = _this2.features.get(id).customShow;\n }\n _object[file] = feature;\n _this2.features.get(id).features = _object;\n }\n } else {\n var _object2 = {};\n _object2[file] = feature;\n _this2.features.set(id, {\n features: _object2\n });\n }\n if (!feature.customColor) {\n feature.customColor = Cesium.Color.fromCssColorString('#ffffff');\n }\n }\n }\n\n // for (let i = 0; i < tile._content.featuresLength; i++) {\n // let feature = tile._content.getFeature(i)\n // feature.show = false\n // }\n // if (tile._content._contents) {\n // for (let i = 0; i < tile._content._contents.length; i++) {\n // for (let m = 0; m < tile._content._contents[i].featuresLength; m++) {\n // let feature = tile._content._contents[i].getFeature(m)\n // feature.show = false\n // }\n // }\n // }\n };\n if (!(!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene)) {\n _context.next = 30;\n break;\n }\n return _context.abrupt(\"return\");\n case 30:\n tileset.tileLoad.addEventListener(function (tile) {\n // this.test()\n _initData(tile._content);\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, _this2));\n _classPrivateFieldSet(_updateModelTimeout, _this2, setTimeout(function () {\n clearTimeout(_classPrivateFieldGet(_updateModelTimeout, _this2));\n var center = _this2.cartesian3Towgs84(tileset.boundingSphere.center, _this2.sdk.viewer);\n var circle = turf.circle([center.lng, center.lat], tileset.boundingSphere.radius / 1000, {\n steps: 360,\n units: 'kilometers'\n });\n var _iterator = _createForOfIteratorHelper(_this2.sdk.entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2),\n key = _step$value[0],\n entity = _step$value[1];\n if (entity.type === 'BillboardObject' && entity.heightMode == 3) {\n var pt = turf.point([entity.lng, entity.lat]);\n if (turf.booleanPointInPolygon(pt, circle)) {\n entity.updateHeight();\n }\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }, 500));\n\n // if (tile._content._contents) {\n // for (let i = 0; i < tile._content._contents.length; i++) {\n // for (let m = 0; m < tile._content._contents[i].featuresLength; m++) {\n // let feature = tile._content._contents[i].getFeature(m)\n // console.log(feature)\n // feature.show = false\n // }\n // }\n // }\n // for (let i = 0; i < tile._content.featuresLength; i++) {\n // let feature = tile._content.getFeature(i)\n // let file = feature.content.url\n // let id = feature.getProperty('id')\n // if (this.features.has(id)) {\n // if (this.features.get(id).features) {\n // if (this.features.get(id).features[file]) {\n // // feature = this.features.get(id).features[feature.featureId]\n // if (this.features.get(id).features[file].customColor) {\n // feature.color = this.features.get(id).features[file].customColor\n // feature.customColor = this.features.get(id).features[file].customColor\n // }\n // if (this.features.get(id).features[file].customAlpha) {\n // let color = feature.color\n // feature.color = Cesium.Color.fromCssColorString(`rgba(${Cesium.Color.floatToByte(color.red)},${Cesium.Color.floatToByte(color.green)},${Cesium.Color.floatToByte(color.blue)},${this.features.get(id).features[file].customAlpha})`)\n // feature.customAlpha = this.features.get(id).features[file].customAlpha\n // }\n // if (this.features.get(id).features[file].customShow) {\n // feature.show = this.features.get(id).features[file].customShow\n // feature.customShow = this.features.get(id).features[file].customShow\n // }\n\n // }\n // this.features.get(id).features[file] = feature\n // }\n // else {\n // let object = {}\n // object[file] = feature\n // this.features.get(id).features = object\n // }\n // }\n // else {\n // let object = {}\n // object[file] = feature\n // this.features.set(id, { features: object })\n // }\n // if (!feature.customColor) {\n // feature.customColor = Cesium.Color.fromCssColorString('#ffffff')\n // }\n // }\n });\n // // console.log(tileset)\n // if (this.type === 'bim') {\n // const setTilesetStyle = (f) => {\n // if (tileset.style) {\n // // tileset.style = new Cesium.Cesium3DTileStyle({\n // // color: {\n // // conditions: [\n // // ['${name} ===\"对象074\" ', 'color(\"red\")'], //符合条件项\n // // ['true', 'rgba(255,255,255,1)'] //其他项\n // // ]\n // // }\n // // })\n // // tileset.tileLoad.removeEventListener(setTilesetStyle)\n // }\n // console.log(f)\n // }\n // tileset.tileLoad.addEventListener(setTilesetStyle)\n // }\n\n this.entity._root.originalTransform = _objectSpread({}, this.entity._root.transform);\n this.entity.id = this.options.id || this.randomString();\n this.entity.type = this.type;\n // this.editObj = new EditB3DM(this.sdk, this.entity)\n\n this.sdk.viewer.scene.primitives.add(tileset);\n if (this.options.position && JSON.stringify(this.options.position) != \"{}\" && (this.options.position.lng || this.options.position.lng === 0) && (this.options.position.lat || this.options.position.lat === 0)) {\n this.options.position.alt == this.options.position.alt || 0;\n cartographic = Cesium.Cartographic.fromCartesian(this.entity.boundingSphere.center);\n if (this.tileset.root.transform) {\n cartographic = Cesium.Cartographic.fromCartesian({\n x: this.tileset.root.transform[12],\n y: this.tileset.root.transform[13],\n z: this.tileset.root.transform[14]\n });\n }\n this.entity.original = {\n lng: Cesium.Math.toDegrees(cartographic.longitude),\n // 经度\n lat: Cesium.Math.toDegrees(cartographic.latitude),\n // 纬度\n height: cartographic.height\n };\n m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt));\n scale = Cesium.Matrix4.fromUniformScale(this.oldData.scale);\n if (this.tileset.root.transform) {\n Cesium.Matrix4.multiply(m, scale, this.entity._root.transform);\n }\n this.lng = this.oldData.lng;\n this.lat = this.oldData.lat;\n this.height = this.oldData.height;\n } else {\n this.options.position = {};\n _cartographic = Cesium.Cartographic.fromCartesian(this.entity.boundingSphere.center);\n if (this.tileset.root.transform) {\n _cartographic = Cesium.Cartographic.fromCartesian({\n x: this.tileset.root.transform[12],\n y: this.tileset.root.transform[13],\n z: this.tileset.root.transform[14]\n });\n }\n this.entity.original = {\n lng: Cesium.Math.toDegrees(_cartographic.longitude),\n lat: this.oldData.lat = Cesium.Math.toDegrees(_cartographic.latitude),\n height: _cartographic.height\n };\n this.lng = this.oldData.lng = Cesium.Math.toDegrees(_cartographic.longitude); // 经度\n this.lat = this.oldData.lat = Cesium.Math.toDegrees(_cartographic.latitude); // 纬度\n this.height = this.oldData.height = _cartographic.height; // 高度\n }\n this.scale = this.oldData.scale;\n this.roll = this.oldData.roll;\n this.heading = this.oldData.heading;\n this.pitch = this.oldData.pitch;\n this.transparency = this.oldData.transparency;\n this.loaded = true;\n this._loaded = true;\n if (this._loadEvent) {\n this._loadEvent(this.entity);\n }\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(this.sdk, this.options.id);\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_12__[\"regMoveCallback\"])(this.entity.id, this.mouseMoveCB, this);\n\n // this.entity = this.sdk.viewer.scene.primitives.add(tileset);\n // if (this.options.position && JSON.stringify(this.options.position) != \"{}\") {\n // let m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt))\n // const scale = Cesium.Matrix4.fromUniformScale(this.oldData.scale);\n // Cesium.Matrix4.multiply(m, scale, this.entity._root.transform)\n // }\n // else {\n // this.options.position = {}\n // }\n // this.lng = this.oldData.lng\n // this.lat = this.oldData.lat\n // this.height = this.oldData.height\n // this.scale = this.oldData.scale\n // this.roll = this.oldData.roll\n // this.heading = this.oldData.heading\n // this.pitch = this.oldData.pitch\n // this.transparency = this.oldData.transparency\n\n // regMoveCallback(this.entity.id, this.mouseMoveCB, this)\n\n // this.editObj = new EditB3DM(this.sdk, this.entity)\n // this.editObj.transformCallBack = this.rotationEditingCallBack\n // tileset.readyPromise.then(() => {\n // this.entity = this.sdk.viewer.scene.primitives.add(tileset);\n\n // })\n // let x = this.sdk.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({\n // url: url\n // }));\n // setTimeout(() => {\n // console.log(x)\n // this.sdk.viewer.flyTo(this.entity)\n // }, 3000);\n case 46:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function loadTileset(_x) {\n return _loadTileset.apply(this, arguments);\n }\n return loadTileset;\n }() // test() {\n // let heightstyle = new Cesium.Cesium3DTileStyle({\n // color: {\n // conditions: [\n // [\"Number(${height})>=300\", \"rgba(45,0,75,0.5)\"],\n // [\"Number(${height})>=200\", \"rgb(102,71,151)\"],\n // [\"Number(${height})>=100\", \"rgb(170,162,204)\"],\n // [\"Number(${height})>=50\", \"rgb(224,226,238)\"],\n // [\"Number(${height})>=25\", \"rgb(252,230, 200)\"],\n // [\"Number(${height})>=10\", \"rgb(248,176,87)\"],\n // [\"Number(${height})>=5\", \"rgb(198, 106,11)\"],\n // [\"isNaN(Number(${height}))\", \"rgb(255, 255, 255)\"],\n // [\"true\", \"rgb(127,59,8)\"]\n // ]\n // }\n // });\n // this.entity.style = heightstyle;\n // }\n }, {\n key: \"remove\",\n value: function remove() {\n _superPropGet(BaseTileset, \"remove\", this, 3)([]);\n this.editObj.destroy();\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n _superPropGet(BaseTileset, \"flyTo\", this, 3)([]);\n }\n }, {\n key: \"on\",\n value: function on() {\n return this.loadTileset(this.options);\n }\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(BaseTileset, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getHost\"])();\n this.options.url = this.options.url || \"\";\n }\n }, {\n key: \"position\",\n get: function get() {\n var cartographic = Cesium.Cartographic.fromCartesian(this.entity.boundingSphere.center);\n if (this.tileset.root.transform) {\n cartographic = Cesium.Cartographic.fromCartesian({\n x: this.tileset.root.transform[12],\n y: this.tileset.root.transform[13],\n z: this.tileset.root.transform[14]\n });\n }\n var lng = Cesium.Math.toDegrees(cartographic.longitude + 0.00000000663814);\n var lat = Cesium.Math.toDegrees(cartographic.latitude + 0.00000025137835);\n if (this.newData.lng && this.newData.lat && this.newData.height) {\n return {\n lng: this.newData.lng,\n lat: this.newData.lat,\n height: this.newData.height\n };\n } else {\n return {\n lng: lng,\n lat: lat,\n height: cartographic.height - 2.19104611043234\n };\n }\n },\n set: function set(p) {}\n\n /**\r\n * @desc 打开模型旋转功能\r\n * @param status {boolean}\r\n * @methodOf Source\r\n * */\n }, {\n key: \"rotationEditing\",\n get:\n /**\r\n * @desc 获取模型旋转状态\r\n * @method rotationEditing\r\n * @return boolean\r\n * @methodOf Source\r\n * */\n function get() {\n if (this.editObj.getActiveState() === 'rtation') {\n return true;\n }\n return false;\n }\n\n /**@desc 打开平移模型功能\r\n *\r\n * @memberOf Source\r\n *@param status {boolean}\r\n *\r\n * */,\n set: function set(status) {\n if (!this.tileset.root.transform) {\n console.warn('该模型不支持移动和旋转!');\n return;\n }\n if (status) {\n this.editObj.position = {\n lng: this.newData.lng,\n lat: this.newData.lat,\n alt: this.newData.height\n };\n this.editObj.update();\n this.editObj.editRtation();\n } else {\n this.editObj.destroy();\n }\n }\n }, {\n key: \"positionEditing\",\n get: function get() {\n if (this.editObj.getActiveState() === 'translational') {\n return true;\n }\n return false;\n },\n set: function set(status) {\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n if (!this.tileset.root.transform) {\n console.warn('该模型不支持移动和旋转!');\n return;\n }\n if (status) {\n this.editObj.position = {\n lng: this.newData.lng,\n lat: this.newData.lat,\n alt: this.newData.height\n };\n this.editObj.update();\n this.editObj.editTranslational();\n } else {\n this.editObj.destroy();\n this._positionEditingCallback = null;\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n\n //旋转时,坐标信息变化的回调\n }, {\n key: \"rotationEditingCallBack\",\n get: function get() {\n var _this3 = this;\n return function (params, state) {\n _this3.lng = params.position.lng;\n _this3.lat = params.position.lat;\n _this3.height = params.position.alt;\n _this3.roll = params.rotate.x;\n _this3.heading = params.rotate.y;\n _this3.pitch = params.rotate.z;\n if (_this3._positionEditingCallback) {\n _this3._positionEditingCallback();\n }\n // this._rotationEditingCallBack && this._rotationEditingCallBack(this.editObj._params)\n };\n },\n set: function set(callback) {\n this._rotationEditingCallBack = callback;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n\n // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(state) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function edit(_x2) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n var _this4 = this;\n if (typeof v === \"boolean\") {\n this.options.show = v;\n this.entity && (this.entity.show = v);\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n if (this.options.label && this.options.label.show && this.label) {\n this.label.show = v;\n }\n setTimeout(function () {\n var center = _this4.cartesian3Towgs84(_this4.entity.boundingSphere.center, _this4.sdk.viewer);\n var circle = turf.circle([center.lng, center.lat], _this4.entity.boundingSphere.radius / 1000, {\n steps: 360,\n units: 'kilometers'\n });\n var _iterator2 = _createForOfIteratorHelper(_this4.sdk.entityMap),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step2.value, 2),\n key = _step2$value[0],\n entity = _step2$value[1];\n if (entity.type === 'BillboardObject' && entity.heightMode == 3) {\n var pt = turf.point([entity.lng, entity.lat]);\n if (turf.booleanPointInPolygon(pt, circle)) {\n entity.updateHeight();\n }\n } else {\n if (entity.label) {\n entity.label.show = entity.label.show;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(_this4.sdk, _this4.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(_this4.sdk, _this4.options.id);\n }, 300);\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"load\",\n value: function load(callback) {\n if (this._loaded) {\n callback();\n } else {\n this._loadEvent = callback;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseTileset);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9CYXNlVGlsZXNldC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXNlU291cmNlL0Jhc2VUaWxlc2V0L2luZGV4LmpzP2VjMTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTExLTIwIDE3OjU0XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMTEtMjAgMTc6NTRcclxuICovXHJcbmltcG9ydCB7IGdldEhvc3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vb25cIjtcclxuaW1wb3J0IEJhc2VTb3VyY2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHJlZ0xlZnRDbGlja0NhbGxiYWNrLCByZWdSaWdodENsaWNrQ2FsbGJhY2ssIHJlZ01vdmVDYWxsYmFjayB9IGZyb20gXCIuLi8uLi8uLi8uLi9HbG9iYWwvQ2xpY2tDYWxsYmFja1wiO1xyXG5pbXBvcnQgQ29udHJvbGxlciBmcm9tIFwiLi4vLi4vLi4vLi4vQ29udHJvbGxlci9pbmRleFwiO1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5cclxuY2xhc3MgQmFzZVRpbGVzZXQgZXh0ZW5kcyBCYXNlU291cmNlIHtcclxuICAjdXBkYXRlTW9kZWxUaW1lb3V0O1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQGRlc2NyaXB0aW9uIOaooeWei1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWR7c3RyaW5nfSBpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWV7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy51cmx7c3RyaW5nfSDmqKHlnovlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sbmd7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYXR7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQ9MHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNjYWxlPTF7bnVtYmVyfSDmqKHlnovmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yb2xsPTB7bnVtYmVyfSDmqKHlnot45peL6L2sXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVhZGluZz0we251bWJlcn0g5qih5Z6Leui9tOaXi+i9rOinkuW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBpdGNoPTB7bnVtYmVyfSDmqKHlnot56L205peL6L2s6KeS5bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMpIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLl9sb2FkRXZlbnQgPSB2b2lkIDBcclxuICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnNldERlZmF1bHRWYWx1ZSgpXHJcbiAgICB0aGlzLndhdGNocyA9IFtdXHJcbiAgICB0aGlzLnBvc2l0aW9uQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnJvdGF0aW9uQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLm9uQ2xpY2tDYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcbiAgICB0aGlzLm9wdGlvbnMuYWNjdXJhY3kgPSBvcHRpb25zLmFjY3VyYWN5ID8gTnVtYmVyKG9wdGlvbnMuYWNjdXJhY3kudG9GaXhlZCgxKSkgOiAxXHJcbiAgICB0aGlzLm9wdGlvbnMub3JpZW50YXRpb24gPSB0aGlzLm9wdGlvbnMub3JpZW50YXRpb24gfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbiB8fCB7fVxyXG4gICAgdGhpcy5vbGREYXRhID0ge1xyXG4gICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICB0cmFuc3BhcmVuY3k6ICh0aGlzLm9wdGlvbnMudHJhbnNwYXJlbmN5IHx8IHRoaXMub3B0aW9ucy50cmFuc3BhcmVuY3kgPT09IDApID8gdGhpcy5vcHRpb25zLnRyYW5zcGFyZW5jeSA6IDEsXHJcbiAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBhY2N1cmFjeTogdGhpcy5vcHRpb25zLmFjY3VyYWN5LFxyXG4gICAgICB1cmw6IHRoaXMub3B0aW9ucy51cmwsXHJcbiAgICAgIGhlaWdodDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCB8fCAwLFxyXG4gICAgICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgc2NhbGU6ICh0aGlzLm9wdGlvbnMuc2NhbGUgfHwgdGhpcy5vcHRpb25zLnNjYWxlID09PSAwKSA/IHRoaXMub3B0aW9ucy5zY2FsZSA6IDEsXHJcbiAgICAgIHJvbGw6IHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5yb2xsIHx8IDAsXHJcbiAgICAgIGhlYWRpbmc6IHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAsXHJcbiAgICAgIHBpdGNoOiB0aGlzLm9wdGlvbnMub3JpZW50YXRpb24ucGl0Y2ggfHwgMFxyXG4gICAgfVxyXG4gICAgdGhpcy5uZXdEYXRhID0ge1xyXG4gICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICB0cmFuc3BhcmVuY3k6ICh0aGlzLm9wdGlvbnMudHJhbnNwYXJlbmN5IHx8IHRoaXMub3B0aW9ucy50cmFuc3BhcmVuY3kgPT09IDApID8gdGhpcy5vcHRpb25zLnRyYW5zcGFyZW5jeSA6IDEsXHJcbiAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBhY2N1cmFjeTogdGhpcy5vcHRpb25zLmFjY3VyYWN5LFxyXG4gICAgICB1cmw6IHRoaXMub3B0aW9ucy51cmwsXHJcbiAgICAgIGhlaWdodDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCB8fCAwLFxyXG4gICAgICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgc2NhbGU6ICh0aGlzLm9wdGlvbnMuc2NhbGUgfHwgdGhpcy5vcHRpb25zLnNjYWxlID09PSAwKSA/IHRoaXMub3B0aW9ucy5zY2FsZSA6IDEsXHJcbiAgICAgIHJvbGw6IHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5yb2xsIHx8IDAsXHJcbiAgICAgIGhlYWRpbmc6IHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAsXHJcbiAgICAgIHBpdGNoOiB0aGlzLm9wdGlvbnMub3JpZW50YXRpb24ucGl0Y2ggfHwgMFxyXG4gICAgfVxyXG4gICAgdGhpcy50aWxlc2V0ID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmVkaXRPYmogPSBuZXcgQ29udHJvbGxlcih0aGlzLnNkaylcclxuICAgIHRoaXMuZWRpdE9iai5jb250cm9sbGVyQ2FsbEJhY2sgPSB0aGlzLnJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBsb2FkU2NlbmVUcmVlKCkge1xyXG5cclxuICB9XHJcblxyXG5cclxuICBhc3luYyBsb2FkVGlsZXNldChvcHRpb25zKSB7XHJcbiAgICBsZXQgb2JqZWN0ID0geyAuLi5vcHRpb25zIH1cclxuICAgIGxldCB1cmwgPSBcIlwiXHJcbiAgICBpZiAob2JqZWN0LnVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSlcclxuICAgICAgdXJsID0gb2JqZWN0LnVybFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8v6K+05piO5piv5pys5Zyw55qEanNvbu+8jOWcqOejgeebmOS4reWtmOWcqOeahFxyXG4gICAgICBpZiAob2JqZWN0LnVybC5pbmNsdWRlcyhcIjpcIikpIHtcclxuICAgICAgICB1cmwgPSBvYmplY3QudXJsXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0KSB7XHJcbiAgICAgICAgICBsZXQgbyA9IG5ldyBVUkwob2JqZWN0LnVybCwgdGhpcy5vcHRpb25zLmhvc3QpXHJcbiAgICAgICAgICB1cmwgPSBvLmhyZWZcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIHVybCA9IG9iamVjdC51cmxcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICB0aGlzLnRpbGVzZXQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcclxuICAgIH1cclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIHNob3c6IHRoaXMub3B0aW9ucy5zaG93LFxyXG4gICAgICBza2lwTGV2ZWxPZkRldGFpbDogdHJ1ZSxcclxuICAgICAgYmFzZVNjcmVlblNwYWNlRXJyb3I6IDEwMjQsXHJcbiAgICAgIG1heGltdW1TY3JlZW5TcGFjZUVycm9yOiAzMiwgLy8g5pWw5YC85Yqg5aSn77yM6IO96K6p5pyA57uI5oiQ5YOP5Y+Y5qih57OKXHJcbiAgICAgIHNraXBTY3JlZW5TcGFjZUVycm9yRmFjdG9yOiAxNixcclxuICAgICAgc2tpcExldmVsczogMSxcclxuICAgICAgaW1tZWRpYXRlbHlMb2FkRGVzaXJlZExldmVsT2ZEZXRhaWw6IGZhbHNlLFxyXG4gICAgICBsb2FkU2libGluZ3M6IHRydWUsIC8vIOWmguaenOS4unRydWXliJnkuI3kvJrlnKjlt7LliqDovb3lrozmpoLlhrXmiL/lsYvlkI7vvIzoh6rliqjku47kuK3lv4PlvIDlp4votoXmuIXljJbmiL/lsYtcclxuICAgICAgY3VsbFdpdGhDaGlsZHJlbkJvdW5kczogdHJ1ZSxcclxuICAgICAgY3VsbFJlcXVlc3RzV2hpbGVNb3Zpbmc6IHRydWUsXHJcbiAgICAgIGN1bGxSZXF1ZXN0c1doaWxlTW92aW5nTXVsdGlwbGllcjogMTAsIC8vIOWAvOi2iuWwj+iDveWkn+abtOW/q+eahOWJlOmZpFxyXG4gICAgICBwcmVsb2FkV2hlbkhpZGRlbjogZmFsc2UsXHJcbiAgICAgIHByZWZlckxlYXZlczogdHJ1ZSxcclxuICAgICAgbWF4aW11bUNhY2hlT3ZlcmZsb3dCeXRlczogMTI4LCAvLyDlhoXlrZjliIbphY3lj5jlsI/mnInliKnkuo7lgL7mlpzmkYTlvbHmlbDmja7lm57mlLbvvIzmj5DljYfmgKfog73kvZPpqoxcclxuICAgICAgcHJvZ3Jlc3NpdmVSZXNvbHV0aW9uSGVpZ2h0RnJhY3Rpb246IDAuNSwgLy8g5pWw5YC85YGP5LqOMOiDveWkn+iuqeWIneWni+WKoOi9veWPmOW+l+aooeezilxyXG4gICAgICBkeW5hbWljU2NyZWVuU3BhY2VFcnJvckRlbnNpdHk6IDAuMSwgLy8g5pWw5YC85Yqg5aSn77yM6IO96K6p5ZGo6L655Yqg6L295Y+Y5b+rXHJcbiAgICAgIGR5bmFtaWNTY3JlZW5TcGFjZUVycm9yRmFjdG9yOiAxLFxyXG4gICAgICBkeW5hbWljU2NyZWVuU3BhY2VFcnJvcjogdHJ1ZSwgLy8g5pyJ5LqG6L+Z5Liq5ZCO77yM5Lya5Zyo55yf5q2j55qE5YWo5bGP5Yqg6L295a6M5LmL5ZCO5omN5riF5pmw5YyW5oi/5bGLXHJcbiAgICAgIGJhY2tGYWNlQ3VsbGluZzogZmFsc2UsIC8vIOW8gOWQr+WQju+8jOS8muWJlOmZpOaOieaooeWei+eahOiDjOmdou+8jOaPkOWNh+aAp+iDveS9k+mqjFxyXG4gICAgfVxyXG4gICAgbGV0IHRpbGVzZXRcclxuICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTA3KSB7XHJcbiAgICAgIHRpbGVzZXQgPSBhd2FpdCBDZXNpdW0uQ2VzaXVtM0RUaWxlc2V0LmZyb21VcmwodXJsLCBwYXJhbXMpO1xyXG4gICAgICB0aGlzLmVudGl0eSA9IHRpbGVzZXRcclxuICAgICAgdGhpcy5lbnRpdHkuaW1hZ2VCYXNlZExpZ2h0aW5nLmx1bWluYW5jZUF0WmVuaXRoID0gMC4xXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcGFyYW1zLnVybCA9IHVybFxyXG4gICAgICB0aWxlc2V0ID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVzZXQocGFyYW1zKTtcclxuICAgICAgdGhpcy5lbnRpdHkgPSBhd2FpdCB0aWxlc2V0LnJlYWR5UHJvbWlzZVxyXG4gICAgICB0aGlzLmVudGl0eS5pbWFnZUJhc2VkTGlnaHRpbmcubHVtaW5hbmNlQXRaZW5pdGggPSAwLjFcclxuICAgIH1cclxuXHJcbiAgICAvLyBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG5cclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTY2VuZVRyZWUodXJsKVxyXG4gICAgY29uc3QgaW5pdERhdGEgPSAodGlsZSkgPT4ge1xyXG4gICAgICBpZiAodGlsZS5fY29udGVudHMpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbGUuX2NvbnRlbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpbml0RGF0YSh0aWxlLl9jb250ZW50c1tpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlLmZlYXR1cmVzTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBmZWF0dXJlID0gdGlsZS5nZXRGZWF0dXJlKGkpXHJcbiAgICAgICAgICBsZXQgZmlsZSA9IGZlYXR1cmUuY29udGVudC51cmxcclxuICAgICAgICAgIGxldCBpZCA9IGZlYXR1cmUuZ2V0UHJvcGVydHkoJ2lkJylcclxuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlcykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmlsZV0pIHtcclxuICAgICAgICAgICAgICAgIC8vIGZlYXR1cmUgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmVhdHVyZS5mZWF0dXJlSWRdXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbUNvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmUuY29sb3IgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmlsZV0uY3VzdG9tQ29sb3JcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5jdXN0b21Db2xvciA9IHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21Db2xvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21BbHBoYSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sb3IgPSBmZWF0dXJlLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLnJlZCl9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmdyZWVuKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuYmx1ZSl9LCR7dGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbUFscGhhfSlgKVxyXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlLmN1c3RvbUFscGhhID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbUFscGhhXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbVNob3cpIHtcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5zaG93ID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbVNob3dcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5jdXN0b21TaG93ID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbVNob3dcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdID0gZmVhdHVyZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBvYmplY3QgPSB7fVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQ29sb3IpIHtcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUuY29sb3IgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQ29sb3JcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUuY3VzdG9tQ29sb3IgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQ29sb3JcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5jdXN0b21BbHBoYSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yID0gZmVhdHVyZS5jb2xvclxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IucmVkKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuZ3JlZW4pfSwke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5ibHVlKX0sJHt0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tQWxwaGF9KWApXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLmN1c3RvbUFscGhhID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmN1c3RvbUFscGhhXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVzLmdldChpZCkuY3VzdG9tU2hvdykge1xyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5zaG93ID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmN1c3RvbVNob3dcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUuY3VzdG9tU2hvdyA9IHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5jdXN0b21TaG93XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9iamVjdFtmaWxlXSA9IGZlYXR1cmVcclxuICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXMgPSBvYmplY3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBvYmplY3QgPSB7fVxyXG4gICAgICAgICAgICBvYmplY3RbZmlsZV0gPSBmZWF0dXJlXHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZXMuc2V0KGlkLCB7IGZlYXR1cmVzOiBvYmplY3QgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghZmVhdHVyZS5jdXN0b21Db2xvcikge1xyXG4gICAgICAgICAgICBmZWF0dXJlLmN1c3RvbUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZmZmZicpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGlsZS5fY29udGVudC5mZWF0dXJlc0xlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vICAgbGV0IGZlYXR1cmUgPSB0aWxlLl9jb250ZW50LmdldEZlYXR1cmUoaSlcclxuICAgICAgLy8gICBmZWF0dXJlLnNob3cgPSBmYWxzZVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICh0aWxlLl9jb250ZW50Ll9jb250ZW50cykge1xyXG4gICAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGlsZS5fY29udGVudC5fY29udGVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGlsZS5fY29udGVudC5fY29udGVudHNbaV0uZmVhdHVyZXNMZW5ndGg7IG0rKykge1xyXG4gICAgICAvLyAgICAgICBsZXQgZmVhdHVyZSA9IHRpbGUuX2NvbnRlbnQuX2NvbnRlbnRzW2ldLmdldEZlYXR1cmUobSlcclxuICAgICAgLy8gICAgICAgZmVhdHVyZS5zaG93ID0gZmFsc2VcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuc2RrLnZpZXdlci5zY2VuZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRpbGVzZXQudGlsZUxvYWQuYWRkRXZlbnRMaXN0ZW5lcih0aWxlID0+IHtcclxuICAgICAgLy8gdGhpcy50ZXN0KClcclxuICAgICAgaW5pdERhdGEodGlsZS5fY29udGVudClcclxuXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLiN1cGRhdGVNb2RlbFRpbWVvdXQpXHJcbiAgICAgIHRoaXMuI3VwZGF0ZU1vZGVsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLiN1cGRhdGVNb2RlbFRpbWVvdXQpXHJcbiAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGlsZXNldC5ib3VuZGluZ1NwaGVyZS5jZW50ZXIsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBsZXQgY2lyY2xlID0gdHVyZi5jaXJjbGUoW2NlbnRlci5sbmcsIGNlbnRlci5sYXRdLCB0aWxlc2V0LmJvdW5kaW5nU3BoZXJlLnJhZGl1cyAvIDEwMDAsIHsgc3RlcHM6IDM2MCwgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBmb3IgKGxldCBba2V5LCBlbnRpdHldIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgICAgaWYgKGVudGl0eS50eXBlID09PSAnQmlsbGJvYXJkT2JqZWN0JyAmJiBlbnRpdHkuaGVpZ2h0TW9kZSA9PSAzKSB7XHJcbiAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW2VudGl0eS5sbmcsIGVudGl0eS5sYXRdKTtcclxuICAgICAgICAgICAgaWYgKHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpKSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LnVwZGF0ZUhlaWdodCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZW50aXR5LmxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LmxhYmVsLnNob3cgPSBlbnRpdHkubGFiZWwuc2hvd1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCA1MDApO1xyXG5cclxuICAgICAgLy8gaWYgKHRpbGUuX2NvbnRlbnQuX2NvbnRlbnRzKSB7XHJcbiAgICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlLl9jb250ZW50Ll9jb250ZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aWxlLl9jb250ZW50Ll9jb250ZW50c1tpXS5mZWF0dXJlc0xlbmd0aDsgbSsrKSB7XHJcbiAgICAgIC8vICAgICAgIGxldCBmZWF0dXJlID0gdGlsZS5fY29udGVudC5fY29udGVudHNbaV0uZ2V0RmVhdHVyZShtKVxyXG4gICAgICAvLyAgICAgICBjb25zb2xlLmxvZyhmZWF0dXJlKVxyXG4gICAgICAvLyAgICAgICBmZWF0dXJlLnNob3cgPSBmYWxzZVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRpbGUuX2NvbnRlbnQuZmVhdHVyZXNMZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyAgIGxldCBmZWF0dXJlID0gdGlsZS5fY29udGVudC5nZXRGZWF0dXJlKGkpXHJcbiAgICAgIC8vICAgbGV0IGZpbGUgPSBmZWF0dXJlLmNvbnRlbnQudXJsXHJcbiAgICAgIC8vICAgbGV0IGlkID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnaWQnKVxyXG4gICAgICAvLyAgIGlmICh0aGlzLmZlYXR1cmVzLmhhcyhpZCkpIHtcclxuICAgICAgLy8gICAgIGlmICh0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXMpIHtcclxuICAgICAgLy8gICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXSkge1xyXG4gICAgICAvLyAgICAgICAgIC8vIGZlYXR1cmUgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmVhdHVyZS5mZWF0dXJlSWRdXHJcbiAgICAgIC8vICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21Db2xvcikge1xyXG4gICAgICAvLyAgICAgICAgICAgZmVhdHVyZS5jb2xvciA9IHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21Db2xvclxyXG4gICAgICAvLyAgICAgICAgICAgZmVhdHVyZS5jdXN0b21Db2xvciA9IHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21Db2xvclxyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICBpZiAodGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbUFscGhhKSB7XHJcbiAgICAgIC8vICAgICAgICAgICBsZXQgY29sb3IgPSBmZWF0dXJlLmNvbG9yXHJcbiAgICAgIC8vICAgICAgICAgICBmZWF0dXJlLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5yZWQpfSwke0Nlc2l1bS5Db2xvci5mbG9hdFRvQnl0ZShjb2xvci5ncmVlbil9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmJsdWUpfSwke3RoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21BbHBoYX0pYClcclxuICAgICAgLy8gICAgICAgICAgIGZlYXR1cmUuY3VzdG9tQWxwaGEgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmlsZV0uY3VzdG9tQWxwaGFcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuZ2V0KGlkKS5mZWF0dXJlc1tmaWxlXS5jdXN0b21TaG93KSB7XHJcbiAgICAgIC8vICAgICAgICAgICBmZWF0dXJlLnNob3cgPSB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmlsZV0uY3VzdG9tU2hvd1xyXG4gICAgICAvLyAgICAgICAgICAgZmVhdHVyZS5jdXN0b21TaG93ID0gdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzW2ZpbGVdLmN1c3RvbVNob3dcclxuICAgICAgLy8gICAgICAgICB9XHJcblxyXG5cclxuICAgICAgLy8gICAgICAgfVxyXG4gICAgICAvLyAgICAgICB0aGlzLmZlYXR1cmVzLmdldChpZCkuZmVhdHVyZXNbZmlsZV0gPSBmZWF0dXJlXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgLy8gICAgICAgbGV0IG9iamVjdCA9IHt9XHJcbiAgICAgIC8vICAgICAgIG9iamVjdFtmaWxlXSA9IGZlYXR1cmVcclxuICAgICAgLy8gICAgICAgdGhpcy5mZWF0dXJlcy5nZXQoaWQpLmZlYXR1cmVzID0gb2JqZWN0XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAvLyAgICAgbGV0IG9iamVjdCA9IHt9XHJcbiAgICAgIC8vICAgICBvYmplY3RbZmlsZV0gPSBmZWF0dXJlXHJcbiAgICAgIC8vICAgICB0aGlzLmZlYXR1cmVzLnNldChpZCwgeyBmZWF0dXJlczogb2JqZWN0IH0pXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGlmICghZmVhdHVyZS5jdXN0b21Db2xvcikge1xyXG4gICAgICAvLyAgICAgZmVhdHVyZS5jdXN0b21Db2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmZmYnKVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfSlcclxuICAgIC8vIC8vIGNvbnNvbGUubG9nKHRpbGVzZXQpXHJcbiAgICAvLyBpZiAodGhpcy50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICBjb25zdCBzZXRUaWxlc2V0U3R5bGUgPSAoZikgPT4ge1xyXG4gICAgLy8gICAgIGlmICh0aWxlc2V0LnN0eWxlKSB7XHJcbiAgICAvLyAgICAgICAvLyB0aWxlc2V0LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAvLyAgICAgICAvLyAgIGNvbG9yOiB7XHJcbiAgICAvLyAgICAgICAvLyAgICAgY29uZGl0aW9uczogW1xyXG4gICAgLy8gICAgICAgLy8gICAgICAgWycke25hbWV9ID09PVwi5a+56LGhMDc0XCIgJywgJ2NvbG9yKFwicmVkXCIpJ10sIC8v56ym5ZCI5p2h5Lu26aG5XHJcbiAgICAvLyAgICAgICAvLyAgICAgICBbJ3RydWUnLCAncmdiYSgyNTUsMjU1LDI1NSwxKSddIC8v5YW25LuW6aG5XHJcbiAgICAvLyAgICAgICAvLyAgICAgXVxyXG4gICAgLy8gICAgICAgLy8gICB9XHJcbiAgICAvLyAgICAgICAvLyB9KVxyXG4gICAgLy8gICAgICAgLy8gdGlsZXNldC50aWxlTG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKHNldFRpbGVzZXRTdHlsZSlcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZilcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aWxlc2V0LnRpbGVMb2FkLmFkZEV2ZW50TGlzdGVuZXIoc2V0VGlsZXNldFN0eWxlKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMuZW50aXR5Ll9yb290Lm9yaWdpbmFsVHJhbnNmb3JtID0geyAuLi50aGlzLmVudGl0eS5fcm9vdC50cmFuc2Zvcm0gfVxyXG4gICAgdGhpcy5lbnRpdHkuaWQgPSB0aGlzLm9wdGlvbnMuaWQgfHwgdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhpcy5lbnRpdHkudHlwZSA9IHRoaXMudHlwZVxyXG4gICAgLy8gdGhpcy5lZGl0T2JqID0gbmV3IEVkaXRCM0RNKHRoaXMuc2RrLCB0aGlzLmVudGl0eSlcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGlsZXNldCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uICYmIEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucy5wb3NpdGlvbikgIT0gXCJ7fVwiXHJcbiAgICAgICYmICh0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPT09IDApICYmICh0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPT09IDApKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPT0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCB8fCAwXHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4odGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUuY2VudGVyKTtcclxuICAgICAgaWYgKHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybSkge1xyXG4gICAgICAgIGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbih7IHg6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxMl0sIHk6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxM10sIHo6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxNF0gfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVudGl0eS5vcmlnaW5hbCA9IHtcclxuICAgICAgICBsbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSwgLy8g57uP5bqmXHJcbiAgICAgICAgbGF0OiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKSwgLy8g57qs5bqmXHJcbiAgICAgICAgaGVpZ2h0OiBjYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCkpXHJcbiAgICAgIGNvbnN0IHNjYWxlID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVVuaWZvcm1TY2FsZSh0aGlzLm9sZERhdGEuc2NhbGUpO1xyXG4gICAgICBpZiAodGhpcy50aWxlc2V0LnJvb3QudHJhbnNmb3JtKSB7XHJcbiAgICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkobSwgc2NhbGUsIHRoaXMuZW50aXR5Ll9yb290LnRyYW5zZm9ybSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxuZyA9IHRoaXMub2xkRGF0YS5sbmdcclxuICAgICAgdGhpcy5sYXQgPSB0aGlzLm9sZERhdGEubGF0XHJcbiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vbGREYXRhLmhlaWdodFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHt9XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4odGhpcy5lbnRpdHkuYm91bmRpbmdTcGhlcmUuY2VudGVyKTtcclxuICAgICAgaWYgKHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybSkge1xyXG4gICAgICAgIGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbih7IHg6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxMl0sIHk6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxM10sIHo6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxNF0gfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVudGl0eS5vcmlnaW5hbCA9IHtcclxuICAgICAgICBsbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgICBsYXQ6IHRoaXMub2xkRGF0YS5sYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKSxcclxuICAgICAgICBoZWlnaHQ6IGNhcnRvZ3JhcGhpYy5oZWlnaHQsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sbmcgPSB0aGlzLm9sZERhdGEubG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpOyAvLyDnu4/luqZcclxuICAgICAgdGhpcy5sYXQgPSB0aGlzLm9sZERhdGEubGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSk7IC8vIOe6rOW6plxyXG4gICAgICB0aGlzLmhlaWdodCA9IHRoaXMub2xkRGF0YS5oZWlnaHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0OyAvLyDpq5jluqZcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY2FsZSA9IHRoaXMub2xkRGF0YS5zY2FsZVxyXG4gICAgdGhpcy5yb2xsID0gdGhpcy5vbGREYXRhLnJvbGxcclxuICAgIHRoaXMuaGVhZGluZyA9IHRoaXMub2xkRGF0YS5oZWFkaW5nXHJcbiAgICB0aGlzLnBpdGNoID0gdGhpcy5vbGREYXRhLnBpdGNoXHJcbiAgICB0aGlzLnRyYW5zcGFyZW5jeSA9IHRoaXMub2xkRGF0YS50cmFuc3BhcmVuY3lcclxuXHJcbiAgICB0aGlzLmxvYWRlZCA9IHRydWVcclxuICAgIHRoaXMuX2xvYWRlZCA9IHRydWVcclxuICAgIGlmICh0aGlzLl9sb2FkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fbG9hZEV2ZW50KHRoaXMuZW50aXR5KVxyXG4gICAgfVxyXG5cclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuXHJcbiAgICByZWdNb3ZlQ2FsbGJhY2sodGhpcy5lbnRpdHkuaWQsIHRoaXMubW91c2VNb3ZlQ0IsIHRoaXMpXHJcblxyXG5cclxuICAgIC8vIHRoaXMuZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRpbGVzZXQpO1xyXG4gICAgLy8gaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbiAmJiBKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMucG9zaXRpb24pICE9IFwie31cIikge1xyXG4gICAgLy8gICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0KSlcclxuICAgIC8vICAgY29uc3Qgc2NhbGUgPSBDZXNpdW0uTWF0cml4NC5mcm9tVW5pZm9ybVNjYWxlKHRoaXMub2xkRGF0YS5zY2FsZSk7XHJcbiAgICAvLyAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG0sIHNjYWxlLCB0aGlzLmVudGl0eS5fcm9vdC50cmFuc2Zvcm0pXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0ge31cclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMubG5nID0gdGhpcy5vbGREYXRhLmxuZ1xyXG4gICAgLy8gdGhpcy5sYXQgPSB0aGlzLm9sZERhdGEubGF0XHJcbiAgICAvLyB0aGlzLmhlaWdodCA9IHRoaXMub2xkRGF0YS5oZWlnaHRcclxuICAgIC8vIHRoaXMuc2NhbGUgPSB0aGlzLm9sZERhdGEuc2NhbGVcclxuICAgIC8vIHRoaXMucm9sbCA9IHRoaXMub2xkRGF0YS5yb2xsXHJcbiAgICAvLyB0aGlzLmhlYWRpbmcgPSB0aGlzLm9sZERhdGEuaGVhZGluZ1xyXG4gICAgLy8gdGhpcy5waXRjaCA9IHRoaXMub2xkRGF0YS5waXRjaFxyXG4gICAgLy8gdGhpcy50cmFuc3BhcmVuY3kgPSB0aGlzLm9sZERhdGEudHJhbnNwYXJlbmN5XHJcblxyXG4gICAgLy8gcmVnTW92ZUNhbGxiYWNrKHRoaXMuZW50aXR5LmlkLCB0aGlzLm1vdXNlTW92ZUNCLCB0aGlzKVxyXG5cclxuICAgIC8vIHRoaXMuZWRpdE9iaiA9IG5ldyBFZGl0QjNETSh0aGlzLnNkaywgdGhpcy5lbnRpdHkpXHJcbiAgICAvLyB0aGlzLmVkaXRPYmoudHJhbnNmb3JtQ2FsbEJhY2sgPSB0aGlzLnJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrXHJcbiAgICAvLyB0aWxlc2V0LnJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgIC8vICAgdGhpcy5lbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGlsZXNldCk7XHJcblxyXG4gICAgLy8gfSlcclxuICAgIC8vIGxldCB4ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlc2V0KHtcclxuICAgIC8vICAgdXJsOiB1cmxcclxuICAgIC8vIH0pKTtcclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh4KVxyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuZmx5VG8odGhpcy5lbnRpdHkpXHJcbiAgICAvLyB9LCAzMDAwKTtcclxuICB9XHJcblxyXG4gIC8vIHRlc3QoKSB7XHJcbiAgLy8gICBsZXQgaGVpZ2h0c3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAvLyAgICAgY29sb3I6IHtcclxuICAvLyAgICAgICBjb25kaXRpb25zOiBbXHJcbiAgLy8gICAgICAgICBbXCJOdW1iZXIoJHtoZWlnaHR9KT49MzAwXCIsIFwicmdiYSg0NSwwLDc1LDAuNSlcIl0sXHJcbiAgLy8gICAgICAgICBbXCJOdW1iZXIoJHtoZWlnaHR9KT49MjAwXCIsIFwicmdiKDEwMiw3MSwxNTEpXCJdLFxyXG4gIC8vICAgICAgICAgW1wiTnVtYmVyKCR7aGVpZ2h0fSk+PTEwMFwiLCBcInJnYigxNzAsMTYyLDIwNClcIl0sXHJcbiAgLy8gICAgICAgICBbXCJOdW1iZXIoJHtoZWlnaHR9KT49NTBcIiwgXCJyZ2IoMjI0LDIyNiwyMzgpXCJdLFxyXG4gIC8vICAgICAgICAgW1wiTnVtYmVyKCR7aGVpZ2h0fSk+PTI1XCIsIFwicmdiKDI1MiwyMzAsIDIwMClcIl0sXHJcbiAgLy8gICAgICAgICBbXCJOdW1iZXIoJHtoZWlnaHR9KT49MTBcIiwgXCJyZ2IoMjQ4LDE3Niw4NylcIl0sXHJcbiAgLy8gICAgICAgICBbXCJOdW1iZXIoJHtoZWlnaHR9KT49NVwiLCBcInJnYigxOTgsIDEwNiwxMSlcIl0sXHJcbiAgLy8gICAgICAgICBbXCJpc05hTihOdW1iZXIoJHtoZWlnaHR9KSlcIiwgXCJyZ2IoMjU1LCAyNTUsIDI1NSlcIl0sXHJcbiAgLy8gICAgICAgICBbXCJ0cnVlXCIsIFwicmdiKDEyNyw1OSw4KVwiXVxyXG4gIC8vICAgICAgIF1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLmVudGl0eS5zdHlsZSA9IGhlaWdodHN0eWxlO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIHN1cGVyLnJlbW92ZSgpXHJcbiAgICB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5lbnRpdHkpO1xyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZseVRvKCkge1xyXG4gICAgc3VwZXIuZmx5VG8oKVxyXG4gIH1cclxuXHJcblxyXG4gIG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZFRpbGVzZXQodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFZhbHVlKCkge1xyXG4gICAgc3VwZXIuc2V0RGVmYXVsdFZhbHVlKClcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gdGhpcy5vcHRpb25zLnVybCB8fCBcIlwiXHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb24oKSB7XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKHRoaXMuZW50aXR5LmJvdW5kaW5nU3BoZXJlLmNlbnRlcik7XHJcbiAgICBpZiAodGhpcy50aWxlc2V0LnJvb3QudHJhbnNmb3JtKSB7XHJcbiAgICAgIGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbih7IHg6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxMl0sIHk6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxM10sIHo6IHRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybVsxNF0gfSlcclxuICAgIH1cclxuICAgIGxldCBsbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSArIDAuMDAwMDAwMDA2NjM4MTQpO1xyXG4gICAgbGV0IGxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUgKyAwLjAwMDAwMDI1MTM3ODM1KTtcclxuICAgIGlmICh0aGlzLm5ld0RhdGEubG5nICYmIHRoaXMubmV3RGF0YS5sYXQgJiYgdGhpcy5uZXdEYXRhLmhlaWdodCkge1xyXG4gICAgICByZXR1cm4geyBsbmc6IHRoaXMubmV3RGF0YS5sbmcsIGxhdDogdGhpcy5uZXdEYXRhLmxhdCwgaGVpZ2h0OiB0aGlzLm5ld0RhdGEuaGVpZ2h0IH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4geyBsbmc6IGxuZywgbGF0OiBsYXQsIGhlaWdodDogY2FydG9ncmFwaGljLmhlaWdodCAtIDIuMTkxMDQ2MTEwNDMyMzQgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHBvc2l0aW9uKHApIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDmiZPlvIDmqKHlnovml4vovazlip/og71cclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuICAgKiAqL1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoIXRoaXMudGlsZXNldC5yb290LnRyYW5zZm9ybSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ+ivpeaooeWei+S4jeaUr+aMgeenu+WKqOWSjOaXi+i9rO+8gScpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICB0aGlzLmVkaXRPYmoucG9zaXRpb24gPSB7IGxuZzogdGhpcy5uZXdEYXRhLmxuZywgbGF0OiB0aGlzLm5ld0RhdGEubGF0LCBhbHQ6IHRoaXMubmV3RGF0YS5oZWlnaHQgfVxyXG4gICAgICB0aGlzLmVkaXRPYmoudXBkYXRlKClcclxuICAgICAgdGhpcy5lZGl0T2JqLmVkaXRSdGF0aW9uKClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDojrflj5bmqKHlnovml4vovaznirbmgIFcclxuICAgKiBAbWV0aG9kIHJvdGF0aW9uRWRpdGluZ1xyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuXHJcbiAgICogKi9cclxuICBnZXQgcm90YXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdE9iai5nZXRBY3RpdmVTdGF0ZSgpID09PSAncnRhdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75qih5Z6L5Yqf6IO9XHJcbiAgICpcclxuICAgKiBAbWVtYmVyT2YgU291cmNlXHJcbiAgICpAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICghdGhpcy50aWxlc2V0LnJvb3QudHJhbnNmb3JtKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybign6K+l5qih5Z6L5LiN5pSv5oyB56e75Yqo5ZKM5peL6L2s77yBJylcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iai5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm5ld0RhdGEubG5nLCBsYXQ6IHRoaXMubmV3RGF0YS5sYXQsIGFsdDogdGhpcy5uZXdEYXRhLmhlaWdodCB9XHJcbiAgICAgIHRoaXMuZWRpdE9iai51cGRhdGUoKVxyXG4gICAgICB0aGlzLmVkaXRPYmouZWRpdFRyYW5zbGF0aW9uYWwoKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iai5kZXN0cm95KClcclxuICAgICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdE9iai5nZXRBY3RpdmVTdGF0ZSgpID09PSAndHJhbnNsYXRpb25hbCcpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb3BlblBvc2l0aW9uRWRpdGluZyhjZCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IGNkXHJcbiAgfVxyXG4gIGNsb3NlUG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgfVxyXG5cclxuICAvL+aXi+i9rOaXtu+8jOWdkOagh+S/oeaBr+WPmOWMlueahOWbnuiwg1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmdDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgdGhpcy5fcm90YXRpb25FZGl0aW5nQ2FsbEJhY2sgPSBjYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIChwYXJhbXMsIHN0YXRlKSA9PiB7XHJcbiAgICAgIHRoaXMubG5nID0gcGFyYW1zLnBvc2l0aW9uLmxuZ1xyXG4gICAgICB0aGlzLmxhdCA9IHBhcmFtcy5wb3NpdGlvbi5sYXRcclxuICAgICAgdGhpcy5oZWlnaHQgPSBwYXJhbXMucG9zaXRpb24uYWx0XHJcbiAgICAgIHRoaXMucm9sbCA9IHBhcmFtcy5yb3RhdGUueFxyXG4gICAgICB0aGlzLmhlYWRpbmcgPSBwYXJhbXMucm90YXRlLnlcclxuICAgICAgdGhpcy5waXRjaCA9IHBhcmFtcy5yb3RhdGUuelxyXG4gICAgICBpZih0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaykge1xyXG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLl9yb3RhdGlvbkVkaXRpbmdDYWxsQmFjayAmJiB0aGlzLl9yb3RhdGlvbkVkaXRpbmdDYWxsQmFjayh0aGlzLmVkaXRPYmouX3BhcmFtcylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkgeyB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdlxyXG4gICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuc2hvdyA9IHYpXHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWwgJiYgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgJiYgdGhpcy5sYWJlbCkge1xyXG4gICAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBsZXQgY2VudGVyID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmVudGl0eS5ib3VuZGluZ1NwaGVyZS5jZW50ZXIsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBsZXQgY2lyY2xlID0gdHVyZi5jaXJjbGUoW2NlbnRlci5sbmcsIGNlbnRlci5sYXRdLCB0aGlzLmVudGl0eS5ib3VuZGluZ1NwaGVyZS5yYWRpdXMgLyAxMDAwLCB7IHN0ZXBzOiAzNjAsIHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgW2tleSwgZW50aXR5XSBvZiB0aGlzLnNkay5lbnRpdHlNYXApIHtcclxuICAgICAgICAgIGlmIChlbnRpdHkudHlwZSA9PT0gJ0JpbGxib2FyZE9iamVjdCcgJiYgZW50aXR5LmhlaWdodE1vZGUgPT0gMykge1xyXG4gICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtlbnRpdHkubG5nLCBlbnRpdHkubGF0XSk7XHJcbiAgICAgICAgICAgIGlmICh0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgY2lyY2xlKSkge1xyXG4gICAgICAgICAgICAgIGVudGl0eS51cGRhdGVIZWlnaHQoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVudGl0eS5sYWJlbCkge1xyXG4gICAgICAgICAgICAgIGVudGl0eS5sYWJlbC5zaG93ID0gZW50aXR5LmxhYmVsLnNob3dcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkKGNhbGxiYWNrKSB7XHJcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XHJcbiAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fbG9hZEV2ZW50ID0gY2FsbGJhY2tcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VUaWxlc2V0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBbEJBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTEE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE3VUE7QUFBQTtBQUFBO0FBQUE7QUFnVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQWhCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/BaseTileset/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BaseSource/index.js": -/*!******************************************!*\ - !*** ./src/Obj/Base/BaseSource/index.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-11-20 18:31\r\n * @description:index\r\n * @update: 2023-11-20 18:31\r\n */\n\n\n\nvar BaseSource = /*#__PURE__*/function (_Base) {\n function BaseSource(sdk, options) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, BaseSource);\n _this = _callSuper(this, BaseSource, [sdk, options]);\n _this.sdk.addIncetance(_this.options.id, _this);\n if (_this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"setSplitDirection\"])(0, _this.options.id);\n }\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(BaseSource, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BaseSource, [{\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(BaseSource, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_7__[\"getHost\"])();\n }\n }, {\n key: \"requestResource\",\n value: function requestResource() {\n var url = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) url = this.options.host + '/data/service/load-compact-service';else url = this.options.host + '/yjearth4.0/data/service/load-compact-service';\n return fetch(url, {\n method: 'post',\n body: JSON.stringify({\n source_id: this.options.id\n }),\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_7__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_7__[\"getToken\"])()\n }\n });\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseSource);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmFzZVNvdXJjZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXNlU291cmNlL2luZGV4LmpzPzMwMjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTExLTIwIDE4OjMxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMTEtMjAgMTg6MzFcclxuICovXHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQge2dldEhvc3QsIGdldFRva2VufSBmcm9tIFwiLi4vLi4vLi4vb25cIjtcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuXCI7XHJcblxyXG5jbGFzcyBCYXNlU291cmNlIGV4dGVuZHMgQmFzZSB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zKSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBzdXBlci5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0UmVzb3VyY2UoKSB7XHJcbiAgICBsZXQgdXJsID0gXCJcIlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSlcclxuICAgICAgdXJsID0gdGhpcy5vcHRpb25zLmhvc3QgKyAnL2RhdGEvc2VydmljZS9sb2FkLWNvbXBhY3Qtc2VydmljZSdcclxuICAgIGVsc2VcclxuICAgICAgdXJsID0gdGhpcy5vcHRpb25zLmhvc3QgKyAnL3lqZWFydGg0LjAvZGF0YS9zZXJ2aWNlL2xvYWQtY29tcGFjdC1zZXJ2aWNlJ1xyXG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe3NvdXJjZV9pZDogdGhpcy5vcHRpb25zLmlkfSksXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VTb3VyY2VcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/BaseSource/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BatchModel/_element.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/BatchModel/_element.js ***! - \*********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u6DFB\\u52A0\\u65B9\\u5F0F\\n
\\n
\\n
\\n \\u95F4\\u8DDD\\n
\\n \\n \\u7C73\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmF0Y2hNb2RlbC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXRjaE1vZGVsL19lbGVtZW50LmpzP2VjZTkiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaHRtbCgpIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBhZGQtdHlwZS1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPua3u+WKoOaWueW8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtdHlwZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumXtOi3nTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5OTk5XCIgQG1vZGVsPVwic3BhY2luZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPuexszwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQW9CQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BatchModel/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BatchModel/index.js": -/*!******************************************!*\ - !*** ./src/Obj/Base/BatchModel/index.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BatchModel/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _BaseSource_BaseModel_Model__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../BaseSource/BaseModel/Model */ \"./src/Obj/Base/BaseSource/BaseModel/Model/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Draw_drawPolyline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Draw/drawPolyline */ \"./src/Draw/drawPolyline.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n/* harmony import */ var _Draw_drawThreeRect__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Draw/drawThreeRect */ \"./src/Draw/drawThreeRect.js\");\n/* harmony import */ var _Draw_drawPoint__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Draw/drawPoint */ \"./src/Draw/drawPoint.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 批量模型\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchModel = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 批量模型\r\n * @param options {object} 批量模型属性\r\n * @param options.name=未命名对象 {string} 名称\r\n * @param options.type=polygon {string} 线类型(line,polygon)\r\n * @param options.url=polygon {string} 线类型(line,polygon,point)\r\n * @param options.spacing= {number} 间距\r\n * @param options.show=true {boolean}\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function BatchModel(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var _Dialog = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, BatchModel);\n _this2 = _callSuper(this, BatchModel, [sdk, options]);\n _this2.viewer = _this2.sdk.viewer;\n _this2.options.name = options.name || '批量模型';\n _this2.options.type = options.type || '面';\n _this2.options.url = options.url || '';\n _this2.options.spacing = options.spacing * 1 || 50;\n _this2.options.positions = options.positions || [];\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.callback = callback;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n _this2._elms = {};\n _this2.pointArr = [];\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_14__[\"default\"](sdk);\n // BatchModel.computeDis(this)\n // if (this.options.positions.length > 0 || this.options.positions.lng) {\n if (options.type != '点' && (_this2.options.spacing < 0 || options.spacing * 1 === 0)) {\n tools.message({\n type: 'warning',\n text: '请输入正确的间距!'\n });\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(_this2);\n }\n if (options.type && options.spacing != undefined || options.type == '点') {\n // BatchModel.computeDis(this)\n\n var Draw;\n switch (options.type) {\n case '点':\n Draw = new _Draw_drawPoint__WEBPACK_IMPORTED_MODULE_21__[\"default\"](_this2.sdk);\n break;\n case '线':\n Draw = new _Draw_drawPolyline__WEBPACK_IMPORTED_MODULE_18__[\"default\"](_this2.sdk);\n break;\n case '面':\n Draw = new _Draw_drawThreeRect__WEBPACK_IMPORTED_MODULE_20__[\"default\"](_this2.sdk);\n break;\n default:\n break;\n }\n Draw && Draw.start(function (a, positions) {\n if (!positions) {\n return;\n }\n _this2.options.positions = positions;\n //判断范围是否过大\n if (options.type == '面') {\n var posi = positions.map(function (v) {\n return Cesium.Cartesian3.fromDegrees(v.lng, v.lat);\n });\n var dis1 = Cesium.Cartesian3.distance(posi[0], posi[1]);\n var dis2 = Cesium.Cartesian3.distance(posi[1], posi[2]);\n var num1 = dis1 / _this2.options.spacing;\n var num2 = dis2 / _this2.options.spacing;\n if (num1 * num2 > 100) {\n tools.message({\n type: 'warning',\n text: '数量大于100,请重新绘制'\n });\n return;\n }\n } else if (options.type == '线') {\n var _posi = positions.map(function (v) {\n return Cesium.Cartesian3.fromDegrees(v.lng, v.lat);\n });\n var dis = 0;\n for (var i = 0; i < _posi.length - 2; i++) {\n dis += Cesium.Cartesian3.distance(_posi[i], _posi[i + 1]);\n }\n if (dis / _this2.options.spacing > 100) {\n tools.message({\n type: 'warning',\n text: '数量大于100,请重新绘制'\n });\n return;\n }\n }\n // this.callback(this.options);\n (_this2.options.positions.length || _this2.options.positions.lng) && BatchModel.computeDis(_this2);\n });\n } else {\n _this2.edit(true);\n }\n return _this2;\n }\n\n // 计算距离\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(BatchModel, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(BatchModel, [{\n key: \"linePoint\",\n value: function () {\n var _linePoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(polygonPositions, spacing) {\n var boundaryPoints, boundaryAngle, i, start, end, segmentLength, segments, j, ratio, point, cartographic, longitude, latitude, height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n boundaryPoints = [];\n boundaryAngle = [];\n i = 0;\n case 3:\n if (!(i < polygonPositions.length - 1)) {\n _context.next = 27;\n break;\n }\n start = polygonPositions[i];\n end = polygonPositions[(i + 1) % polygonPositions.length];\n segmentLength = Cesium.Cartesian3.distance(start, end);\n segments = Math.ceil(segmentLength / spacing);\n j = 0;\n case 9:\n if (!(j <= segments)) {\n _context.next = 24;\n break;\n }\n ratio = j / segments;\n point = Cesium.Cartesian3.lerp(start, end, ratio, new Cesium.Cartesian3());\n cartographic = Cesium.Cartographic.fromCartesian(point // Cartesian3对象 {x, y, z}\n );\n longitude = Cesium.Math.toDegrees(cartographic.longitude);\n latitude = Cesium.Math.toDegrees(cartographic.latitude);\n _context.next = 17;\n return this.getClampToHeight({\n lng: longitude,\n lat: latitude\n });\n case 17:\n height = _context.sent;\n point = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);\n boundaryPoints.push(point);\n if (j != segments || i == polygonPositions.length - 2) {\n boundaryAngle.push(this.calculateRoadAngle(start, end));\n }\n case 21:\n j++;\n _context.next = 9;\n break;\n case 24:\n i++;\n _context.next = 3;\n break;\n case 27:\n return _context.abrupt(\"return\", [_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(new Set(boundaryPoints.map(function (p) {\n return \"\".concat(p.x, \",\").concat(p.y, \",\").concat(p.z);\n }))).map(function (str) {\n var _str$split$map = str.split(',').map(Number),\n _str$split$map2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_str$split$map, 3),\n x = _str$split$map2[0],\n y = _str$split$map2[1],\n z = _str$split$map2[2];\n return new Cesium.Cartesian3(x, y, z);\n }), boundaryAngle]);\n case 28:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function linePoint(_x, _x2) {\n return _linePoint.apply(this, arguments);\n }\n return linePoint;\n }()\n }, {\n key: \"calculateRoadAngle\",\n value: function calculateRoadAngle(startPoint, endPoint) {\n var normal = Cesium.Ellipsoid.WGS84.geodeticSurfaceNormal(startPoint);\n var enuMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(startPoint, undefined, normal);\n var inverseMatrix = Cesium.Matrix4.inverse(enuMatrix, new Cesium.Matrix4());\n var localEnd = Cesium.Matrix4.multiplyByPoint(inverseMatrix, endPoint, new Cesium.Cartesian3());\n var horizontalVec = new Cesium.Cartesian2(localEnd.x, localEnd.y);\n Cesium.Cartesian2.normalize(horizontalVec, horizontalVec);\n var north = new Cesium.Cartesian2(1, 0);\n var angle = Cesium.Cartesian2.angleBetween(north, horizontalVec);\n angle = Cesium.Math.toDegrees(angle);\n var cross = Cesium.Cartesian2.cross(north, horizontalVec, new Cesium.Cartesian2());\n // return cross < 0 ? angle : - angle;\n return cross < 0 ? -angle : angle;\n }\n }, {\n key: \"generateInterpolatedPoints\",\n value: function generateInterpolatedPoints(polygonPositions, spacing) {\n // 1. 边界点插值\n var boundaryPoints = [];\n for (var i = 0; i < polygonPositions.length; i++) {\n var start = polygonPositions[i];\n var end = polygonPositions[(i + 1) % polygonPositions.length];\n var segmentLength = Cesium.Cartesian3.distance(start, end);\n var segments = Math.ceil(segmentLength / spacing);\n for (var j = 0; j <= segments; j++) {\n var ratio = j / segments;\n var point = Cesium.Cartesian3.lerp(start, end, ratio, new Cesium.Cartesian3());\n boundaryPoints.push(point);\n }\n }\n\n // 2. 内部网格生成\n var extent = this.computePolygonExtent(polygonPositions);\n var result = this.createGridFromBBox(extent, this.options.spacing);\n // const extent = Cesium.Rectangle.fromCartesianArray(polygonPositions);\n\n var gridPoints = [];\n // const polygon = new Cesium.PolygonHierarchy(polygonPositions);\n var polygon = [];\n this.options.positions.forEach(function (item) {\n polygon.push([item.lng, item.lat]);\n });\n polygon.push(polygon[0]);\n for (var x = extent.west; x <= extent.east; x += result.lonStep) {\n for (var y = extent.south; y <= extent.north; y += result.latStep) {\n var position = Cesium.Cartesian3.fromDegrees(x, y);\n var _point = turf.point([x, y]);\n var polygonTurf = turf.polygon([polygon]);\n var isInside = turf.booleanPointInPolygon(_point, polygonTurf);\n isInside && gridPoints.push(position);\n }\n }\n\n // 3. 合并结果并去重\n // return [...new Set([...boundaryPoints, ...gridPoints]\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(new Set([].concat(gridPoints).map(function (p) {\n return \"\".concat(p.x, \",\").concat(p.y, \",\").concat(p.z);\n }))).map(function (str) {\n var _str$split$map3 = str.split(',').map(Number),\n _str$split$map4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_str$split$map3, 3),\n x = _str$split$map4[0],\n y = _str$split$map4[1],\n z = _str$split$map4[2];\n return new Cesium.Cartesian3(x, y, z);\n });\n }\n }, {\n key: \"createGridFromBBox\",\n value: function createGridFromBBox(bbox, spacing) {\n var earthRadius = 6378137; // WGS84椭球体长半轴\n // 计算经度方向网格数\n var lonDistance = Cesium.Cartesian3.distance(Cesium.Cartesian3.fromDegrees(bbox.west, (bbox.south + bbox.north) / 2, 0), Cesium.Cartesian3.fromDegrees(bbox.east, (bbox.south + bbox.north) / 2, 0));\n var lonCount = Math.ceil(lonDistance / spacing);\n\n // 计算纬度方向网格数\n var latDistance = Cesium.Cartesian3.distance(Cesium.Cartesian3.fromDegrees((bbox.west + bbox.east) / 2, bbox.south, 0), Cesium.Cartesian3.fromDegrees((bbox.west + bbox.east) / 2, bbox.north, 0));\n var latCount = Math.ceil(latDistance / spacing);\n // 生成网格线\n var lonStep = (bbox.east - bbox.west) / lonCount;\n var latStep = (bbox.north - bbox.south) / latCount;\n return {\n lonStep: lonStep,\n latStep: latStep\n };\n }\n }, {\n key: \"computePolygonExtent\",\n value: function computePolygonExtent(positions) {\n // 计算多边形经纬度范围\n var cartographics = positions.map(function (p) {\n return Cesium.Cartographic.fromCartesian(p);\n });\n var lons = cartographics.map(function (c) {\n return Cesium.Math.toDegrees(c.longitude);\n });\n var lats = cartographics.map(function (c) {\n return Cesium.Math.toDegrees(c.latitude);\n });\n return {\n west: Math.min.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(lons)),\n east: Math.max.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(lons)),\n south: Math.min.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(lats)),\n north: Math.max.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(lats))\n };\n }\n }, {\n key: \"computedArea\",\n value: function () {\n var _computedArea = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(polygonPositions, spacing) {\n var dis12, dis23, vec12, vec23, num12, num23, line1, i, line2, _i, allPoints, _i2, j;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n dis12 = Cesium.Cartesian3.distance(polygonPositions[0], polygonPositions[1]);\n dis23 = Cesium.Cartesian3.distance(polygonPositions[1], polygonPositions[2]);\n vec12 = Cesium.Cartesian3.subtract(polygonPositions[1], polygonPositions[0], new Cesium.Cartesian3());\n vec23 = Cesium.Cartesian3.subtract(polygonPositions[2], polygonPositions[1], new Cesium.Cartesian3());\n num12 = Math.ceil(dis12 / spacing);\n num23 = Math.ceil(dis23 / spacing);\n line1 = [];\n i = 0;\n case 8:\n if (!(i < num12)) {\n _context2.next = 17;\n break;\n }\n _context2.t0 = line1;\n _context2.next = 12;\n return this.calculatePointB(polygonPositions[0], polygonPositions[1], i * spacing);\n case 12:\n _context2.t1 = _context2.sent;\n _context2.t0.push.call(_context2.t0, _context2.t1);\n case 14:\n i++;\n _context2.next = 8;\n break;\n case 17:\n line2 = [];\n _i = 0;\n case 19:\n if (!(_i < num12)) {\n _context2.next = 28;\n break;\n }\n _context2.t2 = line2;\n _context2.next = 23;\n return this.calculatePointB(polygonPositions[3], polygonPositions[2], _i * spacing);\n case 23:\n _context2.t3 = _context2.sent;\n _context2.t2.push.call(_context2.t2, _context2.t3);\n case 25:\n _i++;\n _context2.next = 19;\n break;\n case 28:\n allPoints = [];\n _i2 = 0;\n case 30:\n if (!(_i2 < line1.length)) {\n _context2.next = 44;\n break;\n }\n j = 0;\n case 32:\n if (!(j < num23)) {\n _context2.next = 41;\n break;\n }\n _context2.t4 = allPoints;\n _context2.next = 36;\n return this.calculatePointB(line1[_i2], line2[_i2], j * spacing);\n case 36:\n _context2.t5 = _context2.sent;\n _context2.t4.push.call(_context2.t4, _context2.t5);\n case 38:\n j++;\n _context2.next = 32;\n break;\n case 41:\n _i2++;\n _context2.next = 30;\n break;\n case 44:\n return _context2.abrupt(\"return\", allPoints);\n case 45:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function computedArea(_x3, _x4) {\n return _computedArea.apply(this, arguments);\n }\n return computedArea;\n }()\n }, {\n key: \"calculatePointB\",\n value: function () {\n var _calculatePointB = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3(pointA, pointC, distance) {\n var vectorAC, lengthAC, unitVector, scaledVector, pointB, cartographic, longitude, latitude, height, point;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n // 将输入坐标转换为Cartesian3类型\n // const pointA = Cesium.Cartesian3.fromDegrees(a.longitude, a.latitude, a.height);\n // const pointC = Cesium.Cartesian3.fromDegrees(c.longitude, c.latitude, c.height);\n // 计算向量AC\n vectorAC = Cesium.Cartesian3.subtract(pointC, pointA, new Cesium.Cartesian3()); // 计算向量AC的长度\n lengthAC = Cesium.Cartesian3.magnitude(vectorAC); // 归一化向量AC\n unitVector = Cesium.Cartesian3.normalize(vectorAC, new Cesium.Cartesian3()); // 计算点B坐标\n scaledVector = Cesium.Cartesian3.multiplyByScalar(unitVector, distance, new Cesium.Cartesian3());\n pointB = Cesium.Cartesian3.add(pointA, scaledVector, new Cesium.Cartesian3());\n cartographic = Cesium.Cartographic.fromCartesian(pointB // Cartesian3对象 {x, y, z}\n );\n longitude = Cesium.Math.toDegrees(cartographic.longitude);\n latitude = Cesium.Math.toDegrees(cartographic.latitude);\n _context3.next = 10;\n return this.getClampToHeight({\n lng: longitude,\n lat: latitude\n });\n case 10:\n height = _context3.sent;\n point = Cesium.Cartesian3.fromDegrees(longitude, latitude, height); // 转换回经纬度\n // const cartographic = Cesium.Cartographic.fromCartesian(pointB);\n // return {\n // longitude: Cesium.Math.toDegrees(cartographic.longitude),\n // latitude: Cesium.Math.toDegrees(cartographic.latitude),\n // height: cartographic.height\n // };\n // return pointB\n return _context3.abrupt(\"return\", point);\n case 13:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function calculatePointB(_x5, _x6, _x7) {\n return _calculatePointB.apply(this, arguments);\n }\n return calculatePointB;\n }()\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n for (var i = 0; i < this.pointArr.length; i++) {\n this.pointArr[i].show = v;\n }\n }\n }, {\n key: \"type\",\n get: function get() {\n return this.options.type;\n },\n set: function set(v) {\n this.options.type = v;\n this._elms.type && this._elms.type.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"spacing\",\n get: function get() {\n return this.options.spacing;\n },\n set: function set(v) {\n this.options.spacing = v;\n this._elms.spacing && this._elms.spacing.forEach(function (item) {\n item.value = v;\n });\n }\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n var _this3 = this;\n var state,\n _this,\n contentElm,\n all_elm,\n nameData,\n nameDataLegpObject,\n nameDataLegpElm,\n i,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n state = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context4.next = 33;\n break;\n }\n _context4.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk, this.originalOptions, {\n title: '默认模型参数设置',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this3.name = _this3.name.trim();\n if (!_this3.name) {\n // this.name = '未命名对象'\n _this3.name = '飞线';\n }\n var Draw;\n switch (_this3.options.type) {\n case '点':\n Draw = new _Draw_drawPoint__WEBPACK_IMPORTED_MODULE_21__[\"default\"](_this3.sdk);\n break;\n case '线':\n Draw = new _Draw_drawPolyline__WEBPACK_IMPORTED_MODULE_18__[\"default\"](_this3.sdk);\n break;\n case '面':\n Draw = new _Draw_drawThreeRect__WEBPACK_IMPORTED_MODULE_20__[\"default\"](_this3.sdk);\n break;\n default:\n break;\n }\n Draw && Draw.start(function (a, positions) {\n _this3.options.positions = positions;\n // this.callback(this.options);\n (_this3.options.positions.length || _this3.options.positions.lng) && BatchModel.computeDis(_this3);\n });\n _this3.originalOptions = _this3.deepCopyObj(_this3.options);\n _this3._DialogObject.close();\n _this3.Dialog.confirmCallBack && _this3.Dialog.confirmCallBack(_this3.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_15__[\"syncData\"])(_this3.sdk, _this3.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(_this3.sdk, _this3.options.id);\n },\n // resetCallBack: () => {\n // this.reset()\n // console.log('22222')\n // this.Dialog.resetCallBack && this.Dialog.resetCallBack()\n // },\n // removeCallBack: () => {\n // console.log('33333')\n // this.Dialog.removeCallBack && this.Dialog.removeCallBack()\n // },\n closeCallBack: function closeCallBack() {\n _this3.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this3.Dialog.closeCallBack && _this3.Dialog.closeCallBack();\n },\n addFootElm: [{\n tagName: 'button',\n className: 'flipe-over-y',\n innerHTML: '重置',\n event: ['click', function () {\n _this3.reset();\n }]\n }]\n // showCallBack: (show) => {\n // this.show = show\n // this.Dialog.showCallBack && this.Dialog.showCallBack()\n // }\n }, true);\n case 7:\n this._DialogObject = _context4.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' flow-line-surface';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n // let waterColorPicker = new YJColorPicker({\n // el: contentElm.getElementsByClassName(\"flowLine-color\")[0],\n // size: 'mini',//颜色box类型\n // alpha: true,//是否开启透明度\n // defaultColor: this.color,\n // disabled: false,//是否禁止打开颜色选择器\n // openPickerAni: 'opacity',//打开颜色选择器动画\n // sure: (color) => {\n // this.color = color\n // },//点击确认按钮事件回调\n // clear: () => {\n // this.color = 'rgba(255,255,255,1)'\n // },//点击清空按钮事件回调\n // })\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n nameData = [{\n name: '点',\n value: '点'\n }, {\n name: '线',\n value: '线'\n }, {\n name: '面',\n value: '面'\n }];\n nameDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('add-type-box')[0], '.add-type');\n if (!nameDataLegpObject) {\n _context4.next = 31;\n break;\n }\n nameDataLegpObject.legp_search(nameData);\n nameDataLegpElm = this._DialogObject._element.content.getElementsByClassName('add-type')[0].getElementsByTagName('input')[0];\n this._elms.type = [nameDataLegpElm];\n nameDataLegpElm.value = this.options.type;\n i = 0;\n case 23:\n if (!(i < nameData.length)) {\n _context4.next = 30;\n break;\n }\n if (!(nameData[i].value === nameDataLegpElm.value)) {\n _context4.next = 27;\n break;\n }\n nameDataLegpObject.legp_searchActive(nameData[i].value);\n return _context4.abrupt(\"break\", 30);\n case 27:\n i++;\n _context4.next = 23;\n break;\n case 30:\n nameDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < nameData.length; _i3++) {\n if (nameData[_i3].value === nameDataLegpElm.value) {\n _this3.type = nameData[_i3].value;\n break;\n }\n }\n });\n case 31:\n _context4.next = 33;\n break;\n case 33:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"drawArea\",\n value: function drawArea() {}\n }, {\n key: \"reset\",\n value: function reset() {\n this.name = this.originalOptions.name;\n this.type = this.originalOptions.type;\n this.spacing = this.originalOptions.spacing;\n this.show = this.originalOptions.show;\n this.options.spacing = this.originalOptions.spacing;\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee5() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n i,\n a,\n BoundingSphere,\n _orientation,\n _args5 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n options = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"closeViewFollow\"])(this.sdk);\n if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n // if (!position.hasOwnProperty('alt')) {\n // position.alt = await this.getClampToHeight(position)\n // }\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n } else {\n positionArray = [];\n if (this.options.positions.length > 0) {\n for (i = 0; i < this.options.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt);\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-20.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n } else if (this.options.positions.lng) {\n _orientation = {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n };\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.positions.lng, this.options.positions.lat, this.options.positions.alt + 100)\n // orientation: orientation\n });\n }\n }\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 删除\r\n */\n )\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee6() {\n var i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n for (i = 0; i < this.pointArr.length; i++) {\n this.pointArr[i].remove();\n }\n this.pointArr = [];\n this.positions = [];\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context6.next = 7;\n return this.sdk.removeIncetance(this.options.id);\n case 7:\n _context6.next = 9;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_15__[\"syncData\"])(this.sdk, this.options.id);\n case 9:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"computeDis\",\n value: function () {\n var _computeDis = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee7(that) {\n var fromDegreesArray, arr, posiArr, array, params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n fromDegreesArray = [];\n posiArr = [];\n array = [];\n if (!(that.options.type == '面')) {\n _context7.next = 13;\n break;\n }\n that.options.positions.forEach(function (item) {\n fromDegreesArray.push(item.lng, item.lat);\n });\n // arr = that.generateInterpolatedPoints(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray), that.options.spacing)\n _context7.next = 7;\n return that.computedArea(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray), that.options.spacing);\n case 7:\n arr = _context7.sent;\n array[0] = arr;\n array[1] = that.calculateRoadAngle(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)[0], Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)[3]);\n arr.forEach(function (item, index) {\n var cartographic = Cesium.Cartographic.fromCartesian(item // Cartesian3对象 {x, y, z}\n );\n var longitude = Cesium.Math.toDegrees(cartographic.longitude);\n var latitude = Cesium.Math.toDegrees(cartographic.latitude);\n var height = cartographic.height;\n posiArr.push({\n lng: longitude,\n lat: latitude,\n alt: height\n });\n });\n _context7.next = 24;\n break;\n case 13:\n if (!(that.options.type == '线')) {\n _context7.next = 23;\n break;\n }\n that.options.positions.forEach(function (item) {\n fromDegreesArray.push(item.lng, item.lat);\n });\n _context7.next = 17;\n return that.linePoint(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray), that.options.spacing);\n case 17:\n array = _context7.sent;\n arr = array[0];\n that.pointArr = arr;\n arr.forEach(function (item, index) {\n var cartographic = Cesium.Cartographic.fromCartesian(item // Cartesian3对象 {x, y, z}\n );\n var longitude = Cesium.Math.toDegrees(cartographic.longitude);\n var latitude = Cesium.Math.toDegrees(cartographic.latitude);\n var height = cartographic.height;\n posiArr.push({\n lng: longitude,\n lat: latitude,\n alt: height\n });\n });\n _context7.next = 24;\n break;\n case 23:\n if (that.options.type == '点') {\n // let height = await that.getClampToHeight({ lng: that.options.positions.lng, lat: that.options.positions.lat })\n posiArr = [{\n lng: that.options.positions.lng,\n lat: that.options.positions.lat,\n alt: that.options.positions.alt\n }];\n // posiArr = [that.options.positions]\n that.pointArr = posiArr;\n }\n case 24:\n params = {\n type: that.options.type,\n positions: posiArr,\n rotate: that.options.type == '点' ? undefined : array[1]\n };\n that.callback(params);\n // posiArr.forEach((item, index) => {\n // let model = new Model(that.sdk, {\n // id: 'model' + index,\n // show: that.options.show,\n // url: that.options.url,\n // position: item,\n // rotate: that.options.type == '点' ? undefined : { x: 0, y: 0, z: array[1] && (array[1][index] || array[1]) }\n // })\n // that.pointArr.push(model)\n // })\n case 26:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n function computeDis(_x8) {\n return _computeDis.apply(this, arguments);\n }\n return computeDis;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BatchModel);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmF0Y2hNb2RlbC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9CYXRjaE1vZGVsL2luZGV4LmpzPzM3MDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDmibnph4/mqKHlnotcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IE1vZGVsIGZyb20gJy4uL0Jhc2VTb3VyY2UvQmFzZU1vZGVsL01vZGVsJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCdcclxuXHJcbmltcG9ydCBEcmF3UG9seWxpbmUgZnJvbSAnLi4vLi4vLi4vRHJhdy9kcmF3UG9seWxpbmUnXHJcbmltcG9ydCBEcmF3UG9seWdvbiBmcm9tICcuLi8uLi8uLi9EcmF3L2RyYXdQb2x5Z29uJ1xyXG5pbXBvcnQgRHJhd1RocmVlUmVjdCBmcm9tICcuLi8uLi8uLi9EcmF3L2RyYXdUaHJlZVJlY3QnXHJcbmltcG9ydCBEcmF3UG9pbnQgZnJvbSAnLi4vLi4vLi4vRHJhdy9kcmF3UG9pbnQnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdywgQ2VzaXVtQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuXHJcbmNsYXNzIEJhdGNoTW9kZWwgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOaJuemHj+aooeWei1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOaJuemHj+aooeWei+WxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWU95pyq5ZG95ZCN5a+56LGhIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnR5cGU9cG9seWdvbiB7c3RyaW5nfSDnur/nsbvlnosobGluZSxwb2x5Z29uKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnVybD1wb2x5Z29uIHtzdHJpbmd9IOe6v+exu+WeiyhsaW5lLHBvbHlnb24scG9pbnQpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3BhY2luZz0ge251bWJlcn0g6Ze06LedXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufVxyXG4gICAqIEBwYXJhbSBEaWFsb2cge29iamVjdH0g5by55qGG5a+56LGhXHJcbiAgICogQHBhcmFtIERpYWxvZy5jb25maXJtQ2FsbEJhY2sge2Z1bmN0aW9ufSDlvLnmoYbnoa7orqTml7bnmoTlm57osINcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBjYWxsYmFjayA9IG51bGwsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMudmlld2VyID0gdGhpcy5zZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5om56YeP5qih5Z6LJ1xyXG4gICAgdGhpcy5vcHRpb25zLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ+mdoidcclxuICAgIHRoaXMub3B0aW9ucy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNwYWNpbmcgPSBvcHRpb25zLnNwYWNpbmcgKiAxIHx8IDUwXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gb3B0aW9ucy5wb3NpdGlvbnMgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMucG9pbnRBcnIgPSBbXVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIGxldCB0b29scyA9IG5ldyBUb29scyhzZGspXHJcbiAgICAvLyBCYXRjaE1vZGVsLmNvbXB1dGVEaXModGhpcylcclxuICAgIC8vIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+IDAgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sbmcpIHtcclxuICAgIGlmIChvcHRpb25zLnR5cGUgIT0gJ+eCuScgJiYgKHRoaXMub3B0aW9ucy5zcGFjaW5nIDwgMCB8fCBvcHRpb25zLnNwYWNpbmcgKiAxID09PSAwKSkge1xyXG4gICAgICB0b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiAn6K+36L6T5YWl5q2j56Gu55qE6Ze06Led77yBJyB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoKG9wdGlvbnMudHlwZSAmJiBvcHRpb25zLnNwYWNpbmcgIT0gdW5kZWZpbmVkKSB8fCBvcHRpb25zLnR5cGUgPT0gJ+eCuScpIHtcclxuICAgICAgLy8gQmF0Y2hNb2RlbC5jb21wdXRlRGlzKHRoaXMpXHJcblxyXG4gICAgICBsZXQgRHJhd1xyXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ+eCuSc6XHJcbiAgICAgICAgICBEcmF3ID0gbmV3IERyYXdQb2ludCh0aGlzLnNkaylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ+e6vyc6XHJcbiAgICAgICAgICBEcmF3ID0gbmV3IERyYXdQb2x5bGluZSh0aGlzLnNkaylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ+mdoic6XHJcbiAgICAgICAgICBEcmF3ID0gbmV3IERyYXdUaHJlZVJlY3QodGhpcy5zZGspXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgRHJhdyAmJiBEcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgICAgICBpZiAoIXBvc2l0aW9ucykgeyByZXR1cm4gfVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XHJcbiAgICAgICAgLy/liKTmlq3ojIPlm7TmmK/lkKbov4flpKdcclxuICAgICAgICBpZiAob3B0aW9ucy50eXBlID09ICfpnaInKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaSA9IHBvc2l0aW9ucy5tYXAodiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh2LmxuZywgdi5sYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGRpczEgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3NpWzBdLCBwb3NpWzFdKVxyXG4gICAgICAgICAgbGV0IGRpczIgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3NpWzFdLCBwb3NpWzJdKVxyXG4gICAgICAgICAgbGV0IG51bTEgPSBkaXMxIC8gdGhpcy5vcHRpb25zLnNwYWNpbmdcclxuICAgICAgICAgIGxldCBudW0yID0gZGlzMiAvIHRoaXMub3B0aW9ucy5zcGFjaW5nXHJcbiAgICAgICAgICBpZiAobnVtMSAqIG51bTIgPiAxMDApIHtcclxuICAgICAgICAgICAgdG9vbHMubWVzc2FnZSh7IHR5cGU6ICd3YXJuaW5nJywgdGV4dDogJ+aVsOmHj+Wkp+S6jjEwMO+8jOivt+mHjeaWsOe7mOWIticgfSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09ICfnur8nKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaSA9IHBvc2l0aW9ucy5tYXAodiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh2LmxuZywgdi5sYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGRpcyA9IDBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaS5sZW5ndGggLSAyOyBpKyspIHtcclxuICAgICAgICAgICAgZGlzICs9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvc2lbaV0sIHBvc2lbaSArIDFdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRpcyAvIHRoaXMub3B0aW9ucy5zcGFjaW5nID4gMTAwKSB7XHJcbiAgICAgICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6ICfmlbDph4/lpKfkuo4xMDDvvIzor7fph43mlrDnu5jliLYnIH0pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5jYWxsYmFjayh0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCB8fCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxuZykgJiYgQmF0Y2hNb2RlbC5jb21wdXRlRGlzKHRoaXMpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0KHRydWUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDorqHnrpfot53nprtcclxuICBzdGF0aWMgYXN5bmMgY29tcHV0ZURpcyh0aGF0KSB7XHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBsZXQgYXJyXHJcbiAgICBsZXQgcG9zaUFyciA9IFtdXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy50eXBlID09ICfpnaInKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goaXRlbS5sbmcsIGl0ZW0ubGF0KVxyXG4gICAgICB9KVxyXG4gICAgICAvLyBhcnIgPSB0aGF0LmdlbmVyYXRlSW50ZXJwb2xhdGVkUG9pbnRzKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSksIHRoYXQub3B0aW9ucy5zcGFjaW5nKVxyXG4gICAgICBhcnIgPSBhd2FpdCB0aGF0LmNvbXB1dGVkQXJlYShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpLCB0aGF0Lm9wdGlvbnMuc3BhY2luZylcclxuICAgICAgYXJyYXlbMF0gPSBhcnJcclxuICAgICAgYXJyYXlbMV0gPSB0aGF0LmNhbGN1bGF0ZVJvYWRBbmdsZShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpWzBdLCBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpWzNdKVxyXG4gICAgICBhcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oXHJcbiAgICAgICAgICBpdGVtIC8vIENhcnRlc2lhbjPlr7nosaEge3gsIHksIHp9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBsb25naXR1ZGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSk7XHJcbiAgICAgICAgY29uc3QgbGF0aXR1ZGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKTtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0O1xyXG4gICAgICAgIHBvc2lBcnIucHVzaCh7XHJcbiAgICAgICAgICBsbmc6IGxvbmdpdHVkZSxcclxuICAgICAgICAgIGxhdDogbGF0aXR1ZGUsXHJcbiAgICAgICAgICBhbHQ6IGhlaWdodFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2UgaWYgKHRoYXQub3B0aW9ucy50eXBlID09ICfnur8nKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goaXRlbS5sbmcsIGl0ZW0ubGF0KVxyXG4gICAgICB9KVxyXG4gICAgICBhcnJheSA9IGF3YWl0IHRoYXQubGluZVBvaW50KENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSksIHRoYXQub3B0aW9ucy5zcGFjaW5nKVxyXG4gICAgICBhcnIgPSBhcnJheVswXVxyXG4gICAgICB0aGF0LnBvaW50QXJyID0gYXJyXHJcbiAgICAgIGFyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihcclxuICAgICAgICAgIGl0ZW0gLy8gQ2FydGVzaWFuM+WvueixoSB7eCwgeSwgen1cclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKTtcclxuICAgICAgICBjb25zdCBsYXRpdHVkZSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcbiAgICAgICAgcG9zaUFyci5wdXNoKHtcclxuICAgICAgICAgIGxuZzogbG9uZ2l0dWRlLFxyXG4gICAgICAgICAgbGF0OiBsYXRpdHVkZSxcclxuICAgICAgICAgIGFsdDogaGVpZ2h0XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSBpZiAodGhhdC5vcHRpb25zLnR5cGUgPT0gJ+eCuScpIHtcclxuICAgICAgLy8gbGV0IGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sbmcsIGxhdDogdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sYXQgfSlcclxuICAgICAgcG9zaUFyciA9IFt7IGxuZzogdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sbmcsIGxhdDogdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sYXQsIGFsdDogdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5hbHQgfV1cclxuICAgICAgLy8gcG9zaUFyciA9IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zXVxyXG4gICAgICB0aGF0LnBvaW50QXJyID0gcG9zaUFyclxyXG4gICAgfVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgdHlwZTogdGhhdC5vcHRpb25zLnR5cGUsXHJcbiAgICAgIHBvc2l0aW9uczogcG9zaUFycixcclxuICAgICAgcm90YXRlOiB0aGF0Lm9wdGlvbnMudHlwZSA9PSAn54K5JyA/IHVuZGVmaW5lZCA6IGFycmF5WzFdXHJcbiAgICB9XHJcbiAgICB0aGF0LmNhbGxiYWNrKHBhcmFtcylcclxuICAgIC8vIHBvc2lBcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgIC8vICAgbGV0IG1vZGVsID0gbmV3IE1vZGVsKHRoYXQuc2RrLCB7XHJcbiAgICAvLyAgICAgaWQ6ICdtb2RlbCcgKyBpbmRleCxcclxuICAgIC8vICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgIC8vICAgICB1cmw6IHRoYXQub3B0aW9ucy51cmwsXHJcbiAgICAvLyAgICAgcG9zaXRpb246IGl0ZW0sXHJcbiAgICAvLyAgICAgcm90YXRlOiB0aGF0Lm9wdGlvbnMudHlwZSA9PSAn54K5JyA/IHVuZGVmaW5lZCA6IHsgeDogMCwgeTogMCwgejogYXJyYXlbMV0gJiYgKGFycmF5WzFdW2luZGV4XSB8fCBhcnJheVsxXSkgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICB0aGF0LnBvaW50QXJyLnB1c2gobW9kZWwpXHJcbiAgICAvLyB9KVxyXG4gIH1cclxuICBhc3luYyBsaW5lUG9pbnQocG9seWdvblBvc2l0aW9ucywgc3BhY2luZykge1xyXG4gICAgbGV0IGJvdW5kYXJ5UG9pbnRzID0gW107XHJcbiAgICBsZXQgYm91bmRhcnlBbmdsZSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2x5Z29uUG9zaXRpb25zLmxlbmd0aCAtIDE7IGkrKykge1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnQgPSBwb2x5Z29uUG9zaXRpb25zW2ldO1xyXG4gICAgICBjb25zdCBlbmQgPSBwb2x5Z29uUG9zaXRpb25zWyhpICsgMSkgJSBwb2x5Z29uUG9zaXRpb25zLmxlbmd0aF07XHJcbiAgICAgIGNvbnN0IHNlZ21lbnRMZW5ndGggPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShzdGFydCwgZW5kKTtcclxuICAgICAgY29uc3Qgc2VnbWVudHMgPSBNYXRoLmNlaWwoc2VnbWVudExlbmd0aCAvIHNwYWNpbmcpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gc2VnbWVudHM7IGorKykge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gaiAvIHNlZ21lbnRzO1xyXG4gICAgICAgIGxldCBwb2ludCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmxlcnAoXHJcbiAgICAgICAgICBzdGFydCwgZW5kLCByYXRpbywgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oXHJcbiAgICAgICAgICBwb2ludCAvLyBDYXJ0ZXNpYW4z5a+56LGhIHt4LCB5LCB6fVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICAgIGNvbnN0IGxhdGl0dWRlID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSk7XHJcblxyXG5cclxuICAgICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiBsb25naXR1ZGUsIGxhdDogbGF0aXR1ZGUgfSlcclxuICAgICAgICBwb2ludCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxvbmdpdHVkZSwgbGF0aXR1ZGUsIGhlaWdodCk7XHJcblxyXG4gICAgICAgIGJvdW5kYXJ5UG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICAgIGlmIChqICE9IHNlZ21lbnRzIHx8IGkgPT0gcG9seWdvblBvc2l0aW9ucy5sZW5ndGggLSAyKSB7XHJcbiAgICAgICAgICBib3VuZGFyeUFuZ2xlLnB1c2godGhpcy5jYWxjdWxhdGVSb2FkQW5nbGUoc3RhcnQsIGVuZCkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW1suLi5uZXcgU2V0KGJvdW5kYXJ5UG9pbnRzXHJcbiAgICAgIC5tYXAocCA9PiBgJHtwLnh9LCR7cC55fSwke3Auen1gKSldXHJcbiAgICAgIC5tYXAoc3RyID0+IHtcclxuICAgICAgICBjb25zdCBbeCwgeSwgel0gPSBzdHIuc3BsaXQoJywnKS5tYXAoTnVtYmVyKTtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKHgsIHksIHopO1xyXG4gICAgICB9KSwgYm91bmRhcnlBbmdsZV07XHJcbiAgfVxyXG4gIGNhbGN1bGF0ZVJvYWRBbmdsZShzdGFydFBvaW50LCBlbmRQb2ludCkge1xyXG4gICAgY29uc3Qgbm9ybWFsID0gQ2VzaXVtLkVsbGlwc29pZC5XR1M4NC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoc3RhcnRQb2ludCk7XHJcbiAgICBjb25zdCBlbnVNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShzdGFydFBvaW50LCB1bmRlZmluZWQsIG5vcm1hbCk7XHJcbiAgICBjb25zdCBpbnZlcnNlTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZShlbnVNYXRyaXgsIG5ldyBDZXNpdW0uTWF0cml4NCgpKTtcclxuXHJcbiAgICBjb25zdCBsb2NhbEVuZCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlQb2ludChpbnZlcnNlTWF0cml4LCBlbmRQb2ludCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgaG9yaXpvbnRhbFZlYyA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihsb2NhbEVuZC54LCBsb2NhbEVuZC55KTtcclxuICAgIENlc2l1bS5DYXJ0ZXNpYW4yLm5vcm1hbGl6ZShob3Jpem9udGFsVmVjLCBob3Jpem9udGFsVmVjKTtcclxuXHJcbiAgICBjb25zdCBub3J0aCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxLCAwKTtcclxuXHJcbiAgICBsZXQgYW5nbGUgPSBDZXNpdW0uQ2FydGVzaWFuMi5hbmdsZUJldHdlZW4obm9ydGgsIGhvcml6b250YWxWZWMpO1xyXG4gICAgYW5nbGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoYW5nbGUpXHJcbiAgICBjb25zdCBjcm9zcyA9IENlc2l1bS5DYXJ0ZXNpYW4yLmNyb3NzKG5vcnRoLCBob3Jpem9udGFsVmVjLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoKSk7XHJcbiAgICAvLyByZXR1cm4gY3Jvc3MgPCAwID8gYW5nbGUgOiAtIGFuZ2xlO1xyXG4gICAgcmV0dXJuIGNyb3NzIDwgMCA/IC1hbmdsZSA6IGFuZ2xlO1xyXG4gIH1cclxuICBnZW5lcmF0ZUludGVycG9sYXRlZFBvaW50cyhwb2x5Z29uUG9zaXRpb25zLCBzcGFjaW5nKSB7XHJcbiAgICAvLyAxLiDovrnnlYzngrnmj5LlgLxcclxuICAgIGNvbnN0IGJvdW5kYXJ5UG9pbnRzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2x5Z29uUG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9IHBvbHlnb25Qb3NpdGlvbnNbaV07XHJcbiAgICAgIGNvbnN0IGVuZCA9IHBvbHlnb25Qb3NpdGlvbnNbKGkgKyAxKSAlIHBvbHlnb25Qb3NpdGlvbnMubGVuZ3RoXTtcclxuICAgICAgY29uc3Qgc2VnbWVudExlbmd0aCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICBjb25zdCBzZWdtZW50cyA9IE1hdGguY2VpbChzZWdtZW50TGVuZ3RoIC8gc3BhY2luZyk7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8PSBzZWdtZW50czsgaisrKSB7XHJcbiAgICAgICAgY29uc3QgcmF0aW8gPSBqIC8gc2VnbWVudHM7XHJcbiAgICAgICAgY29uc3QgcG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5sZXJwKFxyXG4gICAgICAgICAgc3RhcnQsIGVuZCwgcmF0aW8sIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBib3VuZGFyeVBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIOWGhemDqOe9keagvOeUn+aIkFxyXG4gICAgY29uc3QgZXh0ZW50ID0gdGhpcy5jb21wdXRlUG9seWdvbkV4dGVudChwb2x5Z29uUG9zaXRpb25zKTtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmNyZWF0ZUdyaWRGcm9tQkJveChleHRlbnQsIHRoaXMub3B0aW9ucy5zcGFjaW5nKVxyXG4gICAgLy8gY29uc3QgZXh0ZW50ID0gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tQ2FydGVzaWFuQXJyYXkocG9seWdvblBvc2l0aW9ucyk7XHJcblxyXG4gICAgY29uc3QgZ3JpZFBvaW50cyA9IFtdO1xyXG4gICAgLy8gY29uc3QgcG9seWdvbiA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb2x5Z29uUG9zaXRpb25zKTtcclxuICAgIHZhciBwb2x5Z29uID0gW11cclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgcG9seWdvbi5wdXNoKFtpdGVtLmxuZywgaXRlbS5sYXRdKVxyXG4gICAgfSlcclxuICAgIHBvbHlnb24ucHVzaChwb2x5Z29uWzBdKVxyXG4gICAgZm9yIChsZXQgeCA9IGV4dGVudC53ZXN0OyB4IDw9IGV4dGVudC5lYXN0OyB4ICs9IHJlc3VsdC5sb25TdGVwKSB7XHJcbiAgICAgIGZvciAobGV0IHkgPSBleHRlbnQuc291dGg7IHkgPD0gZXh0ZW50Lm5vcnRoOyB5ICs9IHJlc3VsdC5sYXRTdGVwKSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh4LCB5KTtcclxuICAgICAgICBjb25zdCBwb2ludCA9IHR1cmYucG9pbnQoW3gsIHldKTtcclxuICAgICAgICBjb25zdCBwb2x5Z29uVHVyZiA9IHR1cmYucG9seWdvbihbcG9seWdvbl0pO1xyXG4gICAgICAgIGNvbnN0IGlzSW5zaWRlID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocG9pbnQsIHBvbHlnb25UdXJmKTtcclxuICAgICAgICBpc0luc2lkZSAmJiBncmlkUG9pbnRzLnB1c2gocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAzLiDlkIjlubbnu5Pmnpzlubbljrvph41cclxuICAgIC8vIHJldHVybiBbLi4ubmV3IFNldChbLi4uYm91bmRhcnlQb2ludHMsIC4uLmdyaWRQb2ludHNdXHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLmdyaWRQb2ludHNdXHJcbiAgICAgIC5tYXAocCA9PiBgJHtwLnh9LCR7cC55fSwke3Auen1gKSldXHJcbiAgICAgIC5tYXAoc3RyID0+IHtcclxuICAgICAgICBjb25zdCBbeCwgeSwgel0gPSBzdHIuc3BsaXQoJywnKS5tYXAoTnVtYmVyKTtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKHgsIHksIHopO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUdyaWRGcm9tQkJveChiYm94LCBzcGFjaW5nKSB7XHJcbiAgICBjb25zdCBlYXJ0aFJhZGl1cyA9IDYzNzgxMzc7IC8vIFdHUzg05qSt55CD5L2T6ZW/5Y2K6L20XHJcbiAgICAvLyDorqHnrpfnu4/luqbmlrnlkJHnvZHmoLzmlbBcclxuICAgIGNvbnN0IGxvbkRpc3RhbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UoXHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGJib3gud2VzdCwgKGJib3guc291dGggKyBiYm94Lm5vcnRoKSAvIDIsIDApLFxyXG4gICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhiYm94LmVhc3QsIChiYm94LnNvdXRoICsgYmJveC5ub3J0aCkgLyAyLCAwKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGxvbkNvdW50ID0gTWF0aC5jZWlsKGxvbkRpc3RhbmNlIC8gc3BhY2luZyk7XHJcblxyXG4gICAgLy8g6K6h566X57qs5bqm5pa55ZCR572R5qC85pWwXHJcbiAgICBjb25zdCBsYXREaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKFxyXG4gICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygoYmJveC53ZXN0ICsgYmJveC5lYXN0KSAvIDIsIGJib3guc291dGgsIDApLFxyXG4gICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygoYmJveC53ZXN0ICsgYmJveC5lYXN0KSAvIDIsIGJib3gubm9ydGgsIDApXHJcbiAgICApO1xyXG4gICAgY29uc3QgbGF0Q291bnQgPSBNYXRoLmNlaWwobGF0RGlzdGFuY2UgLyBzcGFjaW5nKTtcclxuICAgIC8vIOeUn+aIkOe9keagvOe6v1xyXG4gICAgY29uc3QgbG9uU3RlcCA9IChiYm94LmVhc3QgLSBiYm94Lndlc3QpIC8gbG9uQ291bnQ7XHJcbiAgICBjb25zdCBsYXRTdGVwID0gKGJib3gubm9ydGggLSBiYm94LnNvdXRoKSAvIGxhdENvdW50O1xyXG4gICAgcmV0dXJuIHsgbG9uU3RlcCwgbGF0U3RlcCB9XHJcbiAgfVxyXG5cclxuICBjb21wdXRlUG9seWdvbkV4dGVudChwb3NpdGlvbnMpIHtcclxuICAgIC8vIOiuoeeul+Wkmui+ueW9oue7j+e6rOW6puiMg+WbtFxyXG4gICAgY29uc3QgY2FydG9ncmFwaGljcyA9IHBvc2l0aW9ucy5tYXAocCA9PlxyXG4gICAgICBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocCkpO1xyXG4gICAgY29uc3QgbG9ucyA9IGNhcnRvZ3JhcGhpY3MubWFwKGMgPT4gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGMubG9uZ2l0dWRlKSk7XHJcbiAgICBjb25zdCBsYXRzID0gY2FydG9ncmFwaGljcy5tYXAoYyA9PiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoYy5sYXRpdHVkZSkpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2VzdDogTWF0aC5taW4oLi4ubG9ucyksXHJcbiAgICAgIGVhc3Q6IE1hdGgubWF4KC4uLmxvbnMpLFxyXG4gICAgICBzb3V0aDogTWF0aC5taW4oLi4ubGF0cyksXHJcbiAgICAgIG5vcnRoOiBNYXRoLm1heCguLi5sYXRzKVxyXG4gICAgfTtcclxuICB9XHJcbiAgYXN5bmMgY29tcHV0ZWRBcmVhKHBvbHlnb25Qb3NpdGlvbnMsIHNwYWNpbmcpIHtcclxuICAgIGxldCBkaXMxMiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvbHlnb25Qb3NpdGlvbnNbMF0sIHBvbHlnb25Qb3NpdGlvbnNbMV0pO1xyXG4gICAgbGV0IGRpczIzID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9seWdvblBvc2l0aW9uc1sxXSwgcG9seWdvblBvc2l0aW9uc1syXSk7XHJcbiAgICBsZXQgdmVjMTIgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwb2x5Z29uUG9zaXRpb25zWzFdLCBwb2x5Z29uUG9zaXRpb25zWzBdLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBsZXQgdmVjMjMgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwb2x5Z29uUG9zaXRpb25zWzJdLCBwb2x5Z29uUG9zaXRpb25zWzFdLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcblxyXG4gICAgbGV0IG51bTEyID0gTWF0aC5jZWlsKGRpczEyIC8gc3BhY2luZyk7XHJcbiAgICBsZXQgbnVtMjMgPSBNYXRoLmNlaWwoZGlzMjMgLyBzcGFjaW5nKTtcclxuXHJcbiAgICBsZXQgbGluZTEgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW0xMjsgaSsrKSB7XHJcbiAgICAgIGxpbmUxLnB1c2goYXdhaXQgdGhpcy5jYWxjdWxhdGVQb2ludEIocG9seWdvblBvc2l0aW9uc1swXSwgcG9seWdvblBvc2l0aW9uc1sxXSwgaSAqIHNwYWNpbmcpKVxyXG4gICAgfVxyXG4gICAgbGV0IGxpbmUyID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtMTI7IGkrKykge1xyXG4gICAgICBsaW5lMi5wdXNoKGF3YWl0IHRoaXMuY2FsY3VsYXRlUG9pbnRCKHBvbHlnb25Qb3NpdGlvbnNbM10sIHBvbHlnb25Qb3NpdGlvbnNbMl0sIGkgKiBzcGFjaW5nKSlcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYWxsUG9pbnRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZTEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW0yMzsgaisrKSB7XHJcbiAgICAgICAgYWxsUG9pbnRzLnB1c2goYXdhaXQgdGhpcy5jYWxjdWxhdGVQb2ludEIobGluZTFbaV0sIGxpbmUyW2ldLCBqICogc3BhY2luZykpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhbGxQb2ludHNcclxuICB9XHJcbiAgYXN5bmMgY2FsY3VsYXRlUG9pbnRCKHBvaW50QSwgcG9pbnRDLCBkaXN0YW5jZSkge1xyXG4gICAgLy8g5bCG6L6T5YWl5Z2Q5qCH6L2s5o2i5Li6Q2FydGVzaWFuM+exu+Wei1xyXG4gICAgLy8gY29uc3QgcG9pbnRBID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoYS5sb25naXR1ZGUsIGEubGF0aXR1ZGUsIGEuaGVpZ2h0KTtcclxuICAgIC8vIGNvbnN0IHBvaW50QyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGMubG9uZ2l0dWRlLCBjLmxhdGl0dWRlLCBjLmhlaWdodCk7XHJcblxyXG4gICAgLy8g6K6h566X5ZCR6YePQUNcclxuICAgIGNvbnN0IHZlY3RvckFDID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QocG9pbnRDLCBwb2ludEEsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuXHJcbiAgICAvLyDorqHnrpflkJHph49BQ+eahOmVv+W6plxyXG4gICAgY29uc3QgbGVuZ3RoQUMgPSBDZXNpdW0uQ2FydGVzaWFuMy5tYWduaXR1ZGUodmVjdG9yQUMpO1xyXG5cclxuICAgIC8vIOW9kuS4gOWMluWQkemHj0FDXHJcbiAgICBjb25zdCB1bml0VmVjdG9yID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKHZlY3RvckFDLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcblxyXG4gICAgLy8g6K6h566X54K5QuWdkOagh1xyXG4gICAgY29uc3Qgc2NhbGVkVmVjdG9yID0gQ2VzaXVtLkNhcnRlc2lhbjMubXVsdGlwbHlCeVNjYWxhcih1bml0VmVjdG9yLCBkaXN0YW5jZSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgcG9pbnRCID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHBvaW50QSwgc2NhbGVkVmVjdG9yLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcblxyXG5cclxuICAgIGNvbnN0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihcclxuICAgICAgcG9pbnRCIC8vIENhcnRlc2lhbjPlr7nosaEge3gsIHksIHp9XHJcbiAgICApO1xyXG4gICAgY29uc3QgbG9uZ2l0dWRlID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgY29uc3QgbGF0aXR1ZGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKTtcclxuXHJcblxyXG4gICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogbG9uZ2l0dWRlLCBsYXQ6IGxhdGl0dWRlIH0pXHJcbiAgICBsZXQgcG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb25naXR1ZGUsIGxhdGl0dWRlLCBoZWlnaHQpO1xyXG4gICAgLy8g6L2s5o2i5Zue57uP57qs5bqmXHJcbiAgICAvLyBjb25zdCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9pbnRCKTtcclxuICAgIC8vIHJldHVybiB7XHJcbiAgICAvLyAgIGxvbmdpdHVkZTogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gICAgLy8gICBsYXRpdHVkZTogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAvLyAgIGhlaWdodDogY2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgLy8gfTtcclxuICAgIC8vIHJldHVybiBwb2ludEJcclxuICAgIHJldHVybiBwb2ludFxyXG4gIH1cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucG9pbnRBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5wb2ludEFycltpXS5zaG93ID0gdlxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudHlwZVxyXG4gIH1cclxuXHJcbiAgc2V0IHR5cGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnR5cGUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLnR5cGUgJiZcclxuICAgICAgdGhpcy5fZWxtcy50eXBlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcbiAgZ2V0IHNwYWNpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwYWNpbmdcclxuICB9XHJcblxyXG4gIHNldCBzcGFjaW5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcGFjaW5nID0gdlxyXG4gICAgdGhpcy5fZWxtcy5zcGFjaW5nICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuc3BhY2luZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgLy8gbGV0IGVsbXMgPSB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tYmFzZS1kaWFsb2cnKVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IGVsbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoZWxtc1tpXSlcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3JpZ2luYWxPcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICfpu5jorqTmqKHlnovlj4LmlbDorr7nva4nLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+mjnue6vydcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgRHJhd1xyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICfngrknOlxyXG4gICAgICAgICAgICAgIERyYXcgPSBuZXcgRHJhd1BvaW50KHRoaXMuc2RrKVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICfnur8nOlxyXG4gICAgICAgICAgICAgIERyYXcgPSBuZXcgRHJhd1BvbHlsaW5lKHRoaXMuc2RrKVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICfpnaInOlxyXG4gICAgICAgICAgICAgIERyYXcgPSBuZXcgRHJhd1RocmVlUmVjdCh0aGlzLnNkaylcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIERyYXcgJiYgRHJhdy5zdGFydCgoYSwgcG9zaXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsbGJhY2sodGhpcy5vcHRpb25zKTtcclxuICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubG5nKSAmJiBCYXRjaE1vZGVsLmNvbXB1dGVEaXModGhpcylcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAvLyAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzIyMjIyJylcclxuICAgICAgICAvLyAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAvLyByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzMzMzMzJylcclxuICAgICAgICAvLyAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAgICAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZEZvb3RFbG06IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGFnTmFtZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2ZsaXBlLW92ZXIteScsXHJcbiAgICAgICAgICAgIGlubmVySFRNTDogJ+mHjee9ricsXHJcbiAgICAgICAgICAgIGV2ZW50OiBbXHJcbiAgICAgICAgICAgICAgJ2NsaWNrJyxcclxuICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgLy8gc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgIC8vICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGZsb3ctbGluZS1zdXJmYWNlJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICAvLyBsZXQgd2F0ZXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgLy8gICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZmxvd0xpbmUtY29sb3JcIilbMF0sXHJcbiAgICAgIC8vICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgIC8vICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgLy8gICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgIC8vICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgIC8vICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgIC8vICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgLy8gICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIC8vICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgLy8gICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIC8vIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIHRoaXMuX0V2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gdGhpcy5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuXHJcbiAgICAgIGxldCBuYW1lRGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn54K5JyxcclxuICAgICAgICAgIHZhbHVlOiAn54K5JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfnur8nLFxyXG4gICAgICAgICAgdmFsdWU6ICfnur8nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+mdoicsXHJcbiAgICAgICAgICB2YWx1ZTogJ+mdoicsXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcblxyXG4gICAgICBsZXQgbmFtZURhdGFMZWdwT2JqZWN0ID0gbGVncChcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ2FkZC10eXBlLWJveCdcclxuICAgICAgICApWzBdLFxyXG4gICAgICAgICcuYWRkLXR5cGUnXHJcbiAgICAgIClcclxuICAgICAgaWYgKG5hbWVEYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgIG5hbWVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaChuYW1lRGF0YSlcclxuICAgICAgICBsZXQgbmFtZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhZGQtdHlwZScpWzBdXHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICB0aGlzLl9lbG1zLnR5cGUgPSBbbmFtZURhdGFMZWdwRWxtXVxyXG4gICAgICAgIG5hbWVEYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy50eXBlXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKG5hbWVEYXRhW2ldLnZhbHVlID09PSBuYW1lRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgbmFtZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKG5hbWVEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBuYW1lRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChuYW1lRGF0YVtpXS52YWx1ZSA9PT0gbmFtZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlID0gbmFtZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLl9lbG1zLmNvbG9yID0gW3dhdGVyQ29sb3JQaWNrZXJdXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZiAodGhpcy5fZWxlbWVudF9zdHlsZSkge1xyXG4gICAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSlcclxuICAgICAgLy8gICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuICBkcmF3QXJlYSgpIHtcclxuXHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMudHlwZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnR5cGVcclxuICAgIHRoaXMuc3BhY2luZyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNwYWNpbmdcclxuICAgIHRoaXMuc2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNob3dcclxuICAgIHRoaXMub3B0aW9ucy5zcGFjaW5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3BhY2luZ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5Yiw5a+55bqU5a6e5L2TXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICAvLyBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAvLyAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgLy8gfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgQm91bmRpbmdTcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKHBvc2l0aW9uQXJyYXkpXHJcbiAgICAgICAgdGhpcy52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtMjAuMCksXHJcbiAgICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxuZykge1xyXG4gICAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtNjAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuYWx0ICsgMTAwKSxcclxuICAgICAgICAgIC8vIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucG9pbnRBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5wb2ludEFycltpXS5yZW1vdmUoKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucG9pbnRBcnIgPSBbXVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmF0Y2hNb2RlbFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbkJBO0FBQUE7QUFBQTtBQUFBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThCQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXJFQTtBQXNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQTtBQW5LQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNLQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdkZBO0FBQUE7QUFBQTtBQUFBO0FBd0ZBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFBQTtBQUFBO0FBQUE7QUF0bEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFwRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeWxCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/BatchModel/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BillboardObject/_element.js": -/*!**************************************************!*\ - !*** ./src/Obj/Base/BillboardObject/_element.js ***! - \**************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n

WGS84\\u5750\\u6807

\\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u8F6C\\u6362\\u5750\\u6807\\u9009\\u62E9\\n
\\n
\\n
\\n
\\n
\\n X\\u8F74:\\n \\n
\\n
\\n
\\n
\\n Y\\u8F74:\\n \\n
\\n
\\n
\\n
\\n Z\\u8F74:\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
\\n
\\n \\u6700\\u8FD1\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u6700\\u8FDC\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\u5C0F\\u6570\\u683C\\u5F0F\\n
\\n
\\n
\\n
\\n \\n \\u5EA6\\u5206\\u683C\\u5F0F\\n
\\n
\\n
\\n
\\n \\n \\u5EA6\\u5206\\u79D2\\u683C\\u5F0F\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n \\u5EA6\\n \\n \\u5206\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n \\u5EA6\\n \\n \\u5206\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n \\u5EA6\\n \\n \\u5206\\n \\n \\u79D2\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n \\u5EA6\\n \\n \\u5206\\n \\n \\u79D2\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n

\\u56FE\\u6807\\u8BBE\\u7F6E

\\n
\\n
\\n \\u663E\\u9690\\n \\n
\\n
\\n \\u56FE\\u6807\\n
\\n \\\"\\\"\\n
\\n
\\n
\\n \\u9ED8\\u8BA4\\u56FE\\u6807\\n
\\n \\\"\\\"\\n
\\n
\\n
\\n \\u56FE\\u6807\\u500D\\u6570\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n

\\u6587\\u5B57\\u8BBE\\u7F6E

\\n
\\n
\\n \\u663E\\u9690\\n \\n
\\n
\\n \\u5B57\\u4F53\\u9009\\u62E9\\n
\\n
\\n
\\n \\u6587\\u5B57\\u5927\\u5C0F\\n
\\n \\n px\\n \\n
\\n
\\n
\\n \\u6587\\u5B57\\u989C\\u8272\\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmlsbGJvYXJkT2JqZWN0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0JpbGxib2FyZE9iamVjdC9fZWxlbWVudC5qcz8xOGU2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiB1bnNldDtcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibGFiZWxUZXh0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDQ2JTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImxhYmxlLWxlZnQtbGluZVwiPldHUzg05Z2Q5qCHPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6rOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTBcIiBtYXg9XCI5MFwiIEBtb2RlbD1cImxhdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5rW35ouU6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgYWx0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiIEBtb2RlbD1cImFsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29vcmRpbmF0ZS1zZWxlY3QtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmxlLWxlZnQtbGluZVwiPui9rOaNouWdkOagh+mAieaLqVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQgaW5wdXQtc2VsZWN0IGNvb3JkaW5hdGUtc2VsZWN0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMjBweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPljovbQ6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6IG5vbmU7YmFja2dyb3VuZDogbm9uZTtcIiBjbGFzcz1cImlucHV0IGNvbnZlcnQteFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlnovbQ6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6IG5vbmU7YmFja2dyb3VuZDogbm9uZTtcIiBjbGFzcz1cImlucHV0IGNvbnZlcnQteVwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlrovbQ6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6IG5vbmU7YmFja2dyb3VuZDogbm9uZTtcIiBjbGFzcz1cImlucHV0IGNvbnZlcnQtelwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuinhumHjue8qeaUvjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzY2FsZUJ5RGlzdGFuY2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDov5Hot53nprs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OTk5OVwiIEBtb2RlbD1cIm5lYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDov5zot53nprs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OTk5OVwiIEBtb2RlbD1cImZhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxESVYtY3ktdGFicyBpZD1cInBvaW50LW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBoZWlnaHQtbW9kZS1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVpZ2h0LW1vZGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGhlaWdodFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJZSi1jdXN0b20tY2hlY2tib3gtYm94XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiWUotY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxcHg7dXNlci1zZWxlY3Q6IG5vbmU7XCI+5bCP5pWw5qC85byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJZSi1jdXN0b20tY2hlY2tib3gtYm94XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiWUotY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxcHg7dXNlci1zZWxlY3Q6IG5vbmU7XCI+5bqm5YiG5qC85byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJZSi1jdXN0b20tY2hlY2tib3gtYm94XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiWUotY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxcHg7dXNlci1zZWxlY3Q6IG5vbmU7XCI+5bqm5YiG56eS5qC85byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2otaW5wdXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6IDAgMCA0MHB4O1wiPue7j+W6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgbG5nXCIgcmVhZG9ubHk9XCJyZWFkb25seVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAwIDAgNDBweDtcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGxhdFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9qLWlucHV0LWJveFwiIHN0eWxlPVwid2lkdGg6IDU2JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAwIDAgNDBweDtcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsbmctZG0tZFwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsbmctZG0tbVwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7liIY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvcC1saW5lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OiAwIDAgNDBweDtcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsYXQtZG0tZFwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsYXQtZG0tbVwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7liIY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS1saW5lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2otaW5wdXQtYm94XCIgc3R5bGU9XCJ3aWR0aDogNzAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6IDAgMCA0MHB4O1wiPue7j+W6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGxuZy1kbXMtZFwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsbmctZG1zLW1cIiBzdHlsZT1cImZsZXg6IDE7XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDE0cHg7bWFyZ2luOiAwIDEwcHg7XCI+5YiGPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgbG5nLWRtcy1zXCIgc3R5bGU9XCJmbGV4OiAxO1wiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCAxNHB4O21hcmdpbjogMCAxMHB4O1wiPuenkjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9wLWxpbmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6IDAgMCA0MHB4O1wiPue6rOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGxhdC1kbXMtZFwiIHN0eWxlPVwiZmxleDogMTtcIiByZWFkb25seT1cInJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTRweDttYXJnaW46IDAgMTBweDtcIj7luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsYXQtZG1zLW1cIiBzdHlsZT1cImZsZXg6IDE7XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDE0cHg7bWFyZ2luOiAwIDEwcHg7XCI+5YiGPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgbGF0LWRtcy1zXCIgc3R5bGU9XCJmbGV4OiAxO1wiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCAxNHB4O21hcmdpbjogMCAxMHB4O1wiPuenkjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm90dG9tLWxpbmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoND7lm77moIforr7nva48L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogbm9uZTtcIj7mmL7pmpA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwiYmlsbGJvYXJkU2hvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDkwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiBub25lO1wiPuWbvuaghzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiBAY2xpY2s9XCJjbGlja0NoYW5nZUltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgc3JjPVwiXCIgYWx0PVwiXCIgQG1vZGVsPVwiYmlsbGJvYXJkSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDkwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiBub25lO1wiPum7mOiupOWbvuaghzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiBAY2xpY2s9XCJjbGlja0NoYW5nZURlZmF1bHRJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWFnZVwiIHNyYz1cIlwiIGFsdD1cIlwiIEBtb2RlbD1cImJpbGxib2FyZERlZmF1bHRJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Zu+5qCH5YCN5pWwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwLjFcIiBtYXg9XCI5OVwiIEBtb2RlbD1cImJpbGxib2FyZFNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+5YCNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0PuaWh+Wtl+iuvue9rjwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IG5vbmU7XCI+5pi+6ZqQPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cImxhYmVsU2hvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBmb250LXNlbGVjdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IG5vbmU7XCI+5a2X5L2T6YCJ5oupPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0IGlucHV0LXNlbGVjdCBmb250LXNlbGVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaWh+Wtl+Wkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5XCIgQG1vZGVsPVwibGFiZWxGb250U2l6ZVwiIHN0eWxlPVwid2lkdGg6IDcwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaWh+Wtl+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbENvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8IS0tIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmlYjmnpxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5omp5pWjPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cImRpZmZ1c2VTaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Y2K5b6EPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTk5OVwiIEBtb2RlbD1cImRpZmZ1c2VSYWRpdXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjEwMFwiIG1heD1cIjk5OTk5XCIgQG1vZGVsPVwiZGlmZnVzZUR1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpZmZ1c2VDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pm7fovr48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwic2NhblNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ljYrlvoQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTk5XCIgQG1vZGVsPVwic2NhblJhZGl1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaXtumXtDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMTAwXCIgbWF4PVwiOTk5OTlcIiBAbW9kZWw9XCJzY2FuRHVyYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NhbkNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPi0tPlxyXG48IS0tICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIueBr+WFieaOp+WItlwiPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgIDxkaXY+LS0+XHJcbjwhLS0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5oyH5LukPC9zcGFuPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJpbnN0cnVjdFwiPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgQGNsaWNrPVwiaW5zdHJ1Y3RTdWJtaXRcIj7mj5DkuqQ8L2J1dHRvbj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuPCEtLSAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPi0tPlxyXG48IS0tICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuiuvue9ruaTjeS9nOeCuVwiPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgIDxkaXY+LS0+XHJcbjwhLS0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6K6+572u5pON5L2c54K5PC9zcGFuPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJvcGVyYXRpbmdQb2ludFwiPi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgQGNsaWNrPVwib3BlcmF0aW5nUG9pbnRTdWJtaXRcIj7mj5DkuqQ8L2J1dHRvbj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG48IS0tICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuPCEtLSAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPi0tPlxyXG4gICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQXlVQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BillboardObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/BillboardObject/index.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/BillboardObject/index.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/readOnlyError */ \"./node_modules/@babel/runtime/helpers/readOnlyError.js\");\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_cy_html_slider__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/cy_html_slider */ \"./src/Obj/Element/cy_html_slider.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/BillboardObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/cluster/cluster */ \"./src/Global/cluster/cluster.js\");\n/* harmony import */ var _CircleDiffuse__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../CircleDiffuse */ \"./src/Obj/Base/CircleDiffuse/index.js\");\n/* harmony import */ var _RadarScan__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../RadarScan */ \"./src/Obj/Base/RadarScan/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Tools_getGoodsList__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../../../Tools/getGoodsList */ \"./src/Tools/getGoodsList.js\");\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n/**\r\n * 点\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _positionEditingCallback = /*#__PURE__*/new WeakMap();\nvar BillboardObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 点标注\r\n * @param options {object} 属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 标注整体的显隐\r\n * @param options.name {string} 名称\r\n * @param {object} options.position={} 必填,位置\r\n * @param {number} options.position.lng 经度\r\n * @param {number} options.position.lat 纬度\r\n * @param {number} options.position.alt 高度\r\n * @param {number} options.heightMode=3 高度模式(0:海拔高度;1:相对地表;2:依附地表; 3:依附模型)\r\n * @param [options.scaleByDistance=true] {boolean} 是否开启跟随视野缩放\r\n * @param [options.near=2000] {number} 视野缩放最近距离\r\n * @param [options.far=100000] {number} 视野缩放最远距离\r\n * @param options.billboard {object} 图标参数\r\n * @param [options.billboard.show=true] {boolean} 图标显隐\r\n * @param options.billboard.image {string} 图标路径\r\n * @param options.billboard.defaultImage {string} 默认图标的唯一标识\r\n * @param [options.billboard.scale=3] {number} 图标放大倍数\r\n * @param options.label {object} 文字参数\r\n * @param [options.label.text] {string} 文字内容\r\n * @param [options.label.show=true] {boolean} 文字显隐\r\n * @param [options.label.fontFamily=0] {number} 文字字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param [options.label.fontSize=39] {number} 文字大小, 单位px\r\n * @param [options.label.color=#00ffff] {string} 文字颜色\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param {object} options.attribute.vr={} 全景图\r\n * @param options.attribute.vr.content=[]] {array} 全景图内容\r\n * @param options.attribute.vr.content[].name {string} 名称\r\n * @param options.attribute.vr.content[].url {string} 地址\r\n * @param {object} ptions.attribute.camera={} 摄像头\r\n * @param options.attribute.camera.content=[]] {array} 摄像头内容\r\n * @param {object} options.attribute.isc={} isc\r\n * @param options.attribute.isc.content=[]] {array} ISC内容\r\n * @param {object} options.attribute.goods={} 物资\r\n * @param options.attribute.goods.content=[]] {array} 物资内容\r\n * @param options.attribute.goods.content[].ID {string} ID\r\n * @param options.attribute.goods.content[].name {string} 名称\r\n * @param options.attribute.goods.content[].cnt {string} 数量\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * \r\n \r\n \r\n *@param _Dialog {object} 弹框事件\r\n *@param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function BillboardObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, BillboardObject);\n _this2 = _callSuper(this, BillboardObject, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _positionEditingCallback, null);\n _this2.options.near = options.near || options.near === 0 ? options.near : 2000;\n _this2.options.far = options.far || options.far === 0 ? options.far : 100000;\n _this2.options.scaleByDistance = options.scaleByDistance || options.scaleByDistance === false ? options.scaleByDistance : true;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 3;\n _this2.options.billboard = options.billboard = options.billboard || {};\n // this.options.billboard.isSelect = options.billboard.isSelect || false\n _this2.options.billboard.show = options.billboard.show || options.billboard.show === false ? options.billboard.show : true;\n _this2.options.billboard.image = options.billboard.image || Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"getBillboardDefaultUrl\"])(options.billboard.defaultImage) || _this2.getSourceRootPath() + '/img/A-ablu-blank.png';\n _this2.options.billboard.defaultImage = options.billboard.defaultImage;\n _this2.options.billboard.scale = options.billboard.scale || options.billboard.scale === 0 ? options.billboard.scale : 3;\n options.label = options.label || {};\n _this2.options.label = options.label || {};\n _this2.options.label.text = options.label.text || _this2.options.name;\n _this2.options.name = _this2.options.label.text;\n _this2.options.label.show = options.label.show || options.label.show === false ? options.label.show : true;\n _this2.options.label.fontFamily = options.label.fontFamily || 0;\n _this2.options.label.fontSize = options.label.fontSize || 39;\n _this2.options.label.color = options.label.color || '#00ffff';\n _this2.options.position = options.position = options.position || {};\n _this2.options.position.lng = Number(Number(options.position.lng || 0).toFixed(8));\n _this2.options.position.lat = Number(Number(options.position.lat || 0).toFixed(8));\n _this2.options.position.alt = Number(Number(options.position.alt || 0).toFixed(2));\n // this.options.diffuseShow = options.diffuseShow || false\n // this.options.diffuseRadius = (options.diffuseRadius || options.diffuseRadius === 0) ? options.diffuseRadius : 10\n // this.options.diffuseDuration = (options.diffuseDuration || options.diffuseDuration === 0) ? options.diffuseDuration : 2000\n // this.options.diffuseColor = options.diffuseColor || \"#FF0000\"\n // this.options.scanShow = options.scanShow || false\n // this.options.scanRadius = (options.scanRadius || options.scanRadius === 0) ? options.scanRadius : 10\n // this.options.scanDuration = (options.scanDuration || options.scanDuration === 0) ? options.scanDuration : 2000\n // this.options.scanColor = options.scanColor || \"#FF0000\"\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.attribute.vr = _this2.options.attribute.vr || {};\n _this2.options.attribute.vr.content = _this2.options.attribute.vr.content || [];\n _this2.options.attribute.rtmp = _this2.options.attribute.rtmp || {};\n _this2.options.attribute.rtmp.content = _this2.options.attribute.rtmp.content || [];\n _this2.options.attribute.camera = _this2.options.attribute.camera || {};\n _this2.options.attribute.camera.content = _this2.options.attribute.camera.content || [];\n _this2.options.attribute.isc = _this2.options.attribute.isc || {};\n _this2.options.attribute.isc.content = _this2.options.attribute.isc.content || [];\n _this2.options.attribute.goods = _this2.options.attribute.goods || {};\n _this2.options.attribute.goods.content = _this2.options.attribute.goods.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n // this.options.coordinate = options.coordinate || ''\n _this2.operate = {};\n _this2._elms = {};\n _this2.previous = {\n position: _objectSpread({}, _this2.options.position)\n };\n // this.options.attributePos = options.attributePos || {\n // x: 60,\n // y: 60,\n // width: 200,\n // height: 120\n // }\n _this2.entity;\n _this2._proj = _this2.sdk.proj;\n\n // // 验证物资\n // let goodsContent = []\n // if(options.attribute && options.attribute.goods && options.attribute.goods.content && Array.isArray(options.attribute.goods.content)) {\n // goodsContent = [...options.attribute.goods.content]\n // }\n // this.options.attribute.goods.content = []\n // if (goodsContent.length > 0) {\n // getGoodsList().then((list)=>{\n // for (let i = goodsContent.length-1; i >= 0; i--) {\n // let falg = false\n // for (let j = 0; j < list.length; j++) {\n // if (goodsContent[i].ID === list[j].ID) {\n // falg = true\n // break\n // }\n // }\n // if(!falg) {\n // goodsContent.splice(i, 1)\n // }\n // }\n // this.options.attribute.goods.content = [...goodsContent]\n // })\n // }\n\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n BillboardObject.create(_this2);\n _this2.picking = true;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(BillboardObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(BillboardObject, [{\n key: \"type\",\n get: function get() {\n return 'BillboardObject';\n }\n }, {\n key: \"selectBillboard\",\n value:\n // 选中效果\n function selectBillboard() {\n var that = this;\n this.sdk.viewer.screenSpaceEventHandler.setInputAction(function (click) {\n var pickedObject = that.sdk.viewer.scene.pick(click.position);\n if (Cesium.defined(pickedObject) && pickedObject.id && pickedObject.id.id === 'airportBillboard') {\n if (that.entity.billboard) {\n // 如果点击的是Billboard,给它添加选中效果\n that.entity.billboard.color = Cesium.Color.YELLOW; // 改变颜色\n }\n // 可以添加更多选中效果,例如边框等\n } else {\n if (that.entity.billboard) {\n that.entity.billboard.color = Cesium.Color.WHITE;\n }\n }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n }\n }, {\n key: \"attributeSelect\",\n get: function get() {\n return [{\n name: '富文本',\n value: '富文本',\n key: 'richText'\n }, {\n name: '链接',\n value: '链接',\n key: 'link'\n }, {\n name: 'IP摄像头',\n value: 'IP摄像头',\n key: 'camera'\n },\n // {\n // name: 'ISC摄像头',\n // value: 'ISC摄像头',\n // key: 'isc'\n // },\n // {\n // name: '传感器',\n // value: '传感器',\n // key: 'sensor'\n // },\n {\n name: 'rtmp',\n value: 'rtmp',\n key: 'rtmp'\n }, {\n name: '全景图',\n value: '全景图',\n key: 'vr'\n }, {\n name: '物资',\n value: '物资',\n key: 'goods'\n }];\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (!this.isShowView) {\n this.options.show = v;\n this.originalOptions.show = v;\n }\n if (!this.showView || this.showView == 3) {\n this.entity && (this.entity.show = this.options.show);\n } else {\n this.entity && (this.entity.show = false);\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_22__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_28__[\"syncSplitData\"])(this.sdk, this.options.id);\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = this.options.show;\n }\n this.isShowView = false;\n // if (v) {\n // if (this.diffuseShow) {\n // this.diffuseShow = true\n // }\n // if (this.scanShow) {\n // this.scanShow = true\n // }\n // }\n // else {\n // if (this.diffuse) {\n // this.diffuse.show = v\n // }\n // if (this.scan) {\n // this.scan.show = v\n // }\n // }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.heightMode = v ? v : 0;\n this.options.heightMode = v || v == 0 ? v : 3;\n var heightMode;\n var heightModeName = '';\n switch (this.options.heightMode) {\n case '0':\n case 0:\n heightMode = Cesium.HeightReference.NONE;\n break;\n case '1':\n case 1:\n heightMode = Cesium.HeightReference.NONE;\n break;\n case '2':\n case 2:\n heightMode = Cesium.HeightReference.CLAMP_TO_GROUND;\n break;\n case '3':\n case 3:\n heightMode = Cesium.HeightReference.NONE;\n var objectsToExclude = [];\n var _iterator = _createForOfIteratorHelper(this.sdk.entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n this.getClampToHeight(this.options.position, objectsToExclude).then(function (h) {\n _this3.alt = Number(h.toFixed(2));\n });\n break;\n }\n if (this.entity) {\n this.entity.billboard.heightReference = heightMode;\n this.entity.label.heightReference = heightMode;\n }\n }\n }, {\n key: \"labelText\",\n get: function get() {\n return this.options.label.text;\n },\n set: function set(v) {\n this.options.label.text = v;\n this.options.name = v;\n this.entity && (this.entity.label.text = v + '');\n this._elms.labelText && this._elms.labelText.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.position.lng;\n },\n set: function set(v) {\n if (v === null || v === undefined || v === '') {\n this.options.position.lng = v;\n } else {\n this.options.position.lng = Number(Number(v).toFixed(8));\n }\n // this.scan && (this.scan.lng = v)\n // this.diffuse && (this.diffuse.lng = v)\n this.renewPoint();\n this.coordinate = this.options.coordinate;\n this._projConvert && this._projConvert();\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.position.lat;\n },\n set: function set(v) {\n if (v === null || v === undefined || v === '') {\n this.options.position.lat = v;\n } else {\n this.options.position.lat = Number(Number(v).toFixed(8));\n }\n // this.scan && (this.scan.lat = v)\n // this.diffuse && (this.diffuse.lat = v)\n this.renewPoint();\n this.coordinate = this.options.coordinate;\n this._projConvert && this._projConvert();\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.position.alt;\n },\n set: function set(v) {\n if (v === null || v === undefined || v === '') {\n this.options.position.alt = v;\n } else {\n this.options.position.alt = Number(Number(v).toFixed(2));\n }\n // this.scan && (this.scan.alt = v)\n // this.diffuse && (this.diffuse.alt = v)\n this.renewPoint();\n this.coordinate = this.options.coordinate;\n }\n }, {\n key: \"near\",\n get: function get() {\n return this.options.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.far) {\n near = this.far;\n }\n this.options.near = near;\n this.renewPoint();\n this._elms.near && this._elms.near.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"far\",\n get: function get() {\n return this.options.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.near) {\n far = this.near;\n }\n this.options.far = far;\n this.renewPoint();\n this._elms.far && this._elms.far.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"scaleByDistance\",\n get: function get() {\n return this.options.scaleByDistance;\n },\n set: function set(v) {\n this.options.scaleByDistance = v;\n this.renewPoint();\n this._elms.scaleByDistance && this._elms.scaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"billboardShow\",\n get: function get() {\n return this.options.billboard.show;\n },\n set: function set(v) {\n this.options.billboard.show = v;\n this.entity && (this.entity.billboard.color = this.options.billboard.show ? undefined : new Cesium.Color(1.0, 1.0, 1.0, 0));\n this._elms.billboardShow && this._elms.billboardShow.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"billboardImage\",\n get: function get() {\n var url = this.options.billboard.image;\n if (url && !url.startsWith(\"http\")) {\n //说明是本地的json,在磁盘中存在的\n if (!url.includes(\":\")) {\n if (this.options.host) {\n var o = new URL(url, this.options.host);\n url = o.href;\n }\n }\n }\n return url;\n },\n set: function set(v) {\n var _this = this;\n this.options.billboard.image = this.replaceHost(v, this.options.host);\n var url = this.options.billboard.image || Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"getBillboardDefaultUrl\"])(this.options.billboard.defaultImage) || this.getSourceRootPath() + '/img/A-ablu-blank.png';\n this._elms.billboardImage && this._elms.billboardImage.forEach(function (item) {\n item.src = url;\n });\n var isGlf = false;\n var superGif;\n if (_this.entity.billboard.image && _this.entity.billboard.image.getVa) {}\n if (url && url.endsWith('gif')) {\n isGlf = true;\n var gifImg = document.createElement('img');\n gifImg.setAttribute('rel:animated_src', url);\n gifImg.setAttribute('rel:auto_play', '1');\n var imgDiv = document.createElement('div');\n imgDiv.appendChild(gifImg);\n var id = Cesium.createGuid();\n superGif = new SuperGif({\n gif: gifImg\n });\n this._superGif = superGif;\n this._superGif.id = id;\n var billboardH = 36;\n var index = 0;\n _this._frameImages = [];\n superGif.load(function (status) {\n if (status == 404) {\n var _width = 31;\n var _height = 36;\n document.createElement('canvas'), _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_1___default()(\"canvas\");\n canvas.width = 0;\n canvas.height = 0;\n billboardH = 0;\n _this.entity.billboard.imgWidth = 0;\n _this.entity.billboard.imgHeight = 0;\n _this.entity && (_this.entity.billboard.image = canvas);\n _this.entity.billboard.height = new Cesium.CallbackProperty(function () {\n return 0;\n }, false);\n _this.entity.label.pixelOffset = new Cesium.CallbackProperty(function () {\n return new Cesium.Cartesian2(0, 0);\n }, false);\n billboardH = _height * (31 / _width);\n return;\n }\n if (_this._superGif.id != id) {\n return;\n }\n var length = superGif.get_length();\n for (var i = 1; i <= length; i++) {\n superGif.move_to(i);\n _this._frameImages.push(superGif.get_canvas().toDataURL());\n }\n var canvas = superGif.get_canvas();\n var width = canvas.width;\n var height = canvas.height;\n billboardH = height * (31 / width);\n _this.entity.billboard.imgWidth = width;\n _this.entity.billboard.imgHeight = height;\n _this.entity && (_this.entity.billboard.image = new Cesium.CallbackProperty(function () {\n var img = _this._frameImages[index];\n index = index >= _this._frameImages.length - 1 ? 0 : index + 1;\n return img;\n }, false));\n _this.entity.billboard.height = new Cesium.CallbackProperty(function () {\n return billboardH;\n }, false);\n _this.entity.label.pixelOffset = new Cesium.CallbackProperty(function () {\n if (_this.options.billboard.show) {\n return new Cesium.Cartesian2(0, -billboardH * _this.options.billboard.scale - _this.options.label.fontSize / 2 - 5);\n } else {\n return new Cesium.Cartesian2(0, -_this.options.label.fontSize / 2 - 5);\n }\n }, false);\n });\n } else {\n var image = new Image();\n image.src = url;\n var _billboardH = 36;\n var canvas = document.createElement('canvas');\n image.onload = function () {\n var ratio = image.width / image.height;\n image.width = 100;\n image.height = 100 / ratio;\n var width = image.width;\n var height = image.height;\n var ctx = canvas.getContext('2d', {\n willReadFrequently: true\n });\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(image, 0, 0, width, height);\n _billboardH = height * (31 / width);\n _this.entity.billboard.imgWidth = width;\n _this.entity.billboard.imgHeight = height;\n _this.entity && (_this.entity.billboard.image = canvas);\n _this.entity.billboard.height = new Cesium.CallbackProperty(function () {\n return _billboardH;\n }, false);\n _this.entity.label.pixelOffset = new Cesium.CallbackProperty(function () {\n if (_this.options.billboard.show) {\n return new Cesium.Cartesian2(0, -_billboardH * _this.options.billboard.scale - _this.options.label.fontSize / 2 - 5);\n } else {\n return new Cesium.Cartesian2(0, -_this.options.label.fontSize / 2 - 5);\n }\n }, false);\n _billboardH = height * (31 / width);\n };\n image.onerror = function (err) {\n var width = 31;\n var height = 36;\n canvas.width = 0;\n canvas.height = 0;\n _billboardH = 0;\n _this.entity.billboard.imgWidth = 0;\n _this.entity.billboard.imgHeight = 0;\n _this.entity && (_this.entity.billboard.image = canvas);\n _this.entity.billboard.height = new Cesium.CallbackProperty(function () {\n return 0;\n }, false);\n _this.entity.label.pixelOffset = new Cesium.CallbackProperty(function () {\n return new Cesium.Cartesian2(0, 0);\n }, false);\n _billboardH = height * (31 / width);\n };\n }\n }\n }, {\n key: \"billboardScale\",\n get: function get() {\n return this.options.billboard.scale;\n },\n set: function set(v) {\n this.options.billboard.scale = v;\n this.renewPoint();\n this._elms.billboardScale && this._elms.billboardScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n this.entity && (this.entity.label.show = v);\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.renewPoint();\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_26__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.renewPoint();\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.label.color = v || '#00ffff';\n this.renewPoint();\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this4.options.label.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.labelColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.labelColor = 'rgba(0,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.labelColor[i] = colorPicker;\n });\n }\n }\n\n // get diffuseShow() {\n // return this.options.diffuseShow\n // }\n // set diffuseShow(v) {\n // this.options.diffuseShow = v\n // this._elms.diffuseShow && this._elms.diffuseShow.forEach((item) => {\n // item.checked = v\n // })\n // if (v && this.scanShow) {\n // this.scanShow = false\n // }\n // if (this.diffuse) {\n // if (this.show) {\n // this.diffuse.show = this.options.diffuseShow\n // }\n // }\n // else {\n // this.diffuse = new CircleDiffuse(this.sdk, { show: this.diffuseShow, lng: this.lng, lat: this.lat, radius: this.diffuseRadius, duration: this.diffuseDuration, color: this.diffuseColor })\n // }\n // }\n\n // get diffuseRadius() {\n // return this.options.diffuseRadius\n // }\n // set diffuseRadius(v) {\n // this.options.diffuseRadius = v\n // this._elms.diffuseRadius && this._elms.diffuseRadius.forEach((item) => {\n // item.value = v\n // })\n // if (this.diffuse) {\n // this.diffuse.radius = this.options.diffuseRadius\n // }\n // }\n\n // get diffuseDuration() {\n // return this.options.diffuseDuration\n // }\n // set diffuseDuration(v) {\n // this.options.diffuseDuration = v\n // this._elms.diffuseDuration && this._elms.diffuseDuration.forEach((item) => {\n // item.value = v\n // })\n // if (this.diffuse) {\n // this.diffuse.duration = this.options.diffuseDuration\n // }\n // }\n\n // get diffuseColor() {\n // return this.options.diffuseColor\n // }\n // set diffuseColor(v) {\n // this.options.diffuseColor = v\n // if (this._elms.diffuseColor) {\n // this._elms.diffuseColor.forEach((item, i) => {\n // let diffuseColorPicker = new YJColorPicker({\n // el: item.el,\n // size: 'mini',//颜色box类型\n // alpha: false,//是否开启透明度\n // defaultColor: v,\n // disabled: false,//是否禁止打开颜色选择器\n // openPickerAni: 'opacity',//打开颜色选择器动画\n // sure: (c) => {\n // this.diffuseColor = c\n // },//点击确认按钮事件回调\n // clear: () => {\n // this.diffuseColor = 'rgba(255,255,255,1)'\n // },//点击清空按钮事件回调\n // })\n // this._elms.diffuseColor[i] = diffuseColorPicker\n // })\n // }\n // if (this.diffuse) {\n // this.diffuse.color = this.options.diffuseColor\n // }\n // }\n\n // get scanShow() {\n // return this.options.scanShow\n // }\n // set scanShow(v) {\n // this.options.scanShow = v\n // this._elms.scanShow && this._elms.scanShow.forEach((item) => {\n // item.checked = v\n // })\n // if (v && this.diffuseShow) {\n // this.diffuseShow = false\n // }\n // if (this.scan) {\n // if (this.show) {\n // this.scan.show = this.options.scanShow\n // }\n // }\n // else {\n // this.scan = new RadarScan(this.sdk, { show: this.scanShow, lng: this.lng, lat: this.lat, radius: this.scanRadius, duration: this.scanDuration, color: this.scanColor })\n // }\n // }\n\n // get scanRadius() {\n // return this.options.scanRadius\n // }\n // set scanRadius(v) {\n // this.options.scanRadius = v\n // this._elms.scanRadius && this._elms.scanRadius.forEach((item) => {\n // item.value = v\n // })\n // if (this.scan) {\n // this.scan.radius = this.options.scanRadius\n // }\n // }\n\n // get scanDuration() {\n // return this.options.scanDuration\n // }\n // set scanDuration(v) {\n // this.options.scanDuration = v\n // this._elms.scanDuration && this._elms.scanDuration.forEach((item) => {\n // item.value = v\n // })\n // if (this.scan) {\n // this.scan.duration = this.options.scanDuration\n // }\n // }\n\n // get scanColor() {\n // return this.options.scanColor\n // }\n // set scanColor(v) {\n // this.options.scanColor = v\n // if (this._elms.scanColor) {\n // this._elms.scanColor.forEach((item, i) => {\n // let scanColorPicker = new YJColorPicker({\n // el: item.el,\n // size: 'mini',//颜色box类型\n // alpha: false,//是否开启透明度\n // defaultColor: v,\n // disabled: false,//是否禁止打开颜色选择器\n // openPickerAni: 'opacity',//打开颜色选择器动画\n // sure: (c) => {\n // this.scanColor = c\n // },//点击确认按钮事件回调\n // clear: () => {\n // this.scanColor = 'rgba(255,255,255,1)'\n // },//点击清空按钮事件回调\n // })\n // this._elms.scanColor[i] = scanColorPicker\n // })\n // }\n // if (this.scan) {\n // this.scan.color = this.options.scanColor\n // }\n // }\n }, {\n key: \"attributeLink\",\n get: function get() {\n return this.options.attribute.link.content;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.attribute.link.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.link.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.link.content[i].name + \"
\\n
\" + this.options.attribute.link.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(index) {\n var table, tableContent, item, _loop, _i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this5.options.attribute.link.content;\n case 2:\n _this5.attributeLink = _context3.sent;\n table = _this5._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop(_i) {\n var height, _html, textareaElm, td, btn, n, _iterator2, _step2, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(index === _i)) {\n _context2.next = 36;\n break;\n }\n height = item[_i].offsetHeight;\n _html = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i].innerHTML = _html;\n textareaElm = item[_i].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this5.options.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this5.options.attribute.link.content[index].url;\n btn = item[_i].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context2.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context2.next = 14;\n break;\n }\n return _context2.abrupt(\"continue\", 32);\n case 14:\n _iterator2 = _createForOfIteratorHelper(btn[n].attributes);\n _context2.prev = 15;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop2$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n m = _step2.value;\n if (!(m.name === '@click')) {\n _context.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _loop2);\n });\n _iterator2.s();\n case 18:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 24;\n break;\n }\n return _context2.delegateYield(_loop2(), \"t0\", 20);\n case 20:\n if (!_context2.t0) {\n _context2.next = 22;\n break;\n }\n return _context2.abrupt(\"break\", 24);\n case 22:\n _context2.next = 18;\n break;\n case 24:\n _context2.next = 29;\n break;\n case 26:\n _context2.prev = 26;\n _context2.t1 = _context2[\"catch\"](15);\n _iterator2.e(_context2.t1);\n case 29:\n _context2.prev = 29;\n _iterator2.f();\n return _context2.finish(29);\n case 32:\n n++;\n _context2.next = 11;\n break;\n case 35:\n return _context2.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context2.stop();\n }\n }, _loop, null, [[15, 26, 29, 32]]);\n });\n _i = 0;\n case 8:\n if (!(_i < item.length)) {\n _context3.next = 15;\n break;\n }\n return _context3.delegateYield(_loop(_i), \"t0\", 10);\n case 10:\n if (!_context3.t0) {\n _context3.next = 12;\n break;\n }\n return _context3.abrupt(\"break\", 15);\n case 12:\n _i++;\n _context3.next = 8;\n break;\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee);\n }));\n function linkEdit(_x) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this5.options.attribute.link.content.splice(i, 1);\n _this5.attributeLink = _this5.options.attribute.link.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, '');\n var url = value.url && value.url.replace(/\\s/g, '');\n if (name && url) {\n _this5.options.attribute.link.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this5.attributeLink = _this5.options.attribute.link.content;\n },\n cancelEdit: function cancelEdit() {\n _this5.attributeLink = _this5.options.attribute.link.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect);\n fileElm.addEventListener('change', _fileSelect);\n }\n };\n var _fileSelect = function _fileSelect(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop3 = function _loop3(_i2) {\n var btn = item[_i2].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator3 = _createForOfIteratorHelper(btn[n].attributes),\n _step3;\n try {\n var _loop4 = function _loop4() {\n var m = _step3.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i2);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n };\n for (var _i2 = 0; _i2 < item.length; _i2++) {\n _loop3(_i2);\n }\n }\n }, {\n key: \"attributeCamera\",\n get: function get() {\n return this.options.attribute.camera.content;\n },\n set: function set(v) {\n this.options.attribute.camera.content = v;\n }\n }, {\n key: \"attributeISC\",\n get: function get() {\n return this.options.attribute.isc.content;\n },\n set: function set(v) {\n this.options.attribute.isc.content = v;\n }\n }, {\n key: \"attributeVr\",\n get: function get() {\n return this.options.attribute.vr.content;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.attribute.vr.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.vr.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.vr.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.vr.content[i].name + \"
\\n
\" + this.options.attribute.vr.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n vrEdit: function () {\n var _vrEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(index) {\n var table, tableContent, item, _loop5, _i3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this6.options.attribute.vr.content;\n case 2:\n _this6.attributeVr = _context6.sent;\n table = _this6._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop5 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop5(_i3) {\n var height, _html2, textareaElm, td, btn, n, _iterator4, _step4, _loop6;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!(index === _i3)) {\n _context5.next = 36;\n break;\n }\n height = item[_i3].offsetHeight;\n _html2 = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i3].innerHTML = _html2;\n textareaElm = item[_i3].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i3].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this6.options.attribute.vr.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this6.options.attribute.vr.content[index].url;\n btn = item[_i3].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context5.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context5.next = 14;\n break;\n }\n return _context5.abrupt(\"continue\", 32);\n case 14:\n _iterator4 = _createForOfIteratorHelper(btn[n].attributes);\n _context5.prev = 15;\n _loop6 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop6() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop6$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n m = _step4.value;\n if (!(m.name === '@click')) {\n _context4.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i3);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context4.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _loop6);\n });\n _iterator4.s();\n case 18:\n if ((_step4 = _iterator4.n()).done) {\n _context5.next = 24;\n break;\n }\n return _context5.delegateYield(_loop6(), \"t0\", 20);\n case 20:\n if (!_context5.t0) {\n _context5.next = 22;\n break;\n }\n return _context5.abrupt(\"break\", 24);\n case 22:\n _context5.next = 18;\n break;\n case 24:\n _context5.next = 29;\n break;\n case 26:\n _context5.prev = 26;\n _context5.t1 = _context5[\"catch\"](15);\n _iterator4.e(_context5.t1);\n case 29:\n _context5.prev = 29;\n _iterator4.f();\n return _context5.finish(29);\n case 32:\n n++;\n _context5.next = 11;\n break;\n case 35:\n return _context5.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context5.stop();\n }\n }, _loop5, null, [[15, 26, 29, 32]]);\n });\n _i3 = 0;\n case 8:\n if (!(_i3 < item.length)) {\n _context6.next = 15;\n break;\n }\n return _context6.delegateYield(_loop5(_i3), \"t0\", 10);\n case 10:\n if (!_context6.t0) {\n _context6.next = 12;\n break;\n }\n return _context6.abrupt(\"break\", 15);\n case 12:\n _i3++;\n _context6.next = 8;\n break;\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee2);\n }));\n function vrEdit(_x2) {\n return _vrEdit.apply(this, arguments);\n }\n return vrEdit;\n }(),\n vrDelete: function vrDelete(i) {\n _this6.options.attribute.vr.content.splice(i, 1);\n _this6.attributeVr = _this6.options.attribute.vr.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, '');\n var url = value.url && value.url.replace(/\\s/g, '');\n if (name && url) {\n _this6.options.attribute.vr.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this6.attributeVr = _this6.options.attribute.vr.content;\n },\n cancelEdit: function cancelEdit() {\n _this6.attributeVr = _this6.options.attribute.vr.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect2);\n fileElm.addEventListener('change', _fileSelect2);\n }\n };\n var _fileSelect2 = function _fileSelect2(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop7 = function _loop7(_i4) {\n var btn = item[_i4].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator5 = _createForOfIteratorHelper(btn[n].attributes),\n _step5;\n try {\n var _loop8 = function _loop8() {\n var m = _step5.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i4);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n if (_loop8()) break;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n };\n for (var _i4 = 0; _i4 < item.length; _i4++) {\n _loop7(_i4);\n }\n }\n }, {\n key: \"attributeRtmp\",\n get: function get() {\n return this.options.attribute.rtmp.content;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.attribute.rtmp.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-rtmp').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-rtmp')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.rtmp.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.rtmp.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.rtmp.content[i].name + \"
\\n
\" + this.options.attribute.rtmp.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n rtmpEdit: function () {\n var _rtmpEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3(index) {\n var table, tableContent, item, _loop9, _i5;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this7.options.attribute.rtmp.content;\n case 2:\n _this7.attributeRtmp = _context9.sent;\n table = _this7._DialogObject._element.content.getElementsByClassName('attribute-content-rtmp')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop9 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop9(_i5) {\n var height, _html3, textareaElm, td, btn, n, _iterator6, _step6, _loop10;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop9$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (!(index === _i5)) {\n _context8.next = 36;\n break;\n }\n height = item[_i5].offsetHeight;\n _html3 = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i5].innerHTML = _html3;\n textareaElm = item[_i5].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i5].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this7.options.attribute.rtmp.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this7.options.attribute.rtmp.content[index].url;\n btn = item[_i5].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context8.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context8.next = 14;\n break;\n }\n return _context8.abrupt(\"continue\", 32);\n case 14:\n _iterator6 = _createForOfIteratorHelper(btn[n].attributes);\n _context8.prev = 15;\n _loop10 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop10() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop10$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n m = _step6.value;\n if (!(m.name === '@click')) {\n _context7.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i5);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context7.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context7.stop();\n }\n }, _loop10);\n });\n _iterator6.s();\n case 18:\n if ((_step6 = _iterator6.n()).done) {\n _context8.next = 24;\n break;\n }\n return _context8.delegateYield(_loop10(), \"t0\", 20);\n case 20:\n if (!_context8.t0) {\n _context8.next = 22;\n break;\n }\n return _context8.abrupt(\"break\", 24);\n case 22:\n _context8.next = 18;\n break;\n case 24:\n _context8.next = 29;\n break;\n case 26:\n _context8.prev = 26;\n _context8.t1 = _context8[\"catch\"](15);\n _iterator6.e(_context8.t1);\n case 29:\n _context8.prev = 29;\n _iterator6.f();\n return _context8.finish(29);\n case 32:\n n++;\n _context8.next = 11;\n break;\n case 35:\n return _context8.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context8.stop();\n }\n }, _loop9, null, [[15, 26, 29, 32]]);\n });\n _i5 = 0;\n case 8:\n if (!(_i5 < item.length)) {\n _context9.next = 15;\n break;\n }\n return _context9.delegateYield(_loop9(_i5), \"t0\", 10);\n case 10:\n if (!_context9.t0) {\n _context9.next = 12;\n break;\n }\n return _context9.abrupt(\"break\", 15);\n case 12:\n _i5++;\n _context9.next = 8;\n break;\n case 15:\n case \"end\":\n return _context9.stop();\n }\n }, _callee3);\n }));\n function rtmpEdit(_x3) {\n return _rtmpEdit.apply(this, arguments);\n }\n return rtmpEdit;\n }(),\n rtmpDelete: function rtmpDelete(i) {\n _this7.options.attribute.rtmp.content.splice(i, 1);\n _this7.attributeRtmp = _this7.options.attribute.rtmp.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, '');\n var url = value.url && value.url.replace(/\\s/g, '');\n if (name && url) {\n _this7.options.attribute.rtmp.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this7.attributeRtmp = _this7.options.attribute.rtmp.content;\n },\n cancelEdit: function cancelEdit() {\n _this7.attributeRtmp = _this7.options.attribute.rtmp.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect3);\n fileElm.addEventListener('change', _fileSelect3);\n }\n };\n var _fileSelect3 = function _fileSelect3(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop11 = function _loop11(_i6) {\n var btn = item[_i6].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator7 = _createForOfIteratorHelper(btn[n].attributes),\n _step7;\n try {\n var _loop12 = function _loop12() {\n var m = _step7.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i6);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n if (_loop12()) break;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n };\n for (var _i6 = 0; _i6 < item.length; _i6++) {\n _loop11(_i6);\n }\n }\n }, {\n key: \"attributeGoods\",\n get: function get() {\n return this.options.attribute.goods.content;\n },\n set: function set(v) {\n this.options.attribute.goods.content = v;\n }\n }, {\n key: \"billboardDefaultImage\",\n get: function get() {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"getBillboardDefaultUrl\"])(this.options.billboard.defaultImage) || this.getSourceRootPath() + '/img/A-ablu-blank.png';\n },\n set: function set(v) {\n var url = this.replaceHost(v, this.options.host);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setBillboardDefaultUrl\"])(url, this.options.billboard.defaultImage);\n this._elms.billboardDefaultImage && this._elms.billboardDefaultImage.forEach(function (item) {\n item.src = url;\n });\n }\n }, {\n key: \"coordinate\",\n get: function get() {\n return this.options.coordinate;\n },\n set: function set(v) {\n return;\n this.options.coordinate = v;\n var position = this._proj.convert([{\n x: this.options.position.lng,\n y: this.options.position.lat,\n z: this.options.position.alt\n }], 'EPSG:4326', v).points;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content && position[0]) {\n this._DialogObject._element.content.getElementsByClassName('convert-x')[0].value = position[0].x;\n this._DialogObject._element.content.getElementsByClassName('convert-y')[0].value = position[0].y;\n this._DialogObject._element.content.getElementsByClassName('convert-z')[0].value = position[0].z;\n }\n this._elms.coordinate && this._elms.coordinate.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee5() {\n var _this8 = this;\n var state,\n _this,\n contentElm,\n tabsElm,\n colorPicker,\n all_elm,\n lngEln,\n latEln,\n projCheckboxBoxElms,\n projCheckboxElms,\n projInputBoxElms,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee5$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n state = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : false;\n return _context11.abrupt(\"return\");\n case 8:\n this._DialogObject = _context11.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' billboard-object';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_16__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeISC = this.options.attribute.isc.content;\n\n // let coordinateElm = contentElm.getElementsByClassName('coordinate-select')[0]\n // let option = ''\n // this._proj.epsg_map.forEach((value, key) => {\n // if (!this.options.coordinate) {\n // this.options.coordinate = key\n // this.originalOptions.coordinate = key\n // }\n // option += ``\n // })\n // coordinateElm.innerHTML = option\n // this.coordinate = this.options.coordinate\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_14__[\"default\"]('point-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n }); // let diffuseColorPicker = new YJColorPicker({\n // el: contentElm.getElementsByClassName(\"diffuseColor\")[0],\n // size: 'mini',//颜色box类型\n // alpha: false,//是否开启透明度\n // defaultColor: this.diffuseColor,\n // disabled: false,//是否禁止打开颜色选择器\n // openPickerAni: 'opacity',//打开颜色选择器动画\n // sure: (color) => {\n // this.diffuseColor = color\n // },//点击确认按钮事件回调\n // clear: () => {\n // this.diffuseColor = 'rgba(255,255,255,1)'\n // },//点击清空按钮事件回调\n // })\n // let scanColorPicker = new YJColorPicker({\n // el: contentElm.getElementsByClassName(\"scanColor\")[0],\n // size: 'mini',//颜色box类型\n // alpha: false,//是否开启透明度\n // defaultColor: this.scanColor,\n // disabled: false,//是否禁止打开颜色选择器\n // openPickerAni: 'opacity',//打开颜色选择器动画\n // sure: (color) => {\n // this.scanColor = color\n // },//点击确认按钮事件回调\n // clear: () => {\n // this.scanColor = 'rgba(255,255,255,1)'\n // },//点击清空按钮事件回调\n // })\n all_elm = contentElm.getElementsByTagName('*');\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.labelColor = [colorPicker];\n // this._elms.diffuseColor = [diffuseColorPicker]\n // this._elms.scanColor = [scanColorPicker]\n\n setTimeout(/*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n var col, row, tagData, attributeElm, legpObject, attributeSelectElm, i, coordinateData, coordinateDataLegpObject, coordinateDataLegpElm, _i8, heightBoxElm, heightElm, heightModeData, heightMode, objectsToExclude, _iterator8, _step8, _step8$value, key, value, heightModeObject, heightModeDataLegpElm, _i10, fontData, fontObject, fontDataLegpElm, _i12;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n _this8.attributeLink = _this8.options.attribute.link.content;\n _this8.attributeVr = _this8.options.attribute.vr.content;\n // this.attributeCamera = this.options.attribute.camera\n _this8.cameraSelect && _this8.cameraSelect();\n _this8.ISCSelect && _this8.ISCSelect();\n _this8.goodsSelect && _this8.goodsSelect();\n col = document.createElement('div');\n col.className = 'col';\n col.style.flex = '0 0 110px';\n col.innerHTML = \"\\n \\u5C5E\\u6027\\u6846\\n \\n \";\n row = _this8._DialogObject._element.content.getElementsByClassName('attribute')[0].getElementsByClassName('row')[0];\n row.appendChild(col);\n tagData = _this8.attributeSelect;\n attributeElm = _this8._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (!attributeElm) {\n _context10.next = 27;\n break;\n }\n legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_25__[\"legp\"])(attributeElm, '.attribute-select');\n legpObject.legp_search(tagData);\n attributeSelectElm = _this8._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n i = 0;\n case 18:\n if (!(i < tagData.length)) {\n _context10.next = 26;\n break;\n }\n if (!(tagData[i].key === _this8.options.attributeType)) {\n _context10.next = 23;\n break;\n }\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n return _context10.abrupt(\"break\", 26);\n case 23:\n i++;\n _context10.next = 18;\n break;\n case 26:\n attributeSelectElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < tagData.length; _i7++) {\n if (tagData[_i7].value === attributeSelectElm.value) {\n _this8.attributeType = tagData[_i7].key;\n break;\n }\n }\n });\n case 27:\n coordinateData = [];\n _this8.epsg_map.forEach(function (value, key) {\n coordinateData.push({\n name: \"\".concat(value.name, \"(\").concat(value.epsg, \")\"),\n value: key\n });\n });\n coordinateDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_25__[\"legp\"])(_this8._DialogObject._element.content.getElementsByClassName('coordinate-select-box')[0], '.coordinate-select');\n if (!coordinateDataLegpObject) {\n _context10.next = 44;\n break;\n }\n coordinateDataLegpObject.legp_search(coordinateData);\n coordinateDataLegpElm = _this8._DialogObject._element.content.getElementsByClassName('coordinate-select')[0].getElementsByTagName('input')[0];\n if (!_this8.coordinate) {\n _this8.coordinate = coordinateData[0].value;\n } else {\n _this8.coordinate = _this8.coordinate;\n }\n coordinateDataLegpElm.value = _this8.coordinate;\n _i8 = 0;\n case 36:\n if (!(_i8 < coordinateData.length)) {\n _context10.next = 43;\n break;\n }\n if (!(coordinateData[_i8].value === coordinateData.value)) {\n _context10.next = 40;\n break;\n }\n coordinateDataLegpObject.legp_searchActive(coordinateData[_i8].value);\n return _context10.abrupt(\"break\", 43);\n case 40:\n _i8++;\n _context10.next = 36;\n break;\n case 43:\n coordinateDataLegpElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < coordinateData.length; _i9++) {\n if (coordinateData[_i9].value === coordinateDataLegpElm.value) {\n _this8.coordinate = coordinateData[_i9].value;\n break;\n }\n }\n });\n case 44:\n heightBoxElm = document.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附地表',\n value: '依附地表',\n key: '2'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '3'\n }];\n heightMode = _this8.heightMode;\n _context10.t0 = heightMode;\n _context10.next = _context10.t0 === 0 ? 51 : _context10.t0 === '0' ? 51 : _context10.t0 === 1 ? 53 : _context10.t0 === '1' ? 53 : _context10.t0 === 2 ? 55 : _context10.t0 === '2' ? 55 : _context10.t0 === 3 ? 55 : _context10.t0 === '3' ? 55 : 60;\n break;\n case 51:\n heightElm.value = _this8.alt;\n return _context10.abrupt(\"break\", 60);\n case 53:\n if (_this8.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(_this8.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this8.options.position.lng, _this8.options.position.lat)]).then(function (position) {\n heightElm.value = Number((_this8.alt - Number(position[0].height.toFixed(2))).toFixed(2));\n });\n } else {\n heightElm.value = Number(_this8.alt.toFixed(2));\n }\n return _context10.abrupt(\"break\", 60);\n case 55:\n objectsToExclude = [];\n _iterator8 = _createForOfIteratorHelper(_this8.sdk.entityMap);\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n _step8$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step8.value, 2), key = _step8$value[0], value = _step8$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n _this8.getClampToHeight(_this8.options.position, objectsToExclude).then(function (h) {\n _this8.alt = Number(h.toFixed(2));\n heightElm.value = _this8.alt;\n });\n return _context10.abrupt(\"break\", 60);\n case 60:\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_25__[\"legp\"])(_this8._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context10.next = 78;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = _this8._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n heightModeDataLegpElm.value = heightModeData[_this8.heightMode].value;\n _i10 = 0;\n case 66:\n if (!(_i10 < heightModeData.length)) {\n _context10.next = 73;\n break;\n }\n if (!(heightModeData[_i10].value == heightModeDataLegpElm.value)) {\n _context10.next = 70;\n break;\n }\n heightModeObject.legp_searchActive(heightModeData[_i10].value);\n return _context10.abrupt(\"break\", 73);\n case 70:\n _i10++;\n _context10.next = 66;\n break;\n case 73:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i11 = 0; _i11 < heightModeData.length; _i11++) {\n if (heightModeData[_i11].value === heightModeDataLegpElm.value) {\n heightMode = heightModeData[_i11].key;\n switch (heightMode) {\n case 0:\n case '0':\n _this8.alt = Number(heightElm.value);\n heightBoxElm.style.display = 'flex';\n _this8.heightMode = 0;\n break;\n case 1:\n case '1':\n if (_this8.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(_this8.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this8.options.position.lng, _this8.options.position.lat)]).then(function (position) {\n _this8.alt = Number(heightElm.value) + Number(position[0].height.toFixed(2));\n });\n } else {\n _this8.alt = Number(heightElm.value);\n }\n heightBoxElm.style.display = 'flex';\n _this8.heightMode = 1;\n break;\n case 2:\n case '2':\n _this8.heightMode = 2;\n break;\n case 3:\n case '3':\n var _objectsToExclude = [];\n var _iterator9 = _createForOfIteratorHelper(_this8.sdk.entityMap),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var _step9$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step9.value, 2),\n _key = _step9$value[0],\n _value = _step9$value[1];\n if (_value.type === 'RadarScanStereoscopic' && _value.entity) {\n _objectsToExclude.push(_value.entity);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n _this8.getClampToHeight(_this8.options.position, _objectsToExclude).then(function (h) {\n _this8.alt = Number(h.toFixed(2));\n });\n _this8.heightMode = 3;\n break;\n }\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (heightMode) {\n case 0:\n case '0':\n _this8.options.position.alt = Number(Number(heightElm.value).toFixed(2));\n break;\n case 1:\n case '1':\n if (_this8.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(_this8.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this8.options.position.lng, _this8.options.position.lat)]).then(function (position) {\n _this8.alt = Number(heightElm.value) + Number(position[0].height.toFixed(2));\n });\n } else {\n _this8.alt = Number(heightElm.value);\n }\n break;\n case 2:\n case '2':\n break;\n }\n _this8.renewPoint();\n _this8.coordinate = _this8.options.coordinate;\n _this8._elms.alt && _this8._elms.alt.forEach(function (item) {\n item.value = _this8.options.position.alt;\n });\n });\n _this8._elms.height = heightBoxElm;\n _this8._elms.heightMode = heightModeDataLegpElm;\n _this8.heightMode = _this8.heightMode;\n case 78:\n fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_26__[\"getFontList\"])();\n fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_25__[\"legp\"])(_this8._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (!fontObject) {\n _context10.next = 94;\n break;\n }\n fontObject.legp_search(fontData);\n fontDataLegpElm = _this8._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this8.labelFontFamily].value;\n _i12 = 0;\n case 85:\n if (!(_i12 < fontData.length)) {\n _context10.next = 92;\n break;\n }\n if (!(fontData[_i12].value == fontDataLegpElm.value)) {\n _context10.next = 89;\n break;\n }\n fontObject.legp_searchActive(fontData[_i12].value);\n return _context10.abrupt(\"break\", 92);\n case 89:\n _i12++;\n _context10.next = 85;\n break;\n case 92:\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i13 = 0; _i13 < fontData.length; _i13++) {\n if (fontData[_i13].value === fontDataLegpElm.value) {\n _this8.labelFontFamily = fontData[_i13].key;\n break;\n }\n }\n });\n _this8._elms.labelFontFamily = [fontDataLegpElm];\n case 94:\n case \"end\":\n return _context10.stop();\n }\n }, _callee4);\n })), 0);\n lngEln = contentElm.getElementsByClassName('lng')[0];\n latEln = contentElm.getElementsByClassName('lat')[0];\n lngEln.value = this.lng;\n latEln.value = this.lat;\n this._elms.lng.push(lngEln);\n this._elms.lat.push(latEln);\n projCheckboxBoxElms = this._DialogObject._element.content.getElementsByClassName('YJ-custom-checkbox-box');\n projCheckboxElms = this._DialogObject._element.content.getElementsByClassName('YJ-custom-checkbox');\n projInputBoxElms = this._DialogObject._element.content.getElementsByClassName('proj-input-box');\n projCheckboxElms[0].checked = true;\n projInputBoxElms[1].style.display = 'none';\n projInputBoxElms[2].style.display = 'none';\n projCheckboxBoxElms[0].addEventListener('click', function () {\n projCheckboxElms[0].checked = true;\n projInputBoxElms[0].style.display = 'block';\n projCheckboxElms[1].checked = false;\n projInputBoxElms[1].style.display = 'none';\n projCheckboxElms[2].checked = false;\n projInputBoxElms[2].style.display = 'none';\n });\n projCheckboxBoxElms[1].addEventListener('click', function () {\n projCheckboxElms[1].checked = true;\n projInputBoxElms[1].style.display = 'block';\n projCheckboxElms[0].checked = false;\n projInputBoxElms[0].style.display = 'none';\n projCheckboxElms[2].checked = false;\n projInputBoxElms[2].style.display = 'none';\n });\n projCheckboxBoxElms[2].addEventListener('click', function () {\n projCheckboxElms[2].checked = true;\n projInputBoxElms[2].style.display = 'block';\n projCheckboxElms[0].checked = false;\n projInputBoxElms[0].style.display = 'none';\n projCheckboxElms[1].checked = false;\n projInputBoxElms[1].style.display = 'none';\n });\n _this._projConvert = function () {\n if (!_this8._DialogObject || _this8._DialogObject.isDestroy) {\n return;\n }\n var lng, lat, lngD, lngM, lngS, latD, latM, latS, lngDM, latDM, lngDMS, latDMS, lngdnArr1, lngdnArr2, latdnArr1, latdnArr2, lngdnsArr1, lngdnsArr2, lngdnsArr3, latdnsArr1, latdnsArr2, latdnsArr3;\n lng = _this.lng;\n lat = _this.lat;\n lngDM = _this._proj.degreesToDMS(lng, true);\n latDM = _this._proj.degreesToDMS(lat, true);\n lngdnArr1 = lngDM.split('°');\n lngdnArr2 = lngdnArr1[1].split(\"'\");\n latdnArr1 = latDM.split('°');\n latdnArr2 = latdnArr1[1].split(\"'\");\n contentElm.getElementsByClassName('lng-dm-d')[0].value = lngdnArr1[0];\n contentElm.getElementsByClassName('lng-dm-m')[0].value = lngdnArr2[0];\n contentElm.getElementsByClassName('lat-dm-d')[0].value = latdnArr1[0];\n contentElm.getElementsByClassName('lat-dm-m')[0].value = latdnArr2[0];\n lngDMS = _this._proj.degreesToDMS(lng);\n latDMS = _this._proj.degreesToDMS(lat);\n lngdnsArr1 = lngDMS.split('°');\n lngdnsArr2 = lngdnsArr1[1].split(\"'\");\n lngdnsArr3 = lngdnsArr2[1].split('\"');\n latdnsArr1 = latDMS.split('°');\n latdnsArr2 = latdnsArr1[1].split(\"'\");\n latdnsArr3 = latdnsArr2[1].split('\"');\n contentElm.getElementsByClassName('lng-dms-d')[0].value = lngdnsArr1[0];\n contentElm.getElementsByClassName('lng-dms-m')[0].value = lngdnsArr2[0];\n contentElm.getElementsByClassName('lng-dms-s')[0].value = lngdnsArr3[0];\n contentElm.getElementsByClassName('lat-dms-d')[0].value = latdnsArr1[0];\n contentElm.getElementsByClassName('lat-dms-m')[0].value = latdnsArr2[0];\n contentElm.getElementsByClassName('lat-dms-s')[0].value = latdnsArr3[0];\n };\n _this._projConvert();\n _context11.next = 41;\n break;\n case 41:\n case \"end\":\n return _context11.stop();\n }\n }, _callee5, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"renewPoint\",\n value: function renewPoint() {\n var _this = this;\n var font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_26__[\"getFontFamily\"])(this.labelFontFamily) || 'Helvetica';\n if (this.entity) {\n this.entity.position = Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt);\n if (this.options.scaleByDistance) {\n this.entity.billboard.scaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.label.scaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.label.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n } else {\n this.entity.billboard.scaleByDistance = undefined;\n this.entity.billboard.pixelOffsetScaleByDistance = undefined;\n this.entity.label.scaleByDistance = undefined;\n this.entity.label.pixelOffsetScaleByDistance = undefined;\n }\n // this.entity.billboard.pixelOffset = new Cesium.CallbackProperty(\n // function () {\n // let billboardH =\n // _this.entity.billboard.imgHeight *\n // (31 / _this.entity.billboard.imgWidth)\n // return new Cesium.Cartesian2(\n // 0,\n // -(billboardH / 2) * _this.options.billboard.scale\n // )\n // },\n // false\n // )\n this.entity.label.pixelOffset = new Cesium.CallbackProperty(function () {\n if (_this.options.billboard.show) {\n var billboardH = _this.entity.billboard.imgHeight ? _this.entity.billboard.imgHeight * (31 / _this.entity.billboard.imgWidth) : 0;\n return new Cesium.Cartesian2(0, -billboardH * _this.options.billboard.scale - _this.options.label.fontSize / 2 - 5);\n } else {\n return new Cesium.Cartesian2(0, -_this.options.label.fontSize / 2 - 5);\n }\n }, false);\n this.entity.label.font = this.options.label.fontSize + 'px ' + font;\n this.entity.label.fillColor = Cesium.Color.fromCssColorString(this.options.label.color);\n this.entity.billboard.scale = this.options.billboard.scale;\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.near = this.originalOptions.near;\n this.far = this.originalOptions.far;\n this.scaleByDistance = this.originalOptions.scaleByDistance;\n this.billboardShow = this.originalOptions.billboard.show;\n this.billboardImage = this.originalOptions.billboard.image;\n this.billboardScale = this.originalOptions.billboard.scale;\n this.labelText = this.originalOptions.label.text;\n this.labelShow = this.originalOptions.label.show;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelColor = this.originalOptions.label.color;\n this.lng = this.originalOptions.position.lng || 0;\n this.lat = this.originalOptions.position.lat || 0;\n this.alt = this.originalOptions.position.alt || 0;\n this.attributeLink = this.options.attribute.link.content;\n this.attributeVr = this.options.attribute.vr.content;\n this.attributeRtmp = this.options.attribute.rtmp.content;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeGoods = this.options.attribute.goods.content;\n this.attributeISC = this.options.attribute.isc.content;\n this.cameraSelect && this.cameraSelect();\n this.goodsSelect && this.goodsSelect();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_22__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_28__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee6$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__[\"remove_entity_from_cluster\"])(this.sdk.viewer, this.entity);\n case 2:\n this.entity = null;\n if (!(!this.sdk.viewer || !this.sdk.viewer.entities)) {\n _context12.next = 5;\n break;\n }\n return _context12.abrupt(\"return\");\n case 5:\n // if (this.diffuse) {\n // this.diffuse.remove()\n // this.diffuse = null\n // }\n // if (this.scan) {\n // this.scan.remove()\n // this.scan = null\n // }\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n _context12.next = 10;\n return this.sdk.removeIncetance(this.options.id);\n case 10:\n _context12.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_22__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context12.stop();\n }\n }, _callee6, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }() // 点击弹框内图标切换\n }, {\n key: \"clickChangeImage\",\n value: function clickChangeImage() {\n this.Dialog.clickChangeImage && this.Dialog.clickChangeImage();\n }\n // 点击弹框内默认图标切换\n }, {\n key: \"clickChangeDefaultImage\",\n value: function clickChangeDefaultImage() {\n this.Dialog.clickChangeDefaultImage && this.Dialog.clickChangeDefaultImage();\n }\n }, {\n key: \"updateHeight\",\n value: function () {\n var _updateHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee7() {\n var height, height2, point1, point2, objectsToExclude, _iterator10, _step10, _step10$value, key, value, updatedCartesians, direction, c, ray, r, pickedObjects, i, promise;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee7$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n if (!(!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene)) {\n _context13.next = 2;\n break;\n }\n return _context13.abrupt(\"return\");\n case 2:\n point1 = new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, 0);\n point2 = new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, 10000000000000);\n objectsToExclude = [this.entity];\n _iterator10 = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _step10$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step10.value, 2), key = _step10$value[0], value = _step10$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n _context13.next = 9;\n return this.sdk.viewer.scene.clampToHeightMostDetailed([point1], objectsToExclude);\n case 9:\n updatedCartesians = _context13.sent;\n if (updatedCartesians && updatedCartesians[0]) {\n height = this.cartesian3Towgs84(updatedCartesians[0], this.sdk.viewer).alt;\n }\n direction = Cesium.Cartesian3.subtract(point1, point2, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, new Cesium.Cartesian3());\n ray = new Cesium.Ray(point2, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = pickedObjects.length - 1;\n case 17:\n if (!(i >= 0)) {\n _context13.next = 24;\n break;\n }\n if (!pickedObjects[i].position) {\n _context13.next = 21;\n break;\n }\n r = pickedObjects[i];\n return _context13.abrupt(\"break\", 24);\n case 21:\n i--;\n _context13.next = 17;\n break;\n case 24:\n if (r && r.position) {\n height2 = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n }\n _context13.prev = 25;\n _context13.next = 28;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(this.options.position.lng, this.options.position.lat)]);\n case 28:\n promise = _context13.sent;\n _context13.next = 33;\n break;\n case 31:\n _context13.prev = 31;\n _context13.t0 = _context13[\"catch\"](25);\n case 33:\n if ((height2 === void 0 || height2 < promise[0].height) && promise) {\n height2 = promise[0].height;\n }\n if (height === void 0 || height < height2) {\n height = height2;\n }\n if (!(height !== undefined)) {\n _context13.next = 40;\n break;\n }\n this.options.position.alt = Number(Number(height).toFixed(2));\n this.renewPoint();\n this.coordinate = this.options.coordinate;\n return _context13.abrupt(\"return\", true);\n case 40:\n case \"end\":\n return _context13.stop();\n }\n }, _callee7, this, [[25, 31]]);\n }));\n function updateHeight() {\n return _updateHeight.apply(this, arguments);\n }\n return updateHeight;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee8() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n objectsToExclude,\n _iterator11,\n _step11,\n _step11$value,\n key,\n value,\n _objectsToExclude2,\n _iterator12,\n _step12,\n _step12$value,\n _key2,\n _value2,\n height,\n _args14 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee8$(_context14) {\n while (1) switch (_context14.prev = _context14.next) {\n case 0:\n options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context14.next = 26;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context14.next = 19;\n break;\n }\n objectsToExclude = [];\n _iterator11 = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n _step11$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step11.value, 2), key = _step11$value[0], value = _step11$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n _context14.next = 18;\n return this.getClampToHeight(position, objectsToExclude);\n case 18:\n position.alt = _context14.sent;\n case 19:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context14.next = 33;\n break;\n case 26:\n _objectsToExclude2 = [];\n _iterator12 = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n _step12$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step12.value, 2), _key2 = _step12$value[0], _value2 = _step12$value[1];\n if (_value2.type === 'RadarScanStereoscopic' && _value2.entity) {\n _objectsToExclude2.push(_value2.entity);\n }\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n _context14.next = 31;\n return this.getClampToHeight(this.options.position, _objectsToExclude2);\n case 31:\n height = _context14.sent;\n this.sdk.viewer.camera.flyTo({\n orientation: options.orientation,\n destination: Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, height + (options.height || 500))\n });\n case 33:\n case \"end\":\n return _context14.stop();\n }\n }, _callee8, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n this.options.position.lng = v.position.lng;\n this.options.position.lat = v.position.lat;\n this.options.position.alt = v.position.alt;\n this.renewPoint();\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this9 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_18__[\"default\"](this.sdk);\n if (status === true) {\n this.picking = false;\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_27__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.previous = {\n position: _objectSpread({}, this.options.position)\n };\n var moveEvent = function moveEvent(movement, cartesian) {\n _this9.entity.position = new Cesium.CallbackProperty(function () {\n return cartesian;\n }, false);\n _this9.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n };\n var leftEvent = function leftEvent(movement, cartesian) {\n var positions = _this9.cartesian3Towgs84(cartesian, _this9.sdk.viewer);\n _this9.lng = positions.lng;\n _this9.lat = positions.lat;\n _this9.alt = positions.alt;\n _this9.previous = {\n position: _objectSpread({}, _this9.options.position)\n };\n _this9.event.mouse_move(function () {});\n _this9.event.mouse_left(function () {});\n _this9.event.mouse_right(function () {});\n _this9.event.gesture_pinck_start(function () {});\n _this9.event.gesture_pinck_end(function () {});\n _this9.entity.position = new Cesium.CallbackProperty(function () {\n return cartesian;\n }, false);\n if (_classPrivateFieldGet(_positionEditingCallback, _this9)) {\n _classPrivateFieldGet(_positionEditingCallback, _this9).call(_this9);\n _classPrivateFieldSet(_positionEditingCallback, _this9, null);\n }\n _this9.positionEditing = false;\n };\n this.event.mouse_move(moveEvent);\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this9.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this9.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n // 长按取消\n _this9.positionEditing = false;\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n } else {\n _classPrivateFieldSet(_positionEditingCallback, this, null);\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n this.event.destroy();\n this.event = null;\n }\n this.tip && this.tip.destroy();\n this.lng = this.previous.position.lng;\n this.lat = this.previous.position.lat;\n this.alt = this.previous.position.alt;\n this.renewPoint();\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n _classPrivateFieldSet(_positionEditingCallback, this, cd);\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this10 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: '',\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this10.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }, {\n key: \"setCustomView\",\n value: function () {\n var _setCustomView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee9(val) {\n var camera, cameraPosition84, position, relativePosition, objectsToExclude, _iterator13, _step13, _step13$value, key, value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee9$(_context15) {\n while (1) switch (_context15.prev = _context15.next) {\n case 0:\n if (!val) {\n _context15.next = 4;\n break;\n }\n this.options.customView = val;\n _context15.next = 19;\n break;\n case 4:\n camera = this.sdk.viewer.camera;\n cameraPosition84 = this.cartesian3Towgs84(camera.position, this.sdk.viewer);\n position = {\n lng: 0,\n lat: 0\n };\n relativePosition = _objectSpread({}, cameraPosition84);\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context15.next = 16;\n break;\n }\n objectsToExclude = [];\n _iterator13 = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n _step13$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_2___default()(_step13.value, 2), key = _step13$value[0], value = _step13$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n _context15.next = 15;\n return this.getClampToHeight(position, objectsToExclude);\n case 15:\n position.alt = _context15.sent;\n case 16:\n relativePosition = {\n lng: cameraPosition84.lng - position.lng,\n lat: cameraPosition84.lat - position.lat,\n alt: cameraPosition84.alt - position.alt\n };\n this.options.customView = {\n orientation: {\n heading: Cesium.Math.toDegrees(camera.heading),\n pitch: Cesium.Math.toDegrees(camera.pitch),\n roll: Cesium.Math.toDegrees(camera.roll)\n },\n relativePosition: relativePosition\n };\n this.originalOptions && (this.originalOptions.customView = this.options.customView);\n case 19:\n case \"end\":\n return _context15.stop();\n }\n }, _callee9, this);\n }));\n function setCustomView(_x4) {\n return _setCustomView.apply(this, arguments);\n }\n return setCustomView;\n }()\n }], [{\n key: \"create\",\n value: function create(that) {\n var canvas;\n var billboardH = 36;\n var heightMode;\n var position = that.options.position;\n that.originalOptions = that.deepCopyObj(that.options);\n var isGlf = false;\n var superGif;\n var index = 0;\n var font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_26__[\"getFontFamily\"])(that.labelFontFamily) || 'Helvetica';\n var url = that.replaceHost(that.options.billboard.image, that.options.host);\n that._frameImages = [];\n if (url) {\n that.options.billboard.image = url;\n } else {\n that.options.billboard.image = that.getSourceRootPath() + '/img/A-ablu-blank.png';\n }\n if (url && url.endsWith('gif')) {\n isGlf = true;\n switch (that.options.heightMode) {\n case 2:\n case '2':\n heightMode = Cesium.HeightReference.CLAMP_TO_GROUND;\n break;\n }\n var gifImg = document.createElement('img');\n gifImg.setAttribute('rel:animated_src', url);\n gifImg.setAttribute('rel:auto_play', '1');\n var imgDiv = document.createElement('div');\n imgDiv.appendChild(gifImg);\n var id = Cesium.createGuid();\n superGif = new SuperGif({\n gif: gifImg\n });\n that._superGif = superGif;\n that._superGif.id = id; // 自定义id,用于判断gif实例是否改变\n\n superGif.load(function (status) {\n if (status == 404) {\n canvas = document.createElement('canvas');\n canvas.width = 0;\n canvas.height = 0;\n billboardH = 0;\n if (that.entity) {\n that.entity.billboard.imgWidth = 0;\n that.entity.billboard.imgHeight = 0;\n that.entity.billboard.image = canvas;\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__[\"addCluster\"])(that.sdk, that.entity);\n }\n return;\n }\n if (that._superGif.id != id) {\n return;\n }\n var length = superGif.get_length();\n for (var i = 1; i <= length; i++) {\n superGif.move_to(i);\n that._frameImages.push(superGif.get_canvas().toDataURL());\n }\n canvas = superGif.get_canvas();\n var width = canvas.width;\n var height = canvas.height;\n billboardH = height * (31 / width);\n if (that.entity) {\n that.entity.billboard.imgWidth = width;\n that.entity.billboard.imgHeight = height;\n that.entity.billboard.image = new Cesium.CallbackProperty(function () {\n var img = that._frameImages[index];\n index = index >= that._frameImages.length - 1 ? 0 : index + 1;\n return img;\n }, false);\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__[\"addCluster\"])(that.sdk, that.entity);\n }\n });\n } else {\n var image = new Image();\n image.src = url || that.getSourceRootPath() + '/img/A-ablu-blank.png';\n switch (that.options.heightMode) {\n case 2:\n case '2':\n heightMode = Cesium.HeightReference.CLAMP_TO_GROUND;\n break;\n }\n canvas = document.createElement('canvas');\n image.onload = function () {\n var ratio = image.width / image.height;\n image.width = 100;\n image.height = 100 / ratio;\n var width = image.width;\n var height = image.height;\n var ctx = canvas.getContext('2d', {\n willReadFrequently: true\n });\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(image, 0, 0, width, height);\n billboardH = height * (31 / width);\n if (that.entity) {\n that.entity.billboard.imgWidth = width;\n that.entity.billboard.imgHeight = height;\n that.entity.billboard.image = canvas;\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__[\"addCluster\"])(that.sdk, that.entity);\n }\n };\n image.onerror = function (err) {\n canvas.width = 0;\n canvas.height = 0;\n billboardH = 0;\n if (that.entity) {\n that.entity.billboard.imgWidth = 0;\n that.entity.billboard.imgHeight = 0;\n that.entity.billboard.image = canvas;\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_19__[\"addCluster\"])(that.sdk, that.entity);\n }\n };\n }\n that.entity = new Cesium.Entity({\n show: that.options.show,\n id: that.options.id,\n position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt),\n billboard: {\n image: isGlf ? new Cesium.CallbackProperty(function () {\n var img = that._frameImages[index];\n index = index >= that._frameImages.length - 1 ? 0 : index + 1;\n return img;\n }, false) : canvas,\n scale: that.options.billboard.scale,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n heightReference: heightMode,\n color: that.options.billboard.show ? undefined : new Cesium.Color(1.0, 1.0, 1.0, 0),\n width: 31,\n height: new Cesium.CallbackProperty(function () {\n return billboardH;\n }, false),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\n // pixelOffset: new Cesium.CallbackProperty(function () {\n // return new Cesium.Cartesian2(\n // 0,\n // -(billboardH / 2) * that.options.billboard.scale\n // )\n // }, false)\n },\n label: {\n show: that.options.label.show,\n text: that.options.label.text,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n heightReference: heightMode,\n font: that.options.label.fontSize + 'px ' + font,\n fillColor: Cesium.Color.fromCssColorString(that.options.label.color),\n // verticalOrigin : Cesium.VerticalOrigin.BOTTOM,\n pixelOffset: new Cesium.CallbackProperty(function () {\n if (that.options.billboard.show) {\n return new Cesium.Cartesian2(0, -billboardH * that.options.billboard.scale - that.options.label.fontSize / 2 - 5);\n } else {\n return new Cesium.Cartesian2(0, -that.options.label.fontSize / 2 - 5);\n }\n }, false),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 1,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE\n }\n });\n that.entity.billboard.imgWidth = 31;\n that.entity.billboard.imgHeight = 36;\n that.entity.position = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt);\n if (that.options.heightMode == 3) {\n that.updateHeight();\n }\n that.renewPoint();\n // that.diffuseShow = that.options.diffuseShow\n // that.scanShow = that.options.scanShow\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_22__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_28__[\"setSplitDirection\"])(0, that.options.id);\n }\n if (that.options.billboard.isSelect) {\n that.selectBillboard();\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_17__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BillboardObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQmlsbGJvYXJkT2JqZWN0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0JpbGxib2FyZE9iamVjdC9pbmRleC5qcz9hNTRmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDngrlcclxuICovXHJcbmltcG9ydCB7IGdldEhvc3QsIGdldFRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgY3lfc2xpZGVyIGZyb20gJy4uLy4uL0VsZW1lbnQvY3lfaHRtbF9zbGlkZXInXHJcbmltcG9ydCBjeV90YWJzIGZyb20gJy4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzJ1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSAnLi4vLi4vRWxlbWVudC9yaWNoVGV4dCdcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gJy4vX2VsZW1lbnQnXHJcbmltcG9ydCBCYXNlIGZyb20gJy4uL2luZGV4J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IHtcclxuICBhZGRDbHVzdGVyLFxyXG4gIHJlbW92ZV9lbnRpdHlfZnJvbV9jbHVzdGVyXHJcbn0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2NsdXN0ZXIvY2x1c3RlcidcclxuaW1wb3J0IENpcmNsZURpZmZ1c2UgZnJvbSAnLi4vQ2lyY2xlRGlmZnVzZSdcclxuaW1wb3J0IFJhZGFyU2NhbiBmcm9tICcuLi9SYWRhclNjYW4nXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQge1xyXG4gIGdldEJpbGxib2FyZERlZmF1bHRVcmwsXHJcbiAgc2V0QmlsbGJvYXJkRGVmYXVsdFVybCxcclxuICBnZXRHcm91bmRDb3ZlclxyXG59IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbmltcG9ydCB7IFByb2ogfSBmcm9tICcuLi8uLi8uLi9Ub29scy9wcm9qJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCdcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHksIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7XHJcbiAgc2V0U3BsaXREaXJlY3Rpb24sXHJcbiAgc3luY1NwbGl0RGF0YSxcclxuICBzZXRBY3RpdmVJZCxcclxuICBnZXRTdGF0ZVxyXG59IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHtcclxuICBzZXRBY3RpdmVWaWV3ZXIsXHJcbiAgY2xvc2VSb3RhdGVBcm91bmQsXHJcbiAgY2xvc2VWaWV3Rm9sbG93XHJcbn0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmltcG9ydCB7IGdldEdvb2RzTGlzdCB9IGZyb20gJy4uLy4uLy4uL1Rvb2xzL2dldEdvb2RzTGlzdCdcclxuXHJcbmNsYXNzIEJpbGxib2FyZE9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gICNfcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOeCueagh+azqFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOagh+azqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmoIfms6jmlbTkvZPnmoTmmL7pmpBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLnBvc2l0aW9uPXt9IOW/heWhq++8jOS9jee9rlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBvc2l0aW9uLmxuZyDnu4/luqZcclxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wb3NpdGlvbi5sYXQg57qs5bqmXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucG9zaXRpb24uYWx0IOmrmOW6plxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmhlaWdodE1vZGU9MyDpq5jluqbmqKHlvI/vvIgw77ya5rW35ouU6auY5bqm77ybMe+8muebuOWvueWcsOihqO+8mzLvvJrkvp3pmYTlnLDooag7IDPvvJrkvp3pmYTmqKHlnovvvIlcclxuICAgKiBAcGFyYW0gW29wdGlvbnMuc2NhbGVCeURpc3RhbmNlPXRydWVdIHtib29sZWFufSDmmK/lkKblvIDlkK/ot5/pmo/op4bph47nvKnmlL5cclxuICAgKiBAcGFyYW0gW29wdGlvbnMubmVhcj0yMDAwXSB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5Hot53nprtcclxuICAgKiBAcGFyYW0gW29wdGlvbnMuZmFyPTEwMDAwMF0gIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/nOi3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmJpbGxib2FyZCB7b2JqZWN0fSDlm77moIflj4LmlbBcclxuICAgKiBAcGFyYW0gW29wdGlvbnMuYmlsbGJvYXJkLnNob3c9dHJ1ZV0ge2Jvb2xlYW59IOWbvuagh+aYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmJpbGxib2FyZC5pbWFnZSB7c3RyaW5nfSDlm77moIfot6/lvoRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5iaWxsYm9hcmQuZGVmYXVsdEltYWdlIHtzdHJpbmd9IOm7mOiupOWbvuagh+eahOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5iaWxsYm9hcmQuc2NhbGU9M10ge251bWJlcn0g5Zu+5qCH5pS+5aSn5YCN5pWwXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5paH5a2X5Y+C5pWwXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmxhYmVsLnRleHRdIHtzdHJpbmd9IOaWh+Wtl+WGheWuuVxyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5sYWJlbC5zaG93PXRydWVdIHtib29sZWFufSDmloflrZfmmL7pmpBcclxuICAgKiBAcGFyYW0gW29wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wXSB7bnVtYmVyfSDmloflrZflrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5sYWJlbC5mb250U2l6ZT0zOV0ge251bWJlcn0g5paH5a2X5aSn5bCPLCDljZXkvY1weFxyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5sYWJlbC5jb2xvcj0jMDBmZmZmXSB7c3RyaW5nfSDmloflrZfpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30gIOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5hdHRyaWJ1dGUudnI9e30g5YWo5pmv5Zu+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQ9W11dIHthcnJheX0g5YWo5pmv5Zu+5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbXS5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W10udXJsIHtzdHJpbmd9IOWcsOWdgFxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwdGlvbnMuYXR0cmlidXRlLmNhbWVyYT17fSDmkYTlg4/lpLRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQ9W11dIHthcnJheX0g5pGE5YOP5aS05YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmlzYz17fSBpc2NcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUuaXNjLmNvbnRlbnQ9W11dIHthcnJheX0gSVND5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmdvb2RzPXt9IOeJqei1hFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50PVtdXSB7YXJyYXl9IOeJqei1hOWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50W10uSUQge3N0cmluZ30gSURcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudFtdLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRbXS5jbnQge3N0cmluZ30g5pWw6YePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucmljaFRleHRDb250ZW50IHtzdHJpbmd9IOWvjOaWh+acrOWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcge29iamVjdH0g6buY6K6k6KeG6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbiB7b2JqZWN0fSDpu5jorqTop4bop5LmlrnkvY1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcge251bWJlcn0g6Iiq5ZCR6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB7bnVtYmVyfSDkv6/ku7Dop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwge251bWJlcn0g57+75rua6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uIHtvYmplY3R9IOinhuinkuebuOWvueS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIFxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICpAcGFyYW0gX0RpYWxvZyB7b2JqZWN0fSDlvLnmoYbkuovku7ZcclxuICAgKkBwYXJhbSBfRGlhbG9nLmNvbmZpcm1DYWxsQmFjayB7ZnVuY3Rpb259IOW8ueahhuehruiupOaXtueahOWbnuiwg1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5vcHRpb25zLm5lYXIgPSBvcHRpb25zLm5lYXIgfHwgb3B0aW9ucy5uZWFyID09PSAwID8gb3B0aW9ucy5uZWFyIDogMjAwMFxyXG4gICAgdGhpcy5vcHRpb25zLmZhciA9IG9wdGlvbnMuZmFyIHx8IG9wdGlvbnMuZmFyID09PSAwID8gb3B0aW9ucy5mYXIgOiAxMDAwMDBcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPVxyXG4gICAgICBvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSB8fCBvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA9PT0gZmFsc2VcclxuICAgICAgICA/IG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgICAgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9XHJcbiAgICAgIG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPVxyXG4gICAgICBvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDAgPyBvcHRpb25zLmhlaWdodE1vZGUgOiAzXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkID0gb3B0aW9ucy5iaWxsYm9hcmQgPSBvcHRpb25zLmJpbGxib2FyZCB8fCB7fVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmJpbGxib2FyZC5pc1NlbGVjdCA9IG9wdGlvbnMuYmlsbGJvYXJkLmlzU2VsZWN0IHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLnNob3cgPVxyXG4gICAgICBvcHRpb25zLmJpbGxib2FyZC5zaG93IHx8IG9wdGlvbnMuYmlsbGJvYXJkLnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBvcHRpb25zLmJpbGxib2FyZC5zaG93XHJcbiAgICAgICAgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLmltYWdlID1cclxuICAgICAgb3B0aW9ucy5iaWxsYm9hcmQuaW1hZ2UgfHxcclxuICAgICAgZ2V0QmlsbGJvYXJkRGVmYXVsdFVybChvcHRpb25zLmJpbGxib2FyZC5kZWZhdWx0SW1hZ2UpIHx8IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL0EtYWJsdS1ibGFuay5wbmcnXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLmRlZmF1bHRJbWFnZSA9IG9wdGlvbnMuYmlsbGJvYXJkLmRlZmF1bHRJbWFnZVxyXG4gICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zY2FsZSA9XHJcbiAgICAgIG9wdGlvbnMuYmlsbGJvYXJkLnNjYWxlIHx8IG9wdGlvbnMuYmlsbGJvYXJkLnNjYWxlID09PSAwXHJcbiAgICAgICAgPyBvcHRpb25zLmJpbGxib2FyZC5zY2FsZVxyXG4gICAgICAgIDogM1xyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0ID0gb3B0aW9ucy5sYWJlbC50ZXh0IHx8IHRoaXMub3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9XHJcbiAgICAgIG9wdGlvbnMubGFiZWwuc2hvdyB8fCBvcHRpb25zLmxhYmVsLnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBvcHRpb25zLmxhYmVsLnNob3dcclxuICAgICAgICA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID0gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgMzlcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyMwMGZmZmYnXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSBvcHRpb25zLnBvc2l0aW9uID0gb3B0aW9ucy5wb3NpdGlvbiB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IE51bWJlcihcclxuICAgICAgTnVtYmVyKG9wdGlvbnMucG9zaXRpb24ubG5nIHx8IDApLnRvRml4ZWQoOClcclxuICAgIClcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSBOdW1iZXIoXHJcbiAgICAgIE51bWJlcihvcHRpb25zLnBvc2l0aW9uLmxhdCB8fCAwKS50b0ZpeGVkKDgpXHJcbiAgICApXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKFxyXG4gICAgICBOdW1iZXIob3B0aW9ucy5wb3NpdGlvbi5hbHQgfHwgMCkudG9GaXhlZCgyKVxyXG4gICAgKVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmRpZmZ1c2VTaG93ID0gb3B0aW9ucy5kaWZmdXNlU2hvdyB8fCBmYWxzZVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmRpZmZ1c2VSYWRpdXMgPSAob3B0aW9ucy5kaWZmdXNlUmFkaXVzIHx8IG9wdGlvbnMuZGlmZnVzZVJhZGl1cyA9PT0gMCkgPyBvcHRpb25zLmRpZmZ1c2VSYWRpdXMgOiAxMFxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmRpZmZ1c2VEdXJhdGlvbiA9IChvcHRpb25zLmRpZmZ1c2VEdXJhdGlvbiB8fCBvcHRpb25zLmRpZmZ1c2VEdXJhdGlvbiA9PT0gMCkgPyBvcHRpb25zLmRpZmZ1c2VEdXJhdGlvbiA6IDIwMDBcclxuICAgIC8vIHRoaXMub3B0aW9ucy5kaWZmdXNlQ29sb3IgPSBvcHRpb25zLmRpZmZ1c2VDb2xvciB8fCBcIiNGRjAwMDBcIlxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnNjYW5TaG93ID0gb3B0aW9ucy5zY2FuU2hvdyB8fCBmYWxzZVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnNjYW5SYWRpdXMgPSAob3B0aW9ucy5zY2FuUmFkaXVzIHx8IG9wdGlvbnMuc2NhblJhZGl1cyA9PT0gMCkgPyBvcHRpb25zLnNjYW5SYWRpdXMgOiAxMFxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnNjYW5EdXJhdGlvbiA9IChvcHRpb25zLnNjYW5EdXJhdGlvbiB8fCBvcHRpb25zLnNjYW5EdXJhdGlvbiA9PT0gMCkgPyBvcHRpb25zLnNjYW5EdXJhdGlvbiA6IDIwMDBcclxuICAgIC8vIHRoaXMub3B0aW9ucy5zY2FuQ29sb3IgPSBvcHRpb25zLnNjYW5Db2xvciB8fCBcIiNGRjAwMDBcIlxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID1cclxuICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnJ0bXAuY29udGVudCB8fCBbXVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuaXNjID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5pc2MgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuaXNjLmNvbnRlbnQgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmlzYy5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcyB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID1cclxuICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50IHx8IFtdXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZSA9IG9wdGlvbnMuY29vcmRpbmF0ZSB8fCAnJ1xyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMuX2VsbXMgPSB7fVxyXG4gICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVQb3MgPSBvcHRpb25zLmF0dHJpYnV0ZVBvcyB8fCB7XHJcbiAgICAvLyAgIHg6IDYwLFxyXG4gICAgLy8gICB5OiA2MCxcclxuICAgIC8vICAgd2lkdGg6IDIwMCxcclxuICAgIC8vICAgaGVpZ2h0OiAxMjBcclxuICAgIC8vIH1cclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLl9wcm9qID0gdGhpcy5zZGsucHJvalxyXG5cclxuXHJcblxyXG5cclxuICAgIC8vIC8vIOmqjOivgeeJqei1hFxyXG4gICAgLy8gbGV0IGdvb2RzQ29udGVudCA9IFtdXHJcbiAgICAvLyBpZihvcHRpb25zLmF0dHJpYnV0ZSAmJiBvcHRpb25zLmF0dHJpYnV0ZS5nb29kcyAmJiBvcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCkpIHtcclxuICAgIC8vICAgZ29vZHNDb250ZW50ID0gWy4uLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRdXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnQgPSBbXVxyXG4gICAgLy8gaWYgKGdvb2RzQ29udGVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGdldEdvb2RzTGlzdCgpLnRoZW4oKGxpc3QpPT57XHJcbiAgICAvLyAgICAgZm9yIChsZXQgaSA9IGdvb2RzQ29udGVudC5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgICAgIGxldCBmYWxnID0gZmFsc2VcclxuICAgIC8vICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xyXG4gICAgLy8gICAgICAgICBpZiAoZ29vZHNDb250ZW50W2ldLklEID09PSBsaXN0W2pdLklEKSB7XHJcbiAgICAvLyAgICAgICAgICAgZmFsZyA9IHRydWVcclxuICAgIC8vICAgICAgICAgICBicmVha1xyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICBpZighZmFsZykge1xyXG4gICAgLy8gICAgICAgICBnb29kc0NvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCA9IFsuLi5nb29kc0NvbnRlbnRdXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICBCaWxsYm9hcmRPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcblxyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuICdCaWxsYm9hcmRPYmplY3QnXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBjYW52YXNcclxuICAgIGxldCBiaWxsYm9hcmRIID0gMzZcclxuICAgIGxldCBoZWlnaHRNb2RlXHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25cclxuICAgIHRoYXQub3JpZ2luYWxPcHRpb25zID0gdGhhdC5kZWVwQ29weU9iaih0aGF0Lm9wdGlvbnMpXHJcbiAgICBsZXQgaXNHbGYgPSBmYWxzZVxyXG4gICAgbGV0IHN1cGVyR2lmXHJcbiAgICBsZXQgaW5kZXggPSAwXHJcblxyXG4gICAgbGV0IGZvbnQgPSBnZXRGb250RmFtaWx5KHRoYXQubGFiZWxGb250RmFtaWx5KSB8fCAnSGVsdmV0aWNhJ1xyXG4gICAgbGV0IHVybCA9IHRoYXQucmVwbGFjZUhvc3QodGhhdC5vcHRpb25zLmJpbGxib2FyZC5pbWFnZSwgdGhhdC5vcHRpb25zLmhvc3QpXHJcbiAgICB0aGF0Ll9mcmFtZUltYWdlcyA9IFtdXHJcbiAgICBpZih1cmwpIHtcclxuICAgICAgdGhhdC5vcHRpb25zLmJpbGxib2FyZC5pbWFnZSA9IHVybFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5iaWxsYm9hcmQuaW1hZ2UgPSB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9BLWFibHUtYmxhbmsucG5nJ1xyXG4gICAgfVxyXG4gICAgaWYgKHVybCAmJiB1cmwuZW5kc1dpdGgoJ2dpZicpKSB7XHJcbiAgICAgIGlzR2xmID0gdHJ1ZVxyXG4gICAgICBzd2l0Y2ggKHRoYXQub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5EXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZ2lmSW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJylcclxuICAgICAgZ2lmSW1nLnNldEF0dHJpYnV0ZSgncmVsOmFuaW1hdGVkX3NyYycsIHVybClcclxuICAgICAgZ2lmSW1nLnNldEF0dHJpYnV0ZSgncmVsOmF1dG9fcGxheScsICcxJylcclxuICAgICAgY29uc3QgaW1nRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgaW1nRGl2LmFwcGVuZENoaWxkKGdpZkltZylcclxuICAgICAgbGV0IGlkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICBzdXBlckdpZiA9IG5ldyBTdXBlckdpZih7IGdpZjogZ2lmSW1nIH0pXHJcbiAgICAgIHRoYXQuX3N1cGVyR2lmID0gc3VwZXJHaWZcclxuICAgICAgdGhhdC5fc3VwZXJHaWYuaWQgPSBpZCAgLy8g6Ieq5a6a5LmJaWTvvIznlKjkuo7liKTmlq1naWblrp7kvovmmK/lkKbmlLnlj5hcclxuXHJcbiAgICAgIHN1cGVyR2lmLmxvYWQoZnVuY3Rpb24gKHN0YXR1cykge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT0gNDA0KSB7XHJcbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gMFxyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IDBcclxuICAgICAgICAgIGJpbGxib2FyZEggPSAwXHJcbiAgICAgICAgICBpZiAodGhhdC5lbnRpdHkpIHtcclxuICAgICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmltZ1dpZHRoID0gMFxyXG4gICAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ID0gMFxyXG4gICAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSBjYW52YXNcclxuICAgICAgICAgICAgYWRkQ2x1c3Rlcih0aGF0LnNkaywgdGhhdC5lbnRpdHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoYXQuX3N1cGVyR2lmLmlkICE9IGlkKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHN1cGVyR2lmLmdldF9sZW5ndGgoKVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBzdXBlckdpZi5tb3ZlX3RvKGkpXHJcbiAgICAgICAgICB0aGF0Ll9mcmFtZUltYWdlcy5wdXNoKHN1cGVyR2lmLmdldF9jYW52YXMoKS50b0RhdGFVUkwoKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FudmFzID0gc3VwZXJHaWYuZ2V0X2NhbnZhcygpXHJcbiAgICAgICAgbGV0IHdpZHRoID0gY2FudmFzLndpZHRoXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGNhbnZhcy5oZWlnaHRcclxuICAgICAgICBiaWxsYm9hcmRIID0gaGVpZ2h0ICogKDMxIC8gd2lkdGgpXHJcbiAgICAgICAgaWYgKHRoYXQuZW50aXR5KSB7XHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nV2lkdGggPSB3aWR0aFxyXG4gICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmltZ0hlaWdodCA9IGhlaWdodFxyXG4gICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmltYWdlID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGltZyA9IHRoYXQuX2ZyYW1lSW1hZ2VzW2luZGV4XVxyXG4gICAgICAgICAgICBpbmRleCA9IGluZGV4ID49IHRoYXQuX2ZyYW1lSW1hZ2VzLmxlbmd0aCAtIDEgPyAwIDogaW5kZXggKyAxXHJcbiAgICAgICAgICAgIHJldHVybiBpbWdcclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgYWRkQ2x1c3Rlcih0aGF0LnNkaywgdGhhdC5lbnRpdHkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZSgpXHJcbiAgICAgIGltYWdlLnNyYyA9XHJcbiAgICAgICAgdXJsIHx8XHJcbiAgICAgICAgdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvQS1hYmx1LWJsYW5rLnBuZydcclxuICAgICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgIGhlaWdodE1vZGUgPSBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORFxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHJhdGlvID0gaW1hZ2Uud2lkdGggLyBpbWFnZS5oZWlnaHRcclxuICAgICAgICBpbWFnZS53aWR0aCA9IDEwMFxyXG4gICAgICAgIGltYWdlLmhlaWdodCA9IDEwMCAvIHJhdGlvXHJcbiAgICAgICAgbGV0IHdpZHRoID0gaW1hZ2Uud2lkdGhcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywgeyB3aWxsUmVhZEZyZXF1ZW50bHk6IHRydWUgfSlcclxuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aFxyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHRcclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG4gICAgICAgIGJpbGxib2FyZEggPSBoZWlnaHQgKiAoMzEgLyB3aWR0aClcclxuICAgICAgICBpZiAodGhhdC5lbnRpdHkpIHtcclxuICAgICAgICAgIHRoYXQuZW50aXR5LmJpbGxib2FyZC5pbWdXaWR0aCA9IHdpZHRoXHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ID0gaGVpZ2h0XHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSBjYW52YXNcclxuICAgICAgICAgIGFkZENsdXN0ZXIodGhhdC5zZGssIHRoYXQuZW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpbWFnZS5vbmVycm9yID0gZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IDBcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMFxyXG4gICAgICAgIGJpbGxib2FyZEggPSAwXHJcbiAgICAgICAgaWYgKHRoYXQuZW50aXR5KSB7XHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nV2lkdGggPSAwXHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ID0gMFxyXG4gICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmltYWdlID0gY2FudmFzXHJcbiAgICAgICAgICBhZGRDbHVzdGVyKHRoYXQuc2RrLCB0aGF0LmVudGl0eSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5lbnRpdHkgPSBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgcG9zaXRpb24ubG5nLFxyXG4gICAgICAgIHBvc2l0aW9uLmxhdCxcclxuICAgICAgICBwb3NpdGlvbi5hbHRcclxuICAgICAgKSxcclxuICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgaW1hZ2U6IGlzR2xmID8gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGxldCBpbWcgPSB0aGF0Ll9mcmFtZUltYWdlc1tpbmRleF1cclxuICAgICAgICAgIGluZGV4ID0gaW5kZXggPj0gdGhhdC5fZnJhbWVJbWFnZXMubGVuZ3RoIC0gMSA/IDAgOiBpbmRleCArIDFcclxuICAgICAgICAgIHJldHVybiBpbWdcclxuICAgICAgICB9LCBmYWxzZSkgOiBjYW52YXMsXHJcbiAgICAgICAgc2NhbGU6IHRoYXQub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUsXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgaGVpZ2h0UmVmZXJlbmNlOiBoZWlnaHRNb2RlLFxyXG4gICAgICAgIGNvbG9yOiB0aGF0Lm9wdGlvbnMuYmlsbGJvYXJkLnNob3dcclxuICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICA6IG5ldyBDZXNpdW0uQ29sb3IoMS4wLCAxLjAsIDEuMCwgMCksXHJcbiAgICAgICAgd2lkdGg6IDMxLFxyXG4gICAgICAgIGhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBiaWxsYm9hcmRIXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NXHJcbiAgICAgICAgLy8gcGl4ZWxPZmZzZXQ6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIC8vICAgICAwLFxyXG4gICAgICAgIC8vICAgICAtKGJpbGxib2FyZEggLyAyKSAqIHRoYXQub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVcclxuICAgICAgICAvLyAgIClcclxuICAgICAgICAvLyB9LCBmYWxzZSlcclxuICAgICAgfSxcclxuICAgICAgbGFiZWw6IHtcclxuICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMubGFiZWwuc2hvdyxcclxuICAgICAgICB0ZXh0OiB0aGF0Lm9wdGlvbnMubGFiZWwudGV4dCxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0R3JvdW5kQ292ZXIoKSA/IHVuZGVmaW5lZCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBoZWlnaHRSZWZlcmVuY2U6IGhlaWdodE1vZGUsXHJcbiAgICAgICAgZm9udDogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplICsgJ3B4ICcgKyBmb250LFxyXG4gICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGFiZWwuY29sb3IpLFxyXG4gICAgICAgIC8vIHZlcnRpY2FsT3JpZ2luIDogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuYmlsbGJvYXJkLnNob3cpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgIC1iaWxsYm9hcmRIICogdGhhdC5vcHRpb25zLmJpbGxib2FyZC5zY2FsZSAtXHJcbiAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplIC8gMiAtXHJcbiAgICAgICAgICAgICAgNVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgLXRoYXQub3B0aW9ucy5sYWJlbC5mb250U2l6ZSAvIDIgLSA1XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgICAgb3V0bGluZVdpZHRoOiAxLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGF0LmVudGl0eS5iaWxsYm9hcmQuaW1nV2lkdGggPSAzMVxyXG4gICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmltZ0hlaWdodCA9IDM2XHJcbiAgICB0aGF0LmVudGl0eS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICBwb3NpdGlvbi5sbmcsXHJcbiAgICAgIHBvc2l0aW9uLmxhdCxcclxuICAgICAgcG9zaXRpb24uYWx0XHJcbiAgICApXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLmhlaWdodE1vZGUgPT0gMykge1xyXG4gICAgICB0aGF0LnVwZGF0ZUhlaWdodCgpXHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5yZW5ld1BvaW50KClcclxuICAgIC8vIHRoYXQuZGlmZnVzZVNob3cgPSB0aGF0Lm9wdGlvbnMuZGlmZnVzZVNob3dcclxuICAgIC8vIHRoYXQuc2NhblNob3cgPSB0aGF0Lm9wdGlvbnMuc2NhblNob3dcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5iaWxsYm9hcmQuaXNTZWxlY3QpIHtcclxuICAgICAgdGhhdC5zZWxlY3RCaWxsYm9hcmQoKVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDpgInkuK3mlYjmnpxcclxuICBzZWxlY3RCaWxsYm9hcmQoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY3JlZW5TcGFjZUV2ZW50SGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAoY2xpY2spIHtcclxuICAgICAgdmFyIHBpY2tlZE9iamVjdCA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5waWNrKGNsaWNrLnBvc2l0aW9uKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgQ2VzaXVtLmRlZmluZWQocGlja2VkT2JqZWN0KSAmJlxyXG4gICAgICAgIHBpY2tlZE9iamVjdC5pZCAmJlxyXG4gICAgICAgIHBpY2tlZE9iamVjdC5pZC5pZCA9PT0gJ2FpcnBvcnRCaWxsYm9hcmQnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICh0aGF0LmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICAgIC8vIOWmguaenOeCueWHu+eahOaYr0JpbGxib2FyZO+8jOe7meWug+a3u+WKoOmAieS4reaViOaenFxyXG4gICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVyAvLyDmlLnlj5jpopzoibJcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5Y+v5Lul5re75Yqg5pu05aSa6YCJ5Lit5pWI5p6c77yM5L6L5aaC6L655qGG562JXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoYXQuZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgICAgdGhhdC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLldISVRFXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICB9XHJcbiAgZ2V0IGF0dHJpYnV0ZVNlbGVjdCgpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAn5a+M5paH5pysJyxcclxuICAgICAgICB2YWx1ZTogJ+WvjOaWh+acrCcsXHJcbiAgICAgICAga2V5OiAncmljaFRleHQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICB2YWx1ZTogJ+mTvuaOpScsXHJcbiAgICAgICAga2V5OiAnbGluaydcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdJUOaRhOWDj+WktCcsXHJcbiAgICAgICAgdmFsdWU6ICdJUOaRhOWDj+WktCcsXHJcbiAgICAgICAga2V5OiAnY2FtZXJhJ1xyXG4gICAgICB9LFxyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAgbmFtZTogJ0lTQ+aRhOWDj+WktCcsXHJcbiAgICAgIC8vICAgdmFsdWU6ICdJU0PmkYTlg4/lpLQnLFxyXG4gICAgICAvLyAgIGtleTogJ2lzYydcclxuICAgICAgLy8gfSxcclxuICAgICAgLy8ge1xyXG4gICAgICAvLyAgIG5hbWU6ICfkvKDmhJ/lmagnLFxyXG4gICAgICAvLyAgIHZhbHVlOiAn5Lyg5oSf5ZmoJyxcclxuICAgICAgLy8gICBrZXk6ICdzZW5zb3InXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncnRtcCcsXHJcbiAgICAgICAgdmFsdWU6ICdydG1wJyxcclxuICAgICAgICBrZXk6ICdydG1wJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+WFqOaZr+WbvicsXHJcbiAgICAgICAgdmFsdWU6ICflhajmma/lm74nLFxyXG4gICAgICAgIGtleTogJ3ZyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+eJqei1hCcsXHJcbiAgICAgICAgdmFsdWU6ICfnianotYQnLFxyXG4gICAgICAgIGtleTogJ2dvb2RzJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTaG93Vmlldykge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHZcclxuICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpIHtcclxuICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvdylcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgfVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuLmNoZWNrZWQgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNTaG93VmlldyA9IGZhbHNlXHJcbiAgICAvLyBpZiAodikge1xyXG4gICAgLy8gICBpZiAodGhpcy5kaWZmdXNlU2hvdykge1xyXG4gICAgLy8gICAgIHRoaXMuZGlmZnVzZVNob3cgPSB0cnVlXHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgaWYgKHRoaXMuc2NhblNob3cpIHtcclxuICAgIC8vICAgICB0aGlzLnNjYW5TaG93ID0gdHJ1ZVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgaWYgKHRoaXMuZGlmZnVzZSkge1xyXG4gICAgLy8gICAgIHRoaXMuZGlmZnVzZS5zaG93ID0gdlxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICh0aGlzLnNjYW4pIHtcclxuICAgIC8vICAgICB0aGlzLnNjYW4uc2hvdyA9IHZcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA6IDBcclxuICB9XHJcbiAgc2V0IGhlaWdodE1vZGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSB2ID8gdiA6IDBcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID0gdiB8fCB2ID09IDAgPyB2IDogM1xyXG4gICAgbGV0IGhlaWdodE1vZGVcclxuICAgIGxldCBoZWlnaHRNb2RlTmFtZSA9ICcnXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgaGVpZ2h0TW9kZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuTk9ORVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgaGVpZ2h0TW9kZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuTk9ORVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgaGVpZ2h0TW9kZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5EXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMyc6XHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgICBoZWlnaHRNb2RlID0gQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5OT05FXHJcbiAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLnNkay5lbnRpdHlNYXApIHtcclxuICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSAnUmFkYXJTY2FuU3RlcmVvc2NvcGljJyAmJiB2YWx1ZS5lbnRpdHkpIHtcclxuICAgICAgICAgICAgb2JqZWN0c1RvRXhjbHVkZS5wdXNoKHZhbHVlLmVudGl0eSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbiwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoID0+IHtcclxuICAgICAgICAgIHRoaXMuYWx0ID0gTnVtYmVyKGgudG9GaXhlZCgyKSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmhlaWdodFJlZmVyZW5jZSA9IGhlaWdodE1vZGVcclxuICAgICAgdGhpcy5lbnRpdHkubGFiZWwuaGVpZ2h0UmVmZXJlbmNlID0gaGVpZ2h0TW9kZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsVGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwudGV4dFxyXG4gIH1cclxuICBzZXQgbGFiZWxUZXh0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0ID0gdlxyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSB2XHJcbiAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkubGFiZWwudGV4dCA9IHYgKyAnJylcclxuICAgIHRoaXMuX2VsbXMubGFiZWxUZXh0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxUZXh0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZ1xyXG4gIH1cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIGlmKHY9PT1udWxsIHx8IHY9PT11bmRlZmluZWQgfHwgdj09PScnKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCg4KSlcclxuICAgIH1cclxuICAgIC8vIHRoaXMuc2NhbiAmJiAodGhpcy5zY2FuLmxuZyA9IHYpXHJcbiAgICAvLyB0aGlzLmRpZmZ1c2UgJiYgKHRoaXMuZGlmZnVzZS5sbmcgPSB2KVxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuY29vcmRpbmF0ZSA9IHRoaXMub3B0aW9ucy5jb29yZGluYXRlXHJcbiAgICB0aGlzLl9wcm9qQ29udmVydCAmJiB0aGlzLl9wcm9qQ29udmVydCgpXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRcclxuICB9XHJcbiAgc2V0IGxhdCh2KSB7XHJcbiAgICBpZih2PT09bnVsbCB8fCB2PT09dW5kZWZpbmVkIHx8IHY9PT0nJykge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gdlxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoOCkpXHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnNjYW4gJiYgKHRoaXMuc2Nhbi5sYXQgPSB2KVxyXG4gICAgLy8gdGhpcy5kaWZmdXNlICYmICh0aGlzLmRpZmZ1c2UubGF0ID0gdilcclxuICAgIHRoaXMucmVuZXdQb2ludCgpXHJcbiAgICB0aGlzLmNvb3JkaW5hdGUgPSB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZVxyXG4gICAgdGhpcy5fcHJvakNvbnZlcnQgJiYgdGhpcy5fcHJvakNvbnZlcnQoKVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgfVxyXG4gIHNldCBhbHQodikge1xyXG4gICAgaWYodj09PW51bGwgfHwgdj09PXVuZGVmaW5lZCB8fCB2PT09JycpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDIpKVxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5zY2FuICYmICh0aGlzLnNjYW4uYWx0ID0gdilcclxuICAgIC8vIHRoaXMuZGlmZnVzZSAmJiAodGhpcy5kaWZmdXNlLmFsdCA9IHYpXHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgdGhpcy5jb29yZGluYXRlID0gdGhpcy5vcHRpb25zLmNvb3JkaW5hdGVcclxuICB9XHJcblxyXG4gIGdldCBuZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5uZWFyXHJcbiAgfVxyXG4gIHNldCBuZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5mYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuX2VsbXMubmVhciAmJlxyXG4gICAgICB0aGlzLl9lbG1zLm5lYXIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmFyXHJcbiAgfVxyXG4gIHNldCBmYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLm5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5uZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuZmFyID0gZmFyXHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgdGhpcy5fZWxtcy5mYXIgJiZcclxuICAgICAgdGhpcy5fZWxtcy5mYXIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IHNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuX2VsbXMuc2NhbGVCeURpc3RhbmNlICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuc2NhbGVCeURpc3RhbmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zaG93XHJcbiAgfVxyXG4gIHNldCBiaWxsYm9hcmRTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2hvdyA9IHZcclxuICAgIHRoaXMuZW50aXR5ICYmXHJcbiAgICAgICh0aGlzLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLnNob3dcclxuICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgIDogbmV3IENlc2l1bS5Db2xvcigxLjAsIDEuMCwgMS4wLCAwKSlcclxuICAgIHRoaXMuX2VsbXMuYmlsbGJvYXJkU2hvdyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmJpbGxib2FyZFNob3cuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZEltYWdlKCkge1xyXG4gICAgbGV0IHVybCA9IHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuaW1hZ2VcclxuICAgIGlmICh1cmwgJiYgIXVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICAvL+ivtOaYjuaYr+acrOWcsOeahGpzb27vvIzlnKjno4Hnm5jkuK3lrZjlnKjnmoRcclxuICAgICAgaWYgKCF1cmwuaW5jbHVkZXMoXCI6XCIpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0KSB7XHJcbiAgICAgICAgICBsZXQgbyA9IG5ldyBVUkwodXJsLCB0aGlzLm9wdGlvbnMuaG9zdClcclxuICAgICAgICAgIHVybCA9IG8uaHJlZlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybFxyXG4gIH1cclxuICBzZXQgYmlsbGJvYXJkSW1hZ2Uodikge1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5pbWFnZSA9IHRoaXMucmVwbGFjZUhvc3QodiwgdGhpcy5vcHRpb25zLmhvc3QpXHJcbiAgICBsZXQgdXJsID1cclxuICAgICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5pbWFnZSB8fFxyXG4gICAgICBnZXRCaWxsYm9hcmREZWZhdWx0VXJsKHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuZGVmYXVsdEltYWdlKSB8fFxyXG4gICAgICB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9BLWFibHUtYmxhbmsucG5nJ1xyXG5cclxuICAgIHRoaXMuX2VsbXMuYmlsbGJvYXJkSW1hZ2UgJiZcclxuICAgICAgdGhpcy5fZWxtcy5iaWxsYm9hcmRJbWFnZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uc3JjID0gdXJsXHJcbiAgICAgIH0pXHJcblxyXG4gICAgbGV0IGlzR2xmID0gZmFsc2VcclxuICAgIGxldCBzdXBlckdpZlxyXG4gICAgaWYgKF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgJiYgX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZS5nZXRWYSkgeyB9XHJcbiAgICBpZiAodXJsICYmIHVybC5lbmRzV2l0aCgnZ2lmJykpIHtcclxuICAgICAgaXNHbGYgPSB0cnVlXHJcblxyXG4gICAgICBsZXQgZ2lmSW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJylcclxuICAgICAgZ2lmSW1nLnNldEF0dHJpYnV0ZSgncmVsOmFuaW1hdGVkX3NyYycsIHVybClcclxuICAgICAgZ2lmSW1nLnNldEF0dHJpYnV0ZSgncmVsOmF1dG9fcGxheScsICcxJylcclxuICAgICAgY29uc3QgaW1nRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgaW1nRGl2LmFwcGVuZENoaWxkKGdpZkltZylcclxuICAgICAgbGV0IGlkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICBzdXBlckdpZiA9IG5ldyBTdXBlckdpZih7IGdpZjogZ2lmSW1nIH0pXHJcbiAgICAgIHRoaXMuX3N1cGVyR2lmID0gc3VwZXJHaWZcclxuICAgICAgdGhpcy5fc3VwZXJHaWYuaWQgPSBpZFxyXG4gICAgICBsZXQgYmlsbGJvYXJkSCA9IDM2XHJcbiAgICAgIGxldCBpbmRleCA9IDBcclxuICAgICAgX3RoaXMuX2ZyYW1lSW1hZ2VzID0gW11cclxuICAgICAgc3VwZXJHaWYubG9hZChmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PSA0MDQpIHtcclxuICAgICAgICAgIGxldCB3aWR0aCA9IDMxXHJcbiAgICAgICAgICBsZXQgaGVpZ2h0ID0gMzZcclxuICAgICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXHJcbiAgICAgICAgICBjYW52YXMud2lkdGggPSAwXHJcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMFxyXG4gICAgICAgICAgYmlsbGJvYXJkSCA9IDBcclxuICAgICAgICAgIF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1nV2lkdGggPSAwXHJcbiAgICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ0hlaWdodCA9IDBcclxuICAgICAgICAgIF90aGlzLmVudGl0eSAmJiAoX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IGNhbnZhcylcclxuICAgICAgICAgIF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaGVpZ2h0ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgX3RoaXMuZW50aXR5LmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAwKVxyXG4gICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgICBiaWxsYm9hcmRIID0gaGVpZ2h0ICogKDMxIC8gd2lkdGgpXHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKF90aGlzLl9zdXBlckdpZi5pZCAhPSBpZCkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBsZW5ndGggPSBzdXBlckdpZi5nZXRfbGVuZ3RoKClcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgc3VwZXJHaWYubW92ZV90byhpKVxyXG4gICAgICAgICAgX3RoaXMuX2ZyYW1lSW1hZ2VzLnB1c2goc3VwZXJHaWYuZ2V0X2NhbnZhcygpLnRvRGF0YVVSTCgpKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjYW52YXMgPSBzdXBlckdpZi5nZXRfY2FudmFzKClcclxuICAgICAgICBsZXQgd2lkdGggPSBjYW52YXMud2lkdGhcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gY2FudmFzLmhlaWdodFxyXG4gICAgICAgIGJpbGxib2FyZEggPSBoZWlnaHQgKiAoMzEgLyB3aWR0aClcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ1dpZHRoID0gd2lkdGhcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ0hlaWdodCA9IGhlaWdodFxyXG4gICAgICAgIF90aGlzLmVudGl0eSAmJiAoX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgaW1nID0gX3RoaXMuX2ZyYW1lSW1hZ2VzW2luZGV4XVxyXG4gICAgICAgICAgaW5kZXggPSBpbmRleCA+PSBfdGhpcy5fZnJhbWVJbWFnZXMubGVuZ3RoIC0gMSA/IDAgOiBpbmRleCArIDFcclxuICAgICAgICAgIHJldHVybiBpbWdcclxuICAgICAgICB9LCBmYWxzZSkpXHJcbiAgICAgICAgX3RoaXMuZW50aXR5LmJpbGxib2FyZC5oZWlnaHQgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGJpbGxib2FyZEhcclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICBfdGhpcy5lbnRpdHkubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMuYmlsbGJvYXJkLnNob3cpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgIC1iaWxsYm9hcmRIICogX3RoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUgLVxyXG4gICAgICAgICAgICAgIF90aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgLyAyIC1cclxuICAgICAgICAgICAgICA1XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLV90aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgLyAyIC0gNSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKVxyXG4gICAgICBpbWFnZS5zcmMgPSB1cmxcclxuICAgICAgbGV0IGJpbGxib2FyZEggPSAzNlxyXG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHJhdGlvID0gaW1hZ2Uud2lkdGggLyBpbWFnZS5oZWlnaHRcclxuICAgICAgICBpbWFnZS53aWR0aCA9IDEwMFxyXG4gICAgICAgIGltYWdlLmhlaWdodCA9IDEwMCAvIHJhdGlvXHJcbiAgICAgICAgbGV0IHdpZHRoID0gaW1hZ2Uud2lkdGhcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywgeyB3aWxsUmVhZEZyZXF1ZW50bHk6IHRydWUgfSlcclxuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aFxyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHRcclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG4gICAgICAgIGJpbGxib2FyZEggPSBoZWlnaHQgKiAoMzEgLyB3aWR0aClcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ1dpZHRoID0gd2lkdGhcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ0hlaWdodCA9IGhlaWdodFxyXG4gICAgICAgIF90aGlzLmVudGl0eSAmJiAoX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IGNhbnZhcylcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmhlaWdodCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gYmlsbGJvYXJkSFxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIF90aGlzLmVudGl0eS5sYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2hvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgLWJpbGxib2FyZEggKiBfdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zY2FsZSAtXHJcbiAgICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSAvIDIgLVxyXG4gICAgICAgICAgICAgIDVcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAtX3RoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSAvIDIgLSA1KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIGJpbGxib2FyZEggPSBoZWlnaHQgKiAoMzEgLyB3aWR0aClcclxuICAgICAgfVxyXG4gICAgICBpbWFnZS5vbmVycm9yID0gZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IDMxXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IDM2XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gMFxyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSAwXHJcbiAgICAgICAgYmlsbGJvYXJkSCA9IDBcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ1dpZHRoID0gMFxyXG4gICAgICAgIF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ID0gMFxyXG4gICAgICAgIF90aGlzLmVudGl0eSAmJiAoX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IGNhbnZhcylcclxuICAgICAgICBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmhlaWdodCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gMFxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIF90aGlzLmVudGl0eS5sYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIDApXHJcbiAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgYmlsbGJvYXJkSCA9IGhlaWdodCAqICgzMSAvIHdpZHRoKVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZFNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVcclxuICB9XHJcbiAgc2V0IGJpbGxib2FyZFNjYWxlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUgPSB2XHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgdGhpcy5fZWxtcy5iaWxsYm9hcmRTY2FsZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmJpbGxib2FyZFNjYWxlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5sYWJlbC5zaG93ID0gdilcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMucmVuZXdQb2ludCgpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdiB8fCAnIzAwZmZmZidcclxuICAgIHRoaXMucmVuZXdQb2ludCgpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogYyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IGRpZmZ1c2VTaG93KCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kaWZmdXNlU2hvd1xyXG4gIC8vIH1cclxuICAvLyBzZXQgZGlmZnVzZVNob3codikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmRpZmZ1c2VTaG93ID0gdlxyXG4gIC8vICAgdGhpcy5fZWxtcy5kaWZmdXNlU2hvdyAmJiB0aGlzLl9lbG1zLmRpZmZ1c2VTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAvLyAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gIC8vICAgfSlcclxuICAvLyAgIGlmICh2ICYmIHRoaXMuc2NhblNob3cpIHtcclxuICAvLyAgICAgdGhpcy5zY2FuU2hvdyA9IGZhbHNlXHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAodGhpcy5kaWZmdXNlKSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLnNob3cpIHtcclxuICAvLyAgICAgICB0aGlzLmRpZmZ1c2Uuc2hvdyA9IHRoaXMub3B0aW9ucy5kaWZmdXNlU2hvd1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgdGhpcy5kaWZmdXNlID0gbmV3IENpcmNsZURpZmZ1c2UodGhpcy5zZGssIHsgc2hvdzogdGhpcy5kaWZmdXNlU2hvdywgbG5nOiB0aGlzLmxuZywgbGF0OiB0aGlzLmxhdCwgcmFkaXVzOiB0aGlzLmRpZmZ1c2VSYWRpdXMsIGR1cmF0aW9uOiB0aGlzLmRpZmZ1c2VEdXJhdGlvbiwgY29sb3I6IHRoaXMuZGlmZnVzZUNvbG9yIH0pXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXQgZGlmZnVzZVJhZGl1cygpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlmZnVzZVJhZGl1c1xyXG4gIC8vIH1cclxuICAvLyBzZXQgZGlmZnVzZVJhZGl1cyh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuZGlmZnVzZVJhZGl1cyA9IHZcclxuICAvLyAgIHRoaXMuX2VsbXMuZGlmZnVzZVJhZGl1cyAmJiB0aGlzLl9lbG1zLmRpZmZ1c2VSYWRpdXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gIC8vICAgICBpdGVtLnZhbHVlID0gdlxyXG4gIC8vICAgfSlcclxuICAvLyAgIGlmICh0aGlzLmRpZmZ1c2UpIHtcclxuICAvLyAgICAgdGhpcy5kaWZmdXNlLnJhZGl1cyA9IHRoaXMub3B0aW9ucy5kaWZmdXNlUmFkaXVzXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXQgZGlmZnVzZUR1cmF0aW9uKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kaWZmdXNlRHVyYXRpb25cclxuICAvLyB9XHJcbiAgLy8gc2V0IGRpZmZ1c2VEdXJhdGlvbih2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuZGlmZnVzZUR1cmF0aW9uID0gdlxyXG4gIC8vICAgdGhpcy5fZWxtcy5kaWZmdXNlRHVyYXRpb24gJiYgdGhpcy5fZWxtcy5kaWZmdXNlRHVyYXRpb24uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gIC8vICAgICBpdGVtLnZhbHVlID0gdlxyXG4gIC8vICAgfSlcclxuICAvLyAgIGlmICh0aGlzLmRpZmZ1c2UpIHtcclxuICAvLyAgICAgdGhpcy5kaWZmdXNlLmR1cmF0aW9uID0gdGhpcy5vcHRpb25zLmRpZmZ1c2VEdXJhdGlvblxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IGRpZmZ1c2VDb2xvcigpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlmZnVzZUNvbG9yXHJcbiAgLy8gfVxyXG4gIC8vIHNldCBkaWZmdXNlQ29sb3Iodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmRpZmZ1c2VDb2xvciA9IHZcclxuICAvLyAgIGlmICh0aGlzLl9lbG1zLmRpZmZ1c2VDb2xvcikge1xyXG4gIC8vICAgICB0aGlzLl9lbG1zLmRpZmZ1c2VDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgLy8gICAgICAgbGV0IGRpZmZ1c2VDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAvLyAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gIC8vICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgLy8gICAgICAgICBhbHBoYTogZmFsc2UsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAvLyAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAvLyAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gIC8vICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgLy8gICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gIC8vICAgICAgICAgICB0aGlzLmRpZmZ1c2VDb2xvciA9IGNcclxuICAvLyAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAvLyAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIHRoaXMuZGlmZnVzZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgLy8gICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgICB0aGlzLl9lbG1zLmRpZmZ1c2VDb2xvcltpXSA9IGRpZmZ1c2VDb2xvclBpY2tlclxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKHRoaXMuZGlmZnVzZSkge1xyXG4gIC8vICAgICB0aGlzLmRpZmZ1c2UuY29sb3IgPSB0aGlzLm9wdGlvbnMuZGlmZnVzZUNvbG9yXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXQgc2NhblNob3coKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYW5TaG93XHJcbiAgLy8gfVxyXG4gIC8vIHNldCBzY2FuU2hvdyh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuc2NhblNob3cgPSB2XHJcbiAgLy8gICB0aGlzLl9lbG1zLnNjYW5TaG93ICYmIHRoaXMuX2VsbXMuc2NhblNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gIC8vICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgLy8gICB9KVxyXG4gIC8vICAgaWYgKHYgJiYgdGhpcy5kaWZmdXNlU2hvdykge1xyXG4gIC8vICAgICB0aGlzLmRpZmZ1c2VTaG93ID0gZmFsc2VcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICh0aGlzLnNjYW4pIHtcclxuICAvLyAgICAgaWYgKHRoaXMuc2hvdykge1xyXG4gIC8vICAgICAgIHRoaXMuc2Nhbi5zaG93ID0gdGhpcy5vcHRpb25zLnNjYW5TaG93XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLnNjYW4gPSBuZXcgUmFkYXJTY2FuKHRoaXMuc2RrLCB7IHNob3c6IHRoaXMuc2NhblNob3csIGxuZzogdGhpcy5sbmcsIGxhdDogdGhpcy5sYXQsIHJhZGl1czogdGhpcy5zY2FuUmFkaXVzLCBkdXJhdGlvbjogdGhpcy5zY2FuRHVyYXRpb24sIGNvbG9yOiB0aGlzLnNjYW5Db2xvciB9KVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IHNjYW5SYWRpdXMoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYW5SYWRpdXNcclxuICAvLyB9XHJcbiAgLy8gc2V0IHNjYW5SYWRpdXModikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLnNjYW5SYWRpdXMgPSB2XHJcbiAgLy8gICB0aGlzLl9lbG1zLnNjYW5SYWRpdXMgJiYgdGhpcy5fZWxtcy5zY2FuUmFkaXVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAvLyAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAvLyAgIH0pXHJcbiAgLy8gICBpZiAodGhpcy5zY2FuKSB7XHJcbiAgLy8gICAgIHRoaXMuc2Nhbi5yYWRpdXMgPSB0aGlzLm9wdGlvbnMuc2NhblJhZGl1c1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IHNjYW5EdXJhdGlvbigpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbkR1cmF0aW9uXHJcbiAgLy8gfVxyXG4gIC8vIHNldCBzY2FuRHVyYXRpb24odikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLnNjYW5EdXJhdGlvbiA9IHZcclxuICAvLyAgIHRoaXMuX2VsbXMuc2NhbkR1cmF0aW9uICYmIHRoaXMuX2VsbXMuc2NhbkR1cmF0aW9uLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAvLyAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAvLyAgIH0pXHJcbiAgLy8gICBpZiAodGhpcy5zY2FuKSB7XHJcbiAgLy8gICAgIHRoaXMuc2Nhbi5kdXJhdGlvbiA9IHRoaXMub3B0aW9ucy5zY2FuRHVyYXRpb25cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIGdldCBzY2FuQ29sb3IoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYW5Db2xvclxyXG4gIC8vIH1cclxuICAvLyBzZXQgc2NhbkNvbG9yKHYpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5zY2FuQ29sb3IgPSB2XHJcbiAgLy8gICBpZiAodGhpcy5fZWxtcy5zY2FuQ29sb3IpIHtcclxuICAvLyAgICAgdGhpcy5fZWxtcy5zY2FuQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gIC8vICAgICAgIGxldCBzY2FuQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgLy8gICAgICAgICBlbDogaXRlbS5lbCxcclxuICAvLyAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gIC8vICAgICAgICAgYWxwaGE6IGZhbHNlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgLy8gICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgLy8gICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAvLyAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gIC8vICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAvLyAgICAgICAgICAgdGhpcy5zY2FuQ29sb3IgPSBjXHJcbiAgLy8gICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgLy8gICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gIC8vICAgICAgICAgICB0aGlzLnNjYW5Db2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gIC8vICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICAgdGhpcy5fZWxtcy5zY2FuQ29sb3JbaV0gPSBzY2FuQ29sb3JQaWNrZXJcclxuICAvLyAgICAgfSlcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICh0aGlzLnNjYW4pIHtcclxuICAvLyAgICAgdGhpcy5zY2FuLmNvbG9yID0gdGhpcy5vcHRpb25zLnNjYW5Db2xvclxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcblxyXG4gIGdldCBhdHRyaWJ1dGVMaW5rKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlTGluayh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHZcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuX0RpYWxvZ09iamVjdCB8fFxyXG4gICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8XHJcbiAgICAgICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fFxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICdhdHRyaWJ1dGUtY29udGVudC1saW5rJ1xyXG4gICAgICApLmxlbmd0aCA9PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdXHJcbiAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ciA9XHJcbiAgICAgICAgYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgK1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldLm5hbWUgK1xyXG4gICAgICAgIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgK1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldLnVybCArXHJcbiAgICAgICAgYDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRWRpdFwiPue8lui+kTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibGlua0RlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PmBcclxuICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGxldCBmdW4gPSB7XHJcbiAgICAgIGxpbmtFZGl0OiBhc3luYyBpbmRleCA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gYXdhaXQgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKVsxXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpdGVtW2ldLm9mZnNldEhlaWdodFxyXG4gICAgICAgICAgICBsZXQgaHRtbCA9IGBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0IGxpbmstZWRpdFwiIHR5cGU9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgICAgICAgICAgIGl0ZW1baV0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgICAgICAgICBsZXQgdGV4dGFyZWFFbG0gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmstZWRpdCcpWzBdXHJcbiAgICAgICAgICAgIHRleHRhcmVhRWxtLnN0eWxlLmhlaWdodCA9IGhlaWdodCAtIDEwICsgJ3B4J1xyXG4gICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgICAnaW5wdXQnXHJcbiAgICAgICAgICAgIClbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpbmRleF0ubmFtZVxyXG4gICAgICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAgICdpbnB1dCdcclxuICAgICAgICAgICAgKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGxpbmtEZWxldGU6IGkgPT4ge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50LnNwbGljZShpLCAxKVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBjb25maXJtRWRpdDogKHZhbHVlLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IG5hbWUgPSB2YWx1ZS5uYW1lICYmIHZhbHVlLm5hbWUucmVwbGFjZSgvXFxzL2csICcnKVxyXG4gICAgICAgIGxldCB1cmwgPSB2YWx1ZS51cmwgJiYgdmFsdWUudXJsLnJlcGxhY2UoL1xccy9nLCAnJylcclxuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldID0gdmFsdWVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgd2luZG93LkVMRU1FTlQgJiZcclxuICAgICAgICAgICAgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ+WQjeensOaIlumTvuaOpeS4jeiDveS4uuepuu+8gScsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBmaWxlU2VsZWN0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgZmlsZUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXVxyXG4gICAgICAgIGZpbGVFbG0uY2xpY2soKVxyXG4gICAgICAgIGZpbGVFbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgICBmaWxlRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlU2VsZWN0ID0gZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgICAgbGV0IHRkID0gaXRlbVtcclxuICAgICAgICAgIGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2luZGV4JylcclxuICAgICAgICBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZUNhbWVyYSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlQ2FtZXJhKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgPSB2XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlSVNDKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuaXNjLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVJU0Modikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5pc2MuY29udGVudCA9IHZcclxuICB9XHJcblxyXG4gIGdldCBhdHRyaWJ1dGVWcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVWcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPSB2XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLl9EaWFsb2dPYmplY3QgfHxcclxuICAgICAgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fFxyXG4gICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgfHxcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAnYXR0cmlidXRlLWNvbnRlbnQtdnInXHJcbiAgICAgICkubGVuZ3RoID09IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC12cicpWzFdXHJcbiAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRyID1cclxuICAgICAgICBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldLm5hbWUgK1xyXG4gICAgICAgIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgK1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpXS51cmwgK1xyXG4gICAgICAgIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwidnJFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ2ckRlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PmBcclxuICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGxldCBmdW4gPSB7XHJcbiAgICAgIHZyRWRpdDogYXN5bmMgaW5kZXggPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSBhd2FpdCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LXZyJylbMV1cclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gaXRlbVtpXS5vZmZzZXRIZWlnaHRcclxuICAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dCBsaW5rLWVkaXRcIiB0eXBlPVwidGV4dFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29uZmlybUVkaXRcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjYW5jZWxFZGl0XCI+5Y+W5raIPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICAgICAgbGV0IHRleHRhcmVhRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rLWVkaXQnKVswXVxyXG4gICAgICAgICAgICB0ZXh0YXJlYUVsbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgLSAxMCArICdweCdcclxuICAgICAgICAgICAgbGV0IHRkID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgICAgICAgICAgIHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICAgJ2lucHV0J1xyXG4gICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICAgJ2lucHV0J1xyXG4gICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHZyRGVsZXRlOiBpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCAnJylcclxuICAgICAgICBsZXQgdXJsID0gdmFsdWUudXJsICYmIHZhbHVlLnVybC5yZXBsYWNlKC9cXHMvZywgJycpXHJcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaV0gPSB2YWx1ZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJlxyXG4gICAgICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgICBtZXNzYWdlOiAn5ZCN56ew5oiW6ZO+5o6l5LiN6IO95Li656m677yBJyxcclxuICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBjYW5jZWxFZGl0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBmaWxlU2VsZWN0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgZmlsZUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXVxyXG4gICAgICAgIGZpbGVFbG0uY2xpY2soKVxyXG4gICAgICAgIGZpbGVFbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgICBmaWxlRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlU2VsZWN0ID0gZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgICAgbGV0IHRkID0gaXRlbVtcclxuICAgICAgICAgIGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2luZGV4JylcclxuICAgICAgICBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZVJ0bXAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVSdG1wKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcC5jb250ZW50ID0gdlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0IHx8XHJcbiAgICAgICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgfHxcclxuICAgICAgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50IHx8XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgJ2F0dHJpYnV0ZS1jb250ZW50LXJ0bXAnXHJcbiAgICAgICkubGVuZ3RoID09IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1ydG1wJylbMV1cclxuICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcC5jb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRyID1cclxuICAgICAgICBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRbaV0ubmFtZSArXHJcbiAgICAgICAgYDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRbaV0udXJsICtcclxuICAgICAgICBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInJ0bXBFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJydG1wRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+YFxyXG4gICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gICAgfVxyXG4gICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgbGV0IGZ1biA9IHtcclxuICAgICAgcnRtcEVkaXQ6IGFzeW5jIGluZGV4ID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVJ0bXAgPSBhd2FpdCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnJ0bXAuY29udGVudFxyXG4gICAgICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtcnRtcCcpWzFdXHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUnKVswXVxyXG4gICAgICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICBsZXQgaXRlbSA9IHRhYmxlQ29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcclxuICAgICAgICAgICAgbGV0IGhlaWdodCA9IGl0ZW1baV0ub2Zmc2V0SGVpZ2h0XHJcbiAgICAgICAgICAgIGxldCBodG1sID0gYFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQgbGluay1lZGl0XCIgdHlwZT1cInRleHRcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNvbmZpcm1FZGl0XCI+56Gu6K6kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY2FuY2VsRWRpdFwiPuWPlua2iDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgaXRlbVtpXS5pbm5lckhUTUwgPSBodG1sXHJcbiAgICAgICAgICAgIGxldCB0ZXh0YXJlYUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluay1lZGl0JylbMF1cclxuICAgICAgICAgICAgdGV4dGFyZWFFbG0uc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0IC0gMTAgKyAncHgnXHJcbiAgICAgICAgICAgIGxldCB0ZCA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgICAgICB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAgICdpbnB1dCdcclxuICAgICAgICAgICAgKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcC5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICAgJ2lucHV0J1xyXG4gICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRbaW5kZXhdLnVybFxyXG4gICAgICAgICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuW20udmFsdWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgcnRtcERlbGV0ZTogaSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVSdG1wID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGNvbmZpcm1FZGl0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICBsZXQgbmFtZSA9IHZhbHVlLm5hbWUgJiYgdmFsdWUubmFtZS5yZXBsYWNlKC9cXHMvZywgJycpXHJcbiAgICAgICAgbGV0IHVybCA9IHZhbHVlLnVybCAmJiB2YWx1ZS51cmwucmVwbGFjZSgvXFxzL2csICcnKVxyXG4gICAgICAgIGlmIChuYW1lICYmIHVybCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRbaV0gPSB2YWx1ZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJlxyXG4gICAgICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgICBtZXNzYWdlOiAn5ZCN56ew5oiW6ZO+5o6l5LiN6IO95Li656m677yBJyxcclxuICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVSdG1wID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5ydG1wLmNvbnRlbnRcclxuICAgICAgfSxcclxuICAgICAgY2FuY2VsRWRpdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlUnRtcCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcC5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVTZWxlY3QgPSBldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgICBsZXQgdGQgPSBpdGVtW1xyXG4gICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKVxyXG4gICAgICAgIF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuW20udmFsdWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oaSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlR29vZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcbiAgfVxyXG5cclxuICBzZXQgYXR0cmlidXRlR29vZHModikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID0gdlxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZERlZmF1bHRJbWFnZSgpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGdldEJpbGxib2FyZERlZmF1bHRVcmwodGhpcy5vcHRpb25zLmJpbGxib2FyZC5kZWZhdWx0SW1hZ2UpIHx8XHJcbiAgICAgIHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL0EtYWJsdS1ibGFuay5wbmcnXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZXQgYmlsbGJvYXJkRGVmYXVsdEltYWdlKHYpIHtcclxuICAgIGxldCB1cmwgPSB0aGlzLnJlcGxhY2VIb3N0KHYsIHRoaXMub3B0aW9ucy5ob3N0KVxyXG4gICAgc2V0QmlsbGJvYXJkRGVmYXVsdFVybCh1cmwsIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuZGVmYXVsdEltYWdlKVxyXG4gICAgdGhpcy5fZWxtcy5iaWxsYm9hcmREZWZhdWx0SW1hZ2UgJiZcclxuICAgICAgdGhpcy5fZWxtcy5iaWxsYm9hcmREZWZhdWx0SW1hZ2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnNyYyA9IHVybFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvb3JkaW5hdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvb3JkaW5hdGVcclxuICB9XHJcbiAgc2V0IGNvb3JkaW5hdGUodikge1xyXG4gICAgcmV0dXJuXHJcbiAgICB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZSA9IHZcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuX3Byb2ouY29udmVydChcclxuICAgICAgW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHg6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICB5OiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICAgICAgejogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgJ0VQU0c6NDMyNicsXHJcbiAgICAgIHZcclxuICAgICkucG9pbnRzXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCAmJlxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgJiZcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgJiZcclxuICAgICAgcG9zaXRpb25bMF1cclxuICAgICkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICdjb252ZXJ0LXgnXHJcbiAgICAgIClbMF0udmFsdWUgPSBwb3NpdGlvblswXS54XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgJ2NvbnZlcnQteSdcclxuICAgICAgKVswXS52YWx1ZSA9IHBvc2l0aW9uWzBdLnlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAnY29udmVydC16J1xyXG4gICAgICApWzBdLnZhbHVlID0gcG9zaXRpb25bMF0uelxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5jb29yZGluYXRlICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuY29vcmRpbmF0ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24g57yW6L6R5qGGXHJcbiAgICogQHBhcmFtIHN0YXRlPWZhbHNlIHtib29sZWFufSDnirbmgIE6IHRydWXmiZPlvIAsIGZhbHNl5YWz6ZetXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgLy8gbGV0IGVsbXMgPSB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tYmFzZS1kaWFsb2cnKVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IGVsbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoZWxtc1tpXSlcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2coXHJcbiAgICAgICAgdGhpcy5zZGssXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiAn54K55bGe5oCnJyxcclxuICAgICAgICAgIGxlZnQ6ICcxODBweCcsXHJcbiAgICAgICAgICB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgICBjb25maXJtQ2FsbEJhY2s6IG9wdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsVGV4dCA9IHRoaXMubGFiZWxUZXh0LnRyaW0oKVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMubGFiZWxUZXh0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYWJlbFRleHQgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICAgIGxldCBjZG9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgICAgY2RvcHRpb25zLmhvc3QgPSAnJ1xyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soY2RvcHRpb25zKVxyXG4gICAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgICAgIH0sIDApXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvd0NhbGxCYWNrOiBzaG93ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB1cGRhdGVIZWlnaHRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGJpbGxib2FyZC1vYmplY3QnXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlSVNDID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5pc2MuY29udGVudFxyXG5cclxuICAgICAgLy8gbGV0IGNvb3JkaW5hdGVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nvb3JkaW5hdGUtc2VsZWN0JylbMF1cclxuICAgICAgLy8gbGV0IG9wdGlvbiA9ICcnXHJcbiAgICAgIC8vIHRoaXMuX3Byb2ouZXBzZ19tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAvLyAgIGlmICghdGhpcy5vcHRpb25zLmNvb3JkaW5hdGUpIHtcclxuICAgICAgLy8gICAgIHRoaXMub3B0aW9ucy5jb29yZGluYXRlID0ga2V5XHJcbiAgICAgIC8vICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb29yZGluYXRlID0ga2V5XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIG9wdGlvbiArPSBgPG9wdGlvbiB2YWx1ZT1cIiR7a2V5fVwiPiR7dmFsdWUubmFtZX0gKCR7dmFsdWUuZXBzZ30pPC9vcHRpb24+YFxyXG4gICAgICAvLyB9KVxyXG4gICAgICAvLyBjb29yZGluYXRlRWxtLmlubmVySFRNTCA9IG9wdGlvblxyXG4gICAgICAvLyB0aGlzLmNvb3JkaW5hdGUgPSB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZVxyXG5cclxuICAgICAgLy8g5Yib5bu65qCH562+6aG1XHJcbiAgICAgIGxldCB0YWJzRWxtID0gbmV3IGN5X3RhYnMoJ3BvaW50LW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsQ29sb3InKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIGxldCBkaWZmdXNlQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgIC8vICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImRpZmZ1c2VDb2xvclwiKVswXSxcclxuICAgICAgLy8gICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgLy8gICBhbHBoYTogZmFsc2UsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgLy8gICBkZWZhdWx0Q29sb3I6IHRoaXMuZGlmZnVzZUNvbG9yLFxyXG4gICAgICAvLyAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAvLyAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAvLyAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5kaWZmdXNlQ29sb3IgPSBjb2xvclxyXG4gICAgICAvLyAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgLy8gICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5kaWZmdXNlQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgLy8gICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIC8vIGxldCBzY2FuQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgIC8vICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNjYW5Db2xvclwiKVswXSxcclxuICAgICAgLy8gICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgLy8gICBhbHBoYTogZmFsc2UsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgLy8gICBkZWZhdWx0Q29sb3I6IHRoaXMuc2NhbkNvbG9yLFxyXG4gICAgICAvLyAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAvLyAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAvLyAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5zY2FuQ29sb3IgPSBjb2xvclxyXG4gICAgICAvLyAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgLy8gICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5zY2FuQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgLy8gICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpXHJcbiAgICAgIHRoaXMuX0V2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gdGhpcy5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICAvLyB0aGlzLl9lbG1zLmRpZmZ1c2VDb2xvciA9IFtkaWZmdXNlQ29sb3JQaWNrZXJdXHJcbiAgICAgIC8vIHRoaXMuX2VsbXMuc2NhbkNvbG9yID0gW3NjYW5Db2xvclBpY2tlcl1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIC8vIHRoaXMuYXR0cmlidXRlQ2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5JU0NTZWxlY3QgJiYgdGhpcy5JU0NTZWxlY3QoKVxyXG4gICAgICAgIHRoaXMuZ29vZHNTZWxlY3QgJiYgdGhpcy5nb29kc1NlbGVjdCgpXHJcblxyXG4gICAgICAgIGxldCBjb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgIGNvbC5jbGFzc05hbWUgPSAnY29sJ1xyXG4gICAgICAgIGNvbC5zdHlsZS5mbGV4ID0gJzAgMCAxMTBweCdcclxuICAgICAgICBjb2wuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWxnuaAp+ahhjwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIj5cclxuICAgICAgICBgXHJcblxyXG4gICAgICAgIGxldCByb3cgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyb3cnKVswXVxyXG4gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjb2wpXHJcbiAgICAgICAgbGV0IHRhZ0RhdGEgPSB0aGlzLmF0dHJpYnV0ZVNlbGVjdFxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ2F0dHJpYnV0ZS1zZWxlY3QtYm94J1xyXG4gICAgICAgIClbMF1cclxuICAgICAgICBpZiAoYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AoYXR0cmlidXRlRWxtLCAnLmF0dHJpYnV0ZS1zZWxlY3QnKVxyXG4gICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZVNlbGVjdEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0YWdEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY29vcmRpbmF0ZURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMuZXBzZ19tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgY29vcmRpbmF0ZURhdGEucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGAke3ZhbHVlLm5hbWV9KCR7dmFsdWUuZXBzZ30pYCxcclxuICAgICAgICAgICAgdmFsdWU6IGtleVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBjb29yZGluYXRlRGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2Nvb3JkaW5hdGUtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmNvb3JkaW5hdGUtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoY29vcmRpbmF0ZURhdGFMZWdwT2JqZWN0KSB7XHJcbiAgICAgICAgICBjb29yZGluYXRlRGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2goY29vcmRpbmF0ZURhdGEpXHJcbiAgICAgICAgICBsZXQgY29vcmRpbmF0ZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nvb3JkaW5hdGUtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29vcmRpbmF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvb3JkaW5hdGUgPSBjb29yZGluYXRlRGF0YVswXS52YWx1ZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb29yZGluYXRlID0gdGhpcy5jb29yZGluYXRlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb29yZGluYXRlRGF0YUxlZ3BFbG0udmFsdWUgPSB0aGlzLmNvb3JkaW5hdGVcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVEYXRhW2ldLnZhbHVlID09PSBjb29yZGluYXRlRGF0YS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvb3JkaW5hdGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChjb29yZGluYXRlRGF0YVtpXS52YWx1ZSA9PT0gY29vcmRpbmF0ZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvb3JkaW5hdGUgPSBjb29yZGluYXRlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgICAgbGV0IGhlaWdodEVsbSA9IGhlaWdodEJveEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAga2V5OiAnMCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICAgIGtleTogJzEnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5L6d6ZmE5Zyw6KGoJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfkvp3pmYTlnLDooagnLFxyXG4gICAgICAgICAgICBrZXk6ICcyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgICAga2V5OiAnMydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuXHJcbiAgICAgICAgc3dpdGNoIChoZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gdGhpcy5hbHRcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHkpIHtcclxuICAgICAgICAgICAgICBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICApLnRoZW4ocG9zaXRpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gTnVtYmVyKFxyXG4gICAgICAgICAgICAgICAgICAodGhpcy5hbHQgLSBOdW1iZXIocG9zaXRpb25bMF0uaGVpZ2h0LnRvRml4ZWQoMikpKS50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSBOdW1iZXIodGhpcy5hbHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICBjYXNlICczJzpcclxuICAgICAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5zZGsuZW50aXR5TWFwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdSYWRhclNjYW5TdGVyZW9zY29waWMnICYmIHZhbHVlLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0c1RvRXhjbHVkZS5wdXNoKHZhbHVlLmVudGl0eSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbiwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFsdCA9IE51bWJlcihoLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gdGhpcy5hbHRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdoZWlnaHQtbW9kZS1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGhlaWdodE1vZGVPYmplY3QpIHtcclxuICAgICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1tb2RlJylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUgPSBoZWlnaHRNb2RlRGF0YVt0aGlzLmhlaWdodE1vZGVdLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0Qm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUudGVycmFpblByb3ZpZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICApLnRoZW4ocG9zaXRpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsdCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihwb3NpdGlvblswXS5oZWlnaHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0Qm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSAxXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSAyXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgICBjYXNlICczJzpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdSYWRhclNjYW5TdGVyZW9zY29waWMnICYmIHZhbHVlLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzVG9FeGNsdWRlLnB1c2godmFsdWUuZW50aXR5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uLCBvYmplY3RzVG9FeGNsdWRlKS50aGVuKGggPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbHQgPSBOdW1iZXIoaC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gM1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBoZWlnaHRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgIE51bWJlcihoZWlnaHRFbG0udmFsdWUpLnRvRml4ZWQoMilcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgKS50aGVuKHBvc2l0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsdCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIocG9zaXRpb25bMF0uaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgICAgICAgICAgdGhpcy5jb29yZGluYXRlID0gdGhpcy5vcHRpb25zLmNvb3JkaW5hdGVcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5hbHQgJiZcclxuICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0ID0gaGVpZ2h0Qm94RWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG1cclxuXHJcbiAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKVxyXG5cclxuICAgICAgbGV0IGxuZ0VsbiA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nJylbMF1cclxuICAgICAgbGV0IGxhdEVsbiA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGF0JylbMF1cclxuICAgICAgbG5nRWxuLnZhbHVlID0gdGhpcy5sbmdcclxuICAgICAgbGF0RWxuLnZhbHVlID0gdGhpcy5sYXRcclxuICAgICAgdGhpcy5fZWxtcy5sbmcucHVzaChsbmdFbG4pXHJcbiAgICAgIHRoaXMuX2VsbXMubGF0LnB1c2gobGF0RWxuKVxyXG5cclxuICAgICAgbGV0IHByb2pDaGVja2JveEJveEVsbXMgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICdZSi1jdXN0b20tY2hlY2tib3gtYm94J1xyXG4gICAgICApXHJcbiAgICAgIGxldCBwcm9qQ2hlY2tib3hFbG1zID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAnWUotY3VzdG9tLWNoZWNrYm94J1xyXG4gICAgICApXHJcbiAgICAgIGxldCBwcm9qSW5wdXRCb3hFbG1zID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAncHJvai1pbnB1dC1ib3gnXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHByb2pDaGVja2JveEVsbXNbMF0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgcHJvaklucHV0Qm94RWxtc1sxXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIHByb2pJbnB1dEJveEVsbXNbMl0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG5cclxuICAgICAgcHJvakNoZWNrYm94Qm94RWxtc1swXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBwcm9qQ2hlY2tib3hFbG1zWzBdLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1swXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICAgIHByb2pDaGVja2JveEVsbXNbMV0uY2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1sxXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgcHJvakNoZWNrYm94RWxtc1syXS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICBwcm9qSW5wdXRCb3hFbG1zWzJdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfSlcclxuICAgICAgcHJvakNoZWNrYm94Qm94RWxtc1sxXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBwcm9qQ2hlY2tib3hFbG1zWzFdLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1sxXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICAgIHByb2pDaGVja2JveEVsbXNbMF0uY2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1swXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgcHJvakNoZWNrYm94RWxtc1syXS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICBwcm9qSW5wdXRCb3hFbG1zWzJdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfSlcclxuICAgICAgcHJvakNoZWNrYm94Qm94RWxtc1syXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBwcm9qQ2hlY2tib3hFbG1zWzJdLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1syXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICAgIHByb2pDaGVja2JveEVsbXNbMF0uY2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgICAgcHJvaklucHV0Qm94RWxtc1swXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgcHJvakNoZWNrYm94RWxtc1sxXS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICBwcm9qSW5wdXRCb3hFbG1zWzFdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfSlcclxuXHJcbiAgICAgIF90aGlzLl9wcm9qQ29udmVydCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX0RpYWxvZ09iamVjdCB8fCB0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGxuZyxcclxuICAgICAgICAgIGxhdCxcclxuICAgICAgICAgIGxuZ0QsXHJcbiAgICAgICAgICBsbmdNLFxyXG4gICAgICAgICAgbG5nUyxcclxuICAgICAgICAgIGxhdEQsXHJcbiAgICAgICAgICBsYXRNLFxyXG4gICAgICAgICAgbGF0UyxcclxuICAgICAgICAgIGxuZ0RNLFxyXG4gICAgICAgICAgbGF0RE0sXHJcbiAgICAgICAgICBsbmdETVMsXHJcbiAgICAgICAgICBsYXRETVMsXHJcbiAgICAgICAgICBsbmdkbkFycjEsXHJcbiAgICAgICAgICBsbmdkbkFycjIsXHJcbiAgICAgICAgICBsYXRkbkFycjEsXHJcbiAgICAgICAgICBsYXRkbkFycjIsXHJcbiAgICAgICAgICBsbmdkbnNBcnIxLFxyXG4gICAgICAgICAgbG5nZG5zQXJyMixcclxuICAgICAgICAgIGxuZ2Ruc0FycjMsXHJcbiAgICAgICAgICBsYXRkbnNBcnIxLFxyXG4gICAgICAgICAgbGF0ZG5zQXJyMixcclxuICAgICAgICAgIGxhdGRuc0FycjNcclxuICAgICAgICBsbmcgPSBfdGhpcy5sbmdcclxuICAgICAgICBsYXQgPSBfdGhpcy5sYXRcclxuICAgICAgICBsbmdETSA9IF90aGlzLl9wcm9qLmRlZ3JlZXNUb0RNUyhsbmcsIHRydWUpXHJcbiAgICAgICAgbGF0RE0gPSBfdGhpcy5fcHJvai5kZWdyZWVzVG9ETVMobGF0LCB0cnVlKVxyXG4gICAgICAgIGxuZ2RuQXJyMSA9IGxuZ0RNLnNwbGl0KCfCsCcpXHJcbiAgICAgICAgbG5nZG5BcnIyID0gbG5nZG5BcnIxWzFdLnNwbGl0KFwiJ1wiKVxyXG4gICAgICAgIGxhdGRuQXJyMSA9IGxhdERNLnNwbGl0KCfCsCcpXHJcbiAgICAgICAgbGF0ZG5BcnIyID0gbGF0ZG5BcnIxWzFdLnNwbGl0KFwiJ1wiKVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nLWRtLWQnKVswXS52YWx1ZSA9IGxuZ2RuQXJyMVswXVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nLWRtLW0nKVswXS52YWx1ZSA9IGxuZ2RuQXJyMlswXVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGF0LWRtLWQnKVswXS52YWx1ZSA9IGxhdGRuQXJyMVswXVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGF0LWRtLW0nKVswXS52YWx1ZSA9IGxhdGRuQXJyMlswXVxyXG5cclxuICAgICAgICBsbmdETVMgPSBfdGhpcy5fcHJvai5kZWdyZWVzVG9ETVMobG5nKVxyXG4gICAgICAgIGxhdERNUyA9IF90aGlzLl9wcm9qLmRlZ3JlZXNUb0RNUyhsYXQpXHJcbiAgICAgICAgbG5nZG5zQXJyMSA9IGxuZ0RNUy5zcGxpdCgnwrAnKVxyXG4gICAgICAgIGxuZ2Ruc0FycjIgPSBsbmdkbnNBcnIxWzFdLnNwbGl0KFwiJ1wiKVxyXG4gICAgICAgIGxuZ2Ruc0FycjMgPSBsbmdkbnNBcnIyWzFdLnNwbGl0KCdcIicpXHJcbiAgICAgICAgbGF0ZG5zQXJyMSA9IGxhdERNUy5zcGxpdCgnwrAnKVxyXG4gICAgICAgIGxhdGRuc0FycjIgPSBsYXRkbnNBcnIxWzFdLnNwbGl0KFwiJ1wiKVxyXG4gICAgICAgIGxhdGRuc0FycjMgPSBsYXRkbnNBcnIyWzFdLnNwbGl0KCdcIicpXHJcbiAgICAgICAgY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsbmctZG1zLWQnKVswXS52YWx1ZSA9IGxuZ2Ruc0FycjFbMF1cclxuICAgICAgICBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xuZy1kbXMtbScpWzBdLnZhbHVlID0gbG5nZG5zQXJyMlswXVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nLWRtcy1zJylbMF0udmFsdWUgPSBsbmdkbnNBcnIzWzBdXHJcbiAgICAgICAgY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQtZG1zLWQnKVswXS52YWx1ZSA9IGxhdGRuc0FycjFbMF1cclxuICAgICAgICBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhdC1kbXMtbScpWzBdLnZhbHVlID0gbGF0ZG5zQXJyMlswXVxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGF0LWRtcy1zJylbMF0udmFsdWUgPSBsYXRkbnNBcnIzWzBdXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIF90aGlzLl9wcm9qQ29udmVydCgpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZiAodGhpcy5fZWxlbWVudF9zdHlsZSkge1xyXG4gICAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSlcclxuICAgICAgLy8gICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZXdQb2ludCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuXHJcbiAgICBsZXQgZm9udCA9IGdldEZvbnRGYW1pbHkodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICdIZWx2ZXRpY2EnXHJcblxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgKVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubmVhcixcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFyLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubmVhcixcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFyLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubmVhcixcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZmFyLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSA9IG5ldyBDZXNpdW0uTmVhckZhclNjYWxhcihcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5mYXIsXHJcbiAgICAgICAgICAwXHJcbiAgICAgICAgKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShcclxuICAgICAgLy8gICBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIC8vICAgICBsZXQgYmlsbGJvYXJkSCA9XHJcbiAgICAgIC8vICAgICAgIF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ICpcclxuICAgICAgLy8gICAgICAgKDMxIC8gX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWdXaWR0aClcclxuICAgICAgLy8gICAgIHJldHVybiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIC8vICAgICAgIDAsXHJcbiAgICAgIC8vICAgICAgIC0oYmlsbGJvYXJkSCAvIDIpICogX3RoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVcclxuICAgICAgLy8gICAgIClcclxuICAgICAgLy8gICB9LFxyXG4gICAgICAvLyAgIGZhbHNlXHJcbiAgICAgIC8vIClcclxuICAgICAgdGhpcy5lbnRpdHkubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zaG93KSB7XHJcbiAgICAgICAgICBsZXQgYmlsbGJvYXJkSCA9IF90aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1nSGVpZ2h0ID9cclxuICAgICAgICAgICAgX3RoaXMuZW50aXR5LmJpbGxib2FyZC5pbWdIZWlnaHQgKlxyXG4gICAgICAgICAgICAoMzEgLyBfdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltZ1dpZHRoKSA6IDBcclxuICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgIC1iaWxsYm9hcmRIICogX3RoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUgLVxyXG4gICAgICAgICAgICBfdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplIC8gMiAtXHJcbiAgICAgICAgICAgIDVcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAtX3RoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSAvIDIgLSA1KVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LmxhYmVsLmZvbnQgPSB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgKyAncHggJyArIGZvbnRcclxuICAgICAgdGhpcy5lbnRpdHkubGFiZWwuZmlsbENvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICAgICAgKVxyXG4gICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2NhbGUgPSB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLnNjYWxlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uZWFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmVhclxyXG4gICAgdGhpcy5mYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5mYXJcclxuICAgIHRoaXMuc2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmJpbGxib2FyZFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5iaWxsYm9hcmQuc2hvd1xyXG4gICAgdGhpcy5iaWxsYm9hcmRJbWFnZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmJpbGxib2FyZC5pbWFnZVxyXG4gICAgdGhpcy5iaWxsYm9hcmRTY2FsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmJpbGxib2FyZC5zY2FsZVxyXG4gICAgdGhpcy5sYWJlbFRleHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC50ZXh0XHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5sbmcgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvbi5sbmcgfHwgMFxyXG4gICAgdGhpcy5sYXQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvbi5sYXQgfHwgMFxyXG4gICAgdGhpcy5hbHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvbi5hbHQgfHwgMFxyXG4gICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgIHRoaXMuYXR0cmlidXRlUnRtcCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUucnRtcC5jb250ZW50XHJcbiAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICAgIHRoaXMuYXR0cmlidXRlR29vZHMgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRcclxuICAgIHRoaXMuYXR0cmlidXRlSVNDID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5pc2MuY29udGVudFxyXG4gICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG4gICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICBhd2FpdCByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3Rlcih0aGlzLnNkay52aWV3ZXIsIHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAoIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5zZGsudmlld2VyLmVudGl0aWVzKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgLy8gaWYgKHRoaXMuZGlmZnVzZSkge1xyXG4gICAgLy8gICB0aGlzLmRpZmZ1c2UucmVtb3ZlKClcclxuICAgIC8vICAgdGhpcy5kaWZmdXNlID0gbnVsbFxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHRoaXMuc2Nhbikge1xyXG4gICAgLy8gICB0aGlzLnNjYW4ucmVtb3ZlKClcclxuICAgIC8vICAgdGhpcy5zY2FuID0gbnVsbFxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgLy8gdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgfVxyXG5cclxuICAvLyDngrnlh7vlvLnmoYblhoXlm77moIfliIfmjaJcclxuICBjbGlja0NoYW5nZUltYWdlKCkge1xyXG4gICAgdGhpcy5EaWFsb2cuY2xpY2tDaGFuZ2VJbWFnZSAmJiB0aGlzLkRpYWxvZy5jbGlja0NoYW5nZUltYWdlKClcclxuICB9XHJcbiAgLy8g54K55Ye75by55qGG5YaF6buY6K6k5Zu+5qCH5YiH5o2iXHJcbiAgY2xpY2tDaGFuZ2VEZWZhdWx0SW1hZ2UoKSB7XHJcbiAgICB0aGlzLkRpYWxvZy5jbGlja0NoYW5nZURlZmF1bHRJbWFnZSAmJiB0aGlzLkRpYWxvZy5jbGlja0NoYW5nZURlZmF1bHRJbWFnZSgpXHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVIZWlnaHQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuc2RrLnZpZXdlci5zY2VuZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBoZWlnaHRcclxuICAgIGxldCBoZWlnaHQyXHJcbiAgICBsZXQgcG9pbnQxID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICAwXHJcbiAgICApXHJcbiAgICBsZXQgcG9pbnQyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICAxMDAwMDAwMDAwMDAwMFxyXG4gICAgKVxyXG5cclxuICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gW3RoaXMuZW50aXR5XVxyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1JhZGFyU2NhblN0ZXJlb3Njb3BpYycgJiYgdmFsdWUuZW50aXR5KSB7XHJcbiAgICAgICAgb2JqZWN0c1RvRXhjbHVkZS5wdXNoKHZhbHVlLmVudGl0eSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHVwZGF0ZWRDYXJ0ZXNpYW5zID0gYXdhaXQgdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHRNb3N0RGV0YWlsZWQoW3BvaW50MV0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICBpZiAodXBkYXRlZENhcnRlc2lhbnMgJiYgdXBkYXRlZENhcnRlc2lhbnNbMF0pIHtcclxuICAgICAgaGVpZ2h0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh1cGRhdGVkQ2FydGVzaWFuc1swXSwgdGhpcy5zZGsudmlld2VyKS5hbHRcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgIHBvaW50MSxcclxuICAgICAgcG9pbnQyLFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgKVxyXG4gICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheShwb2ludDIsIGMpXHJcbiAgICBsZXQgciA9IHt9XHJcbiAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSlcclxuICAgIGZvciAobGV0IGkgPSBwaWNrZWRPYmplY3RzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgciA9IHBpY2tlZE9iamVjdHNbaV1cclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAociAmJiByLnBvc2l0aW9uKSB7XHJcbiAgICAgIGhlaWdodDIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHIucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvbWlzZVxyXG4gICAgdHJ5IHtcclxuICAgICAgcHJvbWlzZSA9IGF3YWl0IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIF1cclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuICAgIGlmICgoaGVpZ2h0MiA9PT0gdm9pZCAwIHx8IGhlaWdodDIgPCBwcm9taXNlWzBdLmhlaWdodCkgJiYgcHJvbWlzZSkge1xyXG4gICAgICBoZWlnaHQyID0gcHJvbWlzZVswXS5oZWlnaHRcclxuICAgIH1cclxuICAgIGlmIChoZWlnaHQgPT09IHZvaWQgMCB8fCBoZWlnaHQgPCBoZWlnaHQyKSB7XHJcbiAgICAgIGhlaWdodCA9IGhlaWdodDJcclxuICAgIH1cclxuICAgIGlmIChoZWlnaHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKE51bWJlcihoZWlnaHQpLnRvRml4ZWQoMikpXHJcbiAgICAgIHRoaXMucmVuZXdQb2ludCgpXHJcbiAgICAgIHRoaXMuY29vcmRpbmF0ZSA9IHRoaXMub3B0aW9ucy5jb29yZGluYXRlXHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmXHJcbiAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uXHJcbiAgICApIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyhcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wXHJcbiAgICAgICAgKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjBcclxuICAgICAgICApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyhcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gW11cclxuICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5zZGsuZW50aXR5TWFwKSB7XHJcbiAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1JhZGFyU2NhblN0ZXJlb3Njb3BpYycgJiYgdmFsdWUuZW50aXR5KSB7XHJcbiAgICAgICAgICAgIG9iamVjdHNUb0V4Y2x1ZGUucHVzaCh2YWx1ZS5lbnRpdHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbiwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gW11cclxuICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgIGlmICh2YWx1ZS50eXBlID09PSAnUmFkYXJTY2FuU3RlcmVvc2NvcGljJyAmJiB2YWx1ZS5lbnRpdHkpIHtcclxuICAgICAgICAgIG9iamVjdHNUb0V4Y2x1ZGUucHVzaCh2YWx1ZS5lbnRpdHkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uLCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbixcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgIGhlaWdodCArIChvcHRpb25zLmhlaWdodCB8fCA1MDApXHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24odikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IHYucG9zaXRpb24ubG5nXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gdi5wb3NpdGlvbi5sYXRcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSB2LnBvc2l0aW9uLmFsdFxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICpcclxuICAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+eCueWHu+m8oOagh+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1vdmVFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNhcnRlc2lhblxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG5cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgIHRoaXMuYWx0ID0gcG9zaXRpb25zLmFsdFxyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogeyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2FydGVzaWFuXHJcbiAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgaWYgKHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaykge1xyXG4gICAgICAgICAgdGhpcy4jX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZShtb3ZlRXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4jX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLmV2ZW50ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmxuZyA9IHRoaXMucHJldmlvdXMucG9zaXRpb24ubG5nXHJcbiAgICAgIHRoaXMubGF0ID0gdGhpcy5wcmV2aW91cy5wb3NpdGlvbi5sYXRcclxuICAgICAgdGhpcy5hbHQgPSB0aGlzLnByZXZpb3VzLnBvc2l0aW9uLmFsdFxyXG4gICAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBzZXRESVYob3B0aW9ucyA9IHsgZG9taWQ6ICcnLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gb3B0aW9ucy54IHx8IG9wdGlvbnMueCA9PT0gMCA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSBvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwID8gb3B0aW9ucy55IDogMTBcclxuICAgIGxldCBzaXRlSW5mb0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuZG9taWQpXHJcbiAgICBsZXQgc2l0ZUluZm9Qb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihwZXJjZW50YWdlID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHxcclxuICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoXHJcbiAgICAgICAgICBzaXRlSW5mb1Bvc2l0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0Q3VzdG9tVmlldyh2YWwpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgPSB2YWxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBjYW1lcmEgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhXHJcbiAgICAgIGxldCBjYW1lcmFQb3NpdGlvbjg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICBjYW1lcmEucG9zaXRpb24sXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBsZXQgcmVsYXRpdmVQb3NpdGlvbiA9IHsgLi4uY2FtZXJhUG9zaXRpb244NCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdSYWRhclNjYW5TdGVyZW9zY29waWMnICYmIHZhbHVlLmVudGl0eSkge1xyXG4gICAgICAgICAgICBvYmplY3RzVG9FeGNsdWRlLnB1c2godmFsdWUuZW50aXR5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgIH1cclxuICAgICAgcmVsYXRpdmVQb3NpdGlvbiA9IHtcclxuICAgICAgICBsbmc6IGNhbWVyYVBvc2l0aW9uODQubG5nIC0gcG9zaXRpb24ubG5nLFxyXG4gICAgICAgIGxhdDogY2FtZXJhUG9zaXRpb244NC5sYXQgLSBwb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgYWx0OiBjYW1lcmFQb3NpdGlvbjg0LmFsdCAtIHBvc2l0aW9uLmFsdFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyA9IHtcclxuICAgICAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhbWVyYS5oZWFkaW5nKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FtZXJhLnBpdGNoKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYW1lcmEucm9sbClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbGF0aXZlUG9zaXRpb246IHJlbGF0aXZlUG9zaXRpb25cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyAmJlxyXG4gICAgICAgICh0aGlzLm9yaWdpbmFsT3B0aW9ucy5jdXN0b21WaWV3ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCaWxsYm9hcmRPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBTUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBakVBO0FBa0VBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBK01BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtEQTtBQXpEQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBVkE7QUFBQTtBQVFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBbUJBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtEQTtBQXpEQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBVkE7QUFBQTtBQVFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBbUJBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBekJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrREE7QUF6REE7QUFBQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVZBO0FBQUE7QUFRQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW1CQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUlBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBTUE7QUFHQTtBQUdBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBZ0RBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQTRCQTtBQUFBO0FBekJBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFTQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQTFpQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2aUJBO0FBRUE7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQU1BO0FBTUE7QUFNQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQXlCQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBS0E7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF2RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBbEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQWtHQTtBQUNBO0FBQUE7QUE3RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBcERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcjRFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQWl2RUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/BillboardObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CircleDiffuse/_element.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/CircleDiffuse/_element.js ***! - \************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u900F\\u660E\\u5EA6\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u6CE2\\u7EB9\\u5C42\\u6570\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u6269\\u6563\\u901F\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u534A\\u5F84\\u5355\\u4F4D\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ2lyY2xlRGlmZnVzZS9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9DaXJjbGVEaWZmdXNlL19lbGVtZW50LmpzPzkwN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pgI/mmI7luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjFcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInRyYW5zcGFyZW5jeVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue7j+W6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTE4MFwiIG1heD1cIjE4MFwiIEBtb2RlbD1cImxuZ1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuazoue6ueWxguaVsDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCIxMFwiIEBtb2RlbD1cImNvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mianmlaPpgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMjBcIiBAbW9kZWw9XCJzcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtcmFkaXVzLXVuaXQtYm94XCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Y2K5b6E5Y2V5L2NPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXJhZGl1cy11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW46IDA7XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY2lyY2xlLWNvbnRlbnQtYm94XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWJzIGlkPVwiY2lyY2xlLWRpZmZ1c2UtZWRpdC10YWJzXCI+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0yKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFicz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUErRUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/CircleDiffuse/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CircleDiffuse/index.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/CircleDiffuse/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/CircleDiffuse/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Materail_CircleRippleMaterialProperty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Materail/CircleRippleMaterialProperty */ \"./src/Obj/Materail/CircleRippleMaterialProperty.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _positionEditingCallback = /*#__PURE__*/new WeakMap();\nvar CircleDiffuse = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 扩散圆\r\n * @param sdk \r\n * @param options {object} 圆属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.lng {number} 经度\r\n * @param options.lat {number} 维度\r\n * @param options.color=#ff0000 {string} 基础颜色\r\n * @param options.speed=5 {number} 速度\r\n * @param options.count=3 {number} 波纹数量\r\n * @param options.circle=[]] {array} 圆属性\r\n * @param options.circle[].radius {number} 半径\r\n * @param options.circle[].color {string} 颜色\r\n * @param options.label {object} 标签对象\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function CircleDiffuse(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CircleDiffuse);\n _this2 = _callSuper(this, CircleDiffuse, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _positionEditingCallback, null);\n _this2.options.lng = options.lng;\n _this2.options.lat = options.lat;\n _this2.options.color = options.color || '#ff0000';\n _this2.options.transparency = options.transparency || options.transparency === 0 ? options.transparency : 1;\n if (_this2.options.transparency > 1) {\n _this2.options.transparency = 1;\n }\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 5;\n _this2.options.count = options.count || options.count === 0 ? options.count : 3;\n if (options.count || options.count === 0) {\n _this2.options.count = options.count;\n if (options.count > 99) {\n _this2.options.count = 99;\n }\n } else {\n _this2.options.count = 3;\n }\n _this2.options.circle = options.circle || [{\n radius: 10,\n color: _this2.options.color\n }];\n for (var i = 0; i < _this2.options.circle.length; i++) {\n if (_this2.options.circle[i].radius > 999999) {\n _this2.options.circle[i].radius = 999999;\n }\n }\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n options.label = options.label || {};\n _this2._elms = {};\n _this2.options.label = {\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n var radius = 0;\n for (var _i = 0; _i < _this2.options.circle.length; _i++) {\n if (Number(_this2.options.circle[_i].radius) > radius) {\n radius = Number(_this2.options.circle[_i].radius);\n }\n }\n _this2._radius = radius;\n _this2.operate = {};\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__[\"default\"]();\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n CircleDiffuse.create(_this2);\n // this.sdk.addIncetance(this.options.id, {\n // type: 'CircleDiffuse',\n // options: options\n // })\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(CircleDiffuse, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(CircleDiffuse, [{\n key: \"type\",\n get: function get() {\n return 'CircleDiffuse';\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n this.entity.show = this.options.show;\n if (this.options.label.show) {\n this.label.show = this.options.show;\n }\n } else {\n this.entity.show = false;\n if (this.options.label.show) {\n this.label.show = false;\n }\n }\n this.isShowView = false;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(this.sdk, this.options.id);\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this3 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_20__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n this.lastOptions = {\n lng: this.options.lng,\n lat: this.options.lat\n };\n this.event.mouse_move(function (movement, cartesian) {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.options.lng = positions.lng;\n _this3.options.lat = positions.lat;\n _this3.lng = positions.lng;\n _this3.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.options.lng = positions.lng;\n _this3.options.lat = positions.lat;\n _this3.lng = positions.lng;\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n if (_classPrivateFieldGet(_positionEditingCallback, _this3)) {\n _classPrivateFieldGet(_positionEditingCallback, _this3).call(_this3);\n _classPrivateFieldSet(_positionEditingCallback, _this3, null);\n }\n _this3.lastOptions = undefined;\n _this3.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this3.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.positionEditing = false;\n } else {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.options.lng = positions.lng;\n _this3.options.lat = positions.lat;\n _this3.lng = positions.lng;\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n _this3.lastOptions = undefined;\n _this3.positionEditing = false;\n }\n });\n });\n } else {\n setTimeout(function () {\n _this3.picking = true;\n }, 500);\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n }\n this.tip && this.tip.destroy();\n if (this.lastOptions) {\n this.options.lng = this.lastOptions.lng;\n this.options.lat = this.lastOptions.lat;\n this.lng = this.lastOptions.lng;\n }\n this.lastOptions = undefined;\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n _classPrivateFieldSet(_positionEditingCallback, this, cd);\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.lng = v;\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.sdk.viewer.entities.values);\n this.getClampToHeight({\n lng: this.options.lng,\n lat: this.options.lat\n }, objectsToExclude).then(function (height) {\n _this4.label.position = [_this4.options.lng, _this4.options.lat, height];\n });\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.lat = v;\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.sdk.viewer.entities.values);\n this.getClampToHeight({\n lng: this.options.lng,\n lat: this.options.lat\n }, objectsToExclude).then(function (height) {\n _this5.label.position = [_this5.options.lng, _this5.options.lat, height];\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"radius\",\n get: function get() {\n return this._radius;\n }\n }, {\n key: \"circle\",\n get: function get() {\n return this.options.circle;\n },\n set: function set(v) {\n this.options.circle = v || [{\n radius: 10,\n color: this.options.color\n }];\n var radius = 0;\n for (var i = 0; i < this.options.circle.length; i++) {\n if (Number(this.options.circle[i].radius) > 999999) {\n this.options.circle[i].radius = 999999;\n }\n if (Number(this.options.circle[i].radius) > radius) {\n radius = Number(this.options.circle[i].radius);\n }\n }\n this._radius = radius;\n CircleDiffuse.create(this);\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n CircleDiffuse.create(this);\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"transparency\",\n get: function get() {\n return this.options.transparency;\n },\n set: function set(v) {\n if (v > 1) {\n this.options.transparency = 1;\n } else {\n this.options.transparency = Number(v);\n }\n CircleDiffuse.create(this);\n this._elms.transparency && this._elms.transparency.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"count\",\n get: function get() {\n return this.options.count;\n },\n set: function set(v) {\n if (v > 99) {\n this.options.count = 99;\n } else {\n this.options.count = v;\n }\n CircleDiffuse.create(this);\n this._elms.count && this._elms.count.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"getSdk\"])().sdkD;\n this.options.label.show = v;\n if (this.show && (!this.showView || this.showView == 3 || !sdkD)) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n height,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context.next = 16;\n break;\n }\n _context.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context.next = 27;\n break;\n case 23:\n _context.next = 25;\n return this.getClampToHeight({\n lng: this.options.lng,\n lat: this.options.lat\n });\n case 25:\n height = _context.sent;\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.radius * 6 + height),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n duration: 1\n });\n case 27:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }() // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(state) {\n var _this10 = this;\n var _this, contentElm, tabsElm, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\");\n case 7:\n this._DialogObject = _context2.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' circle-ciffuse';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeISC = this.options.attribute.ISC.content;\n this._createCircleElm();\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('circle-diffuse-edit-tabs', undefined, this.sdk);\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this10.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this10.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this10.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this10.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this10.attributeLink = _this10.options.attribute.link.content;\n _this10.attributeVr = _this10.options.attribute.vr.content;\n _this10.ISCSelect && _this10.ISCSelect();\n _this10.goodsSelect && _this10.goodsSelect();\n _this10.cameraSelect && _this10.cameraSelect();\n var unitData = [{\n name: '米',\n value: '米'\n }, {\n name: '千米',\n value: '千米'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('input-radius-unit-box')[0], \".input-radius-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = '米';\n unitDataLegpElm.addEventListener('input', function () {\n var circleContentElm = _this10._DialogObject._element.content.getElementsByClassName('circle-content-box')[0];\n var circleElms = circleContentElm.getElementsByClassName('input-number');\n switch (unitDataLegpElm.value) {\n case '米':\n for (var i = 0; i < circleElms.length; i++) {\n var unitElm = circleElms[i].getElementsByClassName('unit')[0];\n var valueElm = circleElms[i].getElementsByTagName('input')[0];\n if (unitElm.innerHTML === 'km') {\n unitElm.innerHTML = 'm';\n valueElm.value = Math.floor(valueElm.value * 1000 * 100) / 100;\n }\n }\n break;\n case '千米':\n for (var _i2 = 0; _i2 < circleElms.length; _i2++) {\n var _unitElm = circleElms[_i2].getElementsByClassName('unit')[0];\n var _valueElm = circleElms[_i2].getElementsByTagName('input')[0];\n if (_unitElm.innerHTML === 'm') {\n _unitElm.innerHTML = 'km';\n _valueElm.value = Math.floor(Number((_valueElm.value / 1000).toFixed(5)) * 100000) / 100000;\n }\n }\n break;\n default:\n break;\n }\n });\n }\n var tagData = _this10.attributeSelect;\n var attributeElm = _this10._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this10._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this10.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this10.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this10.labelFontFamily].value;\n for (var _i4 = 0; _i4 < fontData.length; _i4++) {\n if (fontData[_i4].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i4].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < fontData.length; _i5++) {\n if (fontData[_i5].value === fontDataLegpElm.value) {\n _this10.labelFontFamily = fontData[_i5].key;\n break;\n }\n }\n });\n _this10._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.duration = this.originalOptions.duration;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n var radius = 0;\n for (var i = 0; i < this.options.circle.length; i++) {\n if (Number(this.options.circle[i].radius) > radius) {\n radius = Number(this.options.circle[i].radius);\n }\n }\n this._radius = radius;\n CircleDiffuse.create(this);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.label && this.label.remove();\n this.entity && this.sdk.viewer.entities.remove(this.entity);\n this.entity2 && this.sdk.viewer.entities.remove(this.entity2);\n this.entity = null;\n this.entity2 = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context3.next = 10;\n return this.sdk.removeIncetance(this.options.id);\n case 10:\n _context3.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this11 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this11.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var colors = {};\n for (var i = 0; i < that.options.circle.length; i++) {\n colors[that.options.circle[i].radius / that.radius] = Cesium.Color.fromCssColorString(that.options.circle[i].color || that.options.color);\n }\n var zIndex = that.sdk._entityZIndex;\n if (that.entity) {\n zIndex = that.entity.ellipse.zIndex._value;\n that.sdk.viewer.entities.remove(that.entity);\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n position: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegrees(that.options.lng, that.options.lat);\n }, false),\n name: \"波纹圆\",\n ellipse: {\n semiMinorAxis: new Cesium.CallbackProperty(function () {\n return that.radius;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function () {\n return that.radius;\n }, false),\n material: new _Materail_CircleRippleMaterialProperty__WEBPACK_IMPORTED_MODULE_21__[\"default\"]({\n id: that.options.id,\n colors: colors,\n transparency: that.options.transparency,\n speed: that.options.speed,\n count: that.options.count,\n gradient: 0.2\n }),\n zIndex: zIndex\n }\n });\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(that.sdk, that.options.id);\n } else {\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n position: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegrees(that.options.lng, that.options.lat);\n }, false),\n name: \"波纹圆\",\n ellipse: {\n semiMinorAxis: new Cesium.CallbackProperty(function () {\n return that.radius;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function () {\n return that.radius;\n }, false),\n material: new _Materail_CircleRippleMaterialProperty__WEBPACK_IMPORTED_MODULE_21__[\"default\"]({\n id: that.options.id,\n colors: colors,\n transparency: that.options.transparency,\n speed: that.options.speed,\n count: that.options.count,\n gradient: 0.2\n }),\n zIndex: zIndex\n }\n });\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"setSplitDirection\"])(0, that.options.id);\n }\n that.sdk._entityZIndex++;\n if (that.sdk.viewer._element.className === 'cesium-viewer 2d') {\n that.entity.ellipse.height = 1;\n }\n CircleDiffuse.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(that) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return that.getClampToHeight({\n lng: that.options.lng,\n lat: that.options.lat\n });\n case 2:\n height = _context4.sent;\n that.options.label.position = {\n lng: that.options.lng,\n lat: that.options.lat,\n alt: height\n };\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_16__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: true\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (CircleDiffuse);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ2lyY2xlRGlmZnVzZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9DaXJjbGVEaWZmdXNlL2luZGV4LmpzP2MzMDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IHJpY2hUZXh0IGZyb20gXCIuLi8uLi9FbGVtZW50L3JpY2hUZXh0XCI7XHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgTGFiZWxPYmplY3QgZnJvbSAnLi4vTGFiZWxPYmplY3QnXHJcbmltcG9ydCB7IHN5bmNEYXRhLCBnZXRTZGsgYXMgZ2V0MkRTZGsgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCBDaXJjbGVEaWZmdXNlTWF0ZXJpYWxQcm9wZXJ0eSBmcm9tICcuLi8uLi9NYXRlcmFpbC9DaXJjbGVSaXBwbGVNYXRlcmlhbFByb3BlcnR5J1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBDaXJjbGVEaWZmdXNlIGV4dGVuZHMgQmFzZSB7XHJcbiAgI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAZGVzY3JpcHRpb24g5omp5pWj5ZyGXHJcbiAgICogQHBhcmFtIHNkayBcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlnIblsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDmoIfms6hpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYXQge251bWJlcn0g57u05bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9I2ZmMDAwMCB7c3RyaW5nfSDln7rnoYDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zcGVlZD01IHtudW1iZXJ9IOmAn+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvdW50PTMge251bWJlcn0g5rOi57q55pWw6YePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY2lyY2xlPVtdXSB7YXJyYXl9IOWchuWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNpcmNsZVtdLnJhZGl1cyB7bnVtYmVyfSDljYrlvoRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jaXJjbGVbXS5jb2xvciB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSBvcHRpb25zLmxuZ1xyXG4gICAgdGhpcy5vcHRpb25zLmxhdCA9IG9wdGlvbnMubGF0XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICcjZmYwMDAwJ1xyXG4gICAgdGhpcy5vcHRpb25zLnRyYW5zcGFyZW5jeSA9IChvcHRpb25zLnRyYW5zcGFyZW5jeSB8fCBvcHRpb25zLnRyYW5zcGFyZW5jeSA9PT0gMCkgPyBvcHRpb25zLnRyYW5zcGFyZW5jeSA6IDFcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudHJhbnNwYXJlbmN5ID4gMSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudHJhbnNwYXJlbmN5ID0gMVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gKG9wdGlvbnMuc3BlZWQgfHwgb3B0aW9ucy5zcGVlZCA9PT0gMCkgPyBvcHRpb25zLnNwZWVkIDogNVxyXG4gICAgdGhpcy5vcHRpb25zLmNvdW50ID0gKG9wdGlvbnMuY291bnQgfHwgb3B0aW9ucy5jb3VudCA9PT0gMCkgPyBvcHRpb25zLmNvdW50IDogM1xyXG4gICAgaWYgKG9wdGlvbnMuY291bnQgfHwgb3B0aW9ucy5jb3VudCA9PT0gMCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY291bnQgPSBvcHRpb25zLmNvdW50XHJcbiAgICAgIGlmIChvcHRpb25zLmNvdW50ID4gOTkpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY291bnQgPSA5OVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmNvdW50ID0gM1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5jaXJjbGUgPSBvcHRpb25zLmNpcmNsZSB8fCBbeyByYWRpdXM6IDEwLCBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yIH1dXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5jaXJjbGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jaXJjbGVbaV0ucmFkaXVzID4gOTk5OTk5KSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNpcmNsZVtpXS5yYWRpdXMgPSA5OTk5OTlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHNob3c6IG9wdGlvbnMubGFiZWwuc2hvdyB8fCBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IG9wdGlvbnMubGFiZWwucG9zaXRpb24sXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZm9udFNpemUgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6IChvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiAob3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwKSA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG5cclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYVxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnJcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcblxyXG4gICAgbGV0IHJhZGl1cyA9IDBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmNpcmNsZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoTnVtYmVyKHRoaXMub3B0aW9ucy5jaXJjbGVbaV0ucmFkaXVzKSA+IHJhZGl1cykge1xyXG4gICAgICAgIHJhZGl1cyA9IE51bWJlcih0aGlzLm9wdGlvbnMuY2lyY2xlW2ldLnJhZGl1cylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fcmFkaXVzID0gcmFkaXVzXHJcblxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIENpcmNsZURpZmZ1c2UuY3JlYXRlKHRoaXMpXHJcbiAgICAvLyB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB7XHJcbiAgICAvLyAgIHR5cGU6ICdDaXJjbGVEaWZmdXNlJyxcclxuICAgIC8vICAgb3B0aW9uczogb3B0aW9uc1xyXG4gICAgLy8gfSlcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGUodGhhdCkge1xyXG4gICAgbGV0IGNvbG9ycyA9IHt9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5jaXJjbGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29sb3JzW3RoYXQub3B0aW9ucy5jaXJjbGVbaV0ucmFkaXVzIC8gdGhhdC5yYWRpdXNdID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY2lyY2xlW2ldLmNvbG9yIHx8IHRoYXQub3B0aW9ucy5jb2xvcilcclxuICAgIH1cclxuXHJcbiAgICBsZXQgekluZGV4ID0gdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgaWYgKHRoYXQuZW50aXR5KSB7XHJcbiAgICAgIHpJbmRleCA9IHRoYXQuZW50aXR5LmVsbGlwc2UuekluZGV4Ll92YWx1ZVxyXG4gICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQuZW50aXR5KVxyXG4gICAgICB0aGF0LmVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmxuZywgdGhhdC5vcHRpb25zLmxhdClcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgbmFtZTogXCLms6LnurnlnIZcIixcclxuICAgICAgICBlbGxpcHNlOiB7XHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC5yYWRpdXNcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIHNlbWlNYWpvckF4aXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnJhZGl1c1xyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDaXJjbGVEaWZmdXNlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgIGNvbG9yczogY29sb3JzLFxyXG4gICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHRoYXQub3B0aW9ucy50cmFuc3BhcmVuY3ksXHJcbiAgICAgICAgICAgIHNwZWVkOiB0aGF0Lm9wdGlvbnMuc3BlZWQsXHJcbiAgICAgICAgICAgIGNvdW50OiB0aGF0Lm9wdGlvbnMuY291bnQsXHJcbiAgICAgICAgICAgIGdyYWRpZW50OiAwLjJcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgekluZGV4OiB6SW5kZXhcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGF0LmVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmxuZywgdGhhdC5vcHRpb25zLmxhdClcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgbmFtZTogXCLms6LnurnlnIZcIixcclxuICAgICAgICBlbGxpcHNlOiB7XHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC5yYWRpdXNcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIHNlbWlNYWpvckF4aXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnJhZGl1c1xyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDaXJjbGVEaWZmdXNlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgIGNvbG9yczogY29sb3JzLFxyXG4gICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHRoYXQub3B0aW9ucy50cmFuc3BhcmVuY3ksXHJcbiAgICAgICAgICAgIHNwZWVkOiB0aGF0Lm9wdGlvbnMuc3BlZWQsXHJcbiAgICAgICAgICAgIGNvdW50OiB0aGF0Lm9wdGlvbnMuY291bnQsXHJcbiAgICAgICAgICAgIGdyYWRpZW50OiAwLjJcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgekluZGV4OiB6SW5kZXhcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgICAgfVxyXG4gICAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgICAgaWYgKHRoYXQuc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPT09ICdjZXNpdW0tdmlld2VyIDJkJykge1xyXG4gICAgICAgIHRoYXQuZW50aXR5LmVsbGlwc2UuaGVpZ2h0ID0gMVxyXG4gICAgICB9XHJcbiAgICAgIENpcmNsZURpZmZ1c2UuY3JlYXRlTGFiZWwodGhhdClcclxuICAgICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVMYWJlbCh0aGF0KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiB0aGF0Lm9wdGlvbnMubG5nLCBsYXQ6IHRoYXQub3B0aW9ucy5sYXQgfSlcclxuICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMubG5nLCBsYXQ6IHRoYXQub3B0aW9ucy5sYXQsIGFsdDogaGVpZ2h0IH1cclxuICAgIC8vIOagh+etvlxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCwgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdF0sXHJcbiAgICAgIHRleHQ6IHRoYXQub3B0aW9ucy5uYW1lLFxyXG4gICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSxcclxuICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgcGl4ZWxPZmZzZXQ6IHRoYXQub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICBsaW5lQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGF0Lm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICBuZWFyOiB0aGF0Lm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMubGFiZWwuZmFyLFxyXG4gICAgICBncm91bmQ6IHRydWVcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQ2lyY2xlRGlmZnVzZSdcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICAgIGlmICghdGhpcy5pc1Nob3dWaWV3IHx8ICFzZGtEKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWwuc2hvdykge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbC5zaG93KSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc1Nob3dWaWV3ID0gZmFsc2VcclxuXHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bikge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuLmNoZWNrZWQgPSB2XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75Yqf6IO9XHJcbiAqXHJcbiAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICogQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICpcclxuICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjkpYCkpXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMubGFzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMubG5nLFxyXG4gICAgICAgIGxhdDogdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgdGhpcy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgaWYgKHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaykge1xyXG4gICAgICAgICAgdGhpcy4jX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0T3B0aW9ucyA9IHVuZGVmaW5lZFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmxhc3RPcHRpb25zID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgfSwgNTAwKTtcclxuICAgICAgaWYgKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5lbnRpdHkgJiYgdGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwxKWApXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIGlmICh0aGlzLmxhc3RPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxuZyA9IHRoaXMubGFzdE9wdGlvbnMubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHRoaXMubGFzdE9wdGlvbnMubGF0XHJcbiAgICAgICAgdGhpcy5sbmcgPSB0aGlzLmxhc3RPcHRpb25zLmxuZ1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdE9wdGlvbnMgPSB1bmRlZmluZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZ1xyXG4gIH1cclxuXHJcbiAgb3BlblBvc2l0aW9uRWRpdGluZyhjZCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLiNfcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG5nXHJcbiAgfVxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxuZyA9IHZcclxuICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICBsbmc6IHRoaXMub3B0aW9ucy5sbmcsXHJcbiAgICAgIGxhdDogdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgfSwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIGhlaWdodF1cclxuICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYXRcclxuICB9XHJcbiAgc2V0IGxhdCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGF0ID0gdlxyXG4gICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgIGxuZzogdGhpcy5vcHRpb25zLmxuZyxcclxuICAgICAgbGF0OiB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICB9LCBvYmplY3RzVG9FeGNsdWRlKS50aGVuKGhlaWdodCA9PiB7XHJcbiAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLmxuZywgdGhpcy5vcHRpb25zLmxhdCwgaGVpZ2h0XVxyXG4gICAgfSlcclxuICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcmFkaXVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhZGl1c1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNpcmNsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2lyY2xlXHJcbiAgfVxyXG4gIHNldCBjaXJjbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNpcmNsZSA9IHYgfHwgW3sgcmFkaXVzOiAxMCwgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvciB9XVxyXG4gICAgbGV0IHJhZGl1cyA9IDBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmNpcmNsZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoTnVtYmVyKHRoaXMub3B0aW9ucy5jaXJjbGVbaV0ucmFkaXVzKSA+IDk5OTk5OSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jaXJjbGVbaV0ucmFkaXVzID0gOTk5OTk5XHJcbiAgICAgIH1cclxuICAgICAgaWYgKE51bWJlcih0aGlzLm9wdGlvbnMuY2lyY2xlW2ldLnJhZGl1cykgPiByYWRpdXMpIHtcclxuICAgICAgICByYWRpdXMgPSBOdW1iZXIodGhpcy5vcHRpb25zLmNpcmNsZVtpXS5yYWRpdXMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3JhZGl1cyA9IHJhZGl1c1xyXG4gICAgQ2lyY2xlRGlmZnVzZS5jcmVhdGUodGhpcylcclxuICB9XHJcblxyXG4gIGdldCBzcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3BlZWRcclxuICB9XHJcbiAgc2V0IHNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IHZcclxuICAgIENpcmNsZURpZmZ1c2UuY3JlYXRlKHRoaXMpXHJcbiAgICB0aGlzLl9lbG1zLnNwZWVkICYmIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc3BhcmVuY3koKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRyYW5zcGFyZW5jeVxyXG4gIH1cclxuICBzZXQgdHJhbnNwYXJlbmN5KHYpIHtcclxuICAgIGlmICh2ID4gMSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudHJhbnNwYXJlbmN5ID0gMVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy50cmFuc3BhcmVuY3kgPSBOdW1iZXIodilcclxuICAgIH1cclxuICAgIENpcmNsZURpZmZ1c2UuY3JlYXRlKHRoaXMpXHJcbiAgICB0aGlzLl9lbG1zLnRyYW5zcGFyZW5jeSAmJiB0aGlzLl9lbG1zLnRyYW5zcGFyZW5jeS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb3VudFxyXG4gIH1cclxuICBzZXQgY291bnQodikge1xyXG4gICAgaWYgKHYgPiA5OSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY291bnQgPSA5OVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5jb3VudCA9IHZcclxuICAgIH1cclxuICAgIENpcmNsZURpZmZ1c2UuY3JlYXRlKHRoaXMpXHJcbiAgICB0aGlzLl9lbG1zLmNvdW50ICYmIHRoaXMuX2VsbXMuY291bnQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICBsZXQgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udEZhbWlseSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsRm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5mb250RmFtaWx5ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gbGFiZWxDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZvbnRTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUgJiYgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTmVhciAmJiB0aGlzLl9lbG1zLmxhYmVsTmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5sYWJlbE5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5sYWJlbE5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRmFyICYmIHRoaXMuX2VsbXMubGFiZWxGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGggJiYgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsUGl4ZWxPZmZzZXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBsYWJlbFBpeGVsT2Zmc2V0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQgJiYgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0sIHZdXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kW2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmNlbnRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuY2VudGVyIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc3RhcnQpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnN0YXJ0IH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogdGhpcy5vcHRpb25zLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGF0IH0pXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLnJhZGl1cyAqIDYgKyBoZWlnaHQpLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZHVyYXRpb246IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICfmianmlaPlhYnms6LlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLmxhYmVsLnBvc2l0aW9uWzBdLCBsYXQ6IHRoaXMubGFiZWwucG9zaXRpb25bMV0sIGFsdDogdGhpcy5sYWJlbC5wb3NpdGlvblsyXSB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBjaXJjbGUtY2lmZnVzZSdcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlSVNDID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5JU0MuY29udGVudFxyXG5cclxuICAgICAgdGhpcy5fY3JlYXRlQ2lyY2xlRWxtKClcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdjaXJjbGUtZGlmZnVzZS1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG5cclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsaW5lQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IFtsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gW2xhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgICAgdGhpcy5JU0NTZWxlY3QgJiYgdGhpcy5JU0NTZWxlY3QoKVxyXG4gICAgICAgIHRoaXMuZ29vZHNTZWxlY3QgJiYgdGhpcy5nb29kc1NlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG5cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+exsydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfljYPnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+WNg+exsydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtcmFkaXVzLXVuaXQtYm94JylbMF0sIFwiLmlucHV0LXJhZGl1cy11bml0XCIpXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cy11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS52YWx1ZSA9ICfnsbMnXHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjaXJjbGVDb250ZW50RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2lyY2xlLWNvbnRlbnQtYm94JylbMF1cclxuICAgICAgICAgICAgbGV0IGNpcmNsZUVsbXMgPSBjaXJjbGVDb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LW51bWJlcicpXHJcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAn57GzJzpcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2lyY2xlRWxtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdW5pdEVsbSA9IGNpcmNsZUVsbXNbaV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndW5pdCcpWzBdXHJcbiAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZUVsbSA9IGNpcmNsZUVsbXNbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgICAgICAgICAgaWYgKHVuaXRFbG0uaW5uZXJIVE1MID09PSAna20nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5pdEVsbS5pbm5lckhUTUwgPSAnbSdcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUVsbS52YWx1ZSA9IE1hdGguZmxvb3IodmFsdWVFbG0udmFsdWUgKiAxMDAwICogMTAwKSAvIDEwMFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+WNg+exsyc6XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNpcmNsZUVsbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHVuaXRFbG0gPSBjaXJjbGVFbG1zW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3VuaXQnKVswXVxyXG4gICAgICAgICAgICAgICAgICBsZXQgdmFsdWVFbG0gPSBjaXJjbGVFbG1zW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICAgICAgICAgIGlmICh1bml0RWxtLmlubmVySFRNTCA9PT0gJ20nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5pdEVsbS5pbm5lckhUTUwgPSAna20nXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVFbG0udmFsdWUgPSBNYXRoLmZsb29yKE51bWJlcigodmFsdWVFbG0udmFsdWUgLyAxMDAwKS50b0ZpeGVkKDUpKSAqIDEwMDAwMCkgLyAxMDAwMDBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5sbmcgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sbmdcclxuICAgIHRoaXMubGF0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGF0XHJcbiAgICB0aGlzLmR1cmF0aW9uID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZHVyYXRpb25cclxuICAgIHRoaXMubGFiZWxTaG93ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2hvd1xyXG4gICAgdGhpcy5sYWJlbENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuY29sb3JcclxuICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICAgIHRoaXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICAgIHRoaXMubGFiZWxOZWFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubmVhclxyXG4gICAgdGhpcy5sYWJlbEZhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZhclxyXG4gICAgdGhpcy5sYWJlbExpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gICAgdGhpcy5sYWJlbFBpeGVsT2Zmc2V0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG5cclxuICAgIGxldCByYWRpdXMgPSAwXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5jaXJjbGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKE51bWJlcih0aGlzLm9wdGlvbnMuY2lyY2xlW2ldLnJhZGl1cykgPiByYWRpdXMpIHtcclxuICAgICAgICByYWRpdXMgPSBOdW1iZXIodGhpcy5vcHRpb25zLmNpcmNsZVtpXS5yYWRpdXMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3JhZGl1cyA9IHJhZGl1c1xyXG4gICAgQ2lyY2xlRGlmZnVzZS5jcmVhdGUodGhpcylcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgdGhpcy5lbnRpdHkgJiYgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5MiAmJiB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5MilcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgdGhpcy5lbnRpdHkyID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVEaWZmdXNlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFsREE7QUFtREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQW1HQTtBQUNBO0FBQUE7QUE5RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWxFQTtBQUFBO0FBQUE7QUFBQTtBQW9FQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBeE9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUExNUJBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrMUJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/CircleDiffuse/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CircleObject/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/CircleObject/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ2lyY2xlT2JqZWN0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0NpcmNsZU9iamVjdC9fZWxlbWVudC5qcz8zYWU3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSwgbGFiZWxTdHlsZUVsbTEsIGxhYmVsU3R5bGVFbG0yIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9lbG1faHRtbCdcclxuXHJcbmZ1bmN0aW9uIGh0bWwodGhhdCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA2MCU7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+5oqV5b2x6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbnB1dC10ZXh0XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwiYXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWxlY3QtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPERJVi1jeS10YWJzIGlkPVwiY2lyY2xlLW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1tb2RlLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1tb2RlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+WuWAvOe7n+S4gOWinuWKoDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIGhlaWdodC1jb25maXJtXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBzcGF0aWFsLWluZm8tdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nu4/luqbvvIhY77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue6rOW6pu+8iFnvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6auY5bqm77yIWu+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIumdoumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumdouminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZUNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIiBzdHlsZT1cIndpZHRoOiA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJsaW5lV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTEoKX1cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTIoKX1cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgPC9ESVYtY3ktdGFicz5cclxuICAgIDwvZGl2PlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQWlGQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/CircleObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CircleObject/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/CircleObject/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/CircleObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 圆\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CircleObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 创建圆\r\n * @param options.id {string} 标注id\r\n * @param options.name {string} 名称\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.color=\"#ff000080\" {string} 颜色\r\n * @param options.center {object} 中心位置\r\n * @param options.center.lng {number} 经度\r\n * @param options.center.lat {number} 纬度\r\n * @param options.center.alt {number} 高度\r\n * @param options.radius=10 {number}半径\r\n * @param options.line {object} 边框\r\n * @param options.line.width=3 {number} 边框宽\r\n * @param options.line.color=\"#ff000080\" {string} 边框颜色\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function CircleObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CircleObject);\n _this2 = _callSuper(this, CircleObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"#ff000080\";\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.radius = options.radius || options.radius === 0 ? options.radius : 10;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.center = options.center || {};\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n options.label = options.label || {};\n _this2._elms = {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.nodePoints = [];\n _this2.operate = {};\n _this2.Dialog = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n CircleObject.create(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(CircleObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(CircleObject, [{\n key: \"type\",\n get: function get() {\n return 'CircleObject';\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this3 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this3.options.heightMode = v || v == 0 ? v : 2;\n _this3.positionEditing = false;\n if (!_this3.entity) {\n return;\n }\n var heightModeName = '';\n _this3.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this3.renewPositions();\n _this3.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this3.positions), [_this3.positions[0], _this3.positions[1]]);\n _this3.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this3.positions);\n switch (_this3.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this3.label.ground = ground;\n _this3.entity.polyline.clampToGround = ground;\n _this3.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this3.entity.polygon.perPositionHeight = !ground ? true : false;\n _this3._elms.heightMode && (_this3._elms.heightMode.value = heightModeName);\n _this3._elms.heightModeObject && _this3._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.center.alt;\n },\n set: function set(v) {\n var _this4 = this;\n if (!v || isNaN(Number(v))) {\n this.options.center.alt = 0;\n } else {\n this.options.center.alt = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positions);\n _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positions), [_this4.positions[0], _this4.positions[1]]);\n _this4.entity.polyline.clampToGround = !ground ? false : true;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this4.options.center.alt;\n });\n }\n }, {\n key: \"radius\",\n get: function get() {\n return this.options.radius;\n },\n set: function set(v) {\n this.options.radius = Number(v);\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positions);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions), [this.positions[0], this.positions[1]]);\n }\n }, {\n key: \"center\",\n get: function get() {\n return this.options.center;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.center = v;\n this.height = this.height;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this5.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this5.options.center.lat;\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this7.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this7._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && (!this.showView || this.showView == 3)) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this12 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' circle';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('circle-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n CircleObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this12.attributeLink = _this12.options.attribute.link.content;\n _this12.attributeVr = _this12.options.attribute.vr.content;\n _this12.cameraSelect && _this12.cameraSelect();\n _this12.goodsSelect && _this12.goodsSelect();\n var tagData = _this12.attributeSelect;\n var attributeElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this12.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this12.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this12.options['area-unit'];\n for (var _i2 = 0; _i2 < unitData.length; _i2++) {\n if (unitData[_i2].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i2].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < unitData.length; _i3++) {\n if (unitData[_i3].value === unitDataLegpElm.value) {\n _this12.areaUnit = unitData[_i3].value;\n break;\n }\n }\n });\n }\n var heightBoxElm = _this12._DialogObject._element.content.getElementsByClassName('height-box')[0];\n var heightElm = heightBoxElm.getElementsByClassName('height')[0];\n var heightConfirmElm = _this12._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (_this12.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n var heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n var heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (heightModeObject) {\n heightModeObject.legp_search(heightModeData);\n var heightModeDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n for (var _i4 = 0; _i4 < heightModeData.length; _i4++) {\n if (heightModeData[_i4].key == _this12.heightMode) {\n heightModeDataLegpElm.value = heightModeData[_i4].value;\n heightModeObject.legp_searchActive(heightModeData[_i4].value);\n break;\n }\n }\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < heightModeData.length; _i5++) {\n if (heightModeData[_i5].value === heightModeDataLegpElm.value) {\n _this12.heightMode = heightModeData[_i5].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this12.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n _this12._elms.height = heightElm;\n _this12._elms.heightBox = heightBoxElm;\n _this12._elms.heightMode = heightModeDataLegpElm;\n _this12._elms.heightConfirm = heightConfirmElm;\n _this12._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this12.operate.positionEditing) {\n _this12.positionEditing = false;\n _this12.height = _this12.height + Number(heightElm.value);\n } else {\n CircleObject.closeNodeEdit(_this12);\n _this12.heightMode = _this12.heightMode;\n setTimeout(function () {\n _this12.height = _this12.height + Number(heightElm.value);\n }, 100);\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this12.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this12.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this12._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 34;\n break;\n case 33:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 34:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this13 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.radius = this.originalOptions.radius;\n this.color = this.originalOptions.color;\n this.labelShow = this.originalOptions.label.show;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelColor = this.originalOptions.label.color;\n this.lineWidth = this.originalOptions.line.width;\n this.lineLength = this.originalOptions.line.length;\n this.lineColor = this.originalOptions.line.color;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.heightMode = this.originalOptions.heightMode;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this13.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this13.options.center.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this13.options.center.alt;\n });\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positions,\n positionArray,\n height,\n pos84,\n point1,\n point2,\n direction,\n c,\n ray,\n r,\n pickedObjects,\n i,\n promise,\n a,\n _i8,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 16;\n break;\n }\n _context3.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context3.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 60;\n break;\n case 23:\n positions = this.entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;\n positionArray = [];\n height = 0;\n pos84 = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n point1 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 0);\n point2 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 10000000);\n direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, direction);\n ray = new Cesium.Ray(point1, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = 0;\n case 35:\n if (!(i < pickedObjects.length)) {\n _context3.next = 42;\n break;\n }\n if (!pickedObjects[i].position) {\n _context3.next = 39;\n break;\n }\n r = pickedObjects[i];\n return _context3.abrupt(\"break\", 42);\n case 39:\n i++;\n _context3.next = 35;\n break;\n case 42:\n if (!(r && r.position)) {\n _context3.next = 46;\n break;\n }\n height = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n _context3.next = 55;\n break;\n case 46:\n _context3.prev = 46;\n _context3.next = 49;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat)]);\n case 49:\n promise = _context3.sent;\n height = promise[0].height;\n _context3.next = 55;\n break;\n case 53:\n _context3.prev = 53;\n _context3.t0 = _context3[\"catch\"](46);\n case 55:\n a = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, height);\n positionArray.push(a.x, a.y, a.z);\n for (_i8 = 1; _i8 < positions.length; _i8++) {\n positionArray.push(positions[_i8].x, positions[_i8].y, positions[_i8].z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 60:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this, [[46, 53]]);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this14 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this14.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this15 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n var _this = this;\n this.operate.positionEditing = status;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.previous = {\n positions: _objectSpread({}, this.options.center)\n };\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n this.renewPositions();\n this.event.mouse_move(function (movement, cartesian) {\n var positions = _this15.cartesian3Towgs84(cartesian, _this15.sdk.viewer);\n positions.alt = _this15.options.center.alt;\n // this.renewPositions(positions)\n var height = 0;\n var ground = false;\n switch (_this15.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = _this15.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions.lng, positions.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray = _this15.createCircle(positions, _this15.options.radius);\n var fromDegreesArray2 = [];\n if (!ground) {\n for (var i = 0; i < fromDegreesArray.length; i += 2) {\n fromDegreesArray2.push(fromDegreesArray[i], fromDegreesArray[i + 1], positions.alt + height);\n }\n _this15.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n _this15.label && (_this15.label.position = [positions.lng, positions.lat, positions.alt + height]);\n } else {\n _this15.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.sdk.viewer.entities.values);\n _this15.getClampToHeight({\n lng: positions.lng,\n lat: positions.lat\n }, objectsToExclude).then(function (height) {\n _this15.label && (_this15.label.position = [positions.lng, positions.lat, height]);\n });\n }\n _this15.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var positions = _this15.cartesian3Towgs84(cartesian, _this15.sdk.viewer);\n _this15.options.center.lng = Number(positions.lng.toFixed(8));\n _this15.options.center.lat = Number(positions.lat.toFixed(8));\n _this15.center = _this15.options.center;\n _this15.event.mouse_move(function () {});\n _this15.event.mouse_left(function () {});\n _this15.event.mouse_right(function () {});\n _this15.event.gesture_pinck_start(function () {});\n _this15.previous = {\n positions: _objectSpread({}, _this15.options.center)\n };\n _this15.positionEditing = false;\n if (_this15._positionEditingCallback) {\n _this15._positionEditingCallback();\n _this15._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this15.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this15.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this15.positionEditing = false;\n } else {\n var positions = _this15.cartesian3Towgs84(cartesian, _this15.sdk.viewer);\n _this15.options.center.lng = Number(positions.lng.toFixed(8));\n _this15.options.center.lat = Number(positions.lat.toFixed(8));\n _this15.center = _this15.options.center;\n _this15.event.mouse_move(function () {});\n _this15.event.mouse_left(function () {});\n _this15.event.mouse_right(function () {});\n _this15.event.gesture_pinck_start(function () {});\n _this15.event.gesture_pinck_end(function () {});\n _this15.previous = {\n positions: _objectSpread({}, _this15.options.center)\n };\n _this15.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this17 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n this.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {} else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var objectsToExclude, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.sdk.viewer.entities.values);\n _context4.next = 3;\n return _this16.getClampToHeight(_this16.options.center, objectsToExclude);\n case 3:\n height = _context4.sent;\n entity = _this16.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(_this16.options.center.lng, _this16.options.center.lat, height),\n billboard: {\n image: _this16.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this16.nodePoints.push(entity);\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints() {\n return _ref.apply(this, arguments);\n };\n }();\n var _this16 = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('左键确认,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var newpositions = [];\n var fromDegreesArray = [];\n var endpoint = _objectSpread({}, this.options.center);\n var moveRadius = null;\n var entity;\n fromDegreesArray = this.createCircle(this.options.center, this.options.radius);\n this.entity.polyline.clampToGround = true;\n this.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n this.entity.polygon.perPositionHeight = false;\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray));\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n }, false);\n setTimeout(function () {\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this17.sdk.viewer.entities.values);\n _this17.getClampToHeight({\n lng: _this17.options.center.lng,\n lat: _this17.options.center.lat\n }, objectsToExclude).then(function (height) {\n _this17.label.position = [_this17.options.center.lng, _this17.options.center.lat, height];\n });\n }, 200);\n setTimeout(function () {\n _this17.event.mouse_left(function (movement, cartesian) {\n if (entity) {\n _this17.sdk.viewer.entities.remove(entity);\n entity = null;\n }\n endpoint = _this17.cartesian3Towgs84(cartesian, _this17.viewer);\n var radius = _this17.computeDistance2([_this17.options.center, endpoint]);\n _this17.radius = radius;\n YJ.Measure.SetMeasureStatus(false);\n _this17.event.destroy();\n _this17.tip.destroy();\n _this17.heightMode = _this17.heightMode;\n cb('', _objectSpread({}, _this17.options.center));\n });\n _this17.event.mouse_right(function (movement, cartesian) {\n if (entity) {\n _this17.sdk.viewer.entities.remove(entity);\n entity = null;\n }\n YJ.Measure.SetMeasureStatus(false);\n _this17.event.destroy();\n _this17.tip.destroy();\n _this17.heightMode = _this17.heightMode;\n });\n _this17.event.mouse_move(function (movement, cartesian) {\n entity && (entity.show = true);\n endpoint = _this17.cartesian3Towgs84(cartesian, _this17.viewer);\n moveRadius = _this17.computeDistance2([_this17.options.center, endpoint]);\n fromDegreesArray = _this17.createCircle(_this17.options.center, moveRadius);\n _this17.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n createNodePoints();\n }, 200);\n entity = this.sdk.viewer.entities.add(new Cesium.Entity({\n show: false,\n position: new Cesium.CallbackProperty(function (e) {\n if (endpoint) {\n var c = _this17.computeMidpoint(_this17.options.center, endpoint);\n return Cesium.Cartesian3.fromDegrees(c.lng, c.lat, endpoint.alt);\n } else {\n return Cesium.Cartesian3();\n }\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function (e) {\n if (moveRadius > 1000) {\n return '半径:' + (moveRadius / 1000).toFixed(2) + ' 公里';\n }\n return '半径:' + moveRadius + ' 米';\n }, false),\n font: '20px Microsoft YaHei',\n distanceDisplayCondition: 10000000,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n fillColor: Cesium.Color.fromCssColorString('#f5ce0a'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return Cesium.Cartesian3.fromDegreesArray([_this17.options.center.lng, _this17.options.center.lat, endpoint.lng, endpoint.lat]);\n }, false),\n width: 2,\n material: Cesium.Color.fromCssColorString('#c1c505').withAlpha(0.5),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n this.nodePoints.push(entity);\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this18 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.center.lng, this.options.center.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this18.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(center) {\n var _this19 = this;\n if (this._error) {\n return;\n }\n var ground = false;\n if (!center) {\n center = this.options.center;\n }\n var height = 0;\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(center.lng, center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray = this.createCircle(center, this.options.radius);\n var fromDegreesArray2 = [];\n if (!ground) {\n for (var i = 0; i < fromDegreesArray.length; i += 2) {\n fromDegreesArray2.push(fromDegreesArray[i], fromDegreesArray[i + 1], center.alt + height);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [center.lng, center.lat, center.alt + height]);\n } else {\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n setTimeout(function () {\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this19.sdk.viewer.entities.values);\n _this19.getClampToHeight({\n lng: center.lng,\n lat: center.lat\n }, objectsToExclude).then(function (height) {\n _this19.label && (_this19.label.position = [center.lng, center.lat, height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n this.areaByMeter = Number((Cesium.Math.PI * this.options.radius * this.options.radius).toFixed(2));\n this.areaChangeCallBack && this.areaChangeCallBack();\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var fromDegreesArray = that.createCircle(that.options.center, that.options.radius);\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(that.options.center.lng, that.options.center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n // if (!that.options.label.position) {\n // that.options.label.position = { lng: that.options.center.lng, lat: that.options.center.lat, alt: that.options.center.alt + height }\n // }\n that.options.label.position = {\n lng: that.options.center.lng,\n lat: that.options.center.lat,\n alt: that.options.center.alt + height\n };\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n var fromDegreesArray2 = [];\n var positionsA;\n for (var i = 0; i < fromDegreesArray.length; i += 2) {\n fromDegreesArray2.push(fromDegreesArray[i], fromDegreesArray[i + 1], that.options.center.alt + height);\n }\n // that.options.label.ground = ground\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n positionsA = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: !ground ? new Cesium.PolygonHierarchy(that.positions) : new Cesium.PolygonHierarchy(positionsA),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positions), [that.positions[0], that.positions[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n CircleObject.createLabel(that);\n that.areaByMeter = Number((Cesium.Math.PI * that.options.radius * that.options.radius).toFixed(2));\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n });\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (CircleObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ2lyY2xlT2JqZWN0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0NpcmNsZU9iamVjdC9pbmRleC5qcz82MWU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlnIZcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tIFwiLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnNcIjtcclxuaW1wb3J0IHJpY2hUZXh0IGZyb20gXCIuLi8uLi9FbGVtZW50L3JpY2hUZXh0XCI7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZGF0YWxpc3QnO1xyXG5pbXBvcnQgeyBnZXRGb250TGlzdCwgZ2V0Rm9udEZhbWlseU5hbWUgfSBmcm9tICcuLi8uLi9FbGVtZW50L2ZvbnRTZWxlY3QnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIENpcmNsZU9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5Yib5bu65ZyGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPVwiI2ZmMDAwMDgwXCIge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY2VudGVyIHtvYmplY3R9IOS4reW/g+S9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNlbnRlci5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY2VudGVyLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jZW50ZXIuYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJhZGl1cz0xMCB7bnVtYmVyfeWNiuW+hFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUge29iamVjdH0g6L655qGGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS53aWR0aD0zIHtudW1iZXJ9IOi+ueahhuWuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUuY29sb3I9XCIjZmYwMDAwODBcIiB7c3RyaW5nfSDovrnmoYbpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHRNb2RlPTJ7bnVtYmVyfSDpq5jluqbmqKHlvI/vvIgw77ya5rW35ouU6auY5bqm77ybMe+8muebuOWvueWcsOihqO+8mzLvvJrkvp3pmYTmqKHlvI/vvIlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsge29iamVjdH0g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8IFwiI2ZmMDAwMDgwXCJcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID0gKG9wdGlvbnMuaGVpZ2h0TW9kZSB8fCBvcHRpb25zLmhlaWdodE1vZGUgPT0gMCkgPyBvcHRpb25zLmhlaWdodE1vZGUgOiAyXHJcbiAgICB0aGlzLm9wdGlvbnMucmFkaXVzID0gKG9wdGlvbnMucmFkaXVzIHx8IG9wdGlvbnMucmFkaXVzID09PSAwKSA/IG9wdGlvbnMucmFkaXVzIDogMTBcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5jZW50ZXIgPSBvcHRpb25zLmNlbnRlciB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUgPSBvcHRpb25zLmxpbmUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gKCh0aGlzLm9wdGlvbnMubGluZS53aWR0aCB8fCB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9PT0gMCkgPyB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA6IDMpXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHRoaXMub3B0aW9ucy5saW5lLmNvbG9yIHx8ICdyZ2JhKDI1NSwgMCwgMCwgMSknXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogb3B0aW9ucy5sYWJlbC5wb3NpdGlvbixcclxuICAgICAgZm9udFNpemU6IChvcHRpb25zLmxhYmVsLmZvbnRTaXplIHx8IG9wdGlvbnMubGFiZWwuZm9udFNpemUgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA6IDIwLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBjb2xvcjogb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIGxpbmVXaWR0aDogKG9wdGlvbnMubGFiZWwubGluZVdpZHRoIHx8IG9wdGlvbnMubGFiZWwubGluZVdpZHRoID09PSAwKSA/IG9wdGlvbnMubGFiZWwubGluZVdpZHRoIDogNCxcclxuICAgICAgcGl4ZWxPZmZzZXQ6IChvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IHx8IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPT09IDApID8gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA6IDIwLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddLFxyXG4gICAgICBsaW5lQ29sb3I6IG9wdGlvbnMubGFiZWwubGluZUNvbG9yIHx8ICcjMDBmZmZmODAnLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHx8IGZhbHNlLFxyXG4gICAgICBuZWFyOiAob3B0aW9ucy5sYWJlbC5uZWFyIHx8IG9wdGlvbnMubGFiZWwubmVhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLm5lYXIgOiAyMDAwLFxyXG4gICAgICBmYXI6IChvcHRpb25zLmxhYmVsLmZhciB8fCBvcHRpb25zLmxhYmVsLmZhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZhciA6IDEwMDAwMCxcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcblxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52clxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHNcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgJydcclxuXHJcblxyXG5cclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5EaWFsb2cgPSB7fVxyXG5cclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICBDaXJjbGVPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQ2lyY2xlT2JqZWN0J1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA6IDBcclxuICB9XHJcbiAgc2V0IGhlaWdodE1vZGUodikge1xyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBbXVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID0gKHYgfHwgdiA9PSAwKSA/IHYgOiAyXHJcbiAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHRNb2RlTmFtZSA9ICcnXHJcbiAgICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG4gICAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gW1xyXG4gICAgICAgIC4uLnRoaXMucG9zaXRpb25zLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zWzBdLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zWzFdXHJcbiAgICAgIF1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNcclxuICAgICAgKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5rW35ouU6auY5bqmJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfnm7jlr7nlnLDooagnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5L6d6ZmE5qih5Z6LJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlID0gaGVpZ2h0TW9kZU5hbWUpXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lXHJcbiAgICAgICkpXHJcbiAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIGlmICghdiB8fCBpc05hTihOdW1iZXIodikpKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0ID0gMFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDIpKVxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9ucylcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9ICFncm91bmQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gW1xyXG4gICAgICAgIC4uLnRoaXMucG9zaXRpb25zLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zWzBdLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zWzFdXHJcbiAgICAgIF1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9ICFncm91bmQgPyBmYWxzZSA6IHRydWVcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUNcclxuICAgIH0sIDApO1xyXG5cclxuICAgIHRoaXMuX2VsbXMuYWx0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJhZGl1cygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmFkaXVzXHJcbiAgfVxyXG4gIHNldCByYWRpdXModikge1xyXG4gICAgdGhpcy5vcHRpb25zLnJhZGl1cyA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgLi4udGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgIHRoaXMucG9zaXRpb25zWzBdLFxyXG4gICAgICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNlbnRlcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2VudGVyXHJcbiAgfVxyXG4gIHNldCBjZW50ZXIodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNlbnRlciA9IHZcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHRcclxuICAgIHRoaXMuX2VsbXMubG5nICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubG5nLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZ1xyXG4gICAgICB9KVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIubGF0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlnb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlsaW5lKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5saW5lLmNvbG9yKVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGluZUNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMub3B0aW9ucy5saW5lLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSAncmdiYSgyNTUsMCwwLDAuNSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS53aWR0aFxyXG4gIH1cclxuICBzZXQgbGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gKCh2IHx8IHYgPT09IDApID8gdiA6IDMpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS53aWR0aCA9IHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgICB0aGlzLl9lbG1zLmxpbmVXaWR0aCAmJiB0aGlzLl9lbG1zLmxpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuICBzZXQgbGFiZWxTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMuc2hvdyAmJiAoIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSkge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhhdC5jcmVhdGVDaXJjbGUodGhhdC5vcHRpb25zLmNlbnRlciwgdGhhdC5vcHRpb25zLnJhZGl1cylcclxuICAgIGxldCBncm91bmRcclxuICAgIGxldCBoZWlnaHQgPSAwXHJcblxyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmNlbnRlci5sbmcsIHRoYXQub3B0aW9ucy5jZW50ZXIubGF0KSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIC8vIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgbGF0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxhdCwgYWx0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmFsdCArIGhlaWdodCB9XHJcbiAgICAvLyB9XHJcbiAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogdGhhdC5vcHRpb25zLmNlbnRlci5sbmcsIGxhdDogdGhhdC5vcHRpb25zLmNlbnRlci5sYXQsIGFsdDogdGhhdC5vcHRpb25zLmNlbnRlci5hbHQgKyBoZWlnaHQgfVxyXG5cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoYXQuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21Db2xvck1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmNvbG9yXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgbGV0IHBvc2l0aW9uc0FcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKGZyb21EZWdyZWVzQXJyYXlbaV0sIGZyb21EZWdyZWVzQXJyYXlbaSArIDFdLCB0aGF0Lm9wdGlvbnMuY2VudGVyLmFsdCArIGhlaWdodClcclxuICAgIH1cclxuICAgIC8vIHRoYXQub3B0aW9ucy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpXHJcbiAgICBwb3NpdGlvbnNBID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvbHlnb246IHtcclxuICAgICAgICBoaWVyYXJjaHk6ICFncm91bmQgPyBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpIDogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHBvc2l0aW9uc0EpLFxyXG4gICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIG1hdGVyaWFsOiBtYXRlcmlhbCxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGF0LnBvc2l0aW9ucywgdGhhdC5wb3NpdGlvbnNbMF0sIHRoYXQucG9zaXRpb25zWzFdXSxcclxuICAgICAgICB3aWR0aDogdGhhdC5vcHRpb25zLmxpbmUud2lkdGgsXHJcbiAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmxpbmUuY29sb3IpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6ICFncm91bmQgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgICAgYXJjVHlwZTogIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQyxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgIENpcmNsZU9iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgdGhhdC5hcmVhQnlNZXRlciA9IE51bWJlcigoQ2VzaXVtLk1hdGguUEkgKiB0aGF0Lm9wdGlvbnMucmFkaXVzICogdGhhdC5vcHRpb25zLnJhZGl1cykudG9GaXhlZCgyKSk7XHJcbiAgICB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjayAmJiB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjaygpXHJcblxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG5cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIGNyZWF0ZUxhYmVsKHRoYXQpIHtcclxuICAgIC8vIOagh+etvlxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCwgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdF0sXHJcbiAgICAgIHRleHQ6IHRoYXQub3B0aW9ucy5uYW1lLFxyXG4gICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSxcclxuICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgcGl4ZWxPZmZzZXQ6IHRoYXQub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICBsaW5lQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGF0Lm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICBuZWFyOiB0aGF0Lm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMubGFiZWwuZmFyLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgZnVuY3Rpb24gY3JlYXRlU3BhdGlhbEluZm9UYWJsZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgbGV0IHRhYmxlRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzcGF0aWFsLWluZm8tdGFibGUnKVswXVxyXG4gICAgICAgIGxldCB0Qm9keUVsbSA9IHRhYmxlRWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIHRCb2R5RWxtLmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmdJbnB1dCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXRJbnB1dCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHRJbnB1dCA9IFtdXHJcbiAgICAgICAgbGV0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgICB0ci5jbGFzc05hbWUgPSAndHInXHJcbiAgICAgICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsaWduLWNlbnRlclwiPuWchuW/g+WdkOaghzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxuZyBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsYXQgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgYWx0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgIGBcclxuICAgICAgICBsZXQgbG5nQm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nJylbMF1cclxuICAgICAgICBsZXQgbG5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgbG5nLmlubmVySFRNTCA9IChfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcpLnRvRml4ZWQoOClcclxuICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgIGxldCBsbmdJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICBsbmdJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgbG5nSW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgbG5nSW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgIGxuZ0lucHV0Lm1pbiA9IC0xODBcclxuICAgICAgICBsbmdJbnB1dC5tYXggPSAxODBcclxuICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IChfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgbGV0IGxhdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhdCcpWzBdXHJcbiAgICAgICAgbGV0IGxhdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgIGxhdC5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5jZW50ZXIubGF0KS50b0ZpeGVkKDgpXHJcbiAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdClcclxuICAgICAgICBsZXQgbGF0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgbGF0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgIGxhdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgIGxhdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICBsYXRJbnB1dC5taW4gPSAtOTBcclxuICAgICAgICBsYXRJbnB1dC5tYXggPSA5MFxyXG4gICAgICAgIGxhdElucHV0LnZhbHVlID0gKF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCkudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICBsZXQgYWx0Qm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWx0JylbMF1cclxuICAgICAgICBsZXQgYWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgYWx0LmlubmVySFRNTCA9IChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMilcclxuICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0KVxyXG4gICAgICAgIGxldCBhbHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICBhbHRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgYWx0SW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgYWx0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgIGFsdElucHV0Lm1pbiA9IC05OTk5OTk5XHJcbiAgICAgICAgYWx0SW5wdXQubWF4ID0gOTk5OTk5OTk5XHJcbiAgICAgICAgYWx0SW5wdXQudmFsdWUgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcblxyXG4gICAgICAgIGxuZ0JveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMuY2VudGVyLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmdJbnB1dClcclxuICAgICAgICAgIGxuZ0lucHV0LmZvY3VzKClcclxuICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQ2lyY2xlT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbG5nSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmcpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIF90aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IE51bWJlcihOdW1iZXIobG5nSW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsbmcuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGxhdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXRJbnB1dClcclxuICAgICAgICAgIGxhdElucHV0LmZvY3VzKClcclxuICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQ2lyY2xlT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsYXRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsYXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IE51bWJlcihOdW1iZXIobGF0SW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5jZW50ZXIubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGFsdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGlmIChfdGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWx0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdElucHV0KVxyXG4gICAgICAgICAgYWx0SW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBDaXJjbGVPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICB9KVxyXG4gICAgICAgIGFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gTnVtYmVyKE51bWJlcihhbHRJbnB1dC52YWx1ZSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSBOdW1iZXIoX3RoaXMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZy5wdXNoKGxuZylcclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmdJbnB1dC5wdXNoKGxuZ0lucHV0KVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdC5wdXNoKGxhdClcclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXRJbnB1dC5wdXNoKGxhdElucHV0KVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdC5wdXNoKGFsdClcclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHRJbnB1dC5wdXNoKGFsdElucHV0KVxyXG4gICAgICAgIHRCb2R5RWxtLmFwcGVuZENoaWxkKHRyKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+WchuWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZWNvbmRhcnlFZGl0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIENpcmNsZU9iamVjdC5ub2RlRWRpdCh0aGlzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGNpcmNsZSdcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygnY2lyY2xlLW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbExpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIENpcmNsZU9iamVjdC5FdmVudEJpbmRpbmcodGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgPSBbbGluZWNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsYWJlbGxpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICBsZXQgdGFnRGF0YSA9IHRoaXMuYXR0cmlidXRlU2VsZWN0XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QtYm94JylbMF1cclxuICAgICAgICBpZiAoYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AoYXR0cmlidXRlRWxtLCBcIi5hdHRyaWJ1dGUtc2VsZWN0XCIpXHJcbiAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0YWdEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB1bml0RGF0YSA9IFt7XHJcbiAgICAgICAgICBuYW1lOiAn5bmz5pa557GzJyxcclxuICAgICAgICAgIHZhbHVlOiAn5bmz5pa557GzJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+W5s+aWueWNg+exsycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+W5s+aWueWNg+exsydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfkuqknLFxyXG4gICAgICAgICAgdmFsdWU6ICfkuqknXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5YWs6aG3JyxcclxuICAgICAgICAgIHZhbHVlOiAn5YWs6aG3J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BPYmplY3QgPSBsZWdwKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0LWJveCcpWzBdLCBcIi5pbnB1dC1zZWxlY3QtdW5pdFwiKVxyXG4gICAgICAgIGlmICh1bml0RGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaCh1bml0RGF0YSlcclxuICAgICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnNbJ2FyZWEtdW5pdCddXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHVuaXREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFyZWFVbml0ID0gdW5pdERhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGhlaWdodEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1ib3gnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgICBsZXQgaGVpZ2h0Q29uZmlybUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1jb25maXJtJylbMF1cclxuICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSAxMFxyXG4gICAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICBrZXk6ICcxJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfkvp3pmYTmqKHlnosnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIGtleTogJzInLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgaGVpZ2h0TW9kZU9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuaGVpZ2h0LW1vZGUnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChoZWlnaHRNb2RlT2JqZWN0KSB7XHJcbiAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoKGhlaWdodE1vZGVEYXRhKVxyXG4gICAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtbW9kZScpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9kZURhdGFbaV0ua2V5ID09IHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS52YWx1ZSA9IGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGhlaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggPSBoZWlnaHRCb3hFbG1cclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhTGVncEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ID0gaGVpZ2h0TW9kZU9iamVjdFxyXG5cclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIENpcmNsZU9iamVjdC5jbG9zZU5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvbnREYXRhID0gZ2V0Rm9udExpc3QoKVxyXG4gICAgICAgIGxldCBmb250T2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdmb250LXNlbGVjdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5mb250LXNlbGVjdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGZvbnRPYmplY3QpIHtcclxuICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2goZm9udERhdGEpXHJcbiAgICAgICAgICBsZXQgZm9udERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvbnQtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0udmFsdWUgPSBmb250RGF0YVt0aGlzLmxhYmVsRm9udEZhbWlseV0udmFsdWVcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoZm9udERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gZm9udERhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ID0gW2ZvbnREYXRhTGVncEVsbV1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuICAgICAgfSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLnJhZGl1cyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnJhZGl1c1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMubGluZUxlbmd0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUubGVuZ3RoXHJcbiAgICB0aGlzLmxpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuY29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG5cclxuICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmhlaWdodE1vZGVcclxuXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmNlbnRlci5sbmdcclxuICAgICAgfSlcclxuICAgIHRoaXMuX2VsbXMubGF0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGF0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdFxyXG4gICAgICB9KVxyXG4gICAgdGhpcy5fZWxtcy5hbHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0XHJcbiAgICAgIH0pXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZShDZXNpdW0uSnVsaWFuRGF0ZS5ub3coKSkucG9zaXRpb25zXHJcbiAgICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgICAgbGV0IGhlaWdodCA9IDBcclxuICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgbGV0IHBvaW50MSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCAwKTtcclxuICAgICAgbGV0IHBvaW50MiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCAxMDAwMDAwMCk7XHJcbiAgICAgIGxldCBkaXJlY3Rpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwb2ludDIsIHBvaW50MSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgICBsZXQgYyA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShkaXJlY3Rpb24sIGRpcmVjdGlvbik7XHJcbiAgICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheShwb2ludDEsIGMpO1xyXG4gICAgICBsZXQgciA9IHt9XHJcbiAgICAgIGxldCBwaWNrZWRPYmplY3RzID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmRyaWxsUGlja0Zyb21SYXkocmF5KTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHBpY2tlZE9iamVjdHNbaV0ucG9zaXRpb24pIHtcclxuICAgICAgICAgIHIgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAociAmJiByLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgaGVpZ2h0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChyLnBvc2l0aW9uLCB0aGlzLnNkay52aWV3ZXIpLmFsdFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgcHJvbWlzZSA9IGF3YWl0IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKHRoaXMuc2RrLnZpZXdlci50ZXJyYWluUHJvdmlkZXIsIFtDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0KV0pO1xyXG4gICAgICAgICAgaGVpZ2h0ID0gcHJvbWlzZVswXS5oZWlnaHRcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCBoZWlnaHQpXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ueCwgcG9zaXRpb25zW2ldLnksIHBvc2l0aW9uc1tpXS56KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICByaWNoVGV4dC5vcGVuKHRoaXMub3B0aW9ucy5pZCwgdGhpcy5vcHRpb25zLm5hbWUsIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQpXHJcbiAgICByaWNoVGV4dC5wcmltYXJ5Q2FsbEJhY2sgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gY29udGVudFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75Yqf6IO9XHJcbiAgICpcclxuICAgKiBAbWVtYmVyT2YgU291cmNlXHJcbiAgICogQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICAgKlxyXG4gICAqICovXHJcbiAgc2V0IHBvc2l0aW9uRWRpdGluZyhzdGF0dXMpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nID0gc3RhdHVzXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICBwb3NpdGlvbnM6IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMC45KWApKVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgcG9zaXRpb25zLmFsdCA9IHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0XHJcbiAgICAgICAgLy8gdGhpcy5yZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbnMpXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IDBcclxuICAgICAgICBsZXQgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMocG9zaXRpb25zLmxuZywgcG9zaXRpb25zLmxhdCkpIHx8IDBcclxuICAgICAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMuY3JlYXRlQ2lyY2xlKHBvc2l0aW9ucywgdGhpcy5vcHRpb25zLnJhZGl1cylcclxuICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgICAgIGlmICghZ3JvdW5kKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChmcm9tRGVncmVlc0FycmF5W2ldLCBmcm9tRGVncmVlc0FycmF5W2kgKyAxXSwgcG9zaXRpb25zLmFsdCArIGhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkyXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgcG9zaXRpb25zLmxuZyxcclxuICAgICAgICAgICAgcG9zaXRpb25zLmxhdCxcclxuICAgICAgICAgICAgcG9zaXRpb25zLmFsdCArIGhlaWdodFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgbG5nOiBwb3NpdGlvbnMubG5nLFxyXG4gICAgICAgICAgICBsYXQ6IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnMubG5nLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9ucy5sYXQsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IE51bWJlcigocG9zaXRpb25zLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IE51bWJlcigocG9zaXRpb25zLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLmNlbnRlciA9IHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcblxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IE51bWJlcigocG9zaXRpb25zLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmNlbnRlci5sYXQgPSBOdW1iZXIoKHBvc2l0aW9ucy5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIHRoaXMuY2VudGVyID0gdGhpcy5vcHRpb25zLmNlbnRlclxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zKVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gWy4uLl90aGlzLnBvc2l0aW9ucywgX3RoaXMucG9zaXRpb25zWzBdLCBfdGhpcy5wb3NpdGlvbnNbMV1dXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwuZW50aXR5ICYmIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMSlgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zKVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBbLi4uX3RoaXMucG9zaXRpb25zLCBfdGhpcy5wb3NpdGlvbnNbMF0sIF90aGlzLnBvc2l0aW9uc1sxXV1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcblxyXG4gIGdldCBhcmVhQ2hhbmdlQ2FsbEJhY2soKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJlYUNoYW5nZUNhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBzZXQgYXJlYUNoYW5nZUNhbGxCYWNrIChjZCkge1xyXG4gICAgdGhpcy5fYXJlYUNoYW5nZUNhbGxCYWNrID0gY2RcclxuICB9XHJcblxyXG4gIG5vZGVFZGl0KGNiID0gKCkgPT4geyB9KSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgIGxldCBvcmlnaW5hbFBvc2l0aW9uXHJcbiAgICAgIGxldCBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgIGxldCBlbmRwb2ludCA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIGxldCBtb3ZlUmFkaXVzID0gbnVsbFxyXG4gICAgICBsZXQgZW50aXR5XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLmNyZWF0ZUNpcmNsZSh0aGlzLm9wdGlvbnMuY2VudGVyLCB0aGlzLm9wdGlvbnMucmFkaXVzKVxyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gdHJ1ZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUNcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9IGZhbHNlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSkpXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIHRoaXNcclxuICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyxcclxuICAgICAgICAgICAgbGF0OiB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdFxyXG4gICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgIC50aGVuKGhlaWdodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmNlbnRlci5sbmcsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmNlbnRlci5sYXQsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIH0sIDIwMCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShlbnRpdHkpXHJcbiAgICAgICAgICAgIGVudGl0eSA9IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHJhZGl1cyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbdGhpcy5vcHRpb25zLmNlbnRlciwgZW5kcG9pbnRdKVxyXG4gICAgICAgICAgdGhpcy5yYWRpdXMgPSByYWRpdXNcclxuXHJcbiAgICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy50aXAuZGVzdHJveSgpXHJcblxyXG4gICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcblxyXG4gICAgICAgICAgY2IoJycsIHsuLi50aGlzLm9wdGlvbnMuY2VudGVyfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoZW50aXR5KVxyXG4gICAgICAgICAgICBlbnRpdHkgPSBudWxsXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgZW50aXR5ICYmIChlbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIG1vdmVSYWRpdXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3RoaXMub3B0aW9ucy5jZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLmNyZWF0ZUNpcmNsZSh0aGlzLm9wdGlvbnMuY2VudGVyLCBtb3ZlUmFkaXVzKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY3JlYXRlTm9kZVBvaW50cygpXHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU5vZGVQb2ludHMoKSB7XHJcbiAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4uX3RoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IF90aGlzLmdldENsYW1wVG9IZWlnaHQoX3RoaXMub3B0aW9ucy5jZW50ZXIsIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgICAgbGV0IGVudGl0eSA9IF90aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcsIF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCwgaGVpZ2h0KSxcclxuICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICBpbWFnZTogX3RoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgX3RoaXMubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgfVxyXG5cclxuICAgICAgZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGMgPSB0aGlzLmNvbXB1dGVNaWRwb2ludCh0aGlzLm9wdGlvbnMuY2VudGVyLCBlbmRwb2ludClcclxuICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoYy5sbmcsIGMubGF0LCBlbmRwb2ludC5hbHQpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG1vdmVSYWRpdXMgPiAxMDAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiuW+hO+8micgKyAobW92ZVJhZGl1cyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIOWFrOmHjCdcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuICfljYrlvoTvvJonICsgbW92ZVJhZGl1cyArICcg57GzJ1xyXG4gICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgIGZvbnQ6ICcyMHB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgICAgICAgIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogMTAwMDAwMDAsXHJcbiAgICAgICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmNWNlMGEnKSxcclxuICAgICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFt0aGlzLm9wdGlvbnMuY2VudGVyLmxuZywgdGhpcy5vcHRpb25zLmNlbnRlci5sYXQsIGVuZHBvaW50LmxuZywgZW5kcG9pbnQubGF0XSlcclxuICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgbWF0ZXJpYWw6XHJcbiAgICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2MxYzUwNScpLndpdGhBbHBoYSgwLjUpLFxyXG4gICAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLm5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VOb2RlRWRpdCgpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBFdmVudEJpbmRpbmcodGhhdCwgZWxlbWVudHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IEV2ZW50ID0gW11cclxuICAgICAgbGV0IGlzRXZlbnQgPSBmYWxzZVxyXG4gICAgICBsZXQgcmVtb3ZlTmFtZSA9IFtdXHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG0gb2YgZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIHN3aXRjaCAobS5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdAbW9kZWwnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7IHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC5jaGVja2VkIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YSAhPSAnLicgJiYgKGUuZGF0YSAhPSAnLScgfHwgZS50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5ub2RlTmFtZSA9PSAnSU1HJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uc3JjID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdC5fZWxtc1ttLnZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoYXQuX2VsbXNbbS52YWx1ZV0ucHVzaChlbGVtZW50c1tpXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGF0Ll9lbG1zW20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNoYW5nZSc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlLCB2YWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCByZW1vdmVOYW1lLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgKGUpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgRXZlbnQubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgRXZlbnRbdF0oZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuY2VudGVyLmxuZywgdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpXHJcblxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcigocGVyY2VudGFnZSkgPT4ge1xyXG4gICAgICAvL+i9rOaNouWIsOWxj+W5leWdkOagh1xyXG4gICAgICBpZiAoc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnJykge1xyXG4gICAgICAgIGxldCB3aW5wb3MgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FydGVzaWFuVG9DYW52YXNDb29yZGluYXRlcyhzaXRlSW5mb1Bvc2l0aW9uKTtcclxuICAgICAgICBpZiAod2lucG9zKSB7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5sZWZ0ID0gKHdpbnBvcy54ICsgb3B0aW9ucy54KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLnRvcCA9ICh3aW5wb3MueSArIG9wdGlvbnMueSkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOabtOaWsOWdkOagh1xyXG4gIHJlbmV3UG9zaXRpb25zKGNlbnRlcikge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcblxyXG4gICAgaWYgKCFjZW50ZXIpIHtcclxuICAgICAgY2VudGVyID0gdGhpcy5vcHRpb25zLmNlbnRlclxyXG4gICAgfVxyXG5cclxuICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50ZXIubG5nLCBjZW50ZXIubGF0KSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgdGhpcy5vcHRpb25zLnJhZGl1cylcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICBpZiAoIWdyb3VuZCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKGZyb21EZWdyZWVzQXJyYXlbaV0sIGZyb21EZWdyZWVzQXJyYXlbaSArIDFdLCBjZW50ZXIuYWx0ICsgaGVpZ2h0KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTJcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICBjZW50ZXIubG5nLFxyXG4gICAgICAgIGNlbnRlci5sYXQsXHJcbiAgICAgICAgY2VudGVyLmFsdCArIGhlaWdodFxyXG4gICAgICBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IGNlbnRlci5sbmcsXHJcbiAgICAgICAgICBsYXQ6IGNlbnRlci5sYXRcclxuICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKS50aGVuKGhlaWdodCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICBjZW50ZXIubG5nLFxyXG4gICAgICAgICAgICBjZW50ZXIubGF0LFxyXG4gICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSwgMTAwKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiuoeeul+aKleW9semdouenr1xyXG4gICAgdGhpcy5hcmVhQnlNZXRlciA9IE51bWJlcigoQ2VzaXVtLk1hdGguUEkgKiB0aGlzLm9wdGlvbnMucmFkaXVzICogdGhpcy5vcHRpb25zLnJhZGl1cykudG9GaXhlZCgyKSlcclxuICAgIHRoaXMuYXJlYUNoYW5nZUNhbGxCYWNrICYmIHRoaXMuYXJlYUNoYW5nZUNhbGxCYWNrKClcclxuICAgIHJldHVybiBmcm9tRGVncmVlc0FycmF5XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE0RkE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOElBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFuZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFoR0E7QUFBQTtBQUFBO0FBQUE7QUFrR0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQThKQTtBQUNBO0FBQUE7QUF6SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBeUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUF4RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFrQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBbUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcnZDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2L0JBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckVBO0FBQUE7QUFBQTtBQXFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUZBO0FBQUE7QUFLQTtBQXdGQTtBQUFBO0FBQUE7QUF3RkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/CircleObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CurvelineObject/_element.js": -/*!**************************************************!*\ - !*** ./src/Obj/Base/CurvelineObject/_element.js ***! - \**************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u7EBF\\u6761\\u989C\\u8272\\n
\\n
\\n
\\n \\u7EBF\\u6761\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n \\u7EBF\\u6761\\u5F62\\u5F0F\\n
\\n
\\n
\\n
\\n
\\n \\u7EBF\\u6BB5\\u7F13\\u51B2\\n \\n
\\n
\\n \\u7F13\\u51B2\\u5BBD\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u7F13\\u51B2\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n \\u52A8\\u753B\\u987A\\u5411\\n \\n
\\n
\\n \\u6D41\\u52A8\\u901F\\u7387\\n
\\n \\n \\n
\\n
\\n
\\n \\u95F4\\u8DDD\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9996\\u5C3E\\u76F8\\u8FDE\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ3VydmVsaW5lT2JqZWN0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0N1cnZlbGluZU9iamVjdC9fZWxlbWVudC5qcz85MjU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSwgbGFiZWxTdHlsZUVsbTEsIGxhYmVsU3R5bGVFbG0yIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9lbG1faHRtbCdcclxuXHJcbmZ1bmN0aW9uIGh0bWwodGhhdCkge1xyXG4gIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTYlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VsZWN0LXVuaXRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlucHV0LXRleHRcIiByZWFkb25seT1cInJlYWRvbmx5XCIgdHlwZT1cInRleHRcIiBzdHlsZT1cImZsZXg6IDAgMCAxMzBweDtcIiBAbW9kZWw9XCJsZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWxlY3QtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJwb2x5bGluZS1vYmplY3QtZWRpdC10YWJzXCI+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLnqbrpl7Tkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaGVpZ2h0LW1vZGUtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7pq5jluqbmqKHlvI88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVpZ2h0LW1vZGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5a5YC857uf5LiA5aKe5YqgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBoZWlnaHRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZpcm0gaGVpZ2h0LWNvbmZpcm1cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCI+56Gu6K6kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlIHNwYXRpYWwtaW5mby10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue7j+W6pu+8iFjvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57qs5bqm77yIWe+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7pq5jluqbvvIha77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLnur/mnaHpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nur/mnaHpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzMyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57q/5p2h5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTlcIiBAbW9kZWw9XCJsaW5lV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC1saW5lLXR5cGUtYm94XCIgc3R5bGU9XCJmbGV4OiAwIDAgMzclO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6v+adoeW9ouW8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWxlY3QtbGluZS10eXBlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6v+autee8k+WGsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJleHRlbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzMyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57yT5Yay5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBkYXRhLW1pbj1cIjAuMDFcIiBtYXg9XCI5OTk5OTlcIiBAbW9kZWw9XCJleHRlbmRXaWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDM3JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nvJPlhrLpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXh0ZW5kQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIGlkPVwiZGFzaFRleHR1cmVEb21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWKqOeUu+mhuuWQkTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJyb3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzMyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5rWB5Yqo6YCf546HPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTlcIiBzdGVwPVwiMVwiIEBtb2RlbD1cInNwZWVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDM3JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBsaW5lU3BhY2VcIj7pl7Tot508L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBsaW5lU3BhY2VcIiBzdHlsZT1cIndpZHRoOiA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiNC41XCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cInNwYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6aaW5bC+55u46L+ePC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cIm5vc2VUb1RhaWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzMyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzclO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0yKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIDwhLS0gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi54Gv5YWJ5o6n5Yi2XCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5oyH5LukPC9zcGFuPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwiaW5zdHJ1Y3RcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiBAY2xpY2s9XCJpbnN0cnVjdFN1Ym1pdFwiPuaPkOS6pDwvYnV0dG9uPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLorr7nva7mk43kvZzngrlcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgPGRpdj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orr7nva7mk43kvZzngrk8L3NwYW4+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJvcGVyYXRpbmdQb2ludFwiPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeVwiIEBjbGljaz1cIm9wZXJhdGluZ1BvaW50U3VibWl0XCI+5o+Q5LqkPC9idXR0b24+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+LS0+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQWlLQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/CurvelineObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CurvelineObject/eventBinding.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/CurvelineObject/eventBinding.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ3VydmVsaW5lT2JqZWN0L2V2ZW50QmluZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9DdXJ2ZWxpbmVPYmplY3QvZXZlbnRCaW5kaW5nLmpzP2ZiZjAiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgZXZlbnRCaW5kaW5nIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgfVxyXG4gIHN0YXRpYyBldmVudCA9IHt9XHJcblxyXG4gIGdldEV2ZW50KG5hbWUpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV1cclxuICB9XHJcblxyXG4gIGdldEV2ZW50QWxsKCkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFxyXG4gIH1cclxuXHJcbiAgc2V0RXZlbnQobmFtZSwgZXZlbnQpIHtcclxuICAgIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXSA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBvbih0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWUgXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHsgdGhhdFttLnZhbHVlXSA9IGUudGFyZ2V0LmNoZWNrZWQgfSlcclxuICAgICAgICAgICAgICBlbGVtZW50c1tpXS5jaGVja2VkID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZigoZS50YXJnZXQubWF4KSAmJiB2YWx1ZT5OdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZigoZS50YXJnZXQubWluKSAmJiB2YWx1ZTxOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZigoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlPE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYoZWxlbWVudHNbaV0ubm9kZU5hbWU9PSdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFttLnZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjaGFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgIGlmKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUhPScnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlc1ttXSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIGZvcihsZXQgbj0wO248cmVtb3ZlTmFtZS5sZW5ndGg7bisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgKGUpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgRXZlbnQubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgRXZlbnRbdF0oZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgRXZlbnRCaW5kaW5nID0gbmV3IGV2ZW50QmluZGluZygpO1xyXG5leHBvcnQgZGVmYXVsdCBFdmVudEJpbmRpbmc7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4RUE7QUFBQTtBQUFBO0FBd0VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvRkE7QUFBQTtBQUtBO0FBMkZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/CurvelineObject/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/CurvelineObject/index.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/CurvelineObject/index.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/CurvelineObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/CurvelineObject/eventBinding.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 线\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CurvelineObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 曲线\r\n * @param options {object} 线属性\r\n * @param options.name{string} 名称\r\n * @param options.width=3{number} 线宽\r\n * @param options.color=#ff0000 {string} 颜色\r\n * @param options.type=0 {number} 材质类型 0-实线 1-虚线 2-泛光...\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对高度;2:依附模式)\r\n * @param options.noseToTail=false {boolean} 首尾相连\r\n * @param options.extend=false {boolean} 线缓冲\r\n * @param options.extendWidth=10 {number} 线缓冲宽度\r\n * @param options.extendColor=rgba(255,255,80,0.3) {number} 线缓冲颜色\r\n * @param options.show=true {boolean} 显隐\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {string} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * \r\n * \r\n * @param _Dialog {object} 弹框事件\r\n * @param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function CurvelineObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CurvelineObject);\n _this2 = _callSuper(this, CurvelineObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.width = options.width || options.width === 0 ? options.width : 3;\n _this2.options.color = options.color || '#ff0000';\n _this2.options.type = options.type ? Number(options.type) : 0;\n _this2.options.noseToTail = options.noseToTail || false;\n _this2.options.extend = options.extend || false;\n _this2.options.rotate = options.rotate || options.rotate === false ? options.rotate : true;\n _this2.options.space = options.space || options.space === 0 ? options.space : 1;\n _this2.options.speed = options.speed || 10;\n // this.options.dashSize = options.dashSize || 0.03\n _this2.options.wordsName = options.wordsName || 0;\n _this2.options.extendWidth = options.extendWidth || options.extendWidth === 0 ? options.extendWidth : 10;\n _this2.options.extendColor = options.extendColor || 'rgba(255,255,80,0.3)';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2._elms = [];\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n // this.options.attribute.camera = this.options.attribute.camera || {}\n // this.options.attribute.camera.content =\n // this.options.attribute.camera.content || []\n // this.options.attribute.vr = this.options.attribute.vr || {}\n // this.options.attribute.vr.content =\n // this.options.attribute.vr.content || []\n // this.options.attribute.goods = this.options.attribute.goods || {}\n // this.options.attribute.goods.content =\n // this.options.attribute.goods.content || []\n\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.operate = {};\n _this2.nodePoints = [];\n _this2.unitNum = 0;\n _this2.inputSpeed = options.speed && Math.pow(options.speed, -1) * 100 || 10;\n _this2.Dialog = _Dialog;\n if (!_this2.options.positions || _this2.options.positions.length < 2) {\n _this2._error = '线段最少需要两个坐标!';\n console.warn(_this2._error);\n } else {\n for (var i = 0; i < _this2.options.positions.length; i++) {\n _this2.options.positions[i].lng = Number(Number(_this2.options.positions[i].lng).toFixed(8));\n _this2.options.positions[i].lat = Number(Number(_this2.options.positions[i].lat).toFixed(8));\n _this2.options.positions[i].alt = Number(Number(_this2.options.positions[i].alt).toFixed(2));\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n CurvelineObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(CurvelineObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(CurvelineObject, [{\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || '#ff0000';\n // this.entity.polyline.material = this.getMaterial(v, this.options.type)\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n // this.options.speed = v !== 0 ? Math.pow(v, -1) * 100 : 0\n this.inputSpeed = v !== 0 ? Math.pow(v, -1) * 100 : 0;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n // get dashSize() {\n // return this.options.dashSize\n // }\n\n // set dashSize(v) {\n // this.options.dashSize = v\n // let params = { ...this.options }\n // params.speed = this.inputSpeed\n // // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params)\n // }\n }, {\n key: \"rotate\",\n get: function get() {\n return this.options.rotate;\n },\n set: function set(v) {\n this.options.rotate = v;\n this.closeNodeEdit();\n this._elms.rotate && this._elms.rotate.forEach(function (item) {\n item.checked = v;\n });\n this.options.rotate = v;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n }, {\n key: \"space\",\n get: function get() {\n return this.options.space;\n },\n set: function set(v) {\n this.options.space = v;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n }, {\n key: \"wordsName\",\n get: function get() {\n return this.options.wordsName;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.wordsName = Number(v);\n var _this = this;\n if (!this.noseToTail) {\n this.computeDistance(this.smoothHandle(this.options.positions), 2, v).then(function (res) {\n _this.lengthByMeter = res;\n _this4.lengthChangeCallBack && _this4.lengthChangeCallBack();\n });\n } else {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n }\n }\n\n // get fitLengthUnit() {\n // return this.options['fit-length-unit']\n // }\n // set fitLengthUnit(v) {\n // this.options['fit-length-unit'] = v\n // this._elms.fitLengthUnit &&\n // this._elms.fitLengthUnit.forEach(item => {\n // item.value = v\n // })\n // if (this.options.fitLengthByMeter) {\n // switch (v) {\n // case '米':\n // this.fitLength = this.options.fitLengthByMeter\n // break\n // case '千米':\n // this.fitLength = Number(\n // (this.options.fitLengthByMeter / 1000).toFixed(5)\n // )\n // break\n // default:\n // this.fitLength = this.options.fitLengthByMeter\n // }\n // }\n // }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.width;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.width = v || v == 0 ? v : 3;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = _this5.options.width;\n });\n if (this.entity && this.entity.polyline) {\n this.entity.polyline.width = this.entity.polyline.width + v - this.entity.polyline.oriWidth;\n this.entity.polyline.oriWidth = this.options.width;\n }\n // this.entity &&\n // this.entity.polyline &&\n // (this.entity.polyline.width = this.options.width) && (this.entity.polyline.oriWidth = this.options.width)\n }\n }, {\n key: \"lineType\",\n get: function get() {\n return this.options.type;\n },\n set: function set(v) {\n var _this6 = this;\n var lineTypeData = [{\n name: '实线',\n value: '实线',\n key: 0,\n icon: 'line'\n }, {\n name: '虚线',\n value: '虚线',\n key: 1,\n icon: 'dash-line'\n }, {\n name: '泛光',\n value: '泛光',\n key: 2,\n icon: 'light-line'\n }, {\n name: '尾迹光线',\n value: '尾迹光线',\n key: 3,\n icon: 'tail-line'\n }, {\n name: '多尾迹光线',\n value: '多尾迹光线',\n key: 4,\n icon: 'mult-tail-line'\n }, {\n name: '流动虚线1',\n value: '流动虚线1',\n key: 5,\n icon: 'flow-dash-line1'\n }, {\n name: '流动虚线2',\n value: '流动虚线2',\n key: 6,\n icon: 'flow-dash-line2'\n }, {\n name: '流动箭头1',\n value: '流动箭头1',\n key: 7,\n icon: 'pic-line1'\n }, {\n name: '流动箭头2',\n value: '流动箭头2',\n key: 8,\n icon: 'pic-line2'\n }, {\n name: '流动箭头3',\n value: '流动箭头3',\n key: 9,\n icon: 'pic-line3'\n }, {\n name: '流动箭头4',\n value: '流动箭头4',\n key: 10,\n icon: 'pic-line4'\n }, {\n name: '流动箭头5',\n value: '流动箭头5',\n key: 11,\n icon: 'pic-line5'\n }, {\n name: '流动箭头6',\n value: '流动箭头6',\n key: 12,\n icon: 'pic-line6'\n }];\n this.options.type = Number(v);\n var _loop = function _loop(i) {\n if (lineTypeData[i].key === Number(v)) {\n _this6._elms.lineType && _this6._elms.lineType.forEach(function (item) {\n item.value = lineTypeData[i].value;\n if (2 < item.value && item.value < 13) {\n //贴图参数\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'flex');\n } else {\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'none');\n }\n if (2 < item.value && item.value < 5) {\n //尾迹参数\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'none');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'none');\n } else {\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'flex');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'flex');\n }\n });\n return 1; // break\n }\n };\n for (var i = 0; i < lineTypeData.length; i++) {\n if (_loop(i)) break;\n }\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n this.entity && this.entity.polyline && (this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params));\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.noseToTail;\n },\n set: function set(v) {\n this.options.noseToTail = v;\n this.closeNodeEdit();\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n if (this.entity) {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n }\n // if (v) {\n // if (this.options.fitLengthByMeter > 1000 || this.options.fitLengthByMeter == 1000) {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()\n // } else {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()\n // }\n\n // } else {\n // if (this.options.lengthByMeter > 1000 || this.options.lengthByMeter == 1000) {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()\n // } else {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()\n // }\n // }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this7 = this;\n if (!this._isNodeEdit) {\n this._lastHeightMode = null;\n }\n this.positionEditing = false;\n this.options.heightMode = v || v == 0 ? v : 2;\n var heightModeName = '';\n this.closeNodeEdit();\n var ground = false;\n var disabled = false;\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n this.entity.polyline.clampToGround = ground;\n this.extend = false;\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n this.entity.polyline.clampToGround = ground;\n this.extend = false;\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n this.entity.polyline.clampToGround = ground;\n heightModeName = '依附模型';\n break;\n }\n\n // this.options.lengthByMeter = this.computeDistance2(\n // this.smoothHandle(this.options.positions),\n // 2,\n // ground\n // )\n // this.lengthUnit = this.lengthUnit\n this._elms.heightMode && (this._elms.heightMode.value = heightModeName);\n this._elms.heightModeObject && this._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n this._elms.heightConfirm && this._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n this._elms.heightConfirm && this._elms.heightConfirm.removeAttribute('disabled');\n }\n setTimeout(function () {\n if (ground) {\n _this7.label.ground = ground;\n _this7._elms.heightMode && (_this7._elms.heightMode.value = '依附模型');\n _this7.label.position = [_this7.options.positions[0].lng, _this7.options.positions[0].lat];\n } else {\n _this7.label.ground = ground;\n _this7.label.position = [_this7.options.positions[0].lng, _this7.options.positions[0].lat, fromDegreesArray[2]];\n _this7.options.label.position = {\n lng: _this7.options.positions[0].lng,\n lat: _this7.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n }\n }, 50);\n }\n }, {\n key: \"extend\",\n get: function get() {\n return this.options.extend;\n },\n set: function set(v) {\n this.options.extend = v;\n this.closeNodeEdit();\n if (v) {\n this.heightMode = 2;\n }\n this._elms.extend && this._elms.extend.forEach(function (item) {\n item.checked = v;\n });\n if (this.entity) {\n if (this.options.extend) {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.renewPolygon(fromDegreesArray);\n } else {\n this.entity.polygon = undefined;\n }\n }\n }\n }, {\n key: \"extendWidth\",\n get: function get() {\n return this.options.extendWidth;\n },\n set: function set(v) {\n this.options.extendWidth = v;\n this._elms.extendWidth && this._elms.extendWidth.forEach(function (item) {\n item.value = v;\n });\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.renewPolygon(fromDegreesArray);\n }\n }, {\n key: \"extendColor\",\n get: function get() {\n return this.options.extendColor;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.extendColor = v;\n if (this._elms.extendColor) {\n this._elms.extendColor.forEach(function (item, i) {\n var extendColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.extendColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.extendColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.extendColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.extendColor[i] = extendColorPicker;\n });\n }\n this.entity && this.entity.polygon && (this.entity.polygon.material = Cesium.Color.fromCssColorString(this.options.extendColor));\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n setTimeout(function () {\n _this9.label.position = [_this9.options.positions[0].lng, _this9.options.positions[0].lat, _this9.options.positions[0].alt];\n }, 0);\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this12 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this12.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this12._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this13 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this13.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this13._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n // get attributeCamera() {\n // return this.options.attribute.camera.content\n // }\n\n // set attributeCamera(v) {\n // this.options.attribute.camera.content = v\n // }\n\n // get attributeVr() {\n // return this.options.attribute.vr.content\n // }\n\n // set attributeVr(v) {\n // this.options.attribute.vr.content = v\n // if (\n // !this._DialogObject ||\n // !this._DialogObject._element ||\n // !this._DialogObject._element.content ||\n // this._DialogObject._element.content.getElementsByClassName(\n // 'attribute-content-vr'\n // ).length == 0\n // ) {\n // return\n // }\n // let table = this._DialogObject._element.content\n // .getElementsByClassName('attribute-content-vr')[1]\n // .getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // tableContent.innerHTML = ''\n // if (this.options.attribute.vr.content.length > 0) {\n // table.getElementsByClassName('table-empty')[0].style.display = 'none'\n // } else {\n // table.getElementsByClassName('table-empty')[0].style.display = 'flex'\n // }\n // for (let i = 0; i < this.options.attribute.vr.content.length; i++) {\n // let tr =\n // `\n //
\n //
` +\n // this.options.attribute.vr.content[i].name +\n // `
\n //
` +\n // this.options.attribute.vr.content[i].url +\n // `
\n //
\n // \n // \n //
\n //
`\n // let trElm = document.createRange().createContextualFragment(tr)\n // tableContent.appendChild(trElm)\n // }\n // let item = tableContent.getElementsByClassName('tr')\n // let fun = {\n // vrEdit: async index => {\n // this.attributeVr = await this.options.attribute.vr.content\n // let table = this._DialogObject._element.content\n // .getElementsByClassName('attribute-content-vr')[1]\n // .getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // let item = tableContent.getElementsByClassName('tr')\n // for (let i = 0; i < item.length; i++) {\n // if (index === i) {\n // let height = item[i].offsetHeight\n // let html = `\n //
\n // \n //
\n //
\n // \n //
\n //
\n // \n // \n //
`\n // item[i].innerHTML = html\n // let textareaElm = item[i].getElementsByClassName('link-edit')[0]\n // textareaElm.style.height = height - 10 + 'px'\n // let td = item[i].getElementsByClassName('td')\n // td[0].getElementsByClassName(\n // 'input'\n // )[0].value = this.options.attribute.vr.content[index].name\n // td[1].getElementsByClassName(\n // 'input'\n // )[0].value = this.options.attribute.vr.content[index].url\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // if (!btn[n] || !btn[n].attributes) {\n // continue\n // }\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', e => {\n // if (typeof fun[m.value] === 'function') {\n // fun[m.value](\n // {\n // name: td[0].getElementsByClassName('input')[0].value,\n // url: td[1].getElementsByClassName('input')[0].value\n // },\n // i\n // )\n // }\n // })\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // break\n // }\n // }\n // },\n // vrDelete: i => {\n // this.options.attribute.vr.content.splice(i, 1)\n // this.attributeVr = this.options.attribute.vr.content\n // },\n\n // confirmEdit: (value, i) => {\n // let name = value.name && value.name.replace(/\\s/g, '')\n // let url = value.url && value.url.replace(/\\s/g, '')\n // if (name && url) {\n // this.options.attribute.vr.content[i] = value\n // } else {\n // window.ELEMENT &&\n // window.ELEMENT.Message({\n // message: '名称或链接不能为空!',\n // type: 'warning',\n // duration: 1500\n // })\n // }\n // this.attributeVr = this.options.attribute.vr.content\n // },\n // cancelEdit: () => {\n // this.attributeVr = this.options.attribute.vr.content\n // },\n // fileSelect: (value, i) => {\n // let fileElm = item[i].getElementsByClassName('file-select')[0]\n // fileElm.click()\n // fileElm.removeEventListener('change', fileSelect)\n // fileElm.addEventListener('change', fileSelect)\n // }\n // }\n // let fileSelect = event => {\n // if (event.target.value) {\n // let td = item[\n // event.target.getAttribute('index')\n // ].getElementsByClassName('td')\n // td[1].getElementsByClassName('input')[0].value = event.target.value\n // event.target.value = null\n // }\n // }\n // for (let i = 0; i < item.length; i++) {\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // if (!btn[n] || !btn[n].attributes) {\n // continue\n // }\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', e => {\n // if (typeof fun[m.value] === 'function') {\n // fun[m.value](i)\n // }\n // })\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // }\n // }\n\n // get attributeGoods() {\n // return this.options.attribute.goods.content\n // }\n\n // set attributeGoods(v) {\n // this.options.attribute.goods.content = v\n // }\n }, {\n key: \"judgeLine\",\n value: function judgeLine(entity, newParam) {\n if (!entity.polyline.oriRepeat) {\n var param = {\n color: newParam.color,\n image: this.getSourceRootPath() + \"/img/arrow/1.png\",\n space: newParam.space,\n speed: newParam.speed\n };\n param.speed = newParam.rotate ? param.speed : 0 - param.speed;\n var canvasEle = document.createElement('canvas');\n var ctx = canvasEle.getContext('2d');\n var myImg = new Image();\n // myImg.src = that.getSourceRootPath() + '/img/arrow/1.png'\n myImg.src = param.image;\n var that = this;\n myImg.onload = function () {\n canvasEle.width = myImg.width * (param.space + 1);\n canvasEle.height = myImg.height;\n var oriRepeat = that.getSceenLine(entity, param, canvasEle);\n oriRepeat && (entity.polyline.oriRepeat = oriRepeat);\n var positionProperty = entity.polyline.positions;\n var positions = positionProperty.getValue(that.sdk.viewer.clock.currentTime);\n if (!Cesium.defined(positions)) {\n return new Cesium.Cartesian2(1.0, 1.0);\n // return 1.0;\n }\n var distance = 0;\n for (var i = 0; i < positions.length - 1; ++i) {\n distance += Cesium.Cartesian3.distance(positions[i], positions[i + 1]);\n }\n var repeatX = distance / entity.polyline.width.getValue();\n // 根据地图缩放程度调整repeatX\n var cameraHeight = that.sdk.viewer.camera.positionCartographic.height;\n var boundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(-1000000, 0, 0),\n // 中心点坐标\n 500000 // 半径(距离)\n );\n\n // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)\n var drawingBufferWidth = that.sdk.viewer.canvas.clientWidth;\n var drawingBufferHeight = that.sdk.viewer.canvas.clientHeight;\n\n // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小\n var groundResolution = that.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight);\n repeatX *= groundResolution / cameraHeight / (param.space * (canvasEle.width / canvasEle.height * 5) + 1);\n // if (entity.polyline.material.oriRepeat) {\n\n if (that.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) {\n var speed = repeatX / entity.polyline.oriRepeat;\n entity.polyline.oriSpeed = speed;\n entity.polyline.oriRepeatX = repeatX;\n } else {\n var sdk3d = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"get3DView\"])();\n var sdk3dEntity = sdk3d.viewer.entities.getById(that.options.id);\n entity.polyline.oriSpeed = sdk3dEntity.polyline.oriSpeed;\n entity.polyline.oriRepeatX = sdk3dEntity.polyline.oriRepeatX;\n }\n };\n }\n }\n /**获取当前满屏横线速度 */\n }, {\n key: \"getSceenLine\",\n value: function getSceenLine(entity, options, canvasEle) {\n var point1 = new Cesium.Cartesian2(0, this.sdk.viewer.canvas.clientHeight);\n var point2 = new Cesium.Cartesian2(this.sdk.viewer.canvas.clientWidth / 2, this.sdk.viewer.canvas.clientHeight);\n // var cartesian1 = this.sdk.viewer.scene.pickPosition(point1)\n // var cartesian2 = this.sdk.viewer.scene.pickPosition(point2)\n\n var ray = this.sdk.viewer.camera.getPickRay(point1);\n var cartesian1 = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n var ray2 = this.sdk.viewer.camera.getPickRay(point2);\n var cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene);\n // if (!cartesian1 || !cartesian2) {\n // let ray = this.sdk.viewer.camera.getPickRay(point1);\n // cartesian1 = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n\n // let ray2 = this.sdk.viewer.camera.getPickRay(point2);\n // cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene);\n // }\n if (cartesian1 && cartesian2) {\n var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2);\n var repeatX = distance / entity.polyline.width.getValue();\n // 根据地图缩放程度调整repeatX\n var cameraHeight = this.sdk.viewer.camera.positionCartographic.height;\n var boundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(-1000000, 0, 0),\n // 中心点坐标\n 500000 // 半径(距离)\n );\n\n // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)\n var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth;\n var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight;\n\n // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小\n var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight);\n // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1);\n if (groundResolution > 700) {\n repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1);\n } else {\n repeatX = undefined;\n }\n if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) {\n return repeatX;\n } else {\n var sdk3d = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"get3DView\"])();\n var sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id);\n return sdk3dEntity.polyline.oriRepeatX;\n }\n }\n }\n /**\r\n * 编辑框\r\n * @param {boolean} state true打开,false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this14 = this;\n var _this, tabClick, contentElm, tabsElm, colorPicker, labelColorPicker, extendColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' polyline';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n // this.attributeCamera = this.options.attribute.camera.content\n // this.attributeGoods = this.options.attribute.goods.content\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_12__[\"default\"]('polyline-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n extendColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('extendColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.extendColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.extendColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.extendColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelLineColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorStart')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this14.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this14.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorEnd')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this14.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this14.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName('*');\n _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.extendColor = [extendColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this14.attributeLink = _this14.options.attribute.link.content;\n // this.attributeVr = this.options.attribute.vr.content\n // this.cameraSelect && this.cameraSelect()\n // this.goodsSelect && this.goodsSelect()\n var tagData = _this14.attributeSelect;\n var attributeElm = _this14._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(attributeElm, '.attribute-select');\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this14._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this14.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this14.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var nameData = [{\n name: '空间长度',\n value: '空间长度'\n }, {\n name: '投影长度',\n value: '投影长度'\n }, {\n name: '地表长度',\n value: '地表长度'\n }];\n var nameDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], '.input-select-unit');\n if (nameDataLegpObject) {\n nameDataLegpObject.legp_search(nameData);\n var nameDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n _this14._elms.wordsName = [nameDataLegpElm];\n nameDataLegpElm.value = _this14.options.wordsName;\n for (var _i2 = 0; _i2 < nameData.length; _i2++) {\n if (nameData[_i2].value === nameDataLegpElm.value) {\n nameDataLegpObject.legp_searchActive(nameData[_i2].value);\n break;\n }\n }\n nameDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < nameData.length; _i3++) {\n if (nameData[_i3].value === nameDataLegpElm.value) {\n _this14.wordsName = nameData[_i3].value;\n break;\n }\n }\n });\n }\n\n // 原始长度单位\n var unitData = [{\n name: '米',\n value: '米'\n }, {\n name: '千米',\n value: '千米'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], '.input-select-unit', 1);\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-unit')[1].getElementsByTagName('input')[0];\n _this14._elms.lengthUnit = [unitDataLegpElm];\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this14.lengthUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n\n // 拟合长度单位\n // let fitUnitData = [\n // {\n // name: '米',\n // value: '米'\n // },\n // {\n // name: '千米',\n // value: '千米'\n // }\n // ]\n\n // let fitUnitDataLegpObject = legp(\n // this._DialogObject._element.content.getElementsByClassName(\n // 'input-select-fit-unit-box'\n // )[0],\n // '.input-select-fit-unit'\n // )\n // if (fitUnitDataLegpObject) {\n // fitUnitDataLegpObject.legp_search(fitUnitData)\n // let fitUnitDataLegpElm = this._DialogObject._element.content\n // .getElementsByClassName('input-select-fit-unit')[0]\n // .getElementsByTagName('input')[0]\n // this._elms.fitLengthUnit = [fitUnitDataLegpElm]\n // fitUnitDataLegpElm.value = this.options['fit-length-unit']\n // for (let i = 0; i < fitUnitData.length; i++) {\n // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {\n // fitUnitDataLegpObject.legp_searchActive(fitUnitData[i].value)\n // break\n // }\n // }\n // fitUnitDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < fitUnitData.length; i++) {\n // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {\n // this.fitLengthUnit = fitUnitData[i].value\n // break\n // }\n // }\n // })\n // }\n\n var lineTypeData = [{\n name: '实线',\n value: '实线',\n key: 0,\n icon: 'line'\n }, {\n name: '虚线',\n value: '虚线',\n key: 1,\n icon: 'dash-line'\n }, {\n name: '泛光',\n value: '泛光',\n key: 2,\n icon: 'light-line'\n }, {\n name: '尾迹光线',\n value: '尾迹光线',\n key: 3,\n icon: 'tail-line'\n }, {\n name: '多尾迹光线',\n value: '多尾迹光线',\n key: 4,\n icon: 'mult-tail-line'\n }, {\n name: '流动虚线1',\n value: '流动虚线1',\n key: 5,\n icon: 'flow-dash-line1'\n }, {\n name: '流动虚线2',\n value: '流动虚线2',\n key: 6,\n icon: 'flow-dash-line2'\n }, {\n name: '流动箭头1',\n value: '流动箭头1',\n key: 7,\n icon: 'pic-line1'\n }, {\n name: '流动箭头2',\n value: '流动箭头2',\n key: 8,\n icon: 'pic-line2'\n }, {\n name: '流动箭头3',\n value: '流动箭头3',\n key: 9,\n icon: 'pic-line3'\n }, {\n name: '流动箭头4',\n value: '流动箭头4',\n key: 10,\n icon: 'pic-line4'\n }, {\n name: '流动箭头5',\n value: '流动箭头5',\n key: 11,\n icon: 'pic-line5'\n }, {\n name: '流动箭头6',\n value: '流动箭头6',\n key: 12,\n icon: 'pic-line6'\n }];\n var lineTypeDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-line-type-box')[0], '.input-select-line-type');\n if (lineTypeDataLegpObject) {\n lineTypeDataLegpObject.legp_search(lineTypeData);\n var iActiveElm2 = document.createElement('i');\n iActiveElm2.className = 'icon icon-active';\n _this14._DialogObject._element.content.getElementsByClassName('input-select-line-type')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm2);\n var lineTypeDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-line-type')[0].getElementsByTagName('input')[0];\n _this14._elms.lineType = [lineTypeDataLegpElm];\n for (var _i6 = 0; _i6 < lineTypeData.length; _i6++) {\n if (lineTypeData[_i6].key === _this14.options.type) {\n lineTypeDataLegpObject.legp_searchActive(lineTypeData[_i6].value);\n lineTypeDataLegpElm.value = lineTypeData[_i6].value;\n iActiveElm2.className = \"icon icon-active \".concat(lineTypeData[_i6].icon);\n break;\n }\n }\n lineTypeDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < lineTypeData.length; _i7++) {\n if (lineTypeData[_i7].value === lineTypeDataLegpElm.value) {\n _this14.lineType = lineTypeData[_i7].key;\n iActiveElm2.className = \"icon icon-active \".concat(lineTypeData[_i7].icon);\n\n //控制参数显隐\n if (2 < _this14.lineType && _this14.lineType < 13) {\n //贴图参数\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'flex');\n } else {\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'none');\n }\n if (2 < _this14.lineType && _this14.lineType < 5) {\n //尾迹参数\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'none');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'none');\n } else {\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'flex');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'flex');\n }\n break;\n }\n }\n });\n }\n var heightBoxElm = _this14._DialogObject._element.content.getElementsByClassName('height-box')[0];\n var heightElm = heightBoxElm.getElementsByClassName('height')[0];\n var heightConfirmElm = _this14._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (_this14.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n var heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n var heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (heightModeObject) {\n heightModeObject.legp_search(heightModeData);\n var heightModeDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n for (var _i8 = 0; _i8 < heightModeData.length; _i8++) {\n if (heightModeData[_i8].key == _this14.heightMode) {\n heightModeDataLegpElm.value = heightModeData[_i8].value;\n heightModeObject.legp_searchActive(heightModeData[_i8].value);\n break;\n }\n }\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < heightModeData.length; _i9++) {\n if (heightModeData[_i9].value === heightModeDataLegpElm.value) {\n _this14.heightMode = heightModeData[_i9].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this14.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n _this14._elms.height = heightElm;\n _this14._elms.heightBox = heightBoxElm;\n _this14._elms.heightMode = heightModeDataLegpElm;\n _this14._elms.heightConfirm = heightConfirmElm;\n _this14._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n _this14.positionEditing = false;\n for (var _i10 = 0; _i10 < _this14.options.positions.length; _i10++) {\n _this14.options.positions[_i10].alt = Number((_this14.options.positions[_i10].alt + Number(heightElm.value)).toFixed(2));\n _this14._elms.alt[_i10].innerHTML = _this14.options.positions[_i10].alt;\n }\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n }\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n _this14._elms.lng = [];\n _this14._elms.lngInput = [];\n _this14._elms.lat = [];\n _this14._elms.latInput = [];\n _this14._elms.alt = [];\n _this14._elms.altInput = [];\n var _loop2 = function _loop2(_i11) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
\".concat(_i11 + 1, \"
\\n
\\n
\\n
\\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this14.options.positions[_i11].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this14.options.positions[_i11].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this14.options.positions[_i11].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this14.options.positions[_i11].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this14.options.positions[_i11].alt.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this14.options.positions[_i11].alt.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this14.options.positions[_i11].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this14.options.positions[_i11].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this14.options.positions[_i11].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this14.options.positions[_i11].lng.toFixed(8);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this14.options.positions[_i11].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this14.options.positions[_i11].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this14.options.positions[_i11].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this14.options.positions[_i11].lat.toFixed(8);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n altBox.addEventListener('dblclick', function () {\n if (_this14.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this14.options.positions[_i11].alt.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this14.options.positions[_i11].alt.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this14.options.positions[_i11].alt = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = _this14.options.positions[_i11].alt.toFixed(2);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n _this14._elms.lng.push(lng);\n _this14._elms.lngInput.push(lngInput);\n _this14._elms.lat.push(lat);\n _this14._elms.latInput.push(latInput);\n _this14._elms.alt.push(alt);\n _this14._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var _i11 = 0; _i11 < _this14.options.positions.length; _i11++) {\n _loop2(_i11);\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this14.labelFontFamily].value;\n for (var _i12 = 0; _i12 < fontData.length; _i12++) {\n if (fontData[_i12].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i12].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i13 = 0; _i13 < fontData.length; _i13++) {\n if (fontData[_i13].value === fontDataLegpElm.value) {\n _this14.labelFontFamily = fontData[_i13].key;\n break;\n }\n }\n });\n _this14._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 34;\n break;\n case 33:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 34:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }() // 平滑处理\n )\n }, {\n key: \"smoothHandle\",\n value: function smoothHandle(positions) {\n var newPositions = [];\n var time = [];\n var fromDegreesArrayHeights = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n time.push(i / (positions.length - 1));\n }\n var spline = new Cesium.CatmullRomSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n var length = positions.length * 20;\n for (var _i14 = 0; _i14 <= length; _i14++) {\n var cartesian3 = spline.evaluate(_i14 / length);\n newPositions.push(this.cartesian3Towgs84(cartesian3, this.sdk.viewer));\n }\n return newPositions;\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(positionsArray, cd) {\n var _this16 = this;\n if (this._error) {\n return;\n }\n var positions = JSON.parse(JSON.stringify(positionsArray));\n var ground;\n var heightMode = this.heightMode;\n if (this._isNodeEdit) {\n heightMode = 0;\n }\n switch (heightMode) {\n case 0:\n case '0':\n ground = false;\n break;\n case 1:\n case '1':\n for (var i = 0; i < positions.length; i++) {\n var height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions[i].lng, positions[i].lat));\n positions[i].alt = height ? Number((positions[i].alt + Number(height)).toFixed(2)) : Number(positions[i].alt.toFixed(2));\n }\n ground = false;\n break;\n case 2:\n case '2':\n ground = true;\n break;\n }\n var newPositions;\n var fromDegreesArray = [];\n if (this.options.noseToTail && this.options.noseToTail !== 'false') {\n newPositions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(positions), [positions[0]]);\n } else {\n newPositions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(positions);\n }\n newPositions = this.smoothHandle(newPositions);\n for (var _i15 = 0; _i15 < newPositions.length; _i15++) {\n fromDegreesArray.push(newPositions[_i15].lng, newPositions[_i15].lat, newPositions[_i15].alt);\n }\n\n // 计算长度\n // let array = []\n // for (let i = 0; i < fromDegreesArray.length; i += 3) {\n // array.push({\n // lng: fromDegreesArray[i],\n // lat: fromDegreesArray[i + 1],\n // alt: fromDegreesArray[i + 2]\n // })\n // }\n // this.options.fitLengthByMeter = this.computeDistance2(\n // array,\n // 2,\n // ground\n // )\n // this.fitLengthUnit = this.options['fit-length-unit']\n // this.options.lengthByMeter = this.computeDistance2(this.smoothHandle(positions), 2, ground)\n // this.lengthUnit = this.options['length-unit']\n\n if (this.options.noseToTail && this.options.noseToTail !== 'false' || this.options.smooth && this.options.smooth !== 'false') {\n var array = [];\n for (var _i16 = 0; _i16 < fromDegreesArray.length; _i16 += 3) {\n array.push({\n lng: fromDegreesArray[_i16],\n lat: fromDegreesArray[_i16 + 1],\n alt: fromDegreesArray[_i16 + 2]\n });\n }\n // this.options.fitLengthByMeter = this.computeDistance(\n // array,\n // 2,\n // ground\n // )\n var _this15 = this;\n this.computeDistance(array, 2, this.options.wordsName).then(function (res) {\n _this15.lengthByMeter = res;\n _this16.lengthChangeCallBack && _this16.lengthChangeCallBack();\n cd && cd();\n });\n } else {\n var _this17 = this;\n this.computeDistance(_this17.smoothHandle(positions), 2, this.options.wordsName).then(function (res) {\n _this17.lengthByMeter = res;\n _this16.lengthChangeCallBack && _this16.lengthChangeCallBack();\n cd && cd();\n });\n }\n return fromDegreesArray;\n }\n\n // 更新多边形(线扩展)\n }, {\n key: \"renewPolygon\",\n value: function renewPolygon(fromDegreesArray) {\n var linePositions = [];\n if (this.options.extend && this.options.extend !== 'false') {\n var outerHole = [];\n for (var i = 0; i < fromDegreesArray.length; i += 3) {\n linePositions.push([fromDegreesArray[i], fromDegreesArray[i + 1]]);\n }\n var linestring = turf.lineString(linePositions);\n var buffered = turf.buffer(linestring, this.options.extendWidth / 1000, {\n units: 'kilometers'\n });\n for (var _i17 = 0; _i17 < buffered.geometry.coordinates[0].length; _i17++) {\n outerHole.push(buffered.geometry.coordinates[0][_i17][0], buffered.geometry.coordinates[0][_i17][1]);\n }\n var holes = []; // 孔\n for (var _i18 = 1; _i18 < buffered.geometry.coordinates.length; _i18++) {\n var array = [];\n for (var m = 0; m < buffered.geometry.coordinates[_i18].length; m++) {\n array.push(buffered.geometry.coordinates[_i18][m][0], buffered.geometry.coordinates[_i18][m][1]);\n }\n holes.push({\n positions: Cesium.Cartesian3.fromDegreesArray(array)\n });\n }\n this.entity.polygon = new Cesium.PolygonGraphics({\n hierarchy: {\n positions: Cesium.Cartesian3.fromDegreesArray(outerHole),\n holes: holes\n },\n material: Cesium.Color.fromCssColorString(this.options.extendColor)\n });\n } else {\n this.entity.polygon = undefined;\n }\n }\n }, {\n key: \"reset\",\n value: function () {\n var _reset = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (this.entity) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\");\n case 2:\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineWidth = this.originalOptions.width;\n this.lineType = this.originalOptions.type;\n this.noseToTail = this.originalOptions.noseToTail;\n this.extend = this.originalOptions.extend;\n this.extendWidth = this.originalOptions.extendWidth;\n this.extendColor = this.originalOptions.extendColor;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n // this.attributeVr = this.options.attribute.vr.content\n // this.attributeCamera = this.options.attribute.camera.content\n // this.attributeGoods = this.options.attribute.goods.content\n this.rotate = this.originalOptions.rotate;\n this.speed = this.originalOptions.speed;\n // this.dashSize = this.originalOptions.dashSize\n this.space = this.originalOptions.space;\n // this.cameraSelect && this.cameraSelect()\n // this.goodsSelect && this.goodsSelect()\n\n this.heightMode = this.options.heightMode;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(this.sdk, this.options.id);\n\n // let height\n // if (this.ground) {\n // height = await that.getClampToHeight({\n // lng: this.options.positions[0].lng,\n // lat: this.options.positions[0].lat\n // })\n // } else {\n // height = this.options.positions[0].alt\n // }\n // this.options.label.position = {\n // lng: this.options.positions[0].lng,\n // lat: this.options.positions[0].lat,\n // alt: height\n // }\n // this.label.position = [\n // this.options.label.position.lng,\n // this.options.label.position.lat,\n // this.options.label.position.alt\n // ]\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function reset() {\n return _reset.apply(this, arguments);\n }\n return reset;\n }() // _addRr() {\n // if (\n // this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value\n // ) {\n // this.options.attribute.vr.content.push({\n // name: '全景图',\n // url: this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value\n // })\n // this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value = ''\n // this.attributeVr = this.options.attribute.vr.content\n // } else {\n // this.Dialog.clickAddVr && this.Dialog.clickAddVr()\n // }\n // }\n // addAttributeRr(vr) {\n // this.options.attribute.vr.content.push({\n // name: '全景图',\n // url: vr\n // })\n // this.attributeVr = this.options.attribute.vr.content\n // }\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n height,\n i,\n a,\n _i19,\n _a,\n _i20,\n _a2,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n if (!this.options.customView) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 43;\n break;\n case 25:\n positionArray = [];\n _context3.t0 = this.options.heightMode;\n _context3.next = _context3.t0 === '0' ? 29 : _context3.t0 === 0 ? 29 : _context3.t0 === '1' ? 31 : _context3.t0 === 1 ? 31 : _context3.t0 === '2' ? 36 : _context3.t0 === 2 ? 36 : 41;\n break;\n case 29:\n for (i = 0; i < this.options.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt);\n positionArray.push(a.x, a.y, a.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 31:\n _context3.next = 33;\n return this.getClampToHeight(this.options.positions[0]);\n case 33:\n height = _context3.sent;\n for (_i19 = 0; _i19 < this.options.positions.length; _i19++) {\n _a = Cesium.Cartesian3.fromDegrees(this.options.positions[_i19].lng, this.options.positions[_i19].lat, height + this.options.positions[_i19].alt);\n positionArray.push(_a.x, _a.y, _a.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 36:\n _context3.next = 38;\n return this.getClampToHeight(this.options.positions[0]);\n case 38:\n height = _context3.sent;\n for (_i20 = 0; _i20 < this.options.positions.length; _i20++) {\n _a2 = Cesium.Cartesian3.fromDegrees(this.options.positions[_i20].lng, this.options.positions[_i20].lat, height);\n positionArray.push(_a2.x, _a2.y, _a2.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 41:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 43:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this18 = this;\n // var ue = UE.getEditor('app');\n _Element_richText__WEBPACK_IMPORTED_MODULE_13__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_13__[\"default\"].primaryCallBack = function (content) {\n _this18.options.richTextContent = content;\n };\n }\n\n // static nodeEdit2(that, cb = () => { }) {\n // that.positionEditing = false\n // if (YJ.Measure.GetMeasureStatus()) {\n // cb('上一次测量未结束')\n // } else {\n // YJ.Measure.SetMeasureStatus(true)\n // that.tip = new MouseTip('请选择一个顶点,右键取消', that.sdk)\n // that.event = new MouseEvent(that.sdk)\n // that.nodePoints = []\n // let selectPoint\n // let originalPosition\n // let newpositions = []\n // let fromDegreesArray = []\n // for (let i = 0; i < that.options.positions.length; i++) {\n // fromDegreesArray.push(\n // that.options.positions[i].lng,\n // that.options.positions[i].lat,\n // that.options.positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n\n // that.event.mouse_left((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // originalPosition = that.options.positions[selectPoint.index]\n // let entity = that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // position: Cesium.Cartesian3.fromDegrees(\n // that.options.positions[selectPoint.index].lng,\n // that.options.positions[selectPoint.index].lat,\n // that.options.positions[selectPoint.index].alt\n // ),\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // }\n // })\n // that.nodePoints.splice(selectPoint.index, 0, entity)\n // that.options.positions.splice(\n // selectPoint.index,\n // 0,\n // that.options.positions[selectPoint.index]\n // )\n // let fromDegreesArray = that.renewPositions(that.options.positions)\n // that.renewPolygon(fromDegreesArray)\n // that.options.lengthByMeter = that.computeDistance2(\n // that.options.positions,\n // 2,\n // that.ground\n // )\n // that.lengthUnit = that.options['length-unit']\n // } else {\n // var pick = that.sdk.viewer.scene.pick(movement.position)\n // if (\n // pick &&\n // pick.id &&\n // pick.id.name &&\n // pick.id.name === 'node-secondary-edit-point'\n // ) {\n // selectPoint = pick.id\n // that.nodePoints.splice(pick.id.index, 1)\n // that.sdk.viewer.entities.remove(pick.id)\n // that.tip.set_text('左键开始,右键结束,CTRL+右键撤销')\n // originalPosition = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // }\n // }\n // })\n\n // that.event.mouse_right((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = originalPosition\n // cb(null, that.options.positions)\n // }\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(\n // positions[i].lng,\n // positions[i].lat,\n // positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(\n // fromDegreesArray\n // )\n // for (let i = 0; i < that.nodePoints.length; i++) {\n // that.sdk.viewer.entities.remove(that.nodePoints[i])\n // }\n // that.nodePoints = []\n // that.event.destroy()\n // that.tip.destroy()\n // })\n\n // that.event.mouse_move((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(\n // positions[i].lng,\n // positions[i].lat,\n // positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(\n // fromDegreesArray\n // )\n // if (that.options.positions.length === 1) {\n // that.label.position = [\n // that.options.positions[0].lng,\n // that.options.positions[0].lat,\n // that.options.positions[0].alt\n // ]\n // that.options.label.position = {\n // lng: that.options.positions[0].lng,\n // lat: that.options.positions[0].lat,\n // alt: that.options.positions[0].alt\n // }\n // }\n // }\n // that.tip.setPosition(\n // cartesian,\n // movement.endPosition.x,\n // movement.endPosition.y\n // )\n // })\n\n // that.event.mouse_right_keyboard_ctrl((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions.pop()\n // that.sdk.viewer.entities.remove(\n // that.nodePoints[that.nodePoints.length - 1]\n // )\n // that.nodePoints.pop()\n // if (selectPoint.index === that.options.positions.length) {\n // if (that.nodePoints[selectPoint.index - 1]) {\n // selectPoint = that.nodePoints[selectPoint.index - 1]\n // } else {\n // selectPoint.index = 0\n // }\n // }\n // }\n // })\n\n // that.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n // return newpositions\n // }, false)\n\n // for (let i = 0; i < that.options.positions.length; i++) {\n // let entity = that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: Cesium.Cartesian3.fromDegrees(\n // that.options.positions[i].lng,\n // that.options.positions[i].lat,\n // that.options.positions[i].alt\n // ),\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // }\n // })\n // that.nodePoints.push(entity)\n // }\n // }\n // }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit(cd) {\n var _this19 = this;\n if (this._isNodeEdit) {\n return;\n }\n this.closeNodeEdit();\n var lastHeightMode = this.heightMode;\n this._isNodeEdit = true;\n this.positionEditing = false;\n this.heightMode = 0;\n if (YJ.Measure.GetMeasureStatus()) {} else {\n if (!this._lastHeightMode && this._lastHeightMode != 0) {\n this._lastHeightMode = lastHeightMode;\n }\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk);\n this.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_18__[\"default\"](this.sdk);\n this._nodeEditCallback = cd;\n var selectPoint;\n this.event.mouse_left(function (movement, cartesian) {\n var pick = _this19.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n _this19.ControllerObject.position = _this19.options.positions[selectPoint.index];\n _this19.ControllerObject.editTranslational();\n _this19.tip && _this19.tip.destroy();\n _this19.ControllerObject.controllerCallBack = function (params) {\n if (selectPoint.index === 0) {\n _this19.label.position = [params.position.lng, params.position.lat, params.position.alt];\n _this19.options.label.position = {\n lng: params.position.lng,\n lat: params.position.lat,\n alt: params.position.alt\n };\n }\n _this19.options.positions[selectPoint.index] = params.position;\n _this19._elms.lng && (_this19._elms.lng[selectPoint.index].innerHTML = params.position.lng.toFixed(8));\n _this19._elms.lngInput && (_this19._elms.lngInput[selectPoint.index].value = params.position.lng.toFixed(8));\n _this19._elms.lat && (_this19._elms.lat[selectPoint.index].innerHTML = params.position.lat.toFixed(8));\n _this19._elms.latInput && (_this19._elms.latInput[selectPoint.index].value = params.position.lat.toFixed(8));\n _this19._elms.alt && (_this19._elms.alt[selectPoint.index].innerHTML = params.position.alt.toFixed(2));\n _this19._elms.altInput && (_this19._elms.altInput[selectPoint.index].value = params.position.alt.toFixed(2));\n selectPoint.position = Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt);\n };\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n var _lastHeightMode = _this19._lastHeightMode;\n _this19._lastHeightMode = null;\n if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {\n _this19.heightMode = _lastHeightMode;\n }\n for (var i = 0; i < _this19.nodePoints.length; i++) {\n _this19.sdk.viewer.entities.remove(_this19.nodePoints[i]);\n }\n _this19.nodePoints = [];\n _this19.event.destroy();\n _this19.tip && _this19.tip.destroy();\n _this19.tip = null;\n _this19.ControllerObject.destroy();\n var fromDegreesArray = _this19.renewPositions(_this19.options.positions);\n _this19.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n YJ.Measure.SetMeasureStatus(false);\n _this19._nodeEditCallback = null;\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this19.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n var fromDegreesArray = _this19.renewPositions(_this19.options.positions);\n _this19._nodeEditCallback && _this19._nodeEditCallback(_this19.options.positions, _this19.lengthByMeter);\n return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n }, false);\n for (var i = 0; i < this.options.positions.length; i++) {\n var entity = this.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n position: Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt),\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n this.nodePoints.push(entity);\n }\n this._isNodeEdit = true;\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n this._isNodeEdit = false;\n var _lastHeightMode = this._lastHeightMode;\n this._lastHeightMode = null;\n if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {\n this.heightMode = _lastHeightMode;\n }\n YJ.Measure.SetMeasureStatus(false);\n this.ControllerObject && this.ControllerObject.destroy();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this._nodeEditCallback = null;\n }\n\n /**\r\n * 删除\r\n */\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label && this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context4.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n )\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this20 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.closeNodeEdit();\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk);\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var positions = JSON.parse(JSON.stringify(this.options.positions));\n var positions2 = this.renewPositions(this.options.positions);\n // let positions2 = JSON.parse(JSON.stringify(positions))\n // for (let i = 0; i < positions2.length; i++) {\n // let height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions2[i].lng, positions2[i].lat))\n // positions2[i] = Cesium.Cartesian3.fromDegrees(\n // positions2[i].lng,\n // positions2[i].lat,\n // Number((positions2[i].alt + Number(height)).toFixed(2))\n // )\n // }\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.options.positions)\n };\n for (var i = 0; i < positions.length; i++) {\n positions[i] = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n var center = positions[Math.floor(positions.length / 2)];\n var disparity = [];\n for (var _i21 = 0; _i21 < positions.length; _i21++) {\n disparity.push({\n x: center.x - positions[_i21].x,\n y: center.y - positions[_i21].y,\n z: center.z - positions[_i21].z\n });\n }\n var newpositions = [];\n var newpositions84 = [];\n this.event.mouse_move(function (movement, cartesian) {\n newpositions = [];\n newpositions84 = [];\n for (var _i22 = 0; _i22 < disparity.length; _i22++) {\n var newP = {\n x: cartesian.x - disparity[_i22].x,\n y: cartesian.y - disparity[_i22].y,\n z: cartesian.z - disparity[_i22].z\n };\n var pos84 = _this20.cartesian3Towgs84(newP, _this20.sdk.viewer);\n pos84.alt = _this20.options.positions[_i22].alt;\n // let height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat))\n // pos84.alt = Number((pos84.alt + Number(height)).toFixed(2))\n // newP = Cesium.Cartesian3.fromDegrees(\n // pos84.lng,\n // pos84.lat,\n // pos84.alt\n // )\n newpositions.push(newP);\n newpositions84.push(pos84);\n }\n var position84 = newpositions84[0];\n positions2 = _this20.renewPositions(newpositions84);\n _this20.label.position = [position84.lng, position84.lat, position84.alt];\n _this20.options.label.position = {\n lng: position84.lng,\n lat: position84.lat,\n alt: position84.alt\n };\n _this20.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this20.event.mouse_move(function () {});\n _this20.event.mouse_left(function () {});\n _this20.event.mouse_right(function () {});\n newpositions = [];\n newpositions84 = [];\n for (var _i23 = 0; _i23 < disparity.length; _i23++) {\n var newP = {\n x: cartesian.x - disparity[_i23].x,\n y: cartesian.y - disparity[_i23].y,\n z: cartesian.z - disparity[_i23].z\n };\n var pos84 = _this20.cartesian3Towgs84(newP, _this20.sdk.viewer);\n pos84.alt = _this20.options.positions[_i23].alt;\n newpositions.push(newP);\n newpositions84.push(pos84);\n }\n var positionsLngLat = [];\n for (var _i24 = 0; _i24 < newpositions84.length; _i24++) {\n var position = newpositions84[_i24];\n positionsLngLat.push(position);\n _this20._elms.lng && (_this20._elms.lng[_i24].innerHTML = position.lng.toFixed(8));\n _this20._elms.lngInput && (_this20._elms.lngInput[_i24].value = position.lng.toFixed(8));\n _this20._elms.lat && (_this20._elms.lat[_i24].innerHTML = position.lat.toFixed(8));\n _this20._elms.latInput && (_this20._elms.latInput[_i24].value = position.lat.toFixed(8));\n _this20._elms.alt && (_this20._elms.alt[_i24].innerHTML = position.alt.toFixed(2));\n _this20._elms.altInput && (_this20._elms.altInput[_i24].value = position.alt.toFixed(2));\n }\n _this20.options.positions = positionsLngLat;\n _this20.previous.positions = positionsLngLat;\n\n // this.entity.polyline.positionsLngLat = positionsLngLat\n var fromDegreesArray = _this20.renewPositions(_this20.options.positions, function () {\n if (_this20._positionEditingCallback) {\n _this20._positionEditingCallback();\n _this20._positionEditingCallback = null;\n }\n });\n _this20.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this20.renewPolygon(fromDegreesArray);\n _this20.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this20.event.mouse_move(function () {});\n _this20.event.mouse_left(function () {});\n _this20.event.mouse_right(function () {});\n _this20.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this20.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n // 长按取消\n _this20.event.mouse_move(function () {});\n _this20.event.mouse_left(function () {});\n _this20.event.mouse_right(function () {});\n _this20.positionEditing = false;\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArrayHeights(positions2);\n }, false);\n } else {\n if (!this.sdk || !this.sdk.viewer || !this.label || !this.label.entity) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n var heightMode = this.heightMode;\n if (this._isNodeEdit) {\n heightMode = 0;\n }\n switch (heightMode) {\n case 0:\n case '0':\n case 1:\n case '1':\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat, fromDegreesArray[2]];\n this.options.label.position = {\n lng: this.options.positions[0].lng,\n lat: this.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n break;\n case 2:\n case '2':\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat];\n this.options.label.position = {\n lng: this.options.positions[0].lng,\n lat: this.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n break;\n }\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"lengthChangeCallBack\",\n get: function get() {\n return this._lengthChangeCallBack;\n },\n set: function set(cd) {\n this._lengthChangeCallBack = cd;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _Cesium$Cartesian,\n _this21 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: '',\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var points = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n points.push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n var line = turf.lineString(points);\n var length = turf.length(line, {\n units: 'kilometers'\n });\n var sliced = turf.lineSliceAlong(line, 0, length / 2, {\n units: 'kilometers'\n });\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]));\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this21.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n var height, ground, objectsToExclude;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(that.sdk.viewer.entities.values);\n _context5.t0 = that.options.heightMode;\n _context5.next = _context5.t0 === '0' ? 4 : _context5.t0 === 0 ? 4 : _context5.t0 === '1' ? 7 : _context5.t0 === 1 ? 7 : _context5.t0 === '2' ? 14 : _context5.t0 === 2 ? 14 : 19;\n break;\n case 4:\n ground = false;\n height = that.options.positions[0].alt;\n return _context5.abrupt(\"break\", 19);\n case 7:\n ground = false;\n _context5.next = 10;\n return that.getClampToHeight({\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat\n }, objectsToExclude);\n case 10:\n _context5.t1 = _context5.sent;\n _context5.t2 = that.options.positions[0].alt;\n height = _context5.t1 + _context5.t2;\n return _context5.abrupt(\"break\", 19);\n case 14:\n ground = true;\n _context5.next = 17;\n return that.getClampToHeight({\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat\n }, objectsToExclude);\n case 17:\n height = _context5.sent;\n return _context5.abrupt(\"break\", 19);\n case 19:\n if (!that.options.label.position) {\n that.options.label.position = {\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat,\n alt: height\n };\n }\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: ground\n });\n case 21:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"create\",\n value: function create(that) {\n var ground;\n if (that.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n var positions = that.options.positions;\n var fromDegreesArray = that.renewPositions(positions);\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polyline: {\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n width: that.options.width,\n clampToGround: ground,\n // material: that.getMaterial(that.options.color, that.options.type),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.entity.polyline.oriWidth = that.options.width;\n that.judgeLine(that.entity, that.options);\n var params = _objectSpread({}, that.options);\n params.speed = that.inputSpeed;\n that.entity.polyline.material = that.getMaterial(that.options.color, that.options.type, that.entity, params);\n that.sdk._entityZIndex++;\n CurvelineObject.createLabel(that);\n // that.entity.polyline.positionsLngLat = positions\n that.renewPolygon(fromDegreesArray);\n // that.options.lengthByMeter = that.computeDistance2(that.smoothHandle(positions), 2, ground)\n // that.lengthUnit = that.options['length-unit']\n // syncData(that.sdk, that.options.id)\n // if (that.options.show) {\n // setSplitDirection(0, that.options.id)\n // }\n\n that.computeDistance(that.smoothHandle(positions), 2, that.options.wordsName).then(function (res) {\n that.lengthByMeter = res;\n that.lengthChangeCallBack && that.lengthChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(that.sdk, that.options.id);\n });\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"setSplitDirection\"])(0, that.options.id);\n }\n\n // if (this.options.noseToTail) {\n // let array = []\n // for (let i = 0; i < fromDegreesArray.length; i += 2) {\n // array.push({ lng: fromDegreesArray[i], lat: fromDegreesArray[i + 1] })\n // }\n // this.options.fit_length = tool.computeDistance2(array)\n // }\n // else {\n // this.options.fit_length = tool.computeDistance2(positions)\n // }\n // if (this.options.fit_length_unit === 'km') {\n // this.options.fit_length = this.options.fit_length / 1000\n // }\n\n var scene = that.sdk.viewer.scene;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (CurvelineObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvQ3VydmVsaW5lT2JqZWN0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0N1cnZlbGluZU9iamVjdC9pbmRleC5qcz80NDJjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZGVzY3JpcHRpb24g57q/XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJ1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnLi9fZWxlbWVudCdcclxuaW1wb3J0IEJhc2UgZnJvbSAnLi4vaW5kZXgnXHJcbmltcG9ydCBjeV90YWJzIGZyb20gJy4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzJ1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSAnLi4vLi4vRWxlbWVudC9yaWNoVGV4dCdcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZydcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi8uLi8uLi9Db250cm9sbGVyL2luZGV4J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSwgZ2V0M0RWaWV3IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCdcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBDdXJ2ZWxpbmVPYmplY3QgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOabsue6v1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOe6v+WxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWV7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy53aWR0aD0ze251bWJlcn0g57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9I2ZmMDAwMCB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy50eXBlPTAge251bWJlcn0g5p2Q6LSo57G75Z6LIDAt5a6e57q/IDEt6Jma57q/IDIt5rOb5YWJLi4uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0TW9kZT0ye251bWJlcn0g6auY5bqm5qih5byP77yIMO+8mua1t+aLlOmrmOW6pu+8mzHvvJrnm7jlr7npq5jluqbvvJsy77ya5L6d6ZmE5qih5byP77yJXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubm9zZVRvVGFpbD1mYWxzZSB7Ym9vbGVhbn0g6aaW5bC+55u46L+eXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZXh0ZW5kPWZhbHNlIHtib29sZWFufSDnur/nvJPlhrJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5leHRlbmRXaWR0aD0xMCB7bnVtYmVyfSDnur/nvJPlhrLlrr3luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5leHRlbmRDb2xvcj1yZ2JhKDI1NSwyNTUsODAsMC4zKSB7bnVtYmVyfSDnur/nvJPlhrLpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvumakFxyXG4gICAqIEBwYXJhbSB7QXJyYXkuPG9iamVjdD59IG9wdGlvbnMucG9zaXRpb25zIOW/heWhq++8jOe7j+e6rOW6puWSjOmrmOW6pueahOWIl+ihqO+8jOWAvOS6pOabvyBbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5qCH562+5a+56LGhXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwudGV4dCB7c3RyaW5nfSDmoIfnrb7mlofmnKxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IHtzdHJpbmd9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogXHJcbiAgICogXHJcbiAgICogQHBhcmFtIF9EaWFsb2cge29iamVjdH0g5by55qGG5LqL5Lu2XHJcbiAgICogQHBhcmFtIF9EaWFsb2cuY29uZmlybUNhbGxCYWNrIHtmdW5jdGlvbn0g5by55qGG56Gu6K6k5pe255qE5Zue6LCDXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgdGhpcy5vcHRpb25zLndpZHRoID0gKChvcHRpb25zLndpZHRoIHx8IG9wdGlvbnMud2lkdGggPT09IDApID8gb3B0aW9ucy53aWR0aCA6IDMpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICcjZmYwMDAwJ1xyXG4gICAgdGhpcy5vcHRpb25zLnR5cGUgPSBvcHRpb25zLnR5cGUgPyBOdW1iZXIob3B0aW9ucy50eXBlKSA6IDBcclxuICAgIHRoaXMub3B0aW9ucy5ub3NlVG9UYWlsID0gb3B0aW9ucy5ub3NlVG9UYWlsIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kID0gb3B0aW9ucy5leHRlbmQgfHwgZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUgPSAob3B0aW9ucy5yb3RhdGUgfHwgb3B0aW9ucy5yb3RhdGUgPT09IGZhbHNlKSA/IG9wdGlvbnMucm90YXRlIDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnNwYWNlID0gKG9wdGlvbnMuc3BhY2UgfHwgb3B0aW9ucy5zcGFjZSA9PT0gMCkgPyBvcHRpb25zLnNwYWNlIDogMVxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gb3B0aW9ucy5zcGVlZCB8fCAxMFxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmRhc2hTaXplID0gb3B0aW9ucy5kYXNoU2l6ZSB8fCAwLjAzXHJcbiAgICB0aGlzLm9wdGlvbnMud29yZHNOYW1lID0gb3B0aW9ucy53b3Jkc05hbWUgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZFdpZHRoID1cclxuICAgICAgb3B0aW9ucy5leHRlbmRXaWR0aCB8fCBvcHRpb25zLmV4dGVuZFdpZHRoID09PSAwXHJcbiAgICAgICAgPyBvcHRpb25zLmV4dGVuZFdpZHRoXHJcbiAgICAgICAgOiAxMFxyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZENvbG9yID0gb3B0aW9ucy5leHRlbmRDb2xvciB8fCAncmdiYSgyNTUsMjU1LDgwLDAuMyknXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9XHJcbiAgICAgIG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAob3B0aW9ucy5oZWlnaHRNb2RlIHx8IG9wdGlvbnMuaGVpZ2h0TW9kZSA9PSAwKSA/IG9wdGlvbnMuaGVpZ2h0TW9kZSA6IDJcclxuICAgIHRoaXMuX2VsbXMgPSBbXVxyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IHtcclxuICAgICAgdGV4dDogdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgIHNob3c6IG9wdGlvbnMubGFiZWwuc2hvdyB8fCBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IG9wdGlvbnMubGFiZWwucG9zaXRpb24sXHJcbiAgICAgIGZvbnRTaXplOlxyXG4gICAgICAgIG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMFxyXG4gICAgICAgICAgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICAgICAgICA6IDIwLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBjb2xvcjogb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIGxpbmVXaWR0aDpcclxuICAgICAgICBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMFxyXG4gICAgICAgICAgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gICAgICAgICAgOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDpcclxuICAgICAgICBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IHx8IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPT09IDBcclxuICAgICAgICAgID8gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gICAgICAgICAgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjpcclxuICAgICAgICBvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwXHJcbiAgICAgICAgICA/IG9wdGlvbnMubGFiZWwubmVhclxyXG4gICAgICAgICAgOiAyMDAwLFxyXG4gICAgICBmYXI6XHJcbiAgICAgICAgb3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDBcclxuICAgICAgICAgID8gb3B0aW9ucy5sYWJlbC5mYXJcclxuICAgICAgICAgIDogMTAwMDAwXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYSB8fCB7fVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudCA9XHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgfHwgW11cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyIHx8IHt9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPVxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgfHwgW11cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzIHx8IHt9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnQgPVxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnQgfHwgW11cclxuXHJcblxyXG4gICAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnJcclxuICAgICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHNcclxuXHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG5cclxuXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIHRoaXMudW5pdE51bSA9IDBcclxuICAgIHRoaXMuaW5wdXRTcGVlZCA9IChvcHRpb25zLnNwZWVkICYmIE1hdGgucG93KG9wdGlvbnMuc3BlZWQsIC0xKSAqIDEwMCkgfHwgMTBcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucG9zaXRpb25zIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICfnur/mrrXmnIDlsJHpnIDopoHkuKTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyA9IE51bWJlcihOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQgPSBOdW1iZXIoTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ID0gTnVtYmVyKE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkudG9GaXhlZCgyKSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgICAgQ3VydmVsaW5lT2JqZWN0LmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdiB8fCAnI2ZmMDAwMCdcclxuICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh2LCB0aGlzLm9wdGlvbnMudHlwZSlcclxuICAgIGxldCBwYXJhbXMgPSB7IC4uLnRoaXMub3B0aW9ucyB9XHJcbiAgICBwYXJhbXMuc3BlZWQgPSB0aGlzLmlucHV0U3BlZWRcclxuICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHRoaXMub3B0aW9ucy5jb2xvciwgdGhpcy5vcHRpb25zLnR5cGUsIHRoaXMuZW50aXR5LCBwYXJhbXMpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgc3BlZWQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gdlxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnNwZWVkID0gdiAhPT0gMCA/IE1hdGgucG93KHYsIC0xKSAqIDEwMCA6IDBcclxuICAgIHRoaXMuaW5wdXRTcGVlZCA9IHYgIT09IDAgPyBNYXRoLnBvdyh2LCAtMSkgKiAxMDAgOiAwXHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGlzLm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhpcy5pbnB1dFNwZWVkXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgcGFyYW1zKVxyXG4gIH1cclxuICAvLyBnZXQgZGFzaFNpemUoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmRhc2hTaXplXHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXQgZGFzaFNpemUodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmRhc2hTaXplID0gdlxyXG4gIC8vICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5vcHRpb25zIH1cclxuICAvLyAgIHBhcmFtcy5zcGVlZCA9IHRoaXMuaW5wdXRTcGVlZFxyXG4gIC8vICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHRoaXMub3B0aW9ucy5jb2xvciwgdGhpcy5vcHRpb25zLnR5cGUsIHRoaXMuZW50aXR5LCB0aGlzLm9wdGlvbnMpXHJcbiAgLy8gICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHBhcmFtcylcclxuICAvLyB9XHJcblxyXG4gIGdldCByb3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZVxyXG4gIH1cclxuXHJcbiAgc2V0IHJvdGF0ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlID0gdlxyXG4gICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgIHRoaXMuX2VsbXMucm90YXRlICYmXHJcbiAgICAgIHRoaXMuX2VsbXMucm90YXRlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUgPSB2XHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGlzLm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhpcy5pbnB1dFNwZWVkXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHBhcmFtcylcclxuICB9XHJcblxyXG4gIGdldCBzcGFjZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3BhY2VcclxuICB9XHJcblxyXG4gIHNldCBzcGFjZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BhY2UgPSB2XHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGlzLm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhpcy5pbnB1dFNwZWVkXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgcGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdvcmRzTmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMud29yZHNOYW1lXHJcbiAgfVxyXG4gIHNldCB3b3Jkc05hbWUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLndvcmRzTmFtZSA9IE51bWJlcih2KVxyXG5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGlmICghdGhpcy5ub3NlVG9UYWlsKSB7XHJcbiAgICAgIHRoaXMuY29tcHV0ZURpc3RhbmNlKFxyXG4gICAgICAgIHRoaXMuc21vb3RoSGFuZGxlKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpLFxyXG4gICAgICAgIDIsXHJcbiAgICAgICAgdlxyXG4gICAgICApLnRoZW4ocmVzID0+IHtcclxuICAgICAgICBfdGhpcy5sZW5ndGhCeU1ldGVyID0gcmVzXHJcbiAgICAgICAgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjayAmJiB0aGlzLmxlbmd0aENoYW5nZUNhbGxCYWNrKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IGZpdExlbmd0aFVuaXQoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zWydmaXQtbGVuZ3RoLXVuaXQnXVxyXG4gIC8vIH1cclxuICAvLyBzZXQgZml0TGVuZ3RoVW5pdCh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnNbJ2ZpdC1sZW5ndGgtdW5pdCddID0gdlxyXG4gIC8vICAgdGhpcy5fZWxtcy5maXRMZW5ndGhVbml0ICYmXHJcbiAgLy8gICAgIHRoaXMuX2VsbXMuZml0TGVuZ3RoVW5pdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gIC8vICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICBpZiAodGhpcy5vcHRpb25zLmZpdExlbmd0aEJ5TWV0ZXIpIHtcclxuICAvLyAgICAgc3dpdGNoICh2KSB7XHJcbiAgLy8gICAgICAgY2FzZSAn57GzJzpcclxuICAvLyAgICAgICAgIHRoaXMuZml0TGVuZ3RoID0gdGhpcy5vcHRpb25zLmZpdExlbmd0aEJ5TWV0ZXJcclxuICAvLyAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgY2FzZSAn5Y2D57GzJzpcclxuICAvLyAgICAgICAgIHRoaXMuZml0TGVuZ3RoID0gTnVtYmVyKFxyXG4gIC8vICAgICAgICAgICAodGhpcy5vcHRpb25zLmZpdExlbmd0aEJ5TWV0ZXIgLyAxMDAwKS50b0ZpeGVkKDUpXHJcbiAgLy8gICAgICAgICApXHJcbiAgLy8gICAgICAgICBicmVha1xyXG4gIC8vICAgICAgIGRlZmF1bHQ6XHJcbiAgLy8gICAgICAgICB0aGlzLmZpdExlbmd0aCA9IHRoaXMub3B0aW9ucy5maXRMZW5ndGhCeU1ldGVyXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGdldCBsaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLndpZHRoXHJcbiAgfVxyXG5cclxuICBzZXQgbGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy53aWR0aCA9ICh2IHx8IHYgPT0gMCkgPyB2IDogM1xyXG4gICAgdGhpcy5fZWxtcy5saW5lV2lkdGggJiZcclxuICAgICAgdGhpcy5fZWxtcy5saW5lV2lkdGguZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLndpZHRoXHJcbiAgICAgIH0pXHJcbiAgICBpZiAodGhpcy5lbnRpdHkgJiYgdGhpcy5lbnRpdHkucG9seWxpbmUpIHtcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggPSB0aGlzLmVudGl0eS5wb2x5bGluZS53aWR0aCArIHYgLSB0aGlzLmVudGl0eS5wb2x5bGluZS5vcmlXaWR0aFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5vcmlXaWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aFxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5lbnRpdHkgJiZcclxuICAgIC8vICAgdGhpcy5lbnRpdHkucG9seWxpbmUgJiZcclxuICAgIC8vICAgKHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5vcHRpb25zLndpZHRoKSAmJiAodGhpcy5lbnRpdHkucG9seWxpbmUub3JpV2lkdGggPSB0aGlzLm9wdGlvbnMud2lkdGgpXHJcbiAgfVxyXG5cclxuICBnZXQgbGluZVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnR5cGVcclxuICB9XHJcblxyXG4gIHNldCBsaW5lVHlwZSh2KSB7XHJcbiAgICBsZXQgbGluZVR5cGVEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBsaW5lXCI+PC9pPuWunue6vycsXHJcbiAgICAgICAgdmFsdWU6ICflrp7nur8nLFxyXG4gICAgICAgIGtleTogMCxcclxuICAgICAgICBpY29uOiAnbGluZSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gZGFzaC1saW5lXCI+PC9pPuiZmue6vycsXHJcbiAgICAgICAgdmFsdWU6ICfomZrnur8nLFxyXG4gICAgICAgIGtleTogMSxcclxuICAgICAgICBpY29uOiAnZGFzaC1saW5lJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBsaWdodC1saW5lXCI+PC9pPuazm+WFiScsXHJcbiAgICAgICAgdmFsdWU6ICfms5vlhYknLFxyXG4gICAgICAgIGtleTogMixcclxuICAgICAgICBpY29uOiAnbGlnaHQtbGluZSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gdGFpbC1saW5lXCI+PC9pPuWwvui/ueWFiee6vycsXHJcbiAgICAgICAgdmFsdWU6ICflsL7ov7nlhYnnur8nLFxyXG4gICAgICAgIGtleTogMyxcclxuICAgICAgICBpY29uOiAndGFpbC1saW5lJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBtdWx0LXRhaWwtbGluZVwiPjwvaT7lpJrlsL7ov7nlhYnnur8nLFxyXG4gICAgICAgIHZhbHVlOiAn5aSa5bC+6L+55YWJ57q/JyxcclxuICAgICAgICBrZXk6IDQsXHJcbiAgICAgICAgaWNvbjogJ211bHQtdGFpbC1saW5lJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBmbG93LWRhc2gtbGluZTFcIj48L2k+5rWB5Yqo6Jma57q/MScsXHJcbiAgICAgICAgdmFsdWU6ICfmtYHliqjomZrnur8xJyxcclxuICAgICAgICBrZXk6IDUsXHJcbiAgICAgICAgaWNvbjogJ2Zsb3ctZGFzaC1saW5lMSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gZmxvdy1kYXNoLWxpbmUyXCI+PC9pPua1geWKqOiZmue6vzInLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo6Jma57q/MicsXHJcbiAgICAgICAga2V5OiA2LFxyXG4gICAgICAgIGljb246ICdmbG93LWRhc2gtbGluZTInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lMVwiPjwvaT7mtYHliqjnrq3lpLQxJyxcclxuICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDEnLFxyXG4gICAgICAgIGtleTogNyxcclxuICAgICAgICBpY29uOiAncGljLWxpbmUxJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTJcIj48L2k+5rWB5Yqo566t5aS0MicsXHJcbiAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQyJyxcclxuICAgICAgICBrZXk6IDgsXHJcbiAgICAgICAgaWNvbjogJ3BpYy1saW5lMidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmUzXCI+PC9pPua1geWKqOeureWktDMnLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0MycsXHJcbiAgICAgICAga2V5OiA5LFxyXG4gICAgICAgIGljb246ICdwaWMtbGluZTMnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lNFwiPjwvaT7mtYHliqjnrq3lpLQ0JyxcclxuICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDQnLFxyXG4gICAgICAgIGtleTogMTAsXHJcbiAgICAgICAgaWNvbjogJ3BpYy1saW5lNCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmU1XCI+PC9pPua1geWKqOeureWktDUnLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0NScsXHJcbiAgICAgICAga2V5OiAxMSxcclxuICAgICAgICBpY29uOiAncGljLWxpbmU1J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTZcIj48L2k+5rWB5Yqo566t5aS0NicsXHJcbiAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQ2JyxcclxuICAgICAgICBrZXk6IDEyLFxyXG4gICAgICAgIGljb246ICdwaWMtbGluZTYnXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIHRoaXMub3B0aW9ucy50eXBlID0gTnVtYmVyKHYpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVUeXBlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAobGluZVR5cGVEYXRhW2ldLmtleSA9PT0gTnVtYmVyKHYpKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lVHlwZSAmJlxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5saW5lVHlwZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gbGluZVR5cGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgIGlmICgyIDwgaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlIDwgMTMpIHsvL+i0tOWbvuWPguaVsFxyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpICYmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpICYmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgyIDwgaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlIDwgNSkgey8v5bC+6L+55Y+C5pWwXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMV0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMV0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5vcHRpb25zIH1cclxuICAgIHBhcmFtcy5zcGVlZCA9IHRoaXMuaW5wdXRTcGVlZFxyXG4gICAgdGhpcy5lbnRpdHkgJiZcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUgJiZcclxuICAgICAgKHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbChcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnR5cGUsXHJcbiAgICAgICAgdGhpcy5lbnRpdHksXHJcbiAgICAgICAgcGFyYW1zXHJcbiAgICAgICkpXHJcbiAgfVxyXG4gIGdldCBub3NlVG9UYWlsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5ub3NlVG9UYWlsXHJcbiAgfVxyXG5cclxuICBzZXQgbm9zZVRvVGFpbCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbCA9IHZcclxuICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICB0aGlzLl9lbG1zLm5vc2VUb1RhaWwgJiZcclxuICAgICAgdGhpcy5fZWxtcy5ub3NlVG9UYWlsLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgIClcclxuICAgICAgdGhpcy5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIH1cclxuICAgIC8vIGlmICh2KSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLm9wdGlvbnMuZml0TGVuZ3RoQnlNZXRlciA+IDEwMDAgfHwgdGhpcy5vcHRpb25zLmZpdExlbmd0aEJ5TWV0ZXIgPT0gMTAwMCkge1xyXG4gICAgLy8gICAgIGxldCBkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzFdXHJcbiAgICAvLyAgICAgZG9tICYmIGRvbS5xdWVyeVNlbGVjdG9yQWxsKCdkZCcpWzFdICYmIGRvbS5xdWVyeVNlbGVjdG9yQWxsKCdkZCcpWzFdLmNsaWNrKClcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICBsZXQgZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVsxXVxyXG4gICAgLy8gICAgIGRvbSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVswXSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVswXS5jbGljaygpXHJcbiAgICAvLyAgIH1cclxuXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aEJ5TWV0ZXIgPiAxMDAwIHx8IHRoaXMub3B0aW9ucy5sZW5ndGhCeU1ldGVyID09IDEwMDApIHtcclxuICAgIC8vICAgICBsZXQgZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVsxXVxyXG4gICAgLy8gICAgIGRvbSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVsxXSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVsxXS5jbGljaygpXHJcbiAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgbGV0IGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMV1cclxuICAgIC8vICAgICBkb20gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMF0gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMF0uY2xpY2soKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGhlaWdodE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA6IDBcclxuICB9XHJcbiAgc2V0IGhlaWdodE1vZGUodikge1xyXG4gICAgaWYgKCF0aGlzLl9pc05vZGVFZGl0KSB7XHJcbiAgICAgIHRoaXMuX2xhc3RIZWlnaHRNb2RlID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgIGxldCBoZWlnaHRNb2RlTmFtZSA9ICcnXHJcbiAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgKVxyXG4gICAgdGhpcy5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgICAgdGhpcy5leHRlbmQgPSBmYWxzZVxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+a1t+aLlOmrmOW6pidcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgICB0aGlzLmV4dGVuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn55u45a+55Zyw6KGoJ1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfkvp3pmYTmqKHlnosnXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMubGVuZ3RoQnlNZXRlciA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihcclxuICAgIC8vICAgdGhpcy5zbW9vdGhIYW5kbGUodGhpcy5vcHRpb25zLnBvc2l0aW9ucyksXHJcbiAgICAvLyAgIDIsXHJcbiAgICAvLyAgIGdyb3VuZFxyXG4gICAgLy8gKVxyXG4gICAgLy8gdGhpcy5sZW5ndGhVbml0ID0gdGhpcy5sZW5ndGhVbml0XHJcbiAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZS52YWx1ZSA9IGhlaWdodE1vZGVOYW1lKVxyXG4gICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ICYmICh0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgIGhlaWdodE1vZGVOYW1lXHJcbiAgICApKVxyXG4gICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtICYmIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmIChncm91bmQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlID0gJ+S+nemZhOaooeWeiycpXHJcbiAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXlbMl1cclxuICAgICAgICBdXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0ge1xyXG4gICAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICBhbHQ6IGZyb21EZWdyZWVzQXJyYXlbMl1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIGdldCBleHRlbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4dGVuZFxyXG4gIH1cclxuXHJcbiAgc2V0IGV4dGVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kID0gdlxyXG4gICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IDJcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuZXh0ZW5kICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuZXh0ZW5kLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZXh0ZW5kKSB7XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgdGhpcy5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBleHRlbmRXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXh0ZW5kV2lkdGhcclxuICB9XHJcblxyXG4gIHNldCBleHRlbmRXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmV4dGVuZFdpZHRoICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuZXh0ZW5kV2lkdGguZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGV4dGVuZENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHRlbmRDb2xvclxyXG4gIH1cclxuICBzZXQgZXh0ZW5kQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZENvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMuZXh0ZW5kQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5leHRlbmRDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dGVuZENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5leHRlbmRDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5leHRlbmRDb2xvcltpXSA9IGV4dGVuZENvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eSAmJlxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uICYmXHJcbiAgICAgICh0aGlzLmVudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kQ29sb3JcclxuICAgICAgKSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICAgIF1cclxuICAgICAgfSwgMClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxMaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbXHJcbiAgICAgICAgICBpXHJcbiAgICAgICAgXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSwgdl1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyBnZXQgYXR0cmlidXRlQ2FtZXJhKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICAvLyB9XHJcblxyXG4gIC8vIHNldCBhdHRyaWJ1dGVDYW1lcmEodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudCA9IHZcclxuICAvLyB9XHJcblxyXG4gIC8vIGdldCBhdHRyaWJ1dGVWcigpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAvLyB9XHJcblxyXG4gIC8vIHNldCBhdHRyaWJ1dGVWcih2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQgPSB2XHJcbiAgLy8gICBpZiAoXHJcbiAgLy8gICAgICF0aGlzLl9EaWFsb2dPYmplY3QgfHxcclxuICAvLyAgICAgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fFxyXG4gIC8vICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgfHxcclxuICAvLyAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAvLyAgICAgICAnYXR0cmlidXRlLWNvbnRlbnQtdnInXHJcbiAgLy8gICAgICkubGVuZ3RoID09IDBcclxuICAvLyAgICkge1xyXG4gIC8vICAgICByZXR1cm5cclxuICAvLyAgIH1cclxuICAvLyAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgLy8gICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC12cicpWzFdXHJcbiAgLy8gICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgLy8gICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgLy8gICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAvLyAgIGlmICh0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgbGV0IHRyID1cclxuICAvLyAgICAgICBgXHJcbiAgLy8gICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gIC8vICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArXHJcbiAgLy8gICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldLm5hbWUgK1xyXG4gIC8vICAgICAgIGA8L2Rpdj5cclxuICAvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgK1xyXG4gIC8vICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpXS51cmwgK1xyXG4gIC8vICAgICAgIGA8L2Rpdj5cclxuICAvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gIC8vICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwidnJFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgLy8gICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ2ckRlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gIC8vICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgIDwvZGl2PmBcclxuICAvLyAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgLy8gICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAvLyAgIGxldCBmdW4gPSB7XHJcbiAgLy8gICAgIHZyRWRpdDogYXN5bmMgaW5kZXggPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSBhd2FpdCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAvLyAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gIC8vICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LXZyJylbMV1cclxuICAvLyAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgLy8gICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gIC8vICAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAvLyAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gIC8vICAgICAgICAgICBsZXQgaGVpZ2h0ID0gaXRlbVtpXS5vZmZzZXRIZWlnaHRcclxuICAvLyAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgLy8gICAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dCBsaW5rLWVkaXRcIiB0eXBlPVwidGV4dFwiPjwvdGV4dGFyZWE+XHJcbiAgLy8gICAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgLy8gICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29uZmlybUVkaXRcIj7noa7orqQ8L2J1dHRvbj5cclxuICAvLyAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjYW5jZWxFZGl0XCI+5Y+W5raIPC9idXR0b24+XHJcbiAgLy8gICAgICAgICAgICAgPC9kaXY+YFxyXG4gIC8vICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAvLyAgICAgICAgICAgbGV0IHRleHRhcmVhRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rLWVkaXQnKVswXVxyXG4gIC8vICAgICAgICAgICB0ZXh0YXJlYUVsbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgLSAxMCArICdweCdcclxuICAvLyAgICAgICAgICAgbGV0IHRkID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgLy8gICAgICAgICAgIHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgLy8gICAgICAgICAgICAgJ2lucHV0J1xyXG4gIC8vICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgLy8gICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgLy8gICAgICAgICAgICAgJ2lucHV0J1xyXG4gIC8vICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2luZGV4XS51cmxcclxuICAvLyAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgLy8gICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgLy8gICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb250aW51ZVxyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgLy8gICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gIC8vICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKFxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSxcclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWVcclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgaVxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICAgICAgfSlcclxuICAvLyAgICAgICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAvLyAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIHZyRGVsZXRlOiBpID0+IHtcclxuICAvLyAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vICAgICB9LFxyXG5cclxuICAvLyAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gIC8vICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCAnJylcclxuICAvLyAgICAgICBsZXQgdXJsID0gdmFsdWUudXJsICYmIHZhbHVlLnVybC5yZXBsYWNlKC9cXHMvZywgJycpXHJcbiAgLy8gICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaV0gPSB2YWx1ZVxyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJlxyXG4gIC8vICAgICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAvLyAgICAgICAgICAgICBtZXNzYWdlOiAn5ZCN56ew5oiW6ZO+5o6l5LiN6IO95Li656m677yBJyxcclxuICAvLyAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgLy8gICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAvLyAgICAgICAgICAgfSlcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBjYW5jZWxFZGl0OiAoKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBmaWxlU2VsZWN0OiAodmFsdWUsIGkpID0+IHtcclxuICAvLyAgICAgICBsZXQgZmlsZUVsbSA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXVxyXG4gIC8vICAgICAgIGZpbGVFbG0uY2xpY2soKVxyXG4gIC8vICAgICAgIGZpbGVFbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAvLyAgICAgICBmaWxlRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBmaWxlU2VsZWN0ID0gZXZlbnQgPT4ge1xyXG4gIC8vICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgLy8gICAgICAgbGV0IHRkID0gaXRlbVtcclxuICAvLyAgICAgICAgIGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2luZGV4JylcclxuICAvLyAgICAgICBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAvLyAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgLy8gICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gbnVsbFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgLy8gICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgLy8gICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgLy8gICAgICAgICBjb250aW51ZVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgLy8gICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gIC8vICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcclxuICAvLyAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gIC8vICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gIC8vICAgICAgICAgICBicmVha1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IGF0dHJpYnV0ZUdvb2RzKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudFxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IGF0dHJpYnV0ZUdvb2RzKHYpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCA9IHZcclxuICAvLyB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVMYWJlbCh0aGF0KSB7XHJcbiAgICBsZXQgaGVpZ2h0XHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGF0LnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0ID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHRcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgIGxuZzogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICBsYXQ6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSkgKyB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgbGF0OiB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdFxyXG4gICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgIGxhdDogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgYWx0OiBoZWlnaHRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LFxyXG4gICAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHRcclxuICAgICAgXSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIGdyb3VuZDogZ3JvdW5kXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBpZiAodGhhdC5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQucmVuZXdQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5KSxcclxuICAgICAgICB3aWR0aDogdGhhdC5vcHRpb25zLndpZHRoLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IGdyb3VuZCxcclxuICAgICAgICAvLyBtYXRlcmlhbDogdGhhdC5nZXRNYXRlcmlhbCh0aGF0Lm9wdGlvbnMuY29sb3IsIHRoYXQub3B0aW9ucy50eXBlKSxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5vcmlXaWR0aCA9IHRoYXQub3B0aW9ucy53aWR0aFxyXG4gICAgdGhhdC5qdWRnZUxpbmUodGhhdC5lbnRpdHksIHRoYXQub3B0aW9ucylcclxuXHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGF0Lm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhhdC5pbnB1dFNwZWVkXHJcbiAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoYXQuZ2V0TWF0ZXJpYWwoXHJcbiAgICAgIHRoYXQub3B0aW9ucy5jb2xvcixcclxuICAgICAgdGhhdC5vcHRpb25zLnR5cGUsXHJcbiAgICAgIHRoYXQuZW50aXR5LFxyXG4gICAgICBwYXJhbXNcclxuICAgIClcclxuXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgIEN1cnZlbGluZU9iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgLy8gdGhhdC5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zTG5nTGF0ID0gcG9zaXRpb25zXHJcbiAgICB0aGF0LnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgLy8gdGhhdC5vcHRpb25zLmxlbmd0aEJ5TWV0ZXIgPSB0aGF0LmNvbXB1dGVEaXN0YW5jZTIodGhhdC5zbW9vdGhIYW5kbGUocG9zaXRpb25zKSwgMiwgZ3JvdW5kKVxyXG4gICAgLy8gdGhhdC5sZW5ndGhVbml0ID0gdGhhdC5vcHRpb25zWydsZW5ndGgtdW5pdCddXHJcbiAgICAvLyBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgLy8gaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcbiAgICAvLyAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGF0LmNvbXB1dGVEaXN0YW5jZShcclxuICAgICAgdGhhdC5zbW9vdGhIYW5kbGUocG9zaXRpb25zKSxcclxuICAgICAgMixcclxuICAgICAgdGhhdC5vcHRpb25zLndvcmRzTmFtZVxyXG4gICAgKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgIHRoYXQubGVuZ3RoQnlNZXRlciA9IHJlc1xyXG4gICAgICB0aGF0Lmxlbmd0aENoYW5nZUNhbGxCYWNrICYmIHRoYXQubGVuZ3RoQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfSlcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKHRoaXMub3B0aW9ucy5ub3NlVG9UYWlsKSB7XHJcbiAgICAvLyAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgLy8gICAgIGFycmF5LnB1c2goeyBsbmc6IGZyb21EZWdyZWVzQXJyYXlbaV0sIGxhdDogZnJvbURlZ3JlZXNBcnJheVtpICsgMV0gfSlcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuZml0X2xlbmd0aCA9IHRvb2wuY29tcHV0ZURpc3RhbmNlMihhcnJheSlcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuZml0X2xlbmd0aCA9IHRvb2wuY29tcHV0ZURpc3RhbmNlMihwb3NpdGlvbnMpXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLmZpdF9sZW5ndGhfdW5pdCA9PT0gJ2ttJykge1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuZml0X2xlbmd0aCA9IHRoaXMub3B0aW9ucy5maXRfbGVuZ3RoIC8gMTAwMFxyXG4gICAgLy8gfVxyXG5cclxuICAgIGxldCBzY2VuZSA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZVxyXG4gIH1cclxuICBqdWRnZUxpbmUoZW50aXR5LCBuZXdQYXJhbSkge1xyXG4gICAgaWYgKCFlbnRpdHkucG9seWxpbmUub3JpUmVwZWF0KSB7XHJcbiAgICAgIGxldCBwYXJhbSA9IHtcclxuICAgICAgICBjb2xvcjogbmV3UGFyYW0uY29sb3IsXHJcbiAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGAvaW1nL2Fycm93LzEucG5nYCxcclxuICAgICAgICBzcGFjZTogbmV3UGFyYW0uc3BhY2UsXHJcbiAgICAgICAgc3BlZWQ6IG5ld1BhcmFtLnNwZWVkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHBhcmFtLnNwZWVkID0gbmV3UGFyYW0ucm90YXRlID8gcGFyYW0uc3BlZWQgOiAwIC0gcGFyYW0uc3BlZWRcclxuXHJcbiAgICAgIGNvbnN0IGNhbnZhc0VsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjb25zdCBjdHggPSBjYW52YXNFbGUuZ2V0Q29udGV4dCgnMmQnKVxyXG4gICAgICBjb25zdCBteUltZyA9IG5ldyBJbWFnZSgpXHJcbiAgICAgIC8vIG15SW1nLnNyYyA9IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2Fycm93LzEucG5nJ1xyXG4gICAgICBteUltZy5zcmMgPSBwYXJhbS5pbWFnZVxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgICAgbXlJbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNhbnZhc0VsZS53aWR0aCA9IG15SW1nLndpZHRoICogKHBhcmFtLnNwYWNlICsgMSlcclxuICAgICAgICBjYW52YXNFbGUuaGVpZ2h0ID0gbXlJbWcuaGVpZ2h0XHJcblxyXG4gICAgICAgIGxldCBvcmlSZXBlYXQgPSB0aGF0LmdldFNjZWVuTGluZShlbnRpdHksIHBhcmFtLCBjYW52YXNFbGUpXHJcbiAgICAgICAgb3JpUmVwZWF0ICYmIChlbnRpdHkucG9seWxpbmUub3JpUmVwZWF0ID0gb3JpUmVwZWF0KVxyXG5cclxuXHJcbiAgICAgICAgdmFyIHBvc2l0aW9uUHJvcGVydHkgPSBlbnRpdHkucG9seWxpbmUucG9zaXRpb25zO1xyXG4gICAgICAgIHZhciBwb3NpdGlvbnMgPSBwb3NpdGlvblByb3BlcnR5LmdldFZhbHVlKHRoYXQuc2RrLnZpZXdlci5jbG9jay5jdXJyZW50VGltZSk7XHJcblxyXG4gICAgICAgIGlmICghQ2VzaXVtLmRlZmluZWQocG9zaXRpb25zKSkge1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxLjAsIDEuMCk7XHJcbiAgICAgICAgICAvLyByZXR1cm4gMS4wO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLSAxOyArK2kpIHtcclxuICAgICAgICAgIGRpc3RhbmNlICs9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvc2l0aW9uc1tpXSwgcG9zaXRpb25zW2kgKyAxXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcmVwZWF0WCA9IGRpc3RhbmNlIC8gZW50aXR5LnBvbHlsaW5lLndpZHRoLmdldFZhbHVlKCk7XHJcbiAgICAgICAgLy8g5qC55o2u5Zyw5Zu+57yp5pS+56iL5bqm6LCD5pW0cmVwZWF0WFxyXG4gICAgICAgIHZhciBjYW1lcmFIZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgICB2YXIgYm91bmRpbmdTcGhlcmUgPSBuZXcgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlKFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKC0xMDAwMDAwLCAwLCAwKSwgLy8g5Lit5b+D54K55Z2Q5qCHXHJcbiAgICAgICAgICA1MDAwMDAgLy8g5Y2K5b6E77yI6Led56a777yJXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W57uY5Zu+57yT5Yay5Yy655qE5a695bqm5ZKM6auY5bqm77yI6YCa5bi45piv5bGP5bmV55qE5YiG6L6o546H77yJXHJcbiAgICAgICAgdmFyIGRyYXdpbmdCdWZmZXJXaWR0aCA9IHRoYXQuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgdmFyIGRyYXdpbmdCdWZmZXJIZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgLy8g5L2/55SoIGdldFBpeGVsU2l6ZSDmlrnms5Xojrflj5bljIXlm7TnkIPlnKjlsY/luZXkuIrnmoTlg4/ntKDlpKflsI9cclxuICAgICAgICB2YXIgZ3JvdW5kUmVzb2x1dGlvbiA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5jYW1lcmEuZ2V0UGl4ZWxTaXplKGJvdW5kaW5nU3BoZXJlLCBkcmF3aW5nQnVmZmVyV2lkdGgsIGRyYXdpbmdCdWZmZXJIZWlnaHQpXHJcbiAgICAgICAgcmVwZWF0WCAqPSBncm91bmRSZXNvbHV0aW9uIC8gY2FtZXJhSGVpZ2h0IC8gKHBhcmFtLnNwYWNlICogKGNhbnZhc0VsZS53aWR0aCAvIGNhbnZhc0VsZS5oZWlnaHQgKiA1KSArIDEpO1xyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucG9seWxpbmUubWF0ZXJpYWwub3JpUmVwZWF0KSB7XHJcblxyXG4gICAgICAgIGlmICh0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gQ2VzaXVtLlNjZW5lTW9kZS5TQ0VORTNEKSB7XHJcbiAgICAgICAgICBsZXQgc3BlZWQgPSByZXBlYXRYIC8gZW50aXR5LnBvbHlsaW5lLm9yaVJlcGVhdFxyXG4gICAgICAgICAgZW50aXR5LnBvbHlsaW5lLm9yaVNwZWVkID0gc3BlZWRcclxuICAgICAgICAgIGVudGl0eS5wb2x5bGluZS5vcmlSZXBlYXRYID0gcmVwZWF0WFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgc2RrM2QgPSBnZXQzRFZpZXcoKVxyXG4gICAgICAgICAgbGV0IHNkazNkRW50aXR5ID0gc2RrM2Qudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhhdC5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgZW50aXR5LnBvbHlsaW5lLm9yaVNwZWVkID0gc2RrM2RFbnRpdHkucG9seWxpbmUub3JpU3BlZWRcclxuICAgICAgICAgIGVudGl0eS5wb2x5bGluZS5vcmlSZXBlYXRYID0gc2RrM2RFbnRpdHkucG9seWxpbmUub3JpUmVwZWF0WFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLyoq6I635Y+W5b2T5YmN5ruh5bGP5qiq57q/6YCf5bqmICovXHJcbiAgZ2V0U2NlZW5MaW5lKGVudGl0eSwgb3B0aW9ucywgY2FudmFzRWxlKSB7XHJcbiAgICBsZXQgcG9pbnQxID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0KVxyXG4gICAgbGV0IHBvaW50MiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMih0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMiwgdGhpcy5zZGsudmlld2VyLmNhbnZhcy5jbGllbnRIZWlnaHQpXHJcbiAgICAvLyB2YXIgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9pbnQxKVxyXG4gICAgLy8gdmFyIGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKHBvaW50MilcclxuXHJcbiAgICBsZXQgcmF5ID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvaW50MSk7XHJcbiAgICBsZXQgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuXHJcbiAgICBsZXQgcmF5MiA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb2ludDIpO1xyXG4gICAgbGV0IGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXkyLCB0aGlzLnNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgLy8gaWYgKCFjYXJ0ZXNpYW4xIHx8ICFjYXJ0ZXNpYW4yKSB7XHJcbiAgICAvLyAgIGxldCByYXkgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmdldFBpY2tSYXkocG9pbnQxKTtcclxuICAgIC8vICAgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuXHJcbiAgICAvLyAgIGxldCByYXkyID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvaW50Mik7XHJcbiAgICAvLyAgIGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXkyLCB0aGlzLnNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGNhcnRlc2lhbjEgJiYgY2FydGVzaWFuMikge1xyXG5cclxuXHJcbiAgICAgIHZhciBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGNhcnRlc2lhbjEsIGNhcnRlc2lhbjIpO1xyXG5cclxuICAgICAgdmFyIHJlcGVhdFggPSBkaXN0YW5jZSAvIGVudGl0eS5wb2x5bGluZS53aWR0aC5nZXRWYWx1ZSgpO1xyXG4gICAgICAvLyDmoLnmja7lnLDlm77nvKnmlL7nqIvluqbosIPmlbRyZXBlYXRYXHJcbiAgICAgIHZhciBjYW1lcmFIZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgdmFyIGJvdW5kaW5nU3BoZXJlID0gbmV3IENlc2l1bS5Cb3VuZGluZ1NwaGVyZShcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoLTEwMDAwMDAsIDAsIDApLCAvLyDkuK3lv4PngrnlnZDmoIdcclxuICAgICAgICA1MDAwMDAgLy8g5Y2K5b6E77yI6Led56a777yJXHJcbiAgICAgICk7XHJcblxyXG5cclxuICAgICAgLy8g6I635Y+W57uY5Zu+57yT5Yay5Yy655qE5a695bqm5ZKM6auY5bqm77yI6YCa5bi45piv5bGP5bmV55qE5YiG6L6o546H77yJXHJcbiAgICAgIHZhciBkcmF3aW5nQnVmZmVyV2lkdGggPSB0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoO1xyXG4gICAgICB2YXIgZHJhd2luZ0J1ZmZlckhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgLy8g5L2/55SoIGdldFBpeGVsU2l6ZSDmlrnms5Xojrflj5bljIXlm7TnkIPlnKjlsY/luZXkuIrnmoTlg4/ntKDlpKflsI9cclxuICAgICAgdmFyIGdyb3VuZFJlc29sdXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FtZXJhLmdldFBpeGVsU2l6ZShib3VuZGluZ1NwaGVyZSwgZHJhd2luZ0J1ZmZlcldpZHRoLCBkcmF3aW5nQnVmZmVySGVpZ2h0KVxyXG4gICAgICAvLyByZXBlYXRYICo9IGdyb3VuZFJlc29sdXRpb24gLyBjYW1lcmFIZWlnaHQgLyAoKG15SW1nLndpZHRoIC8gbXlJbWcuaGVpZ2h0ICogNSkgKyAxKTtcclxuICAgICAgaWYgKGdyb3VuZFJlc29sdXRpb24gPiA3MDApIHtcclxuICAgICAgICByZXBlYXRYICo9IGdyb3VuZFJlc29sdXRpb24gLyBjYW1lcmFIZWlnaHQgLyAob3B0aW9ucy5zcGFjZSAqIChjYW52YXNFbGUud2lkdGggLyBjYW52YXNFbGUuaGVpZ2h0ICogNSkgKyAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXBlYXRYID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUzRCkge1xyXG4gICAgICAgIHJldHVybiByZXBlYXRYXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHNkazNkID0gZ2V0M0RWaWV3KClcclxuICAgICAgICBsZXQgc2RrM2RFbnRpdHkgPSBzZGszZC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgcmV0dXJuIHNkazNkRW50aXR5LnBvbHlsaW5lLm9yaVJlcGVhdFhcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlIHRydWXmiZPlvIDvvIxmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+absue6v+WxnuaApycsXHJcbiAgICAgICAgbGVmdDogJzE4MHB4JyxcclxuICAgICAgICB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiBvcHRpb25zID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5sYWJlbC5wb3NpdGlvblswXSxcclxuICAgICAgICAgICAgbGF0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzFdLFxyXG4gICAgICAgICAgICBhbHQ6IHRoaXMubGFiZWwucG9zaXRpb25bMl1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiBzaG93ID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8g5LqM5qyh57yW6L6R5Zue6LCDXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLm5vc2VUb1RhaWwgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gMFxyXG4gICAgICAgICAgdGhpcy5ub2RlRWRpdCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgcG9seWxpbmUnXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgLy8gdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgICAgIC8vIHRoaXMuYXR0cmlidXRlR29vZHMgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRcclxuICAgICAgZnVuY3Rpb24gdGFiQ2xpY2soZSkge1xyXG4gICAgICAgIGlmIChlID09PSAnMicgfHwgZSA9PT0gMikgey8v54K55Ye757q/5p2h5qC35byPXHJcbiAgICAgICAgICBpZiAoMiA8IF90aGlzLm9wdGlvbnMudHlwZSAmJiBfdGhpcy5vcHRpb25zLnR5cGUgPCAxMykgey8v6LS05Zu+5Y+C5pWwXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpICYmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykgJiYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicyhcclxuICAgICAgICAncG9seWxpbmUtb2JqZWN0LWVkaXQtdGFicycsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHRoaXMuc2RrXHJcbiAgICAgIClcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYWJlbENvbG9yJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBleHRlbmRDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdleHRlbmRDb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuZXh0ZW5kQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVuZENvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVuZENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsTGluZUNvbG9yJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQnKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsQmFja2dyb3VuZENvbG9yRW5kJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpXHJcbiAgICAgIEV2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2xhYmVsQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMuZXh0ZW5kQ29sb3IgPSBbZXh0ZW5kQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IgPSBbbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgLy8gdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIC8vIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgICAvLyB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdhdHRyaWJ1dGUtc2VsZWN0LWJveCdcclxuICAgICAgICApWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgJy5hdHRyaWJ1dGUtc2VsZWN0JylcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5hbWVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn56m66Ze06ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnqbrpl7Tplb/luqYnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5oqV5b2x6ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmipXlvbHplb/luqYnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5Zyw6KGo6ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICflnLDooajplb/luqYnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG5cclxuICAgICAgICBsZXQgbmFtZURhdGFMZWdwT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdpbnB1dC1zZWxlY3QtdW5pdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5pbnB1dC1zZWxlY3QtdW5pdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKG5hbWVEYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgbmFtZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKG5hbWVEYXRhKVxyXG4gICAgICAgICAgbGV0IG5hbWVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy53b3Jkc05hbWUgPSBbbmFtZURhdGFMZWdwRWxtXVxyXG4gICAgICAgICAgbmFtZURhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLndvcmRzTmFtZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAobmFtZURhdGFbaV0udmFsdWUgPT09IG5hbWVEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIG5hbWVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShuYW1lRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuYW1lRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAobmFtZURhdGFbaV0udmFsdWUgPT09IG5hbWVEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3Jkc05hbWUgPSBuYW1lRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDljp/lp4vplb/luqbljZXkvY1cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+exsydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfljYPnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+WNg+exsydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcblxyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2lucHV0LXNlbGVjdC11bml0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmlucHV0LXNlbGVjdC11bml0JyxcclxuICAgICAgICAgIDFcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzFdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sZW5ndGhVbml0ID0gW3VuaXREYXRhTGVncEVsbV1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoVW5pdCA9IHVuaXREYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOaLn+WQiOmVv+W6puWNleS9jVxyXG4gICAgICAgIC8vIGxldCBmaXRVbml0RGF0YSA9IFtcclxuICAgICAgICAvLyAgIHtcclxuICAgICAgICAvLyAgICAgbmFtZTogJ+exsycsXHJcbiAgICAgICAgLy8gICAgIHZhbHVlOiAn57GzJ1xyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyAgIHtcclxuICAgICAgICAvLyAgICAgbmFtZTogJ+WNg+exsycsXHJcbiAgICAgICAgLy8gICAgIHZhbHVlOiAn5Y2D57GzJ1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIF1cclxuXHJcbiAgICAgICAgLy8gbGV0IGZpdFVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgIC8vICAgICAnaW5wdXQtc2VsZWN0LWZpdC11bml0LWJveCdcclxuICAgICAgICAvLyAgIClbMF0sXHJcbiAgICAgICAgLy8gICAnLmlucHV0LXNlbGVjdC1maXQtdW5pdCdcclxuICAgICAgICAvLyApXHJcbiAgICAgICAgLy8gaWYgKGZpdFVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgIC8vICAgZml0VW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKGZpdFVuaXREYXRhKVxyXG4gICAgICAgIC8vICAgbGV0IGZpdFVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgLy8gICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtZml0LXVuaXQnKVswXVxyXG4gICAgICAgIC8vICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAvLyAgIHRoaXMuX2VsbXMuZml0TGVuZ3RoVW5pdCA9IFtmaXRVbml0RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgLy8gICBmaXRVbml0RGF0YUxlZ3BFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnNbJ2ZpdC1sZW5ndGgtdW5pdCddXHJcbiAgICAgICAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGZpdFVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgIGlmIChmaXRVbml0RGF0YVtpXS52YWx1ZSA9PT0gZml0VW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gICAgICAgZml0VW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZpdFVuaXREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGZpdFVuaXREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXRVbml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vICAgICAgIGlmIChmaXRVbml0RGF0YVtpXS52YWx1ZSA9PT0gZml0VW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmZpdExlbmd0aFVuaXQgPSBmaXRVbml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgIC8vICAgICAgICAgYnJlYWtcclxuICAgICAgICAvLyAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgIH0pXHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBsZXQgbGluZVR5cGVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGxpbmVcIj48L2k+5a6e57q/JyxcclxuICAgICAgICAgICAgdmFsdWU6ICflrp7nur8nLFxyXG4gICAgICAgICAgICBrZXk6IDAsXHJcbiAgICAgICAgICAgIGljb246ICdsaW5lJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBkYXNoLWxpbmVcIj48L2k+6Jma57q/JyxcclxuICAgICAgICAgICAgdmFsdWU6ICfomZrnur8nLFxyXG4gICAgICAgICAgICBrZXk6IDEsXHJcbiAgICAgICAgICAgIGljb246ICdkYXNoLWxpbmUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGxpZ2h0LWxpbmVcIj48L2k+5rOb5YWJJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfms5vlhYknLFxyXG4gICAgICAgICAgICBrZXk6IDIsXHJcbiAgICAgICAgICAgIGljb246ICdsaWdodC1saW5lJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiB0YWlsLWxpbmVcIj48L2k+5bC+6L+55YWJ57q/JyxcclxuICAgICAgICAgICAgdmFsdWU6ICflsL7ov7nlhYnnur8nLFxyXG4gICAgICAgICAgICBrZXk6IDMsXHJcbiAgICAgICAgICAgIGljb246ICd0YWlsLWxpbmUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIG11bHQtdGFpbC1saW5lXCI+PC9pPuWkmuWwvui/ueWFiee6vycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5aSa5bC+6L+55YWJ57q/JyxcclxuICAgICAgICAgICAga2V5OiA0LFxyXG4gICAgICAgICAgICBpY29uOiAnbXVsdC10YWlsLWxpbmUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGZsb3ctZGFzaC1saW5lMVwiPjwvaT7mtYHliqjomZrnur8xJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjomZrnur8xJyxcclxuICAgICAgICAgICAga2V5OiA1LFxyXG4gICAgICAgICAgICBpY29uOiAnZmxvdy1kYXNoLWxpbmUxJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBmbG93LWRhc2gtbGluZTJcIj48L2k+5rWB5Yqo6Jma57q/MicsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rWB5Yqo6Jma57q/MicsXHJcbiAgICAgICAgICAgIGtleTogNixcclxuICAgICAgICAgICAgaWNvbjogJ2Zsb3ctZGFzaC1saW5lMidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmUxXCI+PC9pPua1geWKqOeureWktDEnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDEnLFxyXG4gICAgICAgICAgICBrZXk6IDcsXHJcbiAgICAgICAgICAgIGljb246ICdwaWMtbGluZTEnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lMlwiPjwvaT7mtYHliqjnrq3lpLQyJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQyJyxcclxuICAgICAgICAgICAga2V5OiA4LFxyXG4gICAgICAgICAgICBpY29uOiAncGljLWxpbmUyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTNcIj48L2k+5rWB5Yqo566t5aS0MycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0MycsXHJcbiAgICAgICAgICAgIGtleTogOSxcclxuICAgICAgICAgICAgaWNvbjogJ3BpYy1saW5lMydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmU0XCI+PC9pPua1geWKqOeureWktDQnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDQnLFxyXG4gICAgICAgICAgICBrZXk6IDEwLFxyXG4gICAgICAgICAgICBpY29uOiAncGljLWxpbmU0J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTVcIj48L2k+5rWB5Yqo566t5aS0NScsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0NScsXHJcbiAgICAgICAgICAgIGtleTogMTEsXHJcbiAgICAgICAgICAgIGljb246ICdwaWMtbGluZTUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lNlwiPjwvaT7mtYHliqjnrq3lpLQ2JyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQ2JyxcclxuICAgICAgICAgICAga2V5OiAxMixcclxuICAgICAgICAgICAgaWNvbjogJ3BpYy1saW5lNidcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IGxpbmVUeXBlRGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2lucHV0LXNlbGVjdC1saW5lLXR5cGUtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuaW5wdXQtc2VsZWN0LWxpbmUtdHlwZSdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGxpbmVUeXBlRGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAgIGxpbmVUeXBlRGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2gobGluZVR5cGVEYXRhKVxyXG5cclxuICAgICAgICAgIGxldCBpQWN0aXZlRWxtMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKVxyXG4gICAgICAgICAgaUFjdGl2ZUVsbTIuY2xhc3NOYW1lID0gJ2ljb24gaWNvbi1hY3RpdmUnXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtbGluZS10eXBlJylbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY3lfZGF0YWxpc3QnKVswXS5hcHBlbmRDaGlsZChpQWN0aXZlRWxtMilcclxuXHJcbiAgICAgICAgICBsZXQgbGluZVR5cGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtbGluZS10eXBlJylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxpbmVUeXBlID0gW2xpbmVUeXBlRGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVUeXBlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAobGluZVR5cGVEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLnR5cGUpIHtcclxuICAgICAgICAgICAgICBsaW5lVHlwZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGxpbmVUeXBlRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBsaW5lVHlwZURhdGFMZWdwRWxtLnZhbHVlID0gbGluZVR5cGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgaUFjdGl2ZUVsbTIuY2xhc3NOYW1lID0gYGljb24gaWNvbi1hY3RpdmUgJHtsaW5lVHlwZURhdGFbaV0uaWNvbn1gXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGluZVR5cGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lVHlwZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAobGluZVR5cGVEYXRhW2ldLnZhbHVlID09PSBsaW5lVHlwZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVUeXBlID0gbGluZVR5cGVEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgaUFjdGl2ZUVsbTIuY2xhc3NOYW1lID0gYGljb24gaWNvbi1hY3RpdmUgJHtsaW5lVHlwZURhdGFbaV0uaWNvbn1gXHJcblxyXG4gICAgICAgICAgICAgICAgLy/mjqfliLblj4LmlbDmmL7pmpBcclxuICAgICAgICAgICAgICAgIGlmICgyIDwgdGhpcy5saW5lVHlwZSAmJiB0aGlzLmxpbmVUeXBlIDwgMTMpIHsvL+i0tOWbvuWPguaVsFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykuc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpICYmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKDIgPCB0aGlzLmxpbmVUeXBlICYmIHRoaXMubGluZVR5cGUgPCA1KSB7Ly/lsL7ov7nlj4LmlbBcclxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVsxXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVsxXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgICAgbGV0IGhlaWdodEVsbSA9IGhlaWdodEJveEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRDb25maXJtRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWNvbmZpcm0nKVswXVxyXG4gICAgICAgIGhlaWdodEVsbS52YWx1ZSA9IDEwXHJcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAgICBrZXk6ICcwJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICAgIGtleTogJzEnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgICAga2V5OiAnMicsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdoZWlnaHQtbW9kZS1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGhlaWdodE1vZGVPYmplY3QpIHtcclxuICAgICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1tb2RlJylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS5rZXkgPT0gdGhpcy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0ID0gaGVpZ2h0RWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCA9IGhlaWdodEJveEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gPSBoZWlnaHRDb25maXJtRWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgPSBoZWlnaHRNb2RlT2JqZWN0XHJcblxyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCA9IE51bWJlcigodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdFtpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdGFibGVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NwYXRpYWwtaW5mby10YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRCb2R5RWxtID0gdGFibGVFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sbmcgPSBbXVxyXG4gICAgICAgIHRoaXMuX2VsbXMubG5nSW5wdXQgPSBbXVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGF0ID0gW11cclxuICAgICAgICB0aGlzLl9lbG1zLmxhdElucHV0ID0gW11cclxuICAgICAgICB0aGlzLl9lbG1zLmFsdCA9IFtdXHJcbiAgICAgICAgdGhpcy5fZWxtcy5hbHRJbnB1dCA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyJ1xyXG4gICAgICAgICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj4ke2kgKyAxfTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbG5nIGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbGF0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgYWx0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgYFxyXG4gICAgICAgICAgbGV0IGxuZ0JveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xuZycpWzBdXHJcbiAgICAgICAgICBsZXQgbG5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBsbmcuaW5uZXJIVE1MID0gKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgICAgbGV0IGxuZ0lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgbG5nSW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgbG5nSW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBsbmdJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBsbmdJbnB1dC5taW4gPSAtMTgwXHJcbiAgICAgICAgICBsbmdJbnB1dC5tYXggPSAxODBcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgICAgbGV0IGxhdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhdCcpWzBdXHJcbiAgICAgICAgICBsZXQgbGF0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0KVxyXG4gICAgICAgICAgbGV0IGxhdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgbGF0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgbGF0SW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBsYXRJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBsYXRJbnB1dC5taW4gPSAtOTBcclxuICAgICAgICAgIGxhdElucHV0Lm1heCA9IDkwXHJcbiAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBhbHRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbHQnKVswXVxyXG4gICAgICAgICAgbGV0IGFsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgYWx0LmlubmVySFRNTCA9ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkudG9GaXhlZCgyKVxyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIGxldCBhbHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGFsdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGFsdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgYWx0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgYWx0SW5wdXQubWluID0gLTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0Lm1heCA9IDk5OTk5OTk5OVxyXG4gICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSAodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpLnRvRml4ZWQoMilcclxuXHJcbiAgICAgICAgICBsbmdCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nSW5wdXQpXHJcbiAgICAgICAgICAgIGxuZ0lucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyA9IE51bWJlcihOdW1iZXIobG5nSW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxuZy5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCwgZnJvbURlZ3JlZXNBcnJheVsyXV1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgbGF0Qm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsYXRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdElucHV0KVxyXG4gICAgICAgICAgICBsYXRJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsYXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsYXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQgPSBOdW1iZXIoTnVtYmVyKGxhdElucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIGZyb21EZWdyZWVzQXJyYXlbMl1dXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGFsdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0SW5wdXQpXHJcbiAgICAgICAgICAgIGFsdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCA9IE51bWJlcihOdW1iZXIoYWx0SW5wdXQudmFsdWUpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdC50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCwgZnJvbURlZ3JlZXNBcnJheVsyXV1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sbmcucHVzaChsbmcpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxuZ0lucHV0LnB1c2gobG5nSW5wdXQpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhdC5wdXNoKGxhdClcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGF0SW5wdXQucHVzaChsYXRJbnB1dClcclxuICAgICAgICAgIHRoaXMuX2VsbXMuYWx0LnB1c2goYWx0KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5hbHRJbnB1dC5wdXNoKGFsdElucHV0KVxyXG4gICAgICAgICAgdEJvZHlFbG0uYXBwZW5kQ2hpbGQodHIpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOW5s+a7keWkhOeQhlxyXG4gIHNtb290aEhhbmRsZShwb3NpdGlvbnMpIHtcclxuICAgIGxldCBuZXdQb3NpdGlvbnMgPSBbXVxyXG4gICAgbGV0IHRpbWUgPSBbXVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2goXHJcbiAgICAgICAgcG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICBwb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgIHBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgKVxyXG4gICAgICB0aW1lLnB1c2goaSAvIChwb3NpdGlvbnMubGVuZ3RoIC0gMSkpXHJcbiAgICB9XHJcbiAgICBsZXQgc3BsaW5lID0gbmV3IENlc2l1bS5DYXRtdWxsUm9tU3BsaW5lKHtcclxuICAgICAgdGltZXM6IHRpbWUsXHJcbiAgICAgIHBvaW50czogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheUhlaWdodHMpXHJcbiAgICB9KVxyXG4gICAgbGV0IGxlbmd0aCA9IHBvc2l0aW9ucy5sZW5ndGggKiAyMFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGNhcnRlc2lhbjMgPSBzcGxpbmUuZXZhbHVhdGUoaSAvIGxlbmd0aClcclxuICAgICAgbmV3UG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4zLCB0aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1Bvc2l0aW9uc1xyXG4gIH1cclxuXHJcbiAgLy8g5pu05paw5Z2Q5qCHXHJcbiAgcmVuZXdQb3NpdGlvbnMocG9zaXRpb25zQXJyYXksIGNkKSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwb3NpdGlvbnNBcnJheSkpXHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBsZXQgaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgaWYgKHRoaXMuX2lzTm9kZUVkaXQpIHtcclxuICAgICAgaGVpZ2h0TW9kZSA9IDBcclxuICAgIH1cclxuICAgIHN3aXRjaCAoaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KSlcclxuICAgICAgICAgIHBvc2l0aW9uc1tpXS5hbHQgPSBoZWlnaHQgPyBOdW1iZXIoKHBvc2l0aW9uc1tpXS5hbHQgKyBOdW1iZXIoaGVpZ2h0KSkudG9GaXhlZCgyKSkgOiBOdW1iZXIoKHBvc2l0aW9uc1tpXS5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGxldCBuZXdQb3NpdGlvbnNcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgJiZcclxuICAgICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgIT09ICdmYWxzZSdcclxuICAgICkge1xyXG4gICAgICBuZXdQb3NpdGlvbnMgPSBbLi4ucG9zaXRpb25zLCBwb3NpdGlvbnNbMF1dXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdQb3NpdGlvbnMgPSBbLi4ucG9zaXRpb25zXVxyXG4gICAgfVxyXG4gICAgbmV3UG9zaXRpb25zID0gdGhpcy5zbW9vdGhIYW5kbGUobmV3UG9zaXRpb25zKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdQb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gICAgICAgIG5ld1Bvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgbmV3UG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICBuZXdQb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8g6K6h566X6ZW/5bqmXHJcbiAgICAvLyBsZXQgYXJyYXkgPSBbXVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAvLyAgIGFycmF5LnB1c2goe1xyXG4gICAgLy8gICAgIGxuZzogZnJvbURlZ3JlZXNBcnJheVtpXSxcclxuICAgIC8vICAgICBsYXQ6IGZyb21EZWdyZWVzQXJyYXlbaSArIDFdLFxyXG4gICAgLy8gICAgIGFsdDogZnJvbURlZ3JlZXNBcnJheVtpICsgMl1cclxuICAgIC8vICAgfSlcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMub3B0aW9ucy5maXRMZW5ndGhCeU1ldGVyID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFxyXG4gICAgLy8gICBhcnJheSxcclxuICAgIC8vICAgMixcclxuICAgIC8vICAgZ3JvdW5kXHJcbiAgICAvLyApXHJcbiAgICAvLyB0aGlzLmZpdExlbmd0aFVuaXQgPSB0aGlzLm9wdGlvbnNbJ2ZpdC1sZW5ndGgtdW5pdCddXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMubGVuZ3RoQnlNZXRlciA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMih0aGlzLnNtb290aEhhbmRsZShwb3NpdGlvbnMpLCAyLCBncm91bmQpXHJcbiAgICAvLyB0aGlzLmxlbmd0aFVuaXQgPSB0aGlzLm9wdGlvbnNbJ2xlbmd0aC11bml0J11cclxuXHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgJiZcclxuICAgICAgICB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbCAhPT0gJ2ZhbHNlJykgfHxcclxuICAgICAgKHRoaXMub3B0aW9ucy5zbW9vdGggJiYgdGhpcy5vcHRpb25zLnNtb290aCAhPT0gJ2ZhbHNlJylcclxuICAgICkge1xyXG4gICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpICs9IDMpIHtcclxuICAgICAgICBhcnJheS5wdXNoKHtcclxuICAgICAgICAgIGxuZzogZnJvbURlZ3JlZXNBcnJheVtpXSxcclxuICAgICAgICAgIGxhdDogZnJvbURlZ3JlZXNBcnJheVtpICsgMV0sXHJcbiAgICAgICAgICBhbHQ6IGZyb21EZWdyZWVzQXJyYXlbaSArIDJdXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLm9wdGlvbnMuZml0TGVuZ3RoQnlNZXRlciA9IHRoaXMuY29tcHV0ZURpc3RhbmNlKFxyXG4gICAgICAvLyAgIGFycmF5LFxyXG4gICAgICAvLyAgIDIsXHJcbiAgICAgIC8vICAgZ3JvdW5kXHJcbiAgICAgIC8vIClcclxuICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICB0aGlzLmNvbXB1dGVEaXN0YW5jZShcclxuICAgICAgICBhcnJheSxcclxuICAgICAgICAyLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy53b3Jkc05hbWVcclxuICAgICAgKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgX3RoaXMubGVuZ3RoQnlNZXRlciA9IHJlc1xyXG4gICAgICAgIHRoaXMubGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgICAgY2QgJiYgY2QoKVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICB0aGlzLmNvbXB1dGVEaXN0YW5jZShcclxuICAgICAgICBfdGhpcy5zbW9vdGhIYW5kbGUocG9zaXRpb25zKSxcclxuICAgICAgICAyLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy53b3Jkc05hbWVcclxuICAgICAgKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgX3RoaXMubGVuZ3RoQnlNZXRlciA9IHJlc1xyXG4gICAgICAgIHRoaXMubGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgICAgY2QgJiYgY2QoKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tRGVncmVlc0FycmF5XHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlpJrovrnlvaLvvIjnur/mianlsZXvvIlcclxuICByZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSkge1xyXG4gICAgbGV0IGxpbmVQb3NpdGlvbnMgPSBbXVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5leHRlbmQgJiYgdGhpcy5vcHRpb25zLmV4dGVuZCAhPT0gJ2ZhbHNlJykge1xyXG4gICAgICBsZXQgb3V0ZXJIb2xlID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgICAgbGluZVBvc2l0aW9ucy5wdXNoKFtmcm9tRGVncmVlc0FycmF5W2ldLCBmcm9tRGVncmVlc0FycmF5W2kgKyAxXV0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxpbmVzdHJpbmcgPSB0dXJmLmxpbmVTdHJpbmcobGluZVBvc2l0aW9ucylcclxuICAgICAgbGV0IGJ1ZmZlcmVkID0gdHVyZi5idWZmZXIoXHJcbiAgICAgICAgbGluZXN0cmluZyxcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kV2lkdGggLyAxMDAwLFxyXG4gICAgICAgIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9XHJcbiAgICAgIClcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBvdXRlckhvbGUucHVzaChcclxuICAgICAgICAgIGJ1ZmZlcmVkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdW2ldWzBdLFxyXG4gICAgICAgICAgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1baV1bMV1cclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhvbGVzID0gW10gLy8g5a2UXHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV0ubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgIGFycmF5LnB1c2goXHJcbiAgICAgICAgICAgIGJ1ZmZlcmVkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dWzBdLFxyXG4gICAgICAgICAgICBidWZmZXJlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVttXVsxXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBob2xlcy5wdXNoKHsgcG9zaXRpb25zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGFycmF5KSB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24gPSBuZXcgQ2VzaXVtLlBvbHlnb25HcmFwaGljcyh7XHJcbiAgICAgICAgaGllcmFyY2h5OiB7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkob3V0ZXJIb2xlKSxcclxuICAgICAgICAgIGhvbGVzOiBob2xlc1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmV4dGVuZENvbG9yKVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbiA9IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5saW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy53aWR0aFxyXG4gICAgdGhpcy5saW5lVHlwZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnR5cGVcclxuICAgIHRoaXMubm9zZVRvVGFpbCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5vc2VUb1RhaWxcclxuICAgIHRoaXMuZXh0ZW5kID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZXh0ZW5kXHJcbiAgICB0aGlzLmV4dGVuZFdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZXh0ZW5kV2lkdGhcclxuICAgIHRoaXMuZXh0ZW5kQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5leHRlbmRDb2xvclxyXG4gICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5sYWJlbEZvbnRTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgdGhpcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gICAgdGhpcy5sYWJlbE5lYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgICB0aGlzLmxhYmVsRmFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICB0aGlzLmxhYmVsTGluZVdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgICB0aGlzLmxhYmVsUGl4ZWxPZmZzZXQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgICAvLyB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAvLyB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICAgIC8vIHRoaXMuYXR0cmlidXRlR29vZHMgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRcclxuICAgIHRoaXMucm90YXRlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm90YXRlXHJcbiAgICB0aGlzLnNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3BlZWRcclxuICAgIC8vIHRoaXMuZGFzaFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5kYXNoU2l6ZVxyXG4gICAgdGhpcy5zcGFjZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNwYWNlXHJcbiAgICAvLyB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAvLyB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG5cclxuICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlXHJcblxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuXHJcbiAgICAvLyBsZXQgaGVpZ2h0XHJcbiAgICAvLyBpZiAodGhpcy5ncm91bmQpIHtcclxuICAgIC8vICAgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgIC8vICAgICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgLy8gICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgIC8vICAgfSlcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAvLyAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAvLyAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAvLyAgIGFsdDogaGVpZ2h0XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLFxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LFxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XHJcbiAgICAvLyBdXHJcbiAgfVxyXG5cclxuICAvLyBfYWRkUnIoKSB7XHJcbiAgLy8gICBpZiAoXHJcbiAgLy8gICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgLy8gICAgICAgJ3ZyX2FkZCdcclxuICAvLyAgICAgKVswXS52YWx1ZVxyXG4gIC8vICAgKSB7XHJcbiAgLy8gICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5wdXNoKHtcclxuICAvLyAgICAgICBuYW1lOiAn5YWo5pmv5Zu+JyxcclxuICAvLyAgICAgICB1cmw6IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgLy8gICAgICAgICAndnJfYWRkJ1xyXG4gIC8vICAgICAgIClbMF0udmFsdWVcclxuICAvLyAgICAgfSlcclxuICAvLyAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAvLyAgICAgICAndnJfYWRkJ1xyXG4gIC8vICAgICApWzBdLnZhbHVlID0gJydcclxuICAvLyAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgdGhpcy5EaWFsb2cuY2xpY2tBZGRWciAmJiB0aGlzLkRpYWxvZy5jbGlja0FkZFZyKClcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIGFkZEF0dHJpYnV0ZVJyKHZyKSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgLy8gICAgIG5hbWU6ICflhajmma/lm74nLFxyXG4gIC8vICAgICB1cmw6IHZyXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldykge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmNlbnRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuY2VudGVyIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc3RhcnQpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnN0YXJ0IH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgaGVpZ2h0XHJcbiAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSlcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgICAgIGhlaWdodCArIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICAvLyB2YXIgdWUgPSBVRS5nZXRFZGl0b3IoJ2FwcCcpO1xyXG4gICAgcmljaFRleHQub3BlbihcclxuICAgICAgdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudFxyXG4gICAgKVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gY29udGVudCA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBjb250ZW50XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzdGF0aWMgbm9kZUVkaXQyKHRoYXQsIGNiID0gKCkgPT4geyB9KSB7XHJcbiAgLy8gICB0aGF0LnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgLy8gICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAvLyAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAvLyAgICAgdGhhdC50aXAgPSBuZXcgTW91c2VUaXAoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcsIHRoYXQuc2RrKVxyXG4gIC8vICAgICB0aGF0LmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgLy8gICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcbiAgLy8gICAgIGxldCBzZWxlY3RQb2ludFxyXG4gIC8vICAgICBsZXQgb3JpZ2luYWxQb3NpdGlvblxyXG4gIC8vICAgICBsZXQgbmV3cG9zaXRpb25zID0gW11cclxuICAvLyAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goXHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgbmV3cG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuXHJcbiAgLy8gICAgIHRoYXQuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gIC8vICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gIC8vICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgLy8gICAgICAgICAgIHRoYXQuc2RrLnZpZXdlclxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdXHJcbiAgLy8gICAgICAgICBsZXQgZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgLy8gICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAvLyAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gIC8vICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZyxcclxuICAvLyAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQsXHJcbiAgLy8gICAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0XHJcbiAgLy8gICAgICAgICAgICksXHJcbiAgLy8gICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gIC8vICAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAvLyAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gIC8vICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHNlbGVjdFBvaW50LmluZGV4LCAwLCBlbnRpdHkpXHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShcclxuICAvLyAgICAgICAgICAgc2VsZWN0UG9pbnQuaW5kZXgsXHJcbiAgLy8gICAgICAgICAgIDAsXHJcbiAgLy8gICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdXHJcbiAgLy8gICAgICAgICApXHJcbiAgLy8gICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQucmVuZXdQb3NpdGlvbnModGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAvLyAgICAgICAgIHRoYXQucmVuZXdQb2x5Z29uKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMubGVuZ3RoQnlNZXRlciA9IHRoYXQuY29tcHV0ZURpc3RhbmNlMihcclxuICAvLyAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucyxcclxuICAvLyAgICAgICAgICAgMixcclxuICAvLyAgICAgICAgICAgdGhhdC5ncm91bmRcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIHRoYXQubGVuZ3RoVW5pdCA9IHRoYXQub3B0aW9uc1snbGVuZ3RoLXVuaXQnXVxyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB2YXIgcGljayA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gIC8vICAgICAgICAgaWYgKFxyXG4gIC8vICAgICAgICAgICBwaWNrICYmXHJcbiAgLy8gICAgICAgICAgIHBpY2suaWQgJiZcclxuICAvLyAgICAgICAgICAgcGljay5pZC5uYW1lICYmXHJcbiAgLy8gICAgICAgICAgIHBpY2suaWQubmFtZSA9PT0gJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnXHJcbiAgLy8gICAgICAgICApIHtcclxuICAvLyAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBwaWNrLmlkXHJcbiAgLy8gICAgICAgICAgIHRoYXQubm9kZVBvaW50cy5zcGxpY2UocGljay5pZC5pbmRleCwgMSlcclxuICAvLyAgICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShwaWNrLmlkKVxyXG4gIC8vICAgICAgICAgICB0aGF0LnRpcC5zZXRfdGV4dCgn5bem6ZSu5byA5aeL77yM5Y+z6ZSu57uT5p2f77yMQ1RSTCvlj7PplK7mkqTplIAnKVxyXG4gIC8vICAgICAgICAgICBvcmlnaW5hbFBvc2l0aW9uID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAvLyAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgLy8gICAgICAgICAgICAgdGhhdC5zZGsudmlld2VyXHJcbiAgLy8gICAgICAgICAgIClcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pXHJcblxyXG4gIC8vICAgICB0aGF0LmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IG9yaWdpbmFsUG9zaXRpb25cclxuICAvLyAgICAgICAgIGNiKG51bGwsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgLy8gICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gIC8vICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goXHJcbiAgLy8gICAgICAgICAgIHBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgLy8gICAgICAgICAgIHBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgLy8gICAgICAgICAgIHBvc2l0aW9uc1tpXS5hbHRcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgbmV3cG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgLy8gICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgLy8gICAgICAgKVxyXG4gIC8vICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQubm9kZVBvaW50c1tpXSlcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuICAvLyAgICAgICB0aGF0LmV2ZW50LmRlc3Ryb3koKVxyXG4gIC8vICAgICAgIHRoYXQudGlwLmRlc3Ryb3koKVxyXG4gIC8vICAgICB9KVxyXG5cclxuICAvLyAgICAgdGhhdC5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoXHJcbiAgLy8gICAgICAgICAgIGNhcnRlc2lhbixcclxuICAvLyAgICAgICAgICAgdGhhdC5zZGsudmlld2VyXHJcbiAgLy8gICAgICAgICApXHJcbiAgLy8gICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gIC8vICAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gIC8vICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gIC8vICAgICAgICAgICAgIHBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgLy8gICAgICAgICAgICAgcG9zaXRpb25zW2ldLmxhdCxcclxuICAvLyAgICAgICAgICAgICBwb3NpdGlvbnNbaV0uYWx0XHJcbiAgLy8gICAgICAgICAgIClcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICAgIG5ld3Bvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKFxyXG4gIC8vICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgLy8gICAgICAgICApXHJcbiAgLy8gICAgICAgICBpZiAodGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAvLyAgICAgICAgICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAvLyAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAvLyAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAvLyAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gIC8vICAgICAgICAgICBdXHJcbiAgLy8gICAgICAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAvLyAgICAgICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gIC8vICAgICAgICAgICAgIGxhdDogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgLy8gICAgICAgICAgICAgYWx0OiB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHRoYXQudGlwLnNldFBvc2l0aW9uKFxyXG4gIC8vICAgICAgICAgY2FydGVzaWFuLFxyXG4gIC8vICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAvLyAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgIH0pXHJcblxyXG4gIC8vICAgICB0aGF0LmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAvLyAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMucG9wKClcclxuICAvLyAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoXHJcbiAgLy8gICAgICAgICAgIHRoYXQubm9kZVBvaW50c1t0aGF0Lm5vZGVQb2ludHMubGVuZ3RoIC0gMV1cclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIHRoYXQubm9kZVBvaW50cy5wb3AoKVxyXG4gIC8vICAgICAgICAgaWYgKHNlbGVjdFBvaW50LmluZGV4ID09PSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgICBpZiAodGhhdC5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV0pIHtcclxuICAvLyAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHRoYXQubm9kZVBvaW50c1tzZWxlY3RQb2ludC5pbmRleCAtIDFdXHJcbiAgLy8gICAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgICAgc2VsZWN0UG9pbnQuaW5kZXggPSAwXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pXHJcblxyXG4gIC8vICAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gIC8vICAgICAgIHJldHVybiBuZXdwb3NpdGlvbnNcclxuICAvLyAgICAgfSwgZmFsc2UpXHJcblxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBsZXQgZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgLy8gICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgLy8gICAgICAgICBpbmRleDogaSxcclxuICAvLyAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAvLyAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgLy8gICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gIC8vICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gIC8vICAgICAgICAgKSxcclxuICAvLyAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gIC8vICAgICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAvLyAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gIC8vICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gIC8vICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICAgdGhhdC5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBub2RlRWRpdChjZCkge1xyXG4gICAgaWYodGhpcy5faXNOb2RlRWRpdCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICBsZXQgbGFzdEhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgIHRoaXMuX2lzTm9kZUVkaXQgPSB0cnVlXHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSAwXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5fbGFzdEhlaWdodE1vZGUgJiYgdGhpcy5fbGFzdEhlaWdodE1vZGUgIT0gMCkge1xyXG4gICAgICAgIHRoaXMuX2xhc3RIZWlnaHRNb2RlID0gbGFzdEhlaWdodE1vZGVcclxuICAgICAgfVxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCA9IG5ldyBDb250cm9sbGVyKHRoaXMuc2RrKVxyXG5cclxuICAgICAgdGhpcy5fbm9kZUVkaXRDYWxsYmFjayA9IGNkXHJcbiAgICAgIGxldCBzZWxlY3RQb2ludFxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB2YXIgcGljayA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHBpY2sgJiZcclxuICAgICAgICAgIHBpY2suaWQgJiZcclxuICAgICAgICAgIHBpY2suaWQubmFtZSAmJlxyXG4gICAgICAgICAgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCdcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LnBvc2l0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF1cclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5jb250cm9sbGVyQ2FsbEJhY2sgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIGxuZzogcGFyYW1zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgIGxhdDogcGFyYW1zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgICAgICAgIGFsdDogcGFyYW1zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHBhcmFtcy5wb3NpdGlvblxyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxuZyAmJiAodGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHBhcmFtcy5wb3NpdGlvbi5sbmcudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdJbnB1dCAmJiAodGhpcy5fZWxtcy5sbmdJbnB1dFtzZWxlY3RQb2ludC5pbmRleF0udmFsdWUgPSBwYXJhbXMucG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0ICYmICh0aGlzLl9lbG1zLmxhdFtzZWxlY3RQb2ludC5pbmRleF0uaW5uZXJIVE1MID0gcGFyYW1zLnBvc2l0aW9uLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxhdElucHV0ICYmICh0aGlzLl9lbG1zLmxhdElucHV0W3NlbGVjdFBvaW50LmluZGV4XS52YWx1ZSA9IHBhcmFtcy5wb3NpdGlvbi5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5hbHQgJiYgKHRoaXMuX2VsbXMuYWx0W3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSBwYXJhbXMucG9zaXRpb24uYWx0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMuYWx0SW5wdXQgJiYgKHRoaXMuX2VsbXMuYWx0SW5wdXRbc2VsZWN0UG9pbnQuaW5kZXhdLnZhbHVlID0gcGFyYW1zLnBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBzZWxlY3RQb2ludC5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgICAgICBwYXJhbXMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IF9sYXN0SGVpZ2h0TW9kZSA9IHRoaXMuX2xhc3RIZWlnaHRNb2RlXHJcbiAgICAgICAgdGhpcy5fbGFzdEhlaWdodE1vZGUgPSBudWxsXHJcbiAgICAgICAgaWYgKF9sYXN0SGVpZ2h0TW9kZSAmJiBfbGFzdEhlaWdodE1vZGUgIT09IDAgJiYgX2xhc3RIZWlnaHRNb2RlICE9PSAnMCcpIHtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IF9sYXN0SGVpZ2h0TW9kZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcblxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuX25vZGVFZGl0Q2FsbGJhY2sgPSBudWxsXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgdGhpcy5fbm9kZUVkaXRDYWxsYmFjayAmJiB0aGlzLl9ub2RlRWRpdENhbGxiYWNrKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMsIHRoaXMubGVuZ3RoQnlNZXRlcilcclxuICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgfSwgZmFsc2UpXHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc05vZGVFZGl0ID0gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VOb2RlRWRpdCgpIHtcclxuICAgIHRoaXMuX2lzTm9kZUVkaXQgPSBmYWxzZVxyXG4gICAgbGV0IF9sYXN0SGVpZ2h0TW9kZSA9IHRoaXMuX2xhc3RIZWlnaHRNb2RlXHJcbiAgICB0aGlzLl9sYXN0SGVpZ2h0TW9kZSA9IG51bGxcclxuICAgIGlmKF9sYXN0SGVpZ2h0TW9kZSAmJiBfbGFzdEhlaWdodE1vZGUgIT09IDAgJiYgX2xhc3RIZWlnaHRNb2RlICE9PSAnMCcpIHtcclxuICAgICAgdGhpcy5oZWlnaHRNb2RlID0gX2xhc3RIZWlnaHRNb2RlXHJcbiAgICB9XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgJiYgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLl9ub2RlRWRpdENhbGxiYWNrID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwucmVtb3ZlKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiZcclxuICAgICAgICAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgIGByZ2JhKDI1NSwyNTUsMjU1LDAuOSlgXHJcbiAgICAgICAgKSlcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRpb25zLnBvc2l0aW9ucykpXHJcbiAgICAgIGxldCBwb3NpdGlvbnMyID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAvLyBsZXQgcG9zaXRpb25zMiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocG9zaXRpb25zKSlcclxuICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vICAgbGV0IGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NpdGlvbnMyW2ldLmxuZywgcG9zaXRpb25zMltpXS5sYXQpKVxyXG4gICAgICAvLyAgIHBvc2l0aW9uczJbaV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgLy8gICAgIHBvc2l0aW9uczJbaV0ubG5nLFxyXG4gICAgICAvLyAgICAgcG9zaXRpb25zMltpXS5sYXQsXHJcbiAgICAgIC8vICAgICBOdW1iZXIoKHBvc2l0aW9uczJbaV0uYWx0ICsgTnVtYmVyKGhlaWdodCkpLnRvRml4ZWQoMikpXHJcbiAgICAgIC8vICAgKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc11cclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uc1tpXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgcG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgIHBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICBwb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBjZW50ZXIgPSBwb3NpdGlvbnNbTWF0aC5mbG9vcihwb3NpdGlvbnMubGVuZ3RoIC8gMildXHJcbiAgICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGRpc3Bhcml0eS5wdXNoKHtcclxuICAgICAgICAgIHg6IGNlbnRlci54IC0gcG9zaXRpb25zW2ldLngsXHJcbiAgICAgICAgICB5OiBjZW50ZXIueSAtIHBvc2l0aW9uc1tpXS55LFxyXG4gICAgICAgICAgejogY2VudGVyLnogLSBwb3NpdGlvbnNbaV0uelxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBuZXdwb3NpdGlvbnM4NCA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgbmV3cG9zaXRpb25zODQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgbmV3UCA9IHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0uelxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICAgICAgbmV3UCxcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3M4NC5hbHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgLy8gbGV0IGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCkpXHJcbiAgICAgICAgICAvLyBwb3M4NC5hbHQgPSBOdW1iZXIoKHBvczg0LmFsdCArIE51bWJlcihoZWlnaHQpKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgLy8gbmV3UCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgLy8gICBwb3M4NC5sbmcsXHJcbiAgICAgICAgICAvLyAgIHBvczg0LmxhdCxcclxuICAgICAgICAgIC8vICAgcG9zODQuYWx0XHJcbiAgICAgICAgICAvLyApXHJcbiAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaChuZXdQKVxyXG4gICAgICAgICAgbmV3cG9zaXRpb25zODQucHVzaChwb3M4NClcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uODQgPSBuZXdwb3NpdGlvbnM4NFswXVxyXG4gICAgICAgIHBvc2l0aW9uczIgPSB0aGlzLnJlbmV3UG9zaXRpb25zKG5ld3Bvc2l0aW9uczg0KVxyXG4gICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCBwb3NpdGlvbjg0LmFsdF1cclxuICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICBsbmc6IHBvc2l0aW9uODQubG5nLFxyXG4gICAgICAgICAgbGF0OiBwb3NpdGlvbjg0LmxhdCxcclxuICAgICAgICAgIGFsdDogcG9zaXRpb244NC5hbHRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgbmV3cG9zaXRpb25zODQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgbmV3UCA9IHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0uelxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICAgICAgbmV3UCxcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3M4NC5hbHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gobmV3UClcclxuICAgICAgICAgIG5ld3Bvc2l0aW9uczg0LnB1c2gocG9zODQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbnNMbmdMYXQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3cG9zaXRpb25zODQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbiA9IG5ld3Bvc2l0aW9uczg0W2ldXHJcbiAgICAgICAgICBwb3NpdGlvbnNMbmdMYXQucHVzaChwb3NpdGlvbilcclxuXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxuZyAmJiAodGhpcy5fZWxtcy5sbmdbaV0uaW5uZXJIVE1MID0gcG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxuZ0lucHV0ICYmICh0aGlzLl9lbG1zLmxuZ0lucHV0W2ldLnZhbHVlID0gcG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhdCAmJiAodGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gcG9zaXRpb24ubGF0LnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhdElucHV0ICYmICh0aGlzLl9lbG1zLmxhdElucHV0W2ldLnZhbHVlID0gcG9zaXRpb24ubGF0LnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmFsdCAmJiAodGhpcy5fZWxtcy5hbHRbaV0uaW5uZXJIVE1MID0gcG9zaXRpb24uYWx0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmFsdElucHV0ICYmICh0aGlzLl9lbG1zLmFsdElucHV0W2ldLnZhbHVlID0gcG9zaXRpb24uYWx0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gcG9zaXRpb25zTG5nTGF0XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cy5wb3NpdGlvbnMgPSBwb3NpdGlvbnNMbmdMYXRcclxuXHJcbiAgICAgICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zTG5nTGF0ID0gcG9zaXRpb25zTG5nTGF0XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMsICgpPT57XHJcbiAgICAgICAgICBpZih0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgICAgKVxyXG4gICAgICAgIHRoaXMucmVuZXdQb2x5Z29uKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgICBwb3NpdGlvbnMyXHJcbiAgICAgICAgKVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5sYWJlbCB8fCAhdGhpcy5sYWJlbC5lbnRpdHkpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKFxyXG4gICAgICAgICAgYHJnYmEoMjU1LDI1NSwyNTUsMSlgXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKFxyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG5cclxuICAgICAgbGV0IGhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgaWYgKHRoaXMuX2lzTm9kZUVkaXQpIHtcclxuICAgICAgICBoZWlnaHRNb2RlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIHN3aXRjaCAoaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXlbMl1cclxuICAgICAgICAgIF1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgbGF0OiB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAgICAgICAgICAgYWx0OiBmcm9tRGVncmVlc0FycmF5WzJdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICAgIGFsdDogZnJvbURlZ3JlZXNBcnJheVsyXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZ1xyXG4gIH1cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcbiAgXHJcbiAgZ2V0IGxlbmd0aENoYW5nZUNhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aENoYW5nZUNhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBzZXQgbGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgKGNkKSB7XHJcbiAgICB0aGlzLl9sZW5ndGhDaGFuZ2VDYWxsQmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBzZXRESVYob3B0aW9ucyA9IHsgZG9taWQ6ICcnLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gb3B0aW9ucy54IHx8IG9wdGlvbnMueCA9PT0gMCA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSBvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwID8gb3B0aW9ucy55IDogMTBcclxuXHJcbiAgICBsZXQgcG9pbnRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb2ludHMucHVzaChbXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgXSlcclxuICAgIH1cclxuICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKHBvaW50cylcclxuICAgIGxldCBsZW5ndGggPSB0dXJmLmxlbmd0aChsaW5lLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSlcclxuICAgIGxldCBzbGljZWQgPSB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUsIDAsIGxlbmd0aCAvIDIsIHtcclxuICAgICAgdW5pdHM6ICdraWxvbWV0ZXJzJ1xyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgLi4uc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3NsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXVxyXG4gICAgKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihwZXJjZW50YWdlID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHxcclxuICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoXHJcbiAgICAgICAgICBzaXRlSW5mb1Bvc2l0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDdXJ2ZWxpbmVPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBcEJBO0FBQUE7QUFrQkE7QUFHQTtBQUNBO0FBQ0E7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFxSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBc0RBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBT0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0SEE7QUFBQTtBQUFBO0FBd0hBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBeHRCQTtBQUFBO0FBQUE7QUFBQTtBQTB0QkE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBM0RBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFFQTtBQXlCQTtBQUFBO0FBdEJBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUExR0E7QUFBQTtBQUFBO0FBQUE7QUE0R0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUF3T0E7QUFDQTtBQUFBO0FBbk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeDlEQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQWVBO0FBQUE7QUFaQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBSEE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF2REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQXkxREEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/CurvelineObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/EllipseObject/_element.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/EllipseObject/_element.js ***! - \************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRWxsaXBzZU9iamVjdC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9FbGxpcHNlT2JqZWN0L19lbGVtZW50LmpzP2MyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwJTtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDBweDtcIj7mipXlvbHpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlucHV0LXRleHRcIiByZWFkb25seT1cInJlYWRvbmx5XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJhcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlbGVjdC11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJjaXJjbGUtb2JqZWN0LWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLnqbrpl7Tkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaGVpZ2h0LW1vZGUtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7pq5jluqbmqKHlvI88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVpZ2h0LW1vZGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5a5YC857uf5LiA5aKe5YqgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBoZWlnaHRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZpcm0gaGVpZ2h0LWNvbmZpcm1cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCI+56Gu6K6kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlIHNwYXRpYWwtaW5mby10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue7j+W6pu+8iFjvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57qs5bqm77yIWe+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7pq5jluqbvvIha77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi6Z2i6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Z2i6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovrnnur/popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovrnnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OVwiIEBtb2RlbD1cImxpbmVXaWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+azqOmjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+etvumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBaUZBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/EllipseObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/EllipseObject/index.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/EllipseObject/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/EllipseObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 椭圆\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EllipseObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 创建椭圆\r\n * @param options {object} 圆属性\r\n * @param options.id {string} 标注id\r\n * @param options.name {string} 名称\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.center {object} 中心位置\r\n * @param options.color=\"rgba(255, 0, 0, 0.5)\" {string} 颜色\r\n * @param options.center.lng {object} 经度\r\n * @param options.center.lat {object} 维度\r\n * @param options.semiMinorAxis=10 {number} 短半轴长度\r\n * @param options.semiMajorAxis=20 {number} 长半轴长度\r\n * @param options.bearing=0 {number} 旋转角度\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(255, 0, 0, 1)\" {string} 边框颜色\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function EllipseObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, EllipseObject);\n _this2 = _callSuper(this, EllipseObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"rgba(255, 0, 0, 0.5)\";\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.semiMinorAxis = options.semiMinorAxis || options.semiMinorAxis === 0 ? options.semiMinorAxis : 10;\n _this2.options.semiMajorAxis = options.semiMajorAxis || options.semiMajorAxis === 0 ? options.semiMajorAxis : 20;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.center = options.center || {};\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n options.label = options.label || {};\n _this2._elms = {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.nodePoints = [];\n _this2.operate = {};\n _this2.Dialog = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n EllipseObject.create(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(EllipseObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(EllipseObject, [{\n key: \"type\",\n get: function get() {\n return 'EllipseObject';\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this3 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this3.options.heightMode = v || v == 0 ? v : 2;\n _this3.positionEditing = false;\n if (!_this3.entity) {\n return;\n }\n var heightModeName = '';\n _this3.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this3.renewPositions();\n _this3.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this3.positions), [_this3.positions[0], _this3.positions[1]]);\n _this3.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this3.positions);\n switch (_this3.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this3.label.ground = ground;\n _this3.entity.polyline.clampToGround = ground;\n _this3.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this3.entity.polygon.perPositionHeight = !ground ? true : false;\n _this3._elms.heightMode && (_this3._elms.heightMode.value = heightModeName);\n _this3._elms.heightModeObject && _this3._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.center.alt;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n if (!v || isNaN(Number(v))) {\n this.options.center.alt = 0;\n } else {\n this.options.center.alt = Number(Number(v).toFixed(2));\n }\n this.previous = null;\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positions);\n _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positions), [_this4.positions[0], _this4.positions[1]]);\n _this4.entity.polyline.clampToGround = !ground ? false : true;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this4.options.center.alt;\n });\n }\n }, {\n key: \"semiMinorAxis\",\n get: function get() {\n return this.options.semiMinorAxis;\n },\n set: function set(v) {\n this.options.semiMinorAxis = v;\n this.height = this.height;\n }\n }, {\n key: \"semiMajorAxis\",\n get: function get() {\n return this.options.semiMajorAxis;\n },\n set: function set(v) {\n this.options.semiMajorAxis = v;\n this.height = this.height;\n }\n }, {\n key: \"center\",\n get: function get() {\n return this.options.center;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.center = v;\n this.height = this.height;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this5.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this5.options.center.lat;\n });\n }\n }, {\n key: \"bearing\",\n get: function get() {\n return this.options.bearing;\n },\n set: function set(v) {\n this.options.bearing = v;\n this.height = this.height;\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n this.entity.polyline.width = this.lineWidth;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this7.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this7._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = _this8.options.line.width;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this12 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this12.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this12._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this13 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' circle';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('circle-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n EllipseObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this13.attributeLink = _this13.options.attribute.link.content;\n _this13.attributeVr = _this13.options.attribute.vr.content;\n _this13.cameraSelect && _this13.cameraSelect();\n _this13.goodsSelect && _this13.goodsSelect();\n var tagData = _this13.attributeSelect;\n var attributeElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this13.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this13.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this13.options['area-unit'];\n for (var _i2 = 0; _i2 < unitData.length; _i2++) {\n if (unitData[_i2].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i2].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < unitData.length; _i3++) {\n if (unitData[_i3].value === unitDataLegpElm.value) {\n _this13.areaUnit = unitData[_i3].value;\n break;\n }\n }\n });\n }\n var heightBoxElm = _this13._DialogObject._element.content.getElementsByClassName('height-box')[0];\n var heightElm = heightBoxElm.getElementsByClassName('height')[0];\n var heightConfirmElm = _this13._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (_this13.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n var heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n var heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (heightModeObject) {\n heightModeObject.legp_search(heightModeData);\n var heightModeDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n for (var _i4 = 0; _i4 < heightModeData.length; _i4++) {\n if (heightModeData[_i4].key == _this13.heightMode) {\n heightModeDataLegpElm.value = heightModeData[_i4].value;\n heightModeObject.legp_searchActive(heightModeData[_i4].value);\n break;\n }\n }\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < heightModeData.length; _i5++) {\n if (heightModeData[_i5].value === heightModeDataLegpElm.value) {\n _this13.heightMode = heightModeData[_i5].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this13.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n _this13._elms.height = heightElm;\n _this13._elms.heightBox = heightBoxElm;\n _this13._elms.heightMode = heightModeDataLegpElm;\n _this13._elms.heightConfirm = heightConfirmElm;\n _this13._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this13.operate.positionEditing) {\n _this13.positionEditing = false;\n _this13.height = _this13.height + Number(heightElm.value);\n } else {\n EllipseObject.closeNodeEdit(_this13);\n setTimeout(function () {\n _this13.height = _this13.height + Number(heightElm.value);\n }, 100);\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this13.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this13.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this13._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 33;\n break;\n case 32:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 33:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this14 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.semiMinorAxis = this.originalOptions.semiMinorAxis;\n this.semiMajorAxis = this.originalOptions.semiMajorAxis;\n this.bearing = this.originalOptions.bearing;\n this.color = this.originalOptions.color;\n this.labelShow = this.originalOptions.label.show;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelColor = this.originalOptions.label.color;\n this.lineWidth = this.originalOptions.line.width;\n this.lineLength = this.originalOptions.line.length;\n this.lineColor = this.originalOptions.line.color;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.attributeLink = this.options.attribute.link.content;\n this.cameraSelect && this.cameraSelect();\n this.goodsSelect && this.goodsSelect();\n this.heightMode = this.originalOptions.heightMode;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this14.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this14.options.center.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this14.options.center.alt;\n });\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positions,\n positionArray,\n height,\n pos84,\n point1,\n point2,\n direction,\n c,\n ray,\n r,\n pickedObjects,\n i,\n promise,\n a,\n _i8,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!this.options.customView) {\n _context3.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 16;\n break;\n }\n _context3.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context3.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 60;\n break;\n case 23:\n positions = this.entity.polyline.positions.getValue();\n positionArray = [];\n height = 0;\n pos84 = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n point1 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 0);\n point2 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 10000000);\n direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, direction);\n ray = new Cesium.Ray(point1, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = 0;\n case 35:\n if (!(i < pickedObjects.length)) {\n _context3.next = 42;\n break;\n }\n if (!pickedObjects[i].position) {\n _context3.next = 39;\n break;\n }\n r = pickedObjects[i];\n return _context3.abrupt(\"break\", 42);\n case 39:\n i++;\n _context3.next = 35;\n break;\n case 42:\n if (!(r && r.position)) {\n _context3.next = 46;\n break;\n }\n height = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n _context3.next = 55;\n break;\n case 46:\n _context3.prev = 46;\n _context3.next = 49;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat)]);\n case 49:\n promise = _context3.sent;\n height = promise[0].height;\n _context3.next = 55;\n break;\n case 53:\n _context3.prev = 53;\n _context3.t0 = _context3[\"catch\"](46);\n case 55:\n a = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, height);\n positionArray.push(a.x, a.y, a.z);\n for (_i8 = 1; _i8 < positions.length; _i8++) {\n positionArray.push(positions[_i8].x, positions[_i8].y, positions[_i8].z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 60:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this, [[46, 53]]);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this15 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this15.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this16 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n var _this = this;\n this.operate.positionEditing = status;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n if (status === true) {\n this.previous = {\n center: this.deepCopyObj(this.options.center)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n this.renewPositions();\n var fromDegreesArray = [];\n fromDegreesArray = this.createEllipse(this.options.center, {\n bearing: this.options.bearing,\n semiMinorAxis: this.options.semiMinorAxis,\n semiMajorAxis: this.options.semiMajorAxis\n });\n this.event.mouse_move(function (movement, cartesian) {\n fromDegreesArray = [];\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n positions.alt = _this16.options.center.alt;\n _this16.renewPositions(positions);\n _this16.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n fromDegreesArray = [];\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n _this16.options.center.lng = Number(positions.lng.toFixed(8));\n _this16.options.center.lat = Number(positions.lat.toFixed(8));\n _this16.center = _this16.options.center;\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n _this16.previous = {\n center: _this16.deepCopyObj(_this16.options.center)\n };\n _this16.positionEditing = false;\n if (_this16._positionEditingCallback) {\n _this16._positionEditingCallback();\n _this16._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this16.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this16.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this16.positionEditing = false;\n } else {\n fromDegreesArray = [];\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n _this16.options.center.lng = positions.lng;\n _this16.options.center.lat = positions.lat;\n _this16.center = _this16.options.center;\n fromDegreesArray = _this16.createEllipse(_this16.options.center, {\n bearing: _this16.options.bearing,\n semiMinorAxis: _this16.options.semiMinorAxis,\n semiMajorAxis: _this16.options.semiMajorAxis\n });\n _this16.label.position = [positions.lng, positions.lat];\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n _this16.previous = {\n center: _this16.deepCopyObj(_this16.options.center)\n };\n _this16.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, false);\n } else {\n if (!this.previous) {\n this.previous = {\n center: this.deepCopyObj(this.options.center)\n };\n }\n this.options.center = this.deepCopyObj(this.previous.center);\n this.tip && this.tip.destroy();\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this17 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n var that = this;\n that.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {} else {\n // let originalPosition\n // let newpositions = []\n // let fromDegreesArray = []\n // let endpoint = {...that.options.center}\n // let moveRadius = null\n // let entity\n // fromDegreesArray = that.createEllipse(that.options.center, {bearing: that.options.bearing, semiMinorAxis: that.options.semiMinorAxis, semiMajorAxis: that.options.semiMajorAxis})\n var getBearing = function getBearing(start, end) {\n var rad = Math.PI / 180,\n lat1 = start.y * rad,\n lat2 = end.y * rad,\n lon1 = start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n var bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI);\n return bearing;\n };\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(pos, type) {\n var pos84, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n pos84 = that.cartesian3Towgs84(pos, that.sdk.viewer);\n _context4.next = 3;\n return that.getClampToHeight(pos84, objectsToExclude);\n case 3:\n height = _context4.sent;\n entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n type: type,\n position: Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, height),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.push(entity);\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints(_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n that.event && that.event.destroy();\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个编辑点,右键取消', that.sdk);\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var pointCenter = Cesium.Cartesian3.fromDegrees(that.center.lng, that.center.lat);\n var semiMinorAxis = that.options.semiMinorAxis;\n var semiMajorAxis = that.options.semiMajorAxis;\n var bearing = that.options.bearing;\n var fromDegreesArray = that.createEllipse(that.options.center, {\n bearing: that.options.bearing,\n semiMinorAxis: that.options.semiMinorAxis,\n semiMajorAxis: that.options.semiMajorAxis\n });\n that.entity.polyline.clampToGround = true;\n that.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n that.entity.polygon.perPositionHeight = false;\n that.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(fromDegreesArray);\n }, false);\n that.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(fromDegreesArray), [fromDegreesArray[0], fromDegreesArray[1]]);\n }, false);\n var positions = that.entity.polyline.positions.getValue();\n var length = positions.length;\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.sdk.viewer.entities.values);\n setTimeout(function () {\n that.event.mouse_left(function (movement, cartesian) {\n if (selectPoint) {\n that.options.semiMinorAxis = semiMinorAxis;\n that.options.semiMajorAxis = semiMajorAxis;\n that.options.bearing = bearing;\n that.event && that.event.destroy();\n that.tip && that.tip.destroy();\n that.tip = null;\n selectPoint = null;\n YJ.Measure.SetMeasureStatus(false);\n that.heightMode = that.heightMode;\n } else {\n var pick = that.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point' && (pick.id._type === 'semiMinorAxis' || pick.id._type === 'semiMajorAxis')) {\n that.tip.set_text('左键确认,右键取消');\n selectPoint = pick.id;\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n var endPoint = cartesian;\n var endPoint84 = that.cartesian3Towgs84(endPoint, that.sdk.viewer);\n pointCenter = Cesium.Cartesian3.fromDegrees(that.center.lng, that.center.lat, endPoint84.alt);\n var distance = Cesium.Cartesian3.distance(pointCenter, endPoint);\n var start = {\n x: that.center.lng,\n y: that.center.lat\n };\n var end = {\n x: endPoint84.lng,\n y: endPoint84.lat\n };\n bearing = getBearing(start, end);\n if (selectPoint._type === 'semiMinorAxis') {\n semiMinorAxis = distance;\n bearing = bearing + 90;\n }\n if (selectPoint._type === 'semiMajorAxis') {\n semiMajorAxis = distance;\n }\n fromDegreesArray = that.createEllipse(that.center, {\n bearing: bearing,\n semiMinorAxis: semiMinorAxis,\n semiMajorAxis: semiMajorAxis\n });\n }\n }\n });\n that.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n var endPoint = cartesian;\n var endPoint84 = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n pointCenter = Cesium.Cartesian3.fromDegrees(that.center.lng, that.center.lat, endPoint84.alt);\n var distance = Cesium.Cartesian3.distance(pointCenter, endPoint);\n var start = {\n x: that.center.lng,\n y: that.center.lat\n };\n var end = {\n x: endPoint84.lng,\n y: endPoint84.lat\n };\n bearing = getBearing(start, end);\n if (selectPoint._type === 'semiMinorAxis') {\n semiMinorAxis = distance;\n bearing = bearing + 90;\n }\n if (selectPoint._type === 'semiMajorAxis') {\n semiMajorAxis = distance;\n }\n fromDegreesArray = that.createEllipse(that.center, {\n bearing: bearing,\n semiMinorAxis: semiMinorAxis,\n semiMajorAxis: semiMajorAxis\n });\n }\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right(function (movement, cartesian) {\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n that.event && that.event.destroy();\n that.tip && that.tip.destroy();\n that.tip = null;\n that.heightMode = that.heightMode;\n cb('', _objectSpread({}, _this17.options.center));\n });\n setTimeout(function () {\n that.getClampToHeight({\n lng: that.center.lng,\n lat: that.center.lat\n }, objectsToExclude).then(function (height) {\n that.label && (that.label.position = [that.center.lng, that.center.lat, height]);\n });\n }, 200);\n createNodePoints(positions[0], 'semiMajorAxis');\n createNodePoints(positions[(length - 2) / 4], 'semiMinorAxis');\n createNodePoints(positions[(length - 2) / 2], 'semiMajorAxis');\n createNodePoints(positions[length - 2 - (length - 2) / 4], 'semiMinorAxis');\n }, 200);\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this18 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.center.lng, this.options.center.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this18.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(center) {\n var _this19 = this;\n if (this._error) {\n return;\n }\n var ground = false;\n if (!center) {\n center = this.options.center;\n }\n var height = 0;\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(center.lng, center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n this.positions = this.createEllipse(center, {\n bearing: this.options.bearing,\n semiMinorAxis: this.options.semiMinorAxis,\n semiMajorAxis: this.options.semiMajorAxis,\n height: center.alt + height\n });\n if (!ground) {\n this.label && (this.label.position = [center.lng, center.lat, center.alt + height]);\n } else {\n setTimeout(function () {\n _this19.getClampToHeight({\n lng: center.lng,\n lat: center.lat\n }).then(function (height) {\n _this19.label && (_this19.label.position = [center.lng, center.lat, height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n this.areaByMeter = Number((Cesium.Math.PI * this.options.semiMinorAxis * this.options.semiMajorAxis).toFixed(2));\n this.areaChangeCallBack && this.areaChangeCallBack();\n return this.positions;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(that.options.center.lng, that.options.center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n if (!that.options.label.position) {\n that.options.label.position = {\n lng: that.options.center.lng,\n lat: that.options.center.lat,\n alt: that.options.center.alt + height\n };\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n var positions = that.createEllipse(that.options.center, {\n bearing: that.options.bearing,\n semiMinorAxis: that.options.semiMinorAxis,\n semiMajorAxis: that.options.semiMajorAxis,\n height: that.options.center.alt + height\n });\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(positions),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(positions), [positions[0], positions[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n EllipseObject.createLabel(that);\n that.areaByMeter = Number((Cesium.Math.PI * that.options.semiMajorAxis * that.options.semiMinorAxis).toFixed(2));\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: that.options.label.ground\n });\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x4) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (EllipseObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRWxsaXBzZU9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9FbGxpcHNlT2JqZWN0L2luZGV4LmpzP2JkOGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOakreWchlxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSBcIi4uLy4uL0VsZW1lbnQvcmljaFRleHRcIjtcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgTGFiZWxPYmplY3QgZnJvbSAnLi4vTGFiZWxPYmplY3QnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgRWxsaXBzZU9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5Yib5bu65qSt5ZyGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5ZyG5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNlbnRlciB7b2JqZWN0fSDkuK3lv4PkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jb2xvcj1cInJnYmEoMjU1LCAwLCAwLCAwLjUpXCIge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY2VudGVyLmxuZyB7b2JqZWN0fSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jZW50ZXIubGF0IHtvYmplY3R9IOe7tOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNlbWlNaW5vckF4aXM9MTAge251bWJlcn0g55+t5Y2K6L206ZW/5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2VtaU1ham9yQXhpcz0yMCB7bnVtYmVyfSDplb/ljYrovbTplb/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5iZWFyaW5nPTAge251bWJlcn0g5peL6L2s6KeS5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZSB7b2JqZWN0fSDovrnmoYZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lLndpZHRoPTIge3N0cmluZ30g6L655qGG5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS5jb2xvcj1cInJnYmEoMjU1LCAwLCAwLCAxKVwiIHtzdHJpbmd9IOi+ueahhuminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodE1vZGU9MntudW1iZXJ9IOmrmOW6puaooeW8j++8iDDvvJrmtbfmi5Tpq5jluqbvvJsx77ya55u45a+55Zyw6KGo77ybMu+8muS+nemZhOaooeW8j++8iVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsIHtvYmplY3R9IOagh+etvuWvueixoVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnRleHQge3N0cmluZ30g5qCH562+5paH5pysXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2hvdyB7c3RyaW5nfSDmoIfnrb7mmL7pmpBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbiB7c3RyaW5nfSDmoIfnrb7kvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbiB7b2JqZWN0fSDmoIfnrb7kvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mb250U2l6ZT0yMCB7bnVtYmVyfSDlrZfkvZPlpKflsI9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5PTAge251bWJlcn0g5a2X5L2T6aG5IDDvvJrpu5HkvZPvvJsx77ya5oCd5rqQ6buR5L2T77ybMu+8muW6numXqOato+mBk+agh+mimOS9k++8mzPvvJrmlbDpu5HkvZNcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5jb2xvcj0jZmZmZmZmIHtzdHJpbmd9IOWtl+S9k+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aD00IHtudW1iZXJ9IOW8lee6v+WuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmxpbmVDb2xvcj0jMDBmZmZmODAge3N0cmluZ30g5byV57q/6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQ9MjAge251bWJlcn0g5a2X5L2T5YGP56e7KOW8lee6v+mVv+W6pilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3I9WycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10ge2FycmF5fSDog4zmma/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2Uge2Jvb2xlYW59IOi3neemu+e8qeaUvlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLm5lYXI9MjAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5Hot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mYXI9MTAwMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/nOi3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZSB7b2JqZWN0fSDlsZ7mgKflhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluayB7b2JqZWN0fSDpk77mjqVcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50PVtdXSB7YXJyYXl9IOmTvuaOpeWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbXS5uYW1lIHtzdHJpbmd9IOmTvuaOpeWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbXS51cmwge3N0cmluZ30g6ZO+5o6l5Zyw5Z2AXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucmljaFRleHRDb250ZW50IHtzdHJpbmd9IOWvjOaWh+acrOWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcge29iamVjdH0g6buY6K6k6KeG6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbiB7b2JqZWN0fSDpu5jorqTop4bop5LmlrnkvY1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcge251bWJlcn0g6Iiq5ZCR6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB7bnVtYmVyfSDkv6/ku7Dop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwge251bWJlcn0g57+75rua6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uIHtvYmplY3R9IOinhuinkuebuOWvueS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+acquWRveWQjeWvueixoSdcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgXCJyZ2JhKDI1NSwgMCwgMCwgMC41KVwiXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLnNlbWlNaW5vckF4aXMgPSAob3B0aW9ucy5zZW1pTWlub3JBeGlzIHx8IG9wdGlvbnMuc2VtaU1pbm9yQXhpcyA9PT0gMCkgPyBvcHRpb25zLnNlbWlNaW5vckF4aXMgOiAxMFxyXG4gICAgdGhpcy5vcHRpb25zLnNlbWlNYWpvckF4aXMgPSAob3B0aW9ucy5zZW1pTWFqb3JBeGlzIHx8IG9wdGlvbnMuc2VtaU1ham9yQXhpcyA9PT0gMCkgPyBvcHRpb25zLnNlbWlNYWpvckF4aXMgOiAyMFxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmNlbnRlciA9IG9wdGlvbnMuY2VudGVyIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHRoaXMub3B0aW9ucy5saW5lLndpZHRoIHx8IHRoaXMub3B0aW9ucy5saW5lLndpZHRoID09PSAwKSA/IHRoaXMub3B0aW9ucy5saW5lLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgfHwgJ3JnYmEoMjU1LCAwLCAwLCAxKSdcclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgJydcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5EaWFsb2cgPSB7fVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIEVsbGlwc2VPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnRWxsaXBzZU9iamVjdCdcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHRNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID8gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgOiAwXHJcbiAgfVxyXG4gIHNldCBoZWlnaHRNb2RlKHYpIHtcclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gW11cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9ICh2IHx8IHYgPT0gMCkgPyB2IDogMlxyXG4gICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgaGVpZ2h0TW9kZU5hbWUgPSAnJ1xyXG4gICAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgICBsZXQgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgbGV0IGRpc2FibGVkID0gZmFsc2VcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9ucyxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zXHJcbiAgICAgIClcclxuICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+a1t+aLlOmrmOW6pidcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn55u45a+55Zyw6KGoJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+S+nemZhOaooeWeiydcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQyxcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZS52YWx1ZSA9IGhlaWdodE1vZGVOYW1lKVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZVxyXG4gICAgICApKVxyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdFxyXG4gIH1cclxuXHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IFtdXHJcbiAgICBpZiAoIXYgfHwgaXNOYU4oTnVtYmVyKHYpKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdCA9IDBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdCA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgyKSlcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXMgPSBudWxsXHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBpZiAodGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoaXMucG9zaXRpb25zKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMF0sXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5fZWxtcy5hbHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIuYWx0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc2VtaU1pbm9yQXhpcygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2VtaU1pbm9yQXhpc1xyXG4gIH1cclxuICBzZXQgc2VtaU1pbm9yQXhpcyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2VtaU1pbm9yQXhpcyA9IHZcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHRcclxuICB9XHJcblxyXG4gIGdldCBzZW1pTWFqb3JBeGlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zZW1pTWFqb3JBeGlzXHJcbiAgfVxyXG4gIHNldCBzZW1pTWFqb3JBeGlzKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zZW1pTWFqb3JBeGlzID0gdlxyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodFxyXG4gIH1cclxuXHJcbiAgZ2V0IGNlbnRlcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2VudGVyXHJcbiAgfVxyXG4gIHNldCBjZW50ZXIodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNlbnRlciA9IHZcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHRcclxuICAgIHRoaXMuX2VsbXMubG5nICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubG5nLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZ1xyXG4gICAgICB9KVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIubGF0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgYmVhcmluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYmVhcmluZ1xyXG4gIH1cclxuICBzZXQgYmVhcmluZyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYmVhcmluZyA9IHZcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHRcclxuICB9XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICB9XHJcbiAgc2V0IGNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHYgfHwgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJ1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWdvbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21Db2xvck1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gbWF0ZXJpYWxcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5saW5lV2lkdGhcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMCwwLDAuNSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmNvbG9yW2ldID0gY29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUuY29sb3JcclxuICB9XHJcbiAgc2V0IGxpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHYgfHwgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJ1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWxpbmUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmxpbmUuY29sb3IpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5saW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmxpbmUuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwwLDAsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yW2ldID0gbGluZUNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgfVxyXG4gIHNldCBsaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHYgfHwgdiA9PT0gMCkgPyB2IDogMylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMuX2VsbXMubGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGluZVdpZHRoLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuICBzZXQgbGFiZWxTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMuc2hvdyAmJiAhdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdlxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJiB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250RmFtaWx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250RmFtaWx5KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID0gdiB8fCAwXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZvbnRGYW1pbHkgPSB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSlcclxuXHJcbiAgICBsZXQgbmFtZSA9IGdldEZvbnRGYW1pbHlOYW1lKHRoaXMubGFiZWxGb250RmFtaWx5KSB8fCAnJ1xyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gbmFtZVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwuY29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3JbaV0gPSBsYWJlbENvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250U2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICB9XHJcbiAgc2V0IGxhYmVsRm9udFNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZSAmJiB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlICYmIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxMaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aCAmJiB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxQaXhlbE9mZnNldCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICB9XHJcbiAgc2V0IGxhYmVsUGl4ZWxPZmZzZXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldCAmJiB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0IGxhYmVsTGluZUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMCwyNTUsMjU1LDAuNSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yW2ldID0gbGluZUNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt2LCB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXV1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSwgdl1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFyZWFDaGFuZ2VDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBhcmVhQ2hhbmdlQ2FsbEJhY2soY2QpIHtcclxuICAgIHRoaXMuX2FyZWFDaGFuZ2VDYWxsQmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBncm91bmRcclxuICAgIGxldCBoZWlnaHQgPSAwXHJcblxyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmNlbnRlci5sbmcsIHRoYXQub3B0aW9ucy5jZW50ZXIubGF0KSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgbGF0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxhdCwgYWx0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmFsdCArIGhlaWdodCB9XHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0LmNyZWF0ZUVsbGlwc2UodGhhdC5vcHRpb25zLmNlbnRlciwgeyBiZWFyaW5nOiB0aGF0Lm9wdGlvbnMuYmVhcmluZywgc2VtaU1pbm9yQXhpczogdGhhdC5vcHRpb25zLnNlbWlNaW5vckF4aXMsIHNlbWlNYWpvckF4aXM6IHRoYXQub3B0aW9ucy5zZW1pTWFqb3JBeGlzLCBoZWlnaHQ6IHRoYXQub3B0aW9ucy5jZW50ZXIuYWx0ICsgaGVpZ2h0IH0pXHJcblxyXG5cclxuXHJcbiAgICB0aGF0LmVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHBvc2l0aW9ucyksXHJcbiAgICAgICAgcGVyUG9zaXRpb25IZWlnaHQ6ICFncm91bmQgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9LFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogWy4uLnBvc2l0aW9ucywgcG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV1dLFxyXG4gICAgICAgIHdpZHRoOiB0aGF0Lm9wdGlvbnMubGluZS53aWR0aCxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGluZS5jb2xvciksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICBhcmNUeXBlOiAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIHRoYXQuc2RrLl9lbnRpdHlaSW5kZXgrK1xyXG4gICAgRWxsaXBzZU9iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgdGhhdC5hcmVhQnlNZXRlciA9IE51bWJlcigoQ2VzaXVtLk1hdGguUEkgKiB0aGF0Lm9wdGlvbnMuc2VtaU1ham9yQXhpcyAqIHRoYXQub3B0aW9ucy5zZW1pTWlub3JBeGlzKS50b0ZpeGVkKDIpKTtcclxuICAgIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrICYmIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrKClcclxuXHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcblxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIGdyb3VuZDogdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KCkge1xyXG4gICAgICAgIGxldCB0YWJsZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3BhdGlhbC1pbmZvLXRhYmxlJylbMF1cclxuICAgICAgICBsZXQgdEJvZHlFbG0gPSB0YWJsZUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICB0Qm9keUVsbS5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZyA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQgPSBbXVxyXG4gICAgICAgIGxldCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyJ1xyXG4gICAgICAgIHRyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBhbGlnbi1jZW50ZXJcIj7lnIblv4PlnZDmoIc8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsbmcgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbGF0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICBgXHJcbiAgICAgICAgbGV0IGxuZ0JveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xuZycpWzBdXHJcbiAgICAgICAgbGV0IGxuZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgIGxuZy5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICBsZXQgbG5nSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgbG5nSW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgIGxuZ0lucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgIGxuZ0lucHV0LnRpdGxlID0gJydcclxuICAgICAgICBsbmdJbnB1dC5taW4gPSAtMTgwXHJcbiAgICAgICAgbG5nSW5wdXQubWF4ID0gMTgwXHJcbiAgICAgICAgbG5nSW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nKS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgIGxldCBsYXRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQnKVswXVxyXG4gICAgICAgIGxldCBsYXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICBsYXQuaW5uZXJIVE1MID0gKF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCkudG9GaXhlZCg4KVxyXG4gICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgbGV0IGxhdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgIGxhdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICBsYXRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICBsYXRJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgbGF0SW5wdXQubWluID0gLTkwXHJcbiAgICAgICAgbGF0SW5wdXQubWF4ID0gOTBcclxuICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IChfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgbGV0IGFsdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsdCcpWzBdXHJcbiAgICAgICAgbGV0IGFsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgIGFsdC5pbm5lckhUTUwgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcbiAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICBsZXQgYWx0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgYWx0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgIGFsdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgIGFsdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICBhbHRJbnB1dC5taW4gPSAtOTk5OTk5OVxyXG4gICAgICAgIGFsdElucHV0Lm1heCA9IDk5OTk5OTk5OVxyXG4gICAgICAgIGFsdElucHV0LnZhbHVlID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG5cclxuICAgICAgICBsbmdCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nSW5wdXQpXHJcbiAgICAgICAgICBsbmdJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEVsbGlwc2VPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMuY2VudGVyLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGxuZ0JveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nID0gTnVtYmVyKE51bWJlcihsbmdJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGxuZy5pbm5lckhUTUwgPSBfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gX3RoaXMuaGVpZ2h0XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGF0Qm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5jZW50ZXIubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdElucHV0KVxyXG4gICAgICAgICAgbGF0SW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBFbGxpcHNlT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsYXRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsYXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IE51bWJlcihOdW1iZXIobGF0SW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5jZW50ZXIubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGFsdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGlmIChfdGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWx0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdElucHV0KVxyXG4gICAgICAgICAgYWx0SW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBFbGxpcHNlT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIF90aGlzLmhlaWdodCA9IE51bWJlcihOdW1iZXIoYWx0SW5wdXQudmFsdWUpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gTnVtYmVyKF90aGlzLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmcucHVzaChsbmcpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQucHVzaChsbmdJbnB1dClcclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXQucHVzaChsYXQpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQucHVzaChsYXRJbnB1dClcclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHQucHVzaChhbHQpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQucHVzaChhbHRJbnB1dClcclxuICAgICAgICB0Qm9keUVsbS5hcHBlbmRDaGlsZCh0cilcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+akreWchuWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBFbGxpcHNlT2JqZWN0Lm5vZGVFZGl0KHRoaXMsICgpID0+IHtcclxuICAgICAgICAgICAgY3JlYXRlU3BhdGlhbEluZm9UYWJsZUNvbnRlbnQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgY2lyY2xlJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwodGhpcylcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdjaXJjbGUtb2JqZWN0LWVkaXQtdGFicycsIHVuZGVmaW5lZCwgdGhpcy5zZGspXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGluZWNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsaW5lQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbENvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgRWxsaXBzZU9iamVjdC5FdmVudEJpbmRpbmcodGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgPSBbbGluZWNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsYWJlbGxpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICBsZXQgdGFnRGF0YSA9IHRoaXMuYXR0cmlidXRlU2VsZWN0XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QtYm94JylbMF1cclxuICAgICAgICBpZiAoYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AoYXR0cmlidXRlRWxtLCBcIi5hdHRyaWJ1dGUtc2VsZWN0XCIpXHJcbiAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0YWdEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB1bml0RGF0YSA9IFt7XHJcbiAgICAgICAgICBuYW1lOiAn5bmz5pa557GzJyxcclxuICAgICAgICAgIHZhbHVlOiAn5bmz5pa557GzJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+W5s+aWueWNg+exsycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+W5s+aWueWNg+exsydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfkuqknLFxyXG4gICAgICAgICAgdmFsdWU6ICfkuqknXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5YWs6aG3JyxcclxuICAgICAgICAgIHZhbHVlOiAn5YWs6aG3J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BPYmplY3QgPSBsZWdwKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0LWJveCcpWzBdLCBcIi5pbnB1dC1zZWxlY3QtdW5pdFwiKVxyXG4gICAgICAgIGlmICh1bml0RGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaCh1bml0RGF0YSlcclxuICAgICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnNbJ2FyZWEtdW5pdCddXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHVuaXREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFyZWFVbml0ID0gdW5pdERhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGhlaWdodEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1ib3gnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgICBsZXQgaGVpZ2h0Q29uZmlybUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1jb25maXJtJylbMF1cclxuICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSAxMFxyXG4gICAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICBrZXk6ICcxJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfkvp3pmYTmqKHlnosnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIGtleTogJzInLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgaGVpZ2h0TW9kZU9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuaGVpZ2h0LW1vZGUnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChoZWlnaHRNb2RlT2JqZWN0KSB7XHJcbiAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoKGhlaWdodE1vZGVEYXRhKVxyXG4gICAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtbW9kZScpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9kZURhdGFbaV0ua2V5ID09IHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS52YWx1ZSA9IGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGhlaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggPSBoZWlnaHRCb3hFbG1cclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhTGVncEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ID0gaGVpZ2h0TW9kZU9iamVjdFxyXG5cclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEVsbGlwc2VPYmplY3QuY2xvc2VOb2RlRWRpdCh0aGlzKVxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG5cclxuICAgIHRoaXMuc2VtaU1pbm9yQXhpcyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNlbWlNaW5vckF4aXNcclxuICAgIHRoaXMuc2VtaU1ham9yQXhpcyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNlbWlNYWpvckF4aXNcclxuICAgIHRoaXMuYmVhcmluZyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmJlYXJpbmdcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMubGluZUxlbmd0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUubGVuZ3RoXHJcbiAgICB0aGlzLmxpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuY29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgIHRoaXMuZ29vZHNTZWxlY3QgJiYgdGhpcy5nb29kc1NlbGVjdCgpXHJcblxyXG4gICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuaGVpZ2h0TW9kZVxyXG5cclxuICAgIHRoaXMuX2VsbXMubG5nICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubG5nLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZ1xyXG4gICAgICB9KVxyXG4gICAgdGhpcy5fZWxtcy5sYXQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIubGF0XHJcbiAgICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmNlbnRlci5hbHRcclxuICAgICAgfSlcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMubGFiZWwucmVtb3ZlKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDpo57liLBcclxuICAqL1xyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcpIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMuZ2V0VmFsdWUoKVxyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICAgIGxldCBwb3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgMCk7XHJcbiAgICAgIGxldCBwb2ludDIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgMTAwMDAwMDApO1xyXG4gICAgICBsZXQgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QocG9pbnQyLCBwb2ludDEsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBkaXJlY3Rpb24pO1xyXG4gICAgICBsZXQgcmF5ID0gbmV3IENlc2l1bS5SYXkocG9pbnQxLCBjKTtcclxuICAgICAgbGV0IHIgPSB7fVxyXG4gICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICByID0gcGlja2VkT2JqZWN0c1tpXVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHIgJiYgci5wb3NpdGlvbikge1xyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoci5wb3NpdGlvbiwgdGhpcy5zZGsudmlld2VyKS5hbHRcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IHByb21pc2UgPSBhd2FpdCBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZCh0aGlzLnNkay52aWV3ZXIudGVycmFpblByb3ZpZGVyLCBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCldKTtcclxuICAgICAgICAgIGhlaWdodCA9IHByb21pc2VbMF0uaGVpZ2h0XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgaGVpZ2h0KVxyXG4gICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2gocG9zaXRpb25zW2ldLngsIHBvc2l0aW9uc1tpXS55LCBwb3NpdGlvbnNbaV0ueilcclxuICAgICAgfVxyXG4gICAgICBsZXQgQm91bmRpbmdTcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKHBvc2l0aW9uQXJyYXkpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiZPlvIDlr4zmlofmnKzmoYZcclxuICAgKi9cclxuICBvcGVuUmljaFRleHRFZGl0b3IoZSkge1xyXG4gICAgcmljaFRleHQub3Blbih0aGlzLm9wdGlvbnMuaWQsIHRoaXMub3B0aW9ucy5uYW1lLCB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50KVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gKGNvbnRlbnQpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICpcclxuICAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkgfHwgIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIGNlbnRlcjogdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMuY2VudGVyKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMC45KWApKVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5jcmVhdGVFbGxpcHNlKHRoaXMub3B0aW9ucy5jZW50ZXIsIHsgYmVhcmluZzogdGhpcy5vcHRpb25zLmJlYXJpbmcsIHNlbWlNaW5vckF4aXM6IHRoaXMub3B0aW9ucy5zZW1pTWlub3JBeGlzLCBzZW1pTWFqb3JBeGlzOiB0aGlzLm9wdGlvbnMuc2VtaU1ham9yQXhpcyB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBwb3NpdGlvbnMuYWx0ID0gdGhpcy5vcHRpb25zLmNlbnRlci5hbHRcclxuICAgICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKHBvc2l0aW9ucylcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IE51bWJlcigocG9zaXRpb25zLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IE51bWJlcigocG9zaXRpb25zLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLmNlbnRlciA9IHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgY2VudGVyOiB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucy5jZW50ZXIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmNlbnRlci5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgICAgIHRoaXMuY2VudGVyID0gdGhpcy5vcHRpb25zLmNlbnRlclxyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5jcmVhdGVFbGxpcHNlKHRoaXMub3B0aW9ucy5jZW50ZXIsIHsgYmVhcmluZzogdGhpcy5vcHRpb25zLmJlYXJpbmcsIHNlbWlNaW5vckF4aXM6IHRoaXMub3B0aW9ucy5zZW1pTWlub3JBeGlzLCBzZW1pTWFqb3JBeGlzOiB0aGlzLm9wdGlvbnMuc2VtaU1ham9yQXhpcyB9KVxyXG4gICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3Bvc2l0aW9ucy5sbmcsIHBvc2l0aW9ucy5sYXRdXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgIGNlbnRlcjogdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMuY2VudGVyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zKVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gWy4uLl90aGlzLnBvc2l0aW9ucywgX3RoaXMucG9zaXRpb25zWzBdLCBfdGhpcy5wb3NpdGlvbnNbMV1dXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5wcmV2aW91cykge1xyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICBjZW50ZXI6IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLmNlbnRlcilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vcHRpb25zLmNlbnRlciA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5wcmV2aW91cy5jZW50ZXIpXHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zKVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBbLi4uX3RoaXMucG9zaXRpb25zLCBfdGhpcy5wb3NpdGlvbnNbMF0sIF90aGlzLnBvc2l0aW9uc1sxXV1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcblxyXG4gIG5vZGVFZGl0KGNiID0gKCkgPT4geyB9KSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIHRoYXQucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhhdC5ldmVudCAmJiB0aGF0LmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB0aGF0LmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGF0LnRpcCA9IG5ldyBNb3VzZVRpcCgn6K+36YCJ5oup5LiA5Liq57yW6L6R54K577yM5Y+z6ZSu5Y+W5raIJywgdGhhdC5zZGspXHJcbiAgICAgIHRoYXQuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGF0LnNkaylcclxuICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgIGxldCBwb2ludENlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQuY2VudGVyLmxuZywgdGhhdC5jZW50ZXIubGF0KTtcclxuICAgICAgbGV0IHNlbWlNaW5vckF4aXMgPSB0aGF0Lm9wdGlvbnMuc2VtaU1pbm9yQXhpc1xyXG4gICAgICBsZXQgc2VtaU1ham9yQXhpcyA9IHRoYXQub3B0aW9ucy5zZW1pTWFqb3JBeGlzXHJcbiAgICAgIGxldCBiZWFyaW5nID0gdGhhdC5vcHRpb25zLmJlYXJpbmdcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGF0LmNyZWF0ZUVsbGlwc2UodGhhdC5vcHRpb25zLmNlbnRlciwgeyBiZWFyaW5nOiB0aGF0Lm9wdGlvbnMuYmVhcmluZywgc2VtaU1pbm9yQXhpczogdGhhdC5vcHRpb25zLnNlbWlNaW5vckF4aXMsIHNlbWlNYWpvckF4aXM6IHRoYXQub3B0aW9ucy5zZW1pTWFqb3JBeGlzIH0pXHJcbiAgICAgIC8vIGxldCBvcmlnaW5hbFBvc2l0aW9uXHJcbiAgICAgIC8vIGxldCBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgIC8vIGxldCBlbmRwb2ludCA9IHsuLi50aGF0Lm9wdGlvbnMuY2VudGVyfVxyXG4gICAgICAvLyBsZXQgbW92ZVJhZGl1cyA9IG51bGxcclxuICAgICAgLy8gbGV0IGVudGl0eVxyXG4gICAgICAvLyBmcm9tRGVncmVlc0FycmF5ID0gdGhhdC5jcmVhdGVFbGxpcHNlKHRoYXQub3B0aW9ucy5jZW50ZXIsIHtiZWFyaW5nOiB0aGF0Lm9wdGlvbnMuYmVhcmluZywgc2VtaU1pbm9yQXhpczogdGhhdC5vcHRpb25zLnNlbWlNaW5vckF4aXMsIHNlbWlNYWpvckF4aXM6IHRoYXQub3B0aW9ucy5zZW1pTWFqb3JBeGlzfSlcclxuICAgICAgZnVuY3Rpb24gZ2V0QmVhcmluZyhzdGFydCwgZW5kKSB7XHJcbiAgICAgICAgbGV0IHJhZCA9IE1hdGguUEkgLyAxODAsXHJcbiAgICAgICAgICBsYXQxID0gc3RhcnQueSAqIHJhZCxcclxuICAgICAgICAgIGxhdDIgPSBlbmQueSAqIHJhZCxcclxuICAgICAgICAgIGxvbjEgPSBzdGFydC54ICogcmFkLFxyXG4gICAgICAgICAgbG9uMiA9IGVuZC54ICogcmFkO1xyXG4gICAgICAgIGNvbnN0IGEgPSBNYXRoLnNpbihsb24yIC0gbG9uMSkgKiBNYXRoLmNvcyhsYXQyKTtcclxuICAgICAgICBjb25zdCBiID1cclxuICAgICAgICAgIE1hdGguY29zKGxhdDEpICogTWF0aC5zaW4obGF0MikgLVxyXG4gICAgICAgICAgTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhsYXQyKSAqIE1hdGguY29zKGxvbjIgLSBsb24xKTtcclxuICAgICAgICBjb25zdCByYWRpYW5zID0gTWF0aC5hdGFuMihhLCBiKVxyXG4gICAgICAgIGNvbnN0IGRlZ3JlZXMgPSByYWRpYW5zICUgKDIgKiBNYXRoLlBJKTtcclxuICAgICAgICBsZXQgYmVhcmluZyA9IDQ1MCAtICgoZGVncmVlcyAqIDE4MCkgLyBNYXRoLlBJIDwgMFxyXG4gICAgICAgICAgPyAzNjAgKyAoZGVncmVlcyAqIDE4MCkgLyBNYXRoLlBJXHJcbiAgICAgICAgICA6IChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkpO1xyXG4gICAgICAgIHJldHVybiBiZWFyaW5nXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWVcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDXHJcbiAgICAgIHRoYXQuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSBmYWxzZVxyXG4gICAgICB0aGF0LmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gWy4uLmZyb21EZWdyZWVzQXJyYXksIGZyb21EZWdyZWVzQXJyYXlbMF0sIGZyb21EZWdyZWVzQXJyYXlbMV1dXHJcbiAgICAgIH0sIGZhbHNlKVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucy5nZXRWYWx1ZSgpXHJcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbnMubGVuZ3RoXHJcbiAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMuc2VtaU1pbm9yQXhpcyA9IHNlbWlNaW5vckF4aXNcclxuICAgICAgICAgICAgdGhhdC5vcHRpb25zLnNlbWlNYWpvckF4aXMgPSBzZW1pTWFqb3JBeGlzXHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5iZWFyaW5nID0gYmVhcmluZ1xyXG4gICAgICAgICAgICB0aGF0LmV2ZW50ICYmIHRoYXQuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgICAgIHRoYXQudGlwICYmIHRoYXQudGlwLmRlc3Ryb3koKVxyXG4gICAgICAgICAgICB0aGF0LnRpcCA9IG51bGxcclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuXHJcbiAgICAgICAgICAgIHRoYXQuaGVpZ2h0TW9kZSA9IHRoYXQuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwaWNrID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBwaWNrICYmXHJcbiAgICAgICAgICAgICAgcGljay5pZCAmJlxyXG4gICAgICAgICAgICAgIHBpY2suaWQubmFtZSAmJlxyXG4gICAgICAgICAgICAgIHBpY2suaWQubmFtZSA9PT0gJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnICYmXHJcbiAgICAgICAgICAgICAgKHBpY2suaWQuX3R5cGUgPT09ICdzZW1pTWlub3JBeGlzJyB8fCBwaWNrLmlkLl90eXBlID09PSAnc2VtaU1ham9yQXhpcycpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRoYXQudGlwLnNldF90ZXh0KCflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognKVxyXG4gICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQubm9kZVBvaW50c1tpXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICAgICAgICBsZXQgZW5kUG9pbnQgPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgICBsZXQgZW5kUG9pbnQ4NCA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoZW5kUG9pbnQsIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICBwb2ludENlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQuY2VudGVyLmxuZywgdGhhdC5jZW50ZXIubGF0LCBlbmRQb2ludDg0LmFsdClcclxuICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb2ludENlbnRlciwgZW5kUG9pbnQpO1xyXG4gICAgICAgICAgICAgIGxldCBzdGFydCA9IHtcclxuICAgICAgICAgICAgICAgIHg6IHRoYXQuY2VudGVyLmxuZyxcclxuICAgICAgICAgICAgICAgIHk6IHRoYXQuY2VudGVyLmxhdFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgZW5kID0ge1xyXG4gICAgICAgICAgICAgICAgeDogZW5kUG9pbnQ4NC5sbmcsXHJcbiAgICAgICAgICAgICAgICB5OiBlbmRQb2ludDg0LmxhdFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBiZWFyaW5nID0gZ2V0QmVhcmluZyhzdGFydCwgZW5kKVxyXG4gICAgICAgICAgICAgIGlmIChzZWxlY3RQb2ludC5fdHlwZSA9PT0gJ3NlbWlNaW5vckF4aXMnKSB7XHJcbiAgICAgICAgICAgICAgICBzZW1pTWlub3JBeGlzID0gZGlzdGFuY2VcclxuICAgICAgICAgICAgICAgIGJlYXJpbmcgPSBiZWFyaW5nICsgOTBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHNlbGVjdFBvaW50Ll90eXBlID09PSAnc2VtaU1ham9yQXhpcycpIHtcclxuICAgICAgICAgICAgICAgIHNlbWlNYWpvckF4aXMgPSBkaXN0YW5jZVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQuY3JlYXRlRWxsaXBzZSh0aGF0LmNlbnRlciwgeyBiZWFyaW5nOiBiZWFyaW5nLCBzZW1pTWlub3JBeGlzOiBzZW1pTWlub3JBeGlzLCBzZW1pTWFqb3JBeGlzOiBzZW1pTWFqb3JBeGlzIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICBsZXQgZW5kUG9pbnQgPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgbGV0IGVuZFBvaW50ODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICBwb2ludENlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQuY2VudGVyLmxuZywgdGhhdC5jZW50ZXIubGF0LCBlbmRQb2ludDg0LmFsdClcclxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9pbnRDZW50ZXIsIGVuZFBvaW50KTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHtcclxuICAgICAgICAgICAgICB4OiB0aGF0LmNlbnRlci5sbmcsXHJcbiAgICAgICAgICAgICAgeTogdGhhdC5jZW50ZXIubGF0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGVuZCA9IHtcclxuICAgICAgICAgICAgICB4OiBlbmRQb2ludDg0LmxuZyxcclxuICAgICAgICAgICAgICB5OiBlbmRQb2ludDg0LmxhdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJlYXJpbmcgPSBnZXRCZWFyaW5nKHN0YXJ0LCBlbmQpXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RQb2ludC5fdHlwZSA9PT0gJ3NlbWlNaW5vckF4aXMnKSB7XHJcbiAgICAgICAgICAgICAgc2VtaU1pbm9yQXhpcyA9IGRpc3RhbmNlXHJcbiAgICAgICAgICAgICAgYmVhcmluZyA9IGJlYXJpbmcgKyA5MFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RQb2ludC5fdHlwZSA9PT0gJ3NlbWlNYWpvckF4aXMnKSB7XHJcbiAgICAgICAgICAgICAgc2VtaU1ham9yQXhpcyA9IGRpc3RhbmNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQuY3JlYXRlRWxsaXBzZSh0aGF0LmNlbnRlciwgeyBiZWFyaW5nOiBiZWFyaW5nLCBzZW1pTWlub3JBeGlzOiBzZW1pTWlub3JBeGlzLCBzZW1pTWFqb3JBeGlzOiBzZW1pTWFqb3JBeGlzIH0pXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC5ub2RlUG9pbnRzW2ldKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuXHJcbiAgICAgICAgICB0aGF0LmV2ZW50ICYmIHRoYXQuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGF0LnRpcCAmJiB0aGF0LnRpcC5kZXN0cm95KClcclxuICAgICAgICAgIHRoYXQudGlwID0gbnVsbFxyXG5cclxuICAgICAgICAgIHRoYXQuaGVpZ2h0TW9kZSA9IHRoYXQuaGVpZ2h0TW9kZVxyXG5cclxuICAgICAgICAgIGNiKCcnLCB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfSlcclxuICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGF0LmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICBsbmc6IHRoYXQuY2VudGVyLmxuZyxcclxuICAgICAgICAgICAgbGF0OiB0aGF0LmNlbnRlci5sYXRcclxuICAgICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgdGhhdC5sYWJlbCAmJiAodGhhdC5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICB0aGF0LmNlbnRlci5sbmcsXHJcbiAgICAgICAgICAgICAgdGhhdC5jZW50ZXIubGF0LFxyXG4gICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgIGNyZWF0ZU5vZGVQb2ludHMocG9zaXRpb25zWzBdLCAnc2VtaU1ham9yQXhpcycpXHJcbiAgICAgICAgY3JlYXRlTm9kZVBvaW50cyhwb3NpdGlvbnNbKGxlbmd0aCAtIDIpIC8gNF0sICdzZW1pTWlub3JBeGlzJylcclxuICAgICAgICBjcmVhdGVOb2RlUG9pbnRzKHBvc2l0aW9uc1sobGVuZ3RoIC0gMikgLyAyXSwgJ3NlbWlNYWpvckF4aXMnKVxyXG4gICAgICAgIGNyZWF0ZU5vZGVQb2ludHMocG9zaXRpb25zWyhsZW5ndGggLSAyKSAtICgobGVuZ3RoIC0gMikgLyA0KV0sICdzZW1pTWlub3JBeGlzJylcclxuICAgICAgfSwgMjAwKTtcclxuICAgICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTm9kZVBvaW50cyhwb3MsIHR5cGUpIHtcclxuICAgICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvcywgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGF0LmdldENsYW1wVG9IZWlnaHQocG9zODQsIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgaGVpZ2h0KSxcclxuICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGF0Lm5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU5vZGVFZGl0KCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgRXZlbnRCaW5kaW5nKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBpZiAoIWVsZW1lbnRzW2ldIHx8ICFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubm9kZU5hbWUgPT0gJ0lNRycpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnNyYyA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoYXQuX2VsbXNbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGF0Ll9lbG1zW20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjaGFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInICYmIHZhbHVlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlc1ttXSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcmVtb3ZlTmFtZS5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERJVihvcHRpb25zID0geyBkb21pZDogXCJcIiwgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IChvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwKSA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSAob3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCkgPyBvcHRpb25zLnkgOiAxMFxyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmNlbnRlci5sbmcsIHRoaXMub3B0aW9ucy5jZW50ZXIubGF0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld1Bvc2l0aW9ucyhjZW50ZXIpIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG5cclxuICAgIGlmICghY2VudGVyKSB7XHJcbiAgICAgIGNlbnRlciA9IHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoY2VudGVyLmxuZywgY2VudGVyLmxhdCkpIHx8IDBcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUVsbGlwc2UoY2VudGVyLCB7IGJlYXJpbmc6IHRoaXMub3B0aW9ucy5iZWFyaW5nLCBzZW1pTWlub3JBeGlzOiB0aGlzLm9wdGlvbnMuc2VtaU1pbm9yQXhpcywgc2VtaU1ham9yQXhpczogdGhpcy5vcHRpb25zLnNlbWlNYWpvckF4aXMsIGhlaWdodDogY2VudGVyLmFsdCArIGhlaWdodCB9KVxyXG4gICAgaWYgKCFncm91bmQpIHtcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICBjZW50ZXIubG5nLFxyXG4gICAgICAgIGNlbnRlci5sYXQsXHJcbiAgICAgICAgY2VudGVyLmFsdCArIGhlaWdodFxyXG4gICAgICBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgIGxuZzogY2VudGVyLmxuZyxcclxuICAgICAgICAgIGxhdDogY2VudGVyLmxhdFxyXG4gICAgICAgIH0pLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgIGNlbnRlci5sbmcsXHJcbiAgICAgICAgICAgIGNlbnRlci5sYXQsXHJcbiAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICB9KVxyXG4gICAgICB9LCAxMDApXHJcbiAgICB9XHJcblxyXG4gICAgLy8g6K6h566X5oqV5b2x6Z2i56evXHJcbiAgICB0aGlzLmFyZWFCeU1ldGVyID0gTnVtYmVyKChDZXNpdW0uTWF0aC5QSSAqIHRoaXMub3B0aW9ucy5zZW1pTWlub3JBeGlzICogdGhpcy5vcHRpb25zLnNlbWlNYWpvckF4aXMpLnRvRml4ZWQoMikpO1xyXG4gICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25zXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFbGxpcHNlT2JqZWN0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXVGQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2SUE7QUEwQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBamVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWhHQTtBQUFBO0FBQUE7QUFBQTtBQWtHQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBK0dBO0FBQ0E7QUFBQTtBQTFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBMklBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWhCQTtBQUFBO0FBQUE7QUE5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFtQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBa0dBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5dENBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXUvQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyRUE7QUFBQTtBQUFBO0FBcUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUtBO0FBd0ZBO0FBQUE7QUFBQTtBQTZFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/EllipseObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Explosion/_element.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/Explosion/_element.js ***! - \********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u968F\\u5730\\u56FE\\u7F29\\u653E\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u7206\\u70B8\\u8303\\u56F4\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRXhwbG9zaW9uL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0V4cGxvc2lvbi9fZWxlbWVudC5qcz84ZDBlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pmo/lnLDlm77nvKnmlL48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwic2NhbGVCeURpc3RhbmNlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7niIbngrjojIPlm7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OTlcIiBAbW9kZWw9XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6rOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTkwXCIgbWF4PVwiOTBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCIgQG1vZGVsPVwiYWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBK0NBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/Explosion/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Explosion/index.js": -/*!*****************************************!*\ - !*** ./src/Obj/Base/Explosion/index.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/Explosion/_element.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\n\n\nvar Explosion = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 爆炸\r\n * @param sdk\r\n * @param options {object} 爆炸属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显隐\r\n * @param options.name {string} 名称\r\n * @param {object} options.position={} 位置\r\n * @param {number} options.position.lng 经度\r\n * @param {number} options.position.lat 纬度\r\n * @param {number} options.position.alt 高度\r\n * @param options.scaleByDistance=true {boolean} 是否开启跟随视野缩放\r\n * @param options.size=80 {number} 大小(爆炸范围)\r\n * */\n function Explosion(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Explosion);\n _this2 = _callSuper(this, Explosion, [sdk, options]);\n _this2.viewer = sdk.viewer;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.name = _this2.options.name || '未命名对象';\n _this2.options.size = _this2.options.size || _this2.options.size === 0 ? _this2.options.size : 80;\n _this2.options.scaleByDistance = options.scaleByDistance || options.scaleByDistance === false ? options.scaleByDistance : true;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this2.sdk);\n _this2.Dialog = _Dialog;\n _this2.operate = {};\n _this2._elms = {};\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n Explosion.create(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Explosion, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Explosion, [{\n key: \"type\",\n get: function get() {\n return 'Explosion';\n }\n\n // 创建\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(state) {\n var _this3 = this;\n var _this, contentElm, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' explosion';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this.scaleByDistance = this.options.scaleByDistance;\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 16;\n break;\n }\n _context2.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context2.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 24;\n break;\n case 23:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt + this.options.size * 8),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-85.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.previous = null;\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.size = this.originalOptions.size;\n this.scaleByDistance = this.originalOptions.scaleByDistance;\n this.lng = this.options.position.lng;\n this.lat = this.options.position.lat;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"scaleByDistance\",\n get: function get() {\n return this.options.scaleByDistance;\n },\n set: function set(v) {\n this.options.scaleByDistance = v;\n this.entity.billboard.sizeInMeters = v;\n this._elms.scaleByDistance && this._elms.scaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.position.lng;\n },\n set: function set(v) {\n this.options.position.lng = v;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.position.lat;\n },\n set: function set(v) {\n this.options.position.lat = v;\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.position.alt;\n },\n set: function set(v) {\n this.options.position.alt = v;\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"size\",\n get: function get() {\n return this.options.size;\n },\n set: function set(v) {\n this.options.size = v;\n this.entity.billboard.width = this.options.size;\n this.entity.billboard.height = this.options.size;\n this._elms.size && this._elms.size.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this4 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_14__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.previous = {\n position: _objectSpread({}, this.options.position)\n };\n this.event.mouse_move(function (movement, cartesian) {\n var positions = _this4.cartesian3Towgs84(cartesian, _this4.sdk.viewer);\n _this4.lng = positions.lng;\n _this4.lat = positions.lat;\n _this4.alt = positions.alt;\n _this4.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var positions = _this4.cartesian3Towgs84(cartesian, _this4.sdk.viewer);\n _this4.lng = positions.lng;\n _this4.lat = positions.lat;\n _this4.alt = positions.alt;\n _this4.previous = {\n position: _objectSpread({}, _this4.options.position)\n };\n _this4.event.mouse_move(function () {});\n _this4.event.mouse_left(function () {});\n _this4.event.mouse_right(function () {});\n _this4.event.gesture_pinck_start(function () {});\n _this4.event.gesture_pinck_end(function () {});\n if (_this4._positionEditingCallback) {\n _this4._positionEditingCallback();\n _this4._positionEditingCallback = null;\n }\n _this4.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this4.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this4.positionEditing = false;\n } else {\n var positions = _this4.cartesian3Towgs84(cartesian, _this4.sdk.viewer);\n _this4.lng = positions.lng;\n _this4.lat = positions.lat;\n _this4.alt = positions.alt;\n _this4.previous = {\n position: _objectSpread({}, _this4.options.position)\n };\n _this4.event.mouse_move(function () {});\n _this4.event.mouse_left(function () {});\n _this4.event.mouse_right(function () {});\n _this4.event.gesture_pinck_start(function () {});\n _this4.event.gesture_pinck_end(function () {});\n _this4.positionEditing = false;\n }\n });\n });\n } else {\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (this.previous) {\n this.lng = this.previous.position.lng;\n this.lat = this.previous.position.lat;\n this.alt = this.previous.position.alt;\n }\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n\n /**\r\n * 删除\r\n */\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context3.next = 7;\n return this.sdk.removeIncetance(this.options.id);\n case 7:\n _context3.next = 9;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n var img_bz = [];\n for (var _i = 10001; _i <= 10120; _i++) {\n var src = that.getSourceRootPath() + \"/img/frameAnimation/explosion/b\".concat(_i, \".png\");\n img_bz.push(src);\n }\n var i = 0;\n var flyEntity = new Cesium.Entity({\n id: that.options.id,\n show: that.options.show,\n position: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegrees(that.options.position.lng, that.options.position.lat, that.options.position.alt);\n }, false),\n billboard: {\n image: new Cesium.CallbackProperty(function () {\n var img = img_bz[flyEntity.imgIndex];\n flyEntity.imgIndex++;\n if (flyEntity.imgIndex >= img_bz.length) {\n flyEntity.imgIndex = 0;\n }\n return img;\n }, false),\n // scale: that.options.size,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n width: that.options.size,\n height: that.options.size,\n sizeInMeters: that.options.scaleByDistance,\n pixelOffset: {\n x: 0,\n y: -20\n }\n }\n });\n flyEntity.imgIndex = 0;\n that.entity = that.viewer.entities.add(flyEntity);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Explosion);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRXhwbG9zaW9uL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0V4cGxvc2lvbi9pbmRleC5qcz9jMTljIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93LCBnZXRHcm91bmRDb3Zlcn0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuY2xhc3MgRXhwbG9zaW9uIGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgKiBAY29uc3RydWN0b3JcclxuICAqIEBkZXNjcmlwdGlvbiDniIbngrhcclxuICAqIEBwYXJhbSBzZGtcclxuICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOeIhueCuOWxnuaAp1xyXG4gICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5ZSv5LiA5qCH6K+GXHJcbiAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvumakFxyXG4gICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLnBvc2l0aW9uPXt9IOS9jee9rlxyXG4gICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucG9zaXRpb24ubG5nIOe7j+W6plxyXG4gICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucG9zaXRpb24ubGF0IOe6rOW6plxyXG4gICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucG9zaXRpb24uYWx0IOmrmOW6plxyXG4gICogQHBhcmFtIG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlPXRydWUge2Jvb2xlYW59IOaYr+WQpuW8gOWQr+i3n+maj+inhumHjue8qeaUvlxyXG4gICogQHBhcmFtIG9wdGlvbnMuc2l6ZT04MCB7bnVtYmVyfSDlpKflsI8o54iG54K46IyD5Zu0KVxyXG4gICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IHRoaXMub3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuc2l6ZSA9ICh0aGlzLm9wdGlvbnMuc2l6ZSB8fCB0aGlzLm9wdGlvbnMuc2l6ZSA9PT0gMCkgPyB0aGlzLm9wdGlvbnMuc2l6ZSA6IDgwXHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlID0gKG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlIHx8IG9wdGlvbnMuc2NhbGVCeURpc3RhbmNlID09PSBmYWxzZSkgPyBvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA6IHRydWVcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIEV4cGxvc2lvbi5jcmVhdGUodGhpcylcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuICdFeHBsb3Npb24nXHJcbiAgfVxyXG5cclxuICAvLyDliJvlu7pcclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBpbWdfYnogPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDEwMDAxOyBpIDw9IDEwMTIwOyBpKyspIHtcclxuICAgICAgbGV0IHNyYyA9IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArIGAvaW1nL2ZyYW1lQW5pbWF0aW9uL2V4cGxvc2lvbi9iJHtpfS5wbmdgXHJcbiAgICAgIGltZ19iei5wdXNoKHNyYylcclxuICAgIH1cclxuICAgIGxldCBpID0gMFxyXG4gICAgbGV0IGZseUVudGl0eSA9IG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMucG9zaXRpb24uYWx0KVxyXG4gICAgICB9LCBmYWxzZSksXHJcbiAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgIGltYWdlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGltZyA9IGltZ19ieltmbHlFbnRpdHkuaW1nSW5kZXhdXHJcbiAgICAgICAgICBmbHlFbnRpdHkuaW1nSW5kZXgrK1xyXG4gICAgICAgICAgaWYgKGZseUVudGl0eS5pbWdJbmRleCAgPj0gaW1nX2J6Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmbHlFbnRpdHkuaW1nSW5kZXggID0gMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGltZ1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAvLyBzY2FsZTogdGhhdC5vcHRpb25zLnNpemUsXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IHRoYXQub3B0aW9ucy5zaXplLFxyXG4gICAgICAgIGhlaWdodDogdGhhdC5vcHRpb25zLnNpemUsXHJcbiAgICAgICAgc2l6ZUluTWV0ZXJzOiB0aGF0Lm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiB7IHg6IDAsIHk6IC0yMCB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGZseUVudGl0eS5pbWdJbmRleCA9IDBcclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKGZseUVudGl0eSlcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZih0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn54iG54K45bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBleHBsb3Npb24nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLnNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ICsgKHRoaXMub3B0aW9ucy5zaXplICogOCkpLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtODUuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuc2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNpemVcclxuICAgIHRoaXMuc2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxuZyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmdcclxuICAgIHRoaXMubGF0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgc2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2l6ZUluTWV0ZXJzID0gdlxyXG4gICAgdGhpcy5fZWxtcy5zY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5zY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgfVxyXG5cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgfVxyXG5cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNpemVcclxuICB9XHJcbiAgc2V0IHNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNpemUgPSB2XHJcbiAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQud2lkdGggPSB0aGlzLm9wdGlvbnMuc2l6ZVxyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmhlaWdodCA9IHRoaXMub3B0aW9ucy5zaXplXHJcbiAgICB0aGlzLl9lbG1zLnNpemUgJiYgdGhpcy5fZWxtcy5zaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAqXHJcbiAgKiBAbWVtYmVyT2YgU291cmNlXHJcbiAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICpcclxuICAqICovXHJcbiAgc2V0IHBvc2l0aW9uRWRpdGluZyhzdGF0dXMpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nID0gc3RhdHVzXHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICB0aGlzLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICB0aGlzLmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICB0aGlzLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICB0aGlzLmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgaWYodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICAgICAgdGhpcy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ID0gcG9zaXRpb25zLmFsdFxyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5ldmVudCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91cykge1xyXG4gICAgICAgIHRoaXMubG5nID0gdGhpcy5wcmV2aW91cy5wb3NpdGlvbi5sbmdcclxuICAgICAgICB0aGlzLmxhdCA9IHRoaXMucHJldmlvdXMucG9zaXRpb24ubGF0XHJcbiAgICAgICAgdGhpcy5hbHQgPSB0aGlzLnByZXZpb3VzLnBvc2l0aW9uLmFsdFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcbiAgb3BlblBvc2l0aW9uRWRpdGluZyhjZCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IGNkXHJcbiAgfVxyXG4gIGNsb3NlUG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFeHBsb3Npb25cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF5Q0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdkRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBaEVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQThGQTtBQUNBO0FBQUE7QUF6RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUE7QUFBQTtBQUFBO0FBbldBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBaVVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Explosion/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/FlowLine/_element.js": -/*!*******************************************!*\ - !*** ./src/Obj/Base/FlowLine/_element.js ***! - \*******************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u98DE\\u7EBF\\u6570\\u91CF\\n
\\n \\n \\n
\\n
\\n
\\n \\u98DE\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\u98DE\\u7EBF\\u9AD8\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n \\u98DE\\u7EBF\\u9AD8\\u5EA6\\u5DEE\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u5355\\u6B21\\u8FD0\\u52A8\\u65F6\\u957F\\uFF08s\\uFF09\\n
\\n \\n \\n
\\n
\\n
\\n \\u8F68\\u8FF9\\u900F\\u660E\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRmxvd0xpbmUvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvRmxvd0xpbmUvX2VsZW1lbnQuanM/M2IwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG93TGluZS1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumjnue6v+aVsOmHjzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5OTk5XCIgQG1vZGVsPVwicG9pbnROdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6aOe57q/5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtYXg9XCI5OTk5OVwiIG1pbj1cIjFcIiBzdGVwPVwiMVwiIEBtb2RlbD1cIndpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumjnue6v+mrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwiaGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumjnue6v+mrmOW6puW3rjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWF4PVwiOTk5OTlcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJoZWlnaHREaWZmZXJlbmNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Y2V5qyh6L+Q5Yqo5pe26ZW/77yIc++8iTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWF4PVwiOTk5OTk5OTk5XCIgbWluPVwiMVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwiZHVyYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L2o6L+56YCP5piO5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtYXg9XCIxXCIgbWluPVwiMC4wMVwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwibGluZUJhY2tBbHBoYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0VBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/FlowLine/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/FlowLine/index.js": -/*!****************************************!*\ - !*** ./src/Obj/Base/FlowLine/index.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/FlowLine/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Draw_drawRect__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Draw/drawRect */ \"./src/Draw/drawRect.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Materail_FlowLineMaterialProperty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../Materail/FlowLineMaterialProperty */ \"./src/Obj/Materail/FlowLineMaterialProperty.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 水面\r\n */\n\n\n\n\n\n\n\n\n\n\nvar FlowLine = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 流光飞线\r\n * @param options {object} 流光飞线属性\r\n * @param options.name=未命名对象 {string} 名称\r\n * @param options.pointNumber=300 {number} 线数量\r\n * @param options.height=200 {number} 线高度\r\n * @param options.heightDifference=3000 {number} 线高度差\r\n * @param options.width=2 {number} 线宽\r\n * @param options.duration=10.0 {number} 单次运动时间\r\n * @param options.color=rgba(255,255,255,1) {string} 颜色\r\n * @param options.lineBackAlpha=0.05 {number} 轨迹颜色(不能为0)\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function FlowLine(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, FlowLine);\n _this2 = _callSuper(this, FlowLine, [sdk, options]);\n _this2.viewer = _this2.sdk.viewer;\n _this2.options.name = options.name || '飞线';\n _this2.options.pointNumber = options.pointNumber || 200;\n _this2.options.height = options.height || 200;\n _this2.options.heightDifference = options.heightDifference || 3000;\n _this2.options.width = options.width || 2;\n _this2.options.duration = options.duration || 10.0;\n _this2.options.color = options.color || \"rgba(255,255,255,1)\";\n _this2.options.lineBackAlpha = options.lineBackAlpha || 0.05;\n _this2.options.positions = options.positions || [];\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this2._elms = {};\n _this2.positionArea = [];\n _this2.positions = [];\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n // FlowLine.create(this)\n FlowLine.drawLine(_this2);\n return _this2;\n }\n\n // 创建水面\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(FlowLine, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(FlowLine, [{\n key: \"getRandomPointsInCesiumPolygon\",\n value: function getRandomPointsInCesiumPolygon(positions, count) {\n var lons = [],\n lats = [],\n posi = [];\n positions.forEach(function (item) {\n lons.push(item.lng);\n lats.push(item.lat);\n posi.push([item.lng, item.lat]);\n });\n posi.push([posi[0][0], posi[0][1]]);\n var minLon = Math.min.apply(Math, lons),\n maxLon = Math.max.apply(Math, lons);\n var minLat = Math.min.apply(Math, lats),\n maxLat = Math.max.apply(Math, lats);\n var points = [];\n var that = this;\n while (points.length < count) {\n var lon = minLon + Math.random() * (maxLon - minLon);\n var lat = minLat + Math.random() * (maxLat - minLat);\n // const cartesian = Cesium.Cartesian3.fromDegrees(lon, lat);\n var point = turf.point([lon, lat]);\n var polygon = turf.polygon([posi]);\n var isInside = turf.booleanPointInPolygon(point, polygon);\n if (isInside) {\n var _posi = Cesium.Cartesian3.fromDegrees(lon, lat);\n var cartographic = that.viewer.scene.globe.ellipsoid.cartesianToCartographic(_posi);\n var height = cartographic.height;\n points.push([lon, lat, height]);\n }\n }\n return points;\n }\n }, {\n key: \"getLine\",\n value: function getLine(that, positions) {\n var num = 0;\n var celiangEntity = null;\n if (that.viewer.entities.getById(that.options.id)) {\n that.viewer.entities.getById(that.options.id)._children.forEach(function (item) {\n that.viewer.entities.remove(item);\n });\n that.viewer.entities.remove(that.viewer.entities.getById(that.options.id));\n }\n celiangEntity = that.viewer.entities.add(new Cesium.Entity({\n id: that.options.id,\n show: that.options.show\n }));\n positions.forEach(function (item, index) {\n var point = item;\n //根据点设置起始点位置\n // let start = Cesium.Cartesian3.fromDegrees(point[0], point[1], 0)\n var start = Cesium.Cartesian3.fromDegrees(point[0], point[1], point[2]);\n //根据点设置结束点位置\n var end = Cesium.Cartesian3.fromDegrees(point[0], point[1], point[2] + that.options.height + Math.random() * that.options.heightDifference);\n //创建线\n that.viewer.entities.add({\n parent: celiangEntity,\n id: that.options.id + '-' + new Date().getTime() + index,\n polyline: {\n positions: [start, end],\n width: that.options.width,\n // material:Cesium.Color.RED\n material: new Cesium.FlowLineMaterialProperty({\n color: that.options.color,\n duration: that.options.duration,\n lineBackAlpha: that.options.lineBackAlpha,\n num: num\n })\n }\n });\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n entity._children.forEach(function (item) {\n item.polyline.material.color = Cesium.Color.fromCssColorString(v);\n });\n }\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = picker;\n });\n }\n }\n }, {\n key: \"pointNumber\",\n get: function get() {\n return this.options.pointNumber;\n },\n set: function set(v) {\n this.options.pointNumber = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n var posis = this.getRandomPointsInCesiumPolygon(this.positionArea, this.options.pointNumber);\n this.positions = posis;\n this.getLine(this, posis);\n }\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n this.getLine(this, this.positions);\n }\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n entity.show = v;\n }\n }\n }, {\n key: \"heightDifference\",\n get: function get() {\n return this.options.heightDifference;\n },\n set: function set(v) {\n this.options.heightDifference = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n this.getLine(this, this.positions);\n }\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.options.width;\n },\n set: function set(v) {\n this.options.width = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n entity._children.forEach(function (item) {\n item.polyline.width = v;\n });\n }\n }\n }, {\n key: \"duration\",\n get: function get() {\n return this.options.duration;\n },\n set: function set(v) {\n this.options.duration = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n entity._children.forEach(function (item) {\n item.polyline.material.duration = v;\n });\n }\n }\n }, {\n key: \"lineBackAlpha\",\n get: function get() {\n return this.options.lineBackAlpha;\n },\n set: function set(v) {\n this.options.lineBackAlpha = v;\n var entity = this.viewer.entities.getById(this.options.id);\n if (entity) {\n entity._children.forEach(function (item) {\n item.polyline.material.lineBackAlpha = v;\n });\n }\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var _this4 = this;\n var state,\n _this,\n contentElm,\n waterColorPicker,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 19;\n break;\n }\n _context.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk, this.originalOptions, {\n title: '飞线属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this4.name = _this4.name.trim();\n if (!_this4.name) {\n // this.name = '未命名对象'\n _this4.name = '飞线';\n }\n _this4.originalOptions = _this4.deepCopyObj(_this4.options);\n _this4._DialogObject.close();\n _this4.Dialog.confirmCallBack && _this4.Dialog.confirmCallBack(_this4.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(_this4.sdk, _this4.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(_this4.sdk, _this4.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this4.reset();\n _this4.Dialog.resetCallBack && _this4.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this4.Dialog.removeCallBack && _this4.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this4.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this4.Dialog.closeCallBack && _this4.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this4.show = show;\n _this4.Dialog.showCallBack && _this4.Dialog.showCallBack();\n }\n }, true);\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' flow-line-surface';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_9__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n waterColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"flowLine-color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this4.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [waterColorPicker];\n _context.next = 19;\n break;\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.viewer.entities.getById(this.options.id)) {\n return;\n }\n this.name = this.originalOptions.name;\n this.pointNumber = this.originalOptions.pointNumber;\n this.height = this.originalOptions.height;\n this.heightDifference = this.originalOptions.heightDifference;\n this.width = this.originalOptions.width;\n this.duration = this.originalOptions.duration;\n this.color = this.originalOptions.color;\n this.lineBackAlpha = this.originalOptions.lineBackAlpha;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n i,\n a,\n BoundingSphere,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeViewFollow\"])(this.sdk);\n if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n // if (!position.hasOwnProperty('alt')) {\n // position.alt = await this.getClampToHeight(position)\n // }\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n } else {\n positionArray = [];\n for (i = 0; i < this.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.positions[i][0], this.positions[i][1], this.positions[i][2] + this.options.height + this.options.heightDifference / 2);\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-20.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"getSphere\",\n value: function getSphere() {\n var _this5 = this;\n return new Promise(function (resolve) {\n // entity没有加载完成时 state 不会等于0 所以设置定时器直到获取到为止\n var interval = setInterval(function () {\n var sphere = new Cesium.BoundingSphere();\n var state = _this5.sdk.viewer._dataSourceDisplay.getBoundingSphere(_this5.viewer.entities.getById(_this5.options.id), false, sphere);\n if (state === Cesium.BoundingSphereState.DONE) {\n clearInterval(interval);\n }\n }, 1000);\n });\n }\n\n /**\r\n * 删除\r\n */\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n var _this6 = this;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (this.viewer.entities.getById(this.options.id)) {\n this.viewer.entities.getById(this.options.id)._children.forEach(function (item) {\n _this6.viewer.entities.remove(item);\n });\n this.viewer.entities.remove(this.viewer.entities.getById(this.options.id));\n }\n this.positions = [];\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 6;\n return this.sdk.removeIncetance(this.options.id);\n case 6:\n _context3.next = 8;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(this.sdk, this.options.id);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n // let Draw = new DrawRect(that.sdk)\n // Draw.start((a, positions) => {\n // that.positions = positions\n // that.getLine(that, that.positions)\n // that.edit(true)\n // })\n\n var Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk);\n Draw.start(function (a, positions) {\n that.positionArea = positions;\n var posis = that.getRandomPointsInCesiumPolygon(positions, that.options.pointNumber);\n that.positions = posis;\n that.getLine(that, posis);\n that.edit(true);\n });\n }\n }, {\n key: \"drawLine\",\n value: function drawLine(that) {\n that.positionArea = that.options.positions;\n var posis = that.getRandomPointsInCesiumPolygon(that.options.positions, that.options.pointNumber);\n that.positions = posis;\n that.getLine(that, posis);\n // that.edit(true)\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlowLine);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRmxvd0xpbmUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvRmxvd0xpbmUvaW5kZXguanM/MDg5MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGRlc2NyaXB0aW9uIOawtOmdolxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IERyYXdSZWN0IGZyb20gJy4uLy4uLy4uL0RyYXcvZHJhd1JlY3QnXHJcbmltcG9ydCBkcmF3UG9seWdvbiBmcm9tICcuLi8uLi8uLi9EcmF3L2RyYXdQb2x5Z29uJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbmltcG9ydCBGbG93TGluZU1hdGVyaWFsUHJvcGVydHkgZnJvbSBcIi4uLy4uL01hdGVyYWlsL0Zsb3dMaW5lTWF0ZXJpYWxQcm9wZXJ0eVwiO1xyXG5cclxuY2xhc3MgRmxvd0xpbmUgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOa1geWFiemjnue6v1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOa1geWFiemjnue6v+WxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWU95pyq5ZG95ZCN5a+56LGhIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvaW50TnVtYmVyPTMwMCB7bnVtYmVyfSDnur/mlbDph49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQ9MjAwIHtudW1iZXJ9IOe6v+mrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodERpZmZlcmVuY2U9MzAwMCB7bnVtYmVyfSDnur/pq5jluqblt65cclxuICAgKiBAcGFyYW0gb3B0aW9ucy53aWR0aD0yIHtudW1iZXJ9IOe6v+WuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmR1cmF0aW9uPTEwLjAge251bWJlcn0g5Y2V5qyh6L+Q5Yqo5pe26Ze0XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9cmdiYSgyNTUsMjU1LDI1NSwxKSB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lQmFja0FscGhhPTAuMDUge251bWJlcn0g6L2o6L+56aKc6Imy77yI5LiN6IO95Li6MO+8iVxyXG4gICAqIEBwYXJhbSBEaWFsb2cge29iamVjdH0g5by55qGG5a+56LGhXHJcbiAgICogQHBhcmFtIERpYWxvZy5jb25maXJtQ2FsbEJhY2sge2Z1bmN0aW9ufSDlvLnmoYbnoa7orqTml7bnmoTlm57osINcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLnZpZXdlciA9IHRoaXMuc2RrLnZpZXdlclxyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+mjnue6vydcclxuICAgIHRoaXMub3B0aW9ucy5wb2ludE51bWJlciA9IG9wdGlvbnMucG9pbnROdW1iZXIgfHwgMjAwXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQgfHwgMjAwXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0RGlmZmVyZW5jZSA9IG9wdGlvbnMuaGVpZ2h0RGlmZmVyZW5jZSB8fCAzMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMud2lkdGggPSBvcHRpb25zLndpZHRoIHx8IDJcclxuICAgIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24gfHwgMTAuMFxyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCBcInJnYmEoMjU1LDI1NSwyNTUsMSlcIlxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVCYWNrQWxwaGEgPSBvcHRpb25zLmxpbmVCYWNrQWxwaGEgfHwgMC4wNVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5wb3NpdGlvbkFyZWEgPSBbXVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIC8vIEZsb3dMaW5lLmNyZWF0ZSh0aGlzKVxyXG4gICAgRmxvd0xpbmUuZHJhd0xpbmUodGhpcylcclxuICB9XHJcblxyXG4gIC8vIOWIm+W7uuawtOmdolxyXG4gIHN0YXRpYyBjcmVhdGUodGhhdCkge1xyXG4gICAgLy8gbGV0IERyYXcgPSBuZXcgRHJhd1JlY3QodGhhdC5zZGspXHJcbiAgICAvLyBEcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgIC8vICAgdGhhdC5wb3NpdGlvbnMgPSBwb3NpdGlvbnNcclxuICAgIC8vICAgdGhhdC5nZXRMaW5lKHRoYXQsIHRoYXQucG9zaXRpb25zKVxyXG4gICAgLy8gICB0aGF0LmVkaXQodHJ1ZSlcclxuICAgIC8vIH0pXHJcblxyXG4gICAgbGV0IERyYXcgPSBuZXcgZHJhd1BvbHlnb24odGhhdC5zZGspXHJcbiAgICBEcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgICAgdGhhdC5wb3NpdGlvbkFyZWEgPSBwb3NpdGlvbnNcclxuICAgICAgbGV0IHBvc2lzID0gdGhhdC5nZXRSYW5kb21Qb2ludHNJbkNlc2l1bVBvbHlnb24ocG9zaXRpb25zLCB0aGF0Lm9wdGlvbnMucG9pbnROdW1iZXIpXHJcbiAgICAgIHRoYXQucG9zaXRpb25zID0gcG9zaXNcclxuICAgICAgdGhhdC5nZXRMaW5lKHRoYXQsIHBvc2lzKVxyXG4gICAgICB0aGF0LmVkaXQodHJ1ZSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIHN0YXRpYyBkcmF3TGluZSh0aGF0KSB7XHJcbiAgICB0aGF0LnBvc2l0aW9uQXJlYSA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGxldCBwb3NpcyA9IHRoYXQuZ2V0UmFuZG9tUG9pbnRzSW5DZXNpdW1Qb2x5Z29uKHRoYXQub3B0aW9ucy5wb3NpdGlvbnMsIHRoYXQub3B0aW9ucy5wb2ludE51bWJlcilcclxuICAgIHRoYXQucG9zaXRpb25zID0gcG9zaXNcclxuICAgIHRoYXQuZ2V0TGluZSh0aGF0LCBwb3NpcylcclxuICAgIC8vIHRoYXQuZWRpdCh0cnVlKVxyXG4gIH1cclxuICBnZXRSYW5kb21Qb2ludHNJbkNlc2l1bVBvbHlnb24ocG9zaXRpb25zLCBjb3VudCkge1xyXG4gICAgbGV0IGxvbnMgPSBbXSwgbGF0cyA9IFtdLCBwb3NpID0gW11cclxuICAgIHBvc2l0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBsb25zLnB1c2goaXRlbS5sbmcpXHJcbiAgICAgIGxhdHMucHVzaChpdGVtLmxhdClcclxuICAgICAgcG9zaS5wdXNoKFtpdGVtLmxuZywgaXRlbS5sYXRdKVxyXG4gICAgfSlcclxuICAgIHBvc2kucHVzaChbcG9zaVswXVswXSwgcG9zaVswXVsxXV0pXHJcbiAgICBjb25zdCBtaW5Mb24gPSBNYXRoLm1pbiguLi5sb25zKSwgbWF4TG9uID0gTWF0aC5tYXgoLi4ubG9ucyk7XHJcbiAgICBjb25zdCBtaW5MYXQgPSBNYXRoLm1pbiguLi5sYXRzKSwgbWF4TGF0ID0gTWF0aC5tYXgoLi4ubGF0cyk7XHJcblxyXG4gICAgY29uc3QgcG9pbnRzID0gW107XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIHdoaWxlIChwb2ludHMubGVuZ3RoIDwgY291bnQpIHtcclxuICAgICAgY29uc3QgbG9uID0gbWluTG9uICsgTWF0aC5yYW5kb20oKSAqIChtYXhMb24gLSBtaW5Mb24pO1xyXG4gICAgICBjb25zdCBsYXQgPSBtaW5MYXQgKyBNYXRoLnJhbmRvbSgpICogKG1heExhdCAtIG1pbkxhdCk7XHJcbiAgICAgIC8vIGNvbnN0IGNhcnRlc2lhbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxvbiwgbGF0KTtcclxuICAgICAgbGV0IHBvaW50ID0gdHVyZi5wb2ludChbbG9uLCBsYXRdKTtcclxuICAgICAgY29uc3QgcG9seWdvbiA9IHR1cmYucG9seWdvbihbXHJcbiAgICAgICAgcG9zaVxyXG4gICAgICBdKTtcclxuXHJcbiAgICAgIGNvbnN0IGlzSW5zaWRlID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocG9pbnQsIHBvbHlnb24pO1xyXG4gICAgICBpZiAoaXNJbnNpZGUpIHtcclxuICAgICAgICBsZXQgcG9zaSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxvbiwgbGF0KTtcclxuICAgICAgICBjb25zdCBjYXJ0b2dyYXBoaWMgPSB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocG9zaSk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY2FydG9ncmFwaGljLmhlaWdodDtcclxuXHJcbiAgICAgICAgcG9pbnRzLnB1c2goW1xyXG4gICAgICAgICAgbG9uLFxyXG4gICAgICAgICAgbGF0LFxyXG4gICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwb2ludHM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBnZXRMaW5lKHRoYXQsIHBvc2l0aW9ucykge1xyXG4gICAgbGV0IG51bSA9IDBcclxuICAgIGxldCBjZWxpYW5nRW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoYXQudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhhdC5vcHRpb25zLmlkKSkge1xyXG4gICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoYXQub3B0aW9ucy5pZCkuX2NoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGF0Lm9wdGlvbnMuaWQpKVxyXG4gICAgfVxyXG4gICAgY2VsaWFuZ0VudGl0eSA9IHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChuZXcgQ2VzaXVtLkVudGl0eSh7IGlkOiB0aGF0Lm9wdGlvbnMuaWQsIHNob3c6IHRoYXQub3B0aW9ucy5zaG93IH0pKVxyXG5cclxuICAgIHBvc2l0aW9ucy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgcG9pbnQgPSBpdGVtXHJcbiAgICAgIC8v5qC55o2u54K56K6+572u6LW35aeL54K55L2N572uXHJcbiAgICAgIC8vIGxldCBzdGFydCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvaW50WzBdLCBwb2ludFsxXSwgMClcclxuICAgICAgbGV0IHN0YXJ0ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9pbnRbMF0sIHBvaW50WzFdLCBwb2ludFsyXSlcclxuICAgICAgLy/moLnmja7ngrnorr7nva7nu5PmnZ/ngrnkvY3nva5cclxuICAgICAgbGV0IGVuZCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvaW50WzBdLCBwb2ludFsxXSwgcG9pbnRbMl0gKyB0aGF0Lm9wdGlvbnMuaGVpZ2h0ICsgTWF0aC5yYW5kb20oKSAqIHRoYXQub3B0aW9ucy5oZWlnaHREaWZmZXJlbmNlKVxyXG4gICAgICAvL+WIm+W7uue6v1xyXG4gICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIHBhcmVudDogY2VsaWFuZ0VudGl0eSxcclxuICAgICAgICBpZDogdGhhdC5vcHRpb25zLmlkICsgJy0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBpbmRleCxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBbc3RhcnQsIGVuZF0sXHJcbiAgICAgICAgICB3aWR0aDogdGhhdC5vcHRpb25zLndpZHRoLFxyXG4gICAgICAgICAgLy8gbWF0ZXJpYWw6Q2VzaXVtLkNvbG9yLlJFRFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uRmxvd0xpbmVNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvcixcclxuICAgICAgICAgICAgZHVyYXRpb246IHRoYXQub3B0aW9ucy5kdXJhdGlvbixcclxuICAgICAgICAgICAgbGluZUJhY2tBbHBoYTogdGhhdC5vcHRpb25zLmxpbmVCYWNrQWxwaGEsXHJcbiAgICAgICAgICAgIG51bTogbnVtXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICB9XHJcblxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2XHJcbiAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgIGVudGl0eS5fY2hpbGRyZW4uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnBvbHlsaW5lLm1hdGVyaWFsLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBnZXQgcG9pbnROdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvaW50TnVtYmVyXHJcbiAgfVxyXG4gIHNldCBwb2ludE51bWJlcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9pbnROdW1iZXIgPSB2XHJcbiAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgIGxldCBwb3NpcyA9IHRoaXMuZ2V0UmFuZG9tUG9pbnRzSW5DZXNpdW1Qb2x5Z29uKHRoaXMucG9zaXRpb25BcmVhLCB0aGlzLm9wdGlvbnMucG9pbnROdW1iZXIpXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gcG9zaXNcclxuICAgICAgdGhpcy5nZXRMaW5lKHRoaXMsIHBvc2lzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSB2XHJcbiAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgIHRoaXMuZ2V0TGluZSh0aGlzLCB0aGlzLnBvc2l0aW9ucylcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdlxyXG4gICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgaWYgKGVudGl0eSkge1xyXG4gICAgICBlbnRpdHkuc2hvdyA9IHZcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHREaWZmZXJlbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHREaWZmZXJlbmNlXHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0RGlmZmVyZW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0RGlmZmVyZW5jZSA9IHZcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgdGhpcy5nZXRMaW5lKHRoaXMsIHRoaXMucG9zaXRpb25zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy53aWR0aFxyXG4gIH1cclxuXHJcbiAgc2V0IHdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IHZcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgZW50aXR5Ll9jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0ucG9seWxpbmUud2lkdGggPSB2XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBkdXJhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb25cclxuICB9XHJcbiAgc2V0IGR1cmF0aW9uKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA9IHZcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgZW50aXR5Ll9jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0ucG9seWxpbmUubWF0ZXJpYWwuZHVyYXRpb24gPSB2XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsaW5lQmFja0FscGhhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lQmFja0FscGhhXHJcbiAgfVxyXG4gIHNldCBsaW5lQmFja0FscGhhKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lQmFja0FscGhhID0gdlxyXG4gICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgaWYgKGVudGl0eSkge1xyXG4gICAgICBlbnRpdHkuX2NoaWxkcmVuLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5wb2x5bGluZS5tYXRlcmlhbC5saW5lQmFja0FscGhhID0gdlxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIOe8lui+keahhlxyXG4gICAqIEBwYXJhbSBzdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g54q25oCBOiB0cnVl5omT5byALCBmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUgPSBmYWxzZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICAvLyBsZXQgZWxtcyA9IHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1iYXNlLWRpYWxvZycpXHJcbiAgICAvLyBmb3IgKGxldCBpID0gZWxtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChlbG1zW2ldKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+mjnue6v+WxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn6aOe57q/J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgICAgICAvLyAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgZmxvdy1saW5lLXN1cmZhY2UnXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCB3YXRlckNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJmbG93TGluZS1jb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW3dhdGVyQ29sb3JQaWNrZXJdXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZiAodGhpcy5fZWxlbWVudF9zdHlsZSkge1xyXG4gICAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSlcclxuICAgICAgLy8gICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMucG9pbnROdW1iZXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb2ludE51bWJlclxyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5oZWlnaHRcclxuICAgIHRoaXMuaGVpZ2h0RGlmZmVyZW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmhlaWdodERpZmZlcmVuY2VcclxuICAgIHRoaXMud2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy53aWR0aFxyXG4gICAgdGhpcy5kdXJhdGlvbiA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmR1cmF0aW9uXHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMubGluZUJhY2tBbHBoYSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmVCYWNrQWxwaGFcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDpo57liLDlr7nlupTlrp7kvZNcclxuICAgKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIC8vIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgIC8vICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tpXVswXSxcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zW2ldWzFdLFxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV1bMl0gKyB0aGlzLm9wdGlvbnMuaGVpZ2h0ICsgdGhpcy5vcHRpb25zLmhlaWdodERpZmZlcmVuY2UgLyAyXHJcbiAgICAgICAgKVxyXG4gICAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtMjAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTcGhlcmUoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgLy8gZW50aXR55rKh5pyJ5Yqg6L295a6M5oiQ5pe2IHN0YXRlIOS4jeS8muetieS6jjAg5omA5Lul6K6+572u5a6a5pe25Zmo55u05Yiw6I635Y+W5Yiw5Li65q2iXHJcbiAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNwaGVyZSA9IG5ldyBDZXNpdW0uQm91bmRpbmdTcGhlcmUoKVxyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zZGsudmlld2VyLl9kYXRhU291cmNlRGlzcGxheS5nZXRCb3VuZGluZ1NwaGVyZShcclxuICAgICAgICAgIHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKSxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgc3BoZXJlXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlU3RhdGUuRE9ORSkge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZCkuX2NoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpKVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRmxvd0xpbmVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwQkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBakNBO0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBbkZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkE7QUFBQTtBQUFBO0FBOWJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQTJhQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/FlowLine/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/FlyRoam/_element.js": -/*!******************************************!*\ - !*** ./src/Obj/Base/FlyRoam/_element.js ***! - \******************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\u8BBE\\u7F6E\\u603B\\u65F6\\u957F\\n
\\n \\n \\u79D2(s)\\n \\n
\\n
\\n
\\n \\n \\u662F\\u5426\\u5FAA\\u73AF\\u64AD\\u653E\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\u5E8F\\u53F7
\\n
\\u65F6\\u957F(s)
\\n
\\u64CD\\u4F5C
\\n
\\n
\\n
\\n
\\n
\\n

\\u6682\\u65E0\\u6570\\u636E

\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRmx5Um9hbS9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9GbHlSb2FtL19lbGVtZW50LmpzPzhiMjciXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaHRtbCgpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiaXNUb3RhbFRpbWVcIiBzdHlsZT1cIndpZHRoOiAxNnB4OyBsaW5lLWhlaWdodDogMTVweDsgaGVpZ2h0OiAxNXB4OyBjdXJzb3I6IHBvaW50ZXI7IHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orr7nva7mgLvml7bplb88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCB0b3RhbC10aW1lXCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OS45OVwiIHN0ZXA9XCIwLjAxXCIgbmFtZT1cInRvdGFsVGltZVwiIHZhbHVlPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiIHN0eWxlPVwidG9wOiA2cHg7XCI+56eSKHMpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwicmVwZWF0XCIgc3R5bGU9XCJ3aWR0aDogMTZweDsgbGluZS1oZWlnaHQ6IDE1cHg7IGhlaWdodDogMTVweDsgY3Vyc29yOiBwb2ludGVyOyB3aWR0aDogYXV0bzsgbWFyZ2luLXJpZ2h0OiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5piv5ZCm5b6q546v5pKt5pS+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZC1wb2ludFwiPjxzdmcgY2xhc3M9XCJpY29uLWFkZFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWFkZFwiPjwvdXNlPjwvc3ZnPuWinuWKoOinhueCuTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1vZGlmeS1wb2ludFwiPjxzdmcgY2xhc3M9XCJpY29uLWVkaXRcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1lZGl0XCI+PC91c2U+PC9zdmc+6LCD5pW06KeG54K5PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWZyZXNoUGxheVwiPjxzdmcgY2xhc3M9XCJpY29uLXBsYXlcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1wbGF5XCI+PC91c2U+PC9zdmc+5pKt5pS+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2Vhc2VcIj48c3ZnIGNsYXNzPVwiaWNvbi1wYXVzZVwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXBhdXNlXCI+PC91c2U+PC9zdmc+57uT5p2fPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+5bqP5Y+3PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+5pe26ZW/KHMpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+5pON5L2cPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1lbXB0eVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWltZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHA+5pqC5peg5pWw5o2uPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUErREE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/FlyRoam/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/FlyRoam/index.js": -/*!***************************************!*\ - !*** ./src/Obj/Base/FlyRoam/index.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/FlyRoam/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n/**\r\n * @description 飞行漫游\r\n */\n\n\n\n\nvar _clickHandler = /*#__PURE__*/new WeakMap();\nvar FlyRoam = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 飞行漫游\r\n * @param options {object}\r\n * @param options.id {string} 标注id\r\n * @param options.name {string} 名称\r\n * @param options.repeat=0 {number} 重复次数\r\n * @param options.points=[]] {array} 视点列表\r\n * @param options.points[].position {object} 视点位置\r\n * @param options.points[].position.lng {number} 经度\r\n * @param options.points[].position.lat {number} 纬度\r\n * @param options.points[].position.alt {number} 高度\r\n * @param options.points[].orientation {object} 视点方向\r\n * @param options.points[].orientation.heading=0 {number} 视点航向角\r\n * @param options.points[].orientation.pitch=0 {number} 视点俯仰角\r\n * @param options.points[].orientation.roll=0 {number} 视点翻滚角\r\n * @param options.points[].duration=0 {number} 持续时间\r\n **/\n function FlyRoam(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, FlyRoam);\n _this2 = _callSuper(this, FlyRoam, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _clickHandler, undefined);\n _this2.options.id = options.id || _this2.randomString();\n _this2.options.name = options.name || '漫游路径';\n _this2.options.points = options.points || [];\n if (_this2.options.repeat) {\n _this2.options.repeat = Number(_this2.options.repeat);\n }\n _this2.Dialog = _Dialog;\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(FlyRoam, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(FlyRoam, [{\n key: \"repeat\",\n get: function get() {\n return this.options.repeat;\n }\n\n /**设置循环次数 (Infinity: 无限循环)*/,\n set: function set(v) {\n if (this.options.repeat != Number(v)) {\n this.options.repeat = Number(v);\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n var repeatElm = this._DialogObject._element.content.querySelector(\"input[name='repeat']\");\n if (v === Infinity) {\n repeatElm.checked = true;\n } else {\n repeatElm.checked = false;\n }\n this.Dialog.changeRepeatStateCallBack && this.Dialog.changeRepeatStateCallBack(repeatElm.checked);\n }\n }\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(state) {\n var _this3 = this;\n var _this, viewer, active, addTrElm, contentElm, all_elm, tableBody, tableEmpty, handler, i, points, nameElm, addListBtn, endBtn, flyBtn, addBtn, modifyBtn, totalTimeElm, isTotalTimeElm, repeatElm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this = this;\n viewer = this.sdk.viewer;\n active = 0;\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 44;\n break;\n }\n // Object.defineProperty(options, 'points', {\n // get() {\n // return e_allArea.value\n // },\n // set(value) {\n // e_allArea.value = value\n // }\n // })\n addTrElm = function addTrElm(data) {\n var trList = tableBody.getElementsByClassName('tr');\n if (trList.length > 0) {\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = undefined;\n }\n var tr_active = tableBody.getElementsByClassName('tr active')[0];\n tr_active && (tr_active.className = 'tr');\n var tr = document.createElement('div');\n tr.className = 'tr active';\n tr.innerHTML = \"\\n
\\u89C6\\u70B9\".concat(i + 1, \"
\\n
\\n \\n
\\n
\\n
\\n \");\n tr.addEventListener('click', function (v) {\n if (v.target.parentNode === tr) {\n var _tr_active = tableBody.getElementsByClassName('tr active')[0];\n _tr_active && (_tr_active.className = 'tr');\n tr.className = 'tr active';\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n active = m + 1;\n break;\n }\n }\n }\n });\n tr.addEventListener('dblclick', function (v) {\n if (v.target.parentNode === tr) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[m].position.lng, points[m].position.lat, points[m].position.alt),\n orientation: points[m].orientation,\n duration: 1\n });\n break;\n }\n }\n }\n });\n var e_play = tr.getElementsByClassName('play')[0];\n var e_delete = tr.getElementsByClassName('delete')[0];\n var e_time = tr.querySelector(\"input[name='time']\");\n e_play.addEventListener('click', function () {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode) {\n _this.flyTo(m);\n }\n }\n });\n e_delete.addEventListener(\"click\", function (v) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode) {\n points.splice(m, 1);\n points[points.length - 1].duration = 0;\n _this.options.points.splice(m, 1);\n tableBody.removeChild(tr);\n if (active > m + 1) {\n active--;\n trList[active - 1].className = 'tr active';\n } else if (active == m + 1) {\n if (trList.length == m) {\n active -= 1;\n }\n if (trList.length != 0) {\n trList[active - 1].className = 'tr active';\n }\n }\n // else if(active == m) {\n // console.log(trList.length-1, active)\n // if (trList.length == active-1) {\n // trList[active-2].className = 'tr active'\n // }\n // else {\n // trList[active-1].className = 'tr active'\n // }\n // }\n if (trList.length > 0) {\n var lastElm = trList[trList.length - 1].querySelector(\"input[name='time']\");\n lastElm.disabled = 'disabled';\n lastElm.value = 0;\n }\n break;\n }\n }\n // points.splice(i, 1)\n // tableBody.removeChild(tr)\n // if (trList.length > 0) {\n // trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled'\n // }\n });\n e_time.addEventListener('input', function (v) {\n isTotalTimeElm.checked = false;\n data.duration = Number(e_time.value);\n if (data.duration < 0) {\n data.duration = 0;\n }\n });\n e_time.addEventListener('blur', function () {\n e_time.value = Number(Number(e_time.value).toFixed(2));\n if (e_time.value < 0) {\n e_time.value = 0;\n }\n });\n tableBody.insertBefore(tr, trList[active]);\n active++;\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled';\n };\n _context.next = 8;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_7__[\"default\"](viewer._container, {\n title: '飞行漫游',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n _this3.cease();\n }\n });\n case 8:\n this._DialogObject = _context.sent;\n _context.next = 11;\n return this._DialogObject.init();\n case 11:\n contentElm = document.createElement('div');\n contentElm.className = 'fly-roam';\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_8__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\"); // EventBinding(all_elm)\n tableBody = contentElm.getElementsByClassName('table-body')[0];\n tableEmpty = contentElm.getElementsByClassName('table-empty')[0];\n handler = {\n set: function set(target, prop, value) {\n target[prop] = value;\n if (target.length > 0) {\n tableEmpty.style.display = 'none';\n } else {\n tableEmpty.style.display = 'flex';\n }\n return true;\n }\n };\n i = 0;\n points = new Proxy([], handler);\n for (i = 0; i < this.options.points.length; i++) {\n points.push(this.options.points[i]);\n addTrElm(this.options.points[i]);\n }\n\n // let nameImputBoxElm = contentElm.getElementsByClassName('input-box')[0]\n // check(nameImputBoxElm, { validator: 'notEmpty', message: '名称不能为空!', trigger: 'input' })\n nameElm = contentElm.querySelector(\"input[name='name']\");\n nameElm.value = this.name;\n nameElm.addEventListener('input', function () {\n _this3.name = nameElm.value;\n });\n addListBtn = document.createElement('button');\n addListBtn.innerHTML = '保存';\n addListBtn.addEventListener('click', function () {\n if (!_this3.name) {\n _this3.name = '漫游路径';\n nameElm.value = _this3.name;\n }\n var newPoints = [];\n points.map(function (item) {\n newPoints.push(item);\n });\n _this3._DialogObject.close();\n _this3.Dialog.confirmCallBack && _this3.Dialog.confirmCallBack({\n id: _this3.options.id,\n name: _this3.name,\n points: newPoints,\n repeat: _this3.repeat + ''\n });\n });\n this._DialogObject.footAppChild(addListBtn);\n endBtn = contentElm.getElementsByClassName('cease')[0];\n endBtn.addEventListener('click', function () {\n viewer.camera.cancelFlight();\n });\n flyBtn = contentElm.getElementsByClassName('afreshPlay')[0];\n flyBtn.addEventListener('click', function () {\n if (points.length > 0) {\n _this3.flyTo(0);\n }\n });\n addBtn = contentElm.getElementsByClassName('add-point')[0];\n addBtn.addEventListener('click', function () {\n var position = _this3.cartesian3Towgs84(viewer.camera.position, viewer);\n var time = 0;\n var data = {\n duration: time,\n position: position,\n orientation: {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n }\n };\n points.splice(active, 0, data);\n _this3.options.points.splice(active, 0, data);\n addTrElm(data);\n i++;\n });\n modifyBtn = contentElm.getElementsByClassName('modify-point')[0];\n modifyBtn.addEventListener('click', function () {\n if (!active) {\n return;\n }\n var position = _this3.cartesian3Towgs84(viewer.camera.position, viewer);\n _this3.options.points[active - 1].position = points[active - 1].position = position;\n _this3.options.points[active - 1].orientation = points[active - 1].orientation = {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n };\n _this3.message({\n text: '操作成功'\n });\n });\n totalTimeElm = contentElm.querySelector(\"input[name='totalTime']\");\n isTotalTimeElm = contentElm.querySelector(\"input[name='isTotalTime']\");\n repeatElm = contentElm.querySelector(\"input[name='repeat']\");\n isTotalTimeElm.addEventListener('change', function () {\n var trList = tableBody.getElementsByClassName('tr');\n if (isTotalTimeElm.checked && trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i = 0; _i < trList.length - 1; _i++) {\n points[_i].duration = time;\n _this3.options.points[_i].duration = time;\n trList[_i].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n }\n });\n totalTimeElm.addEventListener('blur', function () {\n var trList = tableBody.getElementsByClassName('tr');\n totalTimeElm.value = Number(totalTimeElm.value);\n if (totalTimeElm.value < 0) {\n totalTimeElm.value = 0;\n }\n if (isTotalTimeElm.checked && trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i2 = 0; _i2 < trList.length - 1; _i2++) {\n points[_i2].duration = time;\n _this3.options.points[_i2].duration = time;\n trList[_i2].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n }\n });\n repeatElm.checked = this.repeat === Infinity ? true : false;\n repeatElm.addEventListener('change', function () {\n if (repeatElm.checked) {\n _this3.repeat = Infinity;\n } else {\n _this3.repeat = 0;\n }\n });\n case 44:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n var _this4 = this;\n var i = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"setActiveViewer\"])(0);\n var _this = this;\n var points = this.options.points;\n var currentRepeat = this.repeat;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeRotateAround\"])(_this.sdk);\n var _executeFlyTo = function executeFlyTo() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var noStart = arguments.length > 1 ? arguments[1] : undefined;\n if (_classPrivateFieldGet(_clickHandler, _this4)) {\n _classPrivateFieldGet(_clickHandler, _this4).destroy();\n }\n var _this = _this4;\n _classPrivateFieldSet(_clickHandler, _this4, new Cesium.ScreenSpaceEventHandler(_this.sdk.viewer.canvas));\n _classPrivateFieldGet(_clickHandler, _this4).setInputAction(function (movement) {\n _this4.cease();\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n var viewer = _this.sdk.viewer;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"setActiveViewer\"])(0);\n viewer.camera.cancelFlight();\n // function pauseExecution(seconds) {\n // return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n // }\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[index].position.lng, points[index].position.lat, points[index].position.alt),\n orientation: points[index].orientation,\n duration: noStart ? points[index - 1].duration : 0.5,\n maximumHeight: points[index].position.alt,\n complete: function () {\n var _complete = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n // if (!noStart) {\n // // await pauseExecution(2)\n // }\n index++;\n if (_this4.repeat === Infinity) {\n currentRepeat = Infinity;\n } else if (currentRepeat === Infinity) {\n currentRepeat = _this4.repeat;\n }\n if (index <= points.length - 1) {\n _executeFlyTo(index, true);\n } else if (currentRepeat) {\n currentRepeat--;\n _executeFlyTo(0);\n } else {\n if (_classPrivateFieldGet(_clickHandler, _this4)) {\n _classPrivateFieldGet(_clickHandler, _this4).destroy();\n }\n }\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function complete() {\n return _complete.apply(this, arguments);\n }\n return complete;\n }(),\n easingFunction: noStart ? Cesium.EasingFunction.LINEAR_NONE : Cesium.EasingFunction.EXPONENTIAL_OUT\n });\n };\n _executeFlyTo(i);\n }\n\n /** 停止 */\n }, {\n key: \"cease\",\n value: function cease() {\n this.sdk && this.sdk.viewer && this.sdk.viewer.camera.cancelFlight();\n if (_classPrivateFieldGet(_clickHandler, this)) {\n _classPrivateFieldGet(_clickHandler, this).destroy();\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n } else {\n this.cease();\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlyRoam);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvRmx5Um9hbS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9GbHlSb2FtL2luZGV4LmpzPzJkNTAiXSwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24g6aOe6KGM5ryr5ri4XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEZseVJvYW0gZXh0ZW5kcyBCYXNlIHtcclxuICAjY2xpY2tIYW5kbGVyID0gdW5kZWZpbmVkXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDpo57ooYzmvKvmuLhcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOagh+azqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yZXBlYXQ9MCB7bnVtYmVyfSDph43lpI3mrKHmlbBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb2ludHM9W11dIHthcnJheX0g6KeG54K55YiX6KGoXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9pbnRzW10ucG9zaXRpb24ge29iamVjdH0g6KeG54K55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9pbnRzW10ucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvaW50c1tdLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb2ludHNbXS5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9pbnRzW10ub3JpZW50YXRpb24ge29iamVjdH0g6KeG54K55pa55ZCRXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9pbnRzW10ub3JpZW50YXRpb24uaGVhZGluZz0wIHtudW1iZXJ9IOinhueCueiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvaW50c1tdLm9yaWVudGF0aW9uLnBpdGNoPTAge251bWJlcn0g6KeG54K55L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9pbnRzW10ub3JpZW50YXRpb24ucm9sbD0wIHtudW1iZXJ9IOinhueCuee/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvaW50c1tdLmR1cmF0aW9uPTAge251bWJlcn0g5oyB57ut5pe26Ze0XHJcbiAgICoqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy5pZCA9IG9wdGlvbnMuaWQgfHwgdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+a8q+a4uOi3r+W+hCdcclxuICAgIHRoaXMub3B0aW9ucy5wb2ludHMgPSBvcHRpb25zLnBvaW50cyB8fCBbXVxyXG4gICAgaWYodGhpcy5vcHRpb25zLnJlcGVhdCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucmVwZWF0ID0gTnVtYmVyKHRoaXMub3B0aW9ucy5yZXBlYXQpXHJcbiAgICB9XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICB9XHJcblxyXG4gIGdldCByZXBlYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlcGVhdFxyXG4gIH1cclxuXHJcbiAgLyoq6K6+572u5b6q546v5qyh5pWwIChJbmZpbml0eTog5peg6ZmQ5b6q546vKSovXHJcbiAgc2V0IHJlcGVhdCh2KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnJlcGVhdCAhPSBOdW1iZXIodikpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJlcGVhdCA9IE51bWJlcih2KVxyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICAgIGxldCByZXBlYXRFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ncmVwZWF0J11cIilcclxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgIHJlcGVhdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcGVhdEVsbS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5EaWFsb2cuY2hhbmdlUmVwZWF0U3RhdGVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jaGFuZ2VSZXBlYXRTdGF0ZUNhbGxCYWNrKHJlcGVhdEVsbS5jaGVja2VkKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICBsZXQgdmlld2VyID0gdGhpcy5zZGsudmlld2VyXHJcbiAgICBsZXQgYWN0aXZlID0gMFxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHZpZXdlci5fY29udGFpbmVyLCB7XHJcbiAgICAgICAgdGl0bGU6ICfpo57ooYzmvKvmuLgnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZWFzZSgpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgYXdhaXQgdGhpcy5fRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmNsYXNzTmFtZSA9ICdmbHktcm9hbSdcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICAvLyBFdmVudEJpbmRpbmcoYWxsX2VsbSlcclxuXHJcbiAgICAgIGxldCB0YWJsZUJvZHkgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXTtcclxuICAgICAgbGV0IHRhYmxlRW1wdHkgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF1cclxuXHJcbiAgICAgIGxldCBoYW5kbGVyID0ge1xyXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcclxuICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRhYmxlRW1wdHkuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRhYmxlRW1wdHkuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgbGV0IGkgPSAwXHJcbiAgICAgIGxldCBwb2ludHMgPSBuZXcgUHJveHkoW10sIGhhbmRsZXIpO1xyXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBvaW50cy5wdXNoKHRoaXMub3B0aW9ucy5wb2ludHNbaV0pXHJcbiAgICAgICAgYWRkVHJFbG0odGhpcy5vcHRpb25zLnBvaW50c1tpXSlcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIGxldCBuYW1lSW1wdXRCb3hFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWJveCcpWzBdXHJcbiAgICAgIC8vIGNoZWNrKG5hbWVJbXB1dEJveEVsbSwgeyB2YWxpZGF0b3I6ICdub3RFbXB0eScsIG1lc3NhZ2U6ICflkI3np7DkuI3og73kuLrnqbrvvIEnLCB0cmlnZ2VyOiAnaW5wdXQnIH0pXHJcbiAgICAgIGxldCBuYW1lRWxtID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0nbmFtZSddXCIpXHJcbiAgICAgIG5hbWVFbG0udmFsdWUgPSB0aGlzLm5hbWVcclxuICAgICAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lRWxtLnZhbHVlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWRkTGlzdEJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICBhZGRMaXN0QnRuLmlubmVySFRNTCA9ICfkv53lrZgnXHJcbiAgICAgIGFkZExpc3RCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9ICfmvKvmuLjot6/lvoQnXHJcbiAgICAgICAgICBuYW1lRWxtLnZhbHVlID0gdGhpcy5uYW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdQb2ludHMgPSBbXVxyXG4gICAgICAgIHBvaW50cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIG5ld1BvaW50cy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHMsXHJcbiAgICAgICAgICAgIHJlcGVhdDogdGhpcy5yZXBlYXQrJydcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoYWRkTGlzdEJ0bilcclxuXHJcbiAgICAgIGxldCBlbmRCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NlYXNlJylbMF1cclxuICAgICAgZW5kQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHZpZXdlci5jYW1lcmEuY2FuY2VsRmxpZ2h0KClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBmbHlCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FmcmVzaFBsYXknKVswXVxyXG4gICAgICBmbHlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmZseVRvKDApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGFkZEJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWRkLXBvaW50JylbMF1cclxuICAgICAgYWRkQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgICAgIGxldCB0aW1lID0gMFxyXG4gICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgZHVyYXRpb246IHRpbWUsXHJcbiAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXHJcbiAgICAgICAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgICAgICAgICBoZWFkaW5nOiB2aWV3ZXIuY2FtZXJhLmhlYWRpbmcsXHJcbiAgICAgICAgICAgIHBpdGNoOiB2aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gICAgICAgICAgICByb2xsOiB2aWV3ZXIuY2FtZXJhLnJvbGxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnRzLnNwbGljZShhY3RpdmUsIDAsIGRhdGEpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvaW50cy5zcGxpY2UoYWN0aXZlLCAwLCBkYXRhKVxyXG4gICAgICAgIGFkZFRyRWxtKGRhdGEpXHJcbiAgICAgICAgaSsrXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBtb2RpZnlCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZGlmeS1wb2ludCcpWzBdXHJcbiAgICAgIG1vZGlmeUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBpZiAoIWFjdGl2ZSkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb2ludHNbYWN0aXZlIC0gMV0ucG9zaXRpb24gPSBwb2ludHNbYWN0aXZlIC0gMV0ucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb2ludHNbYWN0aXZlIC0gMV0ub3JpZW50YXRpb24gPSBwb2ludHNbYWN0aXZlIC0gMV0ub3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgICBoZWFkaW5nOiB2aWV3ZXIuY2FtZXJhLmhlYWRpbmcsXHJcbiAgICAgICAgICBwaXRjaDogdmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAgICAgICAgIHJvbGw6IHZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2Uoe3RleHQ6ICfmk43kvZzmiJDlip8nfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCB0b3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0b3RhbFRpbWUnXVwiKVxyXG4gICAgICBsZXQgaXNUb3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdpc1RvdGFsVGltZSddXCIpXHJcbiAgICAgIGxldCByZXBlYXRFbG0gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdyZXBlYXQnXVwiKVxyXG4gICAgICBpc1RvdGFsVGltZUVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHRyTGlzdCA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICAgICAgaWYgKGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgJiYgdHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCB0aW1lID0gTnVtYmVyKChOdW1iZXIodG90YWxUaW1lRWxtLnZhbHVlKSAvICh0ckxpc3QubGVuZ3RoIC0gMSkpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyTGlzdC5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICAgICAgcG9pbnRzW2ldLmR1cmF0aW9uID0gdGltZVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9pbnRzW2ldLmR1cmF0aW9uID0gdGltZVxyXG4gICAgICAgICAgICB0ckxpc3RbaV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IHRpbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRvdGFsVGltZUVsbS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgIHRvdGFsVGltZUVsbS52YWx1ZSA9IE51bWJlcih0b3RhbFRpbWVFbG0udmFsdWUpXHJcbiAgICAgICAgaWYgKHRvdGFsVGltZUVsbS52YWx1ZSA8IDApIHtcclxuICAgICAgICAgIHRvdGFsVGltZUVsbS52YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgJiYgdHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCB0aW1lID0gTnVtYmVyKChOdW1iZXIodG90YWxUaW1lRWxtLnZhbHVlKSAvICh0ckxpc3QubGVuZ3RoIC0gMSkpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyTGlzdC5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICAgICAgcG9pbnRzW2ldLmR1cmF0aW9uID0gdGltZVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9pbnRzW2ldLmR1cmF0aW9uID0gdGltZVxyXG4gICAgICAgICAgICB0ckxpc3RbaV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IHRpbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHJlcGVhdEVsbS5jaGVja2VkID0gKHRoaXMucmVwZWF0ID09PSBJbmZpbml0eSA/IHRydWUgOiBmYWxzZSlcclxuICAgICAgcmVwZWF0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICBpZiAocmVwZWF0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ID0gSW5maW5pdHlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlcGVhdCA9IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0aW9ucywgJ3BvaW50cycsIHtcclxuICAgICAgLy8gICBnZXQoKSB7XHJcbiAgICAgIC8vICAgICByZXR1cm4gZV9hbGxBcmVhLnZhbHVlXHJcbiAgICAgIC8vICAgfSxcclxuICAgICAgLy8gICBzZXQodmFsdWUpIHtcclxuICAgICAgLy8gICAgIGVfYWxsQXJlYS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9KVxyXG5cclxuICAgICAgZnVuY3Rpb24gYWRkVHJFbG0oZGF0YSkge1xyXG4gICAgICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0cl9hY3RpdmUgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHIgYWN0aXZlJylbMF1cclxuICAgICAgICB0cl9hY3RpdmUgJiYgKHRyX2FjdGl2ZS5jbGFzc05hbWUgPSAndHInKVxyXG4gICAgICAgIGxldCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRyLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+6KeG54K5JHtpICsgMX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHRpbWVcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5Ljk5XCIgc3RlcD1cIjAuMDFcIiBuYW1lPVwidGltZVwiIHZhbHVlPVwiJHtkYXRhLmR1cmF0aW9ufVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBhY3Rpb25cIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwbGF5XCI+5pKt5pS+PC9zcGFuPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZVwiPuWIoOmZpDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgXHJcbiAgICAgICAgdHIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAodikgPT4ge1xyXG4gICAgICAgICAgaWYgKHYudGFyZ2V0LnBhcmVudE5vZGUgPT09IHRyKSB7XHJcbiAgICAgICAgICAgIGxldCB0cl9hY3RpdmUgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHIgYWN0aXZlJylbMF1cclxuICAgICAgICAgICAgdHJfYWN0aXZlICYmICh0cl9hY3RpdmUuY2xhc3NOYW1lID0gJ3RyJylcclxuICAgICAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyIGFjdGl2ZSdcclxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICBpZiAodHJMaXN0W21dID09PSB0cikge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlID0gbSArIDFcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0ci5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICh2KSA9PiB7XHJcbiAgICAgICAgICBpZiAodi50YXJnZXQucGFyZW50Tm9kZSA9PT0gdHIpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICBpZiAodHJMaXN0W21dID09PSB0cikge1xyXG4gICAgICAgICAgICAgICAgdmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb2ludHNbbV0ucG9zaXRpb24ubG5nLCBwb2ludHNbbV0ucG9zaXRpb24ubGF0LCBwb2ludHNbbV0ucG9zaXRpb24uYWx0KSxcclxuICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb246IHBvaW50c1ttXS5vcmllbnRhdGlvbixcclxuICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDFcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IGVfcGxheSA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BsYXknKVswXVxyXG4gICAgICAgIGxldCBlX2RlbGV0ZSA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RlbGV0ZScpWzBdXHJcbiAgICAgICAgbGV0IGVfdGltZSA9IHRyLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIilcclxuICAgICAgICBlX3BsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHRyTGlzdC5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICBpZiAodHJMaXN0W21dID09PSBlX2RlbGV0ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5mbHlUbyhtKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBlX2RlbGV0ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKHYpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdHJMaXN0Lmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0ckxpc3RbbV0gPT09IGVfZGVsZXRlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UobSwgMSlcclxuICAgICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aC0xXS5kdXJhdGlvbiA9IDBcclxuICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvaW50cy5zcGxpY2UobSwgMSlcclxuICAgICAgICAgICAgICB0YWJsZUJvZHkucmVtb3ZlQ2hpbGQodHIpXHJcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZSA+IG0gKyAxKSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmUtLVxyXG4gICAgICAgICAgICAgICAgdHJMaXN0W2FjdGl2ZSAtIDFdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZSA9PSBtICsgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggPT0gbSkge1xyXG4gICAgICAgICAgICAgICAgICBhY3RpdmUgLT0gMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0ckxpc3RbYWN0aXZlIC0gMV0uY2xhc3NOYW1lID0gJ3RyIGFjdGl2ZSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gZWxzZSBpZihhY3RpdmUgPT0gbSkge1xyXG4gICAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2codHJMaXN0Lmxlbmd0aC0xLCBhY3RpdmUpXHJcbiAgICAgICAgICAgICAgLy8gICBpZiAodHJMaXN0Lmxlbmd0aCA9PSBhY3RpdmUtMSkge1xyXG4gICAgICAgICAgICAgIC8vICAgICB0ckxpc3RbYWN0aXZlLTJdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyAgICAgdHJMaXN0W2FjdGl2ZS0xXS5jbGFzc05hbWUgPSAndHIgYWN0aXZlJ1xyXG4gICAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICBpZiAodHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCBsYXN0RWxtID0gdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpXHJcbiAgICAgICAgICAgICAgICBsYXN0RWxtLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gICAgICAgICAgICAgICAgbGFzdEVsbS52YWx1ZSA9IDBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gcG9pbnRzLnNwbGljZShpLCAxKVxyXG4gICAgICAgICAgLy8gdGFibGVCb2R5LnJlbW92ZUNoaWxkKHRyKVxyXG4gICAgICAgICAgLy8gaWYgKHRyTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAvLyAgIHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS5kaXNhYmxlZCA9ICdkaXNhYmxlZCdcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGVfdGltZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICh2KSA9PiB7XHJcbiAgICAgICAgICBpc1RvdGFsVGltZUVsbS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICAgIGRhdGEuZHVyYXRpb24gPSBOdW1iZXIoZV90aW1lLnZhbHVlKVxyXG4gICAgICAgICAgaWYgKGRhdGEuZHVyYXRpb24gPCAwKSB7XHJcbiAgICAgICAgICAgIGRhdGEuZHVyYXRpb24gPSAwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBlX3RpbWUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGVfdGltZS52YWx1ZSA9IE51bWJlcihOdW1iZXIoZV90aW1lLnZhbHVlKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgaWYgKGVfdGltZS52YWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgZV90aW1lLnZhbHVlID0gMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRhYmxlQm9keS5pbnNlcnRCZWZvcmUodHIsIHRyTGlzdFthY3RpdmVdKVxyXG4gICAgICAgIGFjdGl2ZSsrXHJcbiAgICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmbHlUbyhpID0gMCkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICBsZXQgcG9pbnRzID0gdGhpcy5vcHRpb25zLnBvaW50c1xyXG4gICAgbGV0IGN1cnJlbnRSZXBlYXQgPSB0aGlzLnJlcGVhdFxyXG5cclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKF90aGlzLnNkaylcclxuICAgIGNvbnN0IGV4ZWN1dGVGbHlUbyA9IChpbmRleCA9IDAsIG5vU3RhcnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuI2NsaWNrSGFuZGxlcikge1xyXG4gICAgICAgIHRoaXMuI2NsaWNrSGFuZGxlci5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICAgIHRoaXMuI2NsaWNrSGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoX3RoaXMuc2RrLnZpZXdlci5jYW52YXMpXHJcbiAgICAgIHRoaXMuI2NsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLmNlYXNlKClcclxuICAgICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG4gICAgICBsZXQgdmlld2VyID0gX3RoaXMuc2RrLnZpZXdlclxyXG4gICAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgICAgdmlld2VyLmNhbWVyYS5jYW5jZWxGbGlnaHQoKVxyXG4gICAgICAvLyBmdW5jdGlvbiBwYXVzZUV4ZWN1dGlvbihzZWNvbmRzKSB7XHJcbiAgICAgIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMTAwMCkpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIHZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb2ludHNbaW5kZXhdLnBvc2l0aW9uLmxuZywgcG9pbnRzW2luZGV4XS5wb3NpdGlvbi5sYXQsIHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0KSxcclxuICAgICAgICBvcmllbnRhdGlvbjogcG9pbnRzW2luZGV4XS5vcmllbnRhdGlvbixcclxuICAgICAgICBkdXJhdGlvbjogbm9TdGFydCA/IHBvaW50c1tpbmRleCAtIDFdLmR1cmF0aW9uIDogMC41LFxyXG4gICAgICAgIG1heGltdW1IZWlnaHQ6IHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0LFxyXG4gICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAvLyBpZiAoIW5vU3RhcnQpIHtcclxuICAgICAgICAgIC8vICAgLy8gYXdhaXQgcGF1c2VFeGVjdXRpb24oMilcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGluZGV4KytcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXQgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRSZXBlYXQgPSBJbmZpbml0eVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlcGVhdCA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgY3VycmVudFJlcGVhdCA9IHRoaXMucmVwZWF0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaW5kZXggPD0gcG9pbnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgZXhlY3V0ZUZseVRvKGluZGV4LCB0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlcGVhdCkge1xyXG4gICAgICAgICAgICBjdXJyZW50UmVwZWF0LS1cclxuICAgICAgICAgICAgZXhlY3V0ZUZseVRvKDApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuI2NsaWNrSGFuZGxlcikge1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NsaWNrSGFuZGxlci5kZXN0cm95KClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVhc2luZ0Z1bmN0aW9uOiBub1N0YXJ0ID8gQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkxJTkVBUl9OT05FIDogQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkVYUE9ORU5USUFMX09VVFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGV4ZWN1dGVGbHlUbyhpKVxyXG5cclxuICB9XHJcblxyXG4gIC8qKiDlgZzmraIgKi9cclxuICBjZWFzZSgpIHtcclxuICAgIHRoaXMuc2RrICYmIHRoaXMuc2RrLnZpZXdlciAmJiB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgICBpZiAodGhpcy4jY2xpY2tIYW5kbGVyKSB7XHJcbiAgICAgIHRoaXMuI2NsaWNrSGFuZGxlci5kZXN0cm95KClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNlYXNlKClcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZseVJvYW0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckJBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQTRKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQXJSQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTEE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErSEE7QUFsU0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvU0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBekJBO0FBQUE7QUFBQTtBQUFBO0FBMEJBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQU1BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/FlyRoam/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/GeoJson/index.js": -/*!***************************************!*\ - !*** ./src/Obj/Base/GeoJson/index.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-03-04 10:39\r\n * @description:index\r\n * @update: 2023-03-04 10:39\r\n */\n\n\n\n\n\n\nvar GeoJson = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @param options {object} 参数\r\n * @param options.id {string} id\r\n * @param options.url {string} geojson地址\r\n * @param [options.color=#ef0606] {string} 线条颜色\r\n * @param [options.width=1] {number} 线条宽度\r\n * @example new YJ.Obj.GeoJson(earth,{id:\"123\",url:\"\"})\r\n * */\n function GeoJson(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, GeoJson);\n _this = _callSuper(this, GeoJson, [sdk, options]);\n _this.primitive = undefined;\n _this.positions = [];\n _this.loading = true;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(GeoJson, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(GeoJson, [{\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n _superPropGet(GeoJson, \"setDefaultValue\", this, 3)([]);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getHost\"])();\n // let url = this.options.url\n // if (this.options.host) {\n // let o = new URL(this.options.url, this.options.host)\n // url = o.href\n // }\n\n // this.options.url = url\n this.options.color = this.options.color || 'rgb(239, 6, 6, 1)';\n this.options.width = this.options.width || 1;\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n }\n\n // set show(status) {\n // let sdkD = get2DSdk().sdkD\n // if (!this.isShowView || !sdkD) {\n // this.options.show = status\n // }\n // if (this.entity) {\n // if (!this.showView || this.showView == 3 || !sdkD) {\n // for (let i = 0; i < this.entity.entities.values.length; i++) {\n // this.entity.entities.values[i].show = this.options.show\n // }\n // }\n // else {\n // for (let i = 0; i < this.entity.entities.values.length; i++) {\n // this.entity.entities.values[i].show = false\n // }\n // }\n // }\n // syncData(this.sdk, this.options.id)\n // syncSplitData(this.sdk, this.options.id)\n // this.isShowView = false\n // }\n ,\n set: function set(status) {\n this.options.show = status;\n if (this.entity) {\n for (var i = 0; i < this.entity.entities.values.length; i++) {\n this.entity.entities.values[i].show = status;\n }\n }\n }\n }, {\n key: \"on\",\n value: function () {\n var _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this2 = this;\n var url, rsp, json, geoJsonDataSource, geojson, i, promise;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = \"\";\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getHost\"])();\n url = this.options.host + '/fileInfo/previewLocal';\n url += '?fileAbsolutePath=' + this.options.url;\n _context.next = 6;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getToken\"])()\n }\n });\n case 6:\n rsp = _context.sent;\n _context.next = 9;\n return rsp.json();\n case 9:\n json = _context.sent;\n this.geojson = json;\n\n /*geojosn暂时只用线的形式*/\n geoJsonDataSource = new Cesium.GeoJsonDataSource();\n geojson = this.deepCopyObj(this.geojson);\n for (i = 0; i < geojson.features.length; i++) {\n if (!geojson.features[i].id) {\n geojson.features[i].id = this.options.id + '_' + i;\n }\n }\n // console.log(geojson)\n promise = geoJsonDataSource.load(geojson, {\n clampToGround: true\n });\n return _context.abrupt(\"return\", promise.then(function (datasource) {\n _this2.entity = datasource;\n datasource.entities.values.forEach(function (enetity) {\n // console.log(enetity)\n var color = Cesium.Color.fromCssColorString(_this2.options.color);\n var colorPolygon = color.withAlpha(0.2);\n enetity.show = _this2.options.show;\n _this2.sdk.viewer.entities.add(enetity);\n if (enetity.billboard) {\n enetity.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n enetity.point = new Cesium.PointGraphics({\n show: true,\n color: color,\n // 点的颜色\n pixelSize: 10,\n // 点的大小\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n disableDepthTestDistance: Number.POSITIVE_INFINITY // 不应用深度测试\n });\n }\n if (enetity.polyline) {\n enetity.polyline.material = color;\n enetity.polyline.zIndex = _this2.sdk._entityZIndex;\n _this2.sdk._entityZIndex++;\n }\n if (enetity.polygon) {\n enetity.polygon.perPositionHeight = false;\n enetity.polygon.material = colorPolygon;\n enetity.polygon.zIndex = _this2.sdk._entityZIndex;\n enetity.polyline = new Cesium.PolylineGraphics({\n positions: enetity.polygon.hierarchy._value.positions,\n width: 1,\n clampToGround: true,\n material: color,\n zIndex: _this2.sdk._entityZIndex\n });\n _this2.sdk._entityZIndex++;\n }\n });\n _this2.loading = false;\n }));\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function on() {\n return _on.apply(this, arguments);\n }\n return on;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n var _this3 = this;\n if (this.entity) {\n this.entity.entities.values.forEach(function (enetity) {\n _this3.sdk.viewer.entities.remove(enetity);\n });\n this.entity = null;\n this.geojson = {};\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var range, orientation, lng, lat, alt, destination, position, _Cesium$Rectangle;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (this.loading) {\n _context2.next = 24;\n break;\n }\n if (!this.geojson) {\n _context2.next = 24;\n break;\n }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeViewFollow\"])(this.sdk);\n range = turf.bbox(this.geojson);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: range[0],\n lat: range[1]\n }; // 如果没有高度值,则获取紧贴高度计算\n _context2.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context2.sent;\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 24;\n break;\n case 23:\n this.viewer.camera.flyTo({\n destination: (_Cesium$Rectangle = Cesium.Rectangle).fromDegrees.apply(_Cesium$Rectangle, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(range))\n });\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (GeoJson);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR2VvSnNvbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9HZW9Kc29uL2luZGV4LmpzPzI5MjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTAzLTA0IDEwOjM5XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMDMtMDQgMTA6MzlcclxuICovXHJcbmltcG9ydCB7IGdldEhvc3QsIGdldFRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCBCYXNlIGZyb20gJy4uL2luZGV4J1xyXG5pbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vLi4vVG9vbHMnXHJcbmltcG9ydCB7IHN5bmNTcGxpdERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IHN5bmNEYXRhLCBnZXRTZGsgYXMgZ2V0MkRTZGsgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEdlb0pzb24gZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5Y+C5pWwXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30gaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy51cmwge3N0cmluZ30gZ2VvanNvbuWcsOWdgFxyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5jb2xvcj0jZWYwNjA2XSB7c3RyaW5nfSDnur/mnaHpopzoibJcclxuICAgKiBAcGFyYW0gW29wdGlvbnMud2lkdGg9MV0ge251bWJlcn0gIOe6v+adoeWuveW6plxyXG4gICAqIEBleGFtcGxlIG5ldyBZSi5PYmouR2VvSnNvbihlYXJ0aCx7aWQ6XCIxMjNcIix1cmw6XCJcIn0pXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG5cclxuICAgIHRoaXMucHJpbWl0aXZlID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICBcclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBzdXBlci5zZXREZWZhdWx0VmFsdWUoKVxyXG4gICAgdGhpcy5vcHRpb25zLmhvc3QgPSB0aGlzLm9wdGlvbnMuaG9zdCB8fCBnZXRIb3N0KClcclxuICAgIC8vIGxldCB1cmwgPSB0aGlzLm9wdGlvbnMudXJsXHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLmhvc3QpIHtcclxuICAgIC8vICAgbGV0IG8gPSBuZXcgVVJMKHRoaXMub3B0aW9ucy51cmwsIHRoaXMub3B0aW9ucy5ob3N0KVxyXG4gICAgLy8gICB1cmwgPSBvLmhyZWZcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMudXJsID0gdXJsXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3IgfHwgJ3JnYigyMzksIDYsIDYsIDEpJ1xyXG4gICAgdGhpcy5vcHRpb25zLndpZHRoID0gdGhpcy5vcHRpb25zLndpZHRoIHx8IDFcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICAvLyBzZXQgc2hvdyhzdGF0dXMpIHtcclxuICAvLyAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgLy8gICBpZiAoIXRoaXMuaXNTaG93VmlldyB8fCAhc2RrRCkge1xyXG4gIC8vICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHN0YXR1c1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgLy8gICAgIGlmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpIHtcclxuICAvLyAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgICAgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgICAgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBmYWxzZVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAvLyAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAvLyAgIHRoaXMuaXNTaG93VmlldyA9IGZhbHNlXHJcbiAgLy8gfVxyXG4gIHNldCBzaG93KHN0YXR1cykge1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSBzdGF0dXNcclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gc3RhdHVzXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uKCkge1xyXG4gICAgbGV0IHVybCA9IFwiXCJcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcvZmlsZUluZm8vcHJldmlld0xvY2FsJ1xyXG4gICAgdXJsICs9ICc/ZmlsZUFic29sdXRlUGF0aD0nICsgdGhpcy5vcHRpb25zLnVybFxyXG4gICAgbGV0IHJzcCA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgZ2V0VG9rZW4oKSxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGxldCBqc29uID0gYXdhaXQgcnNwLmpzb24oKVxyXG4gICAgdGhpcy5nZW9qc29uID0ganNvblxyXG5cclxuICAgIC8qZ2Vvam9zbuaaguaXtuWPqueUqOe6v+eahOW9ouW8jyovXHJcbiAgICBjb25zdCBnZW9Kc29uRGF0YVNvdXJjZSA9IG5ldyBDZXNpdW0uR2VvSnNvbkRhdGFTb3VyY2UoKTtcclxuICAgIGxldCBnZW9qc29uID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLmdlb2pzb24pXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKCFnZW9qc29uLmZlYXR1cmVzW2ldLmlkKSB7XHJcbiAgICAgICAgZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9IHRoaXMub3B0aW9ucy5pZCArICdfJyArIGlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2coZ2VvanNvbilcclxuICAgIGxldCBwcm9taXNlID0gZ2VvSnNvbkRhdGFTb3VyY2UubG9hZChnZW9qc29uLCB7XHJcbiAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm9taXNlLnRoZW4oZGF0YXNvdXJjZSA9PiB7XHJcbiAgICAgIHRoaXMuZW50aXR5ID0gZGF0YXNvdXJjZVxyXG4gICAgICBkYXRhc291cmNlLmVudGl0aWVzLnZhbHVlcy5mb3JFYWNoKGVuZXRpdHkgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGVuZXRpdHkpXHJcbiAgICAgICAgbGV0IGNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgICAgbGV0IGNvbG9yUG9seWdvbiA9IGNvbG9yLndpdGhBbHBoYSgwLjIpXHJcbiAgICAgICAgZW5ldGl0eS5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKGVuZXRpdHkpXHJcbiAgICAgICAgaWYgKGVuZXRpdHkuYmlsbGJvYXJkKSB7XHJcbiAgICAgICAgICBlbmV0aXR5LmJpbGxib2FyZC5oZWlnaHRSZWZlcmVuY2UgPSBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORFxyXG4gICAgICAgICAgZW5ldGl0eS5wb2ludCA9IG5ldyBDZXNpdW0uUG9pbnRHcmFwaGljcyh7XHJcbiAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvciwgLy8g54K555qE6aKc6ImyXHJcbiAgICAgICAgICAgIHBpeGVsU2l6ZTogMTAsIC8vIOeCueeahOWkp+Wwj1xyXG4gICAgICAgICAgICBoZWlnaHRSZWZlcmVuY2U6IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5ELFxyXG4gICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAgLy8g5LiN5bqU55So5rex5bqm5rWL6K+VXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVuZXRpdHkucG9seWxpbmUpIHtcclxuICAgICAgICAgIGVuZXRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSBjb2xvclxyXG4gICAgICAgICAgZW5ldGl0eS5wb2x5bGluZS56SW5kZXggPSB0aGlzLnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgICAgICB0aGlzLnNkay5fZW50aXR5WkluZGV4KytcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbmV0aXR5LnBvbHlnb24pIHtcclxuICAgICAgICAgIGVuZXRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9IGZhbHNlXHJcbiAgICAgICAgICBlbmV0aXR5LnBvbHlnb24ubWF0ZXJpYWwgPSBjb2xvclBvbHlnb25cclxuICAgICAgICAgIGVuZXRpdHkucG9seWdvbi56SW5kZXggPSB0aGlzLnNkay5fZW50aXR5WkluZGV4XHJcblxyXG4gICAgICAgICAgZW5ldGl0eS5wb2x5bGluZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVHcmFwaGljcyh7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uczogZW5ldGl0eS5wb2x5Z29uLmhpZXJhcmNoeS5fdmFsdWUucG9zaXRpb25zLFxyXG4gICAgICAgICAgICB3aWR0aDogMSxcclxuICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IGNvbG9yLFxyXG4gICAgICAgICAgICB6SW5kZXg6IHRoaXMuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLnNkay5fZW50aXR5WkluZGV4KytcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5mb3JFYWNoKGVuZXRpdHkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoZW5ldGl0eSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICAgIHRoaXMuZ2VvanNvbiA9IHt9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbygpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmdlb2pzb24pIHtcclxuICAgICAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgICAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgICAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgICAgIGxldCByYW5nZSA9IHR1cmYuYmJveCh0aGlzLmdlb2pzb24pO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICBcclxuICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiByYW5nZVswXSwgbGF0OiByYW5nZVsxXSB9XHJcbiAgICAgICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyguLi5yYW5nZSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHZW9Kc29uXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBUEE7QUFBQTtBQUFBO0FBUUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQXZDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlDQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/GeoJson/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Graffiti/_element.js": -/*!*******************************************!*\ - !*** ./src/Obj/Base/Graffiti/_element.js ***! - \*******************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u6D82\\u9E26\\u989C\\u8272\\n
\\n
\\n
\\n \\u7EBF\\u6761\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JhZmZpdGkvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvR3JhZmZpdGkvX2VsZW1lbnQuanM/NDAzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPua2gum4puminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57q/5p2h5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yXCIgc3R5bGU9XCJ3aWR0aDogODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwid2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuZXhwb3J0IHsgaHRtbCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFtQkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Graffiti/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Graffiti/index.js": -/*!****************************************!*\ - !*** ./src/Obj/Base/Graffiti/index.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Draw_draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Draw/draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/Graffiti/_element.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * 涂鸦\r\n */\n\n\n\n\n\n\n\n\nvar Graffiti = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 涂鸦\r\n * @param options {object} 线属性\r\n * @param options.width=10{number} 宽度\r\n * @param options.color=#ff0000{string} 宽度\r\n * */\n function Graffiti(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Graffiti);\n _this2 = _callSuper(this, Graffiti, [sdk, options]);\n _this2.options.width = options.width || 1;\n _this2.options.color = options.color || '#ff0000';\n _this2._elms = {};\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_12__[\"default\"](sdk);\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__[\"default\"]();\n Graffiti.edit(_this2, true);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Graffiti, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Graffiti, [{\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n if (!this.options.color) {\n return;\n }\n this.options.color = v;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.options.width;\n },\n set: function set(v) {\n this.options.width = v;\n this._elms.width && this._elms.width.forEach(function (item) {\n item.value = v;\n });\n }\n\n // 编辑框\n }, {\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态获绘制线\r\n * @method start\r\n * })\r\n * */\n function start() {\n var _this4 = this;\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n this._error = '上一次测量未结束';\n } else {\n this._error = null;\n var viewer = this.sdk.viewer;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"CameraController\"])(this.sdk, false);\n _superPropGet(Graffiti, \"start\", this, 3)([]);\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('左键按下开始,松开完成,右键单击完成绘制', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var polylineArray = [];\n var positions = [];\n this.event.mouse_left_down(function (movement, cartesian) {\n positions = [];\n var line = _this4.sdk.viewer.entities.add({\n name: '涂鸦',\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return positions;\n }, false),\n width: _this4.width,\n clampToGround: true,\n material: Cesium.Color.fromCssColorString(_this4.color),\n zIndex: 99999999\n }\n });\n polylineArray.push(line);\n _this4.event.mouse_move(function (movement, cartesian) {\n _this4.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n positions.push(cartesian);\n });\n });\n this.event.mouse_left_up(function (movement, cartesian) {\n polylineArray[polylineArray.length - 1].polyline.positions = positions;\n _this4.event.mouse_move(function (movement, cartesian) {\n _this4.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this4.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this4.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this4.end();\n }\n });\n });\n }\n }\n\n /**\r\n * @desc 结束制线\r\n * @method end\r\n * })\r\n * */\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.event = undefined;\n this.tip && this.tip.destroy();\n this.tip = undefined;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"CameraController\"])(this.sdk, true);\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.end();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n var entities = this.sdk.viewer.entities.values;\n for (var i = entities.length - 1; i >= 0; i--) {\n if (entities[i].name === '涂鸦') {\n this.sdk.viewer.entities.remove(entities[i]);\n }\n }\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(that, state) {\n var contentElm, colorPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (state) {\n // that._DialogObject = await new Dialog(that.sdk.viewer._container, {\n // title: '涂鸦参数',\n // })\n // await that._DialogObject.init()\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = html()\n // that._DialogObject.contentAppChild(contentElm)\n // 颜色组件\n contentElm = document.getElementsByClassName('graffiti')[0];\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: that.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n that.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n that.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n }); // that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' graffiti'\n all_elm = contentElm.getElementsByTagName(\"*\");\n that._EventBinding.on(that, all_elm);\n that._elms = that._EventBinding.element;\n that._elms.color = [colorPicker];\n\n // let confirmBtn = document.createElement('button');\n // confirmBtn.className = 'confirm';\n // confirmBtn.innerHTML = '确认'\n // that._DialogObject.footAppChild(confirmBtn)\n // confirmBtn.addEventListener('click', () => {\n // that.start()\n // Graffiti.edit(that, false)\n // });\n } else {\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n }\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function edit(_x, _x2) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }]);\n}(_Draw_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Graffiti);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JhZmZpdGkvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvR3JhZmZpdGkvaW5kZXguanM/NzU3MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog5raC6bimXHJcbiAqL1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuLi8uLi8uLi9EcmF3L2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQnXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi4vLi4vLi4vVG9vbHNcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IHsgQ2FtZXJhQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBHcmFmZml0aSBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5raC6bimXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g57q/5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMud2lkdGg9MTB7bnVtYmVyfSDlrr3luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jb2xvcj0jZmYwMDAwe3N0cmluZ30g5a695bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IG9wdGlvbnMud2lkdGggfHwgMVxyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCAnI2ZmMDAwMCdcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMudG9vbHMgPSBuZXcgVG9vbHMoc2RrKVxyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICBHcmFmZml0aS5lZGl0KHRoaXMsIHRydWUpXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5jb2xvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB2LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmNvbG9yW2ldID0gY29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB3aWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMud2lkdGhcclxuICB9XHJcbiAgc2V0IHdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IHZcclxuICAgIHRoaXMuX2VsbXMud2lkdGggJiYgdGhpcy5fZWxtcy53aWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgc3RhdGljIGFzeW5jIGVkaXQodGhhdCwgc3RhdGUpIHtcclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAvLyB0aGF0Ll9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoYXQuc2RrLnZpZXdlci5fY29udGFpbmVyLCB7XHJcbiAgICAgIC8vICAgdGl0bGU6ICfmtoLpuKblj4LmlbAnLFxyXG4gICAgICAvLyB9KVxyXG4gICAgICAvLyBhd2FpdCB0aGF0Ll9EaWFsb2dPYmplY3QuaW5pdCgpXHJcbiAgICAgIC8vIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIC8vIHRoYXQuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3JhZmZpdGknKVswXVxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGF0LmNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhhdC5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGF0LmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICAvLyB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGdyYWZmaXRpJ1xyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIHRoYXQuX0V2ZW50QmluZGluZy5vbih0aGF0LCBhbGxfZWxtKVxyXG4gICAgICB0aGF0Ll9lbG1zID0gdGhhdC5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhhdC5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuXHJcbiAgICAgIC8vIGxldCBjb25maXJtQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgIC8vIGNvbmZpcm1CdG4uY2xhc3NOYW1lID0gJ2NvbmZpcm0nO1xyXG4gICAgICAvLyBjb25maXJtQnRuLmlubmVySFRNTCA9ICfnoa7orqQnXHJcbiAgICAgIC8vIHRoYXQuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoY29uZmlybUJ0bilcclxuICAgICAgLy8gY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy8gICB0aGF0LnN0YXJ0KClcclxuICAgICAgLy8gICBHcmFmZml0aS5lZGl0KHRoYXQsIGZhbHNlKVxyXG4gICAgICAvLyB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhhdC5fRGlhbG9nT2JqZWN0ICYmIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICAgIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDlvIDlp4vliqjmgIHojrfnu5jliLbnur9cclxuICAgKiBAbWV0aG9kIHN0YXJ0XHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yID0gJ+S4iuS4gOasoea1i+mHj+acque7k+adnydcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yID0gbnVsbFxyXG4gICAgICBsZXQgdmlld2VyID0gdGhpcy5zZGsudmlld2VyXHJcbiAgICAgIENhbWVyYUNvbnRyb2xsZXIodGhpcy5zZGssIGZhbHNlKVxyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu5oyJ5LiL5byA5aeL77yM5p2+5byA5a6M5oiQ77yM5Y+z6ZSu5Y2V5Ye75a6M5oiQ57uY5Yi2JywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuICAgICAgbGV0IHBvbHlsaW5lQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdF9kb3duKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgcG9zaXRpb25zID0gW11cclxuICAgICAgICBsZXQgbGluZSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgbmFtZTogJ+a2gum4picsXHJcbiAgICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxyXG4gICAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLmNvbG9yKSxcclxuICAgICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcG9seWxpbmVBcnJheS5wdXNoKGxpbmUpXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0X3VwKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgcG9seWxpbmVBcnJheVtwb2x5bGluZUFycmF5Lmxlbmd0aCAtIDFdLnBvbHlsaW5lLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg57uT5p2f5Yi257q/XHJcbiAgICogQG1ldGhvZCBlbmRcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgZW5kKCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IHVuZGVmaW5lZFxyXG4gICAgQ2FtZXJhQ29udHJvbGxlcih0aGlzLnNkaywgdHJ1ZSlcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZW5kKClcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGxldCBlbnRpdGllcyA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNcclxuICAgIGZvciAobGV0IGkgPSBlbnRpdGllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBpZiAoZW50aXRpZXNbaV0ubmFtZSA9PT0gJ+a2gum4picpIHtcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKGVudGl0aWVzW2ldKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmbGlja2VyKCkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEdyYWZmaXRpXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBNUpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE5Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0pBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Graffiti/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/GroundImage/_element.js": -/*!**********************************************!*\ - !*** ./src/Obj/Base/GroundImage/_element.js ***! - \**********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\u519B\\u6807\\u6A21\\u5F0F\\n
\\n
\\n
\\n
\\n
\\n \\u65CB\\u8F6C\\u89D2\\u5EA6\\n \\n
\\n \\n \\xB0\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8C03\\u6574\\u5927\\u5C0F\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \\u56FE\\u6807\\u500D\\u6570\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
\\n
\\n \\u6700\\u8FD1\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u6700\\u8FDC\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n

\\u6587\\u5B57\\u8BBE\\u7F6E

\\n
\\n
\\n \\u663E\\u9690\\n \\n
\\n
\\n \\u5B57\\u4F53\\u9009\\u62E9\\n
\\n
\\n
\\n \\u6587\\u5B57\\u5927\\u5C0F\\n
\\n \\n px\\n \\n
\\n
\\n
\\n \\u6587\\u5B57\\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JvdW5kSW1hZ2UvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvR3JvdW5kSW1hZ2UvX2VsZW1lbnQuanM/ZTFjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYW5jaG9yIGJ0blwiPuiwg+aVtOmUmueCuTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgbW9kZS1ib3hcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogdW5zZXQ7XCI+5Yab5qCH5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgbW9kZT1cIjBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ml4vovazop5LluqY8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzNjBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cImFuZ2xlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXRcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtmbGV4OiAwIDAgMTAwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIzNjBcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwiYW5nbGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPsKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBtb2RlPVwiMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuiwg+aVtOWkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjQwMDAwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzY2FsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtmbGV4OiAwIDAgMTAwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI0MDAwMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgbW9kZT1cIjFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBoZWlnaHQtbW9kZS1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCAxNTVweDttYXJnaW4tcmlnaHQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7pq5jluqbmqKHlvI88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVpZ2h0LW1vZGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbjogMCAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1ib3hcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBoZWlnaHRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lm77moIflgI3mlbA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIGRhdGEtbWluPVwiMC4xXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJiaWxsYm9hcmRTY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPuWAjTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBtb2RlPVwiMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTU1cHg7bWFyZ2luLXJpZ2h0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuinhumHjue8qeaUvjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJiaWxsYm9hcmRTY2FsZUJ5RGlzdGFuY2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbjogMCAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuacgOi/kei3neemuzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5OTk5OTk5XCIgQG1vZGVsPVwiYmlsbGJvYXJkTmVhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pyA6L+c6Led56a7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5OTk5OTlcIiBAbW9kZWw9XCJiaWxsYm9hcmRGYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aDQgbW9kZT1cIjFcIj7mloflrZforr7nva48L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAgbW9kZT1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDgwcHg7bWFyZ2luOiAwIDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiBub25lO1wiPuaYvumakDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJsYWJlbFNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZm9udC1zZWxlY3QtYm94XCIgc3R5bGU9XCJtYXJnaW46IDAgMHB4O2ZsZXg6IDAgMCAxNTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IG5vbmU7XCI+5a2X5L2T6YCJ5oupPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0IGlucHV0LXNlbGVjdCBmb250LXNlbGVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwibWFyZ2luOiAwIDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5paH5a2X5aSn5bCPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJsYWJlbEZvbnRTaXplXCIgc3R5bGU9XCJ3aWR0aDogNzBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mloflrZfpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1IQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/GroundImage/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/GroundImage/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Base/GroundImage/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/set */ \"./node_modules/@babel/runtime/helpers/set.js\");\n/* harmony import */ var _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_slider__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/cy_html_slider */ \"./src/Obj/Element/cy_html_slider.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/GroundImage/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropSet(t, e, o, r, p, f) { return _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(f ? t.prototype : t), e, o, r, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar GroundImage = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 贴地图片\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.angle=0 {number} 旋转角度\r\n * @param options.scale=1 {number} 比例\r\n * @param options.flipe {object} 翻转\r\n * @param options.flipe.x=false {boolean} 绕X轴翻转\r\n * @param options.flipe.y=false {boolean} 绕Y轴翻转\r\n * @param options.url {string} 图片地址\r\n * @param {Array.} options.position 经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param _Dialog {object} 弹框事件\r\n * @param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function GroundImage(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, GroundImage);\n _this2 = _callSuper(this, GroundImage, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.url = options.url;\n _this2.options.angle = options.angle || 0;\n _this2.options.scale = options.scale || options.scale === 0 ? options.scale : 1;\n _this2.options.position = options.position;\n _this2.options.offset = options.offset || {\n x: 0.5,\n y: 1\n };\n _this2.options.mode = _this2.options.mode ? 1 : 0;\n _this2.options.billboard = options.billboard || {};\n _this2.options.billboard.scale = _this2.options.billboard.scale || 1;\n _this2.options.billboard.near = _this2.options.billboard.near || _this2.options.billboard.near === 0 ? _this2.options.billboard.near : 2000;\n _this2.options.billboard.far = _this2.options.billboard.far || _this2.options.billboard.far === 0 ? _this2.options.billboard.far : 100000;\n _this2.options.billboard.scaleByDistance = _this2.options.billboard.scaleByDistance ? true : false;\n options.label = options.label || {};\n _this2.options.label = options.label || {};\n _this2.options.label.text = options.label.text || _this2.options.name;\n _this2.options.name = _this2.options.label.text;\n _this2.options.label.show = options.label.show || options.label.show === false ? options.label.show : true;\n _this2.options.label.fontFamily = options.label.fontFamily || 0;\n _this2.options.label.fontSize = options.label.fontSize || 39;\n _this2.options.label.color = options.label.color || '#00ffff';\n _this2.options.flipe = options.flipe || {};\n _this2.options.flipe.x = _this2.options.flipe.x || false;\n _this2.options.flipe.y = _this2.options.flipe.y || false;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 3;\n _this2.entity = {\n id: _this2.options.id\n };\n _this2._positionEditing = false;\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2._proj = _this2.sdk.proj;\n _this2.previous = {\n position: _objectSpread({}, _this2.options.position)\n };\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"]();\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](_this2.sdk);\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.create();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default()(GroundImage, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(GroundImage, [{\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n _superPropSet(GroundImage, \"name\", v, this, 1, 1);\n this.options.label.text = this.options.name;\n this.entity && (this.entity.label.text = this.options.label.text);\n }\n }, {\n key: \"mode\",\n get: function get() {\n return this.options.mode;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.mode = v ? 1 : 0;\n var modeData = [{\n name: '贴地',\n value: '贴地',\n key: 0\n }, {\n name: '立体',\n value: '立体',\n key: 1\n }];\n var _loop = function _loop(i) {\n if (modeData[i].key === _this3.options.mode) {\n _this3._elms.mode && _this3._elms.mode.forEach(function (item) {\n item.value = modeData[i].value;\n });\n return 1; // break\n }\n };\n for (var i = 0; i < modeData.length; i++) {\n if (_loop(i)) break;\n }\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.body) {\n var elms = this._DialogObject._element.body.getElementsByClassName('row');\n var elms2 = this._DialogObject._element.foot.getElementsByTagName('button');\n var elms3 = this._DialogObject._element.foot.getElementsByTagName('h4');\n for (var _i = 0; _i < elms.length; _i++) {\n var mode = elms[_i].getAttribute('mode');\n if (mode !== null) {\n if (mode == this.options.mode) {\n elms[_i].style.display = 'flex';\n } else {\n elms[_i].style.display = 'none';\n }\n }\n }\n for (var _i2 = 0; _i2 < elms2.length; _i2++) {\n var _mode = elms2[_i2].getAttribute('mode');\n if (_mode !== null) {\n if (_mode == this.options.mode) {\n elms2[_i2].style.display = 'block';\n } else {\n elms2[_i2].style.display = 'none';\n }\n }\n }\n for (var _i3 = 0; _i3 < elms3.length; _i3++) {\n var _mode2 = elms3[_i3].getAttribute('mode');\n if (_mode2 !== null) {\n if (_mode2 == this.options.mode) {\n elms3[_i3].style.display = 'block';\n } else {\n elms3[_i3].style.display = 'none';\n }\n }\n }\n }\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.replaceHost(this.options.url, this.options.host);\n img.onload = function () {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (_this3.mode) {\n // canvas.width = img.width\n // canvas.height = img.height;\n // let billboardH = img.height * (128 / img.width)\n\n // if (this.flipeX) {\n // ctx.scale(1, -1);\n // ctx.translate(0, -canvas.height)\n // }\n // if (this.flipeY) {\n // ctx.scale(-1, 1);\n // ctx.translate(-canvas.width, 0);\n // }\n // ctx.drawImage(img, 0, 0, img.width, img.height)\n // this.entity.billboard.image = canvas\n // this.entity.billboard.pixelOffset = { x: -128 * this.billboardScale * (this.flipeY ? (1-this.options.offset.x) : this.options.offset.x), y: -billboardH * this.billboardScale * (this.flipeX ? (1-this.options.offset.y) : this.options.offset.y) }\n var _canvas = _this3.entity.billboard.image.getValue();\n var billboardH = _canvas.height * (128 / _canvas.width);\n _this3.entity.billboard.pixelOffset = {\n x: -128 * _this3.billboardScale * _this3.options.offset.x,\n y: -billboardH * _this3.billboardScale * _this3.options.offset.y\n };\n _this3.entity.billboard.show = true;\n _this3.labelShow && (_this3.entity.label.show = true);\n _this3.entity.rectangle.show = false;\n } else {\n // 设置画布大小\n canvas.width = img.width * 2;\n canvas.height = img.height * 2;\n\n // 绘制图像\n if (_this3.flipeX) {\n ctx.scale(1, -1);\n ctx.translate(0, -canvas.height);\n }\n if (_this3.flipeY) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n ctx.drawImage(img, img.width - img.width * _this3.options.offset.x, img.height - img.height * _this3.options.offset.y);\n _this3.entity.rectangle.material = new Cesium.ImageMaterialProperty({\n image: canvas,\n transparent: true\n });\n _this3.entity.billboard.show = false;\n _this3.entity.label.show = false;\n _this3.entity.rectangle.show = true;\n }\n };\n }\n }, {\n key: \"offset\",\n get: function get() {\n return this.options.offset;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.offset = v;\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.replaceHost(this.options.url, this.options.host);\n img.onload = function () {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (_this4.mode) {\n // canvas.width = img.width\n // canvas.height = img.height;\n // let billboardH = img.height * (128 / img.width)\n\n // if (this.flipeX) {\n // ctx.scale(1, -1);\n // ctx.translate(0, -canvas.height)\n // }\n // if (this.flipeY) {\n // ctx.scale(-1, 1);\n // ctx.translate(-canvas.width, 0);\n // }\n // ctx.drawImage(img, 0, 0, img.width, img.height)\n // this.entity.billboard.image = canvas\n // this.entity.billboard.pixelOffset = { x: -128 * this.billboardScale * (this.flipeY ? (1-this.options.offset.x) : this.options.offset.x), y: -billboardH * this.billboardScale * (this.flipeX ? (1-this.options.offset.y) : this.options.offset.y) }\n var _canvas2 = _this4.entity.billboard.image.getValue();\n var billboardH = _canvas2.height * (128 / _canvas2.width);\n _this4.entity.billboard.pixelOffset = {\n x: -128 * _this4.billboardScale * _this4.options.offset.x,\n y: -billboardH * _this4.billboardScale * _this4.options.offset.y\n };\n _this4.entity.billboard.show = true;\n _this4.labelShow && (_this4.entity.label.show = true);\n _this4.entity.rectangle.show = false;\n } else {\n // 设置画布大小\n canvas.width = img.width * 2;\n canvas.height = img.height * 2;\n\n // 绘制图像\n if (_this4.flipeX) {\n ctx.scale(1, -1);\n ctx.translate(0, -canvas.height);\n }\n if (_this4.flipeY) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n ctx.drawImage(img, img.width - img.width * _this4.options.offset.x, img.height - img.height * _this4.options.offset.y);\n _this4.entity.rectangle.material = new Cesium.ImageMaterialProperty({\n image: canvas,\n transparent: true\n });\n _this4.entity.billboard.show = false;\n _this4.entity.label.show = false;\n _this4.entity.rectangle.show = true;\n }\n };\n }\n }, {\n key: \"angle\",\n get: function get() {\n return this.options.angle;\n },\n set: function set(v) {\n this.options.angle = v;\n this._elms.angle && this._elms.angle.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.options.scale;\n },\n set: function set(v) {\n this.options.scale = v;\n this._elms.scale && this._elms.scale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"billboardScale\",\n get: function get() {\n return this.options.billboard.scale;\n },\n set: function set(v) {\n var billboardScale = Number(v.toFixed(2));\n if (billboardScale > 99) {\n billboardScale = 99;\n }\n if (billboardScale < 0.1) {\n billboardScale = 0.1;\n }\n this.options.billboard.scale = billboardScale;\n this.renewPoint();\n this._elms.billboardScale && this._elms.billboardScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"billboardScaleByDistance\",\n get: function get() {\n return this.options.billboard.scaleByDistance;\n },\n set: function set(v) {\n this.options.billboard.scaleByDistance = v;\n this.renewPoint();\n this._elms.billboardScaleByDistance && this._elms.billboardScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"billboardNear\",\n get: function get() {\n return this.options.billboard.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.billboardFar) {\n near = this.billboardFar;\n }\n this.options.billboard.near = near;\n this.renewPoint();\n this._elms.billboardNear && this._elms.billboardNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"billboardFar\",\n get: function get() {\n return this.options.billboard.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.billboardNear) {\n far = this.billboardNear;\n }\n this.options.billboard.far = far;\n this.renewPoint();\n this._elms.billboardFar && this._elms.billboardFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"flipeY\",\n get: function get() {\n return this.options.flipe.y;\n },\n set: function set(v) {\n var _this5 = this;\n if (typeof v === \"boolean\") {\n this.options.flipe.y = v;\n if (!this.entity) {\n return;\n }\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.replaceHost(this.options.url, this.options.host);\n img.onload = function () {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (_this5.mode) {\n // canvas.width = img.width\n // canvas.height = img.height;\n // let billboardH = img.height * (128 / img.width)\n // if (this.flipeX) {\n // ctx.scale(1, -1);\n // ctx.translate(0, -canvas.height)\n // }\n // if (this.flipeY) {\n // ctx.scale(-1, 1);\n // ctx.translate(-canvas.width, 0);\n // }\n // ctx.drawImage(img, 0, 0, img.width, img.height)\n // this.entity.billboard.image = canvas\n // this.entity.billboard.pixelOffset = { x: -128 * this.billboardScale * (this.flipeY ? (1-this.options.offset.x) : this.options.offset.x), y: -billboardH * this.billboardScale * (this.flipeX ? (1-this.options.offset.y) : this.options.offset.y) }\n // this.entity.billboard.show = true\n // this.entity.rectangle.show = false\n } else {\n // 设置画布大小\n canvas.width = img.width * 2;\n canvas.height = img.height * 2;\n\n // 绘制图像\n if (_this5.flipeX) {\n ctx.scale(1, -1);\n ctx.translate(0, -canvas.height);\n }\n if (_this5.flipeY) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n ctx.drawImage(img, img.width - img.width * _this5.options.offset.x, img.height - img.height * _this5.options.offset.y);\n _this5.entity.rectangle.material = new Cesium.ImageMaterialProperty({\n image: canvas,\n transparent: true\n });\n _this5.entity.billboard.show = false;\n _this5.entity.label.show = false;\n _this5.entity.rectangle.show = true;\n }\n };\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"flipeX\",\n get: function get() {\n return this.options.flipe.x;\n },\n set: function set(v) {\n var _this6 = this;\n if (typeof v === \"boolean\") {\n this.options.flipe.x = v;\n if (!this.entity) {\n return;\n }\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.replaceHost(this.options.url, this.options.host);\n img.onload = function () {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (_this6.mode) {\n // canvas.width = img.width\n // canvas.height = img.height;\n // let billboardH = img.height * (128 / img.width)\n // if (this.flipeX) {\n // ctx.scale(1, -1);\n // ctx.translate(0, -canvas.height)\n // }\n // if (this.flipeY) {\n // ctx.scale(-1, 1);\n // ctx.translate(-canvas.width, 0);\n // }\n // ctx.drawImage(img, 0, 0, img.width, img.height)\n // this.entity.billboard.image = canvas\n // this.entity.billboard.pixelOffset = { x: -128 * this.billboardScale * (this.flipeY ? (1-this.options.offset.x) : this.options.offset.x), y: -billboardH * this.billboardScale * (this.flipeX ? (1-this.options.offset.y) : this.options.offset.y) }\n // this.entity.billboard.show = true\n // this.entity.rectangle.show = false\n } else {\n // 设置画布大小\n canvas.width = img.width * 2;\n canvas.height = img.height * 2;\n\n // 绘制图像\n if (_this6.flipeX) {\n ctx.scale(1, -1);\n ctx.translate(0, -canvas.height);\n }\n if (_this6.flipeY) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n ctx.drawImage(img, img.width - img.width * _this6.options.offset.x, img.height - img.height * _this6.options.offset.y);\n _this6.entity.rectangle.material = new Cesium.ImageMaterialProperty({\n image: canvas,\n transparent: true\n });\n _this6.entity.billboard.show = false;\n _this6.entity.label.show = false;\n _this6.entity.rectangle.show = true;\n }\n\n // this.offset = {\n // x: this.offset.x,\n // y: Math.abs(this.offset.y - 1),\n // }\n };\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n this.options.heightMode = v ? v : 0;\n this.options.heightMode = v || v == 0 ? v : 3;\n var heightMode;\n var heightModeName = '';\n var altBoxElm;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n altBoxElm = this._DialogObject._element.content.getElementsByClassName('alt-box')[0];\n }\n var heightElm;\n if (this._elms.height) {\n heightElm = this._elms.height.getElementsByClassName('input-number')[0];\n }\n switch (this.options.heightMode) {\n case '0':\n case 0:\n altBoxElm && (altBoxElm.className = 'input-number input-number-unit-1 alt-box');\n // this._elms.height && (this._elms.height.style.display = 'flex')\n heightElm && (heightElm.className = 'input-number input-number-unit-1');\n heightMode = Cesium.HeightReference.NONE;\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n altBoxElm && (altBoxElm.className = 'input-number input-number-unit-1 alt-box');\n // this._elms.height && (this._elms.height.style.display = 'flex')\n heightElm && (heightElm.className = 'input-number input-number-unit-1');\n heightMode = Cesium.HeightReference.NONE;\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n altBoxElm && (altBoxElm.className = 'input-number input-number-unit-1 alt-box disabled');\n heightModeName = '依附地表';\n altBoxElm && (altBoxElm.className = 'input-number input-number-unit-1 alt-box disabled');\n heightModeName = '依附地表';\n heightMode = Cesium.HeightReference.CLAMP_TO_GROUND;\n // this._elms.height && (this._elms.height.style.display = 'none')\n heightElm && (heightElm.className = 'input-number input-number-unit-1 disabled');\n break;\n case '3':\n case 3:\n altBoxElm && (altBoxElm.className = 'input-number input-number-unit-1 alt-box disabled');\n // this._elms.height && (this._elms.height.style.display = 'none')\n heightElm && (heightElm.className = 'input-number input-number-unit-1 disabled');\n heightMode = Cesium.HeightReference.NONE;\n heightModeName = '依附模型';\n break;\n }\n if (this.entity && this.entity.billboard) {\n this.entity.billboard.heightReference = heightMode;\n }\n this._elms.heightMode && (this._elms.heightMode.value = heightModeName);\n }\n }, {\n key: \"coordinate\",\n get: function get() {\n return this.options.coordinate;\n },\n set: function set(v) {\n this.options.coordinate = v;\n // let position = this._proj.convert(\n // [\n // {\n // x: this.options.position.lng,\n // y: this.options.position.lat,\n // z: this.options.position.alt\n // }\n // ],\n // 'EPSG:4326',\n // v\n // ).points\n // if (\n // this._DialogObject &&\n // this._DialogObject._element &&\n // this._DialogObject._element.content &&\n // position[0]\n // ) {\n // this._DialogObject._element.content.getElementsByClassName(\n // 'convert-x'\n // )[0].value = position[0].x\n // this._DialogObject._element.content.getElementsByClassName(\n // 'convert-y'\n // )[0].value = position[0].y\n // this._DialogObject._element.content.getElementsByClassName(\n // 'convert-z'\n // )[0].value = position[0].z\n // }\n // this._elms.coordinate &&\n // this._elms.coordinate.forEach(item => {\n // item.value = v\n // })\n }\n }, {\n key: \"position\",\n get: function get() {\n return this.options.position;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.position = v;\n this.coordinate = this.options.coordinate;\n if (this._textToCenter) {\n var point = turf.point([this.options.position.lng, this.options.position.lat]);\n var targetPoint = turf.destination(point, this._textToCenter.distance, this._textToCenter.angle, {\n units: 'kilometers'\n }).geometry.coordinates;\n this.getClampToHeight({\n lng: targetPoint[0],\n lat: targetPoint[1]\n }).then(function (height) {\n var textPosition = [targetPoint[0], targetPoint[1], height];\n _this7.options.text.position = {\n lng: targetPoint[0],\n lat: targetPoint[1],\n alt: height\n };\n _this7.text && (_this7.text.position = textPosition);\n });\n }\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.position.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this7.options.position.lat;\n });\n if (this._elms.height) {\n var heightElm = this._elms.height.getElementsByClassName('height')[0];\n if (heightElm) {\n switch (this._elms.heightMode.value) {\n case '海拔高度':\n heightElm.value = this.options.position.alt;\n break;\n case '相对地表':\n if (this.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(this.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(this.options.position.lng, this.options.position.lat)]).then(function (position) {\n heightElm.value = Number((_this7.options.position.alt - position[0].height).toFixed(2));\n _this7._elms.alt && _this7._elms.alt.forEach(function (item) {\n item.value = _this7.options.position.alt;\n });\n });\n } else {\n heightElm.value = Number(Number(this.options.position.alt).toFixed(2));\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this7.options.position.alt;\n });\n }\n break;\n case '依附地表':\n case '依附地表':\n break;\n case '依附模型':\n this.updateHeight();\n break;\n }\n }\n }\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.entity) {\n if (this.mode == 1) {\n this.entity.label.show = v;\n } else {\n this.entity.label.show = false;\n }\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.renewPoint();\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.renewPoint();\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.color = v || '#00ffff';\n this.renewPoint();\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.options.label.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this8.labelColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(0,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelColor[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee() {\n var _this9 = this;\n var _this, heightMode, font, response, img;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n // let gap = Math.abs(Math.cos(Math.PI/180 * this.options.position.lat)) * (0.0001*this.options.scale)\n // let fromDegreesArray = [\n // this.options.position.lng - 0.05, this.options.position.lat - 0.05,\n // this.options.position.lng + 0.05, this.options.position.lat - 0.05,\n // this.options.position.lng + 0.05, this.options.position.lat + 0.05,\n // this.options.position.lng - 0.05, this.options.position.lat + 0.05,\n // ]\n _this = this;\n font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontFamily\"])(this.labelFontFamily) || 'Helvetica';\n _context.t0 = this.options.heightMode;\n _context.next = _context.t0 === 2 ? 5 : _context.t0 === '2' ? 5 : 7;\n break;\n case 5:\n heightMode = Cesium.HeightReference.CLAMP_TO_GROUND;\n return _context.abrupt(\"break\", 7);\n case 7:\n _context.next = 9;\n return fetch(this.replaceHost(this.options.url, this.options.host), {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 9:\n response = _context.sent;\n if (response.ok) {\n // let data = await response.blob()\n // let arrayBuffer = await data.arrayBuffer()\n // const str = String.fromCharCode(...new Uint8Array(arrayBuffer));\n img = new Image();\n img.crossOrigin = 'Anonymous';\n img.src = this.replaceHost(this.options.url, this.options.host);\n img.onload = function () {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var canvas2 = document.createElement('canvas');\n var ctx2 = canvas2.getContext('2d');\n var width = img.width;\n var height = img.height;\n canvas2.width = width;\n canvas2.height = height;\n ctx2.drawImage(img, 0, 0, width, height);\n\n // 设置画布大小\n canvas.width = img.width * 2;\n canvas.height = img.height * 2;\n // 绘制图像\n if (_this9.flipeX) {\n ctx.scale(1, -1);\n ctx.translate(0, -canvas.height);\n }\n if (_this9.flipeY) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n ctx.drawImage(img, img.width - img.width * _this9.options.offset.x, img.height - img.height * _this9.options.offset.y);\n var billboardH = height * (128 / width);\n _this9.entity = _this9.sdk.viewer.entities.add({\n id: _this9.options.id,\n show: _this9.options.show,\n position: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegrees(_this9.options.position.lng, _this9.options.position.lat, _this9.options.position.alt || 0);\n }),\n billboard: {\n show: _this9.mode ? true : false,\n image: canvas2,\n scale: _this9.billboardScale,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n heightReference: heightMode,\n width: 128,\n height: billboardH,\n horizontalOrigin: Cesium.HorizontalOrigin.LEFT,\n verticalOrigin: Cesium.VerticalOrigin.TOP,\n // pixelOffset: { x: -128 * this.billboardScale * (this.flipeY ? (1-this.options.offset.x) : this.options.offset.x), y: -billboardH * this.billboardScale * (this.flipeX ? (1-this.options.offset.y) : this.options.offset.y) }\n pixelOffset: {\n x: -128 * _this9.billboardScale * _this9.options.offset.x,\n y: -billboardH * _this9.billboardScale * _this9.options.offset.y\n }\n },\n label: {\n show: _this9.mode ? _this.options.label.show : false,\n text: _this.options.label.text,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n heightReference: heightMode,\n font: _this.options.label.fontSize + 'px ' + font,\n fillColor: Cesium.Color.fromCssColorString(_this.options.label.color),\n // verticalOrigin : Cesium.VerticalOrigin.BOTTOM,\n pixelOffset: new Cesium.CallbackProperty(function () {\n if (_this.options.show) {\n return new Cesium.Cartesian2(0, -billboardH * _this.billboardScale - _this.options.label.fontSize / 2 - 5);\n } else {\n return new Cesium.Cartesian2(0, -_this.options.label.fontSize / 2 - 5);\n }\n }, false),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 1,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE\n },\n rectangle: {\n show: _this9.mode ? false : true,\n coordinates: new Cesium.CallbackProperty(function () {\n var _Cesium$Rectangle;\n var gap = Math.abs(Math.cos(Math.PI / 180 * _this9.options.position.lat)) * (0.0001 * _this9.options.scale);\n var offset = {\n x: _this9.flipeY ? Math.abs(_this9.options.offset.x - 1) : _this9.options.offset.x,\n y: _this9.flipeX ? Math.abs(_this9.options.offset.y - 1) : _this9.options.offset.y\n };\n offset = {\n lng: offset.x * (0.0001 * _this9.options.scale * 2),\n lat: Math.abs(offset.y - 1) * (gap * 2)\n };\n // let point1 = [this.options.position.lng - offset.lng + 360, this.options.position.lat - offset.lat];\n // let point2 = [(this.options.position.lng - offset.lng) + ((0.0001 * this.options.scale) * 2) + 360, (this.options.position.lat - offset.lat) + (gap * 2)];\n // let midpoint = turf.point([point1[0]+point2[0]/2, point1[1]+point2[1]/2]);\n // let rotatedPot = turf.transformRotate(midpoint, -Number(this.options.angle), {pivot: [this.options.position.lng, this.options.position.lat]});\n // console.log(midpoint.geometry.coordinates, rotatedPot.geometry.coordinates, this.options.position)\n // let fromDegreesArray = [\n // rotatedPot.geometry.coordinates[0]-(0.0001 * this.options.scale), rotatedPot.geometry.coordinates[1]-(0.0001 * this.options.scale),\n // rotatedPot.geometry.coordinates[0]+(0.0001 * this.options.scale), rotatedPot.geometry.coordinates[1]+(0.0001 * this.options.scale),\n\n // ]\n var fromDegreesArray = [\n // this.options.position.lng - offset.lng, this.options.position.lat - offset.lat,\n // (this.options.position.lng - offset.lng) + ((0.0001 * this.options.scale) * 2), (this.options.position.lat - offset.lat) + (gap * 2),\n\n _this9.options.position.lng - 0.0001 * _this9.options.scale, _this9.options.position.lat - gap,\n // this.options.position.lng + 0.05, this.options.position.lat - 0.05,\n _this9.options.position.lng + 0.0001 * _this9.options.scale, _this9.options.position.lat + gap\n // this.options.position.lng - 0.05, this.options.position.lat + 0.05,\n ];\n return (_Cesium$Rectangle = Cesium.Rectangle).fromDegrees.apply(_Cesium$Rectangle, fromDegreesArray);\n }, false),\n material: new Cesium.ImageMaterialProperty({\n image: canvas,\n transparent: true\n }),\n rotation: new Cesium.CallbackProperty(function () {\n return Cesium.Math.toRadians(_this9.options.angle);\n }, false),\n stRotation: new Cesium.CallbackProperty(function () {\n return Cesium.Math.toRadians(_this9.options.angle);\n }, false)\n }\n });\n _this9.renewPoint();\n if (_this9.sdk.viewer._element.className === 'cesium-viewer 2d') {\n _this9.entity.rectangle.height = 0;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(_this9.sdk, _this9.options.id);\n if (_this9.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"setSplitDirection\"])(0, _this9.options.id);\n }\n };\n\n // if (data.code === 200 || data.code === 0) {\n // this.$message({\n // message: '添加成功!',\n // type: 'success',\n // duration: 1500\n // });\n // this.close()\n // // this.$emit('getBuildingList')\n // // this.$emit('onSubmitCallBack')\n // }\n }\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function create() {\n return _create.apply(this, arguments);\n }\n return create;\n }() // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee5(state) {\n var _this10 = this;\n var _this, mousemoveEvent, mouseupEvent, anchorSetDialogObject, canvas, point, billboardAnchorPosition, contentElm, all_elm, anchorBtn, elms, elms2, i, mode, _i4, _mode3, colorPicker;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context5.next = 27;\n break;\n }\n mousemoveEvent = function mousemoveEvent(e) {\n getDialogBodyElm(e.target);\n function getDialogBodyElm(elm) {\n if (!elm) {\n return;\n } else if (elm === anchorSetDialogObject._element.body) {\n var x = e.x - elm.getBoundingClientRect().left;\n var y = e.y - elm.getBoundingClientRect().top;\n var anchor = {\n x: Number(((x - 42) / canvas.width).toFixed(2)),\n y: Number(((y - 71) / canvas.height).toFixed(2))\n };\n if (anchor.x < 0) {\n anchor.x = 0;\n }\n if (anchor.x > 1) {\n anchor.x = 1;\n }\n if (anchor.y < 0) {\n anchor.y = 0;\n }\n if (anchor.y > 1) {\n anchor.y = 1;\n }\n billboardAnchorPosition = {\n x: anchor.x,\n y: anchor.y\n };\n point.style.top = \"calc(\".concat(billboardAnchorPosition.y * 100, \"% - 5px)\");\n point.style.left = \"calc(\".concat(billboardAnchorPosition.x * 100, \"% - 5px)\");\n } else {\n getDialogBodyElm(elm.offsetParent);\n }\n }\n };\n mouseupEvent = function mouseupEvent() {\n if (anchorSetDialogObject) {\n anchorSetDialogObject._element.body.removeEventListener('mousemove', mousemoveEvent);\n }\n }; // let coordinateData = []\n // this.epsg_map.forEach((value, key) => {\n // coordinateData.push({\n // name: `${value.name}(${value.epsg})`,\n // value: key\n // })\n // })\n // let coordinateDataLegpObject = legp(\n // this._DialogObject._element.content.getElementsByClassName(\n // 'coordinate-select-box'\n // )[0],\n // '.coordinate-select'\n // )\n // if (coordinateDataLegpObject) {\n // coordinateDataLegpObject.legp_search(coordinateData)\n // let coordinateDataLegpElm = this._DialogObject._element.content\n // .getElementsByClassName('coordinate-select')[0]\n // .getElementsByTagName('input')[0]\n // if (!this.coordinate) {\n // this.coordinate = coordinateData[0].value\n // } else {\n // this.coordinate = this.coordinate\n // }\n // coordinateDataLegpElm.value = this.coordinate\n // for (let i = 0; i < coordinateData.length; i++) {\n // if (coordinateData[i].value === coordinateData.value) {\n // coordinateDataLegpObject.legp_searchActive(\n // coordinateData[i].value\n // )\n // break\n // }\n // }\n // coordinateDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < coordinateData.length; i++) {\n // if (coordinateData[i].value === coordinateDataLegpElm.value) {\n // this.coordinate = coordinateData[i].value\n // break\n // }\n // }\n // })\n // }\n _context5.next = 8;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.sdk, this.originalOptions, {\n title: '军标属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this10.name = _this10.name.trim();\n if (!_this10.name) {\n _this10.name = '未命名对象';\n }\n _this10.originalOptions = _this10.deepCopyObj(_this10.options);\n _this10._DialogObject.close();\n _this10.Dialog.confirmCallBack && _this10.Dialog.confirmCallBack(_this10.originalOptions);\n // syncData(this.sdk, this.options.id)\n // syncSplitData(this.sdk, this.options.id)\n },\n resetCallBack: function resetCallBack() {\n _this10.reset();\n _this10.Dialog.resetCallBack && _this10.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this10.Dialog.removeCallBack && _this10.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this10.previous = null;\n _this10.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n\n if (anchorSetDialogObject && anchorSetDialogObject.close) {\n anchorSetDialogObject.close();\n }\n _this10.Dialog.closeCallBack && _this10.Dialog.closeCallBack();\n YJ.Measure.SetMeasureStatus(false);\n _this10.positionEditing = false;\n },\n showCallBack: function showCallBack(show) {\n _this10.show = show;\n _this10.Dialog.showCallBack && _this10.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this10.positionEditing = !_this10.positionEditing;\n },\n addFootElm: [{\n tagName: 'button',\n className: 'flipe-over-y',\n innerHTML: 'Y轴翻转',\n event: ['click', function () {\n _this10.flipeY = !_this10.flipeY;\n }]\n }, {\n tagName: 'button',\n className: 'flipe-over-x',\n innerHTML: 'X轴翻转',\n event: ['click', function () {\n _this10.flipeX = !_this10.flipeX;\n }]\n }]\n }, true);\n case 8:\n this._DialogObject = _context5.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' ground-image';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_13__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n anchorBtn = contentElm.getElementsByClassName('anchor')[0];\n anchorBtn.addEventListener('click', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee2() {\n var DialogClientRect, _DialogObject, contentElm, image;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (anchorSetDialogObject && anchorSetDialogObject.close) {\n anchorSetDialogObject.close();\n }\n document.body.addEventListener('mouseup', mouseupEvent);\n DialogClientRect = _this._DialogObject._element.body.getBoundingClientRect();\n _context2.next = 5;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this10.sdk, _this10.originalOptions, {\n title: '锚点设置',\n left: DialogClientRect.left + 80 + 'px',\n top: DialogClientRect.top + 200 + 'px',\n confirmCallBack: function confirmCallBack(options) {\n _this.offset = {\n x: billboardAnchorPosition.x,\n y: billboardAnchorPosition.y\n };\n _DialogObject.close();\n },\n closeCallBack: function closeCallBack() {\n document.body.removeEventListener('mouseup', mouseupEvent);\n }\n }, false);\n case 5:\n _DialogObject = _context2.sent;\n anchorSetDialogObject = _DialogObject;\n _DialogObject._element.body.className = _DialogObject._element.body.className + ' anchor-point';\n contentElm = document.createElement('div');\n image = new Image();\n image.src = _this10.replaceHost(_this10.options.url, _this10.options.host);\n image.onload = function () {\n var ratio = image.width / image.height;\n canvas = document.createElement('canvas');\n var width = 150;\n var height = 150 / ratio;\n var ctx = canvas.getContext('2d', {\n willReadFrequently: true\n });\n canvas.width = width;\n canvas.height = height;\n canvas.style.display = 'block';\n ctx.drawImage(image, 0, 0, width, height);\n contentElm.appendChild(canvas);\n _DialogObject.contentAppChild(contentElm);\n point = document.createElement('span');\n point.className = 'point';\n contentElm.appendChild(point);\n billboardAnchorPosition = {\n x: _this.offset.x,\n y: _this.offset.y\n };\n point.style.top = \"calc(\".concat(Number(billboardAnchorPosition.y) * 100, \"% - 6px)\");\n point.style.left = \"calc(\".concat(Number(billboardAnchorPosition.x) * 100, \"% - 6px)\");\n canvas.addEventListener('click', function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n var anchor = {\n x: Number((x / canvas.width).toFixed(2)),\n y: Number((y / canvas.height).toFixed(2))\n };\n if (anchor.x < 0) {\n anchor.x = 0;\n }\n if (anchor.x > 1) {\n anchor.x = 1;\n }\n if (anchor.y < 0) {\n anchor.y = 0;\n }\n if (anchor.y > 1) {\n anchor.y = 1;\n }\n billboardAnchorPosition = {\n x: anchor.x,\n y: anchor.y\n };\n point.style.top = \"calc(\".concat(billboardAnchorPosition.y * 100, \"% - 5px)\");\n point.style.left = \"calc(\".concat(billboardAnchorPosition.x * 100, \"% - 5px)\");\n });\n point.addEventListener('mousedown', function (e) {\n _DialogObject._element.body.addEventListener('mousemove', mousemoveEvent);\n });\n };\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n })));\n elms = contentElm.getElementsByClassName('row');\n elms2 = contentElm.getElementsByTagName('h4');\n for (i = 0; i < elms.length; i++) {\n mode = elms[i].getAttribute('mode');\n if (mode !== null) {\n if (mode == this.options.mode) {\n elms[i].style.display = 'flex';\n } else {\n elms[i].style.display = 'none';\n }\n }\n }\n for (_i4 = 0; _i4 < elms2.length; _i4++) {\n _mode3 = elms2[_i4].getAttribute('mode');\n if (_mode3 !== null) {\n if (_mode3 == this.options.mode) {\n elms2[_i4].style.display = 'block';\n } else {\n elms2[_i4].style.display = 'none';\n }\n }\n }\n\n // let lng = contentElm.getElementsByClassName(\"lng\")[0]\n // let lat = contentElm.getElementsByClassName(\"lat\")[0]\n // let alt = contentElm.getElementsByClassName(\"alt\")[0]\n // lng.value = this.options.position.lng\n // lat.value = this.options.position.lat\n // alt.value = this.options.position.alt\n // this._elms.lng = [lng]\n // this._elms.lat = [lat]\n // this._elms.alt = [alt]\n // lng.addEventListener('blur', (e) => {\n // let value = e.target.value\n // if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n // value = Number(value)\n // if ((e.target.max) && value > Number(e.target.max)) {\n // value = Number(e.target.max)\n // }\n // if ((e.target.min) && value < Number(e.target.min)) {\n // value = Number(e.target.min)\n // }\n // if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {\n // value = Number(e.target.dataset.min)\n // }\n // }\n // // this.position = {\n // // lng: value,\n // // lat: this.position.lat,\n // // alt: this.position.alt\n // // }\n // this.options.position.lng = value\n // this.coordinate = this.options.coordinate\n // })\n // lat.addEventListener('blur', (e) => {\n // let value = e.target.value\n // if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n // value = Number(value)\n // if ((e.target.max) && value > Number(e.target.max)) {\n // value = Number(e.target.max)\n // }\n // if ((e.target.min) && value < Number(e.target.min)) {\n // value = Number(e.target.min)\n // }\n // if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {\n // value = Number(e.target.dataset.min)\n // }\n // }\n // // this.position = {\n // // lng: this.position.lng,\n // // lat: value,\n // // alt: this.position.alt\n // // }\n // this.options.position.lat = value\n // this.coordinate = this.options.coordinate\n // })\n // alt.addEventListener('blur', (e) => {\n // let value = e.target.value\n // if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n // value = Number(value)\n // if ((e.target.max) && value > Number(e.target.max)) {\n // value = Number(e.target.max)\n // }\n // if ((e.target.min) && value < Number(e.target.min)) {\n // value = Number(e.target.min)\n // }\n // if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {\n // value = Number(e.target.dataset.min)\n // }\n // }\n // // this.position = {\n // // lng: this.position.lng,\n // // lat: this.position.lat,\n // // alt: value\n // // }\n // this.options.position.alt = value\n // this.coordinate = this.options.coordinate\n // })\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n this._elms.labelColor = [colorPicker];\n setTimeout(/*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee4() {\n var flipeOverXBtn, flipeOverYBtn, modeData, modeDataLegpObject, modeDataLegpElm, _i5, heightBoxElm, heightElm, heightModeData, heightMode, objectsToExclude, _iterator, _step, _step$value, key, value, heightModeObject, heightModeDataLegpElm, _i7, fontData, fontObject, fontDataLegpElm, _i9;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n flipeOverXBtn = _this10._DialogObject._element.foot.getElementsByClassName('flipe-over-x')[0];\n flipeOverYBtn = _this10._DialogObject._element.foot.getElementsByClassName('flipe-over-y')[0];\n flipeOverXBtn.setAttribute('mode', 0);\n flipeOverYBtn.setAttribute('mode', 0);\n if (_this10.options.mode) {\n flipeOverXBtn.style.display = 'none';\n flipeOverYBtn.style.display = 'none';\n } else {\n flipeOverXBtn.style.display = 'block';\n flipeOverYBtn.style.display = 'block';\n }\n modeData = [{\n name: '贴地',\n value: '贴地',\n key: 0\n }, {\n name: '立体',\n value: '立体',\n key: 1\n }];\n modeDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('mode-box')[0], '.mode');\n if (!modeDataLegpObject) {\n _context4.next = 22;\n break;\n }\n modeDataLegpObject.legp_search(modeData);\n modeDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('mode')[0].getElementsByTagName('input')[0];\n modeDataLegpElm.value = _this10.mode;\n _i5 = 0;\n case 12:\n if (!(_i5 < modeData.length)) {\n _context4.next = 20;\n break;\n }\n if (!(modeData[_i5].key === _this10.mode)) {\n _context4.next = 17;\n break;\n }\n modeDataLegpElm.value = modeData[_i5].value;\n modeDataLegpObject.legp_searchActive(modeData[_i5].value);\n return _context4.abrupt(\"break\", 20);\n case 17:\n _i5++;\n _context4.next = 12;\n break;\n case 20:\n modeDataLegpElm.addEventListener('input', function () {\n for (var _i6 = 0; _i6 < modeData.length; _i6++) {\n if (modeData[_i6].value === modeDataLegpElm.value) {\n _this10.mode = modeData[_i6].key;\n break;\n }\n }\n });\n _this10._elms.mode = [modeDataLegpElm];\n case 22:\n heightBoxElm = _this10._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附地表',\n value: '依附地表',\n key: '2'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '3'\n }];\n heightMode = _this10.heightMode;\n _context4.t0 = heightMode;\n _context4.next = _context4.t0 === 0 ? 29 : _context4.t0 === '0' ? 29 : _context4.t0 === 1 ? 31 : _context4.t0 === '1' ? 31 : _context4.t0 === 2 ? 33 : _context4.t0 === '2' ? 33 : _context4.t0 === 3 ? 33 : _context4.t0 === '3' ? 33 : 38;\n break;\n case 29:\n heightElm.value = _this10.options.position.alt;\n return _context4.abrupt(\"break\", 38);\n case 31:\n if (_this10.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(_this10.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this10.options.position.lng, _this10.options.position.lat)]).then(function (position) {\n heightElm.value = Number((_this10.options.position.alt - Number(position[0].height.toFixed(2))).toFixed(2));\n });\n } else {\n heightElm.value = Number(_this10.options.position.alt.toFixed(2));\n }\n return _context4.abrupt(\"break\", 38);\n case 33:\n objectsToExclude = [];\n _iterator = _createForOfIteratorHelper(_this10.sdk.entityMap);\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2), key = _step$value[0], value = _step$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _this10.getClampToHeight(_this10.options.position, objectsToExclude).then(function (h) {\n _this10.options.position.alt = Number(h.toFixed(2));\n _this10.coordinate = _this10.options.coordinate;\n _this10._elms.alt && _this10._elms.alt.forEach(function (item) {\n item.value = _this10.options.position.alt;\n });\n heightElm.value = _this10.options.position.alt;\n });\n return _context4.abrupt(\"break\", 38);\n case 38:\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context4.next = 56;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n heightModeDataLegpElm.value = heightModeData[_this10.heightMode].value;\n _i7 = 0;\n case 44:\n if (!(_i7 < heightModeData.length)) {\n _context4.next = 51;\n break;\n }\n if (!(heightModeData[_i7].value == heightModeDataLegpElm.value)) {\n _context4.next = 48;\n break;\n }\n heightModeObject.legp_searchActive(heightModeData[_i7].value);\n return _context4.abrupt(\"break\", 51);\n case 48:\n _i7++;\n _context4.next = 44;\n break;\n case 51:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i8 = 0; _i8 < heightModeData.length; _i8++) {\n if (heightModeData[_i8].value === heightModeDataLegpElm.value) {\n heightMode = heightModeData[_i8].key;\n switch (heightMode) {\n case 0:\n case '0':\n _this10.options.position.alt = Number(heightElm.value);\n _this10.heightMode = 0;\n // this.position = this.options.position\n break;\n case 1:\n case '1':\n if (_this10.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(_this10.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this10.options.position.lng, _this10.options.position.lat)]).then(function (position) {\n _this10.options.position.alt = Number(heightElm.value) + Number(position[0].height.toFixed(2));\n // this.position = this.options.position\n });\n } else {\n _this10.options.position.alt = Number(heightElm.value);\n // this.position = this.options.position\n }\n _this10.heightMode = 1;\n break;\n case 2:\n case '2':\n _this10.heightMode = 2;\n break;\n case 3:\n case '3':\n var _objectsToExclude = [];\n var _iterator2 = _createForOfIteratorHelper(_this10.sdk.entityMap),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step2.value, 2),\n _key = _step2$value[0],\n _value = _step2$value[1];\n if (_value.type === 'RadarScanStereoscopic' && _value.entity) {\n _objectsToExclude.push(_value.entity);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n _this10.getClampToHeight(_this10.options.position, _objectsToExclude).then(function (h) {\n _this10.options.position.alt = Number(h.toFixed(2));\n // this.position = this.options.position\n });\n _this10.heightMode = 3;\n break;\n }\n _this10.position = _this10.options.position;\n break;\n }\n }\n });\n heightElm.addEventListener('blur', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee3() {\n var position;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = heightMode;\n _context3.next = _context3.t0 === 0 ? 3 : _context3.t0 === '0' ? 3 : _context3.t0 === 1 ? 5 : _context3.t0 === '1' ? 5 : _context3.t0 === 2 ? 14 : _context3.t0 === '2' ? 14 : 15;\n break;\n case 3:\n _this10.options.position.alt = Number(Number(heightElm.value).toFixed(2));\n return _context3.abrupt(\"break\", 15);\n case 5:\n if (!_this10.sdk.viewer.scene.terrainProvider.availability) {\n _context3.next = 12;\n break;\n }\n _context3.next = 8;\n return Cesium.sampleTerrainMostDetailed(_this10.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(_this10.options.position.lng, _this10.options.position.lat)]);\n case 8:\n position = _context3.sent;\n _this10.options.position.alt = Number(heightElm.value) + Number(position[0].height.toFixed(2));\n _context3.next = 13;\n break;\n case 12:\n _this10.options.position.alt = Number(heightElm.value);\n case 13:\n return _context3.abrupt(\"break\", 15);\n case 14:\n return _context3.abrupt(\"break\", 15);\n case 15:\n _this10.position = _this10.options.position;\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n })));\n _this10._elms.height = heightBoxElm;\n _this10._elms.heightMode = heightModeDataLegpElm;\n _this10.heightMode = _this10.heightMode;\n case 56:\n fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontList\"])();\n fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (!fontObject) {\n _context4.next = 72;\n break;\n }\n fontObject.legp_search(fontData);\n fontDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this10.labelFontFamily].value;\n _i9 = 0;\n case 63:\n if (!(_i9 < fontData.length)) {\n _context4.next = 70;\n break;\n }\n if (!(fontData[_i9].value == fontDataLegpElm.value)) {\n _context4.next = 67;\n break;\n }\n fontObject.legp_searchActive(fontData[_i9].value);\n return _context4.abrupt(\"break\", 70);\n case 67:\n _i9++;\n _context4.next = 63;\n break;\n case 70:\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i10 = 0; _i10 < fontData.length; _i10++) {\n if (fontData[_i10].value === fontDataLegpElm.value) {\n _this10.labelFontFamily = fontData[_i10].key;\n break;\n }\n }\n });\n _this10._elms.labelFontFamily = [fontDataLegpElm];\n case 72:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n })), 0);\n _context5.next = 28;\n break;\n case 27:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 28:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this._positionEditing;\n }\n\n /**\r\n * 飞到\r\n */,\n set: function set(status) {\n var _this11 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this._positionEditing = status;\n if (status === true) {\n this.previous = {\n position: _objectSpread({}, this.options.position)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_20__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.event.mouse_move(function (movement, cartesian) {\n var position = _this11.cartesian3Towgs84(cartesian, _this11.sdk.viewer);\n _this11.options.position.lng = position.lng;\n _this11.options.position.lat = position.lat;\n _this11.options.position.alt = position.alt;\n _this11.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var position = _this11.cartesian3Towgs84(cartesian, _this11.sdk.viewer);\n _this11.options.position.lng = position.lng;\n _this11.options.position.lat = position.lat;\n _this11.options.position.alt = position.alt;\n _this11.event.mouse_move(function () {});\n _this11.event.mouse_left(function () {});\n _this11.event.mouse_right(function () {});\n _this11.event.gesture_pinck_start(function () {});\n _this11.event.gesture_pinck_end(function () {});\n _this11.previous = null;\n _this11.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this11.options.position.lng = _this11.previous.position.lng;\n _this11.options.position.lat = _this11.previous.position.lat;\n _this11.options.position.alt = _this11.previous.position.alt;\n _this11.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this11.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this11.options.position.lng = _this11.previous.position.lng;\n _this11.options.position.lat = _this11.previous.position.lat;\n _this11.options.position.alt = _this11.previous.position.alt;\n _this11.positionEditing = false;\n } else {\n var position = _this11.cartesian3Towgs84(cartesian, _this11.sdk.viewer);\n _this11.options.position.lng = position.lng;\n _this11.options.position.lat = position.lat;\n _this11.options.position.alt = position.alt;\n _this11.event.mouse_move(function () {});\n _this11.event.mouse_left(function () {});\n _this11.event.mouse_right(function () {});\n _this11.event.gesture_pinck_start(function () {});\n _this11.event.gesture_pinck_end(function () {});\n _this11.positionEditing = false;\n }\n });\n });\n } else {\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (!this.previous) {\n this.previous = {\n position: _objectSpread({}, this.options.position)\n };\n }\n this.position = _objectSpread({}, this.previous.position);\n }\n }\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee6() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n gap,\n fromDegreesArray,\n positionArray,\n height,\n _position,\n point1,\n point2,\n direction,\n c,\n ray,\n r,\n pickedObjects,\n i,\n promise,\n _i11,\n _Cesium$Cartesian,\n a,\n BoundingSphere,\n _args6 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n options = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context6.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.position) {\n position = _objectSpread({}, this.options.position[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context6.next = 16;\n break;\n }\n _context6.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context6.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context6.next = 59;\n break;\n case 23:\n gap = Math.abs(Math.cos(Math.PI / 180 * this.options.position.lat)) * (0.0001 * this.options.scale);\n fromDegreesArray = [[this.options.position.lng - 0.0001 * this.options.scale, this.options.position.lat - gap], [this.options.position.lng + 0.0001 * this.options.scale, this.options.position.lat + gap]];\n positionArray = [];\n height = 0;\n _position = this.options.position;\n point1 = Cesium.Cartesian3.fromDegrees(_position.lng, _position.lat, 0);\n point2 = Cesium.Cartesian3.fromDegrees(_position.lng, _position.lat, 10000000);\n direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, direction);\n ray = new Cesium.Ray(point1, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = 0;\n case 36:\n if (!(i < pickedObjects.length)) {\n _context6.next = 43;\n break;\n }\n if (!pickedObjects[i].position) {\n _context6.next = 40;\n break;\n }\n r = pickedObjects[i];\n return _context6.abrupt(\"break\", 43);\n case 40:\n i++;\n _context6.next = 36;\n break;\n case 43:\n if (!(r && r.position)) {\n _context6.next = 47;\n break;\n }\n height = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n _context6.next = 56;\n break;\n case 47:\n _context6.prev = 47;\n _context6.next = 50;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(_position.lng, _position.lat)]);\n case 50:\n promise = _context6.sent;\n height = promise[0].height;\n _context6.next = 56;\n break;\n case 54:\n _context6.prev = 54;\n _context6.t0 = _context6[\"catch\"](47);\n case 56:\n for (_i11 = 0; _i11 < fromDegreesArray.length; _i11++) {\n a = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(fromDegreesArray[_i11]).concat([height]));\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 59:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this, [[47, 54]]);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"updateHeight\",\n value: function () {\n var _updateHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee7() {\n var _this12 = this;\n var height, height2, point1, point2, objectsToExclude, _iterator3, _step3, _step3$value, key, value, updatedCartesians, direction, c, ray, r, pickedObjects, i, promise, heightElm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n point1 = new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, 0);\n point2 = new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, 10000000000000);\n objectsToExclude = [];\n _iterator3 = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n _step3$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step3.value, 2), key = _step3$value[0], value = _step3$value[1];\n if (value.type === 'RadarScanStereoscopic' && value.entity) {\n objectsToExclude.push(value.entity);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n _context7.next = 7;\n return this.sdk.viewer.scene.clampToHeightMostDetailed([point1], objectsToExclude);\n case 7:\n updatedCartesians = _context7.sent;\n if (updatedCartesians && updatedCartesians[0]) {\n height = this.cartesian3Towgs84(updatedCartesians[0], this.sdk.viewer).alt;\n }\n direction = Cesium.Cartesian3.subtract(point1, point2, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, new Cesium.Cartesian3());\n ray = new Cesium.Ray(point2, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = pickedObjects.length - 1;\n case 15:\n if (!(i >= 0)) {\n _context7.next = 22;\n break;\n }\n if (!pickedObjects[i].position) {\n _context7.next = 19;\n break;\n }\n r = pickedObjects[i];\n return _context7.abrupt(\"break\", 22);\n case 19:\n i--;\n _context7.next = 15;\n break;\n case 22:\n if (r && r.position) {\n height2 = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n }\n _context7.prev = 23;\n _context7.next = 26;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(this.options.position.lng, this.options.position.lat)]);\n case 26:\n promise = _context7.sent;\n _context7.next = 31;\n break;\n case 29:\n _context7.prev = 29;\n _context7.t0 = _context7[\"catch\"](23);\n case 31:\n if ((height2 === void 0 || height2 < promise[0].height) && promise) {\n height2 = promise[0].height;\n }\n if (height === void 0 || height < height2) {\n height = height2;\n }\n if (!(height !== undefined)) {\n _context7.next = 50;\n break;\n }\n this.options.position.alt = Number(Number(height).toFixed(2));\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this12.options.position.alt;\n });\n this.coordinate = this.options.coordinate;\n if (!this._elms.height) {\n _context7.next = 50;\n break;\n }\n heightElm = this._elms.height.getElementsByClassName('height')[0];\n if (!heightElm) {\n _context7.next = 50;\n break;\n }\n _context7.t1 = this._elms.heightMode.value;\n _context7.next = _context7.t1 === '海拔高度' ? 43 : _context7.t1 === '相对地表' ? 45 : _context7.t1 === '依附地表' ? 47 : _context7.t1 === '依附模型' ? 48 : 50;\n break;\n case 43:\n heightElm.value = this.options.position.alt;\n return _context7.abrupt(\"break\", 50);\n case 45:\n if (this.sdk.viewer.scene.terrainProvider.availability) {\n Cesium.sampleTerrainMostDetailed(this.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(this.options.position.lng, this.options.position.lat)]).then(function (position) {\n heightElm.value = Number((_this12.options.position.alt - position[0].height).toFixed(2));\n });\n } else {\n heightElm.value = this.options.position.alt;\n }\n return _context7.abrupt(\"break\", 50);\n case 47:\n return _context7.abrupt(\"break\", 50);\n case 48:\n heightElm.value = this.options.position.alt;\n return _context7.abrupt(\"break\", 50);\n case 50:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this, [[23, 29]]);\n }));\n function updateHeight() {\n return _updateHeight.apply(this, arguments);\n }\n return updateHeight;\n }()\n }, {\n key: \"renewPoint\",\n value: function renewPoint() {\n if (!this.entity.values && this.entity.billboard) {\n var font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontFamily\"])(this.labelFontFamily) || 'Helvetica';\n this.entity.billboard.scale = this.billboardScale;\n if (this.billboardScaleByDistance) {\n this.entity.billboard.scaleByDistance = new Cesium.NearFarScalar(this.billboardNear, 1, this.billboardFar, 0);\n this.entity.billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.billboardNear, 1, this.billboardFar, 0);\n this.entity.label.scaleByDistance = new Cesium.NearFarScalar(this.billboardNear, 1, this.billboardFar, 0);\n this.entity.label.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.billboardNear, 1, this.billboardFar, 0);\n } else {\n this.entity.billboard.scaleByDistance = undefined;\n this.entity.billboard.pixelOffsetScaleByDistance = undefined;\n this.entity.label.scaleByDistance = undefined;\n this.entity.label.pixelOffsetScaleByDistance = undefined;\n }\n this.entity.label.font = this.options.label.fontSize + 'px ' + font;\n this.entity.label.fillColor = Cesium.Color.fromCssColorString(this.options.label.color);\n var _canvas3 = this.entity.billboard.image.getValue();\n var billboardH = _canvas3.height * (128 / _canvas3.width);\n this.entity.billboard.pixelOffset = {\n x: -128 * this.billboardScale * this.options.offset.x,\n y: -billboardH * this.billboardScale * this.options.offset.y\n };\n // this.entity.billboard.pixelOffset = { x: -width * this.billboardScale * (this.flipeY ? (1 - this.options.offset.x) : this.options.offset.x), y: -height * this.billboardScale * (this.flipeX ? (1 - this.options.offset.y) : this.options.offset.y) }\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n this.angle = this.options.angle;\n this.scale = this.options.scale;\n this.offset = this.options.offset;\n this.flipeX = this.options.flipe.x;\n this.flipeY = this.options.flipe.y;\n this.show = this.options.show;\n this.mode = this.options.mode;\n this.heightMode = this.options.heightMode;\n this.billboardScale = this.options.billboard.scale;\n this.labelShow = this.options.label.show;\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee8() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context8.next = 7;\n return this.sdk.removeIncetance(this.options.id);\n case 7:\n _context8.next = 9;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n case 9:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n this.options.position.lng = v.position.lng;\n this.options.position.lat = v.position.lat;\n this.options.position.alt = v.position.alt;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (GroundImage);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JvdW5kSW1hZ2UvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvR3JvdW5kSW1hZ2UvaW5kZXguanM/MTJlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IGN5X3NsaWRlciBmcm9tIFwiLi4vLi4vRWxlbWVudC9jeV9odG1sX3NsaWRlclwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgZ2V0R3JvdW5kQ292ZXIgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgR3JvdW5kSW1hZ2UgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDotLTlnLDlm77niYdcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmFuZ2xlPTAge251bWJlcn0g5peL6L2s6KeS5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2NhbGU9MSB7bnVtYmVyfSDmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5mbGlwZSB7b2JqZWN0fSDnv7vovaxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5mbGlwZS54PWZhbHNlIHtib29sZWFufSDnu5VY6L2057+76L2sXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZmxpcGUueT1mYWxzZSB7Ym9vbGVhbn0g57uVWei9tOe/u+i9rFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnVybCB7c3RyaW5nfSDlm77niYflnLDlnYBcclxuICAgKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBvcHRpb25zLnBvc2l0aW9uIOe7j+e6rOW6puWSjOmrmOW6pueahOWIl+ihqO+8jOWAvOS6pOabvyBbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAgICogQHBhcmFtIF9EaWFsb2cge29iamVjdH0g5by55qGG5LqL5Lu2XHJcbiAgICogQHBhcmFtIF9EaWFsb2cuY29uZmlybUNhbGxCYWNrIHtmdW5jdGlvbn0g5by55qGG56Gu6K6k5pe255qE5Zue6LCDXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+acquWRveWQjeWvueixoSdcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy51cmwgPSBvcHRpb25zLnVybFxyXG4gICAgdGhpcy5vcHRpb25zLmFuZ2xlID0gb3B0aW9ucy5hbmdsZSB8fCAwXHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGUgPSAob3B0aW9ucy5zY2FsZSB8fCBvcHRpb25zLnNjYWxlID09PSAwKSA/IG9wdGlvbnMuc2NhbGUgOiAxXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSBvcHRpb25zLnBvc2l0aW9uXHJcbiAgICB0aGlzLm9wdGlvbnMub2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQgfHwgeyB4OiAwLjUsIHk6IDEgfVxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGUgPSB0aGlzLm9wdGlvbnMubW9kZSA/IDEgOiAwXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkID0gb3B0aW9ucy5iaWxsYm9hcmQgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUgPSB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLnNjYWxlIHx8IDFcclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQubmVhciA9IHRoaXMub3B0aW9ucy5iaWxsYm9hcmQubmVhciB8fCB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLm5lYXIgPT09IDAgPyB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLm5lYXIgOiAyMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLmZhciA9IHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuZmFyIHx8IHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuZmFyID09PSAwID8gdGhpcy5vcHRpb25zLmJpbGxib2FyZC5mYXIgOiAxMDAwMDBcclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPyB0cnVlIDogZmFsc2VcclxuXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnRleHQgPSBvcHRpb25zLmxhYmVsLnRleHQgfHwgdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gdGhpcy5vcHRpb25zLmxhYmVsLnRleHRcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID1cclxuICAgICAgb3B0aW9ucy5sYWJlbC5zaG93IHx8IG9wdGlvbnMubGFiZWwuc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IG9wdGlvbnMubGFiZWwuc2hvd1xyXG4gICAgICAgIDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplID0gb3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCAzOVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnIzAwZmZmZidcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMuZmxpcGUgPSBvcHRpb25zLmZsaXBlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuZmxpcGUueCA9IHRoaXMub3B0aW9ucy5mbGlwZS54IHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuZmxpcGUueSA9IHRoaXMub3B0aW9ucy5mbGlwZS55IHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9XHJcbiAgICAgIG9wdGlvbnMuaGVpZ2h0TW9kZSB8fCBvcHRpb25zLmhlaWdodE1vZGUgPT0gMCA/IG9wdGlvbnMuaGVpZ2h0TW9kZSA6IDNcclxuXHJcbiAgICB0aGlzLmVudGl0eSA9IHtcclxuICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgfVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5fcHJvaiA9IHRoaXMuc2RrLnByb2pcclxuICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICB0aGlzLmNyZWF0ZSgpXHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubmFtZVxyXG4gIH1cclxuXHJcbiAgc2V0IG5hbWUodikge1xyXG4gICAgc3VwZXIubmFtZSA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0ID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5sYWJlbC50ZXh0ID0gdGhpcy5vcHRpb25zLmxhYmVsLnRleHQpXHJcbiAgfVxyXG5cclxuICBnZXQgbW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubW9kZVxyXG4gIH1cclxuICBzZXQgbW9kZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubW9kZSA9IHYgPyAxIDogMFxyXG4gICAgbGV0IG1vZGVEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+i0tOWcsCcsXHJcbiAgICAgICAgdmFsdWU6ICfotLTlnLAnLFxyXG4gICAgICAgIGtleTogMFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+eri+S9kycsXHJcbiAgICAgICAgdmFsdWU6ICfnq4vkvZMnLFxyXG4gICAgICAgIGtleTogMVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChtb2RlRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5tb2RlKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5tb2RlICYmIHRoaXMuX2VsbXMubW9kZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnZhbHVlID0gbW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5KSB7XHJcbiAgICAgIGxldCBlbG1zID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncm93JylcclxuICAgICAgbGV0IGVsbXMyID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmZvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgIGxldCBlbG1zMyA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBtb2RlID0gZWxtc1tpXS5nZXRBdHRyaWJ1dGUoJ21vZGUnKVxyXG4gICAgICAgIGlmIChtb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAobW9kZSA9PSB0aGlzLm9wdGlvbnMubW9kZSkge1xyXG4gICAgICAgICAgICBlbG1zW2ldLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbG1zW2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG1zMi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBtb2RlID0gZWxtczJbaV0uZ2V0QXR0cmlidXRlKCdtb2RlJylcclxuICAgICAgICBpZiAobW9kZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKG1vZGUgPT0gdGhpcy5vcHRpb25zLm1vZGUpIHtcclxuICAgICAgICAgICAgZWxtczJbaV0uc3R5bGUuZGlzcGxheSA9ICdibG9jaydcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbG1zMltpXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtczMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgbW9kZSA9IGVsbXMzW2ldLmdldEF0dHJpYnV0ZSgnbW9kZScpXHJcbiAgICAgICAgaWYgKG1vZGUgIT09IG51bGwpIHtcclxuICAgICAgICAgIGlmIChtb2RlID09IHRoaXMub3B0aW9ucy5tb2RlKSB7XHJcbiAgICAgICAgICAgIGVsbXMzW2ldLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWxtczNbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XHJcbiAgICBpbWcuc3JjID0gdGhpcy5yZXBsYWNlSG9zdCh0aGlzLm9wdGlvbnMudXJsLCB0aGlzLm9wdGlvbnMuaG9zdCk7XHJcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlKSB7XHJcbiAgICAgICAgLy8gY2FudmFzLndpZHRoID0gaW1nLndpZHRoXHJcbiAgICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgLy8gbGV0IGJpbGxib2FyZEggPSBpbWcuaGVpZ2h0ICogKDEyOCAvIGltZy53aWR0aClcclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgLy8gICBjdHguc2NhbGUoMSwgLTEpO1xyXG4gICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZmxpcGVZKSB7XHJcbiAgICAgICAgLy8gICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodClcclxuICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSBjYW52YXNcclxuICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQucGl4ZWxPZmZzZXQgPSB7IHg6IC0xMjggKiB0aGlzLmJpbGxib2FyZFNjYWxlICogKHRoaXMuZmxpcGVZID8gKDEtdGhpcy5vcHRpb25zLm9mZnNldC54KSA6IHRoaXMub3B0aW9ucy5vZmZzZXQueCksIHk6IC1iaWxsYm9hcmRIICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqICh0aGlzLmZsaXBlWCA/ICgxLXRoaXMub3B0aW9ucy5vZmZzZXQueSkgOiB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpIH1cclxuICAgICAgICBsZXQgY2FudmFzID0gdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltYWdlLmdldFZhbHVlKClcclxuICAgICAgICBsZXQgYmlsbGJvYXJkSCA9IGNhbnZhcy5oZWlnaHQgKiAoMTI4IC8gY2FudmFzLndpZHRoKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IHsgeDogLTEyOCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngsIHk6IC1iaWxsYm9hcmRIICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqIHRoaXMub3B0aW9ucy5vZmZzZXQueSB9XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5sYWJlbFNob3cgJiYgKHRoaXMuZW50aXR5LmxhYmVsLnNob3cgPSB0cnVlKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICAvLyDorr7nva7nlLvluIPlpKflsI9cclxuICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGggKiAyO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0ICogMjtcclxuXHJcbiAgICAgICAgLy8g57uY5Yi25Zu+5YOPXHJcbiAgICAgICAgaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgICBjdHguc2NhbGUoMSwgLTEpO1xyXG4gICAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmxpcGVZKSB7XHJcbiAgICAgICAgICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIGltZy53aWR0aCAtIChpbWcud2lkdGggKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngpLCBpbWcuaGVpZ2h0IC0gKGltZy5oZWlnaHQgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpKTtcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUubWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkltYWdlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBpbWFnZTogY2FudmFzLFxyXG4gICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG9mZnNldCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBvZmZzZXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm9mZnNldCA9IHZcclxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XHJcbiAgICBpbWcuc3JjID0gdGhpcy5yZXBsYWNlSG9zdCh0aGlzLm9wdGlvbnMudXJsLCB0aGlzLm9wdGlvbnMuaG9zdCk7XHJcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlKSB7XHJcbiAgICAgICAgLy8gY2FudmFzLndpZHRoID0gaW1nLndpZHRoXHJcbiAgICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgLy8gbGV0IGJpbGxib2FyZEggPSBpbWcuaGVpZ2h0ICogKDEyOCAvIGltZy53aWR0aClcclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgLy8gICBjdHguc2NhbGUoMSwgLTEpO1xyXG4gICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuZmxpcGVZKSB7XHJcbiAgICAgICAgLy8gICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodClcclxuICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSBjYW52YXNcclxuICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQucGl4ZWxPZmZzZXQgPSB7IHg6IC0xMjggKiB0aGlzLmJpbGxib2FyZFNjYWxlICogKHRoaXMuZmxpcGVZID8gKDEtdGhpcy5vcHRpb25zLm9mZnNldC54KSA6IHRoaXMub3B0aW9ucy5vZmZzZXQueCksIHk6IC1iaWxsYm9hcmRIICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqICh0aGlzLmZsaXBlWCA/ICgxLXRoaXMub3B0aW9ucy5vZmZzZXQueSkgOiB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpIH1cclxuICAgICAgICBsZXQgY2FudmFzID0gdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltYWdlLmdldFZhbHVlKClcclxuICAgICAgICBsZXQgYmlsbGJvYXJkSCA9IGNhbnZhcy5oZWlnaHQgKiAoMTI4IC8gY2FudmFzLndpZHRoKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IHsgeDogLTEyOCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngsIHk6IC1iaWxsYm9hcmRIICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqIHRoaXMub3B0aW9ucy5vZmZzZXQueSB9XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5sYWJlbFNob3cgJiYgKHRoaXMuZW50aXR5LmxhYmVsLnNob3cgPSB0cnVlKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICAvLyDorr7nva7nlLvluIPlpKflsI9cclxuICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGggKiAyO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0ICogMjtcclxuXHJcbiAgICAgICAgLy8g57uY5Yi25Zu+5YOPXHJcbiAgICAgICAgaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgICBjdHguc2NhbGUoMSwgLTEpO1xyXG4gICAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmxpcGVZKSB7XHJcbiAgICAgICAgICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIGltZy53aWR0aCAtIChpbWcud2lkdGggKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngpLCBpbWcuaGVpZ2h0IC0gKGltZy5oZWlnaHQgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpKTtcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUubWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkltYWdlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBpbWFnZTogY2FudmFzLFxyXG4gICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFuZ2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbmdsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGFuZ2xlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbmdsZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuYW5nbGUgJiYgdGhpcy5fZWxtcy5hbmdsZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZVxyXG4gIH1cclxuXHJcbiAgc2V0IHNjYWxlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuc2NhbGUgJiYgdGhpcy5fZWxtcy5zY2FsZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZFNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVcclxuICB9XHJcbiAgc2V0IGJpbGxib2FyZFNjYWxlKHYpIHtcclxuICAgIGxldCBiaWxsYm9hcmRTY2FsZSA9IE51bWJlcih2LnRvRml4ZWQoMikpXHJcbiAgICBpZiAoYmlsbGJvYXJkU2NhbGUgPiA5OSkge1xyXG4gICAgICBiaWxsYm9hcmRTY2FsZSA9IDk5XHJcbiAgICB9XHJcbiAgICBpZiAoYmlsbGJvYXJkU2NhbGUgPCAwLjEpIHtcclxuICAgICAgYmlsbGJvYXJkU2NhbGUgPSAwLjFcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGUgPSBiaWxsYm9hcmRTY2FsZVxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuX2VsbXMuYmlsbGJvYXJkU2NhbGUgJiZcclxuICAgICAgdGhpcy5fZWxtcy5iaWxsYm9hcmRTY2FsZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgYmlsbGJvYXJkU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBiaWxsYm9hcmRTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgdGhpcy5fZWxtcy5iaWxsYm9hcmRTY2FsZUJ5RGlzdGFuY2UgJiZcclxuICAgICAgdGhpcy5fZWxtcy5iaWxsYm9hcmRTY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgYmlsbGJvYXJkTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLm5lYXJcclxuICB9XHJcbiAgc2V0IGJpbGxib2FyZE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMuYmlsbGJvYXJkRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmJpbGxib2FyZEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuX2VsbXMuYmlsbGJvYXJkTmVhciAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmJpbGxib2FyZE5lYXIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJpbGxib2FyZEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYmlsbGJvYXJkLmZhclxyXG4gIH1cclxuICBzZXQgYmlsbGJvYXJkRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5iaWxsYm9hcmROZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMuYmlsbGJvYXJkTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmJpbGxib2FyZC5mYXIgPSBmYXJcclxuICAgIHRoaXMucmVuZXdQb2ludCgpXHJcbiAgICB0aGlzLl9lbG1zLmJpbGxib2FyZEZhciAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmJpbGxib2FyZEZhci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgICAgfSlcclxuICB9XHJcblxyXG5cclxuICBnZXQgZmxpcGVZKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mbGlwZS55XHJcbiAgfVxyXG4gIHNldCBmbGlwZVkodikge1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZmxpcGUueSA9IHZcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XHJcbiAgICAgIGltZy5zcmMgPSB0aGlzLnJlcGxhY2VIb3N0KHRoaXMub3B0aW9ucy51cmwsIHRoaXMub3B0aW9ucy5ob3N0KTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZSkge1xyXG4gICAgICAgICAgLy8gY2FudmFzLndpZHRoID0gaW1nLndpZHRoXHJcbiAgICAgICAgICAvLyBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodDtcclxuICAgICAgICAgIC8vIGxldCBiaWxsYm9hcmRIID0gaW1nLmhlaWdodCAqICgxMjggLyBpbWcud2lkdGgpXHJcbiAgICAgICAgICAvLyBpZiAodGhpcy5mbGlwZVgpIHtcclxuICAgICAgICAgIC8vICAgY3R4LnNjYWxlKDEsIC0xKTtcclxuICAgICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGlmICh0aGlzLmZsaXBlWSkge1xyXG4gICAgICAgICAgLy8gICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgICAgLy8gICBjdHgudHJhbnNsYXRlKC1jYW52YXMud2lkdGgsIDApO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodClcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IGNhbnZhc1xyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0ID0geyB4OiAtMTI4ICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqICh0aGlzLmZsaXBlWSA/ICgxLXRoaXMub3B0aW9ucy5vZmZzZXQueCkgOiB0aGlzLm9wdGlvbnMub2Zmc2V0LngpLCB5OiAtYmlsbGJvYXJkSCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiAodGhpcy5mbGlwZVggPyAoMS10aGlzLm9wdGlvbnMub2Zmc2V0LnkpIDogdGhpcy5vcHRpb25zLm9mZnNldC55KSB9XHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2hvdyA9IHRydWVcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvLyDorr7nva7nlLvluIPlpKflsI9cclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGltZy53aWR0aCAqIDI7XHJcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodCAqIDI7XHJcblxyXG4gICAgICAgICAgLy8g57uY5Yi25Zu+5YOPXHJcbiAgICAgICAgICBpZiAodGhpcy5mbGlwZVgpIHtcclxuICAgICAgICAgICAgY3R4LnNjYWxlKDEsIC0xKTtcclxuICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLmhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmZsaXBlWSkge1xyXG4gICAgICAgICAgICBjdHguc2NhbGUoLTEsIDEpO1xyXG4gICAgICAgICAgICBjdHgudHJhbnNsYXRlKC1jYW52YXMud2lkdGgsIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIGltZy53aWR0aCAtIChpbWcud2lkdGggKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngpLCBpbWcuaGVpZ2h0IC0gKGltZy5oZWlnaHQgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpKTtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5tYXRlcmlhbCA9IG5ldyBDZXNpdW0uSW1hZ2VNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgaW1hZ2U6IGNhbnZhcyxcclxuICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIuWPguaVsOW/hemhu+S4umJvb2xlYW5cIilcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGZsaXBlWCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmxpcGUueFxyXG4gIH1cclxuICBzZXQgZmxpcGVYKHYpIHtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmZsaXBlLnggPSB2XHJcbiAgICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgIGltZy5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xyXG4gICAgICBpbWcuc3JjID0gdGhpcy5yZXBsYWNlSG9zdCh0aGlzLm9wdGlvbnMudXJsLCB0aGlzLm9wdGlvbnMuaG9zdCk7XHJcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1vZGUpIHtcclxuICAgICAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGltZy53aWR0aFxyXG4gICAgICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgICAvLyBsZXQgYmlsbGJvYXJkSCA9IGltZy5oZWlnaHQgKiAoMTI4IC8gaW1nLndpZHRoKVxyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgICAvLyAgIGN0eC5zY2FsZSgxLCAtMSk7XHJcbiAgICAgICAgICAvLyAgIGN0eC50cmFuc2xhdGUoMCwgLWNhbnZhcy5oZWlnaHQpXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyBpZiAodGhpcy5mbGlwZVkpIHtcclxuICAgICAgICAgIC8vICAgY3R4LnNjYWxlKC0xLCAxKTtcclxuICAgICAgICAgIC8vICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSBjYW52YXNcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IHsgeDogLTEyOCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiAodGhpcy5mbGlwZVkgPyAoMS10aGlzLm9wdGlvbnMub2Zmc2V0LngpIDogdGhpcy5vcHRpb25zLm9mZnNldC54KSwgeTogLWJpbGxib2FyZEggKiB0aGlzLmJpbGxib2FyZFNjYWxlICogKHRoaXMuZmxpcGVYID8gKDEtdGhpcy5vcHRpb25zLm9mZnNldC55KSA6IHRoaXMub3B0aW9ucy5vZmZzZXQueSkgfVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy8g6K6+572u55S75biD5aSn5bCPXHJcbiAgICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGggKiAyO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQgKiAyO1xyXG5cclxuICAgICAgICAgIC8vIOe7mOWItuWbvuWDj1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmxpcGVYKSB7XHJcbiAgICAgICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7XHJcbiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgLWNhbnZhcy5oZWlnaHQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5mbGlwZVkpIHtcclxuICAgICAgICAgICAgY3R4LnNjYWxlKC0xLCAxKTtcclxuICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSgtY2FudmFzLndpZHRoLCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCBpbWcud2lkdGggLSAoaW1nLndpZHRoICogdGhpcy5vcHRpb25zLm9mZnNldC54KSwgaW1nLmhlaWdodCAtIChpbWcuaGVpZ2h0ICogdGhpcy5vcHRpb25zLm9mZnNldC55KSk7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUubWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkltYWdlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGltYWdlOiBjYW52YXMsXHJcbiAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5lbnRpdHkubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IHRydWVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMub2Zmc2V0ID0ge1xyXG4gICAgICAgIC8vICAgeDogdGhpcy5vZmZzZXQueCxcclxuICAgICAgICAvLyAgIHk6IE1hdGguYWJzKHRoaXMub2Zmc2V0LnkgLSAxKSxcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA/IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlIDogMFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0TW9kZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IHYgPyB2IDogMFxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSB2IHx8IHYgPT0gMCA/IHYgOiAzXHJcbiAgICBsZXQgaGVpZ2h0TW9kZVxyXG4gICAgbGV0IGhlaWdodE1vZGVOYW1lID0gJydcclxuICAgIGxldCBhbHRCb3hFbG1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ICYmXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJlxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgKSB7XHJcbiAgICAgIGFsdEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgJ2FsdC1ib3gnXHJcbiAgICAgIClbMF1cclxuICAgIH1cclxuICAgIGxldCBoZWlnaHRFbG1cclxuICAgIGlmICh0aGlzLl9lbG1zLmhlaWdodCkge1xyXG4gICAgICBoZWlnaHRFbG0gPSB0aGlzLl9lbG1zLmhlaWdodC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1udW1iZXInKVswXVxyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGFsdEJveEVsbSAmJlxyXG4gICAgICAgICAgKGFsdEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgYWx0LWJveCcpXHJcbiAgICAgICAgLy8gdGhpcy5fZWxtcy5oZWlnaHQgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0LnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgaGVpZ2h0RWxtICYmIChoZWlnaHRFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xJylcclxuICAgICAgICBoZWlnaHRNb2RlID0gQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5OT05FXHJcbiAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5rW35ouU6auY5bqmJ1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgYWx0Qm94RWxtICYmXHJcbiAgICAgICAgICAoYWx0Qm94RWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBhbHQtYm94JylcclxuICAgICAgICAvLyB0aGlzLl9lbG1zLmhlaWdodCAmJiAodGhpcy5fZWxtcy5oZWlnaHQuc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICBoZWlnaHRFbG0gJiYgKGhlaWdodEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEnKVxyXG4gICAgICAgIGhlaWdodE1vZGUgPSBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLk5PTkVcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfnm7jlr7nlnLDooagnXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBhbHRCb3hFbG0gJiZcclxuICAgICAgICAgIChhbHRCb3hFbG0uY2xhc3NOYW1lID1cclxuICAgICAgICAgICAgJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGFsdC1ib3ggZGlzYWJsZWQnKVxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+S+nemZhOWcsOihqCdcclxuICAgICAgICBhbHRCb3hFbG0gJiZcclxuICAgICAgICAgIChhbHRCb3hFbG0uY2xhc3NOYW1lID1cclxuICAgICAgICAgICAgJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGFsdC1ib3ggZGlzYWJsZWQnKVxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+S+nemZhOWcsOihqCdcclxuICAgICAgICBoZWlnaHRNb2RlID0gQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkRcclxuICAgICAgICAvLyB0aGlzLl9lbG1zLmhlaWdodCAmJiAodGhpcy5fZWxtcy5oZWlnaHQuc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICBoZWlnaHRFbG0gJiYgKGhlaWdodEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgZGlzYWJsZWQnKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzMnOlxyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgYWx0Qm94RWxtICYmXHJcbiAgICAgICAgICAoYWx0Qm94RWxtLmNsYXNzTmFtZSA9XHJcbiAgICAgICAgICAgICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBhbHQtYm94IGRpc2FibGVkJylcclxuICAgICAgICAvLyB0aGlzLl9lbG1zLmhlaWdodCAmJiAodGhpcy5fZWxtcy5oZWlnaHQuc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICBoZWlnaHRFbG0gJiYgKGhlaWdodEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgZGlzYWJsZWQnKVxyXG4gICAgICAgIGhlaWdodE1vZGUgPSBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLk5PTkVcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfkvp3pmYTmqKHlnosnXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmhlaWdodFJlZmVyZW5jZSA9IGhlaWdodE1vZGVcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlID0gaGVpZ2h0TW9kZU5hbWUpXHJcbiAgfVxyXG5cclxuICBnZXQgY29vcmRpbmF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZVxyXG4gIH1cclxuICBzZXQgY29vcmRpbmF0ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZSA9IHZcclxuICAgIC8vIGxldCBwb3NpdGlvbiA9IHRoaXMuX3Byb2ouY29udmVydChcclxuICAgIC8vICAgW1xyXG4gICAgLy8gICAgIHtcclxuICAgIC8vICAgICAgIHg6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAvLyAgICAgICB5OiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgLy8gICAgICAgejogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgXSxcclxuICAgIC8vICAgJ0VQU0c6NDMyNicsXHJcbiAgICAvLyAgIHZcclxuICAgIC8vICkucG9pbnRzXHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdCAmJlxyXG4gICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgJiZcclxuICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgJiZcclxuICAgIC8vICAgcG9zaXRpb25bMF1cclxuICAgIC8vICkge1xyXG4gICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgLy8gICAgICdjb252ZXJ0LXgnXHJcbiAgICAvLyAgIClbMF0udmFsdWUgPSBwb3NpdGlvblswXS54XHJcbiAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAvLyAgICAgJ2NvbnZlcnQteSdcclxuICAgIC8vICAgKVswXS52YWx1ZSA9IHBvc2l0aW9uWzBdLnlcclxuICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgIC8vICAgICAnY29udmVydC16J1xyXG4gICAgLy8gICApWzBdLnZhbHVlID0gcG9zaXRpb25bMF0uelxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5fZWxtcy5jb29yZGluYXRlICYmXHJcbiAgICAvLyAgIHRoaXMuX2VsbXMuY29vcmRpbmF0ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgLy8gICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAvLyAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgfVxyXG5cclxuICBzZXQgcG9zaXRpb24odikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gdlxyXG5cclxuICAgIHRoaXMuY29vcmRpbmF0ZSA9IHRoaXMub3B0aW9ucy5jb29yZGluYXRlXHJcblxyXG4gICAgaWYgKHRoaXMuX3RleHRUb0NlbnRlcikge1xyXG4gICAgICBsZXQgcG9pbnQgPSB0dXJmLnBvaW50KFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XSlcclxuICAgICAgbGV0IHRhcmdldFBvaW50ID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgdGhpcy5fdGV4dFRvQ2VudGVyLmRpc3RhbmNlLCB0aGlzLl90ZXh0VG9DZW50ZXIuYW5nbGUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRhcmdldFBvaW50WzBdLCBsYXQ6IHRhcmdldFBvaW50WzFdIH0pLnRoZW4oKGhlaWdodCkgPT4ge1xyXG4gICAgICAgIGxldCB0ZXh0UG9zaXRpb24gPSBbdGFyZ2V0UG9pbnRbMF0sIHRhcmdldFBvaW50WzFdLCBoZWlnaHRdXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnRleHQucG9zaXRpb24gPSB7IGxuZzogdGFyZ2V0UG9pbnRbMF0sIGxhdDogdGFyZ2V0UG9pbnRbMV0sIGFsdDogaGVpZ2h0IH1cclxuICAgICAgICB0aGlzLnRleHQgJiYgKHRoaXMudGV4dC5wb3NpdGlvbiA9IHRleHRQb3NpdGlvbilcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XHJcbiAgICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuX2VsbXMuaGVpZ2h0KSB7XHJcbiAgICAgIGxldCBoZWlnaHRFbG0gPSB0aGlzLl9lbG1zLmhlaWdodC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICBpZiAoaGVpZ2h0RWxtKSB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLl9lbG1zLmhlaWdodE1vZGUudmFsdWUpIHtcclxuICAgICAgICAgIGNhc2UgJ+a1t+aLlOmrmOW6pic6XHJcbiAgICAgICAgICAgIGhlaWdodEVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJ+ebuOWvueWcsOihqCc6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgICAgICAgIENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICkudGhlbihwb3NpdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0IC0gcG9zaXRpb25bMF0uaGVpZ2h0KS50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICBOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCkudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJ+S+nemZhOWcsOihqCc6XHJcbiAgICAgICAgICBjYXNlICfkvp3pmYTlnLDooagnOlxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAn5L6d6ZmE5qih5Z6LJzpcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuICBzZXQgbGFiZWxTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT0gMSkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LmxhYmVsLnNob3cgPSB2XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250RmFtaWx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250RmFtaWx5KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID0gdiB8fCAwXHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250U2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICB9XHJcbiAgc2V0IGxhYmVsRm9udFNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5yZW5ld1BvaW50KClcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IHYgfHwgJyMwMGZmZmYnXHJcbiAgICB0aGlzLnJlbmV3UG9pbnQoKVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMCwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gY29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZSgpIHtcclxuICAgIC8vIGxldCBnYXAgPSBNYXRoLmFicyhNYXRoLmNvcyhNYXRoLlBJLzE4MCAqIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQpKSAqICgwLjAwMDEqdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgLy8gbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgLSAwLjA1LCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gMC4wNSxcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyArIDAuMDUsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSAwLjA1LFxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgMC4wNSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIDAuMDUsXHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgLSAwLjA1LCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ICsgMC4wNSxcclxuICAgIC8vIF1cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGxldCBoZWlnaHRNb2RlXHJcbiAgICBsZXQgZm9udCA9IGdldEZvbnRGYW1pbHkodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICdIZWx2ZXRpY2EnXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgaGVpZ2h0TW9kZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5EXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMucmVwbGFjZUhvc3QodGhpcy5vcHRpb25zLnVybCwgdGhpcy5vcHRpb25zLmhvc3QpLCB7XHJcbiAgICAgIG1ldGhvZDogJ2dldCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XHJcbiAgICAgIC8vIGxldCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuYmxvYigpXHJcbiAgICAgIC8vIGxldCBhcnJheUJ1ZmZlciA9IGF3YWl0IGRhdGEuYXJyYXlCdWZmZXIoKVxyXG4gICAgICAvLyBjb25zdCBzdHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLm5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XHJcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcclxuICAgICAgaW1nLnNyYyA9IHRoaXMucmVwbGFjZUhvc3QodGhpcy5vcHRpb25zLnVybCwgdGhpcy5vcHRpb25zLmhvc3QpO1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGNvbnN0IGNhbnZhczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICBjb25zdCBjdHgyID0gY2FudmFzMi5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aFxyXG4gICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0XHJcbiAgICAgICAgY2FudmFzMi53aWR0aCA9IHdpZHRoXHJcbiAgICAgICAgY2FudmFzMi5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG5cclxuICAgICAgICAvLyDorr7nva7nlLvluIPlpKflsI9cclxuICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGggKiAyO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0ICogMjtcclxuICAgICAgICAvLyDnu5jliLblm77lg49cclxuICAgICAgICBpZiAodGhpcy5mbGlwZVgpIHtcclxuICAgICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7XHJcbiAgICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1jYW52YXMuaGVpZ2h0KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mbGlwZVkpIHtcclxuICAgICAgICAgIGN0eC5zY2FsZSgtMSwgMSk7XHJcbiAgICAgICAgICBjdHgudHJhbnNsYXRlKC1jYW52YXMud2lkdGgsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgaW1nLndpZHRoIC0gKGltZy53aWR0aCAqIHRoaXMub3B0aW9ucy5vZmZzZXQueCksIGltZy5oZWlnaHQgLSAoaW1nLmhlaWdodCAqIHRoaXMub3B0aW9ucy5vZmZzZXQueSkpO1xyXG5cclxuXHJcbiAgICAgICAgbGV0IGJpbGxib2FyZEggPSBoZWlnaHQgKiAoMTI4IC8gd2lkdGgpXHJcblxyXG4gICAgICAgIHRoaXMuZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgc2hvdzogdGhpcy5vcHRpb25zLnNob3csXHJcbiAgICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0IHx8IDBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgc2hvdzogdGhpcy5tb2RlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZTogY2FudmFzMixcclxuICAgICAgICAgICAgc2NhbGU6IHRoaXMuYmlsbGJvYXJkU2NhbGUsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZ2V0R3JvdW5kQ292ZXIoKSA/IHVuZGVmaW5lZCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgIGhlaWdodFJlZmVyZW5jZTogaGVpZ2h0TW9kZSxcclxuICAgICAgICAgICAgd2lkdGg6IDEyOCxcclxuICAgICAgICAgICAgaGVpZ2h0OiBiaWxsYm9hcmRILFxyXG4gICAgICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5MRUZULFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLlRPUCxcclxuICAgICAgICAgICAgLy8gcGl4ZWxPZmZzZXQ6IHsgeDogLTEyOCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiAodGhpcy5mbGlwZVkgPyAoMS10aGlzLm9wdGlvbnMub2Zmc2V0LngpIDogdGhpcy5vcHRpb25zLm9mZnNldC54KSwgeTogLWJpbGxib2FyZEggKiB0aGlzLmJpbGxib2FyZFNjYWxlICogKHRoaXMuZmxpcGVYID8gKDEtdGhpcy5vcHRpb25zLm9mZnNldC55KSA6IHRoaXMub3B0aW9ucy5vZmZzZXQueSkgfVxyXG4gICAgICAgICAgICBwaXhlbE9mZnNldDogeyB4OiAtMTI4ICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqIHRoaXMub3B0aW9ucy5vZmZzZXQueCwgeTogLWJpbGxib2FyZEggKiB0aGlzLmJpbGxib2FyZFNjYWxlICogdGhpcy5vcHRpb25zLm9mZnNldC55IH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICBzaG93OiB0aGlzLm1vZGUgPyBfdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgICAgICAgdGV4dDogX3RoaXMub3B0aW9ucy5sYWJlbC50ZXh0LFxyXG4gICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICBoZWlnaHRSZWZlcmVuY2U6IGhlaWdodE1vZGUsXHJcbiAgICAgICAgICAgIGZvbnQ6IF90aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgKyAncHggJyArIGZvbnQsXHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhfdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yKSxcclxuICAgICAgICAgICAgLy8gdmVydGljYWxPcmlnaW4gOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAtYmlsbGJvYXJkSCAqIF90aGlzLmJpbGxib2FyZFNjYWxlIC1cclxuICAgICAgICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSAvIDIgLVxyXG4gICAgICAgICAgICAgICAgICA1XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIC1fdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplIC8gMiAtIDVcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMSxcclxuICAgICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZWN0YW5nbGU6IHtcclxuICAgICAgICAgICAgc2hvdzogdGhpcy5tb2RlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgICAgICBjb29yZGluYXRlczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZ2FwID0gTWF0aC5hYnMoTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQpKSAqICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHtcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuZmxpcGVZID8gTWF0aC5hYnModGhpcy5vcHRpb25zLm9mZnNldC54IC0gMSkgOiB0aGlzLm9wdGlvbnMub2Zmc2V0LngsXHJcbiAgICAgICAgICAgICAgICB5OiB0aGlzLmZsaXBlWCA/IE1hdGguYWJzKHRoaXMub3B0aW9ucy5vZmZzZXQueSAtIDEpIDogdGhpcy5vcHRpb25zLm9mZnNldC55LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvZmZzZXQgPSB7XHJcbiAgICAgICAgICAgICAgICBsbmc6IG9mZnNldC54ICogKCgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpICogMiksXHJcbiAgICAgICAgICAgICAgICBsYXQ6IE1hdGguYWJzKG9mZnNldC55IC0gMSkgKiAoZ2FwICogMilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gbGV0IHBvaW50MSA9IFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gb2Zmc2V0LmxuZyArIDM2MCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIG9mZnNldC5sYXRdO1xyXG4gICAgICAgICAgICAgIC8vIGxldCBwb2ludDIgPSBbKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgLSBvZmZzZXQubG5nKSArICgoMC4wMDAxICogdGhpcy5vcHRpb25zLnNjYWxlKSAqIDIpICsgMzYwLCAodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIG9mZnNldC5sYXQpICsgKGdhcCAqIDIpXTtcclxuICAgICAgICAgICAgICAvLyBsZXQgbWlkcG9pbnQgPSAgdHVyZi5wb2ludChbcG9pbnQxWzBdK3BvaW50MlswXS8yLCBwb2ludDFbMV0rcG9pbnQyWzFdLzJdKTtcclxuICAgICAgICAgICAgICAvLyBsZXQgcm90YXRlZFBvdCA9IHR1cmYudHJhbnNmb3JtUm90YXRlKG1pZHBvaW50LCAtTnVtYmVyKHRoaXMub3B0aW9ucy5hbmdsZSksIHtwaXZvdDogW3RoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRdfSk7XHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobWlkcG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHJvdGF0ZWRQb3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHRoaXMub3B0aW9ucy5wb3NpdGlvbilcclxuICAgICAgICAgICAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtcclxuICAgICAgICAgICAgICAvLyAgIHJvdGF0ZWRQb3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0tKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHJvdGF0ZWRQb3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0tKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksXHJcbiAgICAgICAgICAgICAgLy8gICByb3RhdGVkUG90Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKygwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpLCByb3RhdGVkUG90Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKygwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpLFxyXG5cclxuICAgICAgICAgICAgICAvLyBdXHJcbiAgICAgICAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gb2Zmc2V0LmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIG9mZnNldC5sYXQsXHJcbiAgICAgICAgICAgICAgICAvLyAodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyAtIG9mZnNldC5sbmcpICsgKCgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpICogMiksICh0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gb2Zmc2V0LmxhdCkgKyAoZ2FwICogMiksXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSBnYXAsXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgMC4wNSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIDAuMDUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgKyBnYXAsXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gMC4wNSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIDAuMDUsXHJcbiAgICAgICAgICAgICAgXVxyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyguLi5mcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkltYWdlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IGNhbnZhcyxcclxuICAgICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgcm90YXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuYW5nbGUpXHJcbiAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgc3RSb3RhdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5hbmdsZSlcclxuICAgICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMucmVuZXdQb2ludCgpXHJcbiAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPT09ICdjZXNpdW0tdmlld2VyIDJkJykge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLmhlaWdodCA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3cpIHtcclxuXHJcbiAgICAgICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBpZiAoZGF0YS5jb2RlID09PSAyMDAgfHwgZGF0YS5jb2RlID09PSAwKSB7XHJcbiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZSh7XHJcbiAgICAgIC8vICAgICBtZXNzYWdlOiAn5re75Yqg5oiQ5Yqf77yBJyxcclxuICAgICAgLy8gICAgIHR5cGU6ICdzdWNjZXNzJyxcclxuICAgICAgLy8gICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vICAgdGhpcy5jbG9zZSgpXHJcbiAgICAgIC8vICAgLy8gdGhpcy4kZW1pdCgnZ2V0QnVpbGRpbmdMaXN0JylcclxuICAgICAgLy8gICAvLyB0aGlzLiRlbWl0KCdvblN1Ym1pdENhbGxCYWNrJylcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgbGV0IGFuY2hvclNldERpYWxvZ09iamVjdFxyXG4gICAgICBsZXQgY2FudmFzXHJcbiAgICAgIGxldCBwb2ludFxyXG4gICAgICBsZXQgYmlsbGJvYXJkQW5jaG9yUG9zaXRpb25cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+WGm+agh+WxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgLy8gc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIC8vIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICAgICAgLy8gICBjb2xvcjogXCJjb2xvcigncmdiYSgyNTUsMjU1LDI1NSxcIiArIHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kgKyBcIiknKVwiLFxyXG4gICAgICAgICAgLy8gICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGFuY2hvclNldERpYWxvZ09iamVjdCAmJiBhbmNob3JTZXREaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICAgICAgYW5jaG9yU2V0RGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZEZvb3RFbG06IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGFnTmFtZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2ZsaXBlLW92ZXIteScsXHJcbiAgICAgICAgICAgIGlubmVySFRNTDogJ1novbTnv7vovawnLFxyXG4gICAgICAgICAgICBldmVudDogW1xyXG4gICAgICAgICAgICAgICdjbGljaycsXHJcbiAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mbGlwZVkgPSAhdGhpcy5mbGlwZVlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhZ05hbWU6ICdidXR0b24nLFxyXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmbGlwZS1vdmVyLXgnLFxyXG4gICAgICAgICAgICBpbm5lckhUTUw6ICdY6L2057+76L2sJyxcclxuICAgICAgICAgICAgZXZlbnQ6IFtcclxuICAgICAgICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmxpcGVYID0gIXRoaXMuZmxpcGVYXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGdyb3VuZC1pbWFnZSdcclxuXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcblxyXG4gICAgICBsZXQgYW5jaG9yQnRuID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbmNob3InKVswXVxyXG4gICAgICBhbmNob3JCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGFuY2hvclNldERpYWxvZ09iamVjdCAmJiBhbmNob3JTZXREaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICAgIGFuY2hvclNldERpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNldXBFdmVudClcclxuICAgICAgICBsZXQgRGlhbG9nQ2xpZW50UmVjdCA9IF90aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICAgIGxldCBfRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICAgIHRpdGxlOiAn6ZSa54K56K6+572uJywgbGVmdDogKERpYWxvZ0NsaWVudFJlY3QubGVmdCArIDgwKSArICdweCcsIHRvcDogKERpYWxvZ0NsaWVudFJlY3QudG9wICsgMjAwKSArICdweCcsXHJcbiAgICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLm9mZnNldCA9IHsgeDogYmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueCwgeTogYmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueSB9XHJcbiAgICAgICAgICAgIF9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2V1cEV2ZW50KVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICBhbmNob3JTZXREaWFsb2dPYmplY3QgPSBfRGlhbG9nT2JqZWN0XHJcbiAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGFuY2hvci1wb2ludCdcclxuICAgICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZSgpXHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gdGhpcy5yZXBsYWNlSG9zdCh0aGlzLm9wdGlvbnMudXJsLCB0aGlzLm9wdGlvbnMuaG9zdClcclxuICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBsZXQgcmF0aW8gPSBpbWFnZS53aWR0aCAvIGltYWdlLmhlaWdodFxyXG4gICAgICAgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJylcclxuICAgICAgICAgIGxldCB3aWR0aCA9IDE1MFxyXG4gICAgICAgICAgbGV0IGhlaWdodCA9IDE1MCAvIHJhdGlvXHJcbiAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KVxyXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGhcclxuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgICBjYW52YXMuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KVxyXG4gICAgICAgICAgY29udGVudEVsbS5hcHBlbmRDaGlsZChjYW52YXMpXHJcbiAgICAgICAgICBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgICAgICAgIHBvaW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBwb2ludC5jbGFzc05hbWUgPSAncG9pbnQnXHJcbiAgICAgICAgICBjb250ZW50RWxtLmFwcGVuZENoaWxkKHBvaW50KVxyXG4gICAgICAgICAgYmlsbGJvYXJkQW5jaG9yUG9zaXRpb24gPSB7IHg6IF90aGlzLm9mZnNldC54LCB5OiBfdGhpcy5vZmZzZXQueSB9XHJcbiAgICAgICAgICBwb2ludC5zdHlsZS50b3AgPSBgY2FsYygke051bWJlcihiaWxsYm9hcmRBbmNob3JQb3NpdGlvbi55KSAqIDEwMH0lIC0gNnB4KWBcclxuICAgICAgICAgIHBvaW50LnN0eWxlLmxlZnQgPSBgY2FsYygke051bWJlcihiaWxsYm9hcmRBbmNob3JQb3NpdGlvbi54KSAqIDEwMH0lIC0gNnB4KWBcclxuXHJcbiAgICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgeCA9IGUub2Zmc2V0WFxyXG4gICAgICAgICAgICBsZXQgeSA9IGUub2Zmc2V0WVxyXG4gICAgICAgICAgICBsZXQgYW5jaG9yID0geyB4OiBOdW1iZXIoKHggLyBjYW52YXMud2lkdGgpLnRvRml4ZWQoMikpLCB5OiBOdW1iZXIoKHkgLyBjYW52YXMuaGVpZ2h0KS50b0ZpeGVkKDIpKSB9XHJcbiAgICAgICAgICAgIGlmIChhbmNob3IueCA8IDApIHtcclxuICAgICAgICAgICAgICBhbmNob3IueCA9IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5jaG9yLnggPiAxKSB7XHJcbiAgICAgICAgICAgICAgYW5jaG9yLnggPSAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFuY2hvci55IDwgMCkge1xyXG4gICAgICAgICAgICAgIGFuY2hvci55ID0gMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhbmNob3IueSA+IDEpIHtcclxuICAgICAgICAgICAgICBhbmNob3IueSA9IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiaWxsYm9hcmRBbmNob3JQb3NpdGlvbiA9IHsgeDogYW5jaG9yLngsIHk6IGFuY2hvci55IH1cclxuXHJcbiAgICAgICAgICAgIHBvaW50LnN0eWxlLnRvcCA9IGBjYWxjKCR7YmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueSAqIDEwMH0lIC0gNXB4KWBcclxuICAgICAgICAgICAgcG9pbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7YmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueCAqIDEwMH0lIC0gNXB4KWBcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcclxuICAgICAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZUV2ZW50KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGZ1bmN0aW9uIG1vdXNlbW92ZUV2ZW50KGUpIHtcclxuICAgICAgICBnZXREaWFsb2dCb2R5RWxtKGUudGFyZ2V0KVxyXG4gICAgICAgIGZ1bmN0aW9uIGdldERpYWxvZ0JvZHlFbG0oZWxtKSB7XHJcbiAgICAgICAgICBpZiAoIWVsbSkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGVsbSA9PT0gYW5jaG9yU2V0RGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgbGV0IHggPSBlLnggLSBlbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdFxyXG4gICAgICAgICAgICBsZXQgeSA9IGUueSAtIGVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3BcclxuICAgICAgICAgICAgbGV0IGFuY2hvciA9IHsgeDogTnVtYmVyKCgoeCAtIDQyKSAvIGNhbnZhcy53aWR0aCkudG9GaXhlZCgyKSksIHk6IE51bWJlcigoKHkgLSA3MSkgLyBjYW52YXMuaGVpZ2h0KS50b0ZpeGVkKDIpKSB9XHJcbiAgICAgICAgICAgIGlmIChhbmNob3IueCA8IDApIHtcclxuICAgICAgICAgICAgICBhbmNob3IueCA9IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5jaG9yLnggPiAxKSB7XHJcbiAgICAgICAgICAgICAgYW5jaG9yLnggPSAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFuY2hvci55IDwgMCkge1xyXG4gICAgICAgICAgICAgIGFuY2hvci55ID0gMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhbmNob3IueSA+IDEpIHtcclxuICAgICAgICAgICAgICBhbmNob3IueSA9IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiaWxsYm9hcmRBbmNob3JQb3NpdGlvbiA9IHsgeDogYW5jaG9yLngsIHk6IGFuY2hvci55IH1cclxuXHJcbiAgICAgICAgICAgIHBvaW50LnN0eWxlLnRvcCA9IGBjYWxjKCR7YmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueSAqIDEwMH0lIC0gNXB4KWBcclxuICAgICAgICAgICAgcG9pbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7YmlsbGJvYXJkQW5jaG9yUG9zaXRpb24ueCAqIDEwMH0lIC0gNXB4KWBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZXREaWFsb2dCb2R5RWxtKGVsbS5vZmZzZXRQYXJlbnQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZ1bmN0aW9uIG1vdXNldXBFdmVudCgpIHtcclxuICAgICAgICBpZiAoYW5jaG9yU2V0RGlhbG9nT2JqZWN0KSB7XHJcbiAgICAgICAgICBhbmNob3JTZXREaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZW1vdmVFdmVudClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGxldCBjb29yZGluYXRlRGF0YSA9IFtdXHJcbiAgICAgIC8vIHRoaXMuZXBzZ19tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAvLyAgIGNvb3JkaW5hdGVEYXRhLnB1c2goe1xyXG4gICAgICAvLyAgICAgbmFtZTogYCR7dmFsdWUubmFtZX0oJHt2YWx1ZS5lcHNnfSlgLFxyXG4gICAgICAvLyAgICAgdmFsdWU6IGtleVxyXG4gICAgICAvLyAgIH0pXHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIC8vIGxldCBjb29yZGluYXRlRGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgIC8vICAgICAnY29vcmRpbmF0ZS1zZWxlY3QtYm94J1xyXG4gICAgICAvLyAgIClbMF0sXHJcbiAgICAgIC8vICAgJy5jb29yZGluYXRlLXNlbGVjdCdcclxuICAgICAgLy8gKVxyXG4gICAgICAvLyBpZiAoY29vcmRpbmF0ZURhdGFMZWdwT2JqZWN0KSB7XHJcbiAgICAgIC8vICAgY29vcmRpbmF0ZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKGNvb3JkaW5hdGVEYXRhKVxyXG4gICAgICAvLyAgIGxldCBjb29yZGluYXRlRGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAvLyAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nvb3JkaW5hdGUtc2VsZWN0JylbMF1cclxuICAgICAgLy8gICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAvLyAgIGlmICghdGhpcy5jb29yZGluYXRlKSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb3JkaW5hdGUgPSBjb29yZGluYXRlRGF0YVswXS52YWx1ZVxyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb3JkaW5hdGUgPSB0aGlzLmNvb3JkaW5hdGVcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgY29vcmRpbmF0ZURhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5jb29yZGluYXRlXHJcbiAgICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyAgICAgaWYgKGNvb3JkaW5hdGVEYXRhW2ldLnZhbHVlID09PSBjb29yZGluYXRlRGF0YS52YWx1ZSkge1xyXG4gICAgICAvLyAgICAgICBjb29yZGluYXRlRGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgIC8vICAgICAgICAgY29vcmRpbmF0ZURhdGFbaV0udmFsdWVcclxuICAgICAgLy8gICAgICAgKVxyXG4gICAgICAvLyAgICAgICBicmVha1xyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICBjb29yZGluYXRlRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb3JkaW5hdGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vICAgICAgIGlmIChjb29yZGluYXRlRGF0YVtpXS52YWx1ZSA9PT0gY29vcmRpbmF0ZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb29yZGluYXRlID0gY29vcmRpbmF0ZURhdGFbaV0udmFsdWVcclxuICAgICAgLy8gICAgICAgICBicmVha1xyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgbGV0IGVsbXMgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JvdycpXHJcbiAgICAgIGxldCBlbG1zMiA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0JylcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IG1vZGUgPSBlbG1zW2ldLmdldEF0dHJpYnV0ZSgnbW9kZScpXHJcbiAgICAgICAgaWYgKG1vZGUgIT09IG51bGwpIHtcclxuICAgICAgICAgIGlmIChtb2RlID09IHRoaXMub3B0aW9ucy5tb2RlKSB7XHJcbiAgICAgICAgICAgIGVsbXNbaV0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsbXNbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsbXMyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IG1vZGUgPSBlbG1zMltpXS5nZXRBdHRyaWJ1dGUoJ21vZGUnKVxyXG4gICAgICAgIGlmIChtb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAobW9kZSA9PSB0aGlzLm9wdGlvbnMubW9kZSkge1xyXG4gICAgICAgICAgICBlbG1zMltpXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsbXMyW2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGxldCBsbmcgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsbmdcIilbMF1cclxuICAgICAgLy8gbGV0IGxhdCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhdFwiKVswXVxyXG4gICAgICAvLyBsZXQgYWx0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYWx0XCIpWzBdXHJcbiAgICAgIC8vIGxuZy52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmdcclxuICAgICAgLy8gbGF0LnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAvLyBhbHQudmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICAgIC8vIHRoaXMuX2VsbXMubG5nID0gW2xuZ11cclxuICAgICAgLy8gdGhpcy5fZWxtcy5sYXQgPSBbbGF0XVxyXG4gICAgICAvLyB0aGlzLl9lbG1zLmFsdCA9IFthbHRdXHJcbiAgICAgIC8vIGxuZy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgLy8gICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAvLyAgIGlmIChlLnRhcmdldC52YWx1ZSB8fCAoZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAndW5kZWZpbmVkJyAmJiBlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICcnICYmICFCb29sZWFuKGUudGFyZ2V0LmRhdGFzZXQubnVsbCkpKSB7XHJcbiAgICAgIC8vICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgLy8gICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgIC8vICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgIC8vICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgLy8gdGhpcy5wb3NpdGlvbiA9IHtcclxuICAgICAgLy8gICAvLyAgIGxuZzogdmFsdWUsXHJcbiAgICAgIC8vICAgLy8gICBsYXQ6IHRoaXMucG9zaXRpb24ubGF0LFxyXG4gICAgICAvLyAgIC8vICAgYWx0OiB0aGlzLnBvc2l0aW9uLmFsdFxyXG4gICAgICAvLyAgIC8vIH1cclxuICAgICAgLy8gICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nID0gdmFsdWVcclxuICAgICAgLy8gICB0aGlzLmNvb3JkaW5hdGUgPSB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZVxyXG4gICAgICAvLyB9KVxyXG4gICAgICAvLyBsYXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChlKSA9PiB7XHJcbiAgICAgIC8vICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgLy8gICBpZiAoZS50YXJnZXQudmFsdWUgfHwgKGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAnJyAmJiAhQm9vbGVhbihlLnRhcmdldC5kYXRhc2V0Lm51bGwpKSkge1xyXG4gICAgICAvLyAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgIC8vICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICBpZiAoKGUudGFyZ2V0LmRhdGFzZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbikpIHtcclxuICAgICAgLy8gICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIC8vIHRoaXMucG9zaXRpb24gPSB7XHJcbiAgICAgIC8vICAgLy8gICBsbmc6IHRoaXMucG9zaXRpb24ubG5nLFxyXG4gICAgICAvLyAgIC8vICAgbGF0OiB2YWx1ZSxcclxuICAgICAgLy8gICAvLyAgIGFsdDogdGhpcy5wb3NpdGlvbi5hbHRcclxuICAgICAgLy8gICAvLyB9XHJcbiAgICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHZhbHVlXHJcbiAgICAgIC8vICAgdGhpcy5jb29yZGluYXRlID0gdGhpcy5vcHRpb25zLmNvb3JkaW5hdGVcclxuICAgICAgLy8gfSlcclxuICAgICAgLy8gYWx0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICAvLyAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgIC8vICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IChlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICd1bmRlZmluZWQnICYmIGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJycgJiYgIUJvb2xlYW4oZS50YXJnZXQuZGF0YXNldC5udWxsKSkpIHtcclxuICAgICAgLy8gICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAvLyAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgLy8gICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgLy8gICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgICAgaWYgKChlLnRhcmdldC5kYXRhc2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pKSB7XHJcbiAgICAgIC8vICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICAvLyB0aGlzLnBvc2l0aW9uID0ge1xyXG4gICAgICAvLyAgIC8vICAgbG5nOiB0aGlzLnBvc2l0aW9uLmxuZyxcclxuICAgICAgLy8gICAvLyAgIGxhdDogdGhpcy5wb3NpdGlvbi5sYXQsXHJcbiAgICAgIC8vICAgLy8gICBhbHQ6IHZhbHVlXHJcbiAgICAgIC8vICAgLy8gfVxyXG4gICAgICAvLyAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSB2YWx1ZVxyXG4gICAgICAvLyAgIHRoaXMuY29vcmRpbmF0ZSA9IHRoaXMub3B0aW9ucy5jb29yZGluYXRlXHJcbiAgICAgIC8vIH0pXHJcblxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGFiZWxDb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbY29sb3JQaWNrZXJdXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcclxuICAgICAgICBsZXQgZmxpcGVPdmVyWEJ0biA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZsaXBlLW92ZXIteCcpWzBdXHJcbiAgICAgICAgbGV0IGZsaXBlT3ZlcllCdG4gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuZm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbGlwZS1vdmVyLXknKVswXVxyXG4gICAgICAgIGZsaXBlT3ZlclhCdG4uc2V0QXR0cmlidXRlKCdtb2RlJywgMClcclxuICAgICAgICBmbGlwZU92ZXJZQnRuLnNldEF0dHJpYnV0ZSgnbW9kZScsIDApXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlKSB7XHJcbiAgICAgICAgICBmbGlwZU92ZXJYQnRuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgIGZsaXBlT3ZlcllCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZsaXBlT3ZlclhCdG4uc3R5bGUuZGlzcGxheSA9ICdibG9jaydcclxuICAgICAgICAgIGZsaXBlT3ZlcllCdG4uc3R5bGUuZGlzcGxheSA9ICdibG9jaydcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1vZGVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn6LS05ZywJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfotLTlnLAnLFxyXG4gICAgICAgICAgICBrZXk6IDBcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnq4vkvZMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+eri+S9kycsXHJcbiAgICAgICAgICAgIGtleTogMVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgbW9kZURhdGFMZWdwT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdtb2RlLWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLm1vZGUnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChtb2RlRGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAgIG1vZGVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaChtb2RlRGF0YSlcclxuICAgICAgICAgIGxldCBtb2RlRGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZScpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgbW9kZURhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5tb2RlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChtb2RlRGF0YVtpXS5rZXkgPT09IHRoaXMubW9kZSkge1xyXG4gICAgICAgICAgICAgIG1vZGVEYXRhTGVncEVsbS52YWx1ZSA9IG1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbW9kZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKG1vZGVEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChtb2RlRGF0YVtpXS52YWx1ZSA9PT0gbW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGUgPSBtb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5tb2RlID0gW21vZGVEYXRhTGVncEVsbV1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgICAgbGV0IGhlaWdodEVsbSA9IGhlaWdodEJveEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAga2V5OiAnMCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICAgIGtleTogJzEnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5L6d6ZmE5Zyw6KGoJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfkvp3pmYTlnLDooagnLFxyXG4gICAgICAgICAgICBrZXk6ICcyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgICAga2V5OiAnMydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuXHJcbiAgICAgICAgc3dpdGNoIChoZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgICAgICAgIENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICkudGhlbihwb3NpdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0IC0gTnVtYmVyKHBvc2l0aW9uWzBdLmhlaWdodC50b0ZpeGVkKDIpKSkudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICBjYXNlICczJzpcclxuICAgICAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5zZGsuZW50aXR5TWFwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdSYWRhclNjYW5TdGVyZW9zY29waWMnICYmIHZhbHVlLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0c1RvRXhjbHVkZS5wdXNoKHZhbHVlLmVudGl0eSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbiwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKGgudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICB0aGlzLmNvb3JkaW5hdGUgPSB0aGlzLm9wdGlvbnMuY29vcmRpbmF0ZVxyXG4gICAgICAgICAgICAgIHRoaXMuX2VsbXMuYWx0ICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdoZWlnaHQtbW9kZS1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGhlaWdodE1vZGVPYmplY3QpIHtcclxuICAgICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1tb2RlJylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUgPSBoZWlnaHRNb2RlRGF0YVt0aGlzLmhlaWdodE1vZGVdLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgKS50aGVuKHBvc2l0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihwb3NpdGlvblswXS5oZWlnaHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnBvc2l0aW9uID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IDFcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IDJcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5zZGsuZW50aXR5TWFwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1JhZGFyU2NhblN0ZXJlb3Njb3BpYycgJiYgdmFsdWUuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHNUb0V4Y2x1ZGUucHVzaCh2YWx1ZS5lbnRpdHkpXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh0aGlzLm9wdGlvbnMucG9zaXRpb24sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKGgudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMucG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IDNcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgIE51bWJlcihoZWlnaHRFbG0udmFsdWUpLnRvRml4ZWQoMilcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IGF3YWl0IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID1cclxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBvc2l0aW9uWzBdLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEJveEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcblxyXG4gICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nID0gcG9zaXRpb24ubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHBvc2l0aW9uLmxhdFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBwb3NpdGlvbi5hbHRcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSBwb3NpdGlvbi5sbmdcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gcG9zaXRpb24ubGF0XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IHBvc2l0aW9uLmFsdFxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBudWxsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IHRoaXMucHJldmlvdXMucG9zaXRpb24ubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHRoaXMucHJldmlvdXMucG9zaXRpb24ubGF0XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IHRoaXMucHJldmlvdXMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nID0gdGhpcy5wcmV2aW91cy5wb3NpdGlvbi5sbmdcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHRoaXMucHJldmlvdXMucG9zaXRpb24ubGF0XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSB0aGlzLnByZXZpb3VzLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IHBvc2l0aW9uLmxuZ1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gcG9zaXRpb24ubGF0XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBwb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5ldmVudCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICBpZiAoIXRoaXMucHJldmlvdXMpIHtcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgLi4udGhpcy5wcmV2aW91cy5wb3NpdGlvbiB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZ2FwID0gTWF0aC5hYnMoTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQpKSAqICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW1xyXG4gICAgICAgIFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSBnYXBdLFxyXG4gICAgICAgIFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSksIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgKyBnYXBdLFxyXG4gICAgICBdXHJcbiAgICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgICAgbGV0IGhlaWdodCA9IDBcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdCwgMCk7XHJcbiAgICAgIGxldCBwb2ludDIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdCwgMTAwMDAwMDApO1xyXG4gICAgICBsZXQgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QocG9pbnQyLCBwb2ludDEsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBkaXJlY3Rpb24pO1xyXG4gICAgICBsZXQgcmF5ID0gbmV3IENlc2l1bS5SYXkocG9pbnQxLCBjKTtcclxuICAgICAgbGV0IHIgPSB7fVxyXG4gICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICByID0gcGlja2VkT2JqZWN0c1tpXVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHIgJiYgci5wb3NpdGlvbikge1xyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoci5wb3NpdGlvbiwgdGhpcy5zZGsudmlld2VyKS5hbHRcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdmFyIHByb21pc2UgPSBhd2FpdCBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZCh0aGlzLnNkay52aWV3ZXIudGVycmFpblByb3ZpZGVyLCBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdCldKTtcclxuICAgICAgICAgIGhlaWdodCA9IHByb21pc2VbMF0uaGVpZ2h0XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5mcm9tRGVncmVlc0FycmF5W2ldLCBoZWlnaHQpXHJcbiAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSGVpZ2h0KCkge1xyXG4gICAgbGV0IGhlaWdodFxyXG4gICAgbGV0IGhlaWdodDJcclxuICAgIGxldCBwb2ludDEgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsXHJcbiAgICAgIDBcclxuICAgIClcclxuICAgIGxldCBwb2ludDIgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsXHJcbiAgICAgIDEwMDAwMDAwMDAwMDAwXHJcbiAgICApXHJcblxyXG4gICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbXVxyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1JhZGFyU2NhblN0ZXJlb3Njb3BpYycgJiYgdmFsdWUuZW50aXR5KSB7XHJcbiAgICAgICAgb2JqZWN0c1RvRXhjbHVkZS5wdXNoKHZhbHVlLmVudGl0eSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHVwZGF0ZWRDYXJ0ZXNpYW5zID0gYXdhaXQgdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHRNb3N0RGV0YWlsZWQoW3BvaW50MV0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICBpZiAodXBkYXRlZENhcnRlc2lhbnMgJiYgdXBkYXRlZENhcnRlc2lhbnNbMF0pIHtcclxuICAgICAgaGVpZ2h0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh1cGRhdGVkQ2FydGVzaWFuc1swXSwgdGhpcy5zZGsudmlld2VyKS5hbHRcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgIHBvaW50MSxcclxuICAgICAgcG9pbnQyLFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgKVxyXG4gICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheShwb2ludDIsIGMpXHJcbiAgICBsZXQgciA9IHt9XHJcbiAgICBsZXQgcGlja2VkT2JqZWN0cyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSlcclxuICAgIGZvciAobGV0IGkgPSBwaWNrZWRPYmplY3RzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgciA9IHBpY2tlZE9iamVjdHNbaV1cclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAociAmJiByLnBvc2l0aW9uKSB7XHJcbiAgICAgIGhlaWdodDIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHIucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvbWlzZVxyXG4gICAgdHJ5IHtcclxuICAgICAgcHJvbWlzZSA9IGF3YWl0IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIF1cclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuICAgIGlmICgoaGVpZ2h0MiA9PT0gdm9pZCAwIHx8IGhlaWdodDIgPCBwcm9taXNlWzBdLmhlaWdodCkgJiYgcHJvbWlzZSkge1xyXG4gICAgICBoZWlnaHQyID0gcHJvbWlzZVswXS5oZWlnaHRcclxuICAgIH1cclxuICAgIGlmIChoZWlnaHQgPT09IHZvaWQgMCB8fCBoZWlnaHQgPCBoZWlnaHQyKSB7XHJcbiAgICAgIGhlaWdodCA9IGhlaWdodDJcclxuICAgIH1cclxuICAgIGlmIChoZWlnaHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gTnVtYmVyKE51bWJlcihoZWlnaHQpLnRvRml4ZWQoMikpXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0ICYmXHJcbiAgICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgfSlcclxuICAgICAgdGhpcy5jb29yZGluYXRlID0gdGhpcy5vcHRpb25zLmNvb3JkaW5hdGVcclxuXHJcbiAgICAgIGlmICh0aGlzLl9lbG1zLmhlaWdodCkge1xyXG4gICAgICAgIGxldCBoZWlnaHRFbG0gPSB0aGlzLl9lbG1zLmhlaWdodC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICAgIGlmIChoZWlnaHRFbG0pIHtcclxuICAgICAgICAgIHN3aXRjaCAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ+a1t+aLlOmrmOW6pic6XHJcbiAgICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ+ebuOWvueWcsOihqCc6XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgKS50aGVuKHBvc2l0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0RWxtLnZhbHVlID0gTnVtYmVyKFxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0IC0gcG9zaXRpb25bMF0uaGVpZ2h0KS50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodEVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAn5L6d6ZmE5Zyw6KGoJzpcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICfkvp3pmYTmqKHlnosnOlxyXG4gICAgICAgICAgICAgIGhlaWdodEVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhpcy5lbnRpdHkudmFsdWVzKSB7XHJcbiAgICAvLyAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAvLyAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyxcclxuICAgIC8vICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgLy8gICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgIC8vICAgKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVuZXdQb2ludCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkudmFsdWVzICYmIHRoaXMuZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICBsZXQgZm9udCA9IGdldEZvbnRGYW1pbHkodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICdIZWx2ZXRpY2EnXHJcbiAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZSA9IHRoaXMuYmlsbGJvYXJkU2NhbGVcclxuICAgICAgaWYgKHRoaXMuYmlsbGJvYXJkU2NhbGVCeURpc3RhbmNlKSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNjYWxlQnlEaXN0YW5jZSA9IG5ldyBDZXNpdW0uTmVhckZhclNjYWxhcihcclxuICAgICAgICAgIHRoaXMuYmlsbGJvYXJkTmVhcixcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICB0aGlzLmJpbGxib2FyZEZhcixcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgdGhpcy5iaWxsYm9hcmROZWFyLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIHRoaXMuYmlsbGJvYXJkRmFyLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmVudGl0eS5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICB0aGlzLmJpbGxib2FyZE5lYXIsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgdGhpcy5iaWxsYm9hcmRGYXIsXHJcbiAgICAgICAgICAwXHJcbiAgICAgICAgKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmxhYmVsLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgdGhpcy5iaWxsYm9hcmROZWFyLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIHRoaXMuYmlsbGJvYXJkRmFyLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgdGhpcy5lbnRpdHkubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgdGhpcy5lbnRpdHkubGFiZWwucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVudGl0eS5sYWJlbC5mb250ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplICsgJ3B4ICcgKyBmb250XHJcbiAgICAgIHRoaXMuZW50aXR5LmxhYmVsLmZpbGxDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICAgIClcclxuICAgICAgbGV0IGNhbnZhcyA9IHRoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZS5nZXRWYWx1ZSgpXHJcbiAgICAgIGxldCBiaWxsYm9hcmRIID0gY2FudmFzLmhlaWdodCAqICgxMjggLyBjYW52YXMud2lkdGgpXHJcbiAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IHsgeDogLTEyOCAqIHRoaXMuYmlsbGJvYXJkU2NhbGUgKiB0aGlzLm9wdGlvbnMub2Zmc2V0LngsIHk6IC1iaWxsYm9hcmRIICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqIHRoaXMub3B0aW9ucy5vZmZzZXQueSB9XHJcbiAgICAgIC8vIHRoaXMuZW50aXR5LmJpbGxib2FyZC5waXhlbE9mZnNldCA9IHsgeDogLXdpZHRoICogdGhpcy5iaWxsYm9hcmRTY2FsZSAqICh0aGlzLmZsaXBlWSA/ICgxIC0gdGhpcy5vcHRpb25zLm9mZnNldC54KSA6IHRoaXMub3B0aW9ucy5vZmZzZXQueCksIHk6IC1oZWlnaHQgKiB0aGlzLmJpbGxib2FyZFNjYWxlICogKHRoaXMuZmxpcGVYID8gKDEgLSB0aGlzLm9wdGlvbnMub2Zmc2V0LnkpIDogdGhpcy5vcHRpb25zLm9mZnNldC55KSB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIHRoaXMuYW5nbGUgPSB0aGlzLm9wdGlvbnMuYW5nbGVcclxuICAgIHRoaXMuc2NhbGUgPSB0aGlzLm9wdGlvbnMuc2NhbGVcclxuICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5vcHRpb25zLm9mZnNldFxyXG4gICAgdGhpcy5mbGlwZVggPSB0aGlzLm9wdGlvbnMuZmxpcGUueFxyXG4gICAgdGhpcy5mbGlwZVkgPSB0aGlzLm9wdGlvbnMuZmxpcGUueVxyXG4gICAgdGhpcy5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgIHRoaXMubW9kZSA9IHRoaXMub3B0aW9ucy5tb2RlXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZVxyXG4gICAgdGhpcy5iaWxsYm9hcmRTY2FsZSA9IHRoaXMub3B0aW9ucy5iaWxsYm9hcmQuc2NhbGVcclxuICAgIHRoaXMubGFiZWxTaG93ID0gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSB2LnBvc2l0aW9uLmxuZ1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHYucG9zaXRpb24ubGF0XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gdi5wb3NpdGlvbi5hbHRcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEdyb3VuZEltYWdlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFQQTtBQUFBO0FBS0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTEE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQTNMQTtBQUFBO0FBQUE7QUFBQTtBQTZMQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQXNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQTlOQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFsRUE7QUFtRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQVRBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBNEJBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQVNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0QkE7QUFBQTtBQXpCQTtBQUVBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQVJBO0FBU0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUE1bkJBO0FBQUE7QUFBQTtBQUFBO0FBOG5CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUE2RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUExRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBbkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBS0E7QUFNQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBeUJBO0FBQUE7QUF2QkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQVNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQWpIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFNQTtBQU1BO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/GroundImage/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/GroundSvg/_element.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/GroundSvg/_element.js ***! - \********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u65CB\\u8F6C\\u89D2\\u5EA6\\n \\n
\\n \\n \\xB0\\n \\n
\\n
\\n
\\n
\\n
\\n X \\u8F74\\u5927\\u5C0F\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n Y \\u8F74\\u5927\\u5C0F\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u6587\\u5B57\\u5185\\u5BB9\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6587\\u5B57\\u5F00\\u5173\\n \\n
\\n
\\n \\u5B57\\u4F53\\u989C\\u8272\\n
\\n
\\n
\\n \\u5B57\\u4F53\\u5927\\u5C0F\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
\\n
\\n \\u6700\\u8FD1\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u6700\\u8FDC\\u8DDD\\u79BB\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n
\\n
\\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JvdW5kU3ZnL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0dyb3VuZFN2Zy9fZWxlbWVudC5qcz81NzlkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaXi+i9rOinkuW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzNjBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cImFuZ2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0XCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7ZmxleDogMCAwIDEwMHB4O21hcmdpbi1sZWZ0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjM2MFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJhbmdsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPsKwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHgtc2NhbGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5YIOi9tOWkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIyMDBcIiBtaW49XCIwLjAwMVwiIHN0ZXA9XCIwLjAwMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlclwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O2ZsZXg6IDAgMCAxMDBweDttYXJnaW4tbGVmdDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjAuMDAxXCIgbWF4PVwiMjAwXCIgc3RlcD1cIjAuMDAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgeS1zY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlkg6L205aSn5bCPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjIwMFwiIG1pbj1cIjAuMDAxXCIgc3RlcD1cIjAuMDAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7ZmxleDogMCAwIDEwMHB4O21hcmdpbi1sZWZ0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMC4wMDFcIiBtYXg9XCIyMDBcIiBzdGVwPVwiMC4wMDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiA1O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaWh+Wtl+WGheWuuTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJ0ZXh0VmFsdWVcIiBtYXhsZW5ndGg9XCIzMFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIEBjbGljaz1cInRleHRQb3NQaWNrXCI+6K6+572u5L2N572uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mloflrZflvIDlhbM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwidGV4dFNob3dcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lrZfkvZPpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dENvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5a2X5L2T5aSn5bCPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJ0ZXh0Rm9udFNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6KeG6YeO57yp5pS+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cInRleHRTY2FsZUJ5RGlzdGFuY2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDov5Hot53nprs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OTk5OVwiIEBtb2RlbD1cInRleHROZWFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pyA6L+c6Led56a7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5OTk5OTlcIiBAbW9kZWw9XCJ0ZXh0RmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtIGF0dHJpYnV0ZS1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBMkdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/GroundSvg/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/GroundSvg/index.js": -/*!*****************************************!*\ - !*** ./src/Obj/Base/GroundSvg/index.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/set */ \"./node_modules/@babel/runtime/helpers/set.js\");\n/* harmony import */ var _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/GroundSvg/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Draw_drawPoint_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Draw/drawPoint.js */ \"./src/Draw/drawPoint.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _static_3rdparty_three_jsm_loaders_FontLoader_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../../static/3rdparty/three/jsm/loaders/FontLoader.js */ \"./static/3rdparty/three/jsm/loaders/FontLoader.js\");\n/* harmony import */ var _static_3rdparty_three_jsm_geometries_TextGeometry_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../../static/3rdparty/three/jsm/geometries/TextGeometry.js */ \"./static/3rdparty/three/jsm/geometries/TextGeometry.js\");\n/* harmony import */ var _static_3rdparty_three_fonts_FZZongYi_M05S_regular_typeface_json__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../../static/3rdparty/three/fonts/FZZongYi-M05S_regular.typeface.json */ \"./static/3rdparty/three/fonts/FZZongYi-M05S_regular.typeface.json\");\nvar _static_3rdparty_three_fonts_FZZongYi_M05S_regular_typeface_json__WEBPACK_IMPORTED_MODULE_21___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../../../../static/3rdparty/three/fonts/FZZongYi-M05S_regular.typeface.json */ \"./static/3rdparty/three/fonts/FZZongYi-M05S_regular.typeface.json\", 1);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropSet(t, e, o, r, p, f) { return _babel_runtime_helpers_set__WEBPACK_IMPORTED_MODULE_8___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(f ? t.prototype : t), e, o, r, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar GroundSvg = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 贴地svg\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.angle=0 {number} 旋转角度\r\n * @param options.scale {object} 比例\r\n * @param options.scale.x=1 {number} x轴比例\r\n * @param options.scale.y=1 {number} y轴比例\r\n * @param options.url {string} 资源地址\r\n * @param options.flipe {object} 翻转\r\n * @param options.flipe.x=false {boolean} 绕X轴翻转\r\n * @param options.flipe.y=false {boolean} 绕Y轴翻转\r\n * @param {Array.} options.position 位置\r\n * @param options.position.lng {number} 经度\r\n * @param options.position.lat {number} 纬度\r\n * @param options.color {string} 颜色\r\n * @param options.text {object} 文字\r\n * @param options.text.show=true {boolean} 文字\r\n * @param options.text.position.lng {number} 经度\r\n * @param options.text.position.lat {number} 纬度\r\n * @param options.text.position.alt {number} 高度\r\n * @param options.text.fontSize=20 {number} 字体大小\r\n * @param options.text.color=#ffffff {string} 字体大小\r\n * @param options.text.scaleByDistance {boolean} 距离缩放\r\n * @param options.text.near=2000 {number} 视野缩放最近距离\r\n * @param options.text.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n // #loadEvent = void 0\n // #loaded = false\n function GroundSvg(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, GroundSvg);\n _this = _callSuper(this, GroundSvg, [sdk, options]);\n var jsCode = \"\\n importScripts('\".concat(_this.getSourceRootPath(), \"/3rdparty/turf.min.js');\\n self.addEventListener('message', function (e) {\\n let features = []\\n eval(e.data.code);\\n self.postMessage(features);\\n }, false);\\n \");\n var dataUri = 'data:text/javascript;charset=utf-8,' + encodeURIComponent(jsCode);\n _this._worker = new Worker(dataUri);\n _this.options.angle = _this.options.angle || 0;\n _this.loaded = false;\n _this.ismove = false;\n _this._loadEvent = void 0;\n _this._loaded = false;\n if (_this.options.position.lat > 83.5) {\n _this.options.position.lat = 83.5;\n }\n if (_this.options.position.lat < -83.5) {\n _this.options.position.lat = -83.5;\n }\n _this.options.show = options.show || options.show === false ? options.show : true;\n _this.options.scale = options.scale || {};\n _this.options.scale.x = _this.options.scale.x || _this.options.scale.x === 0 ? _this.options.scale.x : 1;\n _this.options.scale.y = _this.options.scale.y || _this.options.scale.y === 0 ? _this.options.scale.y : 1;\n _this.options.flipe = options.flipe || {};\n _this.options.flipe.x = _this.options.flipe.x || false;\n _this.options.flipe.y = _this.options.flipe.y || false;\n _this.options.attribute = options.attribute || {};\n _this.options.attribute.link = _this.options.attribute.link || {};\n _this.options.attribute.link.content = _this.options.attribute.link.content || [];\n _this.options.attributeType = options.attributeType || 'richText';\n options.text = options.text || {};\n _this.options.text = {\n value: options.text.value || '',\n show: options.text.show || options.text.show === false ? options.text.show : true,\n position: options.text.position,\n fontSize: options.text.fontSize || options.text.fontSize === 0 ? options.text.fontSize : 20,\n color: options.text.color || '#ffffff',\n scaleByDistance: options.text.scaleByDistance || false,\n near: options.text.near || options.text.near === 0 ? options.text.near : 2000,\n far: options.text.far || options.text.far === 0 ? options.text.far : 100000\n };\n if (_this.options.text.position) {\n var point1 = turf.point([_this.options.position.lng, _this.options.position.lat]);\n var point2 = turf.point([_this.options.text.position.lng, _this.options.text.position.lat]);\n var distance = turf.distance(point1, point2, {\n units: 'kilometers'\n });\n var angle = turf.rhumbBearing(point1, point2);\n _this._textToCenter = {\n distance: distance,\n angle: angle\n };\n }\n _this.hierarchys = [];\n _this._elms = {};\n _this.Dialog = _Dialog;\n _this._isdrag = false;\n _this._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_13__[\"default\"]();\n if (_this.sdk.entityMap.get(_this.options.id)) {\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(_this);\n }\n _this.sdk.addIncetance(_this.options.id, _this);\n _this.picking = true;\n if (_this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__[\"setSplitDirection\"])(0, _this.options.id);\n }\n _this._entityArray = [];\n _this.init();\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default()(GroundSvg, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(GroundSvg, [{\n key: \"type\",\n get: function get() {\n return 'GroundSvg';\n }\n }, {\n key: \"attributeSelect\",\n get: function get() {\n return [{\n name: '富文本',\n value: '富文本',\n key: 'richText'\n }, {\n name: '链接',\n value: '链接',\n key: 'link'\n }];\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n if (this.options.text && this.options.text.show) {\n if (this.text) {\n if (!this.showView || this.showView == 3) {\n this.text.show = v;\n } else {\n this.text.show = false;\n }\n }\n }\n _superPropSet(GroundSvg, \"show\", v, this, 1, 1);\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"position\",\n get: function get() {\n return this.options.position;\n },\n set: function set(v) {\n var _this2 = this;\n this.options.position = v;\n if (this.options.position.lat > 83.5) {\n this.options.position.lat = 83.5;\n }\n if (this.options.position.lat < -83.5) {\n this.options.position.lat = -83.5;\n }\n this._update();\n if (this._textToCenter) {\n var point = turf.point([this.options.position.lng, this.options.position.lat]);\n var targetPoint = turf.destination(point, this._textToCenter.distance, this._textToCenter.angle, {\n units: 'kilometers'\n }).geometry.coordinates;\n this.getClampToHeight({\n lng: targetPoint[0],\n lat: targetPoint[1]\n }).then(function (height) {\n var textPosition = [targetPoint[0], targetPoint[1], height];\n _this2.text && (_this2.text.position = textPosition);\n });\n }\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v;\n if (this.options.color) {\n for (var i = 0; i < this.entity.values.length; i++) {\n this.entity.values[i].polygon.material = Cesium.Color.fromCssColorString(this.options.color);\n }\n } else {\n for (var _i = 0; _i < this.entity.values.length; _i++) {\n this.entity.values[_i].polygon.material = Cesium.Color.fromCssColorString(this.entity.values[_i].properties.color._value);\n }\n }\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.color || undefined,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = '';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"angle\",\n get: function get() {\n return this.options.angle;\n },\n set: function set(v) {\n var _this4 = this;\n // console.log(v, Math.ceil(Math.abs(v / 360)), (Number(v) + Number(v) * Math.ceil(Math.abs(v / 360))) % 360)\n var angle = (Number(v) + 360) % 360;\n angle = parseFloat(angle.toFixed(1));\n this.options.angle = angle;\n if (v > 0 && angle === 0) {\n this.options.angle = 360;\n }\n this._elms.angle && this._elms.angle.forEach(function (item) {\n item.value = _this4.options.angle;\n });\n this._update();\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.options.scale;\n },\n set: function set(scale) {\n this.options.scale.x = scale.x;\n this.options.scale.y = scale.y;\n if (this._elms) {\n this._elms.xRange && (this._elms.xRange.value = this.options.scale.x);\n this._elms.yRange && (this._elms.yRange.value = this.options.scale.y);\n this._elms.xInput && (this._elms.xInput.value = this.options.scale.x);\n this._elms.yInput && (this._elms.yInput.value = this.options.scale.y);\n }\n this._update();\n }\n }, {\n key: \"flipeY\",\n get: function get() {\n return this.options.flipe.y;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n this.options.flipe.y = v;\n this._update();\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"flipeX\",\n get: function get() {\n return this.options.flipe.x;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n this.options.flipe.x = v;\n this._update();\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"textValue\",\n get: function get() {\n return this.options.text.value;\n },\n set: function set(v) {\n this.options.text.value = v;\n if (this.text) {\n this.text.text = v;\n } else {\n GroundSvg.createText(this);\n }\n this._elms.textValue && this._elms.textValue.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"textShow\",\n get: function get() {\n return this.options.text.show;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.text.show = v;\n if (this.show) {\n if (!this.showView || this.showView == 3) {\n this.text && (this.text.show = v);\n } else {\n this.text && (this.text.show = false);\n }\n if (this.options.text.position) {\n setTimeout(function () {\n if (_this5.options.text.position.alt) {\n _this5.text && (_this5.text.position = [_this5.options.text.position.lng, _this5.options.text.position.lat, _this5.options.text.position.alt]);\n } else {\n _this5.getClampToHeight({\n lng: _this5.options.text.position.lng,\n lat: _this5.options.text.position.lat\n }).then(function (height) {\n _this5.text && (_this5.text.position = [_this5.options.text.position.lng, _this5.options.text.position.lat, height]);\n });\n }\n }, 0);\n }\n } else {\n this.text && (this.text.show = false);\n }\n this._elms.textShow && this._elms.textShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"textColor\",\n get: function get() {\n return this.options.text.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.text.color = v;\n this.text && (this.text.color = v);\n if (this._elms.textColor) {\n this._elms.textColor.forEach(function (item, i) {\n var textColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.textColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.textColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.textColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.textColor[i] = textColorPicker;\n });\n }\n }\n }, {\n key: \"textFontSize\",\n get: function get() {\n return this.options.text.fontSize;\n },\n set: function set(v) {\n this.options.text.fontSize = v;\n if (this.text) {\n this.text.fontSize = v;\n this.text.pixelOffset = v;\n }\n this._elms.textFontSize && this._elms.textFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"textScaleByDistance\",\n get: function get() {\n return this.options.text.scaleByDistance;\n },\n set: function set(v) {\n this.options.text.scaleByDistance = v;\n this.text && (this.text.scaleByDistance = v);\n this._elms.textScaleByDistance && this._elms.textScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"textNear\",\n get: function get() {\n return this.options.text.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.textFar) {\n near = this.textFar;\n }\n this.options.text.near = near;\n this.text && (this.text.near = near);\n this._elms.textNear && this._elms.textNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"textFar\",\n get: function get() {\n return this.options.text.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.textNear) {\n far = this.textNear;\n }\n this.options.text.far = far;\n this.text && (this.text.far = far);\n this._elms.textFar && this._elms.textFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"attributeType\",\n get: function get() {\n return this.options.attributeType;\n },\n set: function set(v) {\n this.options.attributeType = v;\n this._elms.attributeType && this._elms.attributeType.forEach(function (item) {\n item.value = v;\n });\n var attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content');\n for (var i = 0; i < attributeContent.length; i++) {\n if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) {\n attributeContent[i].style.display = 'block';\n } else {\n attributeContent[i].style.display = 'none';\n }\n }\n }\n }, {\n key: \"attributeLink\",\n get: function get() {\n return this.options.attribute.link.content;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.attribute.link.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.link.content.length; i++) {\n var tr = \"\\n
\\n
\" + this.options.attribute.link.content[i].name + \"
\\n
\" + this.options.attribute.link.content[i].url + \"
\\n
\\n \\n \\n
\\n
\";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee(index) {\n var table, tableContent, item, _loop, _i2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this7.options.attribute.link.content;\n case 2:\n _this7.attributeLink = _context3.sent;\n table = _this7._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _loop(_i2) {\n var height, _html, textareaElm, td, btn, n, _iterator, _step, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _loop$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(index === _i2)) {\n _context2.next = 36;\n break;\n }\n height = item[_i2].offsetHeight;\n _html = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\";\n item[_i2].innerHTML = _html;\n textareaElm = item[_i2].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i2].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this7.options.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this7.options.attribute.link.content[index].url;\n btn = item[_i2].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context2.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context2.next = 14;\n break;\n }\n return _context2.abrupt(\"continue\", 32);\n case 14:\n _iterator = _createForOfIteratorHelper(btn[n].attributes);\n _context2.prev = 15;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _loop2$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n m = _step.value;\n if (!(m.name === '@click')) {\n _context.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i2);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _loop2);\n });\n _iterator.s();\n case 18:\n if ((_step = _iterator.n()).done) {\n _context2.next = 24;\n break;\n }\n return _context2.delegateYield(_loop2(), \"t0\", 20);\n case 20:\n if (!_context2.t0) {\n _context2.next = 22;\n break;\n }\n return _context2.abrupt(\"break\", 24);\n case 22:\n _context2.next = 18;\n break;\n case 24:\n _context2.next = 29;\n break;\n case 26:\n _context2.prev = 26;\n _context2.t1 = _context2[\"catch\"](15);\n _iterator.e(_context2.t1);\n case 29:\n _context2.prev = 29;\n _iterator.f();\n return _context2.finish(29);\n case 32:\n n++;\n _context2.next = 11;\n break;\n case 35:\n return _context2.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context2.stop();\n }\n }, _loop, null, [[15, 26, 29, 32]]);\n });\n _i2 = 0;\n case 8:\n if (!(_i2 < item.length)) {\n _context3.next = 15;\n break;\n }\n return _context3.delegateYield(_loop(_i2), \"t0\", 10);\n case 10:\n if (!_context3.t0) {\n _context3.next = 12;\n break;\n }\n return _context3.abrupt(\"break\", 15);\n case 12:\n _i2++;\n _context3.next = 8;\n break;\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee);\n }));\n function linkEdit(_x) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this7.options.attribute.link.content.splice(i, 1);\n _this7.attributeLink = _this7.options.attribute.link.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, '');\n var url = value.url && value.url.replace(/\\s/g, '');\n if (name && url) {\n _this7.options.attribute.link.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this7.attributeLink = _this7.options.attribute.link.content;\n },\n cancelEdit: function cancelEdit() {\n _this7.attributeLink = _this7.options.attribute.link.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect);\n fileElm.addEventListener('change', _fileSelect);\n }\n };\n var _fileSelect = function _fileSelect(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop3 = function _loop3(_i3) {\n var btn = item[_i3].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(btn[n].attributes),\n _step2;\n try {\n var _loop4 = function _loop4() {\n var m = _step2.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i3);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n for (var _i3 = 0; _i3 < item.length; _i3++) {\n _loop3(_i3);\n }\n }\n }, {\n key: \"init\",\n value: function init() {\n var _this8 = this;\n var url = this.replaceHost(this.options.url, this.options.host);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n this.hierarchys = [];\n this.originalOptions = this.deepCopyObj(this.options);\n var geometryArray = [];\n var loader = new SVGLoader();\n loader.load(url, function (data) {\n if (!_this8.sdk || !_this8.sdk.viewer || !_this8.sdk.viewer.entities) {\n return;\n }\n data.xml.style.width = '0';\n data.xml.style.height = '0';\n document.body.appendChild(data.xml);\n var _iterator3 = _createForOfIteratorHelper(data.paths),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var path = _step3.value;\n var fillColor = path.userData.style.fill;\n var style = window.getComputedStyle(path.userData.node);\n if (style.strokeWidth) {\n path.userData.style.strokeWidth = Number(style.strokeWidth.replace(/[a-zA-Z]/g, ''));\n }\n if (fillColor !== undefined && fillColor !== 'none') {\n var shapes = SVGLoader.createShapes(path);\n var _iterator4 = _createForOfIteratorHelper(shapes),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var shape = _step4.value;\n var _geometry = new THREE.ShapeGeometry(shape);\n var mesh = new THREE.Mesh(_geometry);\n geometryArray.push({\n geometry: mesh.geometry,\n color: fillColor\n });\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n var strokeColor = path.userData.style.stroke;\n if (strokeColor !== undefined && strokeColor !== 'none') {\n var _iterator5 = _createForOfIteratorHelper(path.subPaths),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var subPath = _step5.value;\n var _geometry2 = SVGLoader.pointsToStroke(subPath.getPoints(), path.userData.style);\n if (_geometry2) {\n var _mesh = new THREE.Mesh(_geometry2);\n geometryArray.push({\n geometry: _mesh.geometry,\n color: strokeColor\n });\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n document.body.removeChild(data.xml);\n var min = 0;\n var max = 0;\n var geojson;\n for (var key = 0; key < geometryArray.length; key++) {\n var geometry = geometryArray[key].geometry;\n if (!geometry || !geometry.attributes || !geometry.attributes.position) {\n continue;\n }\n var array = geometry.attributes.position.array;\n for (var i = 0; i < array.length; i++) {\n if (min > array[i]) {\n min = array[i];\n }\n if (max < array[i]) {\n max = array[i];\n }\n }\n }\n min = Math.abs(min);\n max = Math.abs(max);\n if (min > max) {\n max = min;\n }\n var max2 = max;\n max = max * (10 / 3) * 100;\n var scale = 4000 / max / 5;\n max2 = max2 * scale;\n for (var _key = 0; _key < geometryArray.length; _key++) {\n geometryArray[_key].geometry.scale(scale, scale, 1);\n geometryArray[_key].geometry.rotateX(THREE.MathUtils.degToRad(180));\n }\n var jsCode = \"\\n let geometryArray = e.data.options.geometryArray\\n let max2 = e.data.options.max2\\n for (let key = 0; key < geometryArray.length; key++) {\\n let feature\\n let positions = []\\n let position = []\\n let geometry = geometryArray[key].geometry;\\n let array = geometry.attributes.position.array\\n\\n for (let i = 0; i < array.length; i += 3) {\\n let x = array[i] - (max2 / 2)\\n let y = array[i + 1] + (max2 / 2)\\n position.push([x, y, array[i + 1]])\\n }\\n if (geometry.index && geometry.index.array) {\\n let index = geometry.index.array\\n for (let i = 0; i < index.length; i += 3) {\\n positions.push([position[index[i]], position[index[i + 1]], position[index[i + 2]]])\\n }\\n }\\n else {\\n for (let i = 0; i < position.length; i += 3) {\\n positions.push([position[i], position[i + 1], position[i + 2]])\\n }\\n }\\n\\n\\n let polygons = []\\n // \\u7EC4\\u5408\\u591A\\u8FB9\\u5F62\\n for (let i = 0; i < positions.length; i++) {\\n let polygon = turf.polygon([[\\n ...positions[i],\\n positions[i][0]\\n ]]);\\n polygons.push(polygon)\\n\\n if (feature) {\\n feature = turf.union(feature, polygon);\\n }\\n else {\\n feature = polygon\\n }\\n }\\n feature.properties.color = geometryArray[key].color\\n features.push(feature)\\n }\\n \";\n _this8._worker.postMessage({\n code: jsCode,\n options: {\n geometryArray: geometryArray,\n max2: max2\n }\n });\n _this8._worker.onmessage = function (event) {\n if (!_this8.sdk || !_this8.sdk.viewer || !_this8.sdk.viewer.entities) {\n return;\n }\n var features = event.data;\n geojson = turf.featureCollection(features);\n _this8.geojson = JSON.parse(JSON.stringify(geojson));\n\n // 计算边界框\n var bbox = turf.bbox(geojson);\n var width = Math.abs(bbox[2] - bbox[0]);\n var height = Math.abs(bbox[3] - bbox[1]);\n\n // 获取最小正方形\n var square = turf.square(bbox);\n // 控制点界限\n square[0] = square[0] + _this8.options.position.lng - width / 5;\n square[1] = square[1] + _this8.options.position.lat - height / 5;\n square[2] = square[2] + _this8.options.position.lng + width / 5;\n square[3] = square[3] + _this8.options.position.lat + height / 5;\n _this8.bbox = square;\n _this8.geojson.features.forEach(function (item) {\n var array = [];\n var geojson = JSON.parse(JSON.stringify(item));\n geojson.properties.directionDistance = [];\n if (geojson.geometry.type === 'MultiPolygon') {\n for (var _i4 = 0; _i4 < geojson.geometry.coordinates.length; _i4++) {\n var _array = [];\n for (var m = 0; m < geojson.geometry.coordinates[_i4].length; m++) {\n var array2 = [];\n for (var n = 0; n < geojson.geometry.coordinates[_i4][m].length; n++) {\n var point1 = turf.point([0, geojson.geometry.coordinates[_i4][m][n][1]]);\n var point2 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(geojson.geometry.coordinates[_i4][m][n]));\n var distance = turf.distance(point1, point2, {\n units: 'kilometers'\n });\n var angle = turf.rhumbBearing(point1, point2);\n array2.push({\n origin: geojson.geometry.coordinates[_i4][m][n],\n distance: distance,\n angle: angle\n });\n }\n _array.push(array2);\n }\n geojson.properties.directionDistance.push(_array);\n }\n } else {\n for (var _i5 = 0; _i5 < geojson.geometry.coordinates.length; _i5++) {\n var _array2 = [];\n for (var _m = 0; _m < geojson.geometry.coordinates[_i5].length; _m++) {\n var _point = turf.point([0, geojson.geometry.coordinates[_i5][_m][1]]);\n var _point2 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(geojson.geometry.coordinates[_i5][_m]));\n var _distance = turf.distance(_point, _point2, {\n units: 'kilometers'\n });\n var _angle = turf.rhumbBearing(_point, _point2);\n _array2.push({\n origin: geojson.geometry.coordinates[_i5][_m],\n distance: _distance,\n angle: _angle\n });\n }\n geojson.properties.directionDistance.push(_array2);\n }\n }\n if (geojson.geometry.type === 'MultiPolygon') {\n for (var _i6 = 0; _i6 < geojson.geometry.coordinates.length; _i6++) {\n var hierarchy = _this8.getHierarchyPolygon(geojson, _i6);\n array.push(hierarchy);\n }\n } else {\n var _hierarchy = _this8.getHierarchyPolygon(geojson);\n array.push(_hierarchy);\n }\n _this8.hierarchys.push(array);\n });\n _this8.entity = new Cesium.EntityCollection();\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__[\"syncSplitData\"])(_this8.sdk, _this8.options.id);\n var perPositionHeight = false;\n if (_this8.sdk.viewer._element.className === 'cesium-viewer 2d') {\n perPositionHeight = true;\n }\n var _loop5 = function _loop5(_i7) {\n var _loop6 = function _loop6(m) {\n var id = _this8.options.id + \"-\".concat(_i7, \"_\").concat(m, \"}\");\n var oldEntity = _this8.sdk.viewer.entities.getById(id);\n if (oldEntity) {\n _this8.sdk.viewer.entities.remove(oldEntity);\n }\n var entity = _this8.sdk.viewer.entities.add({\n id: _this8.options.id + \"-\".concat(_i7, \"_\").concat(m, \"}\"),\n show: _this8.options.show,\n polygon: {\n hierarchy: new Cesium.CallbackProperty(function () {\n var hierarchy = _this8.hierarchys[_i7][m];\n var holes = [];\n for (var n = 0; n < hierarchy.holes.length; n++) {\n holes.push({\n positions: hierarchy.holes[n]\n });\n }\n return {\n positions: hierarchy.positions,\n holes: holes\n };\n }, true),\n perPositionHeight: perPositionHeight,\n zIndex: _this8.sdk._entityZIndex,\n material: new Cesium.CustomColorMaterialSource({\n color: _this8.options.color || _this8.geojson.features[_i7].properties.color\n })\n },\n properties: {\n id: _this8.options.id\n }\n });\n _this8.sdk._entityZIndex++;\n if (_this8.geojson.features[_i7].properties.color) {\n entity.properties = {\n id: _this8.options.id,\n color: _this8.geojson.features[_i7].properties.color\n };\n }\n _this8._entityArray.push(entity);\n _this8.entity.add(entity);\n };\n for (var m = 0; m < _this8.hierarchys[_i7].length; m++) {\n _loop6(m);\n }\n };\n for (var _i7 = 0; _i7 < _this8.hierarchys.length; _i7++) {\n _loop5(_i7);\n }\n _this8.loaded = true;\n _this8._loaded = true;\n if (_this8._loadEvent) {\n _this8._loadEvent();\n }\n _this8.scale = _this8.scale;\n GroundSvg.createText(_this8);\n // GroundSvg.initText(this)\n };\n });\n }\n }, {\n key: \"edit\",\n value: (\n /**\r\n * 编辑框\r\n * @param {boolean} status=false 状态\r\n */\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee3(state) {\n var _this9 = this;\n var contentElm, colorPicker, textColorPicker, all_elm, xElm, yElm, xRange, xInput, yRange, yInput;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee3$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (this._loaded) {\n _context5.next = 2;\n break;\n }\n return _context5.abrupt(\"return\");\n case 2:\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context5.next = 42;\n break;\n }\n _context5.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.sdk, this.originalOptions, {\n title: '军标属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this9.name = _this9.name.trim();\n if (!_this9.name) {\n _this9.name = '未命名对象';\n }\n _this9.text && (_this9.options.text.position = {\n lng: _this9.text.position[0],\n lat: _this9.text.position[1],\n alt: _this9.text.position[2]\n });\n _this9.originalOptions = _this9.deepCopyObj(_this9.options);\n _this9._DialogObject.close();\n var cdoptions = _this9.deepCopyObj(_this9.options);\n cdoptions.host = '';\n _this9.Dialog.confirmCallBack && _this9.Dialog.confirmCallBack(cdoptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(_this9.sdk, _this9.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__[\"syncSplitData\"])(_this9.sdk, _this9.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this9.reset();\n _this9.Dialog.resetCallBack && _this9.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this9.Dialog.removeCallBack && _this9.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this9._DialogObject = null;\n _this9.drag(false);\n _this9.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this9.Dialog.closeCallBack && _this9.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this9.show = show;\n _this9.Dialog.showCallBack && _this9.Dialog.showCallBack();\n },\n addFootElm: [{\n tagName: 'button',\n className: 'flipe-over-y',\n innerHTML: 'Y轴翻转',\n event: ['click', function () {\n _this9.flipeY = !_this9.flipeY;\n }]\n }, {\n tagName: 'button',\n className: 'flipe-over-x',\n innerHTML: 'X轴翻转',\n event: ['click', function () {\n _this9.flipeX = !_this9.flipeX;\n }]\n }, {\n tagName: 'button',\n className: 'drag',\n innerHTML: '编辑',\n event: ['click', function () {\n _this9.drag(!_this9._isdrag);\n }]\n }]\n }, true);\n case 7:\n this._DialogObject = _context5.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' ground-svg';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n _context5.next = 13;\n return this._DialogObject.contentAppChild(contentElm);\n case 13:\n this.attributeType = this.options.attributeType;\n\n // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color || undefined,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.color = '';\n } //点击清空按钮事件回调\n });\n textColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"textColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.textColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.textColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.textColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [colorPicker];\n this._elms.textColor = [textColorPicker];\n setTimeout(/*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee2() {\n var m, tagData, attributeElm, legpObject, attributeSelectElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee2$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(_this9.sdk && _this9.sdk.tabHide && Array.isArray(_this9.sdk.tabHide))) {\n _context4.next = 9;\n break;\n }\n m = 0;\n case 2:\n if (!(m < _this9.sdk.tabHide.length)) {\n _context4.next = 9;\n break;\n }\n if (!(_this9.sdk.tabHide[m] === '属性信息')) {\n _context4.next = 6;\n break;\n }\n contentElm.getElementsByClassName('attribute-info')[0].style.display = 'none';\n return _context4.abrupt(\"break\", 9);\n case 6:\n m++;\n _context4.next = 2;\n break;\n case 9:\n _this9.attributeLink = _this9.options.attribute.link.content;\n tagData = _this9.attributeSelect;\n attributeElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (!attributeElm) {\n _context4.next = 26;\n break;\n }\n legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, '.attribute-select');\n legpObject.legp_search(tagData);\n attributeSelectElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n i = 0;\n case 17:\n if (!(i < tagData.length)) {\n _context4.next = 25;\n break;\n }\n if (!(tagData[i].key === _this9.options.attributeType)) {\n _context4.next = 22;\n break;\n }\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n return _context4.abrupt(\"break\", 25);\n case 22:\n i++;\n _context4.next = 17;\n break;\n case 25:\n attributeSelectElm.addEventListener('input', function () {\n for (var _i8 = 0; _i8 < tagData.length; _i8++) {\n if (tagData[_i8].value === attributeSelectElm.value) {\n _this9.attributeType = tagData[_i8].key;\n break;\n }\n }\n });\n case 26:\n case \"end\":\n return _context4.stop();\n }\n }, _callee2);\n })), 0);\n xElm = contentElm.getElementsByClassName('x-scale')[0];\n yElm = contentElm.getElementsByClassName('y-scale')[0];\n xRange = xElm.getElementsByTagName('input')[0];\n xInput = xElm.getElementsByTagName('input')[1];\n yRange = yElm.getElementsByTagName('input')[0];\n yInput = yElm.getElementsByTagName('input')[1];\n xRange.value = this.scale.x;\n xInput.value = this.scale.x;\n yRange.value = this.scale.y;\n yInput.value = this.scale.y;\n this._elms.xRange = xRange;\n this._elms.yRange = yRange;\n this._elms.xInput = xInput;\n this._elms.yInput = yInput;\n xRange.addEventListener('input', function (e) {\n _this9.scale = {\n x: xRange.value,\n y: _this9.scale.y\n };\n });\n yRange.addEventListener('input', function (e) {\n _this9.scale = {\n x: _this9.scale.x,\n y: yRange.value\n };\n });\n xInput.addEventListener('input', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) && value >= Number(e.target.min)) {\n _this9.scale = {\n x: value,\n y: _this9.scale.y\n };\n }\n }\n });\n xInput.addEventListener('blur', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n _this9.scale = {\n x: value,\n y: _this9.scale.y\n };\n });\n yInput.addEventListener('input', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) && value >= Number(e.target.min)) {\n _this9.scale = {\n x: _this9.scale.x,\n y: value\n };\n }\n }\n });\n yInput.addEventListener('blur', function (e) {\n var value = e.target.value;\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n _this9.scale = {\n x: _this9.scale.x,\n y: value\n };\n });\n case 42:\n case \"end\":\n return _context5.stop();\n }\n }, _callee3, this);\n }));\n function edit(_x2) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n /**\r\n * 重置\r\n */\n )\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this._loaded) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.position = this.originalOptions.position;\n this.name = this.originalOptions.name;\n this.angle = this.originalOptions.angle;\n this.scale = this.originalOptions.scale;\n this.color = this.originalOptions.color;\n if (this.text && !this.originalOptions.text.position) {\n this.text.remove();\n this.text = null;\n }\n this.attributeLink = this.options.attribute.link.content;\n this.textShow = this.originalOptions.text.show;\n this.textValue = this.originalOptions.text.value;\n this.textColor = this.originalOptions.text.color;\n this.textFontSize = this.originalOptions.text.fontSize;\n this.textScaleByDistance = this.originalOptions.text.scaleByDistance;\n this.textNear = this.originalOptions.text.near;\n this.textFar = this.originalOptions.text.far;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n\n /**\r\n * 拖动\r\n * @param {boolean} status=false 状态\r\n */\n }, {\n key: \"drag\",\n value: function drag(status, dragCallback, endCallback) {\n var _this10 = this;\n if (!this._loaded || !this.sdk || !this.sdk.viewer) {\n return;\n }\n this.ismove = false;\n this._isdrag = status;\n if (this.ScreenSpaceEventHandler) {\n this.ScreenSpaceEventHandler.destroy();\n this.ScreenSpaceEventHandler = null;\n }\n if (status) {\n this.ScreenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.canvas);\n var width = Math.abs(this.bbox[0] - this.bbox[2]);\n var height = Math.abs(this.bbox[1] - this.bbox[3]);\n this.ScreenSpaceEventHandler.setInputAction(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee4(movement) {\n var sCartesian, eCartesian, ray, position1, position2, x, y, radians, radiansW, radiansH, _w, _h, _wh, _angle2, angleW, angleH, _point3, _options, _controlPoints, point1, point2, pointC, bearing1, bearing2_0, bearing2, bearingH, bearingW, distance, flag, flag2, cx, cy, scale, pickedObjectArray, pickPoint, i, pickedObject, _i9;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee4$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (!_this10.pickPoint) {\n _context6.next = 115;\n break;\n }\n sCartesian = _this10.pickPoint.position.getValue();\n eCartesian = _this10.sdk.viewer.scene.pickPosition(movement.endPosition);\n if (!eCartesian) {\n ray = _this10.sdk.viewer.camera.getPickRay(movement.endPosition);\n eCartesian = _this10.sdk.viewer.scene.globe.pick(ray, _this10.sdk.viewer.scene);\n }\n if (!(!sCartesian || !eCartesian)) {\n _context6.next = 6;\n break;\n }\n return _context6.abrupt(\"return\");\n case 6:\n position1 = _this10.cartesian3Towgs84(sCartesian, _this10.sdk.viewer);\n position2 = _this10.cartesian3Towgs84(eCartesian, _this10.sdk.viewer);\n x = 0;\n y = 0;\n _w = 3.5 * _this10.scale.x;\n _h = 3.5 * _this10.scale.y;\n _wh = Math.sqrt(Math.pow(_w / 2, 2) + Math.pow(_h / 2, 2));\n _angle2 = Math.atan(_w / 2 / (_h / 2)) * (180 / Math.PI);\n if (isNaN(_angle2)) {\n _angle2 = 0;\n }\n _point3 = turf.point([_this10.position.lng, _this10.position.lat]);\n _options = {\n units: 'kilometers'\n };\n _controlPoints = [];\n _controlPoints[0] = turf.destination(_point3, _h / 2 * 1.5, 0 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[1] = turf.destination(_point3, _wh, 180 + _angle2 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[2] = turf.destination(_point3, _h / 2, 180 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[3] = turf.destination(_point3, _wh, 180 - _angle2 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[4] = turf.destination(_point3, _w / 2, 270 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[5] = [_this10.position.lng, _this10.position.lat];\n _controlPoints[6] = turf.destination(_point3, _w / 2, 90 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[7] = turf.destination(_point3, _wh, 360 - _angle2 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[8] = turf.destination(_point3, _h / 2, 0 + _this10.options.angle, _options).geometry.coordinates;\n _controlPoints[9] = turf.destination(_point3, _wh, 0 + _angle2 + _this10.options.angle, _options).geometry.coordinates;\n point1 = turf.point([position1.lng, position1.lat]);\n point2 = turf.point([position2.lng, position2.lat]);\n pointC = turf.point([_this10.position.lng, _this10.position.lat]);\n bearing1 = turf.rhumbBearing(pointC, point1);\n bearing2_0 = turf.rhumbBearing(pointC, point2);\n bearing2 = (bearing2_0 + 360 - _this10.angle) % 360;\n // 中心点到鼠标的距离\n distance = turf.rhumbDistance(pointC, point2, _options);\n flag = false;\n flag2 = false;\n _context6.t0 = _this10.pickPoint.id;\n _context6.next = _context6.t0 === 'svg-control-points_0' ? 40 : _context6.t0 === 'svg-control-points_1' ? 43 : _context6.t0 === 'svg-control-points_7' ? 43 : _context6.t0 === 'svg-control-points_2' ? 57 : _context6.t0 === 'svg-control-points_8' ? 57 : _context6.t0 === 'svg-control-points_3' ? 64 : _context6.t0 === 'svg-control-points_9' ? 64 : _context6.t0 === 'svg-control-points_4' ? 78 : _context6.t0 === 'svg-control-points_5' ? 85 : _context6.t0 === 'svg-control-points_6' ? 95 : 102;\n break;\n case 40:\n _angle2 = bearing2_0 - bearing1;\n _this10.angle += _angle2;\n return _context6.abrupt(\"break\", 102);\n case 43:\n bearingW = (turf.rhumbBearing(pointC, turf.point(_controlPoints[4])) + 360 - _this10.angle) % 360;\n bearingH = (turf.rhumbBearing(pointC, turf.point(_controlPoints[2])) + 360 - _this10.angle) % 360;\n angleW = bearing2 - bearingW;\n angleH = bearing2 - bearingH;\n if (angleW > -270 && angleW < -90 || angleW < 270 && angleW > 90) {\n angleW = angleW + 180;\n flag = true;\n }\n if (angleH > -360 && angleH < -90 || angleH < 360 && angleH > 90) {\n angleH = angleH + 180;\n flag2 = true;\n }\n if (flag && flag2) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#ff0000');\n } else {\n if (flag) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n } else if (flag2) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n } else {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n }\n }\n radiansW = Math.PI / 180 * angleW;\n radiansH = Math.PI / 180 * angleH;\n // 矩形高度\n _w = Math.cos(radiansW) * distance * 2;\n _h = Math.cos(radiansH) * distance * 2;\n // scaleY值\n _this10.scale.x = Math.abs(_w) / 3.5;\n _this10.scale.y = Math.abs(_h) / 3.5;\n return _context6.abrupt(\"break\", 102);\n case 57:\n bearingH = (turf.rhumbBearing(pointC, turf.point(_controlPoints[2])) + 360 - _this10.angle) % 360;\n angleH = bearing2 - bearingH;\n if (angleH > -270 && angleH < -90 || angleH < 270 && angleH > 90) {\n angleH = angleH + 180;\n _this10.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#ff0000');\n } else {\n _this10.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n }\n radiansH = Math.PI / 180 * angleH;\n // 矩形高度\n _h = Math.cos(radiansH) * distance * 2;\n // scaleY值\n _this10.scale.y = _h / 3.5;\n return _context6.abrupt(\"break\", 102);\n case 64:\n bearingW = (turf.rhumbBearing(pointC, turf.point(_controlPoints[6])) + 360 - _this10.angle) % 360;\n bearingH = (turf.rhumbBearing(pointC, turf.point(_controlPoints[2])) + 360 - _this10.angle) % 360;\n angleW = bearing2 - bearingW;\n angleH = bearing2 - bearingH;\n if (angleW > -360 && angleW < -90 || angleW < 360 && angleW > 90) {\n angleW = angleW + 180;\n flag = true;\n }\n if (angleH > -360 && angleH < -90 || angleH < 360 && angleH > 90) {\n angleH = angleH + 180;\n flag2 = true;\n }\n if (flag && flag2) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n } else {\n if (flag) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n } else if (flag2) {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#ff0000');\n } else {\n _this10.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#ff0000');\n _this10.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n }\n }\n radiansW = Math.PI / 180 * angleW;\n radiansH = Math.PI / 180 * angleH;\n // 矩形高度\n _w = Math.cos(radiansW) * distance * 2;\n _h = Math.cos(radiansH) * distance * 2;\n // scaleY值\n _this10.scale.x = Math.abs(_w) / 3.5;\n _this10.scale.y = Math.abs(_h) / 3.5;\n return _context6.abrupt(\"break\", 102);\n case 78:\n bearingW = (turf.rhumbBearing(pointC, turf.point(_controlPoints[4])) + 360 - _this10.angle) % 360;\n angleW = bearing2 - bearingW;\n if (angleW > -360 && angleW < -90 || angleW < 360 && angleW > 90) {\n angleW = angleW + 180;\n _this10.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#ff0000');\n } else {\n _this10.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#ff0000');\n }\n radiansW = Math.PI / 180 * angleW;\n // 矩形宽度\n _w = Math.cos(radiansW) * distance * 2;\n // scaleY值\n _this10.scale.x = _w / 3.5;\n return _context6.abrupt(\"break\", 102);\n case 85:\n if (position2.lat > 83.5) {\n position2.lat = 83.5;\n }\n if (position2.lat < -83.5) {\n position2.lat = -83.5;\n }\n _this10.position = {\n lng: position2.lng,\n lat: position2.lat\n };\n cx = position2.lng - position1.lng;\n cy = position2.lat - position1.lat;\n _this10.bbox[0] = _this10.bbox[0] + cx;\n _this10.bbox[1] = _this10.bbox[1] + cy;\n _this10.bbox[2] = _this10.bbox[2] + cx;\n _this10.bbox[3] = _this10.bbox[3] + cy;\n return _context6.abrupt(\"break\", 102);\n case 95:\n bearingW = (turf.rhumbBearing(pointC, turf.point(_controlPoints[6])) + 360 - _this10.angle) % 360;\n angleW = bearing2 - bearingW;\n if (angleW > -360 && angleW < -90 || angleW < 360 && angleW > 90) {\n angleW = angleW + 180;\n _this10.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#ff0000');\n } else {\n _this10.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n _this10.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#ff0000');\n }\n radiansW = Math.PI / 180 * angleW;\n // 矩形高度\n _w = Math.cos(radiansW) * distance * 2;\n _this10.scale.x = _w / 3.5;\n return _context6.abrupt(\"break\", 102);\n case 102:\n // let radians = (Math.PI / 180) * this.options.angle\n // x = x*Math.cos(radians)\n // y = y*Math.cos(radians)\n\n // let bbox = turf.bbox(geojson);\n // let square = turf.square(bbox);\n\n x = x / (width / 2) * 100;\n y = y / (height / 2) * 100;\n scale = _objectSpread({}, _this10.scale);\n scale.x = scale.x + x;\n scale.y = scale.y - y;\n\n // let pt = turf.point(this.center);\n // let destination1 = turf.rhumbDestination(pt, 220, 45, { units: 'kilometers' });\n // let destination2 = turf.rhumbDestination(pt, 220, 225, { units: 'kilometers' });\n\n // width = Math.abs(destination2.geometry.coordinates[0] - destination1.geometry.coordinates[0])\n // height = Math.abs(destination2.geometry.coordinates[1] - destination1.geometry.coordinates[1])\n\n if (scale.y > 200) {\n scale.y = 200;\n }\n if (scale.y < 0.001) {\n scale.y = 0.001;\n }\n if (scale.x > 200) {\n scale.x = 200;\n }\n if (scale.x < 0.001) {\n scale.x = 0.001;\n }\n _this10.scale = _objectSpread({}, scale);\n dragCallback && dragCallback(_this10.options);\n _context6.next = 142;\n break;\n case 115:\n pickedObjectArray = _this10.sdk.viewer.scene.drillPick(movement.endPosition);\n i = 0;\n case 117:\n if (!(i < pickedObjectArray.length)) {\n _context6.next = 125;\n break;\n }\n pickedObject = pickedObjectArray[i];\n if (!(pickedObject && pickedObject.primitive && pickedObject.primitive._id && pickedObject.primitive._id.id && pickedObject.primitive._id.id.indexOf('svg-control-points_') !== -1)) {\n _context6.next = 122;\n break;\n }\n pickPoint = pickedObject.primitive._id;\n return _context6.abrupt(\"break\", 125);\n case 122:\n i++;\n _context6.next = 117;\n break;\n case 125:\n _i9 = 0;\n case 126:\n if (!(_i9 < _this10.pointEntityCollection.values.length)) {\n _context6.next = 142;\n break;\n }\n if (!(pickPoint && _this10.pointEntityCollection.values[_i9].id === pickPoint.id)) {\n _context6.next = 131;\n break;\n }\n pickPoint.point.color = Cesium.Color.fromCssColorString('#ffff00');\n _context6.next = 139;\n break;\n case 131:\n _context6.t1 = _this10.pointEntityCollection.values[_i9].id;\n _context6.next = _context6.t1 === 'svg-control-points_5' ? 134 : _context6.t1 === 'svg-control-points_0' ? 136 : 138;\n break;\n case 134:\n _this10.pointEntityCollection.values[_i9].point.color = Cesium.Color.fromCssColorString('#ffff00');\n return _context6.abrupt(\"break\", 139);\n case 136:\n _this10.pointEntityCollection.values[_i9].point.color = Cesium.Color.fromCssColorString('#ff0000');\n return _context6.abrupt(\"break\", 139);\n case 138:\n _this10.pointEntityCollection.values[_i9].point.color = Cesium.Color.fromCssColorString('#00ff0a');\n case 139:\n _i9++;\n _context6.next = 126;\n break;\n case 142:\n case \"end\":\n return _context6.stop();\n }\n }, _callee4);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }(), Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n this.ScreenSpaceEventHandler.setInputAction(function (movement) {\n var pickedObjectArray = _this10.sdk.viewer.scene.drillPick(movement.position);\n for (var i = 0; i < pickedObjectArray.length; i++) {\n var pickedObject = pickedObjectArray[i];\n if (pickedObject && pickedObject.primitive && pickedObject.primitive._id && pickedObject.primitive._id.objectId === _this10.options.id && pickedObject.primitive._id.id && pickedObject.primitive._id.id.indexOf('svg-control-points_') !== -1) {\n YJ.Global.CameraController(_this10.sdk, false);\n _this10.pickPoint = pickedObject.primitive._id;\n _this10.pickPoint.point.color = Cesium.Color.fromCssColorString('#ff0000');\n break;\n }\n }\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n this.ScreenSpaceEventHandler.setInputAction(function (movement) {\n if (_this10.pickPoint) {\n YJ.Global.CameraController(_this10.sdk, true);\n switch (_this10.pickPoint.id) {\n case 'svg-control-points_4':\n _this10.pickPoint.point.color = Cesium.Color.fromCssColorString('#ffff00');\n break;\n case 'svg-control-points_9':\n _this10.pickPoint.point.color = Cesium.Color.fromCssColorString('#ff0000');\n break;\n default:\n _this10.pickPoint.point.color = Cesium.Color.fromCssColorString('#00ff0a');\n }\n _this10.pickPoint = null;\n }\n }, Cesium.ScreenSpaceEventType.LEFT_UP);\n this.ScreenSpaceEventHandler.setInputAction(function (movement) {\n _this10.drag(false);\n // if (!this._DialogObject) {\n endCallback && endCallback(_this10.options);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(_this10.sdk, _this10.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_24__[\"syncSplitData\"])(_this10.sdk, _this10.options.id);\n // }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n this.pointEntityCollection = new Cesium.EntityCollection();\n var w = 3.5 * this.scale.x;\n var h = 3.5 * this.scale.y;\n var wh = Math.sqrt(Math.pow(w / 2, 2) + Math.pow(h / 2, 2));\n var angle = Math.atan(w / 2 / (h / 2)) * (180 / Math.PI);\n if (isNaN(angle)) {\n angle = 0;\n }\n var point = turf.point([this.position.lng, this.position.lat]);\n var options = {\n units: 'kilometers'\n };\n var controlPoints = [];\n controlPoints[0] = turf.destination(point, h / 2 * 1.5, 0, options).geometry.coordinates;\n controlPoints[1] = turf.destination(point, wh, 180 + angle, options).geometry.coordinates;\n controlPoints[2] = turf.destination(point, h / 2, 180, options).geometry.coordinates;\n controlPoints[3] = turf.destination(point, wh, 180 - angle, options).geometry.coordinates;\n controlPoints[4] = turf.destination(point, w / 2, 270, options).geometry.coordinates;\n controlPoints[5] = [this.position.lng, this.position.lat];\n controlPoints[6] = turf.destination(point, w / 2, 90, options).geometry.coordinates;\n controlPoints[7] = turf.destination(point, wh, 360 - angle, options).geometry.coordinates;\n controlPoints[8] = turf.destination(point, h / 2, 0, options).geometry.coordinates;\n controlPoints[9] = turf.destination(point, wh, 0 + angle, options).geometry.coordinates;\n this.controlPoints = controlPoints;\n if (!this.sdk || !this.sdk.viewer) {\n return;\n }\n var _loop7 = function _loop7(i) {\n var color = '#00ff0a';\n if (i === 5) {\n color = '#ffff00';\n }\n if (i === 0) {\n color = '#ff0000';\n }\n var entity = _this10.sdk.viewer.entities.getOrCreateEntity('svg-control-points_' + i);\n entity.show = true;\n entity.objectId = _this10.options.id;\n entity.position = new Cesium.CallbackProperty(function () {\n var _Cesium$Cartesian;\n return (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this10.controlPoints[i]));\n });\n entity.point = new Cesium.PointGraphics({\n color: Cesium.Color.fromCssColorString(color),\n // 点的颜色\n pixelSize: 10,\n // 点的大小\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n scaleByDistance: new Cesium.NearFarScalar(0.0, 1.0, 1.0e10, 1.0),\n disableDepthTestDistance: Number.POSITIVE_INFINITY // 不应用深度测试\n });\n _this10.pointEntityCollection.add(entity);\n };\n for (var i = 0; i < this.controlPoints.length; i++) {\n _loop7(i);\n }\n this._update();\n } else {\n for (var _i10 = 0; _i10 < this.controlPoints.length; _i10++) {\n var entity = this.sdk.viewer.entities.getById('svg-control-points_' + _i10);\n if (entity && entity.objectId === this.options.id) {\n entity.show = false;\n }\n }\n }\n }\n }, {\n key: \"getHierarchyPolygon\",\n value: function getHierarchyPolygon(geojson, key) {\n if (!geojson) {\n return;\n }\n var hierarchy = {};\n var holes = [];\n var directionDistance = geojson.properties.directionDistance;\n if (key !== undefined) {\n directionDistance = geojson.properties.directionDistance[key];\n }\n for (var i = 0; i < directionDistance.length; i++) {\n var positions = [];\n for (var m = 0; m < directionDistance[i].length; m++) {\n var _Cesium$Cartesian2;\n var lng = this.options.position.lng;\n var lat = directionDistance[i][m].origin[1] + this.options.position.lat;\n if (lat > 90) {\n lng += 180;\n }\n var origin = [lng, lat];\n var pt = turf.point(origin);\n var destination = turf.rhumbDestination(pt, directionDistance[i][m].distance, directionDistance[i][m].angle, {\n units: 'kilometers'\n });\n var coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(destination.geometry.coordinates);\n // 二维模式下设置高度\n coordinates[2] = 10;\n positions.push((_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(coordinates)));\n }\n if (i === 0) {\n hierarchy.positions = positions;\n } else {\n holes.push(positions);\n }\n }\n hierarchy.holes = holes;\n return hierarchy;\n }\n }, {\n key: \"_updateGeojson\",\n value: function _updateGeojson(data, x, y) {\n if (!this._loaded) {\n return;\n }\n var width = Math.abs(this.bbox[0] - this.bbox[2]);\n var height = Math.abs(this.bbox[1] - this.bbox[3]);\n if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(data[0]) === 'object') {\n for (var i = 0; i < data.length; i++) {\n this._updateGeojson(data[i], x, y);\n }\n } else {\n for (var _i11 = 0; _i11 < data.length; _i11 += 2) {\n data[_i11] = data[_i11] + data[_i11] / (width / 2) * x;\n }\n for (var _i12 = 1; _i12 < data.length; _i12 += 2) {\n data[_i12] = data[_i12] - data[_i12] / (height / 2) * y;\n }\n }\n }\n }, {\n key: \"_update\",\n value: function _update() {\n var _this11 = this;\n if (!this._loaded) {\n return;\n }\n var point = turf.point([this.position.lng, this.position.lat]);\n var options = {\n units: 'kilometers'\n };\n var interimBbox = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.bbox);\n var width = Math.abs(interimBbox[2] - interimBbox[0]);\n var height = Math.abs(interimBbox[3] - interimBbox[1]);\n var x = width / 2 * this.options.scale.x / 100 - width / 2;\n var y = height / 2 * -this.options.scale.y / 100 + height / 2;\n interimBbox[0] = interimBbox[0] - x;\n interimBbox[1] = interimBbox[1] + y;\n interimBbox[2] = interimBbox[2] + x;\n interimBbox[3] = interimBbox[3] - y;\n var interim;\n if (interimBbox[0] > interimBbox[2]) {\n interim = interimBbox[0];\n interimBbox[0] = interimBbox[2];\n interimBbox[2] = interim;\n }\n if (interimBbox[1] > interimBbox[3]) {\n interim = interimBbox[1];\n interimBbox[1] = interimBbox[3];\n interimBbox[3] = interim;\n }\n var hierarchys = [];\n var geojson = JSON.parse(JSON.stringify(this.geojson));\n var _recursion = function recursion(data) {\n for (var i = 0; i < data.length; i++) {\n if (typeof data[i] === 'number') {\n if (_this11.options.flipe.x && i === 1) {\n data[i] = -data[i];\n }\n if (_this11.options.flipe.y && i === 0) {\n data[i] = -data[i];\n }\n } else {\n _recursion(data[i]);\n }\n }\n };\n for (var i = 0; i < geojson.features.length; i++) {\n _recursion(geojson.features[i].geometry.coordinates);\n }\n geojson.features.forEach(function (item) {\n var array = [];\n var feature = JSON.parse(JSON.stringify(item));\n _this11._updateGeojson(feature.geometry.coordinates, x, y);\n feature = turf.transformRotate(feature, _this11.angle, {\n pivot: [0, 0]\n });\n var directionDistance = [];\n if (feature.geometry.type === 'MultiPolygon') {\n for (var _i13 = 0; _i13 < feature.geometry.coordinates.length; _i13++) {\n var _array3 = [];\n for (var m = 0; m < feature.geometry.coordinates[_i13].length; m++) {\n var array2 = [];\n for (var n = 0; n < feature.geometry.coordinates[_i13][m].length; n++) {\n var point1 = turf.point([0, feature.geometry.coordinates[_i13][m][n][1]]);\n var point2 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(feature.geometry.coordinates[_i13][m][n]));\n var distance = turf.distance(point1, point2, {\n units: 'kilometers'\n });\n var angle2 = turf.rhumbBearing(point1, point2);\n array2.push({\n origin: feature.geometry.coordinates[_i13][m][n],\n distance: distance,\n angle: angle2\n });\n }\n _array3.push(array2);\n }\n directionDistance.push(_array3);\n }\n } else {\n for (var _i14 = 0; _i14 < feature.geometry.coordinates.length; _i14++) {\n var _array4 = [];\n for (var _m2 = 0; _m2 < feature.geometry.coordinates[_i14].length; _m2++) {\n var _array5 = [];\n var _point4 = turf.point([0, feature.geometry.coordinates[_i14][_m2][1]]);\n var _point5 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(feature.geometry.coordinates[_i14][_m2]));\n var _distance2 = turf.distance(_point4, _point5, {\n units: 'kilometers'\n });\n var _angle3 = turf.rhumbBearing(_point4, _point5);\n _array4.push({\n origin: feature.geometry.coordinates[_i14][_m2],\n distance: _distance2,\n angle: _angle3\n });\n }\n directionDistance.push(_array4);\n }\n }\n feature.properties.directionDistance = directionDistance;\n\n // this.bbox = [...interimBbox]\n\n var w = 3.5 * _this11.scale.x;\n var h = 3.5 * _this11.scale.y;\n var wh = Math.sqrt(Math.pow(w / 2, 2) + Math.pow(h / 2, 2));\n var angle = Math.atan(w / 2 / (h / 2)) * (180 / Math.PI);\n if (isNaN(angle)) {\n angle = 0;\n }\n var controlPoints = [];\n controlPoints[0] = turf.destination(point, h / 2 * 1.5, 0 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[1] = turf.destination(point, wh, 180 + angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[2] = turf.destination(point, h / 2, 180 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[3] = turf.destination(point, wh, 180 - angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[4] = turf.destination(point, w / 2, 270 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[5] = [_this11.position.lng, _this11.position.lat];\n controlPoints[6] = turf.destination(point, w / 2, 90 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[7] = turf.destination(point, wh, 360 - angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[8] = turf.destination(point, h / 2, 0 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[9] = turf.destination(point, wh, 0 + angle + _this11.options.angle, options).geometry.coordinates;\n var points = turf.points(controlPoints);\n controlPoints = [];\n for (var _i15 = 0; _i15 < points.features.length; _i15++) {\n controlPoints.push(points.features[_i15].geometry.coordinates);\n }\n _this11.controlPoints = controlPoints;\n if (feature.geometry.type === 'MultiPolygon') {\n for (var _i16 = 0; _i16 < feature.geometry.coordinates.length; _i16++) {\n var hierarchy = _this11.getHierarchyPolygon(feature, _i16);\n array.push(hierarchy);\n }\n } else {\n var _hierarchy2 = _this11.getHierarchyPolygon(feature);\n array.push(_hierarchy2);\n }\n hierarchys.push(array);\n });\n this.hierarchys = [].concat(hierarchys);\n if (!this.entity) {\n return;\n }\n if (this._DialogObject || this._isdrag) {\n var k = 0;\n var _loop8 = function _loop8(_i17) {\n var _loop9 = function _loop9(m) {\n if (_this11.entity.values[k].polygon.hierarchy.isConstant) {\n _this11.entity.values[k].polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var hierarchy = _this11.hierarchys[_i17][m];\n var holes = [];\n for (var n = 0; n < hierarchy.holes.length; n++) {\n holes.push({\n positions: hierarchy.holes[n]\n });\n }\n return {\n positions: hierarchy.positions,\n holes: holes\n };\n }, false);\n }\n k++;\n };\n for (var m = 0; m < _this11.hierarchys[_i17].length; m++) {\n _loop9(m);\n }\n };\n for (var _i17 = 0; _i17 < this.hierarchys.length; _i17++) {\n _loop8(_i17);\n }\n } else {\n var _k = 0;\n var _loop10 = function _loop10(_i18) {\n var _loop11 = function _loop11(m) {\n // if (!this.entity.values[k].polygon.hierarchy.isConstant) {\n _this11.entity.values[_k].polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var hierarchy = _this11.hierarchys[_i18][m];\n var holes = [];\n for (var n = 0; n < hierarchy.holes.length; n++) {\n holes.push({\n positions: hierarchy.holes[n]\n });\n }\n return {\n positions: hierarchy.positions,\n holes: holes\n };\n }, !_this11.ismove);\n // }\n _k++;\n };\n for (var m = 0; m < _this11.hierarchys[_i18].length; m++) {\n _loop11(m);\n }\n };\n for (var _i18 = 0; _i18 < this.hierarchys.length; _i18++) {\n _loop10(_i18);\n }\n }\n if (this.textObject && this.textObject.geojson) {\n var textHierarchys = [];\n var textGeojson = JSON.parse(JSON.stringify(this.textObject.geojson));\n var _recursion2 = function recursion2(data) {\n for (var _i19 = 0; _i19 < data.length; _i19++) {\n if (typeof data[_i19] === 'number') {\n if (_this11.textObject.flipe.x && _i19 === 1) {\n data[_i19] = -data[_i19];\n }\n if (_this11.textObject.flipe.y && _i19 === 0) {\n data[_i19] = -data[_i19];\n }\n } else {\n _recursion2(data[_i19]);\n }\n }\n };\n for (var _i20 = 0; _i20 < textGeojson.features.length; _i20++) {\n _recursion(textGeojson.features[_i20].geometry.coordinates);\n }\n textGeojson.features.forEach(function (item) {\n var array = [];\n var feature = JSON.parse(JSON.stringify(item));\n _this11._updateGeojson(feature.geometry.coordinates, x, y);\n feature = turf.transformRotate(feature, _this11.angle, {\n pivot: [0, 0]\n });\n var directionDistance = [];\n if (feature.geometry.type === 'MultiPolygon') {\n for (var _i21 = 0; _i21 < feature.geometry.coordinates.length; _i21++) {\n var _array6 = [];\n for (var m = 0; m < feature.geometry.coordinates[_i21].length; m++) {\n var array2 = [];\n for (var n = 0; n < feature.geometry.coordinates[_i21][m].length; n++) {\n var point1 = turf.point([0, feature.geometry.coordinates[_i21][m][n][1]]);\n var point2 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(feature.geometry.coordinates[_i21][m][n]));\n var distance = turf.distance(point1, point2, {\n units: 'kilometers'\n });\n var angle2 = turf.rhumbBearing(point1, point2);\n array2.push({\n origin: feature.geometry.coordinates[_i21][m][n],\n distance: distance,\n angle: angle2\n });\n }\n _array6.push(array2);\n }\n directionDistance.push(_array6);\n }\n } else {\n for (var _i22 = 0; _i22 < feature.geometry.coordinates.length; _i22++) {\n var _array7 = [];\n for (var _m3 = 0; _m3 < feature.geometry.coordinates[_i22].length; _m3++) {\n var _array8 = [];\n var _point6 = turf.point([0, feature.geometry.coordinates[_i22][_m3][1]]);\n var _point7 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(feature.geometry.coordinates[_i22][_m3]));\n var _distance3 = turf.distance(_point6, _point7, {\n units: 'kilometers'\n });\n var _angle4 = turf.rhumbBearing(_point6, _point7);\n _array7.push({\n origin: feature.geometry.coordinates[_i22][_m3],\n distance: _distance3,\n angle: _angle4\n });\n }\n directionDistance.push(_array7);\n }\n }\n feature.properties.directionDistance = directionDistance;\n\n // this.bbox = [...interimBbox]\n\n var w = 3.5 * _this11.scale.x;\n var h = 3.5 * _this11.scale.y;\n var wh = Math.sqrt(Math.pow(w / 2, 2) + Math.pow(h / 2, 2));\n var angle = Math.atan(w / 2 / (h / 2)) * (180 / Math.PI);\n if (isNaN(angle)) {\n angle = 0;\n }\n var controlPoints = [];\n controlPoints[0] = turf.destination(point, h / 2 * 1.5, 0 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[1] = turf.destination(point, wh, 180 + angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[2] = turf.destination(point, h / 2, 180 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[3] = turf.destination(point, wh, 180 - angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[4] = turf.destination(point, w / 2, 270 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[5] = [_this11.position.lng, _this11.position.lat];\n controlPoints[6] = turf.destination(point, w / 2, 90 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[7] = turf.destination(point, wh, 360 - angle + _this11.options.angle, options).geometry.coordinates;\n controlPoints[8] = turf.destination(point, h / 2, 0 + _this11.options.angle, options).geometry.coordinates;\n controlPoints[9] = turf.destination(point, wh, 0 + angle + _this11.options.angle, options).geometry.coordinates;\n var points = turf.points(controlPoints);\n controlPoints = [];\n for (var _i23 = 0; _i23 < points.features.length; _i23++) {\n controlPoints.push(points.features[_i23].geometry.coordinates);\n }\n _this11.controlPoints = controlPoints;\n if (feature.geometry.type === 'MultiPolygon') {\n for (var _i24 = 0; _i24 < feature.geometry.coordinates.length; _i24++) {\n var hierarchy = _this11.getHierarchyPolygon(feature, _i24);\n array.push(hierarchy);\n }\n } else {\n var _hierarchy3 = _this11.getHierarchyPolygon(feature);\n array.push(_hierarchy3);\n }\n textHierarchys.push(array);\n });\n this.textObject.hierarchys = [].concat(textHierarchys);\n\n // if (this._DialogObject || this._isdrag) {\n // let k = 0\n // for (let i = 0; i < this.textObject.hierarchys.length; i++) {\n // for (let m = 0; m < this.textObject.hierarchys[i].length; m++) {\n // if (this.entity.values[k].polygon.hierarchy.isConstant) {\n // this.entity.values[k].polygon.hierarchy = new Cesium.CallbackProperty(() => {\n // let hierarchy = this.textObject.hierarchys[i][m]\n // let holes = []\n // for (let n = 0; n < hierarchy.holes.length; n++) {\n // holes.push({\n // positions: hierarchy.holes[n]\n // })\n // }\n // return {\n // positions: hierarchy.positions,\n // holes: holes\n // }\n // }, false)\n // }\n // k++\n // }\n // }\n // }\n // else {\n // let k = 0\n // for (let i = 0; i < this.textObject.hierarchys.length; i++) {\n // for (let m = 0; m < this.textObject.hierarchys[i].length; m++) {\n // // if (!this.entity.values[k].polygon.hierarchy.isConstant) {\n // this.entity.values[k].polygon.hierarchy = new Cesium.CallbackProperty(() => {\n // let hierarchy = this.textObject.hierarchys[i][m]\n // let holes = []\n // for (let n = 0; n < hierarchy.holes.length; n++) {\n // holes.push({\n // positions: hierarchy.holes[n]\n // })\n // }\n // return {\n // positions: hierarchy.positions,\n // holes: holes\n // }\n // }, !this.ismove)\n // // }\n // k++\n // }\n // }\n // }\n }\n }\n }, {\n key: \"textPosPick\",\n value: function textPosPick() {\n var _this12 = this;\n var Draw = new _Draw_drawPoint_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk);\n Draw.start(/*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee5(a, position) {\n var point1, point2, distance, angle;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee5$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n point1 = turf.point([_this12.position.lng, _this12.position.lat]);\n point2 = turf.point([position.lng, position.lat]);\n distance = turf.distance(point1, point2, {\n units: 'kilometers'\n });\n angle = turf.rhumbBearing(point1, point2);\n _this12._textToCenter = {\n distance: distance,\n angle: angle\n };\n _this12.options.text.position = position;\n if (_this12.text) {\n _this12.text.position = [position.lng, position.lat, position.alt];\n } else {\n GroundSvg.createText(_this12);\n }\n case 7:\n case \"end\":\n return _context7.stop();\n }\n }, _callee5);\n }));\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n }, {\n key: \"load\",\n value: function load(callback) {\n if (this._loaded) {\n callback();\n } else {\n this._loadEvent = callback;\n }\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee6() {\n var i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee6$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n this._worker.onmessage = function (event) {};\n _context8.next = 3;\n return this.sdk.removeIncetance(this.options.id);\n case 3:\n if (this.entity) {\n _context8.next = 5;\n break;\n }\n return _context8.abrupt(\"return\");\n case 5:\n this.drag(false);\n if (!(!this.sdk || !this.sdk.viewer)) {\n _context8.next = 8;\n break;\n }\n return _context8.abrupt(\"return\");\n case 8:\n this.sdk.viewer.entities.remove(this.entity);\n this.text && this.text.remove();\n for (i = this.entity.values.length; i >= 0; i--) {\n this.sdk.viewer.entities.remove(this.entity.values[i]);\n }\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context8.next = 14;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n case 14:\n case \"end\":\n return _context8.stop();\n }\n }, _callee6, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"_addLink\",\n value: function _addLink() {\n if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '';\n this.attributeLink = this.options.attribute.link.content;\n } else {\n this.Dialog.clickAddLink && this.Dialog.clickAddLink();\n }\n }\n }, {\n key: \"addAttributeLink\",\n value: function addAttributeLink(link) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.attributeLink = this.options.attribute.link.content;\n }\n\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this13 = this;\n // var ue = UE.getEditor('app');\n _Element_richText__WEBPACK_IMPORTED_MODULE_17__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_17__[\"default\"].primaryCallBack = function (content) {\n _this13.options.richTextContent = content;\n };\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n if (v) {\n this.ismove = true;\n var position = {};\n position.lng = v.position.lng;\n position.lat = v.position.lat;\n this.position = position;\n } else {\n this.ismove = false;\n }\n this._update();\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee7() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n array,\n i,\n height,\n cartesian,\n BoundingSphere,\n _args9 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee7$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n options = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {};\n if (!this._error) {\n _context9.next = 3;\n break;\n }\n return _context9.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context9.next = 24;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = _objectSpread({}, this.options.position); // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context9.next = 17;\n break;\n }\n _context9.next = 16;\n return this.getClampToHeight(position);\n case 16:\n position.alt = _context9.sent;\n case 17:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context9.next = 37;\n break;\n case 24:\n array = [];\n i = 0;\n case 26:\n if (!(i < this.controlPoints.length)) {\n _context9.next = 35;\n break;\n }\n _context9.next = 29;\n return this.getClampToHeight({\n lng: this.controlPoints[i][0],\n lat: this.controlPoints[i][1]\n });\n case 29:\n height = _context9.sent;\n cartesian = Cesium.Cartesian3.fromDegrees(this.controlPoints[i][0], this.controlPoints[i][1], height);\n array.push(cartesian.x, cartesian.y, cartesian.z);\n case 32:\n i++;\n _context9.next = 26;\n break;\n case 35:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(array);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 37:\n case \"end\":\n return _context9.stop();\n }\n }, _callee7, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }], [{\n key: \"createText\",\n value: function () {\n var _createText = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee8(that) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee8$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n if (!that.options.text.position) {\n _context10.next = 10;\n break;\n }\n if (!that.options.text.position.alt) {\n _context10.next = 5;\n break;\n }\n height = that.options.text.position.alt;\n _context10.next = 8;\n break;\n case 5:\n _context10.next = 7;\n return that.getClampToHeight({\n lng: that.options.text.position.lng,\n lat: that.options.text.position.lat\n });\n case 7:\n height = _context10.sent;\n case 8:\n that.text = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({\n id: that.options.id,\n show: that.options.show ? that.options.text.show ? that.options.text.show : false : false,\n position: [that.options.text.position.lng, that.options.text.position.lat, height],\n text: that.options.text.value,\n fontSize: that.options.text.fontSize,\n color: that.options.text.color,\n pixelOffset: that.options.text.fontSize,\n backgroundColor: that.options.text.backgroundColor,\n lineColor: '#ffffff00',\n lineWidth: 0,\n scaleByDistance: that.options.text.scaleByDistance\n }, \"backgroundColor\", ['#ffffff00', '#ffffff00']), \"near\", that.options.text.near), \"far\", that.options.text.far));\n that.text.entity.billboard.verticalOrigin = Cesium.VerticalOrigin.CENTER;\n // that.text.entity.billboard.horizontalOrigin = Cesium.HorizontalOrigin.LEFT\n case 10:\n case \"end\":\n return _context10.stop();\n }\n }, _callee8);\n }));\n function createText(_x6) {\n return _createText.apply(this, arguments);\n }\n return createText;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_22__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (GroundSvg);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvR3JvdW5kU3ZnL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0dyb3VuZFN2Zy9pbmRleC5qcz9hODdkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgRHJhd1BvaW50IGZyb20gJy4uLy4uLy4uL0RyYXcvZHJhd1BvaW50LmpzJ1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSAnLi4vLi4vRWxlbWVudC9yaWNoVGV4dCdcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZGF0YWxpc3QnXHJcbmltcG9ydCB7IEZvbnRMb2FkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvM3JkcGFydHkvdGhyZWUvanNtL2xvYWRlcnMvRm9udExvYWRlci5qcyc7XHJcbmltcG9ydCB7IFRleHRHZW9tZXRyeSB9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy8zcmRwYXJ0eS90aHJlZS9qc20vZ2VvbWV0cmllcy9UZXh0R2VvbWV0cnkuanMnO1xyXG5pbXBvcnQgKiBhcyB2YXJpYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvM3JkcGFydHkvdGhyZWUvZm9udHMvRlpab25nWWktTTA1U19yZWd1bGFyLnR5cGVmYWNlLmpzb24nXHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcblxyXG5jbGFzcyBHcm91bmRTdmcgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOi0tOWcsHN2Z1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYW5nbGU9MCB7bnVtYmVyfSDml4vovazop5LluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY2FsZSB7b2JqZWN0fSDmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY2FsZS54PTEge251bWJlcn0geOi9tOavlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNjYWxlLnk9MSB7bnVtYmVyfSB56L205q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudXJsIHtzdHJpbmd9IOi1hOa6kOWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmZsaXBlIHtvYmplY3R9IOe/u+i9rFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmZsaXBlLng9ZmFsc2Uge2Jvb2xlYW59IOe7lVjovbTnv7vovaxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5mbGlwZS55PWZhbHNlIHtib29sZWFufSDnu5VZ6L2057+76L2sXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbiDkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yIHtzdHJpbmd9IOminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQge29iamVjdH0g5paH5a2XXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudGV4dC5zaG93PXRydWUge2Jvb2xlYW59IOaWh+Wtl1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQucG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudGV4dC5jb2xvcj0jZmZmZmZmIHtzdHJpbmd9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy50ZXh0Lm5lYXI9MjAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5Hot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy50ZXh0LmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogKi9cclxuICAvLyAjbG9hZEV2ZW50ID0gdm9pZCAwXHJcbiAgLy8gI2xvYWRlZCA9IGZhbHNlXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIGxldCBqc0NvZGUgPSBgXHJcbiAgICBpbXBvcnRTY3JpcHRzKCcke3RoaXMuZ2V0U291cmNlUm9vdFBhdGgoKX0vM3JkcGFydHkvdHVyZi5taW4uanMnKTtcclxuICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIGxldCBmZWF0dXJlcyA9IFtdXHJcbiAgICAgIGV2YWwoZS5kYXRhLmNvZGUpO1xyXG4gICAgICBzZWxmLnBvc3RNZXNzYWdlKGZlYXR1cmVzKTtcclxuICAgIH0sIGZhbHNlKTtcclxuICAgIGA7XHJcbiAgICBsZXQgZGF0YVVyaSA9ICdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoanNDb2RlKTtcclxuICAgIHRoaXMuX3dvcmtlciA9IG5ldyBXb3JrZXIoZGF0YVVyaSk7XHJcbiAgICB0aGlzLm9wdGlvbnMuYW5nbGUgPSB0aGlzLm9wdGlvbnMuYW5nbGUgfHwgMFxyXG5cclxuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzbW92ZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuX2xvYWRFdmVudCA9IHZvaWQgMFxyXG4gICAgdGhpcy5fbG9hZGVkID0gZmFsc2VcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA+IDgzLjUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IDgzLjVcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IDwgLTgzLjUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IC04My41XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IG9wdGlvbnMuc2NhbGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZS54ID0gKHRoaXMub3B0aW9ucy5zY2FsZS54IHx8IHRoaXMub3B0aW9ucy5zY2FsZS54ID09PSAwKSA/IHRoaXMub3B0aW9ucy5zY2FsZS54IDogMVxyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlLnkgPSAodGhpcy5vcHRpb25zLnNjYWxlLnkgfHwgdGhpcy5vcHRpb25zLnNjYWxlLnkgPT09IDApID8gdGhpcy5vcHRpb25zLnNjYWxlLnkgOiAxXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLmZsaXBlID0gb3B0aW9ucy5mbGlwZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmZsaXBlLnggPSB0aGlzLm9wdGlvbnMuZmxpcGUueCB8fCBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmZsaXBlLnkgPSB0aGlzLm9wdGlvbnMuZmxpcGUueSB8fCBmYWxzZVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSA9IG9wdGlvbnMuYXR0cmlidXRlVHlwZSB8fCAncmljaFRleHQnXHJcblxyXG4gICAgb3B0aW9ucy50ZXh0ID0gb3B0aW9ucy50ZXh0IHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHtcclxuICAgICAgdmFsdWU6IG9wdGlvbnMudGV4dC52YWx1ZSB8fCAnJyxcclxuICAgICAgc2hvdzogKG9wdGlvbnMudGV4dC5zaG93IHx8IG9wdGlvbnMudGV4dC5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnRleHQuc2hvdyA6IHRydWUsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLnRleHQucG9zaXRpb24sXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy50ZXh0LmZvbnRTaXplIHx8IG9wdGlvbnMudGV4dC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLnRleHQuZm9udFNpemUgOiAyMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMudGV4dC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy50ZXh0LnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMudGV4dC5uZWFyIHx8IG9wdGlvbnMudGV4dC5uZWFyID09PSAwKSA/IG9wdGlvbnMudGV4dC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy50ZXh0LmZhciB8fCBvcHRpb25zLnRleHQuZmFyID09PSAwKSA/IG9wdGlvbnMudGV4dC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy50ZXh0LnBvc2l0aW9uKSB7XHJcbiAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XSlcclxuICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoW3RoaXMub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnRleHQucG9zaXRpb24ubGF0XSlcclxuICAgICAgbGV0IGRpc3RhbmNlID0gdHVyZi5kaXN0YW5jZShwb2ludDEsIHBvaW50MiwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgYW5nbGUgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDEsIHBvaW50Mik7XHJcbiAgICAgIHRoaXMuX3RleHRUb0NlbnRlciA9IHtcclxuICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgYW5nbGU6IGFuZ2xlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5oaWVyYXJjaHlzID0gW11cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5faXNkcmFnID0gZmFsc2VcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG5cclxuICAgIGlmICh0aGlzLnNkay5lbnRpdHlNYXAuZ2V0KHRoaXMub3B0aW9ucy5pZCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2VudGl0eUFycmF5ID0gW11cclxuXHJcbiAgICB0aGlzLmluaXQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ0dyb3VuZFN2ZydcclxuICB9XHJcblxyXG4gIGdldCBhdHRyaWJ1dGVTZWxlY3QoKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+WvjOaWh+acrCcsXHJcbiAgICAgICAgdmFsdWU6ICflr4zmlofmnKwnLFxyXG4gICAgICAgIGtleTogJ3JpY2hUZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ+mTvuaOpScsXHJcbiAgICAgICAgdmFsdWU6ICfpk77mjqUnLFxyXG4gICAgICAgIGtleTogJ2xpbmsnXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubmFtZVxyXG4gIH1cclxuICBzZXQgbmFtZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubmFtZSAmJiB0aGlzLl9lbG1zLm5hbWUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudGV4dCAmJiB0aGlzLm9wdGlvbnMudGV4dC5zaG93KSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGV4dCkge1xyXG4gICAgICAgICAgaWYgKCghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dC5zaG93ID0gdlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHN1cGVyLnNob3cgPSB2XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvblxyXG4gIH1cclxuXHJcbiAgc2V0IHBvc2l0aW9uKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHZcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID4gODMuNSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gODMuNVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPCAtODMuNSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gLTgzLjVcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0ZSgpXHJcblxyXG4gICAgaWYgKHRoaXMuX3RleHRUb0NlbnRlcikge1xyXG4gICAgICBsZXQgcG9pbnQgPSB0dXJmLnBvaW50KFt0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0XSlcclxuICAgICAgbGV0IHRhcmdldFBvaW50ID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgdGhpcy5fdGV4dFRvQ2VudGVyLmRpc3RhbmNlLCB0aGlzLl90ZXh0VG9DZW50ZXIuYW5nbGUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRhcmdldFBvaW50WzBdLCBsYXQ6IHRhcmdldFBvaW50WzFdIH0pLnRoZW4oKGhlaWdodCkgPT4ge1xyXG4gICAgICAgIGxldCB0ZXh0UG9zaXRpb24gPSBbdGFyZ2V0UG9pbnRbMF0sIHRhcmdldFBvaW50WzFdLCBoZWlnaHRdXHJcbiAgICAgICAgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQucG9zaXRpb24gPSB0ZXh0UG9zaXRpb24pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb2xvcikge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LnZhbHVlc1tpXS5wb2x5Z29uLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LnZhbHVlc1tpXS5wb2x5Z29uLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLmVudGl0eS52YWx1ZXNbaV0ucHJvcGVydGllcy5jb2xvci5fdmFsdWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICcnXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmNvbG9yW2ldID0gY29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhbmdsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYW5nbGVcclxuICB9XHJcblxyXG4gIHNldCBhbmdsZSh2KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh2LCBNYXRoLmNlaWwoTWF0aC5hYnModiAvIDM2MCkpLCAoTnVtYmVyKHYpICsgTnVtYmVyKHYpICogTWF0aC5jZWlsKE1hdGguYWJzKHYgLyAzNjApKSkgJSAzNjApXHJcbiAgICBsZXQgYW5nbGUgPSAoTnVtYmVyKHYpICsgMzYwKSAlIDM2MFxyXG4gICAgYW5nbGUgPSBwYXJzZUZsb2F0KGFuZ2xlLnRvRml4ZWQoMSkpXHJcbiAgICB0aGlzLm9wdGlvbnMuYW5nbGUgPSBhbmdsZVxyXG4gICAgaWYgKHYgPiAwICYmIGFuZ2xlID09PSAwKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hbmdsZSA9IDM2MFxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5hbmdsZSAmJiB0aGlzLl9lbG1zLmFuZ2xlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hbmdsZVxyXG4gICAgfSlcclxuICAgIHRoaXMuX3VwZGF0ZSgpXHJcbiAgfVxyXG5cclxuICBnZXQgc2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYWxlXHJcbiAgfVxyXG5cclxuICBzZXQgc2NhbGUoc2NhbGUpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZS54ID0gc2NhbGUueFxyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlLnkgPSBzY2FsZS55XHJcbiAgICBpZiAodGhpcy5fZWxtcykge1xyXG4gICAgICB0aGlzLl9lbG1zLnhSYW5nZSAmJiAodGhpcy5fZWxtcy54UmFuZ2UudmFsdWUgPSB0aGlzLm9wdGlvbnMuc2NhbGUueClcclxuICAgICAgdGhpcy5fZWxtcy55UmFuZ2UgJiYgKHRoaXMuX2VsbXMueVJhbmdlLnZhbHVlID0gdGhpcy5vcHRpb25zLnNjYWxlLnkpXHJcbiAgICAgIHRoaXMuX2VsbXMueElucHV0ICYmICh0aGlzLl9lbG1zLnhJbnB1dC52YWx1ZSA9IHRoaXMub3B0aW9ucy5zY2FsZS54KVxyXG4gICAgICB0aGlzLl9lbG1zLnlJbnB1dCAmJiAodGhpcy5fZWxtcy55SW5wdXQudmFsdWUgPSB0aGlzLm9wdGlvbnMuc2NhbGUueSlcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0ZSgpXHJcbiAgfVxyXG5cclxuICBnZXQgZmxpcGVZKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mbGlwZS55XHJcbiAgfVxyXG4gIHNldCBmbGlwZVkodikge1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZmxpcGUueSA9IHZcclxuICAgICAgdGhpcy5fdXBkYXRlKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBmbGlwZVgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZsaXBlLnhcclxuICB9XHJcbiAgc2V0IGZsaXBlWCh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5mbGlwZS54ID0gdlxyXG4gICAgICB0aGlzLl91cGRhdGUoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIuWPguaVsOW/hemhu+S4umJvb2xlYW5cIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0ZXh0VmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHQudmFsdWVcclxuICB9XHJcbiAgc2V0IHRleHRWYWx1ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dC52YWx1ZSA9IHZcclxuICAgIGlmICh0aGlzLnRleHQpIHtcclxuICAgICAgdGhpcy50ZXh0LnRleHQgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgR3JvdW5kU3ZnLmNyZWF0ZVRleHQodGhpcylcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMudGV4dFZhbHVlICYmIHRoaXMuX2VsbXMudGV4dFZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgdGV4dFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHQuc2hvd1xyXG4gIH1cclxuICBzZXQgdGV4dFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnRleHQuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cpIHtcclxuICAgICAgaWYgKCghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQuc2hvdyA9IHYpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQuc2hvdyA9IGZhbHNlKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudGV4dC5wb3NpdGlvbikge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmFsdCkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHQgJiYgKHRoaXMudGV4dC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMudGV4dC5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnRleHQucG9zaXRpb24uYWx0XSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRoaXMub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMudGV4dC5wb3NpdGlvbi5sYXQgfSkudGhlbigoaGVpZ2h0KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLnRleHQucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMudGV4dC5wb3NpdGlvbi5sYXQsIGhlaWdodF0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRleHQgJiYgKHRoaXMudGV4dC5zaG93ID0gZmFsc2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnRleHRTaG93ICYmIHRoaXMuX2VsbXMudGV4dFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRleHRDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudGV4dC5jb2xvclxyXG4gIH1cclxuICBzZXQgdGV4dENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50ZXh0LmNvbG9yID0gdlxyXG4gICAgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQuY29sb3IgPSB2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMudGV4dENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMudGV4dENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgdGV4dENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMudGV4dENvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy50ZXh0Q29sb3JbaV0gPSB0ZXh0Q29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0ZXh0Rm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHQuZm9udFNpemVcclxuICB9XHJcbiAgc2V0IHRleHRGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dC5mb250U2l6ZSA9IHZcclxuICAgIGlmICh0aGlzLnRleHQpIHtcclxuICAgICAgdGhpcy50ZXh0LmZvbnRTaXplID0gdlxyXG4gICAgICB0aGlzLnRleHQucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnRleHRGb250U2l6ZSAmJiB0aGlzLl9lbG1zLnRleHRGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRleHRTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHQuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCB0ZXh0U2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50ZXh0LnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMudGV4dCAmJiAodGhpcy50ZXh0LnNjYWxlQnlEaXN0YW5jZSA9IHYpXHJcbiAgICB0aGlzLl9lbG1zLnRleHRTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy50ZXh0U2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCB0ZXh0TmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudGV4dC5uZWFyXHJcbiAgfVxyXG4gIHNldCB0ZXh0TmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy50ZXh0RmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLnRleHRGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0Lm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLnRleHQgJiYgKHRoaXMudGV4dC5uZWFyID0gbmVhcilcclxuICAgIHRoaXMuX2VsbXMudGV4dE5lYXIgJiYgdGhpcy5fZWxtcy50ZXh0TmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRleHRGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHQuZmFyXHJcbiAgfVxyXG4gIHNldCB0ZXh0RmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy50ZXh0TmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLnRleHROZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dC5mYXIgPSBmYXJcclxuICAgIHRoaXMudGV4dCAmJiAodGhpcy50ZXh0LmZhciA9IGZhcilcclxuICAgIHRoaXMuX2VsbXMudGV4dEZhciAmJiB0aGlzLl9lbG1zLnRleHRGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVUeXBlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5hdHRyaWJ1dGVUeXBlICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuYXR0cmlidXRlVHlwZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgICBsZXQgYXR0cmlidXRlQ29udGVudCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICdhdHRyaWJ1dGUtY29udGVudCdcclxuICAgIClcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlQ29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXR0cmlidXRlQ29udGVudFtpXS5jbGFzc05hbWUuaW5kZXhPZignYXR0cmlidXRlLWNvbnRlbnQtJyArIHYpID4gLTFcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXR0cmlidXRlQ29udGVudFtpXS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF0dHJpYnV0ZUNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlTGluaygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gIH1cclxuXHJcbiAgc2V0IGF0dHJpYnV0ZUxpbmsodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB2XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLl9EaWFsb2dPYmplY3QgfHxcclxuICAgICAgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fFxyXG4gICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgfHxcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAnYXR0cmlidXRlLWNvbnRlbnQtbGluaydcclxuICAgICAgKS5sZW5ndGggPT0gMFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKVsxXVxyXG4gICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUnKVswXVxyXG4gICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgdGFibGVDb250ZW50LmlubmVySFRNTCA9ICcnXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdHIgPVxyXG4gICAgICAgIGBcclxuICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS5uYW1lICtcclxuICAgICAgICBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS51cmwgK1xyXG4gICAgICAgIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibGlua0VkaXRcIj7nvJbovpE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImxpbmtEZWxldGVcIj7liKDpmaQ8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5gXHJcbiAgICAgIGxldCB0ckVsbSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHRyKVxyXG4gICAgICB0YWJsZUNvbnRlbnQuYXBwZW5kQ2hpbGQodHJFbG0pXHJcbiAgICB9XHJcbiAgICBsZXQgaXRlbSA9IHRhYmxlQ29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICBsZXQgZnVuID0ge1xyXG4gICAgICBsaW5rRWRpdDogYXN5bmMgaW5kZXggPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1saW5rJylbMV1cclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gaXRlbVtpXS5vZmZzZXRIZWlnaHRcclxuICAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dCBsaW5rLWVkaXRcIiB0eXBlPVwidGV4dFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29uZmlybUVkaXRcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjYW5jZWxFZGl0XCI+5Y+W5raIPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICAgICAgbGV0IHRleHRhcmVhRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rLWVkaXQnKVswXVxyXG4gICAgICAgICAgICB0ZXh0YXJlYUVsbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgLSAxMCArICdweCdcclxuICAgICAgICAgICAgbGV0IHRkID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgICAgICAgICAgIHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICAgJ2lucHV0J1xyXG4gICAgICAgICAgICApWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaW5kZXhdLm5hbWVcclxuICAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgICAnaW5wdXQnXHJcbiAgICAgICAgICAgIClbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpbmRleF0udXJsXHJcbiAgICAgICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgIGlmICghYnRuW25dIHx8ICFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5bbS52YWx1ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXShcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBsaW5rRGVsZXRlOiBpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5zcGxpY2UoaSwgMSlcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCAnJylcclxuICAgICAgICBsZXQgdXJsID0gdmFsdWUudXJsICYmIHZhbHVlLnVybC5yZXBsYWNlKC9cXHMvZywgJycpXHJcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHdpbmRvdy5FTEVNRU5UICYmXHJcbiAgICAgICAgICAgIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DmiJbpk77mjqXkuI3og73kuLrnqbrvvIEnLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICB9LFxyXG4gICAgICBjYW5jZWxFZGl0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgfSxcclxuICAgICAgZmlsZVNlbGVjdDogKHZhbHVlLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGZpbGVFbG0gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZpbGUtc2VsZWN0JylbMF1cclxuICAgICAgICBmaWxlRWxtLmNsaWNrKClcclxuICAgICAgICBmaWxlRWxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZpbGVTZWxlY3QpXHJcbiAgICAgICAgZmlsZUVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsZVNlbGVjdCA9IGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIGxldCB0ZCA9IGl0ZW1bXHJcbiAgICAgICAgICBldmVudC50YXJnZXQuZ2V0QXR0cmlidXRlKCdpbmRleCcpXHJcbiAgICAgICAgXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgIGlmICghYnRuW25dIHx8ICFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5bbS52YWx1ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXShpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5yZXBsYWNlSG9zdCh0aGlzLm9wdGlvbnMudXJsLCB0aGlzLm9wdGlvbnMuaG9zdClcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB0aGlzLmhpZXJhcmNoeXMgPSBbXVxyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIGxldCBnZW9tZXRyeUFycmF5ID0gW11cclxuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBTVkdMb2FkZXIoKTtcclxuICAgIGxvYWRlci5sb2FkKHVybCwgKGRhdGEpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBkYXRhLnhtbC5zdHlsZS53aWR0aCA9ICcwJ1xyXG4gICAgICBkYXRhLnhtbC5zdHlsZS5oZWlnaHQgPSAnMCdcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkYXRhLnhtbClcclxuICAgICAgZm9yIChjb25zdCBwYXRoIG9mIGRhdGEucGF0aHMpIHtcclxuICAgICAgICBjb25zdCBmaWxsQ29sb3IgPSBwYXRoLnVzZXJEYXRhLnN0eWxlLmZpbGw7XHJcbiAgICAgICAgbGV0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGF0aC51c2VyRGF0YS5ub2RlKVxyXG4gICAgICAgIGlmIChzdHlsZS5zdHJva2VXaWR0aCkge1xyXG4gICAgICAgICAgcGF0aC51c2VyRGF0YS5zdHlsZS5zdHJva2VXaWR0aCA9IE51bWJlcihzdHlsZS5zdHJva2VXaWR0aC5yZXBsYWNlKC9bYS16QS1aXS9nLCAnJykpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWxsQ29sb3IgIT09IHVuZGVmaW5lZCAmJiBmaWxsQ29sb3IgIT09ICdub25lJykge1xyXG4gICAgICAgICAgY29uc3Qgc2hhcGVzID0gU1ZHTG9hZGVyLmNyZWF0ZVNoYXBlcyhwYXRoKTtcclxuICAgICAgICAgIGZvciAoY29uc3Qgc2hhcGUgb2Ygc2hhcGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLlNoYXBlR2VvbWV0cnkoc2hhcGUpO1xyXG4gICAgICAgICAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnkpO1xyXG4gICAgICAgICAgICBnZW9tZXRyeUFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgIGdlb21ldHJ5OiBtZXNoLmdlb21ldHJ5LFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBmaWxsQ29sb3JcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBwYXRoLnVzZXJEYXRhLnN0eWxlLnN0cm9rZTtcclxuICAgICAgICBpZiAoc3Ryb2tlQ29sb3IgIT09IHVuZGVmaW5lZCAmJiBzdHJva2VDb2xvciAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1YlBhdGggb2YgcGF0aC5zdWJQYXRocykge1xyXG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IFNWR0xvYWRlci5wb2ludHNUb1N0cm9rZShzdWJQYXRoLmdldFBvaW50cygpLCBwYXRoLnVzZXJEYXRhLnN0eWxlKTtcclxuICAgICAgICAgICAgaWYgKGdlb21ldHJ5KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbWVzaCA9IG5ldyBUSFJFRS5NZXNoKGdlb21ldHJ5KTtcclxuICAgICAgICAgICAgICBnZW9tZXRyeUFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6IG1lc2guZ2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogc3Ryb2tlQ29sb3JcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGF0YS54bWwpXHJcblxyXG4gICAgICBsZXQgbWluID0gMFxyXG4gICAgICBsZXQgbWF4ID0gMFxyXG4gICAgICBsZXQgZ2VvanNvblxyXG4gICAgICBmb3IgKGxldCBrZXkgPSAwOyBrZXkgPCBnZW9tZXRyeUFycmF5Lmxlbmd0aDsga2V5KyspIHtcclxuICAgICAgICBsZXQgZ2VvbWV0cnkgPSBnZW9tZXRyeUFycmF5W2tleV0uZ2VvbWV0cnk7XHJcbiAgICAgICAgaWYgKCFnZW9tZXRyeSB8fCAhZ2VvbWV0cnkuYXR0cmlidXRlcyB8fCAhZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFycmF5ID0gZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheVxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobWluID4gYXJyYXlbaV0pIHtcclxuICAgICAgICAgICAgbWluID0gYXJyYXlbaV1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChtYXggPCBhcnJheVtpXSkge1xyXG4gICAgICAgICAgICBtYXggPSBhcnJheVtpXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBtaW4gPSBNYXRoLmFicyhtaW4pXHJcbiAgICAgIG1heCA9IE1hdGguYWJzKG1heClcclxuXHJcbiAgICAgIGlmIChtaW4gPiBtYXgpIHtcclxuICAgICAgICBtYXggPSBtaW5cclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF4MiA9IG1heFxyXG4gICAgICBtYXggPSBtYXggKiAoMTAgLyAzKSAqIDEwMFxyXG4gICAgICBsZXQgc2NhbGUgPSAoNDAwMCAvIG1heCkgLyA1XHJcbiAgICAgIG1heDIgPSBtYXgyICogc2NhbGVcclxuXHJcbiAgICAgIGZvciAobGV0IGtleSA9IDA7IGtleSA8IGdlb21ldHJ5QXJyYXkubGVuZ3RoOyBrZXkrKykge1xyXG4gICAgICAgIGdlb21ldHJ5QXJyYXlba2V5XS5nZW9tZXRyeS5zY2FsZShzY2FsZSwgc2NhbGUsIDEpXHJcbiAgICAgICAgZ2VvbWV0cnlBcnJheVtrZXldLmdlb21ldHJ5LnJvdGF0ZVgoVEhSRUUuTWF0aFV0aWxzLmRlZ1RvUmFkKDE4MCkpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBsZXQganNDb2RlID0gYFxyXG4gICAgICBsZXQgZ2VvbWV0cnlBcnJheSA9IGUuZGF0YS5vcHRpb25zLmdlb21ldHJ5QXJyYXlcclxuICAgICAgbGV0IG1heDIgPSBlLmRhdGEub3B0aW9ucy5tYXgyXHJcbiAgICAgIGZvciAobGV0IGtleSA9IDA7IGtleSA8IGdlb21ldHJ5QXJyYXkubGVuZ3RoOyBrZXkrKykge1xyXG4gICAgICAgIGxldCBmZWF0dXJlXHJcbiAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gW11cclxuICAgICAgICBsZXQgZ2VvbWV0cnkgPSBnZW9tZXRyeUFycmF5W2tleV0uZ2VvbWV0cnk7XHJcbiAgICAgICAgbGV0IGFycmF5ID0gZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheVxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgICAgICBsZXQgeCA9IGFycmF5W2ldIC0gKG1heDIgLyAyKVxyXG4gICAgICAgICAgbGV0IHkgPSBhcnJheVtpICsgMV0gKyAobWF4MiAvIDIpXHJcbiAgICAgICAgICBwb3NpdGlvbi5wdXNoKFt4LCB5LCBhcnJheVtpICsgMV1dKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ2VvbWV0cnkuaW5kZXggJiYgZ2VvbWV0cnkuaW5kZXguYXJyYXkpIHtcclxuICAgICAgICAgIGxldCBpbmRleCA9IGdlb21ldHJ5LmluZGV4LmFycmF5XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4Lmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKFtwb3NpdGlvbltpbmRleFtpXV0sIHBvc2l0aW9uW2luZGV4W2kgKyAxXV0sIHBvc2l0aW9uW2luZGV4W2kgKyAyXV1dKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb24ubGVuZ3RoOyBpICs9IDMpIHtcclxuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goW3Bvc2l0aW9uW2ldLCBwb3NpdGlvbltpICsgMV0sIHBvc2l0aW9uW2kgKyAyXV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHBvbHlnb25zID0gW11cclxuICAgICAgICAvLyDnu4TlkIjlpJrovrnlvaJcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24oW1tcclxuICAgICAgICAgICAgLi4ucG9zaXRpb25zW2ldLFxyXG4gICAgICAgICAgICBwb3NpdGlvbnNbaV1bMF1cclxuICAgICAgICAgIF1dKTtcclxuICAgICAgICAgIHBvbHlnb25zLnB1c2gocG9seWdvbilcclxuXHJcbiAgICAgICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgICAgICBmZWF0dXJlID0gdHVyZi51bmlvbihmZWF0dXJlLCBwb2x5Z29uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmZWF0dXJlID0gcG9seWdvblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuY29sb3IgPSBnZW9tZXRyeUFycmF5W2tleV0uY29sb3JcclxuICAgICAgICBmZWF0dXJlcy5wdXNoKGZlYXR1cmUpXHJcbiAgICAgIH1cclxuICAgICAgYFxyXG4gICAgICB0aGlzLl93b3JrZXIucG9zdE1lc3NhZ2UoeyBjb2RlOiBqc0NvZGUsIG9wdGlvbnM6IHsgZ2VvbWV0cnlBcnJheTogZ2VvbWV0cnlBcnJheSwgbWF4MjogbWF4MiB9IH0pO1xyXG5cclxuICAgICAgdGhpcy5fd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5zZGsudmlld2VyLmVudGl0aWVzKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gZXZlbnQuZGF0YVxyXG4gICAgICAgIGdlb2pzb24gPSB0dXJmLmZlYXR1cmVDb2xsZWN0aW9uKGZlYXR1cmVzKVxyXG5cclxuICAgICAgICB0aGlzLmdlb2pzb24gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGdlb2pzb24pKVxyXG5cclxuICAgICAgICAvLyDorqHnrpfovrnnlYzmoYZcclxuICAgICAgICBsZXQgYmJveCA9IHR1cmYuYmJveChnZW9qc29uKTtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmFicyhiYm94WzJdIC0gYmJveFswXSlcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5hYnMoYmJveFszXSAtIGJib3hbMV0pXHJcblxyXG4gICAgICAgIC8vIOiOt+WPluacgOWwj+ato+aWueW9olxyXG4gICAgICAgIGxldCBzcXVhcmUgPSB0dXJmLnNxdWFyZShiYm94KTtcclxuICAgICAgICAvLyDmjqfliLbngrnnlYzpmZBcclxuICAgICAgICBzcXVhcmVbMF0gPSBzcXVhcmVbMF0gKyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gKHdpZHRoIC8gNSlcclxuICAgICAgICBzcXVhcmVbMV0gPSBzcXVhcmVbMV0gKyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gKGhlaWdodCAvIDUpXHJcbiAgICAgICAgc3F1YXJlWzJdID0gc3F1YXJlWzJdICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyArICh3aWR0aCAvIDUpXHJcbiAgICAgICAgc3F1YXJlWzNdID0gc3F1YXJlWzNdICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIChoZWlnaHQgLyA1KVxyXG5cclxuICAgICAgICB0aGlzLmJib3ggPSBzcXVhcmVcclxuXHJcblxyXG4gICAgICAgIHRoaXMuZ2VvanNvbi5mZWF0dXJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICAgIGxldCBnZW9qc29uID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSlcclxuICAgICAgICAgIGdlb2pzb24ucHJvcGVydGllcy5kaXJlY3Rpb25EaXN0YW5jZSA9IFtdXHJcblxyXG4gICAgICAgICAgaWYgKGdlb2pzb24uZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnZW9qc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV0ubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcnJheTIgPSBbXVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBnZW9qc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFswLCBnZW9qc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dWzFdXSlcclxuICAgICAgICAgICAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoWy4uLmdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1bbl1dKVxyXG4gICAgICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmRpc3RhbmNlKHBvaW50MSwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBhbmdsZSA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50MSwgcG9pbnQyKTtcclxuICAgICAgICAgICAgICAgICAgYXJyYXkyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBnZW9qc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhcnJheS5wdXNoKGFycmF5MilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZ2VvanNvbi5wcm9wZXJ0aWVzLmRpcmVjdGlvbkRpc3RhbmNlLnB1c2goYXJyYXkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgZ2VvanNvbi5nZW9tZXRyeS5jb29yZGluYXRlc1tpXS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvaW50MSA9IHR1cmYucG9pbnQoWzAsIGdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1bMV1dKVxyXG4gICAgICAgICAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoWy4uLmdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1dKVxyXG4gICAgICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gdHVyZi5kaXN0YW5jZShwb2ludDEsIHBvaW50MiwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGFuZ2xlID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQxLCBwb2ludDIpO1xyXG4gICAgICAgICAgICAgICAgYXJyYXkucHVzaChcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogZ2VvanNvbi5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVttXSxcclxuICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZ2VvanNvbi5wcm9wZXJ0aWVzLmRpcmVjdGlvbkRpc3RhbmNlLnB1c2goYXJyYXkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoZ2VvanNvbi5nZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5nZXRIaWVyYXJjaHlQb2x5Z29uKGdlb2pzb24sIGkpXHJcbiAgICAgICAgICAgICAgYXJyYXkucHVzaChoaWVyYXJjaHkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5nZXRIaWVyYXJjaHlQb2x5Z29uKGdlb2pzb24pXHJcbiAgICAgICAgICAgIGFycmF5LnB1c2goaGllcmFyY2h5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5oaWVyYXJjaHlzLnB1c2goYXJyYXkpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkgPSBuZXcgQ2VzaXVtLkVudGl0eUNvbGxlY3Rpb24oKVxyXG5cclxuICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgbGV0IHBlclBvc2l0aW9uSGVpZ2h0ID0gZmFsc2VcclxuICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2Nlc2l1bS12aWV3ZXIgMmQnKSB7XHJcbiAgICAgICAgICBwZXJQb3NpdGlvbkhlaWdodCA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmhpZXJhcmNoeXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhpcy5oaWVyYXJjaHlzW2ldLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpZCA9IHRoaXMub3B0aW9ucy5pZCArIGAtJHtpfV8ke219fWBcclxuICAgICAgICAgICAgbGV0IG9sZEVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKGlkKVxyXG4gICAgICAgICAgICBpZiAob2xkRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShvbGRFbnRpdHkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWQgKyBgLSR7aX1fJHttfX1gLFxyXG4gICAgICAgICAgICAgIHNob3c6IHRoaXMub3B0aW9ucy5zaG93LFxyXG4gICAgICAgICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHRoaXMuaGllcmFyY2h5c1tpXVttXVxyXG4gICAgICAgICAgICAgICAgICBsZXQgaG9sZXMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGhpZXJhcmNoeS5ob2xlcy5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvbGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zOiBoaWVyYXJjaHkuaG9sZXNbbl1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zOiBoaWVyYXJjaHkucG9zaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGhvbGVzOiBob2xlc1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCB0cnVlKSxcclxuICAgICAgICAgICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiBwZXJQb3NpdGlvbkhlaWdodCxcclxuICAgICAgICAgICAgICAgIHpJbmRleDogdGhpcy5zZGsuX2VudGl0eVpJbmRleCxcclxuICAgICAgICAgICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yIHx8IHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLmNvbG9yXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0ucHJvcGVydGllcy5jb2xvcikge1xyXG4gICAgICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0ucHJvcGVydGllcy5jb2xvclxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9lbnRpdHlBcnJheS5wdXNoKGVudGl0eSlcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkuYWRkKGVudGl0eSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkRXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMuX2xvYWRFdmVudCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2NhbGUgPSB0aGlzLnNjYWxlXHJcbiAgICAgICAgR3JvdW5kU3ZnLmNyZWF0ZVRleHQodGhpcylcclxuICAgICAgICAvLyBHcm91bmRTdmcuaW5pdFRleHQodGhpcylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVUZXh0KHRoYXQpIHtcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMudGV4dC5wb3NpdGlvbikge1xyXG4gICAgICBsZXQgaGVpZ2h0XHJcbiAgICAgIGlmICh0aGF0Lm9wdGlvbnMudGV4dC5wb3NpdGlvbi5hbHQpIHtcclxuICAgICAgICBoZWlnaHQgPSB0aGF0Lm9wdGlvbnMudGV4dC5wb3NpdGlvbi5hbHRcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBoZWlnaHQgPSBhd2FpdCB0aGF0LmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRoYXQub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmxuZywgbGF0OiB0aGF0Lm9wdGlvbnMudGV4dC5wb3NpdGlvbi5sYXQgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGF0LnRleHQgPSBuZXcgTGFiZWxPYmplY3QodGhhdC5zZGssIHtcclxuICAgICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gKHRoYXQub3B0aW9ucy50ZXh0LnNob3cgPyB0aGF0Lm9wdGlvbnMudGV4dC5zaG93IDogZmFsc2UpIDogZmFsc2UsXHJcbiAgICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMudGV4dC5wb3NpdGlvbi5sbmcsIHRoYXQub3B0aW9ucy50ZXh0LnBvc2l0aW9uLmxhdCwgaGVpZ2h0XSxcclxuICAgICAgICB0ZXh0OiB0aGF0Lm9wdGlvbnMudGV4dC52YWx1ZSxcclxuICAgICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLnRleHQuZm9udFNpemUsXHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy50ZXh0LmNvbG9yLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiB0aGF0Lm9wdGlvbnMudGV4dC5mb250U2l6ZSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy50ZXh0LmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICBsaW5lQ29sb3I6ICcjZmZmZmZmMDAnLFxyXG4gICAgICAgIGxpbmVXaWR0aDogMCxcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy50ZXh0LnNjYWxlQnlEaXN0YW5jZSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFsnI2ZmZmZmZjAwJywgJyNmZmZmZmYwMCddLFxyXG4gICAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy50ZXh0Lm5lYXIsXHJcbiAgICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMudGV4dC5mYXIsXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQudGV4dC5lbnRpdHkuYmlsbGJvYXJkLnZlcnRpY2FsT3JpZ2luID0gQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkNFTlRFUlxyXG4gICAgICAvLyB0aGF0LnRleHQuZW50aXR5LmJpbGxib2FyZC5ob3Jpem9udGFsT3JpZ2luID0gQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uTEVGVFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIOe8lui+keahhlxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXR1cz1mYWxzZSDnirbmgIFcclxuICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgaWYgKCF0aGlzLl9sb2FkZWQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3JpZ2luYWxPcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICflhpvmoIflsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGV4dCAmJiAodGhpcy5vcHRpb25zLnRleHQucG9zaXRpb24gPSB7IGxuZzogdGhpcy50ZXh0LnBvc2l0aW9uWzBdLCBsYXQ6IHRoaXMudGV4dC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLnRleHQucG9zaXRpb25bMl0gfSlcclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgbGV0IGNkb3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgY2RvcHRpb25zLmhvc3QgPSAnJ1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayhjZG9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgICAgIHRoaXMuZHJhZyhmYWxzZSlcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAgICAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWRkRm9vdEVsbTogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0YWdOYW1lOiAnYnV0dG9uJyxcclxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZmxpcGUtb3Zlci15JyxcclxuICAgICAgICAgICAgaW5uZXJIVE1MOiAnWei9tOe/u+i9rCcsXHJcbiAgICAgICAgICAgIGV2ZW50OiBbXHJcbiAgICAgICAgICAgICAgJ2NsaWNrJyxcclxuICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsaXBlWSA9ICF0aGlzLmZsaXBlWVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGFnTmFtZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2ZsaXBlLW92ZXIteCcsXHJcbiAgICAgICAgICAgIGlubmVySFRNTDogJ1jovbTnv7vovawnLFxyXG4gICAgICAgICAgICBldmVudDogW1xyXG4gICAgICAgICAgICAgICdjbGljaycsXHJcbiAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mbGlwZVggPSAhdGhpcy5mbGlwZVhcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhZ05hbWU6ICdidXR0b24nLFxyXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdkcmFnJyxcclxuICAgICAgICAgICAgaW5uZXJIVE1MOiAn57yW6L6RJyxcclxuICAgICAgICAgICAgZXZlbnQ6IFtcclxuICAgICAgICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZyghdGhpcy5faXNkcmFnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBncm91bmQtc3ZnJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwodGhpcylcclxuICAgICAgYXdhaXQgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZVxyXG5cclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJydcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgdGV4dENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0ZXh0Q29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMudGV4dENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIHRoaXMuX0V2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gdGhpcy5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy50ZXh0Q29sb3IgPSBbdGV4dENvbG9yUGlja2VyXVxyXG5cclxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2RrICYmIHRoaXMuc2RrLnRhYkhpZGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNkay50YWJIaWRlKSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aGlzLnNkay50YWJIaWRlLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNkay50YWJIaWRlW21dID09PSAn5bGe5oCn5L+h5oGvJykge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWluZm8nKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdhdHRyaWJ1dGUtc2VsZWN0LWJveCdcclxuICAgICAgICApWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgJy5hdHRyaWJ1dGUtc2VsZWN0JylcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMClcclxuXHJcbiAgICAgIGxldCB4RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd4LXNjYWxlJylbMF1cclxuICAgICAgbGV0IHlFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ktc2NhbGUnKVswXVxyXG4gICAgICBsZXQgeFJhbmdlID0geEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICBsZXQgeElucHV0ID0geEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVsxXVxyXG4gICAgICBsZXQgeVJhbmdlID0geUVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICBsZXQgeUlucHV0ID0geUVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVsxXVxyXG5cclxuICAgICAgeFJhbmdlLnZhbHVlID0gdGhpcy5zY2FsZS54XHJcbiAgICAgIHhJbnB1dC52YWx1ZSA9IHRoaXMuc2NhbGUueFxyXG4gICAgICB5UmFuZ2UudmFsdWUgPSB0aGlzLnNjYWxlLnlcclxuICAgICAgeUlucHV0LnZhbHVlID0gdGhpcy5zY2FsZS55XHJcblxyXG4gICAgICB0aGlzLl9lbG1zLnhSYW5nZSA9IHhSYW5nZVxyXG4gICAgICB0aGlzLl9lbG1zLnlSYW5nZSA9IHlSYW5nZVxyXG4gICAgICB0aGlzLl9lbG1zLnhJbnB1dCA9IHhJbnB1dFxyXG4gICAgICB0aGlzLl9lbG1zLnlJbnB1dCA9IHlJbnB1dFxyXG5cclxuICAgICAgeFJhbmdlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLnNjYWxlID0ge1xyXG4gICAgICAgICAgeDogeFJhbmdlLnZhbHVlLFxyXG4gICAgICAgICAgeTogdGhpcy5zY2FsZS55XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB5UmFuZ2UuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2NhbGUgPSB7XHJcbiAgICAgICAgICB4OiB0aGlzLnNjYWxlLngsXHJcbiAgICAgICAgICB5OiB5UmFuZ2UudmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgaWYgKGUuZGF0YSAhPSAnLicgJiYgKGUuZGF0YSAhPSAnLScgfHwgZS50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgICBpZiAoKCghZS50YXJnZXQubWF4KSAmJiAoIWUudGFyZ2V0Lm1pbikpIHx8ICgodmFsdWUgPD0gTnVtYmVyKGUudGFyZ2V0Lm1heCkpICYmIHZhbHVlID49IE51bWJlcihlLnRhcmdldC5taW4pKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNjYWxlID0ge1xyXG4gICAgICAgICAgICAgIHg6IHZhbHVlLFxyXG4gICAgICAgICAgICAgIHk6IHRoaXMuc2NhbGUueVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChlKSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNjYWxlID0ge1xyXG4gICAgICAgICAgeDogdmFsdWUsXHJcbiAgICAgICAgICB5OiB0aGlzLnNjYWxlLnlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHlJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlKSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgIGlmICgoKCFlLnRhcmdldC5tYXgpICYmICghZS50YXJnZXQubWluKSkgfHwgKCh2YWx1ZSA8PSBOdW1iZXIoZS50YXJnZXQubWF4KSkgJiYgdmFsdWUgPj0gTnVtYmVyKGUudGFyZ2V0Lm1pbikpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2NhbGUgPSB7XHJcbiAgICAgICAgICAgICAgeDogdGhpcy5zY2FsZS54LFxyXG4gICAgICAgICAgICAgIHk6IHZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHlJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2NhbGUgPSB7XHJcbiAgICAgICAgICB4OiB0aGlzLnNjYWxlLngsXHJcbiAgICAgICAgICB5OiB2YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDph43nva5cclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5fbG9hZGVkKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvblxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5hbmdsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmFuZ2xlXHJcbiAgICB0aGlzLnNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2NhbGVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgaWYgKHRoaXMudGV4dCAmJiAhdGhpcy5vcmlnaW5hbE9wdGlvbnMudGV4dC5wb3NpdGlvbikge1xyXG4gICAgICB0aGlzLnRleHQucmVtb3ZlKClcclxuICAgICAgdGhpcy50ZXh0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgIHRoaXMudGV4dFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50ZXh0LnNob3dcclxuICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMudGV4dC52YWx1ZVxyXG4gICAgdGhpcy50ZXh0Q29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50ZXh0LmNvbG9yXHJcbiAgICB0aGlzLnRleHRGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnRleHQuZm9udFNpemVcclxuICAgIHRoaXMudGV4dFNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnRleHQuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLnRleHROZWFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMudGV4dC5uZWFyXHJcbiAgICB0aGlzLnRleHRGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50ZXh0LmZhclxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICog5ouW5YqoXHJcbiAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXR1cz1mYWxzZSDnirbmgIFcclxuICAqL1xyXG4gIGRyYWcoc3RhdHVzLCBkcmFnQ2FsbGJhY2ssIGVuZENhbGxiYWNrKSB7XHJcbiAgICBpZiAoIXRoaXMuX2xvYWRlZCB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuaXNtb3ZlID0gZmFsc2VcclxuICAgIHRoaXMuX2lzZHJhZyA9IHN0YXR1c1xyXG4gICAgaWYgKHRoaXMuU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIpIHtcclxuICAgICAgdGhpcy5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlci5kZXN0cm95KClcclxuICAgICAgdGhpcy5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlciA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgdGhpcy5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLmNhbnZhc1xyXG4gICAgICApXHJcbiAgICAgIGxldCB3aWR0aCA9IE1hdGguYWJzKHRoaXMuYmJveFswXSAtIHRoaXMuYmJveFsyXSlcclxuICAgICAgbGV0IGhlaWdodCA9IE1hdGguYWJzKHRoaXMuYmJveFsxXSAtIHRoaXMuYmJveFszXSlcclxuICAgICAgdGhpcy5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlci5zZXRJbnB1dEFjdGlvbihhc3luYyAobW92ZW1lbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5waWNrUG9pbnQpIHtcclxuICAgICAgICAgIGxldCBzQ2FydGVzaWFuID0gdGhpcy5waWNrUG9pbnQucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICAgICAgbGV0IGVDYXJ0ZXNpYW4gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LmVuZFBvc2l0aW9uKVxyXG4gICAgICAgICAgaWYgKCFlQ2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJheSA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgIGVDYXJ0ZXNpYW4gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHRoaXMuc2RrLnZpZXdlci5zY2VuZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXNDYXJ0ZXNpYW4gfHwgIWVDYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb24xID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChzQ2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcG9zaXRpb24yID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChlQ2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgeCA9IDBcclxuICAgICAgICAgIGxldCB5ID0gMFxyXG5cclxuICAgICAgICAgIGxldCByYWRpYW5zLCByYWRpYW5zVywgcmFkaWFuc0hcclxuXHJcbiAgICAgICAgICBsZXQgdyA9IDMuNSAqIHRoaXMuc2NhbGUueFxyXG4gICAgICAgICAgbGV0IGggPSAzLjUgKiB0aGlzLnNjYWxlLnlcclxuICAgICAgICAgIGxldCB3aCA9IE1hdGguc3FydCgoKHcgLyAyKSAqKiAyKSArICgoaCAvIDIpICoqIDIpKVxyXG4gICAgICAgICAgbGV0IGFuZ2xlID0gTWF0aC5hdGFuKCh3IC8gMikgLyAoaCAvIDIpKSAqICgxODAgLyBNYXRoLlBJKVxyXG4gICAgICAgICAgbGV0IGFuZ2xlVywgYW5nbGVIO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKGFuZ2xlKSkge1xyXG4gICAgICAgICAgICBhbmdsZSA9IDBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgcG9pbnQgPSB0dXJmLnBvaW50KFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdKTtcclxuICAgICAgICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICBsZXQgY29udHJvbFBvaW50cyA9IFtdXHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzWzBdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgaCAvIDIgKiAxLjUsIDAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzWzFdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDE4MCArIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgY29udHJvbFBvaW50c1syXSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIGggLyAyLCAxODAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzWzNdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDE4MCAtIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgY29udHJvbFBvaW50c1s0XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHcgLyAyLCAyNzAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzWzVdID0gW3RoaXMucG9zaXRpb24ubG5nLCB0aGlzLnBvc2l0aW9uLmxhdF1cclxuICAgICAgICAgIGNvbnRyb2xQb2ludHNbNl0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3IC8gMiwgOTAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzWzddID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDM2MCAtIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgY29udHJvbFBvaW50c1s4XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIGggLyAyLCAwICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgICAgY29udHJvbFBvaW50c1s5XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHdoLCAwICsgYW5nbGUgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcblxyXG4gICAgICAgICAgbGV0IHBvaW50MSA9IHR1cmYucG9pbnQoW3Bvc2l0aW9uMS5sbmcsIHBvc2l0aW9uMS5sYXRdKTtcclxuICAgICAgICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFtwb3NpdGlvbjIubG5nLCBwb3NpdGlvbjIubGF0XSk7XHJcbiAgICAgICAgICBsZXQgcG9pbnRDID0gdHVyZi5wb2ludChbdGhpcy5wb3NpdGlvbi5sbmcsIHRoaXMucG9zaXRpb24ubGF0XSk7XHJcbiAgICAgICAgICBsZXQgYmVhcmluZzEgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludEMsIHBvaW50MSk7XHJcbiAgICAgICAgICBsZXQgYmVhcmluZzJfMCA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50QywgcG9pbnQyKTtcclxuICAgICAgICAgIGxldCBiZWFyaW5nMiA9ICgoKGJlYXJpbmcyXzAgKyAzNjApIC0gdGhpcy5hbmdsZSkgJSAzNjApXHJcbiAgICAgICAgICBsZXQgYmVhcmluZ0hcclxuICAgICAgICAgIGxldCBiZWFyaW5nV1xyXG4gICAgICAgICAgLy8g5Lit5b+D54K55Yiw6byg5qCH55qE6Led56a7XHJcbiAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLnJodW1iRGlzdGFuY2UocG9pbnRDLCBwb2ludDIsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICAgIGxldCBmbGFnMiA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLnBpY2tQb2ludC5pZCkge1xyXG4gICAgICAgICAgICBjYXNlICdzdmctY29udHJvbC1wb2ludHNfMCc6XHJcbiAgICAgICAgICAgICAgYW5nbGUgPSBiZWFyaW5nMl8wIC0gYmVhcmluZzFcclxuICAgICAgICAgICAgICB0aGlzLmFuZ2xlICs9IGFuZ2xlXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnc3ZnLWNvbnRyb2wtcG9pbnRzXzEnOlxyXG4gICAgICAgICAgICBjYXNlICdzdmctY29udHJvbC1wb2ludHNfNyc6XHJcbiAgICAgICAgICAgICAgYmVhcmluZ1cgPSAoKCh0dXJmLnJodW1iQmVhcmluZyhwb2ludEMsIHR1cmYucG9pbnQoY29udHJvbFBvaW50c1s0XSkpICsgMzYwKSAtIHRoaXMuYW5nbGUpICUgMzYwKVxyXG4gICAgICAgICAgICAgIGJlYXJpbmdIID0gKCgodHVyZi5yaHVtYkJlYXJpbmcocG9pbnRDLCB0dXJmLnBvaW50KGNvbnRyb2xQb2ludHNbMl0pKSArIDM2MCkgLSB0aGlzLmFuZ2xlKSAlIDM2MClcclxuICAgICAgICAgICAgICBhbmdsZVcgPSBiZWFyaW5nMiAtIGJlYXJpbmdXXHJcbiAgICAgICAgICAgICAgYW5nbGVIID0gYmVhcmluZzIgLSBiZWFyaW5nSFxyXG4gICAgICAgICAgICAgIGlmICgoYW5nbGVXID4gLTI3MCAmJiBhbmdsZVcgPCAtOTApIHx8IChhbmdsZVcgPCAyNzAgJiYgYW5nbGVXID4gOTApKSB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZVcgPSBhbmdsZVcgKyAxODBcclxuICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICgoYW5nbGVIID4gLTM2MCAmJiBhbmdsZUggPCAtOTApIHx8IChhbmdsZUggPCAzNjAgJiYgYW5nbGVIID4gOTApKSB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZUggPSBhbmdsZUggKyAxODBcclxuICAgICAgICAgICAgICAgIGZsYWcyID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZmxhZyAmJiBmbGFnMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzFdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbM10ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzldLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzFdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1szXS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbN10ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzldLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnMikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbMV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzNdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbOV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbMV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmYwMDAwJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzNdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbOV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJhZGlhbnNXID0gKE1hdGguUEkgLyAxODApICogYW5nbGVXXHJcbiAgICAgICAgICAgICAgcmFkaWFuc0ggPSAoTWF0aC5QSSAvIDE4MCkgKiBhbmdsZUhcclxuICAgICAgICAgICAgICAvLyDnn6nlvaLpq5jluqZcclxuICAgICAgICAgICAgICB3ID0gKE1hdGguY29zKHJhZGlhbnNXKSAqIGRpc3RhbmNlKSAqIDJcclxuICAgICAgICAgICAgICBoID0gKE1hdGguY29zKHJhZGlhbnNIKSAqIGRpc3RhbmNlKSAqIDJcclxuICAgICAgICAgICAgICAvLyBzY2FsZVnlgLxcclxuICAgICAgICAgICAgICB0aGlzLnNjYWxlLnggPSBNYXRoLmFicyh3KSAvIDMuNVxyXG4gICAgICAgICAgICAgIHRoaXMuc2NhbGUueSA9IE1hdGguYWJzKGgpIC8gMy41XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnc3ZnLWNvbnRyb2wtcG9pbnRzXzInOlxyXG4gICAgICAgICAgICBjYXNlICdzdmctY29udHJvbC1wb2ludHNfOCc6XHJcbiAgICAgICAgICAgICAgYmVhcmluZ0ggPSAoKCh0dXJmLnJodW1iQmVhcmluZyhwb2ludEMsIHR1cmYucG9pbnQoY29udHJvbFBvaW50c1syXSkpICsgMzYwKSAtIHRoaXMuYW5nbGUpICUgMzYwKVxyXG4gICAgICAgICAgICAgIGFuZ2xlSCA9IGJlYXJpbmcyIC0gYmVhcmluZ0hcclxuICAgICAgICAgICAgICBpZiAoKGFuZ2xlSCA+IC0yNzAgJiYgYW5nbGVIIDwgLTkwKSB8fCAoYW5nbGVIIDwgMjcwICYmIGFuZ2xlSCA+IDkwKSkge1xyXG4gICAgICAgICAgICAgICAgYW5nbGVIID0gYW5nbGVIICsgMTgwXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbMl0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s4XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1syXS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzhdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByYWRpYW5zSCA9IChNYXRoLlBJIC8gMTgwKSAqIGFuZ2xlSFxyXG4gICAgICAgICAgICAgIC8vIOefqeW9oumrmOW6plxyXG4gICAgICAgICAgICAgIGggPSAoTWF0aC5jb3MocmFkaWFuc0gpICogZGlzdGFuY2UpICogMlxyXG4gICAgICAgICAgICAgIC8vIHNjYWxlWeWAvFxyXG4gICAgICAgICAgICAgIHRoaXMuc2NhbGUueSA9IGggLyAzLjVcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdzdmctY29udHJvbC1wb2ludHNfMyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3N2Zy1jb250cm9sLXBvaW50c185JzpcclxuICAgICAgICAgICAgICBiZWFyaW5nVyA9ICgoKHR1cmYucmh1bWJCZWFyaW5nKHBvaW50QywgdHVyZi5wb2ludChjb250cm9sUG9pbnRzWzZdKSkgKyAzNjApIC0gdGhpcy5hbmdsZSkgJSAzNjApXHJcbiAgICAgICAgICAgICAgYmVhcmluZ0ggPSAoKCh0dXJmLnJodW1iQmVhcmluZyhwb2ludEMsIHR1cmYucG9pbnQoY29udHJvbFBvaW50c1syXSkpICsgMzYwKSAtIHRoaXMuYW5nbGUpICUgMzYwKVxyXG4gICAgICAgICAgICAgIGFuZ2xlVyA9IGJlYXJpbmcyIC0gYmVhcmluZ1dcclxuICAgICAgICAgICAgICBhbmdsZUggPSBiZWFyaW5nMiAtIGJlYXJpbmdIXHJcblxyXG4gICAgICAgICAgICAgIGlmICgoYW5nbGVXID4gLTM2MCAmJiBhbmdsZVcgPCAtOTApIHx8IChhbmdsZVcgPCAzNjAgJiYgYW5nbGVXID4gOTApKSB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZVcgPSBhbmdsZVcgKyAxODBcclxuICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICgoYW5nbGVIID4gLTM2MCAmJiBhbmdsZUggPCAtOTApIHx8IChhbmdsZUggPCAzNjAgJiYgYW5nbGVIID4gOTApKSB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZUggPSBhbmdsZUggKyAxODBcclxuICAgICAgICAgICAgICAgIGZsYWcyID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZmxhZyAmJiBmbGFnMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzFdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbM10ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzldLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzFdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1szXS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbN10ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzldLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnMikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbMV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzNdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbOV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmYwMDAwJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbMV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzNdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s3XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbOV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJhZGlhbnNXID0gKE1hdGguUEkgLyAxODApICogYW5nbGVXXHJcbiAgICAgICAgICAgICAgcmFkaWFuc0ggPSAoTWF0aC5QSSAvIDE4MCkgKiBhbmdsZUhcclxuICAgICAgICAgICAgICAvLyDnn6nlvaLpq5jluqZcclxuICAgICAgICAgICAgICB3ID0gKE1hdGguY29zKHJhZGlhbnNXKSAqIGRpc3RhbmNlKSAqIDJcclxuICAgICAgICAgICAgICBoID0gKE1hdGguY29zKHJhZGlhbnNIKSAqIGRpc3RhbmNlKSAqIDJcclxuICAgICAgICAgICAgICAvLyBzY2FsZVnlgLxcclxuICAgICAgICAgICAgICB0aGlzLnNjYWxlLnggPSBNYXRoLmFicyh3KSAvIDMuNVxyXG4gICAgICAgICAgICAgIHRoaXMuc2NhbGUueSA9IE1hdGguYWJzKGgpIC8gMy41XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnc3ZnLWNvbnRyb2wtcG9pbnRzXzQnOlxyXG4gICAgICAgICAgICAgIGJlYXJpbmdXID0gKCgodHVyZi5yaHVtYkJlYXJpbmcocG9pbnRDLCB0dXJmLnBvaW50KGNvbnRyb2xQb2ludHNbNF0pKSArIDM2MCkgLSB0aGlzLmFuZ2xlKSAlIDM2MClcclxuICAgICAgICAgICAgICBhbmdsZVcgPSBiZWFyaW5nMiAtIGJlYXJpbmdXXHJcblxyXG4gICAgICAgICAgICAgIGlmICgoYW5nbGVXID4gLTM2MCAmJiBhbmdsZVcgPCAtOTApIHx8IChhbmdsZVcgPCAzNjAgJiYgYW5nbGVXID4gOTApKSB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZVcgPSBhbmdsZVcgKyAxODBcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s0XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzZdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzZdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbNF0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmYwMDAwJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJhZGlhbnNXID0gKE1hdGguUEkgLyAxODApICogYW5nbGVXXHJcbiAgICAgICAgICAgICAgLy8g55+p5b2i5a695bqmXHJcbiAgICAgICAgICAgICAgdyA9IChNYXRoLmNvcyhyYWRpYW5zVykgKiBkaXN0YW5jZSkgKiAyXHJcbiAgICAgICAgICAgICAgLy8gc2NhbGVZ5YC8XHJcbiAgICAgICAgICAgICAgdGhpcy5zY2FsZS54ID0gdyAvIDMuNVxyXG5cclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdzdmctY29udHJvbC1wb2ludHNfNSc6XHJcbiAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uMi5sYXQgPiA4My41KSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjIubGF0ID0gODMuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocG9zaXRpb24yLmxhdCA8IC04My41KSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjIubGF0ID0gLTgzLjVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHsgbG5nOiBwb3NpdGlvbjIubG5nLCBsYXQ6IHBvc2l0aW9uMi5sYXQgfVxyXG4gICAgICAgICAgICAgIGxldCBjeCA9IHBvc2l0aW9uMi5sbmcgLSBwb3NpdGlvbjEubG5nXHJcbiAgICAgICAgICAgICAgbGV0IGN5ID0gcG9zaXRpb24yLmxhdCAtIHBvc2l0aW9uMS5sYXRcclxuICAgICAgICAgICAgICB0aGlzLmJib3hbMF0gPSB0aGlzLmJib3hbMF0gKyBjeFxyXG4gICAgICAgICAgICAgIHRoaXMuYmJveFsxXSA9IHRoaXMuYmJveFsxXSArIGN5XHJcbiAgICAgICAgICAgICAgdGhpcy5iYm94WzJdID0gdGhpcy5iYm94WzJdICsgY3hcclxuICAgICAgICAgICAgICB0aGlzLmJib3hbM10gPSB0aGlzLmJib3hbM10gKyBjeVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ3N2Zy1jb250cm9sLXBvaW50c182JzpcclxuICAgICAgICAgICAgICBiZWFyaW5nVyA9ICgoKHR1cmYucmh1bWJCZWFyaW5nKHBvaW50QywgdHVyZi5wb2ludChjb250cm9sUG9pbnRzWzZdKSkgKyAzNjApIC0gdGhpcy5hbmdsZSkgJSAzNjApXHJcbiAgICAgICAgICAgICAgYW5nbGVXID0gYmVhcmluZzIgLSBiZWFyaW5nV1xyXG5cclxuICAgICAgICAgICAgICBpZiAoKGFuZ2xlVyA+IC0zNjAgJiYgYW5nbGVXIDwgLTkwKSB8fCAoYW5nbGVXIDwgMzYwICYmIGFuZ2xlVyA+IDkwKSkge1xyXG4gICAgICAgICAgICAgICAgYW5nbGVXID0gYW5nbGVXICsgMTgwXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbNl0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s0XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1s0XS5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmMGEnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzWzZdLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByYWRpYW5zVyA9IChNYXRoLlBJIC8gMTgwKSAqIGFuZ2xlV1xyXG4gICAgICAgICAgICAgIC8vIOefqeW9oumrmOW6plxyXG4gICAgICAgICAgICAgIHcgPSAoTWF0aC5jb3MocmFkaWFuc1cpICogZGlzdGFuY2UpICogMlxyXG4gICAgICAgICAgICAgIHRoaXMuc2NhbGUueCA9IHcgLyAzLjVcclxuXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBsZXQgcmFkaWFucyA9IChNYXRoLlBJIC8gMTgwKSAqIHRoaXMub3B0aW9ucy5hbmdsZVxyXG4gICAgICAgICAgLy8geCA9IHgqTWF0aC5jb3MocmFkaWFucylcclxuICAgICAgICAgIC8vIHkgPSB5Kk1hdGguY29zKHJhZGlhbnMpXHJcblxyXG5cclxuICAgICAgICAgIC8vIGxldCBiYm94ID0gdHVyZi5iYm94KGdlb2pzb24pO1xyXG4gICAgICAgICAgLy8gbGV0IHNxdWFyZSA9IHR1cmYuc3F1YXJlKGJib3gpO1xyXG5cclxuICAgICAgICAgIHggPSB4IC8gKHdpZHRoIC8gMikgKiAxMDBcclxuICAgICAgICAgIHkgPSB5IC8gKGhlaWdodCAvIDIpICogMTAwXHJcblxyXG4gICAgICAgICAgbGV0IHNjYWxlID0geyAuLi50aGlzLnNjYWxlIH1cclxuICAgICAgICAgIHNjYWxlLnggPSBzY2FsZS54ICsgeFxyXG4gICAgICAgICAgc2NhbGUueSA9IHNjYWxlLnkgLSB5XHJcblxyXG4gICAgICAgICAgLy8gbGV0IHB0ID0gdHVyZi5wb2ludCh0aGlzLmNlbnRlcik7XHJcbiAgICAgICAgICAvLyBsZXQgZGVzdGluYXRpb24xID0gdHVyZi5yaHVtYkRlc3RpbmF0aW9uKHB0LCAyMjAsIDQ1LCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAvLyBsZXQgZGVzdGluYXRpb24yID0gdHVyZi5yaHVtYkRlc3RpbmF0aW9uKHB0LCAyMjAsIDIyNSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG5cclxuICAgICAgICAgIC8vIHdpZHRoID0gTWF0aC5hYnMoZGVzdGluYXRpb24yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdIC0gZGVzdGluYXRpb24xLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKVxyXG4gICAgICAgICAgLy8gaGVpZ2h0ID0gTWF0aC5hYnMoZGVzdGluYXRpb24yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdIC0gZGVzdGluYXRpb24xLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG5cclxuICAgICAgICAgIGlmIChzY2FsZS55ID4gMjAwKSB7XHJcbiAgICAgICAgICAgIHNjYWxlLnkgPSAyMDBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzY2FsZS55IDwgMC4wMDEpIHtcclxuICAgICAgICAgICAgc2NhbGUueSA9IDAuMDAxXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNjYWxlLnggPiAyMDApIHtcclxuICAgICAgICAgICAgc2NhbGUueCA9IDIwMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHNjYWxlLnggPCAwLjAwMSkge1xyXG4gICAgICAgICAgICBzY2FsZS54ID0gMC4wMDFcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNjYWxlID0geyAuLi5zY2FsZSB9XHJcbiAgICAgICAgICBkcmFnQ2FsbGJhY2sgJiYgZHJhZ0NhbGxiYWNrKHRoaXMub3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsZXQgcGlja2VkT2JqZWN0QXJyYXkgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZHJpbGxQaWNrKG1vdmVtZW50LmVuZFBvc2l0aW9uKTtcclxuICAgICAgICAgIGxldCBwaWNrUG9pbnRcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHBpY2tlZE9iamVjdCA9IHBpY2tlZE9iamVjdEFycmF5W2ldXHJcbiAgICAgICAgICAgIGlmIChwaWNrZWRPYmplY3QgJiYgcGlja2VkT2JqZWN0LnByaW1pdGl2ZSAmJiBwaWNrZWRPYmplY3QucHJpbWl0aXZlLl9pZCAmJlxyXG4gICAgICAgICAgICAgIChwaWNrZWRPYmplY3QucHJpbWl0aXZlLl9pZC5pZCAmJiBwaWNrZWRPYmplY3QucHJpbWl0aXZlLl9pZC5pZC5pbmRleE9mKCdzdmctY29udHJvbC1wb2ludHNfJykgIT09IC0xKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBwaWNrUG9pbnQgPSBwaWNrZWRPYmplY3QucHJpbWl0aXZlLl9pZFxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwaWNrUG9pbnQgJiYgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzW2ldLmlkID09PSBwaWNrUG9pbnQuaWQpIHtcclxuICAgICAgICAgICAgICBwaWNrUG9pbnQucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmZmZjAwJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uLnZhbHVlc1tpXS5pZCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnc3ZnLWNvbnRyb2wtcG9pbnRzXzUnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbaV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmZmZjAwJylcclxuICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N2Zy1jb250cm9sLXBvaW50c18wJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludEVudGl0eUNvbGxlY3Rpb24udmFsdWVzW2ldLnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi52YWx1ZXNbaV0ucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKVxyXG4gICAgICB0aGlzLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZWRPYmplY3RBcnJheSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2sobW92ZW1lbnQucG9zaXRpb24pO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwaWNrZWRPYmplY3QgPSBwaWNrZWRPYmplY3RBcnJheVtpXVxyXG4gICAgICAgICAgaWYgKHBpY2tlZE9iamVjdCAmJiBwaWNrZWRPYmplY3QucHJpbWl0aXZlICYmIHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX2lkICYmIHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX2lkLm9iamVjdElkID09PSB0aGlzLm9wdGlvbnMuaWQgJiZcclxuICAgICAgICAgICAgKHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX2lkLmlkICYmIHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX2lkLmlkLmluZGV4T2YoJ3N2Zy1jb250cm9sLXBvaW50c18nKSAhPT0gLTEpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgWUouR2xvYmFsLkNhbWVyYUNvbnRyb2xsZXIodGhpcy5zZGssIGZhbHNlKVxyXG4gICAgICAgICAgICB0aGlzLnBpY2tQb2ludCA9IHBpY2tlZE9iamVjdC5wcmltaXRpdmUuX2lkXHJcbiAgICAgICAgICAgIHRoaXMucGlja1BvaW50LnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmMDAwMCcpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9ET1dOKVxyXG4gICAgICB0aGlzLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBpY2tQb2ludCkge1xyXG4gICAgICAgICAgWUouR2xvYmFsLkNhbWVyYUNvbnRyb2xsZXIodGhpcy5zZGssIHRydWUpXHJcbiAgICAgICAgICBzd2l0Y2ggKHRoaXMucGlja1BvaW50LmlkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3N2Zy1jb250cm9sLXBvaW50c180JzpcclxuICAgICAgICAgICAgICB0aGlzLnBpY2tQb2ludC5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmMDAnKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ3N2Zy1jb250cm9sLXBvaW50c185JzpcclxuICAgICAgICAgICAgICB0aGlzLnBpY2tQb2ludC5wb2ludC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZjAwMDAnKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5waWNrUG9pbnQucG9pbnQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZjBhJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGlja1BvaW50ID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLkxFRlRfVVApXHJcblxyXG4gICAgICB0aGlzLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZHJhZyhmYWxzZSlcclxuICAgICAgICAvLyBpZiAoIXRoaXMuX0RpYWxvZ09iamVjdCkge1xyXG4gICAgICAgIGVuZENhbGxiYWNrICYmIGVuZENhbGxiYWNrKHRoaXMub3B0aW9ucylcclxuICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9DTElDSylcclxuXHJcbiAgICAgIHRoaXMucG9pbnRFbnRpdHlDb2xsZWN0aW9uID0gbmV3IENlc2l1bS5FbnRpdHlDb2xsZWN0aW9uKClcclxuICAgICAgbGV0IHcgPSAzLjUgKiB0aGlzLnNjYWxlLnhcclxuICAgICAgbGV0IGggPSAzLjUgKiB0aGlzLnNjYWxlLnlcclxuICAgICAgbGV0IHdoID0gTWF0aC5zcXJ0KCgodyAvIDIpICoqIDIpICsgKChoIC8gMikgKiogMikpXHJcbiAgICAgIGxldCBhbmdsZSA9IE1hdGguYXRhbigodyAvIDIpIC8gKGggLyAyKSkgKiAoMTgwIC8gTWF0aC5QSSlcclxuICAgICAgaWYgKGlzTmFOKGFuZ2xlKSkge1xyXG4gICAgICAgIGFuZ2xlID0gMFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgcG9pbnQgPSB0dXJmLnBvaW50KFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdKTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7IHVuaXRzOiAna2lsb21ldGVycycgfTtcclxuICAgICAgbGV0IGNvbnRyb2xQb2ludHMgPSBbXVxyXG4gICAgICBjb250cm9sUG9pbnRzWzBdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgaCAvIDIgKiAxLjUsIDAsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbMV0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3aCwgMTgwICsgYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbMl0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCBoIC8gMiwgMTgwLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzNdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDE4MCAtIGFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzRdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgdyAvIDIsIDI3MCwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgY29udHJvbFBvaW50c1s1XSA9IFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbNl0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3IC8gMiwgOTAsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbN10gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3aCwgMzYwIC0gYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbOF0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCBoIC8gMiwgMCwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgY29udHJvbFBvaW50c1s5XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHdoLCAwICsgYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2xQb2ludHMgPSBjb250cm9sUG9pbnRzXHJcbiAgICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb250cm9sUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNvbG9yID0gJyMwMGZmMGEnXHJcbiAgICAgICAgaWYgKGkgPT09IDUpIHtcclxuICAgICAgICAgIGNvbG9yID0gJyNmZmZmMDAnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgICBjb2xvciA9ICcjZmYwMDAwJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmdldE9yQ3JlYXRlRW50aXR5KCdzdmctY29udHJvbC1wb2ludHNfJyArIGkpXHJcbiAgICAgICAgZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgZW50aXR5Lm9iamVjdElkID0gdGhpcy5vcHRpb25zLmlkXHJcbiAgICAgICAgZW50aXR5LnBvc2l0aW9uID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi50aGlzLmNvbnRyb2xQb2ludHNbaV0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICBlbnRpdHkucG9pbnQgPSBuZXcgQ2VzaXVtLlBvaW50R3JhcGhpY3Moe1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoY29sb3IpLCAvLyDngrnnmoTpopzoibJcclxuICAgICAgICAgIHBpeGVsU2l6ZTogMTAsIC8vIOeCueeahOWkp+Wwj1xyXG4gICAgICAgICAgaGVpZ2h0UmVmZXJlbmNlOiBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORCxcclxuICAgICAgICAgIHNjYWxlQnlEaXN0YW5jZTogbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKDAuMCwgMS4wLCAxLjBlMTAsIDEuMCksXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAgLy8g5LiN5bqU55So5rex5bqm5rWL6K+VXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnBvaW50RW50aXR5Q29sbGVjdGlvbi5hZGQoZW50aXR5KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3VwZGF0ZSgpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRyb2xQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoJ3N2Zy1jb250cm9sLXBvaW50c18nICsgaSlcclxuICAgICAgICBpZiAoZW50aXR5ICYmIChlbnRpdHkub2JqZWN0SWQgPT09IHRoaXMub3B0aW9ucy5pZCkpIHtcclxuICAgICAgICAgIGVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhpZXJhcmNoeVBvbHlnb24oZ2VvanNvbiwga2V5KSB7XHJcbiAgICBpZiAoIWdlb2pzb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgaGllcmFyY2h5ID0ge31cclxuICAgIGxldCBob2xlcyA9IFtdXHJcbiAgICBsZXQgZGlyZWN0aW9uRGlzdGFuY2UgPSBnZW9qc29uLnByb3BlcnRpZXMuZGlyZWN0aW9uRGlzdGFuY2VcclxuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkaXJlY3Rpb25EaXN0YW5jZSA9IGdlb2pzb24ucHJvcGVydGllcy5kaXJlY3Rpb25EaXN0YW5jZVtrZXldXHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXJlY3Rpb25EaXN0YW5jZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBkaXJlY3Rpb25EaXN0YW5jZVtpXS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICAgICAgbGV0IGxhdCA9IGRpcmVjdGlvbkRpc3RhbmNlW2ldW21dLm9yaWdpblsxXSArIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRcclxuICAgICAgICBpZiAobGF0ID4gOTApIHtcclxuICAgICAgICAgIGxuZyArPSAxODBcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG9yaWdpbiA9IFtsbmcsIGxhdF1cclxuICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KG9yaWdpbik7XHJcbiAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gdHVyZi5yaHVtYkRlc3RpbmF0aW9uKHB0LCBkaXJlY3Rpb25EaXN0YW5jZVtpXVttXS5kaXN0YW5jZSwgZGlyZWN0aW9uRGlzdGFuY2VbaV1bbV0uYW5nbGUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBsZXQgY29vcmRpbmF0ZXMgPSBbLi4uZGVzdGluYXRpb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNdXHJcbiAgICAgICAgLy8g5LqM57u05qih5byP5LiL6K6+572u6auY5bqmXHJcbiAgICAgICAgY29vcmRpbmF0ZXNbMl0gPSAxMFxyXG4gICAgICAgIHBvc2l0aW9ucy5wdXNoKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmNvb3JkaW5hdGVzKSlcclxuICAgICAgfVxyXG4gICAgICBpZiAoaSA9PT0gMCkge1xyXG5cclxuICAgICAgICBoaWVyYXJjaHkucG9zaXRpb25zID0gcG9zaXRpb25zXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaG9sZXMucHVzaChwb3NpdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGhpZXJhcmNoeS5ob2xlcyA9IGhvbGVzXHJcbiAgICByZXR1cm4gaGllcmFyY2h5XHJcbiAgfVxyXG5cclxuICBfdXBkYXRlR2VvanNvbihkYXRhLCB4LCB5KSB7XHJcbiAgICBpZiAoIXRoaXMuX2xvYWRlZCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB3aWR0aCA9IE1hdGguYWJzKHRoaXMuYmJveFswXSAtIHRoaXMuYmJveFsyXSlcclxuICAgIGxldCBoZWlnaHQgPSBNYXRoLmFicyh0aGlzLmJib3hbMV0gLSB0aGlzLmJib3hbM10pXHJcbiAgICBpZiAodHlwZW9mIGRhdGFbMF0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUdlb2pzb24oZGF0YVtpXSwgeCwgeSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICAgIGRhdGFbaV0gPSBkYXRhW2ldICsgKChkYXRhW2ldIC8gKHdpZHRoIC8gMikpICogeClcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgICBkYXRhW2ldID0gZGF0YVtpXSAtICgoZGF0YVtpXSAvIChoZWlnaHQgLyAyKSkgKiB5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfdXBkYXRlKCkge1xyXG4gICAgaWYgKCF0aGlzLl9sb2FkZWQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9pbnQgPSB0dXJmLnBvaW50KFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdKTtcclxuICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICBsZXQgaW50ZXJpbUJib3ggPSBbLi4udGhpcy5iYm94XVxyXG4gICAgbGV0IHdpZHRoID0gTWF0aC5hYnMoaW50ZXJpbUJib3hbMl0gLSBpbnRlcmltQmJveFswXSlcclxuICAgIGxldCBoZWlnaHQgPSBNYXRoLmFicyhpbnRlcmltQmJveFszXSAtIGludGVyaW1CYm94WzFdKVxyXG4gICAgbGV0IHggPSAoKHdpZHRoIC8gMikgKiB0aGlzLm9wdGlvbnMuc2NhbGUueCkgLyAxMDAgLSAod2lkdGggLyAyKVxyXG4gICAgbGV0IHkgPSAoaGVpZ2h0IC8gMikgKiAoLSh0aGlzLm9wdGlvbnMuc2NhbGUueSkpIC8gMTAwICsgKGhlaWdodCAvIDIpXHJcblxyXG4gICAgaW50ZXJpbUJib3hbMF0gPSBpbnRlcmltQmJveFswXSAtIHhcclxuICAgIGludGVyaW1CYm94WzFdID0gaW50ZXJpbUJib3hbMV0gKyB5XHJcbiAgICBpbnRlcmltQmJveFsyXSA9IGludGVyaW1CYm94WzJdICsgeFxyXG4gICAgaW50ZXJpbUJib3hbM10gPSBpbnRlcmltQmJveFszXSAtIHlcclxuXHJcbiAgICBsZXQgaW50ZXJpbVxyXG5cclxuICAgIGlmIChpbnRlcmltQmJveFswXSA+IGludGVyaW1CYm94WzJdKSB7XHJcbiAgICAgIGludGVyaW0gPSBpbnRlcmltQmJveFswXVxyXG4gICAgICBpbnRlcmltQmJveFswXSA9IGludGVyaW1CYm94WzJdXHJcbiAgICAgIGludGVyaW1CYm94WzJdID0gaW50ZXJpbVxyXG4gICAgfVxyXG4gICAgaWYgKGludGVyaW1CYm94WzFdID4gaW50ZXJpbUJib3hbM10pIHtcclxuICAgICAgaW50ZXJpbSA9IGludGVyaW1CYm94WzFdXHJcbiAgICAgIGludGVyaW1CYm94WzFdID0gaW50ZXJpbUJib3hbM11cclxuICAgICAgaW50ZXJpbUJib3hbM10gPSBpbnRlcmltXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhpZXJhcmNoeXMgPSBbXVxyXG5cclxuXHJcbiAgICBsZXQgZ2VvanNvbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5nZW9qc29uKSlcclxuICAgIGNvbnN0IHJlY3Vyc2lvbiA9IChkYXRhKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmxpcGUueCAmJiBpID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRhdGFbaV0gPSAtZGF0YVtpXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mbGlwZS55ICYmIGkgPT09IDApIHtcclxuICAgICAgICAgICAgZGF0YVtpXSA9IC1kYXRhW2ldXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVjdXJzaW9uKGRhdGFbaV0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcmVjdXJzaW9uKGdlb2pzb24uZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXHJcbiAgICB9XHJcbiAgICBnZW9qc29uLmZlYXR1cmVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGxldCBmZWF0dXJlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSlcclxuICAgICAgdGhpcy5fdXBkYXRlR2VvanNvbihmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLCB4LCB5KVxyXG4gICAgICBmZWF0dXJlID0gdHVyZi50cmFuc2Zvcm1Sb3RhdGUoZmVhdHVyZSwgdGhpcy5hbmdsZSwgeyBwaXZvdDogWzAsIDBdIH0pO1xyXG4gICAgICBsZXQgZGlyZWN0aW9uRGlzdGFuY2UgPSBbXVxyXG4gICAgICBpZiAoZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tpXS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICBsZXQgYXJyYXkyID0gW11cclxuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvaW50MSA9IHR1cmYucG9pbnQoWzAsIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1bbl1bMV1dKVxyXG4gICAgICAgICAgICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFsuLi5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dXSlcclxuICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmRpc3RhbmNlKHBvaW50MSwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgICAgbGV0IGFuZ2xlMiA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50MSwgcG9pbnQyKTtcclxuICAgICAgICAgICAgICBhcnJheTIucHVzaChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgb3JpZ2luOiBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dLFxyXG4gICAgICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgIGFuZ2xlOiBhbmdsZTJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXJyYXkucHVzaChhcnJheTIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZS5wdXNoKGFycmF5KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV0ubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5MiA9IFtdXHJcbiAgICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFswLCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dWzFdXSlcclxuICAgICAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoWy4uLmZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1dKVxyXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmRpc3RhbmNlKHBvaW50MSwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgICAgIGxldCBhbmdsZTIgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDEsIHBvaW50Mik7XHJcbiAgICAgICAgICAgIGFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgIG9yaWdpbjogZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVttXSxcclxuICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlMlxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGlyZWN0aW9uRGlzdGFuY2UucHVzaChhcnJheSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZlYXR1cmUucHJvcGVydGllcy5kaXJlY3Rpb25EaXN0YW5jZSA9IGRpcmVjdGlvbkRpc3RhbmNlXHJcblxyXG4gICAgICAvLyB0aGlzLmJib3ggPSBbLi4uaW50ZXJpbUJib3hdXHJcblxyXG5cclxuICAgICAgbGV0IHcgPSAzLjUgKiB0aGlzLnNjYWxlLnhcclxuICAgICAgbGV0IGggPSAzLjUgKiB0aGlzLnNjYWxlLnlcclxuICAgICAgbGV0IHdoID0gTWF0aC5zcXJ0KCgodyAvIDIpICoqIDIpICsgKChoIC8gMikgKiogMikpXHJcbiAgICAgIGxldCBhbmdsZSA9IE1hdGguYXRhbigodyAvIDIpIC8gKGggLyAyKSkgKiAoMTgwIC8gTWF0aC5QSSlcclxuICAgICAgaWYgKGlzTmFOKGFuZ2xlKSkge1xyXG4gICAgICAgIGFuZ2xlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIGxldCBjb250cm9sUG9pbnRzID0gW11cclxuICAgICAgY29udHJvbFBvaW50c1swXSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIGggLyAyICogMS41LCAwICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzFdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDE4MCArIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzJdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgaCAvIDIsIDE4MCArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgY29udHJvbFBvaW50c1szXSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHdoLCAxODAgLSBhbmdsZSArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgY29udHJvbFBvaW50c1s0XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHcgLyAyLCAyNzAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbNV0gPSBbdGhpcy5wb3NpdGlvbi5sbmcsIHRoaXMucG9zaXRpb24ubGF0XVxyXG4gICAgICBjb250cm9sUG9pbnRzWzZdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgdyAvIDIsIDkwICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzddID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDM2MCAtIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb250cm9sUG9pbnRzWzhdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgaCAvIDIsIDAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGNvbnRyb2xQb2ludHNbOV0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3aCwgMCArIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG5cclxuICAgICAgbGV0IHBvaW50cyA9IHR1cmYucG9pbnRzKGNvbnRyb2xQb2ludHMpO1xyXG4gICAgICBjb250cm9sUG9pbnRzID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMuZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb250cm9sUG9pbnRzLnB1c2gocG9pbnRzLmZlYXR1cmVzW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29udHJvbFBvaW50cyA9IGNvbnRyb2xQb2ludHNcclxuXHJcbiAgICAgIGlmIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5nZXRIaWVyYXJjaHlQb2x5Z29uKGZlYXR1cmUsIGkpXHJcbiAgICAgICAgICBhcnJheS5wdXNoKGhpZXJhcmNoeSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHRoaXMuZ2V0SGllcmFyY2h5UG9seWdvbihmZWF0dXJlKVxyXG4gICAgICAgIGFycmF5LnB1c2goaGllcmFyY2h5KVxyXG4gICAgICB9XHJcbiAgICAgIGhpZXJhcmNoeXMucHVzaChhcnJheSlcclxuICAgIH0pXHJcbiAgICB0aGlzLmhpZXJhcmNoeXMgPSBbLi4uaGllcmFyY2h5c11cclxuXHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgfHwgdGhpcy5faXNkcmFnKSB7XHJcbiAgICAgIGxldCBrID0gMFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhpcy5oaWVyYXJjaHlzW2ldLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbnRpdHkudmFsdWVzW2tdLnBvbHlnb24uaGllcmFyY2h5LmlzQ29uc3RhbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkudmFsdWVzW2tdLnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5oaWVyYXJjaHlzW2ldW21dXHJcbiAgICAgICAgICAgICAgbGV0IGhvbGVzID0gW11cclxuICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGhpZXJhcmNoeS5ob2xlcy5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgaG9sZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogaGllcmFyY2h5LmhvbGVzW25dXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiBoaWVyYXJjaHkucG9zaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgaG9sZXM6IGhvbGVzXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGsrK1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBrID0gMFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhpcy5oaWVyYXJjaHlzW2ldLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAvLyBpZiAoIXRoaXMuZW50aXR5LnZhbHVlc1trXS5wb2x5Z29uLmhpZXJhcmNoeS5pc0NvbnN0YW50KSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS52YWx1ZXNba10ucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5oaWVyYXJjaHlzW2ldW21dXHJcbiAgICAgICAgICAgIGxldCBob2xlcyA9IFtdXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgaGllcmFyY2h5LmhvbGVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaG9sZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IGhpZXJhcmNoeS5ob2xlc1tuXVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IGhpZXJhcmNoeS5wb3NpdGlvbnMsXHJcbiAgICAgICAgICAgICAgaG9sZXM6IGhvbGVzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sICF0aGlzLmlzbW92ZSlcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGsrK1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMudGV4dE9iamVjdCAmJiB0aGlzLnRleHRPYmplY3QuZ2VvanNvbikge1xyXG4gICAgICBsZXQgdGV4dEhpZXJhcmNoeXMgPSBbXVxyXG4gICAgICBsZXQgdGV4dEdlb2pzb24gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudGV4dE9iamVjdC5nZW9qc29uKSlcclxuICAgICAgY29uc3QgcmVjdXJzaW9uMiA9IChkYXRhKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbaV0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHRPYmplY3QuZmxpcGUueCAmJiBpID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgZGF0YVtpXSA9IC1kYXRhW2ldXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMudGV4dE9iamVjdC5mbGlwZS55ICYmIGkgPT09IDApIHtcclxuICAgICAgICAgICAgICBkYXRhW2ldID0gLWRhdGFbaV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlY3Vyc2lvbjIoZGF0YVtpXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0R2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHJlY3Vyc2lvbih0ZXh0R2VvanNvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgfVxyXG4gICAgICB0ZXh0R2VvanNvbi5mZWF0dXJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgICAgbGV0IGZlYXR1cmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKVxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUdlb2pzb24oZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcywgeCwgeSlcclxuICAgICAgICBmZWF0dXJlID0gdHVyZi50cmFuc2Zvcm1Sb3RhdGUoZmVhdHVyZSwgdGhpcy5hbmdsZSwgeyBwaXZvdDogWzAsIDBdIH0pO1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb25EaXN0YW5jZSA9IFtdXHJcbiAgICAgICAgaWYgKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV0ubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICBsZXQgYXJyYXkyID0gW11cclxuICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV0ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFswLCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dWzFdXSlcclxuICAgICAgICAgICAgICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFsuLi5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dW25dXSlcclxuICAgICAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IHR1cmYuZGlzdGFuY2UocG9pbnQxLCBwb2ludDIsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICAgICAgICAgIGxldCBhbmdsZTIgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDEsIHBvaW50Mik7XHJcbiAgICAgICAgICAgICAgICBhcnJheTIucHVzaChcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVttXVtuXSxcclxuICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlMlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGFycmF5LnB1c2goYXJyYXkyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpcmVjdGlvbkRpc3RhbmNlLnB1c2goYXJyYXkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tpXS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgIGxldCBhcnJheTIgPSBbXVxyXG4gICAgICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFswLCBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dWzFdXSlcclxuICAgICAgICAgICAgICBsZXQgcG9pbnQyID0gdHVyZi5wb2ludChbLi4uZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVttXV0pXHJcbiAgICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gdHVyZi5kaXN0YW5jZShwb2ludDEsIHBvaW50MiwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgICAgICAgIGxldCBhbmdsZTIgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDEsIHBvaW50Mik7XHJcbiAgICAgICAgICAgICAgYXJyYXkucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW46IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV0sXHJcbiAgICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICBhbmdsZTogYW5nbGUyXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZS5wdXNoKGFycmF5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmRpcmVjdGlvbkRpc3RhbmNlID0gZGlyZWN0aW9uRGlzdGFuY2VcclxuXHJcbiAgICAgICAgLy8gdGhpcy5iYm94ID0gWy4uLmludGVyaW1CYm94XVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHcgPSAzLjUgKiB0aGlzLnNjYWxlLnhcclxuICAgICAgICBsZXQgaCA9IDMuNSAqIHRoaXMuc2NhbGUueVxyXG4gICAgICAgIGxldCB3aCA9IE1hdGguc3FydCgoKHcgLyAyKSAqKiAyKSArICgoaCAvIDIpICoqIDIpKVxyXG4gICAgICAgIGxldCBhbmdsZSA9IE1hdGguYXRhbigodyAvIDIpIC8gKGggLyAyKSkgKiAoMTgwIC8gTWF0aC5QSSlcclxuICAgICAgICBpZiAoaXNOYU4oYW5nbGUpKSB7XHJcbiAgICAgICAgICBhbmdsZSA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNvbnRyb2xQb2ludHMgPSBbXVxyXG4gICAgICAgIGNvbnRyb2xQb2ludHNbMF0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCBoIC8gMiAqIDEuNSwgMCArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgICBjb250cm9sUG9pbnRzWzFdID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDE4MCArIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgIGNvbnRyb2xQb2ludHNbMl0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCBoIC8gMiwgMTgwICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgIGNvbnRyb2xQb2ludHNbM10gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCB3aCwgMTgwIC0gYW5nbGUgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgY29udHJvbFBvaW50c1s0XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHcgLyAyLCAyNzAgKyB0aGlzLm9wdGlvbnMuYW5nbGUsIG9wdGlvbnMpLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgICAgY29udHJvbFBvaW50c1s1XSA9IFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdXHJcbiAgICAgICAgY29udHJvbFBvaW50c1s2XSA9IHR1cmYuZGVzdGluYXRpb24ocG9pbnQsIHcgLyAyLCA5MCArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgICBjb250cm9sUG9pbnRzWzddID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDM2MCAtIGFuZ2xlICsgdGhpcy5vcHRpb25zLmFuZ2xlLCBvcHRpb25zKS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICAgIGNvbnRyb2xQb2ludHNbOF0gPSB0dXJmLmRlc3RpbmF0aW9uKHBvaW50LCBoIC8gMiwgMCArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgICBjb250cm9sUG9pbnRzWzldID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgd2gsIDAgKyBhbmdsZSArIHRoaXMub3B0aW9ucy5hbmdsZSwgb3B0aW9ucykuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuXHJcbiAgICAgICAgbGV0IHBvaW50cyA9IHR1cmYucG9pbnRzKGNvbnRyb2xQb2ludHMpO1xyXG4gICAgICAgIGNvbnRyb2xQb2ludHMgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb250cm9sUG9pbnRzLnB1c2gocG9pbnRzLmZlYXR1cmVzW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbnRyb2xQb2ludHMgPSBjb250cm9sUG9pbnRzXHJcblxyXG4gICAgICAgIGlmIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHRoaXMuZ2V0SGllcmFyY2h5UG9seWdvbihmZWF0dXJlLCBpKVxyXG4gICAgICAgICAgICBhcnJheS5wdXNoKGhpZXJhcmNoeSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy5nZXRIaWVyYXJjaHlQb2x5Z29uKGZlYXR1cmUpXHJcbiAgICAgICAgICBhcnJheS5wdXNoKGhpZXJhcmNoeSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGV4dEhpZXJhcmNoeXMucHVzaChhcnJheSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy50ZXh0T2JqZWN0LmhpZXJhcmNoeXMgPSBbLi4udGV4dEhpZXJhcmNoeXNdXHJcblxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0IHx8IHRoaXMuX2lzZHJhZykge1xyXG4gICAgICAvLyAgIGxldCBrID0gMFxyXG4gICAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50ZXh0T2JqZWN0LmhpZXJhcmNoeXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhpcy50ZXh0T2JqZWN0LmhpZXJhcmNoeXNbaV0ubGVuZ3RoOyBtKyspIHtcclxuICAgICAgLy8gICAgICAgaWYgKHRoaXMuZW50aXR5LnZhbHVlc1trXS5wb2x5Z29uLmhpZXJhcmNoeS5pc0NvbnN0YW50KSB7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5lbnRpdHkudmFsdWVzW2tdLnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgLy8gICAgICAgICAgIGxldCBoaWVyYXJjaHkgPSB0aGlzLnRleHRPYmplY3QuaGllcmFyY2h5c1tpXVttXVxyXG4gICAgICAvLyAgICAgICAgICAgbGV0IGhvbGVzID0gW11cclxuICAgICAgLy8gICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgaGllcmFyY2h5LmhvbGVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgIC8vICAgICAgICAgICAgIGhvbGVzLnB1c2goe1xyXG4gICAgICAvLyAgICAgICAgICAgICAgIHBvc2l0aW9uczogaGllcmFyY2h5LmhvbGVzW25dXHJcbiAgICAgIC8vICAgICAgICAgICAgIH0pXHJcbiAgICAgIC8vICAgICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAvLyAgICAgICAgICAgICBwb3NpdGlvbnM6IGhpZXJhcmNoeS5wb3NpdGlvbnMsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGhvbGVzOiBob2xlc1xyXG4gICAgICAvLyAgICAgICAgICAgfVxyXG4gICAgICAvLyAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICAgIGsrK1xyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIHtcclxuICAgICAgLy8gICBsZXQgayA9IDBcclxuICAgICAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGV4dE9iamVjdC5oaWVyYXJjaHlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHRoaXMudGV4dE9iamVjdC5oaWVyYXJjaHlzW2ldLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgIC8vICAgICAgIC8vIGlmICghdGhpcy5lbnRpdHkudmFsdWVzW2tdLnBvbHlnb24uaGllcmFyY2h5LmlzQ29uc3RhbnQpIHtcclxuICAgICAgLy8gICAgICAgdGhpcy5lbnRpdHkudmFsdWVzW2tdLnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgLy8gICAgICAgICBsZXQgaGllcmFyY2h5ID0gdGhpcy50ZXh0T2JqZWN0LmhpZXJhcmNoeXNbaV1bbV1cclxuICAgICAgLy8gICAgICAgICBsZXQgaG9sZXMgPSBbXVxyXG4gICAgICAvLyAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgaGllcmFyY2h5LmhvbGVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgIC8vICAgICAgICAgICBob2xlcy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgICAgICAgcG9zaXRpb25zOiBoaWVyYXJjaHkuaG9sZXNbbl1cclxuICAgICAgLy8gICAgICAgICAgIH0pXHJcbiAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICBwb3NpdGlvbnM6IGhpZXJhcmNoeS5wb3NpdGlvbnMsXHJcbiAgICAgIC8vICAgICAgICAgICBob2xlczogaG9sZXNcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgIH0sICF0aGlzLmlzbW92ZSlcclxuICAgICAgLy8gICAgICAgLy8gfVxyXG4gICAgICAvLyAgICAgICBrKytcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB0ZXh0UG9zUGljaygpIHtcclxuICAgIGxldCBEcmF3ID0gbmV3IERyYXdQb2ludCh0aGlzLnNkaylcclxuICAgIERyYXcuc3RhcnQoYXN5bmMgKGEsIHBvc2l0aW9uKSA9PiB7XHJcbiAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFt0aGlzLnBvc2l0aW9uLmxuZywgdGhpcy5wb3NpdGlvbi5sYXRdKVxyXG4gICAgICBsZXQgcG9pbnQyID0gdHVyZi5wb2ludChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmRpc3RhbmNlKHBvaW50MSwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIGxldCBhbmdsZSA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50MSwgcG9pbnQyKTtcclxuICAgICAgdGhpcy5fdGV4dFRvQ2VudGVyID0ge1xyXG4gICAgICAgIGRpc3RhbmNlOiBkaXN0YW5jZSxcclxuICAgICAgICBhbmdsZTogYW5nbGVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMudGV4dC5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAgIGlmICh0aGlzLnRleHQpIHtcclxuICAgICAgICB0aGlzLnRleHQucG9zaXRpb24gPSBbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHBvc2l0aW9uLmFsdF1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBHcm91bmRTdmcuY3JlYXRlVGV4dCh0aGlzKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbG9hZChjYWxsYmFjaykge1xyXG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xvYWRFdmVudCA9IGNhbGxiYWNrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLl93b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5kcmFnKGZhbHNlKVxyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMudGV4dCAmJiB0aGlzLnRleHQucmVtb3ZlKClcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLmVudGl0eS52YWx1ZXMubGVuZ3RoOyBpID49IDA7IGktLSkge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5LnZhbHVlc1tpXSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBfYWRkTGluaygpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXVxyXG4gICAgICAgIC52YWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50LnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICfpk77mjqUnLFxyXG4gICAgICAgIHVybDogdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdsaW5rX2FkZCdcclxuICAgICAgICApWzBdLnZhbHVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgJ2xpbmtfYWRkJ1xyXG4gICAgICApWzBdLnZhbHVlID0gJydcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuRGlhbG9nLmNsaWNrQWRkTGluayAmJiB0aGlzLkRpYWxvZy5jbGlja0FkZExpbmsoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXR0cmlidXRlTGluayhsaW5rKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5wdXNoKHtcclxuICAgICAgbmFtZTogJ+mTvuaOpScsXHJcbiAgICAgIHVybDogbGlua1xyXG4gICAgfSlcclxuICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiZPlvIDlr4zmlofmnKzmoYZcclxuICAgKi9cclxuICBvcGVuUmljaFRleHRFZGl0b3IoZSkge1xyXG4gICAgLy8gdmFyIHVlID0gVUUuZ2V0RWRpdG9yKCdhcHAnKTtcclxuICAgIHJpY2hUZXh0Lm9wZW4oXHJcbiAgICAgIHRoaXMub3B0aW9ucy5pZCxcclxuICAgICAgdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnRcclxuICAgIClcclxuICAgIHJpY2hUZXh0LnByaW1hcnlDYWxsQmFjayA9IGNvbnRlbnQgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gY29udGVudFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24odikge1xyXG4gICAgaWYgKHYpIHtcclxuICAgICAgdGhpcy5pc21vdmUgPSB0cnVlXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHt9XHJcbiAgICAgIHBvc2l0aW9uLmxuZyA9IHYucG9zaXRpb24ubG5nXHJcbiAgICAgIHBvc2l0aW9uLmxhdCA9IHYucG9zaXRpb24ubGF0XHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNtb3ZlID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0ZSgpXHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRyb2xQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiB0aGlzLmNvbnRyb2xQb2ludHNbaV1bMF0sIGxhdDogdGhpcy5jb250cm9sUG9pbnRzW2ldWzFdIH0pXHJcbiAgICAgICAgbGV0IGNhcnRlc2lhbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuY29udHJvbFBvaW50c1tpXVswXSwgdGhpcy5jb250cm9sUG9pbnRzW2ldWzFdLCBoZWlnaHQpXHJcbiAgICAgICAgYXJyYXkucHVzaChjYXJ0ZXNpYW4ueCwgY2FydGVzaWFuLnksIGNhcnRlc2lhbi56KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMoYXJyYXkpXHJcblxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC02MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgR3JvdW5kU3ZnXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBekJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrREE7QUF6REE7QUFBQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVZBO0FBQUE7QUFRQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW1CQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQWdEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUNBO0FBQUE7QUFBQTtBQTJDQTtBQTVDQTtBQUFBO0FBQUE7QUE2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQXhFQTtBQXlFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQTNQQTtBQUFBO0FBQUE7QUFBQTtBQTZQQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBa0tBO0FBQUE7QUFoS0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBSUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFiQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdEJBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQUFBO0FBQUE7QUFrQkE7QUFuQkE7QUFBQTtBQUFBO0FBb0JBO0FBRUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQUFBO0FBQUE7QUFrQkE7QUFuQkE7QUFBQTtBQUFBO0FBb0JBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0JBO0FBSUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBbkRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFod0NBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBNUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXN6Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/GroundSvg/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Heatmap/index.js": -/*!***************************************!*\ - !*** ./src/Obj/Base/Heatmap/index.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return HeatMap; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n// import Tools from '../../Tools'\n\nvar HeatMap = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 热力图\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.gradient {object} 渐变色\r\n * @param {Array.} options.positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param {Array.} options.data 热力图数据 [{lon,lat,value},...]\r\n * */\n function HeatMap(sdk, options) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, HeatMap);\n _this = _callSuper(this, HeatMap, [sdk, options]);\n _this.viewer = sdk.viewer;\n _this.options.show = options.show || options.show === false ? options.show : true;\n _this.options.positions = _this.options.positions || [];\n _this.options.data = _this.options.data;\n _this.options.gradient = options.gradient || {\n '0.9': 'red',\n '0.8': 'orange',\n '0.7': 'yellow',\n '0.5': 'blue',\n '0.3': 'green'\n };\n _this.entity = {\n id: _this.options.id\n };\n if (!_this.options.positions || _this.options.positions.length < 3) {\n _this._error = '最少需要三个坐标!';\n console.warn(_this._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n var array = [];\n for (var i = 0; i < _this.options.positions.length; i++) {\n array.push([_this.options.positions[i].lng, _this.options.positions[i].lat]);\n }\n var line = turf.lineString(array);\n var bbox = turf.bbox(line);\n _this.bounds = {\n west: bbox[0],\n south: bbox[1],\n east: bbox[2],\n north: bbox[3]\n };\n HeatMap.add(_this);\n }\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(HeatMap, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(HeatMap, [{\n key: \"remove\",\n value: function remove() {\n this.viewer.entities.remove(this.entity);\n this.entity = null;\n }\n }, {\n key: \"createHeatMap\",\n value: function createHeatMap(max, data) {\n var heatMap = CesiumHeatmap.create(this.bounds,\n // 矩形坐标\n {\n // heatmap相应参数\n backgroundColor: \"rgba(0,0,0,0)\",\n radius: 20,\n maxOpacity: .5,\n minOpacity: 0,\n blur: .75,\n gradient: this.options.gradient\n });\n heatMap.setWGS84Data(0, max, data);\n return heatMap;\n }\n }], [{\n key: \"add\",\n value: function add(that) {\n var arr = [];\n that.options.positions.forEach(function (item) {\n arr.push(item.lng, item.lat);\n });\n var data = HeatMap.getData(that);\n var heatMap = that.createHeatMap(data.max, data.data);\n that.entity = new Cesium.Entity({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(arr)),\n material: heatMap._heatmap._renderer.canvas,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n that.viewer.entities.add(that.entity);\n }\n }, {\n key: \"getData\",\n value: function getData(that) {\n var len = 1000;\n var data = [];\n if (that.options.data && Array.isArray(that.options.data)) {\n var max = that.options.data[0].value;\n for (var i = 0; i < that.options.data.length; i++) {\n var val = that.options.data[i].value;\n max = Math.max(max, val);\n data.push({\n x: that.options.data[i].lng,\n y: that.options.data[i].lat,\n value: val\n });\n }\n return {\n max: max,\n data: data\n };\n } else {\n //构建一些随机数据点\n var _max = 0;\n while (len--) {\n var _val = Math.floor(Math.random() * 1000);\n _max = Math.max(_max, _val);\n var point = {\n x: Math.random() * (that.bounds.east - that.bounds.west) + that.bounds.west,\n y: Math.random() * (that.bounds.north - that.bounds.south) + that.bounds.south,\n value: _val\n };\n data.push(point);\n }\n return {\n max: _max,\n data: data\n };\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvSGVhdG1hcC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9IZWF0bWFwL2luZGV4LmpzPzlhNzIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJ1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYXRNYXAgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOeDreWKm+WbvlxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZ3JhZGllbnQge29iamVjdH0g5riQ5Y+Y6ImyXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBvcHRpb25zLmRhdGEg54Ot5Yqb5Zu+5pWw5o2uIFt7bG9uLGxhdCx2YWx1ZX0sLi4uXVxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zKSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuZGF0YSA9IHRoaXMub3B0aW9ucy5kYXRhXHJcbiAgICB0aGlzLm9wdGlvbnMuZ3JhZGllbnQgPSBvcHRpb25zLmdyYWRpZW50IHx8IHtcclxuICAgICAgJzAuOSc6ICdyZWQnLFxyXG4gICAgICAnMC44JzogJ29yYW5nZScsXHJcbiAgICAgICcwLjcnOiAneWVsbG93JyxcclxuICAgICAgJzAuNSc6ICdibHVlJyxcclxuICAgICAgJzAuMyc6ICdncmVlbidcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5ID0ge1xyXG4gICAgICBpZDogdGhpcy5vcHRpb25zLmlkXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wb3NpdGlvbnMgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yID0gJ+acgOWwkemcgOimgeS4ieS4quWdkOagh++8gSdcclxuICAgICAgY29uc29sZS53YXJuKHRoaXMuX2Vycm9yKVxyXG4gICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLl9lcnJvcixcclxuICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXkucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgbGluZSA9IHR1cmYubGluZVN0cmluZyhhcnJheSk7XHJcbiAgICAgIGxldCBiYm94ID0gdHVyZi5iYm94KGxpbmUpO1xyXG4gICAgICB0aGlzLmJvdW5kcyA9IHtcclxuICAgICAgICB3ZXN0OiBiYm94WzBdLCBzb3V0aDogYmJveFsxXSwgZWFzdDogYmJveFsyXSwgbm9ydGg6IGJib3hbM11cclxuICAgICAgfVxyXG4gICAgICBIZWF0TWFwLmFkZCh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZCh0aGF0KSB7XHJcbiAgICBsZXQgYXJyID0gW11cclxuICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgYXJyLnB1c2goaXRlbS5sbmcsIGl0ZW0ubGF0KVxyXG4gICAgfSlcclxuICAgIGxldCBkYXRhID0gSGVhdE1hcC5nZXREYXRhKHRoYXQpXHJcbiAgICBsZXQgaGVhdE1hcCA9IHRoYXQuY3JlYXRlSGVhdE1hcChkYXRhLm1heCwgZGF0YS5kYXRhKVxyXG4gICAgdGhhdC5lbnRpdHkgPSBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoXHJcbiAgICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGFycilcclxuICAgICAgICApLFxyXG4gICAgICAgIG1hdGVyaWFsOiBoZWF0TWFwLl9oZWF0bWFwLl9yZW5kZXJlci5jYW52YXMsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4ICsrXHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQodGhhdC5lbnRpdHkpXHJcbiAgfVxyXG5cclxuICByZW1vdmUoKSB7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREYXRhKHRoYXQpIHtcclxuICAgIGxldCBsZW4gPSAxMDAwXHJcbiAgICBsZXQgZGF0YSA9IFtdXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLmRhdGEgJiYgQXJyYXkuaXNBcnJheSh0aGF0Lm9wdGlvbnMuZGF0YSkpIHtcclxuICAgICAgbGV0IG1heCA9IHRoYXQub3B0aW9ucy5kYXRhWzBdLnZhbHVlXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdmFsID0gdGhhdC5vcHRpb25zLmRhdGFbaV0udmFsdWVcclxuICAgICAgICBtYXggPSBNYXRoLm1heChtYXgsIHZhbClcclxuICAgICAgICBkYXRhLnB1c2goe1xyXG4gICAgICAgICAgeDogdGhhdC5vcHRpb25zLmRhdGFbaV0ubG5nLFxyXG4gICAgICAgICAgeTogdGhhdC5vcHRpb25zLmRhdGFbaV0ubGF0LFxyXG4gICAgICAgICAgdmFsdWU6IHZhbFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHsgbWF4OiBtYXgsIGRhdGE6IGRhdGEgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8v5p6E5bu65LiA5Lqb6ZqP5py65pWw5o2u54K5XHJcbiAgICAgIGxldCBtYXggPSAwXHJcbiAgICAgIHdoaWxlIChsZW4tLSkge1xyXG4gICAgICAgIGxldCB2YWwgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxyXG4gICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgdmFsKVxyXG4gICAgICAgIGxldCBwb2ludCA9IHtcclxuICAgICAgICAgIHg6IE1hdGgucmFuZG9tKCkgKiAodGhhdC5ib3VuZHMuZWFzdCAtIHRoYXQuYm91bmRzLndlc3QpICsgdGhhdC5ib3VuZHMud2VzdCxcclxuICAgICAgICAgIHk6IE1hdGgucmFuZG9tKCkgKiAodGhhdC5ib3VuZHMubm9ydGggLSB0aGF0LmJvdW5kcy5zb3V0aCkgKyB0aGF0LmJvdW5kcy5zb3V0aCxcclxuICAgICAgICAgIHZhbHVlOiB2YWxcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YS5wdXNoKHBvaW50KVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7IG1heDogbWF4LCBkYXRhOiBkYXRhIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUhlYXRNYXAobWF4LCBkYXRhKSB7XHJcbiAgICBsZXQgaGVhdE1hcCA9IENlc2l1bUhlYXRtYXAuY3JlYXRlKFxyXG4gICAgICB0aGlzLmJvdW5kcywgLy8g55+p5b2i5Z2Q5qCHXHJcbiAgICAgIHsgLy8gaGVhdG1hcOebuOW6lOWPguaVsFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJyZ2JhKDAsMCwwLDApXCIsXHJcbiAgICAgICAgcmFkaXVzOiAyMCxcclxuICAgICAgICBtYXhPcGFjaXR5OiAuNSxcclxuICAgICAgICBtaW5PcGFjaXR5OiAwLFxyXG4gICAgICAgIGJsdXI6IC43NSxcclxuICAgICAgICBncmFkaWVudDogdGhpcy5vcHRpb25zLmdyYWRpZW50XHJcbiAgICAgIH1cclxuICAgIClcclxuICAgIGhlYXRNYXAuc2V0V0dTODREYXRhKDAsIG1heCwgZGF0YSk7XHJcbiAgICByZXR1cm4gaGVhdE1hcFxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFvQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXpFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/Heatmap/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/KML/index.js": -/*!***********************************!*\ - !*** ./src/Obj/Base/KML/index.js ***! - \***********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: kml\r\n * @author: Administrator\r\n * @date: 2023-07-19 09:25\r\n * @description:kml\r\n * @update: 2023-07-19 09:25\r\n */\n\n\nvar KML = /*#__PURE__*/function (_Base) {\n function KML(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, KML);\n _this = _callSuper(this, KML, [sdk, options]);\n _this.source = new Cesium.CustomDataSource(_this.options.id);\n // this.source = new Cesium.CompositeEntityCollection([])\n _this.detail = [];\n // this.load()\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(KML, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(KML, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(val) {\n if (this.source) {\n this.source.show = val;\n this.options.show = val;\n }\n }\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n var _this$options$show;\n this.options.id = this.options.id || Cesium.createGuid();\n this.options.url = this.options.url || '';\n this.options.show = (_this$options$show = this.options.show) !== null && _this$options$show !== void 0 ? _this$options$show : true;\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var duration,\n orientation,\n lng,\n lat,\n alt,\n destination,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n duration = _args.length > 0 && _args[0] !== undefined ? _args[0] : 3;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"closeViewFollow\"])(this.sdk);\n if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation,\n duration: duration\n });\n } else {\n if (this.source) this.viewer.flyTo(this.source, {\n duration: duration\n });\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n _superPropGet(KML, \"remove\", this, 3)([]);\n this.viewer.dataSources.remove(this.source);\n this.source = null;\n }\n }, {\n key: \"on\",\n value: function () {\n var _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var _this2 = this;\n var source;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.show = this.options.show;\n _context2.next = 3;\n return Cesium.KmlDataSource.load(this.options.url, {\n camera: this.viewer.scene.camera,\n canvas: this.viewer.scene.canvas\n // clampToGround: true\n });\n case 3:\n source = _context2.sent;\n source.entities.values.forEach(function (entity, index) {\n _this2.detail.push({\n name: entity.name,\n id: entity.id\n });\n if (entity.label) {\n var scale = 1;\n if (entity.billboard) {\n scale = entity.billboard.scale._value;\n }\n entity.label.pixelOffset = new Cesium.Cartesian2(0, -32 * scale - 15);\n entity.label.horizontalOrigin = Cesium.HorizontalOrigin.CENTER;\n entity.label.disableDepthTestDistance = Number.POSITIVE_INFINITY;\n }\n if (entity.polygon) {\n //polygon需要重写,不然无法贴地\n var polygon = {\n hierarchy: entity.polygon.hierarchy.getValue().positions,\n material: entity.polygon.material,\n classificationType: Cesium.ClassificationType.BOTH\n };\n //拆分边线,因为边线不能贴地,需要改为polyline,但是有可能存在entity本身就有polyline,所以需要单独创建一个entity,\n if (entity.polygon.outline.getValue()) {\n var positions = entity.polygon.hierarchy.getValue().positions;\n var entity2 = new Cesium.Entity({\n id: _this2.getOutlineId(entity.id),\n polyline: {\n positions: positions,\n width: entity.polygon.outlineWidth.getValue(),\n material: entity.polygon.outlineColor.getValue(),\n clampToGround: true,\n zIndex: _this2.sdk._entityZIndex\n }\n });\n _this2.source.entities.add(entity2);\n }\n entity.polygon = polygon;\n }\n if (entity.billboard) {\n entity.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n }\n if (entity.polyline) {\n entity.polyline = {\n positions: entity.polyline.positions.getValue(),\n material: entity.polyline.material,\n clampToGround: true,\n width: entity.polyline.width ? entity.polyline.width.getValue() : 1\n };\n //这里在设置贴地的时候,需要单独创建polyline,部分kml的polyline设置贴地,会导致引擎崩溃,原因暂未查询到\n }\n entity.show = true;\n _this2.source.entities.add(entity);\n });\n _context2.next = 7;\n return this.viewer.dataSources.add(this.source);\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function on() {\n return _on.apply(this, arguments);\n }\n return on;\n }()\n }, {\n key: \"getOutlineId\",\n value: function getOutlineId(id) {\n return [id, 'outline'].join('_');\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (KML);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvS01ML2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0tNTC9pbmRleC5qcz8xZDM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZToga21sXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDctMTkgMDk6MjVcclxuICogQGRlc2NyaXB0aW9u77yaa21sXHJcbiAqIEB1cGRhdGU6IDIwMjMtMDctMTkgMDk6MjVcclxuICovXHJcbmltcG9ydCBCYXNlIGZyb20gJy4uL2luZGV4J1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3d9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBLTUwgZXh0ZW5kcyBCYXNlIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5zb3VyY2UgPSBuZXcgQ2VzaXVtLkN1c3RvbURhdGFTb3VyY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgLy8gdGhpcy5zb3VyY2UgPSBuZXcgQ2VzaXVtLkNvbXBvc2l0ZUVudGl0eUNvbGxlY3Rpb24oW10pXHJcbiAgICB0aGlzLmRldGFpbCA9IFtdXHJcbiAgICAvLyB0aGlzLmxvYWQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHZhbCkge1xyXG4gICAgaWYgKHRoaXMuc291cmNlKSB7XHJcbiAgICAgIHRoaXMuc291cmNlLnNob3cgPSB2YWxcclxuICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2YWxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5pZCA9IHRoaXMub3B0aW9ucy5pZCB8fCBDZXNpdW0uY3JlYXRlR3VpZCgpXHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gdGhpcy5vcHRpb25zLnVybCB8fCAnJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvdyA/PyB0cnVlXHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhkdXJhdGlvbiA9IDMpIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcclxuICAgICAgICBkdXJhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnNvdXJjZSkgdGhpcy52aWV3ZXIuZmx5VG8odGhpcy5zb3VyY2UsIHsgZHVyYXRpb24gfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIHN1cGVyLnJlbW92ZSgpXHJcbiAgICB0aGlzLnZpZXdlci5kYXRhU291cmNlcy5yZW1vdmUodGhpcy5zb3VyY2UpXHJcbiAgICB0aGlzLnNvdXJjZSA9IG51bGxcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uKCkge1xyXG4gICAgdGhpcy5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgIGxldCBzb3VyY2UgPSBhd2FpdCBDZXNpdW0uS21sRGF0YVNvdXJjZS5sb2FkKHRoaXMub3B0aW9ucy51cmwsIHtcclxuICAgICAgY2FtZXJhOiB0aGlzLnZpZXdlci5zY2VuZS5jYW1lcmEsXHJcbiAgICAgIGNhbnZhczogdGhpcy52aWV3ZXIuc2NlbmUuY2FudmFzXHJcbiAgICAgIC8vIGNsYW1wVG9Hcm91bmQ6IHRydWVcclxuICAgIH0pXHJcbiAgICBzb3VyY2UuZW50aXRpZXMudmFsdWVzLmZvckVhY2goKGVudGl0eSwgaW5kZXgpID0+IHtcclxuICAgICAgdGhpcy5kZXRhaWwucHVzaCh7IG5hbWU6IGVudGl0eS5uYW1lLCBpZDogZW50aXR5LmlkIH0pXHJcbiAgICAgIGlmIChlbnRpdHkubGFiZWwpIHtcclxuICAgICAgICBsZXQgc2NhbGUgPSAxXHJcbiAgICAgICAgaWYgKGVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICAgIHNjYWxlID0gZW50aXR5LmJpbGxib2FyZC5zY2FsZS5fdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZW50aXR5LmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC0zMiAqIHNjYWxlIC0gMTUpXHJcbiAgICAgICAgZW50aXR5LmxhYmVsLmhvcml6b250YWxPcmlnaW4gPSBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVJcclxuICAgICAgICBlbnRpdHkubGFiZWwuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVudGl0eS5wb2x5Z29uKSB7XHJcbiAgICAgICAgLy9wb2x5Z29u6ZyA6KaB6YeN5YaZ77yM5LiN54S25peg5rOV6LS05ZywXHJcbiAgICAgICAgbGV0IHBvbHlnb24gPSB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IGVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZSgpLnBvc2l0aW9ucyxcclxuICAgICAgICAgIG1hdGVyaWFsOiBlbnRpdHkucG9seWdvbi5tYXRlcmlhbCxcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RIXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v5ouG5YiG6L6557q/77yM5Zug5Li66L6557q/5LiN6IO96LS05ZywLOmcgOimgeaUueS4unBvbHlsaW5l77yM5L2G5piv5pyJ5Y+v6IO95a2Y5ZyoZW50aXR55pys6Lqr5bCx5pyJcG9seWxpbmXvvIzmiYDku6XpnIDopoHljZXni6zliJvlu7rkuIDkuKplbnRpdHnvvIxcclxuICAgICAgICBpZiAoZW50aXR5LnBvbHlnb24ub3V0bGluZS5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gZW50aXR5LnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICBsZXQgZW50aXR5MiA9IG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0T3V0bGluZUlkKGVudGl0eS5pZCksXHJcbiAgICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBlbnRpdHkucG9seWdvbi5vdXRsaW5lV2lkdGguZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICBtYXRlcmlhbDogZW50aXR5LnBvbHlnb24ub3V0bGluZUNvbG9yLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB6SW5kZXg6IHRoaXMuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuc291cmNlLmVudGl0aWVzLmFkZChlbnRpdHkyKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbnRpdHkucG9seWdvbiA9IHBvbHlnb25cclxuICAgICAgfVxyXG4gICAgICBpZiAoZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgIGVudGl0eS5iaWxsYm9hcmQuaGVpZ2h0UmVmZXJlbmNlID1cclxuICAgICAgICAgIENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5EXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVudGl0eS5wb2x5bGluZSkge1xyXG4gICAgICAgIGVudGl0eS5wb2x5bGluZSA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IGVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB3aWR0aDogZW50aXR5LnBvbHlsaW5lLndpZHRoID8gZW50aXR5LnBvbHlsaW5lLndpZHRoLmdldFZhbHVlKCkgOiAxXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v6L+Z6YeM5Zyo6K6+572u6LS05Zyw55qE5pe25YCZ77yM6ZyA6KaB5Y2V54us5Yib5bu6cG9seWxpbmXvvIzpg6jliIZrbWznmoRwb2x5bGluZeiuvue9rui0tOWcsO+8jOS8muWvvOiHtOW8leaTjuW0qea6g++8jOWOn+WboOaaguacquafpeivouWIsFxyXG4gICAgICB9XHJcbiAgICAgIGVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICB0aGlzLnNvdXJjZS5lbnRpdGllcy5hZGQoZW50aXR5KVxyXG4gICAgfSlcclxuICAgIGF3YWl0IHRoaXMudmlld2VyLmRhdGFTb3VyY2VzLmFkZCh0aGlzLnNvdXJjZSlcclxuICB9XHJcblxyXG4gIGdldE91dGxpbmVJZChpZCkge1xyXG4gICAgcmV0dXJuIFtpZCwgJ291dGxpbmUnXS5qb2luKCdfJylcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEtNTFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSkE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBM0RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/KML/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LabelObject/index.js": -/*!*******************************************!*\ - !*** ./src/Obj/Base/LabelObject/index.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/cluster/cluster */ \"./src/Global/cluster/cluster.js\");\n\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 标注\r\n */\n\n\n\n\n\nvar LabelObject = /*#__PURE__*/function (_Base) {\n function LabelObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var model = arguments.length > 2 ? arguments[2] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, LabelObject);\n _this2 = _callSuper(this, LabelObject, [sdk, options]);\n _this2.model = model;\n _this2._canvas = document.createElement('canvas');\n _this2._canvas2 = document.createElement('canvas');\n _this2.options.near = options.near || options.near === 0 ? options.near : 2000;\n _this2.options.far = options.far || options.far === 0 ? options.far : 100000;\n _this2.options.scaleByDistance = options.scaleByDistance || false;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.text = options.text;\n var textArray = _this2.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 40) {\n textArray[i] = textArray[i].slice(0, 40 - textArray[i].length);\n }\n }\n if (textArray.length > 10) {\n textArray.splice(10 - textArray.length);\n }\n _this2.options.text = textArray.join('\\n');\n _this2.options.fontFamily = options.fontFamily || 0;\n _this2.font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_12__[\"getFontFamily\"])(_this2.options.fontFamily) || 'SimHei';\n _this2.options.fontSize = options.fontSize || 20;\n _this2.options.lineWidth = options.lineWidth || 4;\n _this2.options.lineColor = options.lineColor || '#00ffff80';\n _this2.options.color = options.color || '#ffffff';\n _this2.options.ground = options.ground || options.ground === false ? options.ground : true;\n _this2.options.pixelOffset = options.pixelOffset || options.pixelOffset === 0 ? options.pixelOffset : 20;\n _this2.options.backgroundColor = options.backgroundColor || ['#00ffff80', '#00ffff80'];\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this2.sdk);\n _this2.entity;\n _this2.create(_this2.options.position);\n _this2.picking = true;\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(LabelObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(LabelObject, [{\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this, id, oldEntity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this = this;\n if (!(!this.options.position[2] && this.options.position[2] !== 0)) {\n _context.next = 5;\n break;\n }\n _context.next = 4;\n return this.getClampToHeight({\n lng: this.options.position[0],\n lat: this.options.position[1]\n });\n case 4:\n this.options.position[2] = _context.sent;\n case 5:\n this.originalOptions = _copyObj(this.options);\n id = this.options.id + '-label';\n oldEntity = this.sdk.viewer.entities.getById(id);\n if (oldEntity) {\n this.sdk.viewer.entities.remove(oldEntity);\n }\n this.entity = this.sdk.viewer.entities.add({\n show: this.options.show,\n id: this.options.id + '-label',\n position: new Cesium.CallbackProperty(function () {\n if (_this.model) {\n // return Cesium.Cartesian3.fromDegrees(_this.options.position[0], _this.options.position[1], _this.model.originalBoundingSphereRadius*2*_this.model.customScale.z + _this.options.position[2])\n if (_this.model.isMove) {\n var scale = _this.model.customScale.x;\n if (_this.model.customScale.y > scale) {\n scale = _this.model.customScale.y;\n }\n if (_this.model.customScale.z > scale) {\n scale = _this.model.customScale.z;\n }\n var point1 = Cesium.Cartesian3.fromDegrees(_this.options.position[0], _this.options.position[1], _this.options.position[2] + (_this.model.originalBoundingSphereRadius || 1) * 2 * (scale || 0.01));\n // 点2的位置,也使用经纬高表示\n var point2 = Cesium.Cartesian3.fromDegrees(_this.options.position[0], _this.options.position[1], _this.options.position[2] - (_this.model.originalBoundingSphereRadius || 1) * 2 * (scale || 0.01));\n var direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n var c = Cesium.Cartesian3.normalize(direction, direction);\n var ray = new Cesium.Ray(point1, c);\n var pickedObjects = _this.viewer.scene.drillPickFromRay(ray, 5);\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].object && pickedObjects[i].object.id && pickedObjects[i].object.id === _this.model.id) {\n var pos84 = _this.cartesian3Towgs84(pickedObjects[i].position, _this.sdk.viewer);\n _this.options.position[0] = pos84.lng;\n _this.options.position[1] = pos84.lat;\n _this.options.position[2] = pos84.alt;\n break;\n }\n }\n }\n return Cesium.Cartesian3.fromDegrees(_this.options.position[0], _this.options.position[1], _this.options.position[2]);\n } else {\n var _Cesium$Cartesian;\n return (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(_this.options.position));\n }\n }, false),\n billboard: {\n image: this.getcanvas(),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_11__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false),\n scaleByDistance: this.options.scaleByDistance ? new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0) : undefined,\n pixelOffsetScaleByDistance: this.options.scaleByDistance ? new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0) : undefined\n }\n // label: {\n // show: this.options.show,\n // text: new Cesium.CallbackProperty(function () {\n // return _this.options.text\n // }, false),\n // font: this.options.fontSize + \"px Helvetica\",\n // fillColor: Cesium.Color.fromCssColorString(this.options.color),\n // pixelOffset: new Cesium.Cartesian2(0, -this.options.pixelOffset),\n // outlineColor: Cesium.Color.BLACK,\n // backgroundColor: Cesium.Color.fromCssColorString('#42c6ef'),\n // backgroundPadding: new Cesium.Cartesian2(12, 12),\n // showBackground: true,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // outlineWidth: 1,\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // },\n });\n case 10:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function create() {\n return _create.apply(this, arguments);\n }\n return create;\n }()\n }, {\n key: \"position\",\n get: function get() {\n return this.options.position;\n },\n set: function set(v) {\n var _this3 = this;\n // console.log(v)\n this.options.position = v;\n if (!v[2] && v[2] !== 0) {\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.sdk.viewer.entities.values);\n this.getClampToHeight({\n lng: v[0],\n lat: v[1]\n }, objectsToExclude).then(function (height) {\n if (_this3.ground) {\n v[2] = height;\n _this3.options.position = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(v);\n }\n });\n // let point1 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 0);\n // let point2 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 10000000);\n // let direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n // let c = Cesium.Cartesian3.normalize(direction, direction);\n // let ray = new Cesium.Ray(point1, c);\n // let r = {}\n // let pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n // for (let i = 0; i < pickedObjects.length; i++) {\n // if (pickedObjects[i].position) {\n // r = pickedObjects[i]\n // break\n // }\n // }\n // if (r && r.position) {\n // this.options.position[2] = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt\n // }\n // else {\n // try {\n // let promise = Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(this.options.position[0], this.options.position[1])]);\n // promise.then((p) => {\n // this.options.position[2] = p[0].height\n // }).catch((e)=>{\n // })\n // } catch (error) {\n // }\n // }\n } else {\n this.options.position = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(v);\n }\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.show = v;\n if (!this.entity) {\n return;\n }\n this.entity.show = v;\n if (this.model) {\n // return Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], this.model.originalBoundingSphereRadius*2*this.model.customScale.z + this.options.position[2])\n var scale = this.model.customScale.x;\n if (this.model.customScale.y > scale) {\n scale = this.model.customScale.y;\n }\n if (this.model.customScale.z > scale) {\n scale = this.model.customScale.z;\n }\n var point1 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], this.options.position[2] + (this.model.originalBoundingSphereRadius || 1) * 2 * (scale || 0.01));\n // 点2的位置,也使用经纬高表示\n var point2 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], this.options.position[2] - (this.model.originalBoundingSphereRadius || 1) * 2 * (scale || 0.01));\n var direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n var c = Cesium.Cartesian3.normalize(direction, direction);\n var ray = new Cesium.Ray(point1, c);\n var pickedObjects = this.viewer.scene.drillPickFromRay(ray, 5);\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].object && pickedObjects[i].object.id && pickedObjects[i].object.id === this.model.id) {\n var pos84 = this.cartesian3Towgs84(pickedObjects[i].position, this.sdk.viewer);\n this.options.position[0] = pos84.lng;\n this.options.position[1] = pos84.lat;\n this.options.position[2] = pos84.alt;\n break;\n }\n }\n } else if (this.options.ground) {\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.sdk.viewer.entities.values);\n this.getClampToHeight({\n lng: this.options.position[0],\n lat: this.options.position[1]\n }, objectsToExclude).then(function (height) {\n if (_this4.ground) {\n _this4.options.position[2] = height;\n }\n });\n }\n }\n }, {\n key: \"text\",\n get: function get() {\n return this.options.text;\n },\n set: function set(v) {\n this.options.text = v;\n var textArray = this.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 40) {\n textArray[i] = textArray[i].slice(0, 40 - textArray[i].length);\n }\n }\n if (textArray.length > 10) {\n textArray.splice(10 - textArray.length);\n }\n this.options.text = textArray.join('\\n');\n this.entity && this.updateBillboardImage();\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n this.options.color = v;\n this.entity && (this.entity.billboard.image = this.getcanvas());\n }\n }, {\n key: \"scaleByDistance\",\n get: function get() {\n return this.options.scaleByDistance;\n },\n set: function set(v) {\n this.options.scaleByDistance = v;\n if (!this.entity) {\n return;\n }\n if (this.options.scaleByDistance) {\n this.entity.billboard.scaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n } else {\n this.entity.billboard.scaleByDistance = undefined;\n this.entity.billboard.pixelOffsetScaleByDistance = undefined;\n }\n }\n }, {\n key: \"near\",\n get: function get() {\n return this.options.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.far) {\n near = this.far;\n }\n this.options.near = near;\n if (!this.entity) {\n return;\n }\n if (this.options.scaleByDistance) {\n this.entity.billboard.scaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n } else {\n this.entity.billboard.scaleByDistance = undefined;\n this.entity.billboard.pixelOffsetScaleByDistance = undefined;\n }\n }\n }, {\n key: \"far\",\n get: function get() {\n return this.options.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.near) {\n far = this.near;\n }\n this.options.far = far;\n if (!this.entity) {\n return;\n }\n if (this.options.scaleByDistance) {\n this.entity.billboard.scaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n this.entity.billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(this.options.near, 1, this.options.far, 0);\n } else {\n this.entity.billboard.scaleByDistance = undefined;\n this.entity.billboard.pixelOffsetScaleByDistance = undefined;\n }\n }\n }, {\n key: \"fontSize\",\n get: function get() {\n return this.options.fontSize;\n },\n set: function set(v) {\n this.options.fontSize = Number(v);\n if (!this.entity) {\n return;\n }\n this.updateBillboardImage();\n }\n }, {\n key: \"fontFamily\",\n get: function get() {\n return this.options.fontFamily;\n },\n set: function set(v) {\n this.options.fontFamily = v || 0;\n this.font = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_12__[\"getFontFamily\"])(this.options.fontFamily) || 'SimHei';\n this.updateBillboardImage();\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.lineWidth;\n },\n set: function set(v) {\n this.options.lineWidth = Number(v) || Number(v) === 0 ? Number(v) : 4;\n if (!this.entity) {\n return;\n }\n this.updateBillboardImage();\n }\n }, {\n key: \"pixelOffset\",\n get: function get() {\n return this.options.pixelOffset;\n },\n set: function set(v) {\n this.options.pixelOffset = Number(v);\n if (!this.entity) {\n return;\n }\n this.updateBillboardImage();\n }\n }, {\n key: \"updateBillboardImage\",\n value: function updateBillboardImage() {\n this.entity.billboard.image = this.getcanvas();\n // clearTimeout(this.#updateBillboardImageTimeout)\n // this.#updateBillboardImageTimeout = setTimeout(() => {\n // clearTimeout(this.#updateBillboardImageTimeout)\n // this.entity.billboard.image = this.getcanvas()\n // }, 500)\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.pixelOffset;\n },\n set: function set(v) {\n this.options.lineColor = v || '#00ffff80';\n if (!this.entity) {\n return;\n }\n this.entity.billboard.image = this.getcanvas();\n }\n }, {\n key: \"backgroundColor\",\n get: function get() {\n return this.options.backgroundColor;\n },\n set: function set(v) {\n this.options.backgroundColor = v;\n if (!this.entity) {\n return;\n }\n this.entity.billboard.image = this.getcanvas();\n }\n }, {\n key: \"ground\",\n get: function get() {\n return this.options.ground;\n },\n set: function set(v) {\n this.options.ground = v;\n }\n\n // get backgroundColorStart() {\n // return this.options.backgroundColor[0]\n // }\n // set backgroundColorStart(v) {\n // this.options.backgroundColor[0] = v\n // this.entity.billboard.image = this.getcanvas()\n // }\n // get backgroundColorEnd() {\n // return this.options.backgroundColor[1]\n // }\n // set backgroundColorEnd(v) {\n // this.options.backgroundColor[1] = v\n // this.entity.billboard.image = this.getcanvas()\n // }\n }, {\n key: \"getcanvas\",\n value: function getcanvas() {\n var ctx = this._canvas.getContext('2d');\n ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n ctx.font = this.options.fontSize + 'px ' + this.font;\n this.options.outlineWidth = 0;\n var texts = this.options.text.split('\\n');\n var canvasWidth = 0;\n var canvasHeight = 0;\n for (var i = 0; i < texts.length; i++) {\n var text = texts[i];\n var width = ctx.measureText(text).width;\n if (width > canvasWidth) {\n canvasWidth = width;\n }\n canvasHeight += this.options.fontSize + this.options.outlineWidth * 2;\n }\n canvasHeight = canvasHeight + 20 + (texts.length - 1) * 5;\n canvasWidth = canvasWidth + 30;\n if (canvasWidth < this.options.lineWidth) {\n canvasWidth = this.options.lineWidth;\n }\n this._canvas.width = canvasWidth;\n this._canvas.height = this.options.pixelOffset + canvasHeight;\n var linearGradient = ctx.createLinearGradient(0, 0, canvasWidth, canvasHeight + 20);\n linearGradient.addColorStop(0, this.options.backgroundColor[0]);\n linearGradient.addColorStop(1, this.options.backgroundColor[1]);\n ctx.fillStyle = linearGradient;\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = this.options.color;\n ctx.font = this.options.fontSize + 'px ' + this.font;\n var maxWidth = 0;\n for (var _i = 0; _i < texts.length; _i++) {\n var _width = ctx.measureText(texts[_i]).width + this.options.outlineWidth * 2;\n if (maxWidth < _width) {\n maxWidth = _width;\n }\n }\n maxWidth = maxWidth + 30;\n var centerDistance = (canvasWidth - maxWidth) / 2;\n for (var _i2 = 0; _i2 < texts.length; _i2++) {\n var _text = texts[_i2];\n ctx.strokeStyle = this.options.outlineColor; // 边框颜色\n ctx.lineWidth = this.options.outlineWidth * 2; // 边框粗细\n if (this.options.fontSize < 10) {\n ctx.strokeText(_text, 15 + centerDistance + this.options.outlineWidth, this.options.fontSize * (_i2 + 1) + 10 + _i2 * 5 + this.options.outlineWidth);\n ctx.fillText(_text, 15 + centerDistance + this.options.outlineWidth, this.options.fontSize * (_i2 + 1) + 10 + _i2 * 5 + this.options.outlineWidth);\n } else {\n ctx.strokeText(_text, 15 + centerDistance + this.options.outlineWidth, this.options.fontSize * (_i2 + 1) + 10 * 10 / this.options.fontSize + _i2 * 5 + this.options.outlineWidth / 2);\n ctx.fillText(_text, 15 + centerDistance + this.options.outlineWidth, this.options.fontSize * (_i2 + 1) + 10 * 10 / this.options.fontSize + _i2 * 5 + this.options.outlineWidth / 2);\n }\n }\n\n // 虚线\n ctx.strokeStyle = this.options.lineColor;\n ctx.setLineDash([4, 4]); //设置虚线长度4,间隔为4\n ctx.lineWidth = this.options.lineWidth;\n ctx.beginPath();\n ctx.moveTo(canvasWidth / 2, canvasHeight);\n ctx.lineTo(canvasWidth / 2, canvasHeight + this.options.pixelOffset);\n ctx.stroke();\n ctx.closePath();\n var ctx2 = this._canvas2.getContext('2d');\n this._canvas2.width = this._canvas.width + 10;\n this._canvas2.height = this._canvas.height + 10;\n ctx2.drawImage(this._canvas, 5, 5);\n\n // const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // ctx.putImageData(imageData, 40, 40);\n return this._canvas2.toDataURL(\"image/png\");\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (LabelObject);\nvar _copyObj = function copyObj() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n //变量先置空\n var newobj = null;\n\n //判断是否需要继续进行递归\n if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(obj) == 'object' && obj !== null) {\n newobj = obj instanceof Array ? [] : {}; //进行下一层递归克隆\n for (var i in obj) {\n newobj[i] = _copyObj(obj[i]);\n } //如果不是对象直接赋值\n } else newobj = obj;\n return newobj;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTGFiZWxPYmplY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvTGFiZWxPYmplY3QvaW5kZXguanM/MzkxOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog5qCH5rOoXHJcbiAqL1xyXG5pbXBvcnQgQmFzZSBmcm9tICcuLi9pbmRleCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCB7XHJcbiAgZ2V0R3JvdW5kQ292ZXJcclxufSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBnZXRGb250RmFtaWx5IH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQge1xyXG4gIGFkZENsdXN0ZXIsXHJcbiAgcmVtb3ZlX2VudGl0eV9mcm9tX2NsdXN0ZXJcclxufSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvY2x1c3Rlci9jbHVzdGVyJ1xyXG5cclxuY2xhc3MgTGFiZWxPYmplY3QgZXh0ZW5kcyBCYXNlIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgbW9kZWwpIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMubW9kZWwgPSBtb2RlbFxyXG4gICAgdGhpcy5fY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJylcclxuICAgIHRoaXMuX2NhbnZhczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgdGhpcy5vcHRpb25zLm5lYXIgPSBvcHRpb25zLm5lYXIgfHwgb3B0aW9ucy5uZWFyID09PSAwID8gb3B0aW9ucy5uZWFyIDogMjAwMFxyXG4gICAgdGhpcy5vcHRpb25zLmZhciA9IG9wdGlvbnMuZmFyIHx8IG9wdGlvbnMuZmFyID09PSAwID8gb3B0aW9ucy5mYXIgOiAxMDAwMDBcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZUJ5RGlzdGFuY2UgPSBvcHRpb25zLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPVxyXG4gICAgICBvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gb3B0aW9ucy50ZXh0XHJcbiAgICBsZXQgdGV4dEFycmF5ID0gdGhpcy5vcHRpb25zLnRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGV4dEFycmF5W2ldLmxlbmd0aCA+IDQwKSB7XHJcbiAgICAgICAgdGV4dEFycmF5W2ldID0gdGV4dEFycmF5W2ldLnNsaWNlKDAsIDQwIC0gdGV4dEFycmF5W2ldLmxlbmd0aClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRleHRBcnJheS5sZW5ndGggPiAxMCkge1xyXG4gICAgICB0ZXh0QXJyYXkuc3BsaWNlKDEwIC0gdGV4dEFycmF5Lmxlbmd0aClcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdGV4dEFycmF5LmpvaW4oJ1xcbicpXHJcbiAgICB0aGlzLm9wdGlvbnMuZm9udEZhbWlseSA9IG9wdGlvbnMuZm9udEZhbWlseSB8fCAwXHJcbiAgICB0aGlzLmZvbnQgPSBnZXRGb250RmFtaWx5KHRoaXMub3B0aW9ucy5mb250RmFtaWx5KSB8fCAnU2ltSGVpJ1xyXG4gICAgdGhpcy5vcHRpb25zLmZvbnRTaXplID0gb3B0aW9ucy5mb250U2l6ZSB8fCAyMFxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVXaWR0aCA9IG9wdGlvbnMubGluZVdpZHRoIHx8IDRcclxuICAgIHRoaXMub3B0aW9ucy5saW5lQ29sb3IgPSBvcHRpb25zLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJ1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCAnI2ZmZmZmZidcclxuICAgIHRoaXMub3B0aW9ucy5ncm91bmQgPVxyXG4gICAgICBvcHRpb25zLmdyb3VuZCB8fCBvcHRpb25zLmdyb3VuZCA9PT0gZmFsc2UgPyBvcHRpb25zLmdyb3VuZCA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5waXhlbE9mZnNldCA9XHJcbiAgICAgIG9wdGlvbnMucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5waXhlbE9mZnNldCA9PT0gMFxyXG4gICAgICAgID8gb3B0aW9ucy5waXhlbE9mZnNldFxyXG4gICAgICAgIDogMjBcclxuICAgIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgPSBvcHRpb25zLmJhY2tncm91bmRDb2xvciB8fCBbXHJcbiAgICAgICcjMDBmZmZmODAnLFxyXG4gICAgICAnIzAwZmZmZjgwJ1xyXG4gICAgXVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgdGhpcy5lbnRpdHlcclxuICAgIHRoaXMuY3JlYXRlKHRoaXMub3B0aW9ucy5wb3NpdGlvbilcclxuICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZSgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdICYmIHRoaXMub3B0aW9ucy5wb3NpdGlvblsyXSAhPT0gMCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25bMl0gPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdLFxyXG4gICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGNvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGxldCBpZCA9IHRoaXMub3B0aW9ucy5pZCArICctbGFiZWwnXHJcbiAgICBsZXQgb2xkRW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoaWQpXHJcbiAgICBpZiAob2xkRW50aXR5KSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUob2xkRW50aXR5KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgc2hvdzogdGhpcy5vcHRpb25zLnNob3csXHJcbiAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWQgKyAnLWxhYmVsJyxcclxuICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKF90aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoX3RoaXMub3B0aW9ucy5wb3NpdGlvblswXSwgX3RoaXMub3B0aW9ucy5wb3NpdGlvblsxXSwgX3RoaXMubW9kZWwub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyoyKl90aGlzLm1vZGVsLmN1c3RvbVNjYWxlLnogKyBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdKVxyXG4gICAgICAgICAgaWYgKF90aGlzLm1vZGVsLmlzTW92ZSkge1xyXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSBfdGhpcy5tb2RlbC5jdXN0b21TY2FsZS54XHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5tb2RlbC5jdXN0b21TY2FsZS55ID4gc2NhbGUpIHtcclxuICAgICAgICAgICAgICBzY2FsZSA9IF90aGlzLm1vZGVsLmN1c3RvbVNjYWxlLnlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoX3RoaXMubW9kZWwuY3VzdG9tU2NhbGUueiA+IHNjYWxlKSB7XHJcbiAgICAgICAgICAgICAgc2NhbGUgPSBfdGhpcy5tb2RlbC5jdXN0b21TY2FsZS56XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHBvaW50MSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25bMF0sXHJcbiAgICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvblsxXSxcclxuICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdICtcclxuICAgICAgICAgICAgICAoX3RoaXMubW9kZWwub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyB8fCAxKSAqXHJcbiAgICAgICAgICAgICAgMiAqXHJcbiAgICAgICAgICAgICAgKHNjYWxlIHx8IDAuMDEpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLy8g54K5MueahOS9jee9ru+8jOS5n+S9v+eUqOe7j+e6rOmrmOihqOekulxyXG4gICAgICAgICAgICBsZXQgcG9pbnQyID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvblswXSxcclxuICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdLFxyXG4gICAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25bMl0gLVxyXG4gICAgICAgICAgICAgIChfdGhpcy5tb2RlbC5vcmlnaW5hbEJvdW5kaW5nU3BoZXJlUmFkaXVzIHx8IDEpICpcclxuICAgICAgICAgICAgICAyICpcclxuICAgICAgICAgICAgICAoc2NhbGUgfHwgMC4wMSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBsZXQgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgICAgICAgICAgcG9pbnQyLFxyXG4gICAgICAgICAgICAgIHBvaW50MSxcclxuICAgICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGxldCBjID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpcmVjdGlvbiwgZGlyZWN0aW9uKVxyXG4gICAgICAgICAgICBsZXQgcmF5ID0gbmV3IENlc2l1bS5SYXkocG9pbnQxLCBjKVxyXG4gICAgICAgICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IF90aGlzLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSwgNSlcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgcGlja2VkT2JqZWN0c1tpXS5vYmplY3QgJiZcclxuICAgICAgICAgICAgICAgIHBpY2tlZE9iamVjdHNbaV0ub2JqZWN0LmlkICYmXHJcbiAgICAgICAgICAgICAgICBwaWNrZWRPYmplY3RzW2ldLm9iamVjdC5pZCA9PT0gX3RoaXMubW9kZWwuaWRcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBpY2tlZE9iamVjdHNbaV0ucG9zaXRpb24sIF90aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdID0gcG9zODQubG5nXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdID0gcG9zODQubGF0XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdID0gcG9zODQuYWx0XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvblswXSxcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvblsxXSxcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvblsyXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoLi4uX3RoaXMub3B0aW9ucy5wb3NpdGlvbilcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0Y2FudmFzKCksXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgICAgICA/IG5ldyBDZXNpdW0uTmVhckZhclNjYWxhcih0aGlzLm9wdGlvbnMubmVhciwgMSwgdGhpcy5vcHRpb25zLmZhciwgMClcclxuICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOiB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgICAgICA/IG5ldyBDZXNpdW0uTmVhckZhclNjYWxhcih0aGlzLm9wdGlvbnMubmVhciwgMSwgdGhpcy5vcHRpb25zLmZhciwgMClcclxuICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgLy8gbGFiZWw6IHtcclxuICAgICAgLy8gICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgLy8gICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyAgICAgcmV0dXJuIF90aGlzLm9wdGlvbnMudGV4dFxyXG4gICAgICAvLyAgIH0sIGZhbHNlKSxcclxuICAgICAgLy8gICBmb250OiB0aGlzLm9wdGlvbnMuZm9udFNpemUgKyBcInB4IEhlbHZldGljYVwiLFxyXG4gICAgICAvLyAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpLFxyXG4gICAgICAvLyAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLXRoaXMub3B0aW9ucy5waXhlbE9mZnNldCksXHJcbiAgICAgIC8vICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgIC8vICAgYmFja2dyb3VuZENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjNDJjNmVmJyksXHJcbiAgICAgIC8vICAgYmFja2dyb3VuZFBhZGRpbmc6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxMiwgMTIpLFxyXG4gICAgICAvLyAgIHNob3dCYWNrZ3JvdW5kOiB0cnVlLFxyXG4gICAgICAvLyAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAvLyAgIG91dGxpbmVXaWR0aDogMSxcclxuICAgICAgLy8gICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgLy8gfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgfVxyXG4gIHNldCBwb3NpdGlvbih2KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyh2KVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gdlxyXG4gICAgaWYgKCF2WzJdICYmIHZbMl0gIT09IDApIHtcclxuICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICBsbmc6IHZbMF0sXHJcbiAgICAgICAgbGF0OiB2WzFdXHJcbiAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICBpZih0aGlzLmdyb3VuZCkge1xyXG4gICAgICAgICAgdlsyXSA9IGhlaWdodFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gWy4uLnZdXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAvLyBsZXQgcG9pbnQxID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdLCB0aGlzLm9wdGlvbnMucG9zaXRpb25bMV0sIDApO1xyXG4gICAgICAvLyBsZXQgcG9pbnQyID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdLCB0aGlzLm9wdGlvbnMucG9zaXRpb25bMV0sIDEwMDAwMDAwKTtcclxuICAgICAgLy8gbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KHBvaW50MiwgcG9pbnQxLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIC8vIGxldCBjID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpcmVjdGlvbiwgZGlyZWN0aW9uKTtcclxuICAgICAgLy8gbGV0IHJheSA9IG5ldyBDZXNpdW0uUmF5KHBvaW50MSwgYyk7XHJcbiAgICAgIC8vIGxldCByID0ge31cclxuICAgICAgLy8gbGV0IHBpY2tlZE9iamVjdHMgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZHJpbGxQaWNrRnJvbVJheShyYXkpO1xyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBpZiAocGlja2VkT2JqZWN0c1tpXS5wb3NpdGlvbikge1xyXG4gICAgICAvLyAgICAgciA9IHBpY2tlZE9iamVjdHNbaV1cclxuICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmIChyICYmIHIucG9zaXRpb24pIHtcclxuICAgICAgLy8gICB0aGlzLm9wdGlvbnMucG9zaXRpb25bMl0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHIucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgdHJ5IHtcclxuICAgICAgLy8gICAgIGxldCBwcm9taXNlID0gQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQodGhpcy5zZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlciwgW0Nlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdLCB0aGlzLm9wdGlvbnMucG9zaXRpb25bMV0pXSk7XHJcbiAgICAgIC8vICAgICBwcm9taXNlLnRoZW4oKHApID0+IHtcclxuICAgICAgLy8gICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdID0gcFswXS5oZWlnaHRcclxuICAgICAgLy8gICAgIH0pLmNhdGNoKChlKT0+e1xyXG4gICAgICAvLyAgICAgfSlcclxuICAgICAgLy8gICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gWy4uLnZdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHZcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMubW9kZWwpIHtcclxuICAgICAgLy8gcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvblswXSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdLCB0aGlzLm1vZGVsLm9yaWdpbmFsQm91bmRpbmdTcGhlcmVSYWRpdXMqMip0aGlzLm1vZGVsLmN1c3RvbVNjYWxlLnogKyB0aGlzLm9wdGlvbnMucG9zaXRpb25bMl0pXHJcbiAgICAgIGxldCBzY2FsZSA9IHRoaXMubW9kZWwuY3VzdG9tU2NhbGUueFxyXG4gICAgICBpZiAodGhpcy5tb2RlbC5jdXN0b21TY2FsZS55ID4gc2NhbGUpIHtcclxuICAgICAgICBzY2FsZSA9IHRoaXMubW9kZWwuY3VzdG9tU2NhbGUueVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1vZGVsLmN1c3RvbVNjYWxlLnogPiBzY2FsZSkge1xyXG4gICAgICAgIHNjYWxlID0gdGhpcy5tb2RlbC5jdXN0b21TY2FsZS56XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvaW50MSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvblswXSxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25bMV0sXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdICtcclxuICAgICAgICAodGhpcy5tb2RlbC5vcmlnaW5hbEJvdW5kaW5nU3BoZXJlUmFkaXVzIHx8IDEpICpcclxuICAgICAgICAyICpcclxuICAgICAgICAoc2NhbGUgfHwgMC4wMSlcclxuICAgICAgKVxyXG4gICAgICAvLyDngrky55qE5L2N572u77yM5Lmf5L2/55So57uP57qs6auY6KGo56S6XHJcbiAgICAgIGxldCBwb2ludDIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25bMF0sXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvblsyXSAtXHJcbiAgICAgICAgKHRoaXMubW9kZWwub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyB8fCAxKSAqXHJcbiAgICAgICAgMiAqXHJcbiAgICAgICAgKHNjYWxlIHx8IDAuMDEpXHJcbiAgICAgIClcclxuICAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KFxyXG4gICAgICAgIHBvaW50MixcclxuICAgICAgICBwb2ludDEsXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgKVxyXG4gICAgICBsZXQgYyA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShkaXJlY3Rpb24sIGRpcmVjdGlvbilcclxuICAgICAgbGV0IHJheSA9IG5ldyBDZXNpdW0uUmF5KHBvaW50MSwgYylcclxuICAgICAgbGV0IHBpY2tlZE9iamVjdHMgPSB0aGlzLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSwgNSlcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGlja2VkT2JqZWN0c1tpXS5vYmplY3QgJiZcclxuICAgICAgICAgIHBpY2tlZE9iamVjdHNbaV0ub2JqZWN0LmlkICYmXHJcbiAgICAgICAgICBwaWNrZWRPYmplY3RzW2ldLm9iamVjdC5pZCA9PT0gdGhpcy5tb2RlbC5pZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25bMF0gPSBwb3M4NC5sbmdcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvblsxXSA9IHBvczg0LmxhdFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdID0gcG9zODQuYWx0XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmdyb3VuZCkge1xyXG4gICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uWzBdLFxyXG4gICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uWzFdXHJcbiAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICBpZih0aGlzLmdyb3VuZCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uWzJdID0gaGVpZ2h0XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCB0ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50ZXh0XHJcbiAgfVxyXG4gIHNldCB0ZXh0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdlxyXG4gICAgbGV0IHRleHRBcnJheSA9IHRoaXMub3B0aW9ucy50ZXh0LnNwbGl0KCdcXG4nKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRleHRBcnJheVtpXS5sZW5ndGggPiA0MCkge1xyXG4gICAgICAgIHRleHRBcnJheVtpXSA9IHRleHRBcnJheVtpXS5zbGljZSgwLCA0MCAtIHRleHRBcnJheVtpXS5sZW5ndGgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0ZXh0QXJyYXkubGVuZ3RoID4gMTApIHtcclxuICAgICAgdGV4dEFycmF5LnNwbGljZSgxMCAtIHRleHRBcnJheS5sZW5ndGgpXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHRleHRBcnJheS5qb2luKCdcXG4nKVxyXG4gICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMudXBkYXRlQmlsbGJvYXJkSW1hZ2UoKSlcclxuICB9XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICB9XHJcbiAgc2V0IGNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHZcclxuICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSB0aGlzLmdldGNhbnZhcygpKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBzY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSkge1xyXG4gICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubmVhclxyXG4gIH1cclxuICBzZXQgbmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5mYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMuZmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubmVhciA9IG5lYXJcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSkge1xyXG4gICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mYXJcclxuICB9XHJcbiAgc2V0IGZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLm5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5mYXIgPSBmYXJcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlQnlEaXN0YW5jZSkge1xyXG4gICAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5uZWFyLFxyXG4gICAgICAgIDEsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmZhcixcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZvbnRTaXplXHJcbiAgfVxyXG4gIHNldCBmb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZm9udFNpemUgPSBOdW1iZXIodilcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUJpbGxib2FyZEltYWdlKClcclxuICB9XHJcblxyXG4gIGdldCBmb250RmFtaWx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mb250RmFtaWx5XHJcbiAgfVxyXG5cclxuICBzZXQgZm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5mb250ID0gZ2V0Rm9udEZhbWlseSh0aGlzLm9wdGlvbnMuZm9udEZhbWlseSkgfHwgJ1NpbUhlaSdcclxuICAgIHRoaXMudXBkYXRlQmlsbGJvYXJkSW1hZ2UoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVXaWR0aCA9ICgoTnVtYmVyKHYpIHx8IE51bWJlcih2KSA9PT0gMCkgPyBOdW1iZXIodikgOiA0KVxyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQmlsbGJvYXJkSW1hZ2UoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgcGl4ZWxPZmZzZXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBpeGVsT2Zmc2V0ID0gTnVtYmVyKHYpXHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVCaWxsYm9hcmRJbWFnZSgpXHJcbiAgfVxyXG4gIHVwZGF0ZUJpbGxib2FyZEltYWdlKCkge1xyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmltYWdlID0gdGhpcy5nZXRjYW52YXMoKVxyXG4gICAgLy8gY2xlYXJUaW1lb3V0KHRoaXMuI3VwZGF0ZUJpbGxib2FyZEltYWdlVGltZW91dClcclxuICAgIC8vIHRoaXMuI3VwZGF0ZUJpbGxib2FyZEltYWdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICBjbGVhclRpbWVvdXQodGhpcy4jdXBkYXRlQmlsbGJvYXJkSW1hZ2VUaW1lb3V0KVxyXG4gICAgLy8gICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSB0aGlzLmdldGNhbnZhcygpXHJcbiAgICAvLyB9LCA1MDApXHJcbiAgfVxyXG4gIGdldCBsaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBpeGVsT2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBsaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVDb2xvciA9IHYgfHwgJyMwMGZmZmY4MCdcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5iaWxsYm9hcmQuaW1hZ2UgPSB0aGlzLmdldGNhbnZhcygpXHJcbiAgfVxyXG5cclxuICBnZXQgYmFja2dyb3VuZENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3JcclxuICB9XHJcbiAgc2V0IGJhY2tncm91bmRDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yID0gdlxyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICB9XHJcblxyXG4gIGdldCBncm91bmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdyb3VuZFxyXG4gIH1cclxuICBzZXQgZ3JvdW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5ncm91bmQgPSB2XHJcbiAgfVxyXG5cclxuICAvLyBnZXQgYmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvclswXVxyXG4gIC8vIH1cclxuICAvLyBzZXQgYmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAvLyAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAvLyB9XHJcbiAgLy8gZ2V0IGJhY2tncm91bmRDb2xvckVuZCgpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgLy8gfVxyXG4gIC8vIHNldCBiYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAvLyAgIHRoaXMuZW50aXR5LmJpbGxib2FyZC5pbWFnZSA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAvLyB9XHJcblxyXG4gIGdldGNhbnZhcygpIHtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcbiAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2NhbnZhcy53aWR0aCwgdGhpcy5fY2FudmFzLmhlaWdodCk7XHJcbiAgICBjdHguZm9udCA9IHRoaXMub3B0aW9ucy5mb250U2l6ZSArICdweCAnICsgdGhpcy5mb250XHJcbiAgICB0aGlzLm9wdGlvbnMub3V0bGluZVdpZHRoID0gMFxyXG4gICAgbGV0IHRleHRzID0gdGhpcy5vcHRpb25zLnRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICBsZXQgY2FudmFzV2lkdGggPSAwXHJcbiAgICBsZXQgY2FudmFzSGVpZ2h0ID0gMFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB0ZXh0ID0gdGV4dHNbaV1cclxuICAgICAgY29uc3Qgd2lkdGggPSBjdHgubWVhc3VyZVRleHQodGV4dCkud2lkdGhcclxuICAgICAgaWYgKHdpZHRoID4gY2FudmFzV2lkdGgpIHtcclxuICAgICAgICBjYW52YXNXaWR0aCA9IHdpZHRoXHJcbiAgICAgIH1cclxuICAgICAgY2FudmFzSGVpZ2h0ICs9ICh0aGlzLm9wdGlvbnMuZm9udFNpemUgKyAodGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCAqIDIpKVxyXG4gICAgfVxyXG4gICAgY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICsgMjAgKyAodGV4dHMubGVuZ3RoIC0gMSkgKiA1XHJcbiAgICBjYW52YXNXaWR0aCA9IGNhbnZhc1dpZHRoICsgMzBcclxuICAgIGlmIChjYW52YXNXaWR0aCA8IHRoaXMub3B0aW9ucy5saW5lV2lkdGgpIHtcclxuICAgICAgY2FudmFzV2lkdGggPSB0aGlzLm9wdGlvbnMubGluZVdpZHRoXHJcbiAgICB9XHJcbiAgICB0aGlzLl9jYW52YXMud2lkdGggPSBjYW52YXNXaWR0aFxyXG4gICAgdGhpcy5fY2FudmFzLmhlaWdodCA9IHRoaXMub3B0aW9ucy5waXhlbE9mZnNldCArIGNhbnZhc0hlaWdodFxyXG4gICAgY29uc3QgbGluZWFyR3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoXHJcbiAgICAgIDAsXHJcbiAgICAgIDAsXHJcbiAgICAgIGNhbnZhc1dpZHRoLFxyXG4gICAgICBjYW52YXNIZWlnaHQgKyAyMFxyXG4gICAgKVxyXG4gICAgbGluZWFyR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3JbMF0pXHJcbiAgICBsaW5lYXJHcmFkaWVudC5hZGRDb2xvclN0b3AoMSwgdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvclsxXSlcclxuICAgIGN0eC5maWxsU3R5bGUgPSBsaW5lYXJHcmFkaWVudFxyXG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhc1dpZHRoLCBjYW52YXNIZWlnaHQpXHJcbiAgICBjdHguZmlsbFN0eWxlID0gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgICBjdHguZm9udCA9IHRoaXMub3B0aW9ucy5mb250U2l6ZSArICdweCAnICsgdGhpcy5mb250XHJcbiAgICBsZXQgbWF4V2lkdGggPSAwXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB3aWR0aCA9IGN0eC5tZWFzdXJlVGV4dCh0ZXh0c1tpXSkud2lkdGggKyAodGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCAqIDIpXHJcbiAgICAgIGlmIChtYXhXaWR0aCA8IHdpZHRoKSB7XHJcbiAgICAgICAgbWF4V2lkdGggPSB3aWR0aFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBtYXhXaWR0aCA9IG1heFdpZHRoICsgMzBcclxuICAgIGxldCBjZW50ZXJEaXN0YW5jZSA9IChjYW52YXNXaWR0aCAtIG1heFdpZHRoKSAvIDJcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdGV4dCA9IHRleHRzW2ldXHJcbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMub3B0aW9ucy5vdXRsaW5lQ29sb3I7IC8vIOi+ueahhuminOiJslxyXG4gICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCAqIDI7IC8vIOi+ueahhueyl+e7hlxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZvbnRTaXplIDwgMTApIHtcclxuICAgICAgICBjdHguc3Ryb2tlVGV4dCh0ZXh0LCAxNSArIGNlbnRlckRpc3RhbmNlICsgdGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCwgdGhpcy5vcHRpb25zLmZvbnRTaXplICogKGkgKyAxKSArIDEwICsgKGkgKiA1KSArIHRoaXMub3B0aW9ucy5vdXRsaW5lV2lkdGgpO1xyXG4gICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCAxNSArIGNlbnRlckRpc3RhbmNlICsgdGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCwgdGhpcy5vcHRpb25zLmZvbnRTaXplICogKGkgKyAxKSArIDEwICsgKGkgKiA1KSArIHRoaXMub3B0aW9ucy5vdXRsaW5lV2lkdGgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3R4LnN0cm9rZVRleHQoXHJcbiAgICAgICAgICB0ZXh0LFxyXG4gICAgICAgICAgMTUgKyBjZW50ZXJEaXN0YW5jZSArIHRoaXMub3B0aW9ucy5vdXRsaW5lV2lkdGgsXHJcbiAgICAgICAgICAodGhpcy5vcHRpb25zLmZvbnRTaXplICogKGkgKyAxKSkgK1xyXG4gICAgICAgICAgKCgxMCAqIDEwKSAvIHRoaXMub3B0aW9ucy5mb250U2l6ZSkgK1xyXG4gICAgICAgICAgKGkgKiA1KSArICh0aGlzLm9wdGlvbnMub3V0bGluZVdpZHRoIC8gMilcclxuICAgICAgICApO1xyXG4gICAgICAgIGN0eC5maWxsVGV4dChcclxuICAgICAgICAgIHRleHQsXHJcbiAgICAgICAgICAxNSArIGNlbnRlckRpc3RhbmNlICsgdGhpcy5vcHRpb25zLm91dGxpbmVXaWR0aCxcclxuICAgICAgICAgICh0aGlzLm9wdGlvbnMuZm9udFNpemUgKiAoaSArIDEpKSArXHJcbiAgICAgICAgICAoKDEwICogMTApIC8gdGhpcy5vcHRpb25zLmZvbnRTaXplKSArXHJcbiAgICAgICAgICAoaSAqIDUpICsgKHRoaXMub3B0aW9ucy5vdXRsaW5lV2lkdGggLyAyKVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiZmue6v1xyXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5vcHRpb25zLmxpbmVDb2xvclxyXG4gICAgY3R4LnNldExpbmVEYXNoKFs0LCA0XSkgLy/orr7nva7omZrnur/plb/luqY077yM6Ze06ZqU5Li6NFxyXG4gICAgY3R4LmxpbmVXaWR0aCA9IHRoaXMub3B0aW9ucy5saW5lV2lkdGhcclxuICAgIGN0eC5iZWdpblBhdGgoKVxyXG4gICAgY3R4Lm1vdmVUbyhjYW52YXNXaWR0aCAvIDIsIGNhbnZhc0hlaWdodClcclxuICAgIGN0eC5saW5lVG8oY2FudmFzV2lkdGggLyAyLCBjYW52YXNIZWlnaHQgKyB0aGlzLm9wdGlvbnMucGl4ZWxPZmZzZXQpXHJcbiAgICBjdHguc3Ryb2tlKClcclxuICAgIGN0eC5jbG9zZVBhdGgoKVxyXG5cclxuICAgIGNvbnN0IGN0eDIgPSB0aGlzLl9jYW52YXMyLmdldENvbnRleHQoJzJkJylcclxuICAgIHRoaXMuX2NhbnZhczIud2lkdGggPSB0aGlzLl9jYW52YXMud2lkdGggKyAxMFxyXG4gICAgdGhpcy5fY2FudmFzMi5oZWlnaHQgPSB0aGlzLl9jYW52YXMuaGVpZ2h0ICsgMTBcclxuICAgIGN0eDIuZHJhd0ltYWdlKHRoaXMuX2NhbnZhcywgNSwgNSk7XHJcblxyXG4gICAgLy8gY29uc3QgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG4gICAgLy8gY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDQwLCA0MCk7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FudmFzMi50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIilcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTGFiZWxPYmplY3RcclxuXHJcbmNvbnN0IGNvcHlPYmogPSAob2JqID0ge30pID0+IHtcclxuICAvL+WPmOmHj+WFiOe9ruepulxyXG4gIGxldCBuZXdvYmogPSBudWxsXHJcblxyXG4gIC8v5Yik5pat5piv5ZCm6ZyA6KaB57un57ut6L+b6KGM6YCS5b2SXHJcbiAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XHJcbiAgICBuZXdvYmogPSBvYmogaW5zdGFuY2VvZiBBcnJheSA/IFtdIDoge30gLy/ov5vooYzkuIvkuIDlsYLpgJLlvZLlhYvpmoZcclxuICAgIGZvciAodmFyIGkgaW4gb2JqKSB7XHJcbiAgICAgIG5ld29ialtpXSA9IGNvcHlPYmoob2JqW2ldKVxyXG4gICAgfSAvL+WmguaenOS4jeaYr+WvueixoeebtOaOpei1i+WAvFxyXG4gIH0gZWxzZSBuZXdvYmogPSBvYmpcclxuICByZXR1cm4gbmV3b2JqXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFIQTtBQUFBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQVFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE1R0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQVFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBR0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/LabelObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LoadObjModel/AModelLoader.js": -/*!***************************************************!*\ - !*** ./src/Obj/Base/LoadObjModel/AModelLoader.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _flvplayer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flvplayer */ \"./src/Obj/Base/LoadObjModel/flvplayer.js\");\n/* harmony import */ var _jessibucaPlayer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./jessibucaPlayer */ \"./src/Obj/Base/LoadObjModel/jessibucaPlayer.js\");\n\n\n\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\nvar _object_pattern = /^[og]\\s*(.+)?/;\nvar _material_library_pattern = /^mtllib /;\nvar _material_use_pattern = /^usemtl /;\nvar _map_use_pattern = /^usemap /;\nvar _face_vertex_data_separator_pattern = /\\s+/;\nvar _color = {\n red: 1,\n green: 1,\n blue: 1,\n alpha: 1\n};\nfunction ParserState() {\n var state = {\n objects: [],\n object: {},\n vertices: [],\n normals: [],\n colors: [],\n uvs: [],\n materials: {},\n materialLibraries: [],\n startObject: function startObject(name, fromDeclaration) {\n if (this.object && this.object.fromDeclaration === false) {\n this.object.name = name;\n this.object.fromDeclaration = fromDeclaration !== false;\n return;\n }\n var previousMaterial = this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined;\n if (this.object && typeof this.object._finalize === 'function') {\n this.object._finalize(true);\n }\n this.object = {\n name: name || '',\n fromDeclaration: fromDeclaration !== false,\n geometry: {\n vertices: [],\n normals: [],\n colors: [],\n uvs: [],\n hasUVIndices: false\n },\n materials: [],\n smooth: true,\n startMaterial: function startMaterial(name, libraries) {\n var previous = this._finalize(false);\n if (previous && (previous.inherited || previous.groupCount <= 0)) {\n this.materials.splice(previous.index, 1);\n }\n var material = {\n index: this.materials.length,\n name: name || '',\n mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : '',\n smooth: previous !== undefined ? previous.smooth : this.smooth,\n groupStart: previous !== undefined ? previous.groupEnd : 0,\n groupEnd: -1,\n groupCount: -1,\n inherited: false,\n clone: function clone(index) {\n var cloned = {\n index: typeof index === 'number' ? index : this.index,\n name: this.name,\n mtllib: this.mtllib,\n smooth: this.smooth,\n groupStart: 0,\n groupEnd: -1,\n groupCount: -1,\n inherited: false\n };\n cloned.clone = this.clone.bind(cloned);\n return cloned;\n }\n };\n this.materials.push(material);\n return material;\n },\n currentMaterial: function currentMaterial() {\n if (this.materials.length > 0) {\n return this.materials[this.materials.length - 1];\n }\n return undefined;\n },\n _finalize: function _finalize(end) {\n var lastMultiMaterial = this.currentMaterial();\n if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {\n lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\n lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\n lastMultiMaterial.inherited = false;\n }\n if (end && this.materials.length > 1) {\n for (var mi = this.materials.length - 1; mi >= 0; mi--) {\n if (this.materials[mi].groupCount <= 0) {\n this.materials.splice(mi, 1);\n }\n }\n }\n if (end && this.materials.length === 0) {\n this.materials.push({\n name: '',\n smooth: this.smooth\n });\n }\n return lastMultiMaterial;\n }\n };\n if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') {\n var declared = previousMaterial.clone(0);\n declared.inherited = true;\n this.object.materials.push(declared);\n }\n this.objects.push(this.object);\n },\n finalize: function finalize() {\n if (this.object && typeof this.object._finalize === 'function') {\n this.object._finalize(true);\n }\n },\n parseVertexIndex: function parseVertexIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n },\n parseNormalIndex: function parseNormalIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n },\n parseUVIndex: function parseUVIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 2) * 2;\n },\n addVertex: function addVertex(a, b, c) {\n var src = this.vertices;\n var dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n dst.push(src[b + 0], src[b + 1], src[b + 2]);\n dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addVertexPoint: function addVertexPoint(a) {\n var src = this.vertices;\n var dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n },\n addVertexLine: function addVertexLine(a) {\n var src = this.vertices;\n var dst = this.object.geometry.vertices;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n },\n addNormal: function addNormal(a, b, c) {\n var src = this.normals;\n var dst = this.object.geometry.normals;\n dst.push(src[a + 0], src[a + 1], src[a + 2]);\n dst.push(src[b + 0], src[b + 1], src[b + 2]);\n dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addFaceNormal: function addFaceNormal(a, b, c) {\n console.warn('addFaceNormal');\n // const src = this.vertices;\n // const dst = this.object.geometry.normals;\n\n // _vA.fromArray( src, a );\n // _vB.fromArray( src, b );\n // _vC.fromArray( src, c );\n\n // _cb.subVectors( _vC, _vB );\n // _ab.subVectors( _vA, _vB );\n // _cb.cross( _ab );\n\n // _cb.normalize();\n\n // dst.push( _cb.x, _cb.y, _cb.z );\n // dst.push( _cb.x, _cb.y, _cb.z );\n // dst.push( _cb.x, _cb.y, _cb.z );\n },\n addColor: function addColor(a, b, c) {\n var src = this.colors;\n var dst = this.object.geometry.colors;\n if (src[a] !== undefined) dst.push(src[a + 0], src[a + 1], src[a + 2]);\n if (src[b] !== undefined) dst.push(src[b + 0], src[b + 1], src[b + 2]);\n if (src[c] !== undefined) dst.push(src[c + 0], src[c + 1], src[c + 2]);\n },\n addUV: function addUV(a, b, c) {\n var src = this.uvs;\n var dst = this.object.geometry.uvs;\n dst.push(src[a + 0], src[a + 1]);\n dst.push(src[b + 0], src[b + 1]);\n dst.push(src[c + 0], src[c + 1]);\n },\n addDefaultUV: function addDefaultUV() {\n var dst = this.object.geometry.uvs;\n dst.push(0, 0);\n dst.push(0, 0);\n dst.push(0, 0);\n },\n addUVLine: function addUVLine(a) {\n var src = this.uvs;\n var dst = this.object.geometry.uvs;\n dst.push(src[a + 0], src[a + 1]);\n },\n addFace: function addFace(a, b, c, ua, ub, uc, na, nb, nc) {\n var vLen = this.vertices.length;\n var ia = this.parseVertexIndex(a, vLen);\n var ib = this.parseVertexIndex(b, vLen);\n var ic = this.parseVertexIndex(c, vLen);\n this.addVertex(ia, ib, ic);\n this.addColor(ia, ib, ic);\n if (na !== undefined && na !== '') {\n var nLen = this.normals.length;\n ia = this.parseNormalIndex(na, nLen);\n ib = this.parseNormalIndex(nb, nLen);\n ic = this.parseNormalIndex(nc, nLen);\n this.addNormal(ia, ib, ic);\n } else {\n this.addFaceNormal(ia, ib, ic);\n }\n if (ua !== undefined && ua !== '') {\n var uvLen = this.uvs.length;\n ia = this.parseUVIndex(ua, uvLen);\n ib = this.parseUVIndex(ub, uvLen);\n ic = this.parseUVIndex(uc, uvLen);\n this.addUV(ia, ib, ic);\n this.object.geometry.hasUVIndices = true;\n } else {\n this.addDefaultUV();\n }\n },\n addPointGeometry: function addPointGeometry(vertices) {\n this.object.geometry.type = 'Points';\n var vLen = this.vertices.length;\n for (var vi = 0, l = vertices.length; vi < l; vi++) {\n var index = this.parseVertexIndex(vertices[vi], vLen);\n this.addVertexPoint(index);\n this.addColor(index);\n }\n },\n addLineGeometry: function addLineGeometry(vertices, uvs) {\n this.object.geometry.type = 'Line';\n var vLen = this.vertices.length;\n var uvLen = this.uvs.length;\n for (var vi = 0, l = vertices.length; vi < l; vi++) {\n this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen));\n }\n for (var uvi = 0, _l = uvs.length; uvi < _l; uvi++) {\n this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen));\n }\n }\n };\n state.startObject('', false);\n return state;\n}\nvar hlsjsDefaults = {\n debug: false,\n enableWorker: true,\n lowLatencyMode: true,\n // maxBufferLength: 300,\n // maxMaxBufferLength: 6000,\n // liveDurationInfinity: true,\n // maxBufferSize: 600 * 1000 * 1000,\n backBufferLength: 60 * 1.5\n};\nvar AModelLoader = /*#__PURE__*/function () {\n function AModelLoader(context) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, AModelLoader);\n this.context = context;\n // this.hls = new Hls(hlsjsDefaults);\n }\n\n /**\r\n * 异步调用\r\n * @param {*} url\r\n */\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(AModelLoader, [{\n key: \"Load\",\n value: function Load(url, videoId, host) {\n var _this = this;\n //解析obj数据\n this.host = host;\n this.videoId = videoId;\n var name = url.substr(url.lastIndexOf('/') + 1);\n name = name.substring(0, name.lastIndexOf('.'));\n return Cesium.Resource.fetchText(url).then(function (result) {\n return _this.Parse(result, url.substring(0, url.lastIndexOf('/') + 1), name);\n });\n }\n }, {\n key: \"Parse\",\n value: function Parse(text, path, n) {\n var state = new ParserState();\n if (text.indexOf('\\r\\n') !== -1) {\n text = text.replace(/\\r\\n/g, '\\n');\n }\n if (text.indexOf('\\\\\\n') !== -1) {\n text = text.replace(/\\\\\\n/g, '');\n }\n var lines = text.split('\\n');\n var result = [];\n for (var i = 0, l = lines.length; i < l; i++) {\n var line = lines[i].trimStart();\n if (line.length === 0) continue;\n var lineFirstChar = line.charAt(0);\n if (lineFirstChar === '#') continue;\n if (lineFirstChar === 'v') {\n var data = line.split(_face_vertex_data_separator_pattern);\n switch (data[0]) {\n case 'v':\n state.vertices.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n if (data.length >= 7) {\n Cesium.Color.fromBytes(parseFloat(data[4]), parseFloat(data[5]), parseFloat(data[6]), 1, _color);\n state.colors.push(_color.red, _color.green, _color.blue);\n } else {\n state.colors.push(undefined, undefined, undefined);\n }\n break;\n case 'vn':\n state.normals.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n break;\n case 'vt':\n state.uvs.push(parseFloat(data[1]), parseFloat(data[2]));\n break;\n }\n } else if (lineFirstChar === 'f') {\n var lineData = line.slice(1).trim();\n var vertexData = lineData.split(_face_vertex_data_separator_pattern);\n var faceVertices = [];\n for (var j = 0, jl = vertexData.length; j < jl; j++) {\n var vertex = vertexData[j];\n if (vertex.length > 0) {\n var vertexParts = vertex.split('/');\n faceVertices.push(vertexParts);\n }\n }\n var v1 = faceVertices[0];\n for (var _j = 1, _jl = faceVertices.length - 1; _j < _jl; _j++) {\n var v2 = faceVertices[_j];\n var v3 = faceVertices[_j + 1];\n state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);\n }\n } else if (lineFirstChar === 'l') {\n var lineParts = line.substring(1).trim().split(' ');\n var lineVertices = [];\n var lineUVs = [];\n if (line.indexOf('/') === -1) {\n lineVertices = lineParts;\n } else {\n for (var li = 0, llen = lineParts.length; li < llen; li++) {\n var parts = lineParts[li].split('/');\n if (parts[0] !== '') lineVertices.push(parts[0]);\n if (parts[1] !== '') lineUVs.push(parts[1]);\n }\n }\n state.addLineGeometry(lineVertices, lineUVs);\n } else if (lineFirstChar === 'p') {\n var _lineData = line.slice(1).trim();\n var pointData = _lineData.split(' ');\n state.addPointGeometry(pointData);\n } else if ((result = _object_pattern.exec(line)) !== null) {\n var name = (' ' + result[0].slice(1).trim()).slice(1);\n state.startObject(n);\n } else if (_material_use_pattern.test(line)) {\n state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);\n } else if (_material_library_pattern.test(line)) {\n state.materialLibraries.push(line.substring(7).trim());\n } else if (_map_use_pattern.test(line)) {\n console.warn('Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.');\n } else if (lineFirstChar === 's') {\n result = line.split(' ');\n if (result.length > 1) {\n var value = result[1].trim().toLowerCase();\n state.object.smooth = value !== '0' && value !== 'off';\n } else {\n state.object.smooth = true;\n }\n var material = state.object.currentMaterial();\n if (material) material.smooth = state.object.smooth;\n } else {\n if (line === '\\0') continue;\n console.warn('Unexpected line: \"' + line + '\"');\n }\n }\n state.finalize();\n var container = new Node(this.context, this.hls, this.videoId, this.host, n);\n var hasPrimitives = !(state.objects.length === 1 && state.objects[0].geometry.vertices.length === 0);\n if (hasPrimitives === true) {\n for (var _i = 0, _l2 = state.objects.length; _i < _l2; _i++) {\n var object = state.objects[_i];\n var geometry = object.geometry;\n var materials = object.materials;\n if (geometry.vertices.length === 0) continue;\n var mesh = new Mesh(this.context, geometry);\n for (var mi = 0, miLen = materials.length; mi < miLen; mi++) {\n var sourceMaterial = materials[mi];\n var materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_';\n var _material = state.materials[materialHash];\n sourceMaterial.mtllib = n + '.mtl';\n if (_material === undefined) {\n _material = new Material(this.context, geometry, path, sourceMaterial.mtllib);\n _material.name = sourceMaterial.name;\n _material.flatShading = sourceMaterial.smooth ? false : true;\n state.materials[materialHash] = _material;\n }\n mesh.setMaterial(_material);\n }\n mesh.name = object.name;\n container.add(mesh);\n }\n }\n return container;\n }\n }]);\n}();\nvar Material = /*#__PURE__*/function () {\n function Material(context, geometry, path, mtllib) {\n var _this2 = this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Material);\n this.context = context;\n this.ready = false;\n var canvas = document.createElement('canvas');\n canvas.width = 512; //默认\n canvas.height = 512; //默认\n this.canvas = canvas;\n var promise = Cesium.Resource.fetchText(path + mtllib).then(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(text) {\n var result, lines, i, l, line, t, map, picture;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n result = [];\n lines = text.split('\\n');\n i = 0, l = lines.length;\n case 3:\n if (!(i < l)) {\n _context.next = 20;\n break;\n }\n line = lines[i].trimStart();\n if (!(line.length === 0)) {\n _context.next = 7;\n break;\n }\n return _context.abrupt(\"continue\", 17);\n case 7:\n t = line.split(' ')[0];\n if (!(t === 'map_Kd')) {\n _context.next = 17;\n break;\n }\n map = line.split(' ')[1];\n picture = mtllib.replace(\".mtl\", \"_result.jpg\");\n _context.t0 = result;\n _context.next = 14;\n return _this2.loadTexture(path + picture);\n case 14:\n _context.t1 = _context.sent;\n _context.t2 = {\n diffusemap: _context.t1\n };\n _context.t0.push.call(_context.t0, _context.t2);\n case 17:\n i++;\n _context.next = 3;\n break;\n case 20:\n return _context.abrupt(\"return\", Promise.all(result));\n case 21:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n\n //创建shader\n var vs = 'attribute vec3 position;\\n';\n var fs = '';\n var outVS = '';\n var hasNormal = false;\n var hasVertexColors = false;\n var hasSt = false;\n if (geometry.normals.length > 0) {\n hasNormal = true;\n }\n //顶点色\n if (geometry.colors.length > 0) {\n hasVertexColors = true;\n }\n // UV\n if (geometry.hasUVIndices === true) {\n hasSt = true;\n }\n if (hasNormal) {\n vs += 'attribute vec3 normal;\\n';\n vs += 'varying vec3 v_normal;\\n';\n fs += 'varying vec3 v_normal;\\n';\n outVS += 'v_normal = normal;\\n';\n }\n if (hasVertexColors) {\n vs += 'attribute vec3 color;\\n';\n vs += 'varying vec2 v_color;\\n';\n fs += 'varying vec2 v_color;\\n';\n outVS += 'v_color = color;\\n';\n }\n if (hasSt) {\n vs += 'attribute vec2 uv;\\n';\n vs += 'varying vec2 v_uv;\\n';\n fs += 'varying vec2 v_uv;\\n';\n outVS += 'v_uv = uv;\\n';\n }\n vs += \"\\n void main() {\\n gl_Position = czm_modelViewProjection * vec4(position, 1.);\\n \".concat(outVS, \"\\n }\\n \");\n fs += \"\\n\\t\\tuniform sampler2D colorTexture;\\n void main() {\\n\\t\\t\\t vec4 color = texture2D(colorTexture, v_uv);\\n\\t\\t\\t\\t\\t\\tgl_FragColor = color;\\n }\\n \";\n this.program = Cesium.ShaderProgram.fromCache({\n context: context,\n vertexShaderSource: vs,\n fragmentShaderSource: fs\n });\n this.uniformMap = {};\n var that = this;\n promise.then(function (images) {\n var _loop = function _loop() {\n var element = images[i];\n var diffusemap = element.diffusemap;\n _this2.uniformMap.colorTexture = function () {\n return diffusemap;\n };\n };\n for (var i = 0; i < images.length; i++) {\n _loop();\n }\n that.ready = true;\n });\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Material, [{\n key: \"updateColorTexture\",\n value: function updateColorTexture(video, width, height) {\n if (this.ready /*&& Cesium.defined(video.videojs)*/) {\n // video.videojs.play();\n var colorTexture = this.uniformMap.colorTexture();\n if (video.playing && video.timeupdate) {\n if (width !== colorTexture.width || height !== colorTexture.height) {\n colorTexture.destroy();\n this.canvas.width = 1280;\n this.canvas.height = 960;\n\n // 重新创建texture\n var canvasContext = this.canvas.getContext('2d');\n canvasContext.drawImage(video.dom, 0, 0, 1280, 960, 0, 0, this.canvas.width, this.canvas.height);\n var texture = new Cesium.Texture({\n context: this.context,\n source: this.canvas\n });\n this.uniformMap.colorTexture = function () {\n return texture;\n };\n }\n // console.log(\"update texture 2\");\n // const canvasContext = this.canvas.getContext(\"2d\");\n // canvasContext.drawImage(\n // \tvideo.dom,\n // \t0,\n // \t0,\n // \tvideo.width,\n // \tvideo.height,\n // \t0,\n // \t0,\n // \tthis.canvas.width,\n // \tthis.canvas.height\n // );\n // this.uniformMap.colorTexture().copyFrom({\n // \tsource: this.canvas\n // });\n }\n }\n }\n }, {\n key: \"setCommand\",\n value: function setCommand(drawCommand) {\n drawCommand.shaderProgram = this.program;\n drawCommand.uniformMap = this.uniformMap;\n }\n }, {\n key: \"loadTexture\",\n value: function loadTexture(url) {\n var _this3 = this;\n return Cesium.Resource.fetchImage(url).then(function (image) {\n _this3.canvas.width = image.width;\n _this3.canvas.height = image.height;\n var canvasContext = _this3.canvas.getContext('2d');\n canvasContext.drawImage(image, 0, 0, image.width, image.height, 0, 0, _this3.canvas.width, _this3.canvas.height);\n var texture = new Cesium.Texture({\n context: _this3.context,\n source: _this3.canvas,\n sampler: Cesium.Sampler.NEAREST\n });\n return texture;\n });\n }\n }]);\n}();\nvar Mesh = /*#__PURE__*/function () {\n function Mesh(context, geometry) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Mesh);\n this.lastState = false;\n this.name = undefined;\n this.geometry = geometry;\n var vaAttributes = [];\n var index = 0;\n this.material = undefined;\n\n //创建顶点索引\n var vertexBuffer = Cesium.Buffer.createVertexBuffer({\n context: context,\n typedArray: Cesium.ComponentDatatype.createTypedArray(Cesium.ComponentDatatype.FLOAT, geometry.vertices),\n usage: Cesium.BufferUsage.STATIC_DRAW\n });\n vaAttributes.push({\n index: index,\n enabled: true,\n vertexBuffer: vertexBuffer,\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n normalize: false\n });\n //法线\n if (geometry.normals.length > 0) {\n index++;\n var normalBuffer = Cesium.Buffer.createVertexBuffer({\n context: context,\n typedArray: Cesium.ComponentDatatype.createTypedArray(Cesium.ComponentDatatype.FLOAT, geometry.normals),\n usage: Cesium.BufferUsage.STATIC_DRAW\n });\n vaAttributes.push({\n index: index,\n enabled: true,\n vertexBuffer: normalBuffer,\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n normalize: false\n });\n }\n //顶点色\n if (geometry.colors.length > 0) {\n index++;\n var colorBuffer = Cesium.Buffer.createVertexBuffer({\n context: context,\n typedArray: Cesium.ComponentDatatype.createTypedArray(Cesium.ComponentDatatype.FLOAT, geometry.colors),\n usage: Cesium.BufferUsage.STATIC_DRAW\n });\n vaAttributes.push({\n index: index,\n enabled: true,\n vertexBuffer: colorBuffer,\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 3,\n normalize: false\n });\n }\n // UV\n if (geometry.hasUVIndices === true) {\n index++;\n var uvBuffer = Cesium.Buffer.createVertexBuffer({\n context: context,\n typedArray: Cesium.ComponentDatatype.createTypedArray(Cesium.ComponentDatatype.FLOAT, geometry.uvs),\n usage: Cesium.BufferUsage.STATIC_DRAW\n });\n vaAttributes.push({\n index: index,\n enabled: true,\n vertexBuffer: uvBuffer,\n componentDatatype: Cesium.ComponentDatatype.FLOAT,\n componentsPerAttribute: 2,\n normalize: false\n });\n }\n var vertexArray = new Cesium.VertexArray({\n context: context,\n attributes: vaAttributes\n });\n var renderState = Cesium.RenderState.fromCache({\n cull: {\n enabled: false\n },\n depthMask: true,\n depthTest: {\n enabled: true\n }\n });\n this.drawCommand = new Cesium.DrawCommand({\n owner: this,\n primitiveType: Cesium.PrimitiveType.TRIANGLES,\n vertexArray: vertexArray,\n renderState: renderState,\n pass: Cesium.Pass.OPAQUE\n // debugShowBoundingVolume: true\n });\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Mesh, [{\n key: \"setMaterial\",\n value: function setMaterial(material) {\n this.material = material;\n material.setCommand(this.drawCommand);\n }\n }, {\n key: \"update\",\n value: function update(frameState) {\n if (Cesium.defined(this.material)) {\n if (this.material.ready) {\n frameState.commandList.push(this.drawCommand);\n }\n }\n }\n }, {\n key: \"updateVideo\",\n value: function updateVideo(camera, video, cullingVolume) {\n var playVideo = false;\n if (Cesium.defined(this.material)) {\n if (this.material.ready) {\n var visibility = cullingVolume.computeVisibility(this.drawCommand.boundingVolume);\n if (visibility >= 0 && this.material.ready) {\n //如果视频可见\n //计算level\n // cam\n var distance = camera.distanceToBoundingSphere(this.drawCommand.boundingVolume);\n var width = video.width;\n var height = video.height;\n if (distance >= 20 && distance < 100) {\n width = video.width / 2;\n height = video.height / 2;\n } else if (distance >= 100) {\n width = video.width / 10;\n height = video.height / 10;\n }\n playVideo = true;\n this.material.updateColorTexture(video, Math.floor(width), Math.floor(height));\n } else {\n playVideo = false;\n // if(video.videojs) {\n // \tvideo.videojs.pause();\n // }\n }\n }\n }\n\n // if(playVideo != this.lastState) {\n // \tif(playVideo) {\n // \t\tconsole.log(\"play\");\n // \t\tvideo.videojs.play();\n // \t} else {\n // \t\tconsole.log(\"pause\");\n // \t\tvideo.videojs.pause();\n // \t}\n // }\n this.lastState = playVideo;\n }\n }]);\n}();\nvar _show = /*#__PURE__*/new WeakMap();\nvar Node = /*#__PURE__*/function () {\n function Node(context, hls, videoId, host, n) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Node);\n _classPrivateFieldInitSpec(this, _show, true);\n this.context = context;\n this.videoId = videoId;\n this.host = host;\n this._modelMatrix = Cesium.Matrix4.IDENTITY;\n this.parent = null;\n this.children = [];\n this.video = {\n // hls: hls,\n // videojs: null,\n dom: null,\n playing: false,\n timeupdate: false,\n width: 0,\n height: 0,\n tracks: null\n };\n this.time = 0;\n this.name = n;\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Node, [{\n key: \"show\",\n get: function get() {\n return _classPrivateFieldGet(_show, this);\n },\n set: function set(v) {\n if (typeof v === 'boolean') {\n _classPrivateFieldSet(_show, this, v);\n if (v) {\n this.video.player && this.video.player.getVueInstance().play();\n // if (this.video.player && !this.video.playing) {\n // if (this.videoId) {\n // this.requestVideoResource()\n // }\n // else {\n // this.setFlvVideo(this.video.url)\n // }\n // }\n // this.video.player && this.video.player.resume()\n } else {\n this.video.player && this.video.player.getVueInstance().pause();\n // if (this.video.player) {\n // let canvas = document.createElement(\"canvas\");\n // canvas.width = this.video.width;\n // canvas.height = this.video.height;\n // canvas.getContext(\"2d\").drawImage(this.video.dom, 0, 0, this.video.width, this.video.height);\n // for (let i = 0; i < this.children.length; i++) {\n // const child = this.children[i]\n // child.material.uniformMap['colorTexture'] = () => {\n // let texture = new Cesium.Texture({\n // context: this.context,\n // source: canvas\n // })\n // return texture\n // }\n // }\n // this.video.playing = false\n // this.video.player.destroy()\n // }\n }\n } else {\n console.error('参数必须为boolean');\n }\n }\n }, {\n key: \"requestVideoResource\",\n value: function requestVideoResource() {\n var _this4 = this;\n var host = \"\";\n if (this.host.endsWith(\"yjearth4.0\")) host = this.host;else host = this.host + '/yjearth4.0';\n var url = host + '/videoFusion/' + this.videoId;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee3(res) {\n var text;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return res.text();\n case 2:\n text = _context3.sent;\n text = JSON.parse(text);\n if (![0, 200].includes(text.code)) {\n _context3.next = 13;\n break;\n }\n if (!text.data.deviceCode.length) {\n _context3.next = 9;\n break;\n }\n return _context3.abrupt(\"return\", fetch(host + '/videoFusion/vide/stream', {\n method: 'post',\n body: JSON.stringify({\n type: 'flv',\n deviceCode: text.data.deviceCode\n }),\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(/*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2(res2) {\n var text2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return res2.text();\n case 2:\n text2 = _context2.sent;\n text2 = JSON.parse(text2);\n if (![0, 200].includes(text2.code)) {\n _context2.next = 9;\n break;\n }\n if (text2.data.url.length) {\n _this4.video.player.url = text2.data.url;\n _this4.setFlvVideo(text2.data.url);\n } else console.warn('地址不存在');\n return _context2.abrupt(\"return\");\n case 9:\n console.warn(text2.msg || text2.message);\n return _context2.abrupt(\"return\");\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }()));\n case 9:\n console.warn('设备不存在');\n case 10:\n return _context3.abrupt(\"return\");\n case 13:\n console.warn(text.msg || text.message);\n return _context3.abrupt(\"return\");\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n }, {\n key: \"modelMatrix\",\n get: function get() {\n return this._modelMatrix;\n },\n set: function set(matrix) {\n this._modelMatrix = matrix.clone();\n this.updateModelMatrix();\n }\n }, {\n key: \"updateModelMatrix\",\n value: function updateModelMatrix() {\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.drawCommand.modelMatrix = this._modelMatrix;\n //计算包围盒\n var sphere = Cesium.BoundingSphere.fromVertices(child.geometry.vertices);\n var newMat = Cesium.Matrix4.multiplyByTranslation(this._modelMatrix, sphere.center, new Cesium.Matrix4());\n sphere.center = Cesium.Matrix4.getTranslation(newMat, new Cesium.Cartesian3());\n child.drawCommand.boundingVolume = sphere;\n }\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position) {\n Cesium.Matrix4.multiplyByTranslation(this._modelMatrix, position, this._modelMatrix);\n this.updateModelMatrix();\n }\n }, {\n key: \"add\",\n value: function add(object) {\n object.parent = this;\n this.children.push(object);\n }\n }, {\n key: \"update\",\n value: function update(frameState) {\n if (this.show) {\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.update(frameState);\n }\n } else {}\n }\n\n /**\r\n * 设置视频\r\n * @param {*} url\r\n */\n }, {\n key: \"setVideo\",\n value: function setVideo(url) {\n var _this5 = this;\n this.video.playing = false;\n this.video.timeupdate = false;\n if (!url) {\n return;\n }\n var videoType = /^.+\\.m3u8$/.test(url) ? 'application/x-mpegURL' : 'video/mp4';\n\n // if (videoType === 'application/x-mpegURL') {\n var id = 'video_' + Cesium.createGuid();\n var video = document.createElement('div');\n video.setAttribute('id', id);\n video.style.display = 'none';\n this.video.parentDom = video;\n var that = this;\n var player = new WasmPlayer(null, video, function (e) {\n if (e === 'play') {\n var _videoElm = video.getElementsByTagName('video')[0];\n var canvasElm = video.getElementsByTagName('canvas')[0];\n if (_videoElm && canvasElm) {\n setTimeout(function () {\n player.play();\n }, 1000);\n } else {\n if (_videoElm) {\n that.video.dom = _videoElm;\n that.video.width = _videoElm.videoWidth;\n that.video.height = _videoElm.videoHeight;\n that.video.playing = true;\n var texture = new Cesium.Texture({\n context: that.context,\n source: _videoElm\n });\n for (var i = 0; i < that.children.length; i++) {\n var child = that.children[i];\n child.material.uniformMap['colorTexture'] = function () {\n // if (\n // videoElm.videoWidth != that.video.width ||\n // videoElm.videoHeight != that.video.height\n // ) {\n // console.log('resize texture')\n // texture.destroy()\n\n // texture = new Cesium.Texture({\n // context: that.context,\n // source: videoElm\n // })\n // }\n that.video.width = _videoElm.videoWidth;\n that.video.height = _videoElm.videoHeight;\n\n // texture.copyFrom({\n // source: videoElm\n // })\n texture.destroy();\n texture = new Cesium.Texture({\n context: that.context,\n source: _videoElm\n });\n return texture;\n };\n // if(that._clearMemoryIntervalEvent) {\n // clearInterval(that._clearMemoryIntervalEvent)\n // that._clearMemoryIntervalEvent = null\n // }\n // that._clearMemoryIntervalEvent = setInterval(() => {\n // let canvas = document.createElement(\"canvas\");\n // canvas.width = that.video.width;\n // canvas.height = that.video.height;\n // canvas.getContext(\"2d\").drawImage(videoElm, 0, 0, that.video.width, that.video.height);\n // child.material.uniformMap['colorTexture'] = () => {\n // texture.destroy()\n // texture = new Cesium.Texture({\n // context: that.context,\n // source: canvas\n // })\n // return texture\n // }\n // that.loaded = false\n // that.video.player.stop()\n // that.video.player.destroy()\n // setTimeout(() => {\n // that.video.player.play(that.video.player.url, 1)\n // }, 0);\n\n // if(that._videoLoadedIntervalEvent) {\n // clearInterval(that._videoLoadedIntervalEvent)\n // that._videoLoadedIntervalEvent = null\n // }\n // that._videoLoadedIntervalEvent = setInterval(() => {\n // if(that.loaded) {\n // child.material.uniformMap['colorTexture'] = () => {\n // texture.destroy()\n // texture = new Cesium.Texture({\n // context: that.context,\n // source: videoElm\n // })\n // return texture\n // }\n // clearInterval(that._videoLoadedIntervalEvent)\n // that._videoLoadedIntervalEvent = null\n // }\n // }, 500);\n // }, 60000);\n }\n } else if (canvasElm) {\n that.video.dom = canvasElm;\n that.video.width = canvasElm.width;\n that.video.height = canvasElm.height;\n that.video.playing = true;\n var _texture = new Cesium.Texture({\n context: that.context,\n source: canvasElm\n });\n for (var _i2 = 0; _i2 < that.children.length; _i2++) {\n var _child = that.children[_i2];\n _child.material.uniformMap['colorTexture'] = function () {\n if (canvasElm.width != that.video.width || canvasElm.height != that.video.height) {\n console.log('resize texture');\n _texture.destroy();\n _texture = new Cesium.Texture({\n context: that.context,\n source: canvasElm\n });\n }\n that.video.width = canvasElm.width;\n that.video.height = canvasElm.height;\n // texture.copyFrom({\n // source: canvasElm\n // })\n _texture.destroy();\n _texture = new Cesium.Texture({\n context: that.context,\n source: canvasElm\n });\n return _texture;\n };\n }\n }\n }\n }\n });\n player.play(url, 1);\n this.video.player = player;\n var videoElm = video.getElementsByTagName('video')[0];\n videoElm.addEventListener('loadeddata', function () {\n _this5.loaded = true;\n // for (let i = 0; i < this.children.length; i++) {\n // const child = this.children[i]\n // child.material.uniformMap['colorTexture'] = () => {\n // let texture = new Cesium.Texture({\n // context: this.context,\n // source: videoElm\n // })\n // return texture\n // }\n // }\n });\n // }\n }\n\n /**\r\n * 设置视频\r\n * @param {*} url\r\n */\n }, {\n key: \"setFlvVideo3\",\n value: function setFlvVideo3(url) {\n this.video.playing = false;\n this.video.timeupdate = false;\n this.video.url = url;\n if (!url) {\n return;\n }\n var id = 'video_' + Cesium.createGuid();\n var video = document.createElement('video');\n video.setAttribute('id', id);\n // document.body.appendChild(video)\n // video.style.display = 'none'\n var that = this;\n var player = new _flvplayer__WEBPACK_IMPORTED_MODULE_4__[\"default\"](video, {\n url: url\n });\n this.video.player = player;\n player.on('Events', 'MEDIA_INFO', function (info) {});\n player.flvPlayer.play().then(function () {\n that.video.dom = video;\n that.video.width = video.videoWidth;\n that.video.height = video.videoHeight;\n that.video.playing = true;\n var texture = new Cesium.Texture({\n context: that.context,\n source: video\n });\n for (var i = 0; i < that.children.length; i++) {\n var child = that.children[i];\n child.material.uniformMap['colorTexture'] = function () {\n that.video.width = video.videoWidth;\n that.video.height = video.videoHeight;\n texture.destroy();\n texture = new Cesium.Texture({\n context: that.context,\n source: video\n });\n return texture;\n };\n }\n });\n }\n }, {\n key: \"setFlvVideo2\",\n value: function setFlvVideo2(url) {\n this.video.playing = false;\n this.video.timeupdate = false;\n this.video.url = url;\n if (!url) {\n return;\n }\n var id = 'video_' + Cesium.createGuid();\n var videoBox = document.createElement('div');\n videoBox.setAttribute('id', id);\n videoBox.style.display = 'none';\n var that = this;\n var player = new _jessibucaPlayer__WEBPACK_IMPORTED_MODULE_5__[\"default\"](videoBox, {\n url: url\n });\n this.video.player = player;\n this.video.player.player.on(\"play\", function (flag) {\n console.log('1111111111');\n var video = videoBox.getElementsByTagName('canvas')[0];\n videoBox.innerHTML = '';\n that.video.dom = video;\n that.video.width = video.width;\n that.video.height = video.height;\n that.video.playing = true;\n var texture = new Cesium.Texture({\n context: that.context,\n source: video\n });\n for (var i = 0; i < that.children.length; i++) {\n var child = that.children[i];\n child.material.uniformMap['colorTexture'] = function () {\n that.video.width = video.width;\n that.video.height = video.height;\n texture.copyFrom({\n source: video\n });\n return texture;\n };\n }\n });\n }\n }, {\n key: \"setFlvVideo\",\n value: function setFlvVideo(url) {\n var _this6 = this;\n this.video.playing = false;\n this.video.timeupdate = false;\n this.video.url = url;\n if (!url) {\n return;\n }\n var that = this;\n var id = 'video_' + Cesium.createGuid();\n var parentDom = document.getElementById('yj-sdk-live-player-box');\n if (!parentDom) {\n parentDom = document.createElement('div');\n parentDom.setAttribute('id', 'yj-sdk-live-player-box');\n parentDom.style.display = 'none';\n document.body.appendChild(parentDom);\n }\n var videoBox = document.createElement('live-player');\n videoBox.setAttribute('id', id);\n videoBox.setAttribute('video-url', this.video.url);\n videoBox.setAttribute('live', true);\n videoBox.style.display = 'none';\n parentDom.appendChild(videoBox);\n this.video.player = videoBox;\n videoBox.addEventListener('play', function (evt) {\n console.log('播放成功', _this6.video.url, _this6.name);\n var video = videoBox.getElementsByTagName('video')[0];\n that.video.dom = video;\n that.video.width = video.width;\n that.video.height = video.height;\n that.video.playing = true;\n var texture = new Cesium.Texture({\n context: that.context,\n source: video\n });\n for (var i = 0; i < that.children.length; i++) {\n var child = that.children[i];\n child.material.uniformMap['colorTexture'] = function () {\n that.video.width = video.width;\n that.video.height = video.height;\n texture.copyFrom({\n source: video\n });\n return texture;\n };\n }\n });\n }\n }, {\n key: \"isDestroyed\",\n value: function isDestroyed() {\n return false;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n // this.video.player && this.video.player.destroy()\n if (this.video.player) {\n this.video.player.setAttribute('video-url', null);\n var parentDom = document.getElementById('yj-sdk-live-player-box');\n parentDom.removeChild(this.video.player);\n this.video.player = null;\n }\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (AModelLoader);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9hZE9iak1vZGVsL0FNb2RlbExvYWRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Mb2FkT2JqTW9kZWwvQU1vZGVsTG9hZGVyLmpzP2E5NjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZsdnBsYXllciBmcm9tIFwiLi9mbHZwbGF5ZXJcIjtcclxuaW1wb3J0IGplc3NpYnVjYVBsYXllciBmcm9tIFwiLi9qZXNzaWJ1Y2FQbGF5ZXJcIjtcclxuXHJcbmNvbnN0IF9vYmplY3RfcGF0dGVybiA9IC9eW29nXVxccyooLispPy9cclxuY29uc3QgX21hdGVyaWFsX2xpYnJhcnlfcGF0dGVybiA9IC9ebXRsbGliIC9cclxuY29uc3QgX21hdGVyaWFsX3VzZV9wYXR0ZXJuID0gL151c2VtdGwgL1xyXG5jb25zdCBfbWFwX3VzZV9wYXR0ZXJuID0gL151c2VtYXAgL1xyXG5jb25zdCBfZmFjZV92ZXJ0ZXhfZGF0YV9zZXBhcmF0b3JfcGF0dGVybiA9IC9cXHMrL1xyXG5cclxuY29uc3QgX2NvbG9yID0ge1xyXG4gIHJlZDogMSxcclxuICBncmVlbjogMSxcclxuICBibHVlOiAxLFxyXG4gIGFscGhhOiAxXHJcbn1cclxuXHJcbmZ1bmN0aW9uIFBhcnNlclN0YXRlKCkge1xyXG4gIGNvbnN0IHN0YXRlID0ge1xyXG4gICAgb2JqZWN0czogW10sXHJcbiAgICBvYmplY3Q6IHt9LFxyXG5cclxuICAgIHZlcnRpY2VzOiBbXSxcclxuICAgIG5vcm1hbHM6IFtdLFxyXG4gICAgY29sb3JzOiBbXSxcclxuICAgIHV2czogW10sXHJcblxyXG4gICAgbWF0ZXJpYWxzOiB7fSxcclxuICAgIG1hdGVyaWFsTGlicmFyaWVzOiBbXSxcclxuXHJcbiAgICBzdGFydE9iamVjdDogZnVuY3Rpb24gKG5hbWUsIGZyb21EZWNsYXJhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5vYmplY3QgJiYgdGhpcy5vYmplY3QuZnJvbURlY2xhcmF0aW9uID09PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMub2JqZWN0Lm5hbWUgPSBuYW1lXHJcbiAgICAgICAgdGhpcy5vYmplY3QuZnJvbURlY2xhcmF0aW9uID0gZnJvbURlY2xhcmF0aW9uICE9PSBmYWxzZVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzTWF0ZXJpYWwgPVxyXG4gICAgICAgIHRoaXMub2JqZWN0ICYmIHR5cGVvZiB0aGlzLm9iamVjdC5jdXJyZW50TWF0ZXJpYWwgPT09ICdmdW5jdGlvbidcclxuICAgICAgICAgID8gdGhpcy5vYmplY3QuY3VycmVudE1hdGVyaWFsKClcclxuICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgIGlmICh0aGlzLm9iamVjdCAmJiB0eXBlb2YgdGhpcy5vYmplY3QuX2ZpbmFsaXplID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5vYmplY3QuX2ZpbmFsaXplKHRydWUpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vYmplY3QgPSB7XHJcbiAgICAgICAgbmFtZTogbmFtZSB8fCAnJyxcclxuICAgICAgICBmcm9tRGVjbGFyYXRpb246IGZyb21EZWNsYXJhdGlvbiAhPT0gZmFsc2UsXHJcblxyXG4gICAgICAgIGdlb21ldHJ5OiB7XHJcbiAgICAgICAgICB2ZXJ0aWNlczogW10sXHJcbiAgICAgICAgICBub3JtYWxzOiBbXSxcclxuICAgICAgICAgIGNvbG9yczogW10sXHJcbiAgICAgICAgICB1dnM6IFtdLFxyXG4gICAgICAgICAgaGFzVVZJbmRpY2VzOiBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWF0ZXJpYWxzOiBbXSxcclxuICAgICAgICBzbW9vdGg6IHRydWUsXHJcblxyXG4gICAgICAgIHN0YXJ0TWF0ZXJpYWw6IGZ1bmN0aW9uIChuYW1lLCBsaWJyYXJpZXMpIHtcclxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5fZmluYWxpemUoZmFsc2UpXHJcbiAgICAgICAgICBpZiAocHJldmlvdXMgJiYgKHByZXZpb3VzLmluaGVyaXRlZCB8fCBwcmV2aW91cy5ncm91cENvdW50IDw9IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWxzLnNwbGljZShwcmV2aW91cy5pbmRleCwgMSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0ge1xyXG4gICAgICAgICAgICBpbmRleDogdGhpcy5tYXRlcmlhbHMubGVuZ3RoLFxyXG4gICAgICAgICAgICBuYW1lOiBuYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICBtdGxsaWI6XHJcbiAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShsaWJyYXJpZXMpICYmIGxpYnJhcmllcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICA/IGxpYnJhcmllc1tsaWJyYXJpZXMubGVuZ3RoIC0gMV1cclxuICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIHNtb290aDogcHJldmlvdXMgIT09IHVuZGVmaW5lZCA/IHByZXZpb3VzLnNtb290aCA6IHRoaXMuc21vb3RoLFxyXG4gICAgICAgICAgICBncm91cFN0YXJ0OiBwcmV2aW91cyAhPT0gdW5kZWZpbmVkID8gcHJldmlvdXMuZ3JvdXBFbmQgOiAwLFxyXG4gICAgICAgICAgICBncm91cEVuZDogLTEsXHJcbiAgICAgICAgICAgIGdyb3VwQ291bnQ6IC0xLFxyXG4gICAgICAgICAgICBpbmhlcml0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24gKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2xvbmVkID0ge1xyXG4gICAgICAgICAgICAgICAgaW5kZXg6IHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgPyBpbmRleCA6IHRoaXMuaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBtdGxsaWI6IHRoaXMubXRsbGliLFxyXG4gICAgICAgICAgICAgICAgc21vb3RoOiB0aGlzLnNtb290aCxcclxuICAgICAgICAgICAgICAgIGdyb3VwU3RhcnQ6IDAsXHJcbiAgICAgICAgICAgICAgICBncm91cEVuZDogLTEsXHJcbiAgICAgICAgICAgICAgICBncm91cENvdW50OiAtMSxcclxuICAgICAgICAgICAgICAgIGluaGVyaXRlZDogZmFsc2VcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY2xvbmVkLmNsb25lID0gdGhpcy5jbG9uZS5iaW5kKGNsb25lZClcclxuICAgICAgICAgICAgICByZXR1cm4gY2xvbmVkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzLnB1c2gobWF0ZXJpYWwpXHJcbiAgICAgICAgICByZXR1cm4gbWF0ZXJpYWxcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjdXJyZW50TWF0ZXJpYWw6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm1hdGVyaWFscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hdGVyaWFsc1t0aGlzLm1hdGVyaWFscy5sZW5ndGggLSAxXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF9maW5hbGl6ZTogZnVuY3Rpb24gKGVuZCkge1xyXG4gICAgICAgICAgY29uc3QgbGFzdE11bHRpTWF0ZXJpYWwgPSB0aGlzLmN1cnJlbnRNYXRlcmlhbCgpXHJcbiAgICAgICAgICBpZiAobGFzdE11bHRpTWF0ZXJpYWwgJiYgbGFzdE11bHRpTWF0ZXJpYWwuZ3JvdXBFbmQgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGxhc3RNdWx0aU1hdGVyaWFsLmdyb3VwRW5kID0gdGhpcy5nZW9tZXRyeS52ZXJ0aWNlcy5sZW5ndGggLyAzXHJcbiAgICAgICAgICAgIGxhc3RNdWx0aU1hdGVyaWFsLmdyb3VwQ291bnQgPVxyXG4gICAgICAgICAgICAgIGxhc3RNdWx0aU1hdGVyaWFsLmdyb3VwRW5kIC0gbGFzdE11bHRpTWF0ZXJpYWwuZ3JvdXBTdGFydFxyXG4gICAgICAgICAgICBsYXN0TXVsdGlNYXRlcmlhbC5pbmhlcml0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChlbmQgJiYgdGhpcy5tYXRlcmlhbHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBtaSA9IHRoaXMubWF0ZXJpYWxzLmxlbmd0aCAtIDE7IG1pID49IDA7IG1pLS0pIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5tYXRlcmlhbHNbbWldLmdyb3VwQ291bnQgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRlcmlhbHMuc3BsaWNlKG1pLCAxKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChlbmQgJiYgdGhpcy5tYXRlcmlhbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgICAgICAgIHNtb290aDogdGhpcy5zbW9vdGhcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBsYXN0TXVsdGlNYXRlcmlhbFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXZpb3VzTWF0ZXJpYWwgJiZcclxuICAgICAgICBwcmV2aW91c01hdGVyaWFsLm5hbWUgJiZcclxuICAgICAgICB0eXBlb2YgcHJldmlvdXNNYXRlcmlhbC5jbG9uZSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBkZWNsYXJlZCA9IHByZXZpb3VzTWF0ZXJpYWwuY2xvbmUoMClcclxuICAgICAgICBkZWNsYXJlZC5pbmhlcml0ZWQgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5vYmplY3QubWF0ZXJpYWxzLnB1c2goZGVjbGFyZWQpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vYmplY3RzLnB1c2godGhpcy5vYmplY3QpXHJcbiAgICB9LFxyXG4gICAgZmluYWxpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0ICYmIHR5cGVvZiB0aGlzLm9iamVjdC5fZmluYWxpemUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICB0aGlzLm9iamVjdC5fZmluYWxpemUodHJ1ZSlcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHBhcnNlVmVydGV4SW5kZXg6IGZ1bmN0aW9uICh2YWx1ZSwgbGVuKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQodmFsdWUsIDEwKVxyXG4gICAgICByZXR1cm4gKGluZGV4ID49IDAgPyBpbmRleCAtIDEgOiBpbmRleCArIGxlbiAvIDMpICogM1xyXG4gICAgfSxcclxuICAgIHBhcnNlTm9ybWFsSW5kZXg6IGZ1bmN0aW9uICh2YWx1ZSwgbGVuKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQodmFsdWUsIDEwKVxyXG4gICAgICByZXR1cm4gKGluZGV4ID49IDAgPyBpbmRleCAtIDEgOiBpbmRleCArIGxlbiAvIDMpICogM1xyXG4gICAgfSxcclxuICAgIHBhcnNlVVZJbmRleDogZnVuY3Rpb24gKHZhbHVlLCBsZW4pIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludCh2YWx1ZSwgMTApXHJcbiAgICAgIHJldHVybiAoaW5kZXggPj0gMCA/IGluZGV4IC0gMSA6IGluZGV4ICsgbGVuIC8gMikgKiAyXHJcbiAgICB9LFxyXG4gICAgYWRkVmVydGV4OiBmdW5jdGlvbiAoYSwgYiwgYykge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLnZlcnRpY2VzXHJcbiAgICAgIGNvbnN0IGRzdCA9IHRoaXMub2JqZWN0Lmdlb21ldHJ5LnZlcnRpY2VzXHJcbiAgICAgIGRzdC5wdXNoKHNyY1thICsgMF0sIHNyY1thICsgMV0sIHNyY1thICsgMl0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tiICsgMF0sIHNyY1tiICsgMV0sIHNyY1tiICsgMl0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tjICsgMF0sIHNyY1tjICsgMV0sIHNyY1tjICsgMl0pXHJcbiAgICB9LFxyXG4gICAgYWRkVmVydGV4UG9pbnQ6IGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgIGNvbnN0IHNyYyA9IHRoaXMudmVydGljZXNcclxuICAgICAgY29uc3QgZHN0ID0gdGhpcy5vYmplY3QuZ2VvbWV0cnkudmVydGljZXNcclxuXHJcbiAgICAgIGRzdC5wdXNoKHNyY1thICsgMF0sIHNyY1thICsgMV0sIHNyY1thICsgMl0pXHJcbiAgICB9LFxyXG4gICAgYWRkVmVydGV4TGluZTogZnVuY3Rpb24gKGEpIHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy52ZXJ0aWNlc1xyXG4gICAgICBjb25zdCBkc3QgPSB0aGlzLm9iamVjdC5nZW9tZXRyeS52ZXJ0aWNlc1xyXG4gICAgICBkc3QucHVzaChzcmNbYSArIDBdLCBzcmNbYSArIDFdLCBzcmNbYSArIDJdKVxyXG4gICAgfSxcclxuICAgIGFkZE5vcm1hbDogZnVuY3Rpb24gKGEsIGIsIGMpIHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy5ub3JtYWxzXHJcbiAgICAgIGNvbnN0IGRzdCA9IHRoaXMub2JqZWN0Lmdlb21ldHJ5Lm5vcm1hbHNcclxuXHJcbiAgICAgIGRzdC5wdXNoKHNyY1thICsgMF0sIHNyY1thICsgMV0sIHNyY1thICsgMl0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tiICsgMF0sIHNyY1tiICsgMV0sIHNyY1tiICsgMl0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tjICsgMF0sIHNyY1tjICsgMV0sIHNyY1tjICsgMl0pXHJcbiAgICB9LFxyXG4gICAgYWRkRmFjZU5vcm1hbDogZnVuY3Rpb24gKGEsIGIsIGMpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdhZGRGYWNlTm9ybWFsJylcclxuICAgICAgLy8gY29uc3Qgc3JjID0gdGhpcy52ZXJ0aWNlcztcclxuICAgICAgLy8gY29uc3QgZHN0ID0gdGhpcy5vYmplY3QuZ2VvbWV0cnkubm9ybWFscztcclxuXHJcbiAgICAgIC8vIF92QS5mcm9tQXJyYXkoIHNyYywgYSApO1xyXG4gICAgICAvLyBfdkIuZnJvbUFycmF5KCBzcmMsIGIgKTtcclxuICAgICAgLy8gX3ZDLmZyb21BcnJheSggc3JjLCBjICk7XHJcblxyXG4gICAgICAvLyBfY2Iuc3ViVmVjdG9ycyggX3ZDLCBfdkIgKTtcclxuICAgICAgLy8gX2FiLnN1YlZlY3RvcnMoIF92QSwgX3ZCICk7XHJcbiAgICAgIC8vIF9jYi5jcm9zcyggX2FiICk7XHJcblxyXG4gICAgICAvLyBfY2Iubm9ybWFsaXplKCk7XHJcblxyXG4gICAgICAvLyBkc3QucHVzaCggX2NiLngsIF9jYi55LCBfY2IueiApO1xyXG4gICAgICAvLyBkc3QucHVzaCggX2NiLngsIF9jYi55LCBfY2IueiApO1xyXG4gICAgICAvLyBkc3QucHVzaCggX2NiLngsIF9jYi55LCBfY2IueiApO1xyXG4gICAgfSxcclxuICAgIGFkZENvbG9yOiBmdW5jdGlvbiAoYSwgYiwgYykge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmNvbG9yc1xyXG4gICAgICBjb25zdCBkc3QgPSB0aGlzLm9iamVjdC5nZW9tZXRyeS5jb2xvcnNcclxuICAgICAgaWYgKHNyY1thXSAhPT0gdW5kZWZpbmVkKSBkc3QucHVzaChzcmNbYSArIDBdLCBzcmNbYSArIDFdLCBzcmNbYSArIDJdKVxyXG4gICAgICBpZiAoc3JjW2JdICE9PSB1bmRlZmluZWQpIGRzdC5wdXNoKHNyY1tiICsgMF0sIHNyY1tiICsgMV0sIHNyY1tiICsgMl0pXHJcbiAgICAgIGlmIChzcmNbY10gIT09IHVuZGVmaW5lZCkgZHN0LnB1c2goc3JjW2MgKyAwXSwgc3JjW2MgKyAxXSwgc3JjW2MgKyAyXSlcclxuICAgIH0sXHJcbiAgICBhZGRVVjogZnVuY3Rpb24gKGEsIGIsIGMpIHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy51dnNcclxuICAgICAgY29uc3QgZHN0ID0gdGhpcy5vYmplY3QuZ2VvbWV0cnkudXZzXHJcbiAgICAgIGRzdC5wdXNoKHNyY1thICsgMF0sIHNyY1thICsgMV0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tiICsgMF0sIHNyY1tiICsgMV0pXHJcbiAgICAgIGRzdC5wdXNoKHNyY1tjICsgMF0sIHNyY1tjICsgMV0pXHJcbiAgICB9LFxyXG4gICAgYWRkRGVmYXVsdFVWOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGNvbnN0IGRzdCA9IHRoaXMub2JqZWN0Lmdlb21ldHJ5LnV2c1xyXG4gICAgICBkc3QucHVzaCgwLCAwKVxyXG4gICAgICBkc3QucHVzaCgwLCAwKVxyXG4gICAgICBkc3QucHVzaCgwLCAwKVxyXG4gICAgfSxcclxuICAgIGFkZFVWTGluZTogZnVuY3Rpb24gKGEpIHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy51dnNcclxuICAgICAgY29uc3QgZHN0ID0gdGhpcy5vYmplY3QuZ2VvbWV0cnkudXZzXHJcbiAgICAgIGRzdC5wdXNoKHNyY1thICsgMF0sIHNyY1thICsgMV0pXHJcbiAgICB9LFxyXG4gICAgYWRkRmFjZTogZnVuY3Rpb24gKGEsIGIsIGMsIHVhLCB1YiwgdWMsIG5hLCBuYiwgbmMpIHtcclxuICAgICAgY29uc3QgdkxlbiA9IHRoaXMudmVydGljZXMubGVuZ3RoXHJcbiAgICAgIGxldCBpYSA9IHRoaXMucGFyc2VWZXJ0ZXhJbmRleChhLCB2TGVuKVxyXG4gICAgICBsZXQgaWIgPSB0aGlzLnBhcnNlVmVydGV4SW5kZXgoYiwgdkxlbilcclxuICAgICAgbGV0IGljID0gdGhpcy5wYXJzZVZlcnRleEluZGV4KGMsIHZMZW4pXHJcbiAgICAgIHRoaXMuYWRkVmVydGV4KGlhLCBpYiwgaWMpXHJcbiAgICAgIHRoaXMuYWRkQ29sb3IoaWEsIGliLCBpYylcclxuICAgICAgaWYgKG5hICE9PSB1bmRlZmluZWQgJiYgbmEgIT09ICcnKSB7XHJcbiAgICAgICAgY29uc3QgbkxlbiA9IHRoaXMubm9ybWFscy5sZW5ndGhcclxuICAgICAgICBpYSA9IHRoaXMucGFyc2VOb3JtYWxJbmRleChuYSwgbkxlbilcclxuICAgICAgICBpYiA9IHRoaXMucGFyc2VOb3JtYWxJbmRleChuYiwgbkxlbilcclxuICAgICAgICBpYyA9IHRoaXMucGFyc2VOb3JtYWxJbmRleChuYywgbkxlbilcclxuICAgICAgICB0aGlzLmFkZE5vcm1hbChpYSwgaWIsIGljKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWRkRmFjZU5vcm1hbChpYSwgaWIsIGljKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh1YSAhPT0gdW5kZWZpbmVkICYmIHVhICE9PSAnJykge1xyXG4gICAgICAgIGNvbnN0IHV2TGVuID0gdGhpcy51dnMubGVuZ3RoXHJcbiAgICAgICAgaWEgPSB0aGlzLnBhcnNlVVZJbmRleCh1YSwgdXZMZW4pXHJcbiAgICAgICAgaWIgPSB0aGlzLnBhcnNlVVZJbmRleCh1YiwgdXZMZW4pXHJcbiAgICAgICAgaWMgPSB0aGlzLnBhcnNlVVZJbmRleCh1YywgdXZMZW4pXHJcbiAgICAgICAgdGhpcy5hZGRVVihpYSwgaWIsIGljKVxyXG4gICAgICAgIHRoaXMub2JqZWN0Lmdlb21ldHJ5Lmhhc1VWSW5kaWNlcyA9IHRydWVcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkZERlZmF1bHRVVigpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBhZGRQb2ludEdlb21ldHJ5OiBmdW5jdGlvbiAodmVydGljZXMpIHtcclxuICAgICAgdGhpcy5vYmplY3QuZ2VvbWV0cnkudHlwZSA9ICdQb2ludHMnXHJcbiAgICAgIGNvbnN0IHZMZW4gPSB0aGlzLnZlcnRpY2VzLmxlbmd0aFxyXG4gICAgICBmb3IgKGxldCB2aSA9IDAsIGwgPSB2ZXJ0aWNlcy5sZW5ndGg7IHZpIDwgbDsgdmkrKykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZVZlcnRleEluZGV4KHZlcnRpY2VzW3ZpXSwgdkxlbilcclxuICAgICAgICB0aGlzLmFkZFZlcnRleFBvaW50KGluZGV4KVxyXG4gICAgICAgIHRoaXMuYWRkQ29sb3IoaW5kZXgpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBhZGRMaW5lR2VvbWV0cnk6IGZ1bmN0aW9uICh2ZXJ0aWNlcywgdXZzKSB7XHJcbiAgICAgIHRoaXMub2JqZWN0Lmdlb21ldHJ5LnR5cGUgPSAnTGluZSdcclxuICAgICAgY29uc3QgdkxlbiA9IHRoaXMudmVydGljZXMubGVuZ3RoXHJcbiAgICAgIGNvbnN0IHV2TGVuID0gdGhpcy51dnMubGVuZ3RoXHJcbiAgICAgIGZvciAobGV0IHZpID0gMCwgbCA9IHZlcnRpY2VzLmxlbmd0aDsgdmkgPCBsOyB2aSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRWZXJ0ZXhMaW5lKHRoaXMucGFyc2VWZXJ0ZXhJbmRleCh2ZXJ0aWNlc1t2aV0sIHZMZW4pKVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IHV2aSA9IDAsIGwgPSB1dnMubGVuZ3RoOyB1dmkgPCBsOyB1dmkrKykge1xyXG4gICAgICAgIHRoaXMuYWRkVVZMaW5lKHRoaXMucGFyc2VVVkluZGV4KHV2c1t1dmldLCB1dkxlbikpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGUuc3RhcnRPYmplY3QoJycsIGZhbHNlKVxyXG4gIHJldHVybiBzdGF0ZVxyXG59XHJcblxyXG5jb25zdCBobHNqc0RlZmF1bHRzID0ge1xyXG4gIGRlYnVnOiBmYWxzZSxcclxuICBlbmFibGVXb3JrZXI6IHRydWUsXHJcbiAgbG93TGF0ZW5jeU1vZGU6IHRydWUsXHJcbiAgLy8gbWF4QnVmZmVyTGVuZ3RoOiAzMDAsXHJcbiAgLy8gbWF4TWF4QnVmZmVyTGVuZ3RoOiA2MDAwLFxyXG4gIC8vIGxpdmVEdXJhdGlvbkluZmluaXR5OiB0cnVlLFxyXG4gIC8vIG1heEJ1ZmZlclNpemU6IDYwMCAqIDEwMDAgKiAxMDAwLFxyXG4gIGJhY2tCdWZmZXJMZW5ndGg6IDYwICogMS41XHJcbn1cclxuXHJcbmNsYXNzIEFNb2RlbExvYWRlciB7XHJcbiAgY29uc3RydWN0b3IoY29udGV4dCkge1xyXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dFxyXG4gICAgLy8gdGhpcy5obHMgPSBuZXcgSGxzKGhsc2pzRGVmYXVsdHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byC5q2l6LCD55SoXHJcbiAgICogQHBhcmFtIHsqfSB1cmxcclxuICAgKi9cclxuICBMb2FkKHVybCwgdmlkZW9JZCwgaG9zdCkge1xyXG4gICAgLy/op6PmnpBvYmrmlbDmja5cclxuICAgIHRoaXMuaG9zdCA9IGhvc3RcclxuICAgIHRoaXMudmlkZW9JZCA9IHZpZGVvSWRcclxuICAgIGxldCBuYW1lID0gdXJsLnN1YnN0cih1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpXHJcbiAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sYXN0SW5kZXhPZignLicpKVxyXG4gICAgcmV0dXJuIENlc2l1bS5SZXNvdXJjZS5mZXRjaFRleHQodXJsKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLlBhcnNlKHJlc3VsdCwgdXJsLnN1YnN0cmluZygwLCB1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpLCBuYW1lKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIFBhcnNlKHRleHQsIHBhdGgsIG4pIHtcclxuICAgIGNvbnN0IHN0YXRlID0gbmV3IFBhcnNlclN0YXRlKClcclxuICAgIGlmICh0ZXh0LmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSkge1xyXG4gICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpXHJcbiAgICB9XHJcbiAgICBpZiAodGV4dC5pbmRleE9mKCdcXFxcXFxuJykgIT09IC0xKSB7XHJcbiAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcXFxcXG4vZywgJycpXHJcbiAgICB9XHJcbiAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICBsZXQgcmVzdWx0ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXS50cmltU3RhcnQoKVxyXG4gICAgICBpZiAobGluZS5sZW5ndGggPT09IDApIGNvbnRpbnVlXHJcbiAgICAgIGNvbnN0IGxpbmVGaXJzdENoYXIgPSBsaW5lLmNoYXJBdCgwKVxyXG4gICAgICBpZiAobGluZUZpcnN0Q2hhciA9PT0gJyMnKSBjb250aW51ZVxyXG4gICAgICBpZiAobGluZUZpcnN0Q2hhciA9PT0gJ3YnKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGxpbmUuc3BsaXQoX2ZhY2VfdmVydGV4X2RhdGFfc2VwYXJhdG9yX3BhdHRlcm4pXHJcbiAgICAgICAgc3dpdGNoIChkYXRhWzBdKSB7XHJcbiAgICAgICAgICBjYXNlICd2JzpcclxuICAgICAgICAgICAgc3RhdGUudmVydGljZXMucHVzaChcclxuICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRhdGFbMV0pLFxyXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGF0YVsyXSksXHJcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChkYXRhWzNdKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+PSA3KSB7XHJcbiAgICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21CeXRlcyhcclxuICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGF0YVs0XSksXHJcbiAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRhdGFbNV0pLFxyXG4gICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkYXRhWzZdKSxcclxuICAgICAgICAgICAgICAgIDEsXHJcbiAgICAgICAgICAgICAgICBfY29sb3JcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgc3RhdGUuY29sb3JzLnB1c2goX2NvbG9yLnJlZCwgX2NvbG9yLmdyZWVuLCBfY29sb3IuYmx1ZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzdGF0ZS5jb2xvcnMucHVzaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICd2bic6XHJcbiAgICAgICAgICAgIHN0YXRlLm5vcm1hbHMucHVzaChcclxuICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRhdGFbMV0pLFxyXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGF0YVsyXSksXHJcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChkYXRhWzNdKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICd2dCc6XHJcbiAgICAgICAgICAgIHN0YXRlLnV2cy5wdXNoKHBhcnNlRmxvYXQoZGF0YVsxXSksIHBhcnNlRmxvYXQoZGF0YVsyXSkpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGxpbmVGaXJzdENoYXIgPT09ICdmJykge1xyXG4gICAgICAgIGNvbnN0IGxpbmVEYXRhID0gbGluZS5zbGljZSgxKS50cmltKClcclxuICAgICAgICBjb25zdCB2ZXJ0ZXhEYXRhID0gbGluZURhdGEuc3BsaXQoX2ZhY2VfdmVydGV4X2RhdGFfc2VwYXJhdG9yX3BhdHRlcm4pXHJcbiAgICAgICAgY29uc3QgZmFjZVZlcnRpY2VzID0gW11cclxuICAgICAgICBmb3IgKGxldCBqID0gMCwgamwgPSB2ZXJ0ZXhEYXRhLmxlbmd0aDsgaiA8IGpsOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IHZlcnRleCA9IHZlcnRleERhdGFbal1cclxuICAgICAgICAgIGlmICh2ZXJ0ZXgubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCB2ZXJ0ZXhQYXJ0cyA9IHZlcnRleC5zcGxpdCgnLycpXHJcbiAgICAgICAgICAgIGZhY2VWZXJ0aWNlcy5wdXNoKHZlcnRleFBhcnRzKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2MSA9IGZhY2VWZXJ0aWNlc1swXVxyXG4gICAgICAgIGZvciAobGV0IGogPSAxLCBqbCA9IGZhY2VWZXJ0aWNlcy5sZW5ndGggLSAxOyBqIDwgamw7IGorKykge1xyXG4gICAgICAgICAgY29uc3QgdjIgPSBmYWNlVmVydGljZXNbal1cclxuICAgICAgICAgIGNvbnN0IHYzID0gZmFjZVZlcnRpY2VzW2ogKyAxXVxyXG4gICAgICAgICAgc3RhdGUuYWRkRmFjZShcclxuICAgICAgICAgICAgdjFbMF0sXHJcbiAgICAgICAgICAgIHYyWzBdLFxyXG4gICAgICAgICAgICB2M1swXSxcclxuICAgICAgICAgICAgdjFbMV0sXHJcbiAgICAgICAgICAgIHYyWzFdLFxyXG4gICAgICAgICAgICB2M1sxXSxcclxuICAgICAgICAgICAgdjFbMl0sXHJcbiAgICAgICAgICAgIHYyWzJdLFxyXG4gICAgICAgICAgICB2M1syXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChsaW5lRmlyc3RDaGFyID09PSAnbCcpIHtcclxuICAgICAgICBjb25zdCBsaW5lUGFydHMgPSBsaW5lXHJcbiAgICAgICAgICAuc3Vic3RyaW5nKDEpXHJcbiAgICAgICAgICAudHJpbSgpXHJcbiAgICAgICAgICAuc3BsaXQoJyAnKVxyXG4gICAgICAgIGxldCBsaW5lVmVydGljZXMgPSBbXVxyXG4gICAgICAgIGNvbnN0IGxpbmVVVnMgPSBbXVxyXG4gICAgICAgIGlmIChsaW5lLmluZGV4T2YoJy8nKSA9PT0gLTEpIHtcclxuICAgICAgICAgIGxpbmVWZXJ0aWNlcyA9IGxpbmVQYXJ0c1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBsaSA9IDAsIGxsZW4gPSBsaW5lUGFydHMubGVuZ3RoOyBsaSA8IGxsZW47IGxpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBsaW5lUGFydHNbbGldLnNwbGl0KCcvJylcclxuICAgICAgICAgICAgaWYgKHBhcnRzWzBdICE9PSAnJykgbGluZVZlcnRpY2VzLnB1c2gocGFydHNbMF0pXHJcbiAgICAgICAgICAgIGlmIChwYXJ0c1sxXSAhPT0gJycpIGxpbmVVVnMucHVzaChwYXJ0c1sxXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGUuYWRkTGluZUdlb21ldHJ5KGxpbmVWZXJ0aWNlcywgbGluZVVWcylcclxuICAgICAgfSBlbHNlIGlmIChsaW5lRmlyc3RDaGFyID09PSAncCcpIHtcclxuICAgICAgICBjb25zdCBsaW5lRGF0YSA9IGxpbmUuc2xpY2UoMSkudHJpbSgpXHJcbiAgICAgICAgY29uc3QgcG9pbnREYXRhID0gbGluZURhdGEuc3BsaXQoJyAnKVxyXG4gICAgICAgIHN0YXRlLmFkZFBvaW50R2VvbWV0cnkocG9pbnREYXRhKVxyXG4gICAgICB9IGVsc2UgaWYgKChyZXN1bHQgPSBfb2JqZWN0X3BhdHRlcm4uZXhlYyhsaW5lKSkgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gKCcgJyArIHJlc3VsdFswXS5zbGljZSgxKS50cmltKCkpLnNsaWNlKDEpXHJcbiAgICAgICAgc3RhdGUuc3RhcnRPYmplY3QobilcclxuICAgICAgfSBlbHNlIGlmIChfbWF0ZXJpYWxfdXNlX3BhdHRlcm4udGVzdChsaW5lKSkge1xyXG4gICAgICAgIHN0YXRlLm9iamVjdC5zdGFydE1hdGVyaWFsKFxyXG4gICAgICAgICAgbGluZS5zdWJzdHJpbmcoNykudHJpbSgpLFxyXG4gICAgICAgICAgc3RhdGUubWF0ZXJpYWxMaWJyYXJpZXNcclxuICAgICAgICApXHJcbiAgICAgIH0gZWxzZSBpZiAoX21hdGVyaWFsX2xpYnJhcnlfcGF0dGVybi50ZXN0KGxpbmUpKSB7XHJcbiAgICAgICAgc3RhdGUubWF0ZXJpYWxMaWJyYXJpZXMucHVzaChsaW5lLnN1YnN0cmluZyg3KS50cmltKCkpXHJcbiAgICAgIH0gZWxzZSBpZiAoX21hcF91c2VfcGF0dGVybi50ZXN0KGxpbmUpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgJ1JlbmRlcmluZyBpZGVudGlmaWVyIFwidXNlbWFwXCIgbm90IHN1cHBvcnRlZC4gVGV4dHVyZXMgbXVzdCBiZSBkZWZpbmVkIGluIE1UTCBmaWxlcy4nXHJcbiAgICAgICAgKVxyXG4gICAgICB9IGVsc2UgaWYgKGxpbmVGaXJzdENoYXIgPT09ICdzJykge1xyXG4gICAgICAgIHJlc3VsdCA9IGxpbmUuc3BsaXQoJyAnKVxyXG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSByZXN1bHRbMV0udHJpbSgpLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgIHN0YXRlLm9iamVjdC5zbW9vdGggPSB2YWx1ZSAhPT0gJzAnICYmIHZhbHVlICE9PSAnb2ZmJ1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGF0ZS5vYmplY3Quc21vb3RoID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtYXRlcmlhbCA9IHN0YXRlLm9iamVjdC5jdXJyZW50TWF0ZXJpYWwoKVxyXG4gICAgICAgIGlmIChtYXRlcmlhbCkgbWF0ZXJpYWwuc21vb3RoID0gc3RhdGUub2JqZWN0LnNtb290aFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChsaW5lID09PSAnXFwwJykgY29udGludWVcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1VuZXhwZWN0ZWQgbGluZTogXCInICsgbGluZSArICdcIicpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0ZS5maW5hbGl6ZSgpXHJcblxyXG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IE5vZGUodGhpcy5jb250ZXh0LCB0aGlzLmhscywgdGhpcy52aWRlb0lkLCB0aGlzLmhvc3QsIG4pXHJcbiAgICBjb25zdCBoYXNQcmltaXRpdmVzID0gIShcclxuICAgICAgc3RhdGUub2JqZWN0cy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgc3RhdGUub2JqZWN0c1swXS5nZW9tZXRyeS52ZXJ0aWNlcy5sZW5ndGggPT09IDBcclxuICAgIClcclxuXHJcbiAgICBpZiAoaGFzUHJpbWl0aXZlcyA9PT0gdHJ1ZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHN0YXRlLm9iamVjdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0ID0gc3RhdGUub2JqZWN0c1tpXVxyXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gb2JqZWN0Lmdlb21ldHJ5XHJcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gb2JqZWN0Lm1hdGVyaWFsc1xyXG4gICAgICAgIGlmIChnZW9tZXRyeS52ZXJ0aWNlcy5sZW5ndGggPT09IDApIGNvbnRpbnVlXHJcblxyXG4gICAgICAgIGxldCBtZXNoID0gbmV3IE1lc2godGhpcy5jb250ZXh0LCBnZW9tZXRyeSlcclxuICAgICAgICBmb3IgKGxldCBtaSA9IDAsIG1pTGVuID0gbWF0ZXJpYWxzLmxlbmd0aDsgbWkgPCBtaUxlbjsgbWkrKykge1xyXG4gICAgICAgICAgY29uc3Qgc291cmNlTWF0ZXJpYWwgPSBtYXRlcmlhbHNbbWldXHJcbiAgICAgICAgICBjb25zdCBtYXRlcmlhbEhhc2ggPVxyXG4gICAgICAgICAgICBzb3VyY2VNYXRlcmlhbC5uYW1lICsgJ18nICsgc291cmNlTWF0ZXJpYWwuc21vb3RoICsgJ18nXHJcbiAgICAgICAgICBsZXQgbWF0ZXJpYWwgPSBzdGF0ZS5tYXRlcmlhbHNbbWF0ZXJpYWxIYXNoXVxyXG5cclxuICAgICAgICAgIHNvdXJjZU1hdGVyaWFsLm10bGxpYiA9IG4gKyAnLm10bCdcclxuXHJcbiAgICAgICAgICBpZiAobWF0ZXJpYWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBtYXRlcmlhbCA9IG5ldyBNYXRlcmlhbChcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRleHQsXHJcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgcGF0aCxcclxuICAgICAgICAgICAgICBzb3VyY2VNYXRlcmlhbC5tdGxsaWJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBtYXRlcmlhbC5uYW1lID0gc291cmNlTWF0ZXJpYWwubmFtZVxyXG4gICAgICAgICAgICBtYXRlcmlhbC5mbGF0U2hhZGluZyA9IHNvdXJjZU1hdGVyaWFsLnNtb290aCA/IGZhbHNlIDogdHJ1ZVxyXG5cclxuICAgICAgICAgICAgc3RhdGUubWF0ZXJpYWxzW21hdGVyaWFsSGFzaF0gPSBtYXRlcmlhbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbWVzaC5zZXRNYXRlcmlhbChtYXRlcmlhbClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1lc2gubmFtZSA9IG9iamVjdC5uYW1lXHJcblxyXG4gICAgICAgIGNvbnRhaW5lci5hZGQobWVzaClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250YWluZXJcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIE1hdGVyaWFsIHtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBnZW9tZXRyeSwgcGF0aCwgbXRsbGliKSB7XHJcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XHJcbiAgICB0aGlzLnJlYWR5ID0gZmFsc2VcclxuXHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgY2FudmFzLndpZHRoID0gNTEyIC8v6buY6K6kXHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gNTEyIC8v6buY6K6kXHJcbiAgICB0aGlzLmNhbnZhcyA9IGNhbnZhc1xyXG4gICAgbGV0IHByb21pc2UgPSBDZXNpdW0uUmVzb3VyY2UuZmV0Y2hUZXh0KHBhdGggKyBtdGxsaWIpLnRoZW4oYXN5bmMgdGV4dCA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXVxyXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2ldLnRyaW1TdGFydCgpXHJcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID09PSAwKSBjb250aW51ZVxyXG4gICAgICAgIGNvbnN0IHQgPSBsaW5lLnNwbGl0KCcgJylbMF1cclxuICAgICAgICBpZiAodCA9PT0gJ21hcF9LZCcpIHtcclxuICAgICAgICAgIGxldCBtYXAgPSBsaW5lLnNwbGl0KCcgJylbMV1cclxuICAgICAgICAgIGxldCBwaWN0dXJlID0gbXRsbGliLnJlcGxhY2UoXCIubXRsXCIsIFwiX3Jlc3VsdC5qcGdcIilcclxuXHJcblxyXG4gICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICBkaWZmdXNlbWFwOiBhd2FpdCB0aGlzLmxvYWRUZXh0dXJlKHBhdGggKyBwaWN0dXJlKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdClcclxuICAgIH0pXHJcblxyXG4gICAgLy/liJvlu7pzaGFkZXJcclxuICAgIGxldCB2cyA9ICdhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcXG4nXHJcbiAgICBsZXQgZnMgPSAnJ1xyXG5cclxuICAgIGxldCBvdXRWUyA9ICcnXHJcblxyXG4gICAgbGV0IGhhc05vcm1hbCA9IGZhbHNlXHJcbiAgICBsZXQgaGFzVmVydGV4Q29sb3JzID0gZmFsc2VcclxuICAgIGxldCBoYXNTdCA9IGZhbHNlXHJcblxyXG4gICAgaWYgKGdlb21ldHJ5Lm5vcm1hbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBoYXNOb3JtYWwgPSB0cnVlXHJcbiAgICB9XHJcbiAgICAvL+mhtueCueiJslxyXG4gICAgaWYgKGdlb21ldHJ5LmNvbG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGhhc1ZlcnRleENvbG9ycyA9IHRydWVcclxuICAgIH1cclxuICAgIC8vIFVWXHJcbiAgICBpZiAoZ2VvbWV0cnkuaGFzVVZJbmRpY2VzID09PSB0cnVlKSB7XHJcbiAgICAgIGhhc1N0ID0gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChoYXNOb3JtYWwpIHtcclxuICAgICAgdnMgKz0gJ2F0dHJpYnV0ZSB2ZWMzIG5vcm1hbDtcXG4nXHJcblxyXG4gICAgICB2cyArPSAndmFyeWluZyB2ZWMzIHZfbm9ybWFsO1xcbidcclxuICAgICAgZnMgKz0gJ3ZhcnlpbmcgdmVjMyB2X25vcm1hbDtcXG4nXHJcbiAgICAgIG91dFZTICs9ICd2X25vcm1hbCA9IG5vcm1hbDtcXG4nXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGhhc1ZlcnRleENvbG9ycykge1xyXG4gICAgICB2cyArPSAnYXR0cmlidXRlIHZlYzMgY29sb3I7XFxuJ1xyXG5cclxuICAgICAgdnMgKz0gJ3ZhcnlpbmcgdmVjMiB2X2NvbG9yO1xcbidcclxuICAgICAgZnMgKz0gJ3ZhcnlpbmcgdmVjMiB2X2NvbG9yO1xcbidcclxuICAgICAgb3V0VlMgKz0gJ3ZfY29sb3IgPSBjb2xvcjtcXG4nXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGhhc1N0KSB7XHJcbiAgICAgIHZzICs9ICdhdHRyaWJ1dGUgdmVjMiB1djtcXG4nXHJcbiAgICAgIHZzICs9ICd2YXJ5aW5nIHZlYzIgdl91djtcXG4nXHJcblxyXG4gICAgICBmcyArPSAndmFyeWluZyB2ZWMyIHZfdXY7XFxuJ1xyXG4gICAgICBvdXRWUyArPSAndl91diA9IHV2O1xcbidcclxuICAgIH1cclxuXHJcbiAgICB2cyArPSBgXHJcbiAgICAgICAgdm9pZCBtYWluKCkge1xyXG4gICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9uICogdmVjNChwb3NpdGlvbiwgMS4pO1xyXG4gICAgICAgICAgICAke291dFZTfVxyXG4gICAgICAgIH1cclxuICAgICAgICBgXHJcblxyXG4gICAgZnMgKz0gYFxyXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgY29sb3JUZXh0dXJlO1xyXG4gICAgICAgIHZvaWQgbWFpbigpIHtcclxuXHRcdFx0ICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKGNvbG9yVGV4dHVyZSwgdl91dik7XHJcblx0XHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBgXHJcblxyXG4gICAgdGhpcy5wcm9ncmFtID0gQ2VzaXVtLlNoYWRlclByb2dyYW0uZnJvbUNhY2hlKHtcclxuICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgdmVydGV4U2hhZGVyU291cmNlOiB2cyxcclxuICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2U6IGZzXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudW5pZm9ybU1hcCA9IHt9XHJcblxyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBwcm9taXNlLnRoZW4oaW1hZ2VzID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gaW1hZ2VzW2ldXHJcbiAgICAgICAgbGV0IGRpZmZ1c2VtYXAgPSBlbGVtZW50LmRpZmZ1c2VtYXBcclxuICAgICAgICB0aGlzLnVuaWZvcm1NYXAuY29sb3JUZXh0dXJlID0gKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGRpZmZ1c2VtYXBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhhdC5yZWFkeSA9IHRydWVcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB1cGRhdGVDb2xvclRleHR1cmUodmlkZW8sIHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICh0aGlzLnJlYWR5IC8qJiYgQ2VzaXVtLmRlZmluZWQodmlkZW8udmlkZW9qcykqLykge1xyXG4gICAgICAvLyB2aWRlby52aWRlb2pzLnBsYXkoKTtcclxuICAgICAgbGV0IGNvbG9yVGV4dHVyZSA9IHRoaXMudW5pZm9ybU1hcC5jb2xvclRleHR1cmUoKVxyXG4gICAgICBpZiAodmlkZW8ucGxheWluZyAmJiB2aWRlby50aW1ldXBkYXRlKSB7XHJcbiAgICAgICAgaWYgKHdpZHRoICE9PSBjb2xvclRleHR1cmUud2lkdGggfHwgaGVpZ2h0ICE9PSBjb2xvclRleHR1cmUuaGVpZ2h0KSB7XHJcbiAgICAgICAgICBjb2xvclRleHR1cmUuZGVzdHJveSgpXHJcblxyXG4gICAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSAxMjgwXHJcbiAgICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSA5NjBcclxuXHJcbiAgICAgICAgICAvLyDph43mlrDliJvlu7p0ZXh0dXJlXHJcbiAgICAgICAgICBjb25zdCBjYW52YXNDb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG4gICAgICAgICAgY2FudmFzQ29udGV4dC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgICAgIHZpZGVvLmRvbSxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgMTI4MCxcclxuICAgICAgICAgICAgOTYwLFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0XHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgbGV0IHRleHR1cmUgPSBuZXcgQ2VzaXVtLlRleHR1cmUoe1xyXG4gICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQsXHJcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5jYW52YXNcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgdGhpcy51bmlmb3JtTWFwLmNvbG9yVGV4dHVyZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1cGRhdGUgdGV4dHVyZSAyXCIpO1xyXG4gICAgICAgIC8vIGNvbnN0IGNhbnZhc0NvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgLy8gY2FudmFzQ29udGV4dC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgLy8gXHR2aWRlby5kb20sXHJcbiAgICAgICAgLy8gXHQwLFxyXG4gICAgICAgIC8vIFx0MCxcclxuICAgICAgICAvLyBcdHZpZGVvLndpZHRoLFxyXG4gICAgICAgIC8vIFx0dmlkZW8uaGVpZ2h0LFxyXG4gICAgICAgIC8vIFx0MCxcclxuICAgICAgICAvLyBcdDAsXHJcbiAgICAgICAgLy8gXHR0aGlzLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAvLyBcdHRoaXMuY2FudmFzLmhlaWdodFxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgICAgLy8gdGhpcy51bmlmb3JtTWFwLmNvbG9yVGV4dHVyZSgpLmNvcHlGcm9tKHtcclxuICAgICAgICAvLyBcdHNvdXJjZTogdGhpcy5jYW52YXNcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q29tbWFuZChkcmF3Q29tbWFuZCkge1xyXG4gICAgZHJhd0NvbW1hbmQuc2hhZGVyUHJvZ3JhbSA9IHRoaXMucHJvZ3JhbVxyXG4gICAgZHJhd0NvbW1hbmQudW5pZm9ybU1hcCA9IHRoaXMudW5pZm9ybU1hcFxyXG4gIH1cclxuXHJcbiAgbG9hZFRleHR1cmUodXJsKSB7XHJcbiAgICByZXR1cm4gQ2VzaXVtLlJlc291cmNlLmZldGNoSW1hZ2UodXJsKS50aGVuKGltYWdlID0+IHtcclxuICAgICAgdGhpcy5jYW52YXMud2lkdGggPSBpbWFnZS53aWR0aFxyXG4gICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBpbWFnZS5oZWlnaHRcclxuICAgICAgY29uc3QgY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuICAgICAgY2FudmFzQ29udGV4dC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgaW1hZ2UsXHJcbiAgICAgICAgMCxcclxuICAgICAgICAwLFxyXG4gICAgICAgIGltYWdlLndpZHRoLFxyXG4gICAgICAgIGltYWdlLmhlaWdodCxcclxuICAgICAgICAwLFxyXG4gICAgICAgIDAsXHJcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0XHJcbiAgICAgIClcclxuICAgICAgbGV0IHRleHR1cmUgPSBuZXcgQ2VzaXVtLlRleHR1cmUoe1xyXG4gICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcclxuICAgICAgICBzb3VyY2U6IHRoaXMuY2FudmFzLFxyXG4gICAgICAgIHNhbXBsZXI6IENlc2l1bS5TYW1wbGVyLk5FQVJFU1RcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBNZXNoIHtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBnZW9tZXRyeSkge1xyXG4gICAgdGhpcy5sYXN0U3RhdGUgPSBmYWxzZVxyXG4gICAgdGhpcy5uYW1lID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmdlb21ldHJ5ID0gZ2VvbWV0cnlcclxuICAgIGNvbnN0IHZhQXR0cmlidXRlcyA9IFtdXHJcbiAgICBsZXQgaW5kZXggPSAwXHJcblxyXG4gICAgdGhpcy5tYXRlcmlhbCA9IHVuZGVmaW5lZFxyXG5cclxuICAgIC8v5Yib5bu66aG254K557Si5byVXHJcbiAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBDZXNpdW0uQnVmZmVyLmNyZWF0ZVZlcnRleEJ1ZmZlcih7XHJcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgIHR5cGVkQXJyYXk6IENlc2l1bS5Db21wb25lbnREYXRhdHlwZS5jcmVhdGVUeXBlZEFycmF5KFxyXG4gICAgICAgIENlc2l1bS5Db21wb25lbnREYXRhdHlwZS5GTE9BVCxcclxuICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlc1xyXG4gICAgICApLFxyXG4gICAgICB1c2FnZTogQ2VzaXVtLkJ1ZmZlclVzYWdlLlNUQVRJQ19EUkFXXHJcbiAgICB9KVxyXG4gICAgdmFBdHRyaWJ1dGVzLnB1c2goe1xyXG4gICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHZlcnRleEJ1ZmZlcjogdmVydGV4QnVmZmVyLFxyXG4gICAgICBjb21wb25lbnREYXRhdHlwZTogQ2VzaXVtLkNvbXBvbmVudERhdGF0eXBlLkZMT0FULFxyXG4gICAgICBjb21wb25lbnRzUGVyQXR0cmlidXRlOiAzLFxyXG4gICAgICBub3JtYWxpemU6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgLy/ms5Xnur9cclxuICAgIGlmIChnZW9tZXRyeS5ub3JtYWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaW5kZXgrK1xyXG4gICAgICBjb25zdCBub3JtYWxCdWZmZXIgPSBDZXNpdW0uQnVmZmVyLmNyZWF0ZVZlcnRleEJ1ZmZlcih7XHJcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgICB0eXBlZEFycmF5OiBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuY3JlYXRlVHlwZWRBcnJheShcclxuICAgICAgICAgIENlc2l1bS5Db21wb25lbnREYXRhdHlwZS5GTE9BVCxcclxuICAgICAgICAgIGdlb21ldHJ5Lm5vcm1hbHNcclxuICAgICAgICApLFxyXG4gICAgICAgIHVzYWdlOiBDZXNpdW0uQnVmZmVyVXNhZ2UuU1RBVElDX0RSQVdcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHZhQXR0cmlidXRlcy5wdXNoKHtcclxuICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICB2ZXJ0ZXhCdWZmZXI6IG5vcm1hbEJ1ZmZlcixcclxuICAgICAgICBjb21wb25lbnREYXRhdHlwZTogQ2VzaXVtLkNvbXBvbmVudERhdGF0eXBlLkZMT0FULFxyXG4gICAgICAgIGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6IDMsXHJcbiAgICAgICAgbm9ybWFsaXplOiBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgLy/pobbngrnoibJcclxuICAgIGlmIChnZW9tZXRyeS5jb2xvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpbmRleCsrXHJcbiAgICAgIGNvbnN0IGNvbG9yQnVmZmVyID0gQ2VzaXVtLkJ1ZmZlci5jcmVhdGVWZXJ0ZXhCdWZmZXIoe1xyXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgdHlwZWRBcnJheTogQ2VzaXVtLkNvbXBvbmVudERhdGF0eXBlLmNyZWF0ZVR5cGVkQXJyYXkoXHJcbiAgICAgICAgICBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuRkxPQVQsXHJcbiAgICAgICAgICBnZW9tZXRyeS5jb2xvcnNcclxuICAgICAgICApLFxyXG4gICAgICAgIHVzYWdlOiBDZXNpdW0uQnVmZmVyVXNhZ2UuU1RBVElDX0RSQVdcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHZhQXR0cmlidXRlcy5wdXNoKHtcclxuICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICB2ZXJ0ZXhCdWZmZXI6IGNvbG9yQnVmZmVyLFxyXG4gICAgICAgIGNvbXBvbmVudERhdGF0eXBlOiBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuRkxPQVQsXHJcbiAgICAgICAgY29tcG9uZW50c1BlckF0dHJpYnV0ZTogMyxcclxuICAgICAgICBub3JtYWxpemU6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAvLyBVVlxyXG4gICAgaWYgKGdlb21ldHJ5Lmhhc1VWSW5kaWNlcyA9PT0gdHJ1ZSkge1xyXG4gICAgICBpbmRleCsrXHJcbiAgICAgIGNvbnN0IHV2QnVmZmVyID0gQ2VzaXVtLkJ1ZmZlci5jcmVhdGVWZXJ0ZXhCdWZmZXIoe1xyXG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgdHlwZWRBcnJheTogQ2VzaXVtLkNvbXBvbmVudERhdGF0eXBlLmNyZWF0ZVR5cGVkQXJyYXkoXHJcbiAgICAgICAgICBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuRkxPQVQsXHJcbiAgICAgICAgICBnZW9tZXRyeS51dnNcclxuICAgICAgICApLFxyXG4gICAgICAgIHVzYWdlOiBDZXNpdW0uQnVmZmVyVXNhZ2UuU1RBVElDX0RSQVdcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHZhQXR0cmlidXRlcy5wdXNoKHtcclxuICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICB2ZXJ0ZXhCdWZmZXI6IHV2QnVmZmVyLFxyXG4gICAgICAgIGNvbXBvbmVudERhdGF0eXBlOiBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuRkxPQVQsXHJcbiAgICAgICAgY29tcG9uZW50c1BlckF0dHJpYnV0ZTogMixcclxuICAgICAgICBub3JtYWxpemU6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgQ2VzaXVtLlZlcnRleEFycmF5KHtcclxuICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgYXR0cmlidXRlczogdmFBdHRyaWJ1dGVzXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHJlbmRlclN0YXRlID0gQ2VzaXVtLlJlbmRlclN0YXRlLmZyb21DYWNoZSh7XHJcbiAgICAgIGN1bGw6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBkZXB0aE1hc2s6IHRydWUsXHJcbiAgICAgIGRlcHRoVGVzdDoge1xyXG4gICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmRyYXdDb21tYW5kID0gbmV3IENlc2l1bS5EcmF3Q29tbWFuZCh7XHJcbiAgICAgIG93bmVyOiB0aGlzLFxyXG4gICAgICBwcmltaXRpdmVUeXBlOiBDZXNpdW0uUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsXHJcbiAgICAgIHZlcnRleEFycmF5OiB2ZXJ0ZXhBcnJheSxcclxuICAgICAgcmVuZGVyU3RhdGU6IHJlbmRlclN0YXRlLFxyXG4gICAgICBwYXNzOiBDZXNpdW0uUGFzcy5PUEFRVUVcclxuICAgICAgLy8gZGVidWdTaG93Qm91bmRpbmdWb2x1bWU6IHRydWVcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXRNYXRlcmlhbChtYXRlcmlhbCkge1xyXG4gICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBtYXRlcmlhbC5zZXRDb21tYW5kKHRoaXMuZHJhd0NvbW1hbmQpXHJcbiAgfVxyXG5cclxuICB1cGRhdGUoZnJhbWVTdGF0ZSkge1xyXG4gICAgaWYgKENlc2l1bS5kZWZpbmVkKHRoaXMubWF0ZXJpYWwpKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hdGVyaWFsLnJlYWR5KSB7XHJcbiAgICAgICAgZnJhbWVTdGF0ZS5jb21tYW5kTGlzdC5wdXNoKHRoaXMuZHJhd0NvbW1hbmQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZpZGVvKGNhbWVyYSwgdmlkZW8sIGN1bGxpbmdWb2x1bWUpIHtcclxuICAgIHZhciBwbGF5VmlkZW8gPSBmYWxzZVxyXG4gICAgaWYgKENlc2l1bS5kZWZpbmVkKHRoaXMubWF0ZXJpYWwpKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hdGVyaWFsLnJlYWR5KSB7XHJcbiAgICAgICAgY29uc3QgdmlzaWJpbGl0eSA9IGN1bGxpbmdWb2x1bWUuY29tcHV0ZVZpc2liaWxpdHkoXHJcbiAgICAgICAgICB0aGlzLmRyYXdDb21tYW5kLmJvdW5kaW5nVm9sdW1lXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh2aXNpYmlsaXR5ID49IDAgJiYgdGhpcy5tYXRlcmlhbC5yZWFkeSkge1xyXG4gICAgICAgICAgLy/lpoLmnpzop4bpopHlj6/op4FcclxuICAgICAgICAgIC8v6K6h566XbGV2ZWxcclxuICAgICAgICAgIC8vIGNhbVxyXG4gICAgICAgICAgbGV0IGRpc3RhbmNlID0gY2FtZXJhLmRpc3RhbmNlVG9Cb3VuZGluZ1NwaGVyZShcclxuICAgICAgICAgICAgdGhpcy5kcmF3Q29tbWFuZC5ib3VuZGluZ1ZvbHVtZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgbGV0IHdpZHRoID0gdmlkZW8ud2lkdGhcclxuICAgICAgICAgIGxldCBoZWlnaHQgPSB2aWRlby5oZWlnaHRcclxuICAgICAgICAgIGlmIChkaXN0YW5jZSA+PSAyMCAmJiBkaXN0YW5jZSA8IDEwMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9IHZpZGVvLndpZHRoIC8gMlxyXG4gICAgICAgICAgICBoZWlnaHQgPSB2aWRlby5oZWlnaHQgLyAyXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGRpc3RhbmNlID49IDEwMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9IHZpZGVvLndpZHRoIC8gMTBcclxuICAgICAgICAgICAgaGVpZ2h0ID0gdmlkZW8uaGVpZ2h0IC8gMTBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBwbGF5VmlkZW8gPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLm1hdGVyaWFsLnVwZGF0ZUNvbG9yVGV4dHVyZShcclxuICAgICAgICAgICAgdmlkZW8sXHJcbiAgICAgICAgICAgIE1hdGguZmxvb3Iod2lkdGgpLFxyXG4gICAgICAgICAgICBNYXRoLmZsb29yKGhlaWdodClcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGxheVZpZGVvID0gZmFsc2VcclxuICAgICAgICAgIC8vIGlmKHZpZGVvLnZpZGVvanMpIHtcclxuICAgICAgICAgIC8vIFx0dmlkZW8udmlkZW9qcy5wYXVzZSgpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmKHBsYXlWaWRlbyAhPSB0aGlzLmxhc3RTdGF0ZSkge1xyXG4gICAgLy8gXHRpZihwbGF5VmlkZW8pIHtcclxuICAgIC8vIFx0XHRjb25zb2xlLmxvZyhcInBsYXlcIik7XHJcbiAgICAvLyBcdFx0dmlkZW8udmlkZW9qcy5wbGF5KCk7XHJcbiAgICAvLyBcdH0gZWxzZSB7XHJcbiAgICAvLyBcdFx0Y29uc29sZS5sb2coXCJwYXVzZVwiKTtcclxuICAgIC8vIFx0XHR2aWRlby52aWRlb2pzLnBhdXNlKCk7XHJcbiAgICAvLyBcdH1cclxuICAgIC8vIH1cclxuICAgIHRoaXMubGFzdFN0YXRlID0gcGxheVZpZGVvXHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBOb2RlIHtcclxuICAjc2hvdyA9IHRydWVcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBobHMsIHZpZGVvSWQsIGhvc3QsIG4pIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcclxuICAgIHRoaXMudmlkZW9JZCA9IHZpZGVvSWRcclxuICAgIHRoaXMuaG9zdCA9IGhvc3RcclxuICAgIHRoaXMuX21vZGVsTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQuSURFTlRJVFlcclxuXHJcbiAgICB0aGlzLnBhcmVudCA9IG51bGxcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBbXVxyXG5cclxuICAgIHRoaXMudmlkZW8gPSB7XHJcbiAgICAgIC8vIGhsczogaGxzLFxyXG4gICAgICAvLyB2aWRlb2pzOiBudWxsLFxyXG4gICAgICBkb206IG51bGwsXHJcbiAgICAgIHBsYXlpbmc6IGZhbHNlLFxyXG4gICAgICB0aW1ldXBkYXRlOiBmYWxzZSxcclxuICAgICAgd2lkdGg6IDAsXHJcbiAgICAgIGhlaWdodDogMCxcclxuICAgICAgdHJhY2tzOiBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWUgPSAwXHJcbiAgICB0aGlzLm5hbWUgPSBuXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLiNzaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLiNzaG93ID0gdlxyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMudmlkZW8ucGxheWVyICYmIHRoaXMudmlkZW8ucGxheWVyLmdldFZ1ZUluc3RhbmNlKCkucGxheSgpXHJcbiAgICAgICAgLy8gaWYgKHRoaXMudmlkZW8ucGxheWVyICYmICF0aGlzLnZpZGVvLnBsYXlpbmcpIHtcclxuICAgICAgICAvLyAgIGlmICh0aGlzLnZpZGVvSWQpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5yZXF1ZXN0VmlkZW9SZXNvdXJjZSgpXHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5zZXRGbHZWaWRlbyh0aGlzLnZpZGVvLnVybClcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gdGhpcy52aWRlby5wbGF5ZXIgJiYgdGhpcy52aWRlby5wbGF5ZXIucmVzdW1lKClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpZGVvLnBsYXllciAmJiB0aGlzLnZpZGVvLnBsYXllci5nZXRWdWVJbnN0YW5jZSgpLnBhdXNlKClcclxuICAgICAgICAvLyBpZiAodGhpcy52aWRlby5wbGF5ZXIpIHtcclxuICAgICAgICAvLyAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgIC8vICAgY2FudmFzLndpZHRoID0gdGhpcy52aWRlby53aWR0aDtcclxuICAgICAgICAvLyAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLnZpZGVvLmhlaWdodDtcclxuICAgICAgICAvLyAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikuZHJhd0ltYWdlKHRoaXMudmlkZW8uZG9tLCAwLCAwLCB0aGlzLnZpZGVvLndpZHRoLCB0aGlzLnZpZGVvLmhlaWdodCk7XHJcbiAgICAgICAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldXHJcbiAgICAgICAgLy8gICAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgIC8vICAgICAgIGxldCB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcclxuICAgICAgICAvLyAgICAgICAgIHNvdXJjZTogY2FudmFzXHJcbiAgICAgICAgLy8gICAgICAgfSlcclxuICAgICAgICAvLyAgICAgICByZXR1cm4gdGV4dHVyZVxyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gICB0aGlzLnZpZGVvLnBsYXlpbmcgPSBmYWxzZVxyXG4gICAgICAgIC8vICAgdGhpcy52aWRlby5wbGF5ZXIuZGVzdHJveSgpXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCflj4LmlbDlv4XpobvkuLpib29sZWFuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcXVlc3RWaWRlb1Jlc291cmNlKCkge1xyXG4gICAgbGV0IGhvc3QgPSBcIlwiXHJcbiAgICBpZiAodGhpcy5ob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSlcclxuICAgICAgaG9zdCA9IHRoaXMuaG9zdFxyXG4gICAgZWxzZVxyXG4gICAgICBob3N0ID0gdGhpcy5ob3N0ICsgJy95amVhcnRoNC4wJ1xyXG4gICAgbGV0IHVybCA9IGhvc3QgKyAnL3ZpZGVvRnVzaW9uLycgKyB0aGlzLnZpZGVvSWRcclxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnZ2V0JyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH1cclxuICAgIH0pLnRoZW4oYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICBsZXQgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KClcclxuICAgICAgdGV4dCA9IEpTT04ucGFyc2UodGV4dClcclxuICAgICAgaWYgKFswLCAyMDBdLmluY2x1ZGVzKHRleHQuY29kZSkpIHtcclxuICAgICAgICBpZiAodGV4dC5kYXRhLmRldmljZUNvZGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmV0Y2goaG9zdCArICcvdmlkZW9GdXNpb24vdmlkZS9zdHJlYW0nLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdmbHYnLCBkZXZpY2VDb2RlOiB0ZXh0LmRhdGEuZGV2aWNlQ29kZSB9KSxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkudGhlbihhc3luYyAocmVzMikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdGV4dDIgPSBhd2FpdCByZXMyLnRleHQoKVxyXG4gICAgICAgICAgICB0ZXh0MiA9IEpTT04ucGFyc2UodGV4dDIpXHJcbiAgICAgICAgICAgIGlmIChbMCwgMjAwXS5pbmNsdWRlcyh0ZXh0Mi5jb2RlKSkge1xyXG4gICAgICAgICAgICAgIGlmICh0ZXh0Mi5kYXRhLnVybC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlkZW8ucGxheWVyLnVybCA9IHRleHQyLmRhdGEudXJsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZsdlZpZGVvKHRleHQyLmRhdGEudXJsKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+WcsOWdgOS4jeWtmOWcqCcpXHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHQyLm1zZyB8fCB0ZXh0Mi5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ+iuvuWkh+S4jeWtmOWcqCcpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKHRleHQubXNnIHx8IHRleHQubWVzc2FnZSlcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBtb2RlbE1hdHJpeCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbE1hdHJpeFxyXG4gIH1cclxuICBzZXQgbW9kZWxNYXRyaXgobWF0cml4KSB7XHJcbiAgICB0aGlzLl9tb2RlbE1hdHJpeCA9IG1hdHJpeC5jbG9uZSgpXHJcbiAgICB0aGlzLnVwZGF0ZU1vZGVsTWF0cml4KClcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1vZGVsTWF0cml4KCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXVxyXG5cclxuICAgICAgY2hpbGQuZHJhd0NvbW1hbmQubW9kZWxNYXRyaXggPSB0aGlzLl9tb2RlbE1hdHJpeFxyXG4gICAgICAvL+iuoeeul+WMheWbtOebklxyXG4gICAgICBjb25zdCBzcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKGNoaWxkLmdlb21ldHJ5LnZlcnRpY2VzKVxyXG4gICAgICBsZXQgbmV3TWF0ID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVRyYW5zbGF0aW9uKFxyXG4gICAgICAgIHRoaXMuX21vZGVsTWF0cml4LFxyXG4gICAgICAgIHNwaGVyZS5jZW50ZXIsXHJcbiAgICAgICAgbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgICAgKVxyXG4gICAgICBzcGhlcmUuY2VudGVyID0gQ2VzaXVtLk1hdHJpeDQuZ2V0VHJhbnNsYXRpb24oXHJcbiAgICAgICAgbmV3TWF0LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgIClcclxuICAgICAgY2hpbGQuZHJhd0NvbW1hbmQuYm91bmRpbmdWb2x1bWUgPSBzcGhlcmVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5VHJhbnNsYXRpb24oXHJcbiAgICAgIHRoaXMuX21vZGVsTWF0cml4LFxyXG4gICAgICBwb3NpdGlvbixcclxuICAgICAgdGhpcy5fbW9kZWxNYXRyaXhcclxuICAgIClcclxuICAgIHRoaXMudXBkYXRlTW9kZWxNYXRyaXgoKVxyXG4gIH1cclxuXHJcbiAgYWRkKG9iamVjdCkge1xyXG4gICAgb2JqZWN0LnBhcmVudCA9IHRoaXNcclxuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChvYmplY3QpXHJcbiAgfVxyXG5cclxuICB1cGRhdGUoZnJhbWVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMuc2hvdykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV1cclxuICAgICAgICBjaGlsZC51cGRhdGUoZnJhbWVTdGF0ZSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDorr7nva7op4bpopFcclxuICAgKiBAcGFyYW0geyp9IHVybFxyXG4gICAqL1xyXG4gIHNldFZpZGVvKHVybCkge1xyXG4gICAgdGhpcy52aWRlby5wbGF5aW5nID0gZmFsc2VcclxuICAgIHRoaXMudmlkZW8udGltZXVwZGF0ZSA9IGZhbHNlXHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBsZXQgdmlkZW9UeXBlID0gL14uK1xcLm0zdTgkLy50ZXN0KHVybClcclxuICAgICAgPyAnYXBwbGljYXRpb24veC1tcGVnVVJMJ1xyXG4gICAgICA6ICd2aWRlby9tcDQnXHJcblxyXG4gICAgLy8gaWYgKHZpZGVvVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtbXBlZ1VSTCcpIHtcclxuICAgIGxldCBpZCA9ICd2aWRlb18nICsgQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgY29uc3QgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdpZCcsIGlkKVxyXG4gICAgdmlkZW8uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgdGhpcy52aWRlby5wYXJlbnREb20gPSB2aWRlb1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBsZXQgcGxheWVyID0gbmV3IFdhc21QbGF5ZXIobnVsbCwgdmlkZW8sIGUgPT4ge1xyXG4gICAgICBpZiAoZSA9PT0gJ3BsYXknKSB7XHJcbiAgICAgICAgbGV0IHZpZGVvRWxtID0gdmlkZW8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF1cclxuICAgICAgICBsZXQgY2FudmFzRWxtID0gdmlkZW8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgICAgICAgaWYgKHZpZGVvRWxtICYmIGNhbnZhc0VsbSkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHBsYXllci5wbGF5KClcclxuICAgICAgICAgIH0sIDEwMDApXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh2aWRlb0VsbSkge1xyXG4gICAgICAgICAgICB0aGF0LnZpZGVvLmRvbSA9IHZpZGVvRWxtXHJcbiAgICAgICAgICAgIHRoYXQudmlkZW8ud2lkdGggPSB2aWRlb0VsbS52aWRlb1dpZHRoXHJcbiAgICAgICAgICAgIHRoYXQudmlkZW8uaGVpZ2h0ID0gdmlkZW9FbG0udmlkZW9IZWlnaHRcclxuICAgICAgICAgICAgdGhhdC52aWRlby5wbGF5aW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICBsZXQgdGV4dHVyZSA9IG5ldyBDZXNpdW0uVGV4dHVyZSh7XHJcbiAgICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgIHNvdXJjZTogdmlkZW9FbG1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGF0LmNoaWxkcmVuW2ldXHJcbiAgICAgICAgICAgICAgY2hpbGQubWF0ZXJpYWwudW5pZm9ybU1hcFsnY29sb3JUZXh0dXJlJ10gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiAoXHJcbiAgICAgICAgICAgICAgICAvLyAgIHZpZGVvRWxtLnZpZGVvV2lkdGggIT0gdGhhdC52aWRlby53aWR0aCB8fFxyXG4gICAgICAgICAgICAgICAgLy8gICB2aWRlb0VsbS52aWRlb0hlaWdodCAhPSB0aGF0LnZpZGVvLmhlaWdodFxyXG4gICAgICAgICAgICAgICAgLy8gKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdyZXNpemUgdGV4dHVyZScpXHJcbiAgICAgICAgICAgICAgICAvLyAgIHRleHR1cmUuZGVzdHJveSgpXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgICAgIC8vICAgICBjb250ZXh0OiB0aGF0LmNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgc291cmNlOiB2aWRlb0VsbVxyXG4gICAgICAgICAgICAgICAgLy8gICB9KVxyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvRWxtLnZpZGVvV2lkdGhcclxuICAgICAgICAgICAgICAgIHRoYXQudmlkZW8uaGVpZ2h0ID0gdmlkZW9FbG0udmlkZW9IZWlnaHRcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB0ZXh0dXJlLmNvcHlGcm9tKHtcclxuICAgICAgICAgICAgICAgIC8vICAgc291cmNlOiB2aWRlb0VsbVxyXG4gICAgICAgICAgICAgICAgLy8gfSlcclxuICAgICAgICAgICAgICAgIHRleHR1cmUuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IHZpZGVvRWxtXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gaWYodGhhdC5fY2xlYXJNZW1vcnlJbnRlcnZhbEV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgLy8gICBjbGVhckludGVydmFsKHRoYXQuX2NsZWFyTWVtb3J5SW50ZXJ2YWxFdmVudClcclxuICAgICAgICAgICAgICAvLyAgIHRoYXQuX2NsZWFyTWVtb3J5SW50ZXJ2YWxFdmVudCA9IG51bGxcclxuICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgLy8gdGhhdC5fY2xlYXJNZW1vcnlJbnRlcnZhbEV2ZW50ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICAgICAgICAgICAgLy8gICBjYW52YXMud2lkdGggPSB0aGF0LnZpZGVvLndpZHRoO1xyXG4gICAgICAgICAgICAgIC8vICAgY2FudmFzLmhlaWdodCA9IHRoYXQudmlkZW8uaGVpZ2h0O1xyXG4gICAgICAgICAgICAgIC8vICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5kcmF3SW1hZ2UodmlkZW9FbG0sIDAsIDAsIHRoYXQudmlkZW8ud2lkdGgsIHRoYXQudmlkZW8uaGVpZ2h0KTtcclxuICAgICAgICAgICAgICAvLyAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vICAgICB0ZXh0dXJlLmRlc3Ryb3koKVxyXG4gICAgICAgICAgICAgIC8vICAgICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgICAvLyAgICAgICBjb250ZXh0OiB0aGF0LmNvbnRleHQsXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgc291cmNlOiBjYW52YXNcclxuICAgICAgICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAvLyAgIHRoYXQubG9hZGVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAvLyAgIHRoYXQudmlkZW8ucGxheWVyLnN0b3AoKVxyXG4gICAgICAgICAgICAgIC8vICAgdGhhdC52aWRlby5wbGF5ZXIuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAvLyAgICAgdGhhdC52aWRlby5wbGF5ZXIucGxheSh0aGF0LnZpZGVvLnBsYXllci51cmwsIDEpXHJcbiAgICAgICAgICAgICAgLy8gICB9LCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gICBpZih0aGF0Ll92aWRlb0xvYWRlZEludGVydmFsRXZlbnQpIHtcclxuICAgICAgICAgICAgICAvLyAgICAgY2xlYXJJbnRlcnZhbCh0aGF0Ll92aWRlb0xvYWRlZEludGVydmFsRXZlbnQpXHJcbiAgICAgICAgICAgICAgLy8gICAgIHRoYXQuX3ZpZGVvTG9hZGVkSW50ZXJ2YWxFdmVudCA9IG51bGxcclxuICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAvLyAgIHRoYXQuX3ZpZGVvTG9hZGVkSW50ZXJ2YWxFdmVudCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAvLyAgICAgaWYodGhhdC5sb2FkZWQpIHtcclxuICAgICAgICAgICAgICAvLyAgICAgICBjaGlsZC5tYXRlcmlhbC51bmlmb3JtTWFwWydjb2xvclRleHR1cmUnXSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAvLyAgICAgICAgIHRleHR1cmUuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgICAvLyAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgIC8vICAgICAgICAgICBzb3VyY2U6IHZpZGVvRWxtXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgICAgICAgICAgICAvLyAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gICAgICAgY2xlYXJJbnRlcnZhbCh0aGF0Ll92aWRlb0xvYWRlZEludGVydmFsRXZlbnQpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgdGhhdC5fdmlkZW9Mb2FkZWRJbnRlcnZhbEV2ZW50ID0gbnVsbFxyXG4gICAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gICB9LCA1MDApO1xyXG4gICAgICAgICAgICAgIC8vIH0sIDYwMDAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjYW52YXNFbG0pIHtcclxuICAgICAgICAgICAgdGhhdC52aWRlby5kb20gPSBjYW52YXNFbG1cclxuICAgICAgICAgICAgdGhhdC52aWRlby53aWR0aCA9IGNhbnZhc0VsbS53aWR0aFxyXG4gICAgICAgICAgICB0aGF0LnZpZGVvLmhlaWdodCA9IGNhbnZhc0VsbS5oZWlnaHRcclxuICAgICAgICAgICAgdGhhdC52aWRlby5wbGF5aW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICBsZXQgdGV4dHVyZSA9IG5ldyBDZXNpdW0uVGV4dHVyZSh7XHJcbiAgICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgIHNvdXJjZTogY2FudmFzRWxtXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhhdC5jaGlsZHJlbltpXVxyXG4gICAgICAgICAgICAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICBjYW52YXNFbG0ud2lkdGggIT0gdGhhdC52aWRlby53aWR0aCB8fFxyXG4gICAgICAgICAgICAgICAgICBjYW52YXNFbG0uaGVpZ2h0ICE9IHRoYXQudmlkZW8uaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc2l6ZSB0ZXh0dXJlJylcclxuICAgICAgICAgICAgICAgICAgdGV4dHVyZS5kZXN0cm95KClcclxuICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IG5ldyBDZXNpdW0uVGV4dHVyZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogY2FudmFzRWxtXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGF0LnZpZGVvLndpZHRoID0gY2FudmFzRWxtLndpZHRoXHJcbiAgICAgICAgICAgICAgICB0aGF0LnZpZGVvLmhlaWdodCA9IGNhbnZhc0VsbS5oZWlnaHRcclxuICAgICAgICAgICAgICAgIC8vIHRleHR1cmUuY29weUZyb20oe1xyXG4gICAgICAgICAgICAgICAgLy8gICBzb3VyY2U6IGNhbnZhc0VsbVxyXG4gICAgICAgICAgICAgICAgLy8gfSlcclxuICAgICAgICAgICAgICAgIHRleHR1cmUuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IGNhbnZhc0VsbVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcGxheWVyLnBsYXkodXJsLCAxKVxyXG4gICAgdGhpcy52aWRlby5wbGF5ZXIgPSBwbGF5ZXJcclxuICAgIGxldCB2aWRlb0VsbSA9IHZpZGVvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdXHJcbiAgICB2aWRlb0VsbS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyAgIGNvbnN0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXVxyXG4gICAgICAvLyAgICAgY2hpbGQubWF0ZXJpYWwudW5pZm9ybU1hcFsnY29sb3JUZXh0dXJlJ10gPSAoKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGxldCB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgLy8gICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQsXHJcbiAgICAgIC8vICAgICAgICAgc291cmNlOiB2aWRlb0VsbVxyXG4gICAgICAvLyAgICAgICB9KVxyXG4gICAgICAvLyAgICAgICByZXR1cm4gdGV4dHVyZVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruinhumikVxyXG4gICAqIEBwYXJhbSB7Kn0gdXJsXHJcbiAgICovXHJcbiAgc2V0Rmx2VmlkZW8zKHVybCkge1xyXG4gICAgdGhpcy52aWRlby5wbGF5aW5nID0gZmFsc2VcclxuICAgIHRoaXMudmlkZW8udGltZXVwZGF0ZSA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZGVvLnVybCA9IHVybFxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgaWQgPSAndmlkZW9fJyArIENlc2l1bS5jcmVhdGVHdWlkKClcclxuICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKVxyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdpZCcsIGlkKVxyXG4gICAgLy8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbylcclxuICAgIC8vIHZpZGVvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IHBsYXllciA9IG5ldyBmbHZwbGF5ZXIodmlkZW8sIHsgdXJsOiB1cmwgfSlcclxuICAgIHRoaXMudmlkZW8ucGxheWVyID0gcGxheWVyXHJcblxyXG4gICAgcGxheWVyLm9uKCdFdmVudHMnLCAnTUVESUFfSU5GTycsIGZ1bmN0aW9uIChpbmZvKSB7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwbGF5ZXIuZmx2UGxheWVyLnBsYXkoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhhdC52aWRlby5kb20gPSB2aWRlb1xyXG4gICAgICB0aGF0LnZpZGVvLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aFxyXG4gICAgICB0aGF0LnZpZGVvLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0XHJcbiAgICAgIHRoYXQudmlkZW8ucGxheWluZyA9IHRydWVcclxuICAgICAgbGV0IHRleHR1cmUgPSBuZXcgQ2VzaXVtLlRleHR1cmUoe1xyXG4gICAgICAgIGNvbnRleHQ6IHRoYXQuY29udGV4dCxcclxuICAgICAgICBzb3VyY2U6IHZpZGVvXHJcbiAgICAgIH0pXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gdGhhdC5jaGlsZHJlbltpXVxyXG4gICAgICAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGhcclxuICAgICAgICAgIHRoYXQudmlkZW8uaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHRcclxuICAgICAgICAgIHRleHR1cmUuZGVzdHJveSgpXHJcbiAgICAgICAgICB0ZXh0dXJlID0gbmV3IENlc2l1bS5UZXh0dXJlKHtcclxuICAgICAgICAgICAgY29udGV4dDogdGhhdC5jb250ZXh0LFxyXG4gICAgICAgICAgICBzb3VyY2U6IHZpZGVvXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgcmV0dXJuIHRleHR1cmVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBzZXRGbHZWaWRlbzIodXJsKSB7XHJcbiAgICB0aGlzLnZpZGVvLnBsYXlpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy52aWRlby50aW1ldXBkYXRlID0gZmFsc2VcclxuICAgIHRoaXMudmlkZW8udXJsID0gdXJsXHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBpZCA9ICd2aWRlb18nICsgQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgY29uc3QgdmlkZW9Cb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgdmlkZW9Cb3guc2V0QXR0cmlidXRlKCdpZCcsIGlkKVxyXG4gICAgdmlkZW9Cb3guc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBsZXQgcGxheWVyID0gbmV3IGplc3NpYnVjYVBsYXllcih2aWRlb0JveCwgeyB1cmw6IHVybCB9KVxyXG5cclxuICAgIHRoaXMudmlkZW8ucGxheWVyID0gcGxheWVyXHJcbiAgICB0aGlzLnZpZGVvLnBsYXllci5wbGF5ZXIub24oXCJwbGF5XCIsIGZ1bmN0aW9uIChmbGFnKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcxMTExMTExMTExJylcclxuICAgICAgbGV0IHZpZGVvID0gdmlkZW9Cb3guZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgICAgIHZpZGVvQm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgIHRoYXQudmlkZW8uZG9tID0gdmlkZW9cclxuICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvLndpZHRoXHJcbiAgICAgIHRoYXQudmlkZW8uaGVpZ2h0ID0gdmlkZW8uaGVpZ2h0XHJcbiAgICAgIHRoYXQudmlkZW8ucGxheWluZyA9IHRydWVcclxuICAgICAgbGV0IHRleHR1cmUgPSBuZXcgQ2VzaXVtLlRleHR1cmUoe1xyXG4gICAgICAgIGNvbnRleHQ6IHRoYXQuY29udGV4dCxcclxuICAgICAgICBzb3VyY2U6IHZpZGVvXHJcbiAgICAgIH0pXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gdGhhdC5jaGlsZHJlbltpXVxyXG4gICAgICAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvLndpZHRoXHJcbiAgICAgICAgICB0aGF0LnZpZGVvLmhlaWdodCA9IHZpZGVvLmhlaWdodFxyXG4gICAgICAgICAgdGV4dHVyZS5jb3B5RnJvbSh7XHJcbiAgICAgICAgICAgIHNvdXJjZTogdmlkZW9cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICByZXR1cm4gdGV4dHVyZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNldEZsdlZpZGVvKHVybCkge1xyXG4gICAgdGhpcy52aWRlby5wbGF5aW5nID0gZmFsc2VcclxuICAgIHRoaXMudmlkZW8udGltZXVwZGF0ZSA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZGVvLnVybCA9IHVybFxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGxldCBpZCA9ICd2aWRlb18nICsgQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgbGV0IHBhcmVudERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5ai1zZGstbGl2ZS1wbGF5ZXItYm94JylcclxuICAgIGlmICghcGFyZW50RG9tKSB7XHJcbiAgICAgIHBhcmVudERvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgIHBhcmVudERvbS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3lqLXNkay1saXZlLXBsYXllci1ib3gnKVxyXG4gICAgICBwYXJlbnREb20uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudERvbSlcclxuICAgIH1cclxuICAgIGNvbnN0IHZpZGVvQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGl2ZS1wbGF5ZXInKVxyXG4gICAgdmlkZW9Cb3guc2V0QXR0cmlidXRlKCdpZCcsIGlkKVxyXG4gICAgdmlkZW9Cb3guc2V0QXR0cmlidXRlKCd2aWRlby11cmwnLCB0aGlzLnZpZGVvLnVybClcclxuICAgIHZpZGVvQm94LnNldEF0dHJpYnV0ZSgnbGl2ZScsIHRydWUpXHJcbiAgICB2aWRlb0JveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICBwYXJlbnREb20uYXBwZW5kQ2hpbGQodmlkZW9Cb3gpXHJcbiAgICB0aGlzLnZpZGVvLnBsYXllciA9IHZpZGVvQm94XHJcbiAgICB2aWRlb0JveC5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgZXZ0ID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ+aSreaUvuaIkOWKnycsIHRoaXMudmlkZW8udXJsLCB0aGlzLm5hbWUpXHJcbiAgICAgIGxldCB2aWRlbyA9IHZpZGVvQm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdXHJcbiAgICAgIHRoYXQudmlkZW8uZG9tID0gdmlkZW9cclxuICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvLndpZHRoXHJcbiAgICAgIHRoYXQudmlkZW8uaGVpZ2h0ID0gdmlkZW8uaGVpZ2h0XHJcbiAgICAgIHRoYXQudmlkZW8ucGxheWluZyA9IHRydWVcclxuICAgICAgbGV0IHRleHR1cmUgPSBuZXcgQ2VzaXVtLlRleHR1cmUoe1xyXG4gICAgICAgIGNvbnRleHQ6IHRoYXQuY29udGV4dCxcclxuICAgICAgICBzb3VyY2U6IHZpZGVvXHJcbiAgICAgIH0pXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gdGhhdC5jaGlsZHJlbltpXVxyXG4gICAgICAgIGNoaWxkLm1hdGVyaWFsLnVuaWZvcm1NYXBbJ2NvbG9yVGV4dHVyZSddID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhhdC52aWRlby53aWR0aCA9IHZpZGVvLndpZHRoXHJcbiAgICAgICAgICB0aGF0LnZpZGVvLmhlaWdodCA9IHZpZGVvLmhlaWdodFxyXG4gICAgICAgICAgdGV4dHVyZS5jb3B5RnJvbSh7XHJcbiAgICAgICAgICAgIHNvdXJjZTogdmlkZW9cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICByZXR1cm4gdGV4dHVyZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0Rlc3Ryb3llZCgpIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIC8vIHRoaXMudmlkZW8ucGxheWVyICYmIHRoaXMudmlkZW8ucGxheWVyLmRlc3Ryb3koKVxyXG4gICAgaWYodGhpcy52aWRlby5wbGF5ZXIpIHtcclxuICAgICAgdGhpcy52aWRlby5wbGF5ZXIuc2V0QXR0cmlidXRlKCd2aWRlby11cmwnLCBudWxsKVxyXG4gICAgICBsZXQgcGFyZW50RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3lqLXNkay1saXZlLXBsYXllci1ib3gnKVxyXG4gICAgICBwYXJlbnREb20ucmVtb3ZlQ2hpbGQodGhpcy52aWRlby5wbGF5ZXIpXHJcbiAgICAgIHRoaXMudmlkZW8ucGxheWVyID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQU1vZGVsTG9hZGVyXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/LoadObjModel/AModelLoader.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LoadObjModel/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/LoadObjModel/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7F29\\u653E\\n
\\n \\n \\u662F\\u5426\\u7B49\\u6BD4\\u4F8B\\u7F29\\u653E\\n
\\n
\\n
\\n
\\n
\\n
\\n x \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n y \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n z \\u8F74\\n \\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7B49\\u6BD4\\u4F8B\\u7F29\\u653E\\n \\n
\\n \\n \\u500D\\n \\n
\\n\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9hZE9iak1vZGVsL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0xvYWRPYmpNb2RlbC9fZWxlbWVudC5qcz8zODgwIl0sInNvdXJjZXNDb250ZW50IjpbIlxyXG5mdW5jdGlvbiBodG1sKCkge1xyXG4gIHJldHVybiBgXHJcbiAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgbmFtZVwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTE4MFwiIG1heD1cIjE4MFwiIEBtb2RlbD1cImxuZ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mtbfmi5Tpq5jluqY8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwibGF0XCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGFibGUtbGVmdC1saW5lXCI+XHJcbiAgICAgICAgPHNwYW4+57yp5pS+PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ib3hcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjttYXJnaW4tbGVmdDogMjBweDtcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIndpZHRoOiAxNHB4O2hlaWdodDogMTRweDttYXJnaW4tdG9wOiAycHg7bWFyZ2luLXJpZ2h0OiA1cHg7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgPHNwYW4+5piv5ZCm562J5q+U5L6L57yp5pS+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBuby1lcXVhbFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj54IOi9tDwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNjYWxlLXhcIiBzdHlsZT1cImZsZXg6IDE7bWFyZ2luLXJpZ2h0OiAxNXB4O1wiIHR5cGU9XCJyYW5nZVwiIG1heD1cIjk5XCIgbWluPVwiMC4wMDAxXCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJzY2FsZVhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IGF1dG87XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNjYWxlLXhcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInNjYWxlWFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+eSDovbQ8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzY2FsZS15XCIgc3R5bGU9XCJmbGV4OiAxO21hcmdpbi1yaWdodDogMTVweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCI5OVwiIG1pbj1cIjAuMDAwMVwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwic2NhbGVZXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIiBzdHlsZT1cIndpZHRoOiBhdXRvO1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzY2FsZS15XCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5XCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJzY2FsZVlcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+5YCNPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnog6L20PC9zcGFuPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwic2NhbGUtelwiIHN0eWxlPVwiZmxleDogMTttYXJnaW4tcmlnaHQ6IDE1cHg7XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiOTlcIiBtaW49XCIwLjAwMDFcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInNjYWxlWlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogYXV0bztcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2NhbGUtelwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OVwiIHN0ZXA9XCIwLjAxXCIgQG1vZGVsPVwic2NhbGVaXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPuWAjTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBlcXVhbFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nrYnmr5TkvovnvKnmlL48L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgIGNsYXNzPVwic2NhbGUtYWxsXCIgc3R5bGU9XCJmbGV4OiAxO21hcmdpbi1yaWdodDogMTVweDtcIiB0eXBlPVwicmFuZ2VcIiBtYXg9XCI5OVwiIG1pbj1cIjAuMDAwMVwiIHN0ZXA9XCIwLjAxXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIiBzdHlsZT1cIndpZHRoOiBhdXRvO1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzY2FsZS1hbGxcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBzdGVwPVwiMC4wMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7lgI08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFvR0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/LoadObjModel/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LoadObjModel/flvplayer.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/LoadObjModel/flvplayer.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar flvplayer = /*#__PURE__*/function () {\n function flvplayer(dom, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, flvplayer);\n this.dom = dom;\n this.playerUrl = options.url;\n this.init();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(flvplayer, [{\n key: \"init\",\n value: function init() {\n this.flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: this.playerUrl,\n isLive: true,\n hasAudio: false,\n hasVideo: true\n }, {\n enableWorker: true,\n enableStashBuffer: false,\n stashInitialSize: 128\n });\n this.flvPlayer.attachMediaElement(this.dom);\n this.flvPlayer.load();\n // this.flvPlayer.play();\n }\n }, {\n key: \"on\",\n value: function on(type, Events, cd) {\n this.flvPlayer.on(flvjs[type][Events], cd);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.flvPlayer.destroy();\n this.flvPlayer = null;\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (flvplayer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9hZE9iak1vZGVsL2ZsdnBsYXllci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Mb2FkT2JqTW9kZWwvZmx2cGxheWVyLmpzP2Q4YWMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgZmx2cGxheWVyIHtcclxuICBjb25zdHJ1Y3Rvcihkb20sIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuZG9tID0gZG9tXHJcbiAgICB0aGlzLnBsYXllclVybCA9IG9wdGlvbnMudXJsXHJcbiAgICB0aGlzLmluaXQoKVxyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIHRoaXMuZmx2UGxheWVyID0gZmx2anMuY3JlYXRlUGxheWVyKHtcclxuICAgICAgdHlwZTogJ2ZsdicsXHJcbiAgICAgIHVybDogdGhpcy5wbGF5ZXJVcmwsXHJcbiAgICAgIGlzTGl2ZTogdHJ1ZSxcclxuICAgICAgaGFzQXVkaW86IGZhbHNlLFxyXG4gICAgICBoYXNWaWRlbzogdHJ1ZVxyXG4gICAgfSx7XHJcbiAgICAgIGVuYWJsZVdvcmtlcjogdHJ1ZSxcclxuICAgICAgZW5hYmxlU3Rhc2hCdWZmZXI6IGZhbHNlLFxyXG4gICAgICBzdGFzaEluaXRpYWxTaXplOiAxMjhcclxuICB9KTtcclxuICAgIHRoaXMuZmx2UGxheWVyLmF0dGFjaE1lZGlhRWxlbWVudCh0aGlzLmRvbSk7XHJcbiAgICB0aGlzLmZsdlBsYXllci5sb2FkKCk7XHJcbiAgICAvLyB0aGlzLmZsdlBsYXllci5wbGF5KCk7XHJcbiAgfVxyXG5cclxuICBvbih0eXBlLCBFdmVudHMsIGNkKSB7XHJcbiAgICB0aGlzLmZsdlBsYXllci5vbihmbHZqc1t0eXBlXVtFdmVudHNdLCBjZClcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmZsdlBsYXllci5kZXN0cm95KClcclxuICAgIHRoaXMuZmx2UGxheWVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZmx2cGxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/LoadObjModel/flvplayer.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LoadObjModel/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/LoadObjModel/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LoadObjModel; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/LoadObjModel/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Controller */ \"./src/Controller/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\nvar LoadObjModel = /*#__PURE__*/function (_tools) {\n function LoadObjModel(sdk, options) {\n var _this;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, LoadObjModel);\n _this = _callSuper(this, LoadObjModel);\n // eslint-disable-next-line no-undef\n _this.sdk = sdk;\n _this.viwer = sdk.viewer;\n _this.options = _objectSpread({}, options);\n _this.options.host = options.host || Object(_on__WEBPACK_IMPORTED_MODULE_8__[\"getHost\"])();\n _this.options.name = options.name || '未命名对象';\n _this.options.show = options.show || options.show === false ? options.show : true;\n if (typeof options.scale === 'number') {\n _this.options.scale = {};\n _this.options.scale.x = options.scale;\n _this.options.scale.y = options.scale;\n _this.options.scale.z = options.scale;\n } else {\n _this.options.scale = options.scale || {};\n _this.options.scale.x = _this.options.scale.x || _this.options.scale.x === 0 ? _this.options.scale.x : 1;\n _this.options.scale.y = _this.options.scale.y || _this.options.scale.y === 0 ? _this.options.scale.y : 1;\n _this.options.scale.z = _this.options.scale.z || _this.options.scale.z === 0 ? _this.options.scale.z : 1;\n }\n _this.primitive = null;\n _this._loadEvent = void 0;\n _this._loaded = false;\n _this._elms = {};\n _this.Dialog = _Dialog;\n _this._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n LoadObjModel.setDefaultValue(_this);\n _this.requestResource();\n _this.ControllerObject = new _Controller__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.sdk, {\n position: _objectSpread({}, _this.options.position),\n rotate: {\n x: (360 + _this.options.roll % 360) % 360,\n y: (360 + -_this.options.pitch % 360) % 360,\n z: (360 + -_this.options.heading % 360) % 360\n }\n });\n _this.ControllerObject.controllerCallBack = _this.controllerCallBack;\n _this.HeadingPitchRollCallBack = _this.Dialog.HeadingPitchRollCallBack;\n\n // this.viwer.camera.moveEnd.addEventListener(() => {\n // if (this.options.show && this.primitive && this.primitive.video && this.primitive.video.player && this.options.position) {\n // const position1 = Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt);\n // const position2 = this.viwer.camera.position\n // const distance = Cesium.Cartesian3.distance(position1, position2);\n // if (this.options.playDistance && distance > this.options.playDistance) {\n // this.primitive.video.player.getVueInstance().pause()\n // }\n // else {\n // this.primitive.video.player.getVueInstance().play()\n // }\n // }\n // })\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(LoadObjModel, _tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(LoadObjModel, [{\n key: \"requestResource\",\n value: function requestResource() {\n this.addResource().then(function (r) {});\n }\n }, {\n key: \"addResource\",\n value: function () {\n var _addResource = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var that, xml, xmlString, parser, xmlDoc, position, crs, result, scene, origin, obj_modelMatrix, obj;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n that = this;\n that.options.xmlURL = that.options.objUrl.replace('.obj', '.xml');\n if (!(that.options.xmlURL !== '')) {\n _context.next = 34;\n break;\n }\n _context.next = 5;\n return fetch(that.options.xmlURL);\n case 5:\n xml = _context.sent;\n if (!xml.ok) {\n _context.next = 32;\n break;\n }\n _context.next = 9;\n return xml.text();\n case 9:\n xmlString = _context.sent;\n parser = new DOMParser();\n xmlDoc = parser.parseFromString(xmlString, 'text/xml'); // console.log('xmlDocxmlDocxmlDoc', xmlDoc)\n position = xmlDoc.getElementsByTagName('Position')[0].textContent.split(','); // const bbox = xmlDoc.getElementsByTagName('bbox')[0]\n crs = xmlDoc.getElementsByTagName('Crs')[0].textContent;\n result = that.convert([{\n x: position[0],\n y: position[1],\n z: position[2]\n }], crs, 'EPSG:4326');\n that.options.position = that.options.position || {\n lng: result.points[0].x,\n lat: result.points[0].y,\n alt: result.points[0].z\n };\n that.ControllerObject.position = that.options.position;\n scene = that.viwer.scene;\n origin = Cesium.Cartesian3.fromDegrees(that.options.position.lng, that.options.position.lat, that.options.position.alt);\n obj_modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(origin, new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(0.85), Cesium.Math.toRadians(0), Cesium.Math.toRadians(0)));\n _context.next = 22;\n return window.objLoader.Load(that.options.objUrl);\n case 22:\n obj = _context.sent;\n obj.show = that.options.show;\n obj.modelMatrix = obj_modelMatrix;\n obj.setFlvVideo(that.options.videoUrl);\n scene.primitives.add(obj);\n that.primitive = obj;\n that.controllerCallBack({\n rotate: {\n x: that.options.roll,\n y: -that.options.pitch,\n z: -that.options.heading\n },\n position: _objectSpread({}, that.options.position)\n });\n this.loaded = true;\n this._loaded = true;\n if (this._loadEvent) {\n this._loadEvent();\n }\n case 32:\n _context.next = 36;\n break;\n case 34:\n // eslint-disable-next-line no-console\n console.error('请填写xml路径');\n return _context.abrupt(\"return\");\n case 36:\n if (!(that.options.objUrl === '')) {\n _context.next = 39;\n break;\n }\n // eslint-disable-next-line no-console\n console.error('请填写obj模型路径');\n return _context.abrupt(\"return\");\n case 39:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function addResource() {\n return _addResource.apply(this, arguments);\n }\n return addResource;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n a,\n latitude,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 28;\n break;\n case 25:\n a = 100 * Math.tan(60);\n latitude = a / 111319.55;\n this.sdk.viewer.camera.flyTo({\n destination: new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat - latitude, this.options.position.alt + 100),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 28:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n var _this2 = this;\n var state,\n equal,\n contentElm,\n equalSwitchElm,\n equalBoxElm,\n noEqualBoxElm,\n equalElms,\n all_elm,\n i,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n state = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n equal = false;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 6;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.sdk, this.options, {\n title: '编辑属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this2.name = _this2.name.trim();\n if (!_this2.name) {\n _this2.name = '未命名对象';\n }\n _this2.originalOptions = _this2.deepCopyObj(_this2.options);\n _this2._DialogObject.close();\n _this2.Dialog.confirmCallBack && _this2.Dialog.confirmCallBack(_this2.originalOptions);\n },\n // resetCallBack: () => {\n // this.name = this.originalOptions.name\n // this.Dialog.resetCallBack && this.Dialog.resetCallBack()\n // },\n resetCallBack: function resetCallBack() {\n _this2.reset();\n _this2.Dialog.resetCallBack && _this2.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this2.Dialog.removeCallBack && _this2.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this2.reset();\n _this2.positionEditing = false;\n _this2.Dialog.closeCallBack && _this2.Dialog.closeCallBack();\n },\n rotateCallBack: function rotateCallBack() {\n if (_this2.rotationEditing) {\n _this2.rotationEditing = false;\n } else {\n _this2.rotationEditing = true;\n }\n },\n translationalCallBack: function translationalCallBack() {\n if (_this2.positionEditing) {\n _this2.positionEditing = false;\n } else {\n _this2.positionEditing = true;\n }\n }\n }, true);\n case 6:\n this._DialogObject = _context3.sent;\n contentElm = document.createElement('div');\n contentElm.style.width = '448px';\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n equalSwitchElm = this._DialogObject._element.content.getElementsByClassName('checkbox-box')[0].querySelector('input');\n equalBoxElm = this._DialogObject._element.content.getElementsByClassName('equal')[0];\n noEqualBoxElm = this._DialogObject._element.content.getElementsByClassName('no-equal')[0];\n equalSwitchElm.checked = equal;\n equalSwitchElm.addEventListener('change', function (e) {\n equal = e.target.checked;\n if (equal) {\n equalBoxElm.style.display = 'flex';\n noEqualBoxElm.style.display = 'none';\n } else {\n equalBoxElm.style.display = 'none';\n noEqualBoxElm.style.display = 'flex';\n }\n });\n equalElms = equalBoxElm.getElementsByTagName('input');\n equalElms[0].value = this.scaleX;\n equalElms[1].value = this.scaleX;\n equalElms[0].addEventListener('input', function (e) {\n _this2.scaleX = e.target.value;\n _this2.scaleY = e.target.value;\n _this2.scaleZ = e.target.value;\n });\n equalElms[1].addEventListener('input', function (e) {\n _this2.scaleX = e.target.value;\n _this2.scaleY = e.target.value;\n _this2.scaleZ = e.target.value;\n });\n if (equal) {\n equalBoxElm.style.display = 'flex';\n noEqualBoxElm.style.display = 'none';\n } else {\n equalBoxElm.style.display = 'none';\n noEqualBoxElm.style.display = 'flex';\n }\n setTimeout(function () {\n if (_this2._DialogObject._element.foot) {\n var translationalElm = _this2._DialogObject._element.foot.getElementsByClassName('rotate')[0];\n if (translationalElm) {\n translationalElm.style.position = 'absolute';\n translationalElm.style.left = '100px';\n }\n }\n }, 0);\n all_elm = contentElm.getElementsByTagName(\"*\");\n for (i = 0; i < all_elm.length; i++) {\n all_elm[i].addEventListener('input', function (e) {\n if (e.target.value === '0' && e.target.min === '0') {\n switch (e.target.className) {\n case 'scale-x':\n _this2.scaleX = 0.0001;\n break;\n case 'scale-y':\n _this2.scaleY = 0.0001;\n break;\n case 'scale-z':\n _this2.scaleZ = 0.0001;\n case 'scale-all':\n _this2.scaleX = 0.0001;\n _this2.scaleY = 0.0001;\n _this2.scaleZ = 0.0001;\n break;\n case 3:\n }\n }\n });\n }\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.scaleX.push(equalElms[0], equalElms[1]);\n case 28:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n this.ControllerObject.destroy();\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n if (!this.primitive) {\n return;\n }\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt));\n this.primitive.modelMatrix = m;\n // 旋转\n this.primitive.modelMatrix = Cesium.Matrix4.multiplyByMatrix3(this.primitive.modelMatrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(this.options.heading, this.options.pitch, this.options.roll)), this.primitive.modelMatrix);\n\n // 缩放\n var scaleX = this.options.scale.x;\n var scaleY = this.options.scale.y;\n var scaleZ = this.options.scale.z;\n if (scaleX === 0) {\n scaleX = 0.00001;\n }\n if (scaleY === 0) {\n scaleY = 0.00001;\n }\n if (scaleZ === 0) {\n scaleZ = 0.00001;\n }\n Cesium.Matrix4.multiplyByScale(this.primitive.modelMatrix, new Cesium.Cartesian3(scaleX, scaleY, scaleZ), this.primitive.modelMatrix);\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.sdk.viewer.scene.primitives.remove(this.primitive);\n this.primitive = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }, {\n key: \"controllerCallBack\",\n get: function get() {\n var _this3 = this;\n return function (params) {\n _this3.options.heading = -params.rotate.z;\n _this3.options.pitch = -params.rotate.y;\n _this3.options.roll = params.rotate.x;\n _this3.HeadingPitchRollCallBack && _this3.HeadingPitchRollCallBack(params);\n var lng = Number(Number(params.position.lng).toFixed(8));\n var lat = Number(Number(params.position.lat).toFixed(8));\n var alt = Number(Number(params.position.alt).toFixed(2));\n _this3.options.position = {\n lng: lng,\n lat: lat,\n alt: alt\n };\n // 平移\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt));\n _this3.primitive.modelMatrix = m;\n // 旋转\n Cesium.Matrix4.multiplyByMatrix3(_this3.primitive.modelMatrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(-params.rotate.z, -params.rotate.y, params.rotate.x)), _this3.primitive.modelMatrix);\n\n // 缩放\n var scaleX = _this3.options.scale.x;\n var scaleY = _this3.options.scale.y;\n var scaleZ = _this3.options.scale.z;\n if (scaleX === 0) {\n scaleX = 0.00001;\n }\n if (scaleY === 0) {\n scaleY = 0.00001;\n }\n if (scaleZ === 0) {\n scaleZ = 0.00001;\n }\n Cesium.Matrix4.multiplyByScale(_this3.primitive.modelMatrix, new Cesium.Cartesian3(scaleX, scaleY, scaleZ), _this3.primitive.modelMatrix);\n _this3._elms.lng && _this3._elms.lng.forEach(function (item) {\n item.value = _this3.options.position.lng;\n });\n _this3._elms.lat && _this3._elms.lat.forEach(function (item) {\n item.value = _this3.options.position.lat;\n });\n _this3._elms.alt && _this3._elms.alt.forEach(function (item) {\n item.value = _this3.options.position.alt;\n });\n };\n },\n set: function set(callback) {\n this._controllerCallBack = callback;\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @desc 打开模型旋转功能\r\n * @param status {boolean}\r\n * @methodOf Source\r\n * */\n }, {\n key: \"rotationEditing\",\n get:\n /**\r\n * @desc 获取模型旋转状态\r\n * @method rotationEditing\r\n * @return boolean\r\n * @methodOf Source\r\n * */\n function get() {\n if (this.ControllerObject.getActiveState() === 'rtation') {\n return true;\n }\n return false;\n }\n\n /**@desc 打开平移模型功能\r\n *\r\n * @memberOf Source\r\n *@param status {boolean}\r\n *\r\n * */,\n set: function set(status) {\n if (status) {\n this.ControllerObject.editRtation();\n } else {\n this.ControllerObject.destroy();\n }\n }\n }, {\n key: \"scaleX\",\n get: function get() {\n return this.options.scale.x;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.scale.x = Number(Number(v).toFixed(4));\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n this._elms.scaleX && this._elms.scaleX.forEach(function (item) {\n item.value = _this4.options.scale.x;\n });\n }\n }, {\n key: \"scaleY\",\n get: function get() {\n return this.options.scale.y;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.scale.y = Number(Number(v).toFixed(4));\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n this._elms.scaleY && this._elms.scaleY.forEach(function (item) {\n item.value = _this5.options.scale.y;\n });\n }\n }, {\n key: \"scaleZ\",\n get: function get() {\n return this.options.scale.z;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.scale.z = Number(Number(v).toFixed(4));\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n this._elms.scaleZ && this._elms.scaleZ.forEach(function (item) {\n item.value = _this6.options.scale.z;\n });\n }\n }, {\n key: \"positionEditing\",\n get: function get() {\n if (this.ControllerObject.getActiveState() === 'translational') {\n return true;\n }\n return false;\n },\n set: function set(status) {\n if (!this.sdk || !this.sdk.viewer || !this.ControllerObject) {\n return;\n }\n if (status) {\n this.ControllerObject.editTranslational();\n } else {\n this.ControllerObject.destroy();\n }\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.position.lng;\n },\n set: function set(v) {\n this.options.position.lng = v;\n this.ControllerObject.position = {\n lng: this.options.position.lng,\n lat: this.options.position.lat,\n alt: this.options.position.alt\n };\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.position.lat;\n },\n set: function set(v) {\n this.options.position.lat = v;\n this.ControllerObject.position = {\n lng: this.options.position.lng,\n lat: this.options.position.lat,\n alt: this.options.position.alt\n };\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.position.alt;\n },\n set: function set(v) {\n this.options.position.alt = v;\n this.ControllerObject.position = {\n lng: this.options.position.lng,\n lat: this.options.position.lat,\n alt: this.options.position.alt\n };\n this.controllerCallBack({\n position: _objectSpread({}, this.options.position),\n rotate: {\n x: (360 + this.options.roll % 360) % 360,\n y: (360 + -this.options.pitch % 360) % 360,\n z: (360 + -this.options.heading % 360) % 360\n }\n });\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n this.options.show = v;\n this.primitive.show = v;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"playDistance\",\n get: function get() {\n return this.options.playDistance;\n },\n set: function set(v) {\n this.options.playDistance = v;\n // this._elms.playDistance && this._elms.playDistance.forEach((item) => {\n // item.value = this.options.playDistance\n // })\n // if (this.options.show && this.primitive && this.primitive.video && this.primitive.video.player && this.options.position) {\n // const position1 = Cesium.Cartesian3.fromDegrees(this.options.position.lng, this.options.position.lat, this.options.position.alt);\n // const position2 = this.viwer.camera.position\n // const distance = Cesium.Cartesian3.distance(position1, position2);\n // if (this.options.playDistance && distance > this.options.playDistance) {\n // this.primitive.video.player.getVueInstance().pause()\n // }\n // else {\n // this.primitive.video.player.getVueInstance().play()\n // }\n // }\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }, {\n key: \"load\",\n value: function load(callback) {\n if (this._loaded) {\n callback();\n } else {\n this._loadEvent = callback;\n }\n }\n }, {\n key: \"customView\",\n get: function get() {\n this.options.customView;\n }\n\n // 设置视角\n }, {\n key: \"setCustomView\",\n value: function setCustomView(val) {\n if (val) {\n this.options.customView = val;\n } else {\n var camera = this.sdk.viewer.camera;\n this.options.customView = {\n orientation: {\n heading: camera.heading,\n pitch: camera.pitch,\n roll: camera.roll\n },\n position: {\n x: camera.position.x,\n y: camera.position.y,\n z: camera.position.z\n }\n };\n this.originalOptions && (this.originalOptions.customView = this.options.customView);\n }\n }\n // 重置视角\n }, {\n key: \"resetCustomView\",\n value: function resetCustomView() {\n this.options.customView = undefined;\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n that.options.id = that.options.id || that.randomString();\n that.options.position = that.options.position;\n that.options.objUrl = that.options.objUrl || '';\n that.options.videoUrl = that.options.videoUrl || '';\n that.options.xmlURL = that.options.xmlURL || '';\n that.options.heading = that.options.heading || 0;\n that.options.pitch = that.options.pitch || 0;\n that.options.roll = that.options.roll || 0;\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9hZE9iak1vZGVsL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL0xvYWRPYmpNb2RlbC9pbmRleC5qcz8wYWQ4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEhvc3QsIGdldFRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCB0b29scyBmcm9tICcuLi8uLi8uLi9Ub29scydcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCBDb250cm9sbGVyT2JqZWN0IGZyb20gJy4uLy4uLy4uL0NvbnRyb2xsZXInXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvYWRPYmpNb2RlbCBleHRlbmRzIHRvb2xzIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoKVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICB0aGlzLnNkayA9IHNka1xyXG4gICAgdGhpcy52aXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XHJcbiAgICB0aGlzLm9wdGlvbnMuaG9zdCA9IG9wdGlvbnMuaG9zdCB8fCBnZXRIb3N0KClcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuc2NhbGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IHt9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZS54ID0gb3B0aW9ucy5zY2FsZVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUueSA9IG9wdGlvbnMuc2NhbGVcclxuICAgICAgdGhpcy5vcHRpb25zLnNjYWxlLnogPSBvcHRpb25zLnNjYWxlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNjYWxlID0gb3B0aW9ucy5zY2FsZSB8fCB7fVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUueCA9ICh0aGlzLm9wdGlvbnMuc2NhbGUueCB8fCB0aGlzLm9wdGlvbnMuc2NhbGUueCA9PT0gMCkgPyB0aGlzLm9wdGlvbnMuc2NhbGUueCA6IDFcclxuICAgICAgdGhpcy5vcHRpb25zLnNjYWxlLnkgPSAodGhpcy5vcHRpb25zLnNjYWxlLnkgfHwgdGhpcy5vcHRpb25zLnNjYWxlLnkgPT09IDApID8gdGhpcy5vcHRpb25zLnNjYWxlLnkgOiAxXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zY2FsZS56ID0gKHRoaXMub3B0aW9ucy5zY2FsZS56IHx8IHRoaXMub3B0aW9ucy5zY2FsZS56ID09PSAwKSA/IHRoaXMub3B0aW9ucy5zY2FsZS56IDogMVxyXG4gICAgfVxyXG4gICAgdGhpcy5wcmltaXRpdmUgPSBudWxsXHJcbiAgICB0aGlzLl9sb2FkRXZlbnQgPSB2b2lkIDBcclxuICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX0V2ZW50QmluZGluZyA9IG5ldyBFdmVudEJpbmRpbmcoKVxyXG4gICAgTG9hZE9iak1vZGVsLnNldERlZmF1bHRWYWx1ZSh0aGlzKVxyXG4gICAgdGhpcy5yZXF1ZXN0UmVzb3VyY2UoKVxyXG4gICAgdGhpcy5Db250cm9sbGVyT2JqZWN0ID0gbmV3IENvbnRyb2xsZXJPYmplY3QodGhpcy5zZGssIHtcclxuICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH0sXHJcbiAgICAgIHJvdGF0ZToge1xyXG4gICAgICAgIHg6ICgzNjAgKyAodGhpcy5vcHRpb25zLnJvbGwgJSAzNjApKSAlIDM2MCxcclxuICAgICAgICB5OiAoMzYwICsgKC10aGlzLm9wdGlvbnMucGl0Y2ggJSAzNjApKSAlIDM2MCxcclxuICAgICAgICB6OiAoMzYwICsgKC10aGlzLm9wdGlvbnMuaGVhZGluZyAlIDM2MCkpICUgMzYwXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmNvbnRyb2xsZXJDYWxsQmFjayA9IHRoaXMuY29udHJvbGxlckNhbGxCYWNrXHJcbiAgICB0aGlzLkhlYWRpbmdQaXRjaFJvbGxDYWxsQmFjayA9IHRoaXMuRGlhbG9nLkhlYWRpbmdQaXRjaFJvbGxDYWxsQmFja1xyXG5cclxuICAgIC8vIHRoaXMudml3ZXIuY2FtZXJhLm1vdmVFbmQuYWRkRXZlbnRMaXN0ZW5lcigoKSA9PiB7XHJcbiAgICAvLyAgIGlmICh0aGlzLm9wdGlvbnMuc2hvdyAmJiB0aGlzLnByaW1pdGl2ZSAmJiB0aGlzLnByaW1pdGl2ZS52aWRlbyAmJiB0aGlzLnByaW1pdGl2ZS52aWRlby5wbGF5ZXIgJiYgdGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgICAgY29uc3QgcG9zaXRpb24xID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCk7XHJcbiAgICAvLyAgICAgY29uc3QgcG9zaXRpb24yID0gdGhpcy52aXdlci5jYW1lcmEucG9zaXRpb25cclxuICAgIC8vICAgICBjb25zdCBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvc2l0aW9uMSwgcG9zaXRpb24yKTtcclxuICAgIC8vICAgICBpZiAodGhpcy5vcHRpb25zLnBsYXlEaXN0YW5jZSAmJiBkaXN0YW5jZSA+IHRoaXMub3B0aW9ucy5wbGF5RGlzdGFuY2UpIHtcclxuICAgIC8vICAgICAgIHRoaXMucHJpbWl0aXZlLnZpZGVvLnBsYXllci5nZXRWdWVJbnN0YW5jZSgpLnBhdXNlKClcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgZWxzZSB7XHJcbiAgICAvLyAgICAgICB0aGlzLnByaW1pdGl2ZS52aWRlby5wbGF5ZXIuZ2V0VnVlSW5zdGFuY2UoKS5wbGF5KClcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0UmVzb3VyY2UoKSB7XHJcbiAgICB0aGlzLmFkZFJlc291cmNlKCkudGhlbihyID0+IHsgfSlcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzZXREZWZhdWx0VmFsdWUodGhhdCkge1xyXG4gICAgdGhhdC5vcHRpb25zLmlkID0gdGhhdC5vcHRpb25zLmlkIHx8IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbiA9IHRoYXQub3B0aW9ucy5wb3NpdGlvblxyXG4gICAgdGhhdC5vcHRpb25zLm9ialVybCA9IHRoYXQub3B0aW9ucy5vYmpVcmwgfHwgJydcclxuICAgIHRoYXQub3B0aW9ucy52aWRlb1VybCA9IHRoYXQub3B0aW9ucy52aWRlb1VybCB8fCAnJ1xyXG4gICAgdGhhdC5vcHRpb25zLnhtbFVSTCA9IHRoYXQub3B0aW9ucy54bWxVUkwgfHwgJydcclxuICAgIHRoYXQub3B0aW9ucy5oZWFkaW5nID0gdGhhdC5vcHRpb25zLmhlYWRpbmcgfHwgMFxyXG4gICAgdGhhdC5vcHRpb25zLnBpdGNoID0gdGhhdC5vcHRpb25zLnBpdGNoIHx8IDBcclxuICAgIHRoYXQub3B0aW9ucy5yb2xsID0gdGhhdC5vcHRpb25zLnJvbGwgfHwgMFxyXG4gIH1cclxuICBhc3luYyBhZGRSZXNvdXJjZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgdGhhdC5vcHRpb25zLnhtbFVSTCA9IHRoYXQub3B0aW9ucy5vYmpVcmwucmVwbGFjZSgnLm9iaicsICcueG1sJylcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMueG1sVVJMICE9PSAnJykge1xyXG4gICAgICBjb25zdCB4bWwgPSBhd2FpdCBmZXRjaCh0aGF0Lm9wdGlvbnMueG1sVVJMKVxyXG4gICAgICBpZiAoeG1sLm9rKSB7XHJcbiAgICAgICAgY29uc3QgeG1sU3RyaW5nID0gYXdhaXQgeG1sLnRleHQoKVxyXG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKVxyXG4gICAgICAgIGNvbnN0IHhtbERvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoeG1sU3RyaW5nLCAndGV4dC94bWwnKVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd4bWxEb2N4bWxEb2N4bWxEb2MnLCB4bWxEb2MpXHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB4bWxEb2NcclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnUG9zaXRpb24nKVswXVxyXG4gICAgICAgICAgLnRleHRDb250ZW50LnNwbGl0KCcsJylcclxuICAgICAgICAvLyBjb25zdCBiYm94ID0geG1sRG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYm94JylbMF1cclxuICAgICAgICBjb25zdCBjcnMgPSB4bWxEb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0NycycpWzBdLnRleHRDb250ZW50XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhhdC5jb252ZXJ0KFxyXG4gICAgICAgICAgW3sgeDogcG9zaXRpb25bMF0sIHk6IHBvc2l0aW9uWzFdLCB6OiBwb3NpdGlvblsyXSB9XSxcclxuICAgICAgICAgIGNycyxcclxuICAgICAgICAgICdFUFNHOjQzMjYnXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb24gfHwgeyBsbmc6IHJlc3VsdC5wb2ludHNbMF0ueCwgbGF0OiByZXN1bHQucG9pbnRzWzBdLnksIGFsdDogcmVzdWx0LnBvaW50c1swXS56IH1cclxuICAgICAgICB0aGF0LkNvbnRyb2xsZXJPYmplY3QucG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25cclxuICAgICAgICBjb25zdCBzY2VuZSA9IHRoYXQudml3ZXIuc2NlbmVcclxuICAgICAgICBjb25zdCBvcmlnaW4gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb24ubGF0LFxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgIClcclxuICAgICAgICBjb25zdCBvYmpfbW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICAgICAgb3JpZ2luLFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsKFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC44NSksXHJcbiAgICAgICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucygwKSxcclxuICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGxldCBvYmogPSBhd2FpdCB3aW5kb3cub2JqTG9hZGVyLkxvYWQodGhhdC5vcHRpb25zLm9ialVybClcclxuICAgICAgICBvYmouc2hvdyA9IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgICAgb2JqLm1vZGVsTWF0cml4ID0gb2JqX21vZGVsTWF0cml4XHJcbiAgICAgICAgb2JqLnNldEZsdlZpZGVvKHRoYXQub3B0aW9ucy52aWRlb1VybClcclxuICAgICAgICBzY2VuZS5wcmltaXRpdmVzLmFkZChvYmopXHJcbiAgICAgICAgdGhhdC5wcmltaXRpdmUgPSBvYmpcclxuICAgICAgICB0aGF0LmNvbnRyb2xsZXJDYWxsQmFjayh7XHJcbiAgICAgICAgICByb3RhdGU6IHsgeDogdGhhdC5vcHRpb25zLnJvbGwsIHk6IC10aGF0Lm9wdGlvbnMucGl0Y2gsIHo6IC10aGF0Lm9wdGlvbnMuaGVhZGluZyB9LFxyXG4gICAgICAgICAgcG9zaXRpb246IHsgLi4udGhhdC5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWVcclxuICAgICAgICBpZiAodGhpcy5fbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLl9sb2FkRXZlbnQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcign6K+35aGr5YaZeG1s6Lev5b6EJylcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhhdC5vcHRpb25zLm9ialVybCA9PT0gJycpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcign6K+35aGr5YaZb2Jq5qih5Z6L6Lev5b6EJylcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBhID0gMTAwICogTWF0aC50YW4oNjApXHJcbiAgICAgIGxldCBsYXRpdHVkZSA9IGEgLyAxMTEzMTkuNTVcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gbGF0aXR1ZGUsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ICsgMTAwXHJcbiAgICAgICAgKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTYwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCBlcXVhbCA9IGZhbHNlXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgIHRpdGxlOiAn57yW6L6R5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgLy8gcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgICAgLy8gICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAvLyB9LFxyXG4gICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgfSxcclxuICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgfSxcclxuICAgICAgcm90YXRlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5yb3RhdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgIHRoaXMucm90YXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdGF0aW9uRWRpdGluZyA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgdHJ1ZSlcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGNvbnRlbnRFbG0uc3R5bGUud2lkdGggPSAnNDQ4cHgnXHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG5cclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgIGxldCBlcXVhbFN3aXRjaEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NoZWNrYm94LWJveCcpWzBdLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JylcclxuICAgIGxldCBlcXVhbEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2VxdWFsJylbMF1cclxuICAgIGxldCBub0VxdWFsQm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbm8tZXF1YWwnKVswXVxyXG4gICAgZXF1YWxTd2l0Y2hFbG0uY2hlY2tlZCA9IGVxdWFsXHJcbiAgICBlcXVhbFN3aXRjaEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBlcXVhbCA9IGUudGFyZ2V0LmNoZWNrZWRcclxuICAgICAgaWYgKGVxdWFsKSB7XHJcbiAgICAgICAgZXF1YWxCb3hFbG0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgIG5vRXF1YWxCb3hFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICBub0VxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgZXF1YWxFbG1zID0gZXF1YWxCb3hFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylcclxuICAgIGVxdWFsRWxtc1swXS52YWx1ZSA9IHRoaXMuc2NhbGVYXHJcbiAgICBlcXVhbEVsbXNbMV0udmFsdWUgPSB0aGlzLnNjYWxlWFxyXG5cclxuICAgIGVxdWFsRWxtc1swXS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlKSA9PiB7XHJcbiAgICAgIHRoaXMuc2NhbGVYID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgdGhpcy5zY2FsZVkgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICB0aGlzLnNjYWxlWiA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICB9KVxyXG4gICAgZXF1YWxFbG1zWzFdLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgdGhpcy5zY2FsZVggPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICB0aGlzLnNjYWxlWSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgIHRoaXMuc2NhbGVaID0gZS50YXJnZXQudmFsdWVcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKGVxdWFsKSB7XHJcbiAgICAgIGVxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgbm9FcXVhbEJveEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZXF1YWxCb3hFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICBub0VxdWFsQm94RWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290KSB7XHJcbiAgICAgICAgbGV0IHRyYW5zbGF0aW9uYWxFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuZm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyb3RhdGUnKVswXVxyXG4gICAgICAgIGlmICh0cmFuc2xhdGlvbmFsRWxtKSB7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbmFsRWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25hbEVsbS5zdHlsZS5sZWZ0ID0gJzEwMHB4J1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsX2VsbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhbGxfZWxtW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgPT09ICcwJyAmJiBlLnRhcmdldC5taW4gPT09ICcwJykge1xyXG4gICAgICAgICAgc3dpdGNoIChlLnRhcmdldC5jbGFzc05hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAnc2NhbGUteCc6XHJcbiAgICAgICAgICAgICAgdGhpcy5zY2FsZVggPSAwLjAwMDFcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnc2NhbGUteSc6XHJcbiAgICAgICAgICAgICAgdGhpcy5zY2FsZVkgPSAwLjAwMDFcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnc2NhbGUteic6XHJcbiAgICAgICAgICAgICAgdGhpcy5zY2FsZVogPSAwLjAwMDFcclxuICAgICAgICAgICAgY2FzZSAnc2NhbGUtYWxsJzpcclxuICAgICAgICAgICAgICB0aGlzLnNjYWxlWCA9IDAuMDAwMVxyXG4gICAgICAgICAgICAgIHRoaXMuc2NhbGVZID0gMC4wMDAxXHJcbiAgICAgICAgICAgICAgdGhpcy5zY2FsZVogPSAwLjAwMDFcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuX0V2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlWC5wdXNoKGVxdWFsRWxtc1swXSwgZXF1YWxFbG1zWzFdKVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIGlmICghdGhpcy5wcmltaXRpdmUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdClcclxuICAgIClcclxuICAgIHRoaXMucHJpbWl0aXZlLm1vZGVsTWF0cml4ID0gbVxyXG4gICAgLy8g5peL6L2sXHJcbiAgICB0aGlzLnByaW1pdGl2ZS5tb2RlbE1hdHJpeCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlNYXRyaXgzKFxyXG4gICAgICB0aGlzLnByaW1pdGl2ZS5tb2RlbE1hdHJpeCxcclxuICAgICAgQ2VzaXVtLk1hdHJpeDMuZnJvbUhlYWRpbmdQaXRjaFJvbGwoXHJcbiAgICAgICAgQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmhlYWRpbmcsIHRoaXMub3B0aW9ucy5waXRjaCwgdGhpcy5vcHRpb25zLnJvbGwpXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMucHJpbWl0aXZlLm1vZGVsTWF0cml4XHJcbiAgICApXHJcblxyXG4gICAgLy8g57yp5pS+XHJcbiAgICBsZXQgc2NhbGVYID0gdGhpcy5vcHRpb25zLnNjYWxlLnhcclxuICAgIGxldCBzY2FsZVkgPSB0aGlzLm9wdGlvbnMuc2NhbGUueVxyXG4gICAgbGV0IHNjYWxlWiA9IHRoaXMub3B0aW9ucy5zY2FsZS56XHJcbiAgICBpZiAoc2NhbGVYID09PSAwKSB7XHJcbiAgICAgIHNjYWxlWCA9IDAuMDAwMDFcclxuICAgIH1cclxuICAgIGlmIChzY2FsZVkgPT09IDApIHtcclxuICAgICAgc2NhbGVZID0gMC4wMDAwMVxyXG4gICAgfVxyXG4gICAgaWYgKHNjYWxlWiA9PT0gMCkge1xyXG4gICAgICBzY2FsZVogPSAwLjAwMDAxXHJcbiAgICB9XHJcbiAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5U2NhbGUodGhpcy5wcmltaXRpdmUubW9kZWxNYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhzY2FsZVgsIHNjYWxlWSwgc2NhbGVaKSwgdGhpcy5wcmltaXRpdmUubW9kZWxNYXRyaXgpXHJcbiAgfVxyXG5cclxuICByZW1vdmUoKSB7XHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5wcmltaXRpdmUpXHJcbiAgICB0aGlzLnByaW1pdGl2ZSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRyb2xsZXJDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgdGhpcy5fY29udHJvbGxlckNhbGxCYWNrID0gY2FsbGJhY2tcclxuICB9XHJcbiAgZ2V0IGNvbnRyb2xsZXJDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiBwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVhZGluZyA9IC1wYXJhbXMucm90YXRlLnpcclxuICAgICAgdGhpcy5vcHRpb25zLnBpdGNoID0gLXBhcmFtcy5yb3RhdGUueVxyXG4gICAgICB0aGlzLm9wdGlvbnMucm9sbCA9IHBhcmFtcy5yb3RhdGUueFxyXG4gICAgICB0aGlzLkhlYWRpbmdQaXRjaFJvbGxDYWxsQmFjayAmJiB0aGlzLkhlYWRpbmdQaXRjaFJvbGxDYWxsQmFjayhwYXJhbXMpXHJcbiAgICAgIGxldCBsbmcgPSBOdW1iZXIoTnVtYmVyKHBhcmFtcy5wb3NpdGlvbi5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgIGxldCBsYXQgPSBOdW1iZXIoTnVtYmVyKHBhcmFtcy5wb3NpdGlvbi5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgIGxldCBhbHQgPSBOdW1iZXIoTnVtYmVyKHBhcmFtcy5wb3NpdGlvbi5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHsgbG5nLCBsYXQsIGFsdCB9XHJcbiAgICAgIC8vIOW5s+enu1xyXG4gICAgICBsZXQgbSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwYXJhbXMucG9zaXRpb24ubG5nLCBwYXJhbXMucG9zaXRpb24ubGF0LCBwYXJhbXMucG9zaXRpb24uYWx0KVxyXG4gICAgICApXHJcbiAgICAgIHRoaXMucHJpbWl0aXZlLm1vZGVsTWF0cml4ID0gbVxyXG4gICAgICAvLyDml4vovaxcclxuICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeU1hdHJpeDMoXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmUubW9kZWxNYXRyaXgsXHJcbiAgICAgICAgQ2VzaXVtLk1hdHJpeDMuZnJvbUhlYWRpbmdQaXRjaFJvbGwoXHJcbiAgICAgICAgICBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcygtcGFyYW1zLnJvdGF0ZS56LCAtcGFyYW1zLnJvdGF0ZS55LCBwYXJhbXMucm90YXRlLngpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLnByaW1pdGl2ZS5tb2RlbE1hdHJpeFxyXG4gICAgICApXHJcblxyXG4gICAgICAvLyDnvKnmlL5cclxuICAgICAgbGV0IHNjYWxlWCA9IHRoaXMub3B0aW9ucy5zY2FsZS54XHJcbiAgICAgIGxldCBzY2FsZVkgPSB0aGlzLm9wdGlvbnMuc2NhbGUueVxyXG4gICAgICBsZXQgc2NhbGVaID0gdGhpcy5vcHRpb25zLnNjYWxlLnpcclxuICAgICAgaWYgKHNjYWxlWCA9PT0gMCkge1xyXG4gICAgICAgIHNjYWxlWCA9IDAuMDAwMDFcclxuICAgICAgfVxyXG4gICAgICBpZiAoc2NhbGVZID09PSAwKSB7XHJcbiAgICAgICAgc2NhbGVZID0gMC4wMDAwMVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzY2FsZVogPT09IDApIHtcclxuICAgICAgICBzY2FsZVogPSAwLjAwMDAxXHJcbiAgICAgIH1cclxuICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKHRoaXMucHJpbWl0aXZlLm1vZGVsTWF0cml4LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoc2NhbGVYLCBzY2FsZVksIHNjYWxlWiksIHRoaXMucHJpbWl0aXZlLm1vZGVsTWF0cml4KVxyXG5cclxuICAgICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubmFtZVxyXG4gIH1cclxuICBzZXQgbmFtZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubmFtZSAmJiB0aGlzLl9lbG1zLm5hbWUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOaJk+W8gOaooeWei+aXi+i9rOWKn+iDvVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICogQG1ldGhvZE9mIFNvdXJjZVxyXG4gICAqICovXHJcbiAgc2V0IHJvdGF0aW9uRWRpdGluZyhzdGF0dXMpIHtcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmVkaXRSdGF0aW9uKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXQgc2NhbGVYKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zY2FsZS54XHJcbiAgfVxyXG5cclxuICBzZXQgc2NhbGVYKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zY2FsZS54ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDQpKVxyXG4gICAgdGhpcy5jb250cm9sbGVyQ2FsbEJhY2soXHJcbiAgICAgIHtcclxuICAgICAgICBwb3NpdGlvbjogeyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfSxcclxuICAgICAgICByb3RhdGU6IHtcclxuICAgICAgICAgIHg6ICgzNjAgKyAodGhpcy5vcHRpb25zLnJvbGwgJSAzNjApKSAlIDM2MCxcclxuICAgICAgICAgIHk6ICgzNjAgKyAoLXRoaXMub3B0aW9ucy5waXRjaCAlIDM2MCkpICUgMzYwLFxyXG4gICAgICAgICAgejogKDM2MCArICgtdGhpcy5vcHRpb25zLmhlYWRpbmcgJSAzNjApKSAlIDM2MFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgIClcclxuICAgIHRoaXMuX2VsbXMuc2NhbGVYICYmIHRoaXMuX2VsbXMuc2NhbGVYLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5zY2FsZS54XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNjYWxlWSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbGUueVxyXG4gIH1cclxuXHJcbiAgc2V0IHNjYWxlWSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGUueSA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCg0KSlcclxuICAgIHRoaXMuY29udHJvbGxlckNhbGxCYWNrKFxyXG4gICAgICB7XHJcbiAgICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH0sXHJcbiAgICAgICAgcm90YXRlOiB7XHJcbiAgICAgICAgICB4OiAoMzYwICsgKHRoaXMub3B0aW9ucy5yb2xsICUgMzYwKSkgJSAzNjAsXHJcbiAgICAgICAgICB5OiAoMzYwICsgKC10aGlzLm9wdGlvbnMucGl0Y2ggJSAzNjApKSAlIDM2MCxcclxuICAgICAgICAgIHo6ICgzNjAgKyAoLXRoaXMub3B0aW9ucy5oZWFkaW5nICUgMzYwKSkgJSAzNjBcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgICB0aGlzLl9lbG1zLnNjYWxlWSAmJiB0aGlzLl9lbG1zLnNjYWxlWS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuc2NhbGUueVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZVooKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNjYWxlLnpcclxuICB9XHJcblxyXG4gIHNldCBzY2FsZVoodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNjYWxlLnogPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoNCkpXHJcbiAgICB0aGlzLmNvbnRyb2xsZXJDYWxsQmFjayhcclxuICAgICAge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9LFxyXG4gICAgICAgIHJvdGF0ZToge1xyXG4gICAgICAgICAgeDogKDM2MCArICh0aGlzLm9wdGlvbnMucm9sbCAlIDM2MCkpICUgMzYwLFxyXG4gICAgICAgICAgeTogKDM2MCArICgtdGhpcy5vcHRpb25zLnBpdGNoICUgMzYwKSkgJSAzNjAsXHJcbiAgICAgICAgICB6OiAoMzYwICsgKC10aGlzLm9wdGlvbnMuaGVhZGluZyAlIDM2MCkpICUgMzYwXHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG4gICAgKVxyXG4gICAgdGhpcy5fZWxtcy5zY2FsZVogJiYgdGhpcy5fZWxtcy5zY2FsZVouZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnNjYWxlLnpcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDojrflj5bmqKHlnovml4vovaznirbmgIFcclxuICAgKiBAbWV0aG9kIHJvdGF0aW9uRWRpdGluZ1xyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqIEBtZXRob2RPZiBTb3VyY2VcclxuXHJcbiAgICogKi9cclxuICBnZXQgcm90YXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuQ29udHJvbGxlck9iamVjdC5nZXRBY3RpdmVTdGF0ZSgpID09PSAncnRhdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75qih5Z6L5Yqf6IO9XHJcbiAgICpcclxuICAgKiBAbWVtYmVyT2YgU291cmNlXHJcbiAgICpAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLkNvbnRyb2xsZXJPYmplY3QpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuQ29udHJvbGxlck9iamVjdC5nZXRBY3RpdmVTdGF0ZSgpID09PSAndHJhbnNsYXRpb25hbCcpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nXHJcbiAgfVxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IHZcclxuICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5wb3NpdGlvbiA9IHtsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0fVxyXG4gICAgdGhpcy5jb250cm9sbGVyQ2FsbEJhY2soXHJcbiAgICAgIHtcclxuICAgICAgICBwb3NpdGlvbjogeyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfSxcclxuICAgICAgICByb3RhdGU6IHtcclxuICAgICAgICAgIHg6ICgzNjAgKyAodGhpcy5vcHRpb25zLnJvbGwgJSAzNjApKSAlIDM2MCxcclxuICAgICAgICAgIHk6ICgzNjAgKyAoLXRoaXMub3B0aW9ucy5waXRjaCAlIDM2MCkpICUgMzYwLFxyXG4gICAgICAgICAgejogKDM2MCArICgtdGhpcy5vcHRpb25zLmhlYWRpbmcgJSAzNjApKSAlIDM2MFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldCBsYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gIH1cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgPSB2XHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QucG9zaXRpb24gPSB7bG5nOiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQsIGFsdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdH1cclxuICAgIHRoaXMuY29udHJvbGxlckNhbGxCYWNrKFxyXG4gICAgICB7XHJcbiAgICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH0sXHJcbiAgICAgICAgcm90YXRlOiB7XHJcbiAgICAgICAgICB4OiAoMzYwICsgKHRoaXMub3B0aW9ucy5yb2xsICUgMzYwKSkgJSAzNjAsXHJcbiAgICAgICAgICB5OiAoMzYwICsgKC10aGlzLm9wdGlvbnMucGl0Y2ggJSAzNjApKSAlIDM2MCxcclxuICAgICAgICAgIHo6ICgzNjAgKyAoLXRoaXMub3B0aW9ucy5oZWFkaW5nICUgMzYwKSkgJSAzNjBcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXQgYWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHRcclxuICB9XHJcbiAgc2V0IGFsdCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ID0gdlxyXG4gICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LnBvc2l0aW9uID0ge2xuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0LCBhbHQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHR9XHJcbiAgICB0aGlzLmNvbnRyb2xsZXJDYWxsQmFjayhcclxuICAgICAge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9LFxyXG4gICAgICAgIHJvdGF0ZToge1xyXG4gICAgICAgICAgeDogKDM2MCArICh0aGlzLm9wdGlvbnMucm9sbCAlIDM2MCkpICUgMzYwLFxyXG4gICAgICAgICAgeTogKDM2MCArICgtdGhpcy5vcHRpb25zLnBpdGNoICUgMzYwKSkgJSAzNjAsXHJcbiAgICAgICAgICB6OiAoMzYwICsgKC10aGlzLm9wdGlvbnMuaGVhZGluZyAlIDM2MCkpICUgMzYwXHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgIHRoaXMucHJpbWl0aXZlLnNob3cgPSB2XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucGxheURpc3RhbmNlXHJcbiAgfVxyXG5cclxuICBzZXQgcGxheURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wbGF5RGlzdGFuY2UgPSB2XHJcbiAgICAvLyB0aGlzLl9lbG1zLnBsYXlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLnBsYXlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAvLyAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMucGxheURpc3RhbmNlXHJcbiAgICAvLyB9KVxyXG4gICAgLy8gaWYgKHRoaXMub3B0aW9ucy5zaG93ICYmIHRoaXMucHJpbWl0aXZlICYmIHRoaXMucHJpbWl0aXZlLnZpZGVvICYmIHRoaXMucHJpbWl0aXZlLnZpZGVvLnBsYXllciAmJiB0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgIC8vICAgY29uc3QgcG9zaXRpb24xID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmFsdCk7XHJcbiAgICAvLyAgIGNvbnN0IHBvc2l0aW9uMiA9IHRoaXMudml3ZXIuY2FtZXJhLnBvc2l0aW9uXHJcbiAgICAvLyAgIGNvbnN0IGRpc3RhbmNlID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9zaXRpb24xLCBwb3NpdGlvbjIpO1xyXG4gICAgLy8gICBpZiAodGhpcy5vcHRpb25zLnBsYXlEaXN0YW5jZSAmJiBkaXN0YW5jZSA+IHRoaXMub3B0aW9ucy5wbGF5RGlzdGFuY2UpIHtcclxuICAgIC8vICAgICB0aGlzLnByaW1pdGl2ZS52aWRlby5wbGF5ZXIuZ2V0VnVlSW5zdGFuY2UoKS5wYXVzZSgpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgZWxzZSB7XHJcbiAgICAvLyAgICAgdGhpcy5wcmltaXRpdmUudmlkZW8ucGxheWVyLmdldFZ1ZUluc3RhbmNlKCkucGxheSgpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxuXHJcbiAgbG9hZChjYWxsYmFjaykge1xyXG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xyXG4gICAgICBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xvYWRFdmVudCA9IGNhbGxiYWNrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY3VzdG9tVmlldygpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3XHJcbiAgfVxyXG5cclxuICAvLyDorr7nva7op4bop5JcclxuICBzZXRDdXN0b21WaWV3KHZhbCkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyA9IHZhbFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBjYW1lcmEgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhXHJcbiAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ID0ge1xyXG4gICAgICAgIG9yaWVudGF0aW9uOiB7IGhlYWRpbmc6IGNhbWVyYS5oZWFkaW5nLCBwaXRjaDogY2FtZXJhLnBpdGNoLCByb2xsOiBjYW1lcmEucm9sbCB9LFxyXG4gICAgICAgIHBvc2l0aW9uOiB7IHg6IGNhbWVyYS5wb3NpdGlvbi54LCB5OiBjYW1lcmEucG9zaXRpb24ueSwgejogY2FtZXJhLnBvc2l0aW9uLnogfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zICYmICh0aGlzLm9yaWdpbmFsT3B0aW9ucy5jdXN0b21WaWV3ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOmHjee9ruinhuinklxyXG4gIHJlc2V0Q3VzdG9tVmlldygpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ID0gdW5kZWZpbmVkXHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQS9EQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBekVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEzQ0E7QUE0Q0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXJJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQW5EQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBc0RBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQXJGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFybkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/LoadObjModel/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LoadObjModel/jessibucaPlayer.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/LoadObjModel/jessibucaPlayer.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar jessibucaPlayer = /*#__PURE__*/function () {\n function jessibucaPlayer(dom, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, jessibucaPlayer);\n this.dom = dom;\n this.url = options.url;\n this.init();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(jessibucaPlayer, [{\n key: \"init\",\n value: function init() {\n this.player = new Jessibuca({\n container: this.dom,\n decoder: this.getSourceRootPath() + '/3rdparty/jessibuca/decoder.js',\n timeout: 30,\n heartTimeout: 30,\n heartTimeoutReplay: false,\n loadingTimeout: 30,\n loadingTimeoutReplay: false,\n wasmDecodeErrorReplay: false,\n videoBuffer: 0.2,\n // 缓存时长\n isResize: false,\n text: \"\",\n loadingText: \"\",\n useMSE: false,\n debug: true,\n showBandwidth: false,\n // 显示网速\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n recorder: false\n },\n forceNoOffscreen: false,\n isNotMute: false\n });\n this.player.play(this.url);\n }\n }, {\n key: \"on\",\n value: function on(Events, cd) {\n this.player.on(Events, cd);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.player.destroy();\n this.player = null;\n }\n }, {\n key: \"getSourceRootPath\",\n value: function getSourceRootPath() {\n var sdkName = 'YJEarth.min.js';\n var scripts = document.querySelectorAll('script');\n var prefix = '';\n scripts.forEach(function (item) {\n if (item.src && item.src.indexOf(sdkName) > -1) {\n var arr = item.src.split('/');\n arr.pop();\n prefix = arr.join('/');\n }\n });\n return prefix;\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (jessibucaPlayer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9hZE9iak1vZGVsL2plc3NpYnVjYVBsYXllci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Mb2FkT2JqTW9kZWwvamVzc2lidWNhUGxheWVyLmpzPzhhNzQiXSwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNsYXNzIGplc3NpYnVjYVBsYXllciB7XHJcbiAgY29uc3RydWN0b3IoZG9tLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmRvbSA9IGRvbVxyXG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybFxyXG4gICAgdGhpcy5pbml0KClcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLnBsYXllciA9IG5ldyBKZXNzaWJ1Y2Eoe1xyXG4gICAgICBjb250YWluZXI6IHRoaXMuZG9tLFxyXG4gICAgICBkZWNvZGVyOnRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvM3JkcGFydHkvamVzc2lidWNhL2RlY29kZXIuanMnLFxyXG4gICAgICB0aW1lb3V0OiAzMCxcclxuICAgICAgaGVhcnRUaW1lb3V0OiAzMCxcclxuICAgICAgaGVhcnRUaW1lb3V0UmVwbGF5OiBmYWxzZSxcclxuICAgICAgbG9hZGluZ1RpbWVvdXQ6IDMwLFxyXG4gICAgICBsb2FkaW5nVGltZW91dFJlcGxheTogZmFsc2UsXHJcbiAgICAgIHdhc21EZWNvZGVFcnJvclJlcGxheTogZmFsc2UsXHJcbiAgICAgIHZpZGVvQnVmZmVyOiAwLjIsIC8vIOe8k+WtmOaXtumVv1xyXG4gICAgICBpc1Jlc2l6ZTogZmFsc2UsXHJcbiAgICAgIHRleHQ6IFwiXCIsXHJcbiAgICAgIGxvYWRpbmdUZXh0OiBcIlwiLFxyXG4gICAgICB1c2VNU0U6IGZhbHNlLFxyXG4gICAgICBkZWJ1ZzogdHJ1ZSxcclxuICAgICAgc2hvd0JhbmR3aWR0aDogZmFsc2UsIC8vIOaYvuekuue9kemAn1xyXG4gICAgICBvcGVyYXRlQnRuczoge1xyXG4gICAgICAgIGZ1bGxzY3JlZW46IGZhbHNlLFxyXG4gICAgICAgIHNjcmVlbnNob3Q6IGZhbHNlLFxyXG4gICAgICAgIHBsYXk6IGZhbHNlLFxyXG4gICAgICAgIGF1ZGlvOiBmYWxzZSxcclxuICAgICAgICByZWNvcmRlcjogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgZm9yY2VOb09mZnNjcmVlbjogZmFsc2UsXHJcbiAgICAgIGlzTm90TXV0ZTogZmFsc2UsXHJcbiAgICB9LCk7XHJcbiAgICB0aGlzLnBsYXllci5wbGF5KHRoaXMudXJsKTtcclxuICB9XHJcblxyXG4gIG9uKEV2ZW50cywgY2QpIHtcclxuICAgIHRoaXMucGxheWVyLm9uKEV2ZW50cywgY2QpXHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5wbGF5ZXIuZGVzdHJveSgpXHJcbiAgICB0aGlzLnBsYXllciA9IG51bGxcclxuICB9XHJcblxyXG4gIGdldFNvdXJjZVJvb3RQYXRoKCkge1xyXG4gICAgbGV0IHNka05hbWUgPSAnWUpFYXJ0aC5taW4uanMnXHJcbiAgICBsZXQgc2NyaXB0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdCcpXHJcbiAgICBsZXQgcHJlZml4ID0gJydcclxuICAgIHNjcmlwdHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5zcmMgJiYgaXRlbS5zcmMuaW5kZXhPZihzZGtOYW1lKSA+IC0xKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IGl0ZW0uc3JjLnNwbGl0KCcvJylcclxuICAgICAgICBhcnIucG9wKClcclxuICAgICAgICBwcmVmaXggPSBhcnIuam9pbignLycpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gcHJlZml4XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBqZXNzaWJ1Y2FQbGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/LoadObjModel/jessibucaPlayer.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/LocateCurrent/index.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/LocateCurrent/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\nvar _canvas = /*#__PURE__*/new WeakMap();\nvar _img = /*#__PURE__*/new WeakMap();\nvar LocateCurrent = /*#__PURE__*/function () {\n function LocateCurrent(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, LocateCurrent);\n _classPrivateFieldInitSpec(this, _canvas, null);\n _classPrivateFieldInitSpec(this, _img, {\n bgimg: null,\n img1: null,\n img2: null,\n img3: null,\n img4: null\n });\n this.sdk = sdk;\n this.options = options;\n this.data = {};\n this._webSocketCallback = callback;\n this._tools = new _Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk);\n this.requestResource();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(LocateCurrent, [{\n key: \"requestResource\",\n value: function requestResource() {\n var _this = this;\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_4__[\"getHost\"])();\n var url = \"\";\n url = this.options.host + '/yjearth4.0/api/v1/gps/state';\n this.reconnecting = new ReconnectingWebSocket('ws://' + url, [], {\n maxReconnectAttempts: 8\n });\n this.reconnecting.onopen = function (event) {\n _this.reconnecting.onmessage = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(event) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this.data = JSON.parse(event.data);\n if (!(_this.data && _this.data.rmc)) {\n _context.next = 7;\n break;\n }\n _context.next = 4;\n return _this._tools.getClampToHeight(_this.data.rmc);\n case 4:\n height = _context.sent;\n _this.position = new Cesium.Cartesian3.fromDegrees(_this.data.rmc.lng, _this.data.rmc.lat, height);\n _this.create();\n case 7:\n _this._webSocketCallback && _this._webSocketCallback(_this.data);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n };\n\n // let _this = this\n // this.data = {\n // rmc: {\n // lng: 116.397428,\n // lat: 39.90923,\n // alt: 100\n // }\n // }\n // this.position = new Cesium.Cartesian3.fromDegrees(this.data.rmc.lng, this.data.rmc.lat, 0);\n // setInterval(() => {\n // _this.create()\n // console.log(1111)\n // }, 50);\n }\n }, {\n key: \"create\",\n value: function create() {\n var _this2 = this;\n this.getcanvas();\n if (this.data && this.data.rmc && !this.entity) {\n this.entity = new Cesium.CustomDataSource();\n this.sdk.viewer.dataSources.add(this.entity);\n var point = new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var c3 = _this2.position;\n return c3;\n }, false),\n billboard: {\n image: this._tools.getSourceRootPath() + '/img/locate2.png',\n scale: 1,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_6__[\"getGroundCover\"])() ? undefined : 100000000;\n }, false),\n width: 31,\n height: 36,\n pixelOffset: new Cesium.Cartesian2(0, -15)\n }\n });\n var lable = new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var c3 = _this2.position;\n return c3;\n }, false),\n billboard: {\n image: new Cesium.CallbackProperty(function () {\n return _this2.lableCanvas;\n }),\n scale: 1,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_6__[\"getGroundCover\"])() ? undefined : 100000000;\n }, false),\n width: 220,\n height: 140,\n pixelOffset: new Cesium.Cartesian2(0, -110)\n }\n });\n this.entity.entities.add(point);\n this.entity.entities.add(lable);\n }\n }\n }, {\n key: \"loaded\",\n value: function loaded(cd) {\n var data;\n Object.defineProperty(this, 'data', {\n get: function get() {\n return data;\n },\n set: function set(value) {\n data = value;\n if (cd) {\n cd();\n cd = undefined;\n }\n }\n });\n }\n }, {\n key: \"getcanvas\",\n value: function getcanvas() {\n var _this3 = this;\n var data = [{\n images: this._tools.getSourceRootPath() + '/img/bubble/lng.png',\n text: '经度:' + parseFloat(this.data.rmc.lng.toFixed(10))\n }, {\n images: this._tools.getSourceRootPath() + '/img/bubble/lat.png',\n text: '纬度:' + parseFloat(this.data.rmc.lat.toFixed(10))\n }, {\n images: this._tools.getSourceRootPath() + '/img/bubble/h.png',\n text: '海拔:' + parseFloat(this.data.rmc.alt.toFixed(10))\n }, {\n images: this._tools.getSourceRootPath() + '/img/bubble/satellite.png',\n text: '卫星:' + this.data.satellites || false\n }];\n if (_classPrivateFieldGet(_canvas, this)) {\n var ctx = _classPrivateFieldGet(_canvas, this).getContext('2d');\n ctx.clearRect(0, 0, _classPrivateFieldGet(_canvas, this).width, _classPrivateFieldGet(_canvas, this).height);\n ctx.drawImage(_classPrivateFieldGet(_img, this).bgimg, 0, 0, _classPrivateFieldGet(_canvas, this).width, _classPrivateFieldGet(_canvas, this).height);\n var imagesLoaded = 0;\n data.forEach(function (item, index) {\n ctx.drawImage(_classPrivateFieldGet(_img, _this3)['img' + (index + 1)], 12, 12 + index * 26);\n ctx.fillStyle = \"#fff\";\n ctx.font = \"16px Arial\";\n ctx.fillText(item.text, 44, 28 + index * 26);\n imagesLoaded++;\n if (imagesLoaded === data.length) {\n _this3.lableCanvas = _classPrivateFieldGet(_canvas, _this3).toDataURL();\n }\n });\n } else {\n _classPrivateFieldSet(_canvas, this, document.createElement('canvas'));\n var _ctx = _classPrivateFieldGet(_canvas, this).getContext('2d');\n _classPrivateFieldGet(_canvas, this).width = 220;\n _classPrivateFieldGet(_canvas, this).height = 140;\n var img = new Image();\n _classPrivateFieldGet(_img, this).bgimg = img;\n img.src = this._tools.getSourceRootPath() + '/img/bubble/bubble.png';\n var _imagesLoaded = 0;\n img.onload = function () {\n _ctx.drawImage(img, 0, 0, _classPrivateFieldGet(_canvas, _this3).width, _classPrivateFieldGet(_canvas, _this3).height);\n data.forEach(function (item, index) {\n var img = new Image();\n _classPrivateFieldGet(_img, _this3)['img' + (index + 1)] = img;\n img.src = item.images;\n img.onload = function () {\n _ctx.drawImage(img, 12, 12 + index * 26);\n _ctx.fillStyle = \"#fff\";\n _ctx.font = \"16px Arial\";\n _ctx.fillText(item.text, 44, 28 + index * 26);\n _imagesLoaded++;\n if (_imagesLoaded === data.length) {\n _this3.lableCanvas = _classPrivateFieldGet(_canvas, _this3).toDataURL();\n }\n };\n });\n };\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2() {\n var options,\n height,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!(this.data && this.data.rmc)) {\n _context2.next = 9;\n break;\n }\n _context2.next = 4;\n return this._tools.getClampToHeight(this.data.rmc);\n case 4:\n height = _context2.sent;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_6__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_6__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_6__[\"closeViewFollow\"])(this.sdk);\n this.sdk.viewer.camera.flyTo({\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n destination: Cesium.Cartesian3.fromDegrees(this.data.rmc.lng, this.data.rmc.lat, height + (options.height || 500))\n });\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n _classPrivateFieldSet(_canvas, this, null);\n _classPrivateFieldSet(_img, this, {});\n this.reconnecting && this.reconnecting.close();\n this.sdk.viewer.dataSources.remove(this.entity);\n this.entity = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (LocateCurrent);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvTG9jYXRlQ3VycmVudC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Mb2NhdGVDdXJyZW50L2luZGV4LmpzPzg5NWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0SG9zdCB9IGZyb20gXCIuLi8uLi8uLi9vblwiO1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCB7IGdldEdyb3VuZENvdmVyIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93fSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgTG9jYXRlQ3VycmVudCB7XHJcbiAgI2NhbnZhcyA9IG51bGxcclxuICAjaW1nID0ge1xyXG4gICAgYmdpbWc6IG51bGwsXHJcbiAgICBpbWcxOiBudWxsLFxyXG4gICAgaW1nMjogbnVsbCxcclxuICAgIGltZzM6IG51bGwsXHJcbiAgICBpbWc0OiBudWxsLFxyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgY2FsbGJhY2spIHtcclxuICAgIHRoaXMuc2RrID0gc2RrXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXHJcbiAgICB0aGlzLmRhdGEgPSB7fVxyXG4gICAgdGhpcy5fd2ViU29ja2V0Q2FsbGJhY2sgPSBjYWxsYmFja1xyXG4gICAgdGhpcy5fdG9vbHMgPSBuZXcgVG9vbHModGhpcy5zZGspXHJcbiAgICB0aGlzLnJlcXVlc3RSZXNvdXJjZSgpXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0UmVzb3VyY2UoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0IHx8IGdldEhvc3QoKVxyXG4gICAgbGV0IHVybCA9IFwiXCJcclxuICAgIHVybCA9IHRoaXMub3B0aW9ucy5ob3N0ICsgJy95amVhcnRoNC4wL2FwaS92MS9ncHMvc3RhdGUnXHJcbiAgICB0aGlzLnJlY29ubmVjdGluZyA9IG5ldyBSZWNvbm5lY3RpbmdXZWJTb2NrZXQoJ3dzOi8vJyArIHVybCwgW10sIHsgbWF4UmVjb25uZWN0QXR0ZW1wdHM6IDggfSlcclxuICAgIHRoaXMucmVjb25uZWN0aW5nLm9ub3BlbiA9IChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnJlY29ubmVjdGluZy5vbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEucm1jKSB7XHJcbiAgICAgICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5fdG9vbHMuZ2V0Q2xhbXBUb0hlaWdodCh0aGlzLmRhdGEucm1jKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLmRhdGEucm1jLmxuZywgdGhpcy5kYXRhLnJtYy5sYXQsIGhlaWdodCk7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3dlYlNvY2tldENhbGxiYWNrICYmIHRoaXMuX3dlYlNvY2tldENhbGxiYWNrKHRoaXMuZGF0YSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIC8vIHRoaXMuZGF0YSA9IHtcclxuICAgIC8vICAgcm1jOiB7XHJcbiAgICAvLyAgICAgbG5nOiAxMTYuMzk3NDI4LFxyXG4gICAgLy8gICAgIGxhdDogMzkuOTA5MjMsXHJcbiAgICAvLyAgICAgYWx0OiAxMDBcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLmRhdGEucm1jLmxuZywgdGhpcy5kYXRhLnJtYy5sYXQsIDApO1xyXG4gICAgLy8gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgLy8gICBfdGhpcy5jcmVhdGUoKVxyXG4gICAgLy8gICBjb25zb2xlLmxvZygxMTExKVxyXG4gICAgLy8gfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgdGhpcy5nZXRjYW52YXMoKVxyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEucm1jICYmICF0aGlzLmVudGl0eSkge1xyXG4gICAgICB0aGlzLmVudGl0eSA9IG5ldyBDZXNpdW0uQ3VzdG9tRGF0YVNvdXJjZSgpO1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZGF0YVNvdXJjZXMuYWRkKHRoaXMuZW50aXR5KTtcclxuICAgICAgbGV0IHBvaW50ID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGMzID0gdGhpcy5wb3NpdGlvblxyXG4gICAgICAgICAgcmV0dXJuIGMzXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoaXMuX3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9sb2NhdGUyLnBuZycsXHJcbiAgICAgICAgICBzY2FsZTogMSxcclxuICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiAxMDAwMDAwMDBcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIHdpZHRoOiAzMSxcclxuICAgICAgICAgIGhlaWdodDogMzYsXHJcbiAgICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC0xNSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmxlID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGMzID0gdGhpcy5wb3NpdGlvblxyXG4gICAgICAgICAgcmV0dXJuIGMzXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhYmxlQ2FudmFzXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0R3JvdW5kQ292ZXIoKSA/IHVuZGVmaW5lZCA6IDEwMDAwMDAwMFxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgd2lkdGg6IDIyMCxcclxuICAgICAgICAgIGhlaWdodDogMTQwLFxyXG4gICAgICAgICAgcGl4ZWxPZmZzZXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAtMTEwKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmVudGl0eS5lbnRpdGllcy5hZGQocG9pbnQpXHJcbiAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLmFkZChsYWJsZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRlZChjZCkge1xyXG4gICAgbGV0IGRhdGFcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZGF0YScsIHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiBkYXRhXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGRhdGEgPSB2YWx1ZVxyXG4gICAgICAgIGlmIChjZCkge1xyXG4gICAgICAgICAgY2QoKVxyXG4gICAgICAgICAgY2QgPSB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRjYW52YXMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB0aGlzLl90b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL2xuZy5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfnu4/luqbvvJonICsgcGFyc2VGbG9hdCh0aGlzLmRhdGEucm1jLmxuZy50b0ZpeGVkKDEwKSlcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhpcy5fdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9sYXQucG5nJyxcclxuICAgICAgICB0ZXh0OiAn57qs5bqm77yaJyArIHBhcnNlRmxvYXQodGhpcy5kYXRhLnJtYy5sYXQudG9GaXhlZCgxMCkpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpbWFnZXM6IHRoaXMuX3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvaC5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfmtbfmi5TvvJonICsgcGFyc2VGbG9hdCh0aGlzLmRhdGEucm1jLmFsdC50b0ZpeGVkKDEwKSlcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhpcy5fdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9zYXRlbGxpdGUucG5nJyxcclxuICAgICAgICB0ZXh0OiAn5Y2r5pif77yaJyArIHRoaXMuZGF0YS5zYXRlbGxpdGVzIHx8IDBcclxuICAgICAgfVxyXG4gICAgXVxyXG4gICAgaWYgKHRoaXMuI2NhbnZhcykge1xyXG4gICAgICBjb25zdCBjdHggPSB0aGlzLiNjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuI2NhbnZhcy53aWR0aCwgdGhpcy4jY2FudmFzLmhlaWdodCk7XHJcbiAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcy4jaW1nLmJnaW1nLCAwLCAwLCB0aGlzLiNjYW52YXMud2lkdGgsIHRoaXMuI2NhbnZhcy5oZWlnaHQpO1xyXG4gICAgICBsZXQgaW1hZ2VzTG9hZGVkID0gMFxyXG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZSh0aGlzLiNpbWdbJ2ltZycgKyAoaW5kZXggKyAxKV0sIDEyLCAxMiArIChpbmRleCAqIDI2KSk7XHJcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IFwiI2ZmZlwiO1xyXG4gICAgICAgIGN0eC5mb250ID0gXCIxNnB4IEFyaWFsXCI7XHJcbiAgICAgICAgY3R4LmZpbGxUZXh0KGl0ZW0udGV4dCwgNDQsIDI4ICsgKGluZGV4ICogMjYpKTtcclxuICAgICAgICBpbWFnZXNMb2FkZWQrKztcclxuICAgICAgICBpZiAoaW1hZ2VzTG9hZGVkID09PSBkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5sYWJsZUNhbnZhcyA9IHRoaXMuI2NhbnZhcy50b0RhdGFVUkwoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLiNjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgY29uc3QgY3R4ID0gdGhpcy4jY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuICAgICAgdGhpcy4jY2FudmFzLndpZHRoID0gMjIwXHJcbiAgICAgIHRoaXMuI2NhbnZhcy5oZWlnaHQgPSAxNDBcclxuICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICB0aGlzLiNpbWcuYmdpbWcgPSBpbWdcclxuICAgICAgaW1nLnNyYyA9IHRoaXMuX3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvYnViYmxlLnBuZyc7XHJcbiAgICAgIGxldCBpbWFnZXNMb2FkZWQgPSAwXHJcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHRoaXMuI2NhbnZhcy53aWR0aCwgdGhpcy4jY2FudmFzLmhlaWdodCk7XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICB0aGlzLiNpbWdbJ2ltZycgKyAoaW5kZXggKyAxKV0gPSBpbWdcclxuICAgICAgICAgIGltZy5zcmMgPSBpdGVtLmltYWdlcztcclxuICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAxMiwgMTIgKyAoaW5kZXggKiAyNikpO1xyXG4gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gXCIjZmZmXCI7XHJcbiAgICAgICAgICAgIGN0eC5mb250ID0gXCIxNnB4IEFyaWFsXCI7XHJcbiAgICAgICAgICAgIGN0eC5maWxsVGV4dChpdGVtLnRleHQsIDQ0LCAyOCArIChpbmRleCAqIDI2KSk7XHJcbiAgICAgICAgICAgIGltYWdlc0xvYWRlZCsrO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTG9hZGVkID09PSBkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubGFibGVDYW52YXMgPSB0aGlzLiNjYW52YXMudG9EYXRhVVJMKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5ybWMpIHtcclxuICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoaXMuX3Rvb2xzLmdldENsYW1wVG9IZWlnaHQodGhpcy5kYXRhLnJtYylcclxuICAgICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuZGF0YS5ybWMubG5nLCB0aGlzLmRhdGEucm1jLmxhdCwgaGVpZ2h0ICsgKG9wdGlvbnMuaGVpZ2h0IHx8IDUwMCkpLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy4jY2FudmFzID0gbnVsbFxyXG4gICAgdGhpcy4jaW1nID0ge31cclxuICAgIHRoaXMucmVjb25uZWN0aW5nICYmIHRoaXMucmVjb25uZWN0aW5nLmNsb3NlKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5kYXRhU291cmNlcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTG9jYXRlQ3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUFBO0FBQUE7QUFBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBaEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/LocateCurrent/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Flame/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Flame/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u989C\\u8272\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u53D1\\u5C04\\u901F\\u7387\\uFF08\\u4E2A/\\u79D2\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\u5C3A\\u5BF8\\uFF08\\u50CF\\u7D20\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZsYW1lL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9GbGFtZS9fZWxlbWVudC5qcz84NmI4Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwibGF0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7otbflp4vpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFydF9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbjogMDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uT5p2f6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5kX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/liJ3pgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cIm1pbmltdW1TcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5Yid6YCf5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJtYXhpbXVtU3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/lrZjlnKjml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjAuMDFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwibWluaW11bVBhcnRpY2xlTGlmZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5a2Y5Zyo5pe26Ze0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwLjAxXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cIm1heGltdW1QYXJ0aWNsZUxpZmVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7otbflp4vmr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzdGFydFNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5PmnZ/mr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJlbmRTY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuWPkeWwhOmAn+eOh++8iOS4qi/np5LvvIk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImVtaXNzaW9uUmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5bC65a+477yI5YOP57Sg77yJPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJwYXJ0aWNsZVNpemVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNEdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Flame/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Flame/eventBinding.js": -/*!************************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Flame/eventBinding.js ***! - \************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' || e.target.type == 'range') {\n value = Number(value);\n }\n that[m.value] = value;\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that.Dialog[m.value] === 'function') {\n that.Dialog[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZsYW1lL2V2ZW50QmluZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9QYXJ0aWNsZUVmZmVjdHMvRmxhbWUvZXZlbnRCaW5kaW5nLmpzP2VjMzEiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgZXZlbnRCaW5kaW5nIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgfVxyXG4gIHN0YXRpYyBldmVudCA9IHt9XHJcblxyXG4gIGdldEV2ZW50KG5hbWUpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV1cclxuICB9XHJcblxyXG4gIGdldEV2ZW50QWxsKCkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFxyXG4gIH1cclxuXHJcbiAgc2V0RXZlbnQobmFtZSwgZXZlbnQpIHtcclxuICAgIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXSA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBvbih0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgfHwgZS50YXJnZXQudHlwZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBpZihlbGVtZW50c1tpXS5ub2RlTmFtZT09J0lNRycpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnNyYyA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdC5EaWFsb2dbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LkRpYWxvZ1ttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IG49MDtuPHJlbW92ZU5hbWUubGVuZ3RoO24rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IEV2ZW50QmluZGluZyA9IG5ldyBldmVudEJpbmRpbmcoKTtcclxuZXhwb3J0IGRlZmF1bHQgRXZlbnRCaW5kaW5nOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVDQTtBQUFBO0FBQUE7QUE0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5FQTtBQUFBO0FBS0E7QUErREE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Flame/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Flame/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Flame/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/ParticleEffects/Flame/_element.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/ParticleEffects/Flame/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * 火焰特效\r\n */\n\n\n\n\n\n\n\n\n\n\nvar Flame = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 火焰特效\r\n * @param sdk \r\n * @param options {object} 粒子属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 贴图地址\r\n * @param options.startColor=\"#ff0000\" {string} 起始颜色\r\n * @param options.endColor=\"#fff000\" {string} 结束颜色\r\n * @param options.startScale=0.5 {number} 初始比例\r\n * @param options.endScale=2 {number} 结束比例\r\n * @param options.minimumSpeed=1 {number} 最小初速度\r\n * @param options.maximumSpeed=30 {number} 最大初速度\r\n * @param options.minimumParticleLife=1 {number} 最小存在时间(秒)\r\n * @param options.maximumParticleLife=2 {number} 最大存在时间(秒)\r\n * @param options.emissionRate=60 {number} 发射速率(个/每秒)\r\n * @param options.particleSize=10 {number} 粒子尺大小\r\n * @param options.lng 经度\r\n * @param options.lat 纬度\r\n * @param options.alt 高度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function Flame(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Flame);\n _this2 = _callSuper(this, Flame, [sdk, options]);\n _this2.options.url = options.url;\n _this2.options.startColor = options.startColor || \"#ff0000\";\n _this2.options.endColor = options.endColor || \"#fff000\";\n _this2.options.startScale = options.startScale || 0.5;\n _this2.options.endScale = options.endScale || 2;\n _this2.options.minimumParticleLife = options.minimumParticleLife || 1;\n _this2.options.maximumParticleLife = options.maximumParticleLife || 2;\n _this2.options.minimumSpeed = options.minimumSpeed || 1;\n _this2.options.maximumSpeed = options.maximumSpeed || 30;\n _this2.options.emissionRate = options.emissionRate || 60;\n _this2.options.particleSize = options.particleSize || 10;\n _this2.options.show = options.show === false ? false : true;\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2._element = null;\n _this2.particleSystem;\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.add();\n _this2.operate = {};\n _this2._elms = {};\n _this2.previous = {\n positions: {\n lng: _this2.options.lng,\n lat: _this2.options.lat,\n alt: _this2.options.alt\n }\n };\n _this2.Dialog = _Dialog;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Flame, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Flame, [{\n key: \"type\",\n get: function get() {\n return \"ParticleEffects\";\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = this.options.show;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = this.options.show;\n }\n } else {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = false;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"add\",\n value: function () {\n var _add = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this3 = this;\n var scene, cartographic, position, matrix, cameraHeight;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n this.originalOptions = this.deepCopyObj(this.options);\n scene = this.sdk.viewer.scene;\n cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(1, 1, 1), matrix);\n cameraHeight = this.sdk.viewer.camera.positionCartographic.height;\n this.particleSystem = scene.primitives.add(new Cesium.ParticleSystem({\n show: cameraHeight >= 10000000 ? false : this.options.show,\n image: this.options.url || this.getSourceRootPath() + '/img/particlesystem/smoke.png',\n startColor: Cesium.Color.fromCssColorString(this.options.startColor),\n //粒子出生时的颜色\n endColor: Cesium.Color.fromCssColorString(this.options.endColor),\n //当粒子死亡时的颜色\n startScale: this.options.startScale,\n //粒子出生时的比例\n endScale: this.options.endScale,\n //粒子在死亡时的比例\n minimumParticleLife: this.options.minimumParticleLife,\n //设置粒子寿命的可能持续时间的最小界限(以秒为单位)\n maximumParticleLife: this.options.maximumParticleLife,\n //设置粒子寿命的可能持续时间的最大界限(以秒为单位)\n minimumSpeed: this.options.minimumSpeed,\n //设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。\n maximumSpeed: this.options.maximumSpeed,\n //设置以米/秒为单位的最大界限,超过该最大界限,随机选择粒子的实际速度。\n // imageSize: new Cesium.Cartesian2( //如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小\n // this.options.imageSize || 10,\n // this.options.imageSize || 10\n // ),\n minimumImageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize),\n maximumImageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize),\n sizeInMeters: true,\n emissionRate: this.options.emissionRate,\n //每秒发射的粒子数。\n lifetime: 0.5,\n loop: true,\n emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(30.0)),\n modelMatrix: matrix,\n updateCallback: function updateCallback(r) {\n r._billboard.id = _this3.options.id;\n }\n }));\n\n // this.entity.modelMatrix\n this.particleSystem.id = this.options.id;\n this.entity = this.particleSystem;\n // this.entity.modelMatrix = Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(100.0, 20.0)), new Cesium.Cartesian3(0.0, 0.0, 10000.0), new Cesium.Matrix4())\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n // this.editObj = new EditParticle(this.sdk, this.entity)\n\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"setSplitDirection\"])(0, this.options.id);\n }\n\n // 监听相机高度\n this.sdk.viewer.camera.changed.addEventListener(function () {\n if (_this3.entity && _this3.show) {\n var _cameraHeight = _this3.sdk.viewer.camera.positionCartographic.height;\n if (_cameraHeight >= 10000000) {\n _this3.entity.show = false;\n } else {\n _this3.entity.show = true;\n }\n }\n });\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function add() {\n return _add.apply(this, arguments);\n }\n return add;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 26;\n break;\n case 25:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.alt + 500),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"startColor\",\n get: function get() {\n return this.options.startColor;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.startColor = v;\n this.particleSystem.startColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.startColor) {\n this._elms.startColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.startColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.startColor[i] = picker;\n });\n }\n }\n }, {\n key: \"endColor\",\n get: function get() {\n return this.options.endColor;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.endColor = v;\n this.particleSystem.endColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.endColor) {\n this._elms.endColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this5.endColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.endColor[i] = picker;\n });\n }\n }\n }, {\n key: \"minimumSpeed\",\n get: function get() {\n return this.options.minimumSpeed;\n },\n set: function set(v) {\n this.options.minimumSpeed = v;\n this.particleSystem.minimumSpeed = v;\n this._elms.minimumSpeed && this._elms.minimumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"maximumSpeed\",\n get: function get() {\n return this.options.maximumSpeed;\n },\n set: function set(v) {\n this.options.maximumSpeed = v;\n this.particleSystem.maximumSpeed = v;\n this._elms.maximumSpeed && this._elms.maximumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"minimumParticleLife\",\n get: function get() {\n return this.options.minimumParticleLife;\n },\n set: function set(v) {\n this.options.minimumParticleLife = v;\n this.particleSystem.minimumParticleLife = v;\n this._elms.minimumParticleLife && this._elms.minimumParticleLife.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"maximumParticleLife\",\n get: function get() {\n return this.options.maximumParticleLife;\n },\n set: function set(v) {\n this.options.maximumParticleLife = v;\n this.particleSystem.maximumParticleLife = v;\n this._elms.maximumParticleLife && this._elms.maximumParticleLife.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"startScale\",\n get: function get() {\n return this.options.startScale;\n },\n set: function set(v) {\n this.options.startScale = v;\n this.particleSystem.startScale = v;\n this._elms.startScale && this._elms.startScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"endScale\",\n get: function get() {\n return this.options.endScale;\n },\n set: function set(v) {\n this.options.endScale = v;\n this.particleSystem.endScale = v;\n this._elms.endScale && this._elms.endScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"emissionRate\",\n get: function get() {\n return this.options.emissionRate;\n },\n set: function set(v) {\n this.options.emissionRate = v;\n this.particleSystem.emissionRate = v;\n this._elms.emissionRate && this._elms.emissionRate.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"particleSize\",\n get: function get() {\n return this.options.particleSize;\n },\n set: function set(v) {\n this.options.particleSize = v;\n this.particleSystem.minimumImageSize = new Cesium.Cartesian2(v, v);\n this.particleSystem.maximumImageSize = new Cesium.Cartesian2(v, v);\n this._elms.particleSize && this._elms.particleSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n this.options.lng = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n this.options.lat = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.alt;\n },\n set: function set(v) {\n this.options.alt = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var _this6 = this;\n var state,\n _this,\n contentElm,\n startColorPicker,\n endColorPicker,\n all_elm,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n state = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n return _context3.abrupt(\"return\");\n case 8:\n this._DialogObject = _context3.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' particle-effects';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n startColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"start_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.startColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.startColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n endColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"end_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.endColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.endColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].element;\n this._elms.startColor = [startColorPicker];\n this._elms.endColor = [endColorPicker];\n _context3.next = 22;\n break;\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.name = this.originalOptions.name;\n this.startColor = this.originalOptions.startColor;\n this.endColor = this.originalOptions.endColor;\n this.minimumSpeed = this.originalOptions.minimumSpeed;\n this.maximumSpeed = this.originalOptions.maximumSpeed;\n this.minimumParticleLife = this.originalOptions.minimumParticleLife;\n this.maximumParticleLife = this.originalOptions.maximumParticleLife;\n this.startScale = this.originalOptions.startScale;\n this.endScale = this.originalOptions.endScale;\n this.emissionRate = this.originalOptions.emissionRate;\n this.particleSize = this.originalOptions.particleSize;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.alt = this.originalOptions.alt;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n // syncPrimitives(this.entity)\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var sdkD;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _superPropGet(Flame, \"remove\", this, 3)([]);\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!(this.sdk !== sdkD)) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this7 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_15__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.picking = false;\n this.previous = {\n positions: _objectSpread({}, this.entity.position)\n };\n var movPos;\n this.event.mouse_move(function (movement, cartesian) {\n movPos = movement.endPosition;\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(_this7.options.lng, _this7.options.lat, _this7.options.alt);\n var position = _this7.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n _this7.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n _this7._elms.lng && _this7._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n _this7._elms.lat && _this7._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n _this7._elms.alt && _this7._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n if (!movPos || movPos.x !== movement.position.x || movPos.y !== movement.position.y - 2) {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n }\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n if (_this7._positionEditingCallback) {\n _this7._positionEditingCallback();\n _this7._positionEditingCallback = null;\n }\n _this7.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this7.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n } else {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n }\n });\n });\n } else {\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n }\n this.tip && this.tip.destroy();\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.options.lng = this.entity.position.lng;\n this.options.lat = this.entity.position.lat;\n this.options.alt = this.entity.position.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Flame);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZsYW1lL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9GbGFtZS9pbmRleC5qcz9iY2ZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDngavnhLDnibnmlYhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZydcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uLy4uL2luZGV4XCI7XHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgeyBzeW5jUHJpbWl0aXZlcyB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc3luY0RhdGEsIGdldFNkayBhcyBnZXQyRFNkayB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEZsYW1lIGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOeBq+eEsOeJueaViFxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g57KS5a2Q5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnVybCB7c3RyaW5nfSDotLTlm77lnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdGFydENvbG9yPVwiI2ZmMDAwMFwiIHtzdHJpbmd9IOi1t+Wni+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVuZENvbG9yPVwiI2ZmZjAwMFwiIHtzdHJpbmd9IOe7k+adn+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0YXJ0U2NhbGU9MC41IHtudW1iZXJ9IOWIneWni+avlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVuZFNjYWxlPTIge251bWJlcn0g57uT5p2f5q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubWluaW11bVNwZWVkPTEge251bWJlcn0g5pyA5bCP5Yid6YCf5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubWF4aW11bVNwZWVkPTMwIHtudW1iZXJ9IOacgOWkp+WInemAn+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmU9MSB7bnVtYmVyfSDmnIDlsI/lrZjlnKjml7bpl7Qo56eSKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmU9MiB7bnVtYmVyfSDmnIDlpKflrZjlnKjml7bpl7Qo56eSKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVtaXNzaW9uUmF0ZT02MCB7bnVtYmVyfSDlj5HlsITpgJ/njoco5LiqL+avj+enkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wYXJ0aWNsZVNpemU9MTAge251bWJlcn0g57KS5a2Q5bC65aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubG5nIOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhdCDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hbHQg6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy51cmwgPSBvcHRpb25zLnVybFxyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0Q29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3IgfHwgXCIjZmYwMDAwXCJcclxuICAgIHRoaXMub3B0aW9ucy5lbmRDb2xvciA9IG9wdGlvbnMuZW5kQ29sb3IgfHwgXCIjZmZmMDAwXCJcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydFNjYWxlID0gb3B0aW9ucy5zdGFydFNjYWxlIHx8IDAuNVxyXG4gICAgdGhpcy5vcHRpb25zLmVuZFNjYWxlID0gb3B0aW9ucy5lbmRTY2FsZSB8fCAyXHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZSA9IG9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZSB8fCAxXHJcbiAgICB0aGlzLm9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZSA9IG9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZSB8fCAyXHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkID0gb3B0aW9ucy5taW5pbXVtU3BlZWQgfHwgMVxyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1TcGVlZCA9IG9wdGlvbnMubWF4aW11bVNwZWVkIHx8IDMwXHJcbiAgICB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlID0gb3B0aW9ucy5lbWlzc2lvblJhdGUgfHwgNjBcclxuICAgIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemUgPSBvcHRpb25zLnBhcnRpY2xlU2l6ZSB8fCAxMFxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSBvcHRpb25zLnNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICB0aGlzLnBvc2l0aW9uQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnJvdGF0aW9uQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLm9uQ2xpY2tDYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIHRoaXMuX2VsZW1lbnQgPSBudWxsXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtXHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgdGhpcy5hZGQoKVxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgIHBvc2l0aW9uczoge1xyXG4gICAgICAgIGxuZzogdGhpcy5vcHRpb25zLmxuZyxcclxuICAgICAgICBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsXHJcbiAgICAgICAgYWx0OiB0aGlzLm9wdGlvbnMuYWx0LFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuIFwiUGFydGljbGVFZmZlY3RzXCJcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICAgIGlmICghdGhpcy5pc1Nob3dWaWV3IHx8ICFzZGtEKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodCA8IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbCAmJiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdykge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0IDwgMTAwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsICYmIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93KSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bikge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuLmNoZWNrZWQgPSB2XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgdGhpcy5pc1Nob3dWaWV3ID0gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGQoKSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgY29uc3Qgc2NlbmUgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmU7XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIGxldCBtYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygxLCAxLCAxKSwgbWF0cml4KVxyXG4gICAgbGV0IGNhbWVyYUhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtID0gc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uUGFydGljbGVTeXN0ZW0oe1xyXG4gICAgICAgIHNob3c6IChjYW1lcmFIZWlnaHQgPj0gMTAwMDAwMDApID8gZmFsc2UgOiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgICBpbWFnZTogdGhpcy5vcHRpb25zLnVybCB8fCAodGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcGFydGljbGVzeXN0ZW0vc21va2UucG5nJyksXHJcbiAgICAgICAgc3RhcnRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuc3RhcnRDb2xvciksIC8v57KS5a2Q5Ye655Sf5pe255qE6aKc6ImyXHJcbiAgICAgICAgZW5kQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmVuZENvbG9yKSwgLy/lvZPnspLlrZDmrbvkuqHml7bnmoTpopzoibJcclxuICAgICAgICBzdGFydFNjYWxlOiB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZSwgIC8v57KS5a2Q5Ye655Sf5pe255qE5q+U5L6LXHJcbiAgICAgICAgZW5kU2NhbGU6IHRoaXMub3B0aW9ucy5lbmRTY2FsZSwgLy/nspLlrZDlnKjmrbvkuqHml7bnmoTmr5TkvotcclxuICAgICAgICBtaW5pbXVtUGFydGljbGVMaWZlOiB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZSwgIC8v6K6+572u57KS5a2Q5a+/5ZG955qE5Y+v6IO95oyB57ut5pe26Ze055qE5pyA5bCP55WM6ZmQ77yI5Lul56eS5Li65Y2V5L2N77yJXHJcbiAgICAgICAgbWF4aW11bVBhcnRpY2xlTGlmZTogdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUsIC8v6K6+572u57KS5a2Q5a+/5ZG955qE5Y+v6IO95oyB57ut5pe26Ze055qE5pyA5aSn55WM6ZmQ77yI5Lul56eS5Li65Y2V5L2N77yJXHJcbiAgICAgICAgbWluaW11bVNwZWVkOiB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkLC8v6K6+572u5Lul57GzL+enkuS4uuWNleS9jeeahOacgOWwj+eVjOmZkO+8jOi2hei/h+ivpeacgOWwj+eVjOmZkO+8jOmaj+acuumAieaLqeeykuWtkOeahOWunumZhemAn+W6puOAglxyXG4gICAgICAgIG1heGltdW1TcGVlZDogdGhpcy5vcHRpb25zLm1heGltdW1TcGVlZCwvL+iuvue9ruS7peexsy/np5LkuLrljZXkvY3nmoTmnIDlpKfnlYzpmZDvvIzotoXov4for6XmnIDlpKfnlYzpmZDvvIzpmo/mnLrpgInmi6nnspLlrZDnmoTlrp7pmYXpgJ/luqbjgIJcclxuICAgICAgICAvLyBpbWFnZVNpemU6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMiggIC8v5aaC5p6c6K6+572u6K+l5bGe5oCn77yM5bCG5Lya6KaG55uWIG1pbmltdW1JbWFnZVNpemXlkoxtYXhpbXVtSW1hZ2VTaXpl5bGe5oCn77yM5Lul5YOP57Sg5Li65Y2V5L2N57yp5pS+aW1hZ2XnmoTlpKflsI9cclxuICAgICAgICAvLyAgIHRoaXMub3B0aW9ucy5pbWFnZVNpemUgfHwgMTAsXHJcbiAgICAgICAgLy8gICB0aGlzLm9wdGlvbnMuaW1hZ2VTaXplIHx8IDEwXHJcbiAgICAgICAgLy8gKSxcclxuICAgICAgICBtaW5pbXVtSW1hZ2VTaXplOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWF4aW11bUltYWdlU2l6ZTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSxcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICAgICAgICApLFxyXG4gICAgICAgIHNpemVJbk1ldGVyczogdHJ1ZSxcclxuICAgICAgICBlbWlzc2lvblJhdGU6IHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUsIC8v5q+P56eS5Y+R5bCE55qE57KS5a2Q5pWw44CCXHJcbiAgICAgICAgbGlmZXRpbWU6IDAuNSxcclxuICAgICAgICBsb29wOiB0cnVlLFxyXG4gICAgICAgIGVtaXR0ZXI6IG5ldyBDZXNpdW0uQ29uZUVtaXR0ZXIoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDMwLjApKSxcclxuICAgICAgICBtb2RlbE1hdHJpeDogbWF0cml4LFxyXG4gICAgICAgIHVwZGF0ZUNhbGxiYWNrOiAocikgPT4ge1xyXG4gICAgICAgICAgci5fYmlsbGJvYXJkLmlkID0gdGhpcy5vcHRpb25zLmlkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeFxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5pZCA9IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLnBhcnRpY2xlU3lzdGVtXHJcbiAgICAvLyB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlUcmFuc2xhdGlvbihDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygxMDAuMCwgMjAuMCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMC4wLCAwLjAsIDEwMDAwLjApLCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSlcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgIC8vIHRoaXMuZWRpdE9iaiA9IG5ldyBFZGl0UGFydGljbGUodGhpcy5zZGssIHRoaXMuZW50aXR5KVxyXG5cclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBpZih0aGlzLm9wdGlvbnMuc2hvdykge1xyXG4gICAgICAgXHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuXHJcbiAgICAvLyDnm5HlkKznm7jmnLrpq5jluqZcclxuICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuY2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuc2hvdykge1xyXG4gICAgICAgIGxldCBjYW1lcmFIZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgICBpZiAoY2FtZXJhSGVpZ2h0ID49IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmxuZywgdGhpcy5vcHRpb25zLmxhdCwgdGhpcy5vcHRpb25zLmFsdCArIDUwMCksXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnN0YXJ0Q29sb3JcclxuICB9XHJcblxyXG4gIHNldCBzdGFydENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydENvbG9yID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5zdGFydENvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuc3RhcnRDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLnN0YXJ0Q29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuc3RhcnRDb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lbmRDb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGVuZENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRDb2xvciA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0uZW5kQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5lbmRDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmVuZENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgcGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmRDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuZW5kQ29sb3JbaV0gPSBwaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtaW5pbXVtU3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1pbmltdW1TcGVlZFxyXG4gIH1cclxuXHJcbiAgc2V0IG1pbmltdW1TcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5taW5pbXVtU3BlZWQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1TcGVlZCAmJiB0aGlzLl9lbG1zLm1pbmltdW1TcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1heGltdW1TcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4aW11bVNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgbWF4aW11bVNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtU3BlZWQgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1TcGVlZCA9IHZcclxuICAgIHRoaXMuX2VsbXMubWF4aW11bVNwZWVkICYmIHRoaXMuX2VsbXMubWF4aW11bVNwZWVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWluaW11bVBhcnRpY2xlTGlmZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZVxyXG4gIH1cclxuXHJcbiAgc2V0IG1pbmltdW1QYXJ0aWNsZUxpZmUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5taW5pbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWF4aW11bVBhcnRpY2xlTGlmZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZVxyXG4gIH1cclxuXHJcbiAgc2V0IG1heGltdW1QYXJ0aWNsZUxpZmUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1heGltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5tYXhpbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRTY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZVxyXG4gIH1cclxuXHJcbiAgc2V0IHN0YXJ0U2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0U2NhbGUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLnN0YXJ0U2NhbGUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLnN0YXJ0U2NhbGUgJiYgdGhpcy5fZWxtcy5zdGFydFNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZW5kU2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVuZFNjYWxlXHJcbiAgfVxyXG5cclxuICBzZXQgZW5kU2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmVuZFNjYWxlID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbmRTY2FsZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuZW5kU2NhbGUgJiYgdGhpcy5fZWxtcy5lbmRTY2FsZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVtaXNzaW9uUmF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlXHJcbiAgfVxyXG5cclxuICBzZXQgZW1pc3Npb25SYXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmVtaXNzaW9uUmF0ZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuZW1pc3Npb25SYXRlICYmIHRoaXMuX2VsbXMuZW1pc3Npb25SYXRlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcGFydGljbGVTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICB9XHJcblxyXG4gIHNldCBwYXJ0aWNsZVNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0ubWluaW11bUltYWdlU2l6ZSA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMih2LCB2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5tYXhpbXVtSW1hZ2VTaXplID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKHYsIHYpXHJcbiAgICB0aGlzLl9lbG1zLnBhcnRpY2xlU2l6ZSAmJiB0aGlzLl9lbG1zLnBhcnRpY2xlU2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG5nXHJcbiAgfVxyXG5cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYXQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgfVxyXG5cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbHQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICAvLyBsZXQgZWxtcyA9IHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1iYXNlLWRpYWxvZycpXHJcbiAgICAvLyBmb3IgKGxldCBpID0gZWxtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChlbG1zW2ldKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+eBq+eEsOWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgICAgICAvLyAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgcGFydGljbGUtZWZmZWN0cydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IHN0YXJ0Q29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInN0YXJ0X2NvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLnN0YXJ0Q29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdGFydENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgZW5kQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImVuZF9jb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5lbmRDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5kQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSBFdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLnN0YXJ0Q29sb3IgPSBbc3RhcnRDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5lbmRDb2xvciA9IFtlbmRDb2xvclBpY2tlcl1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmICh0aGlzLl9lbGVtZW50X3N0eWxlKSB7XHJcbiAgICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50X3N0eWxlKVxyXG4gICAgICAvLyAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLnN0YXJ0Q29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zdGFydENvbG9yXHJcbiAgICB0aGlzLmVuZENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZW5kQ29sb3JcclxuICAgIHRoaXMubWluaW11bVNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWluaW11bVNwZWVkXHJcbiAgICB0aGlzLm1heGltdW1TcGVlZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1heGltdW1TcGVlZFxyXG4gICAgdGhpcy5taW5pbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5tYXhpbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5zdGFydFNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3RhcnRTY2FsZVxyXG4gICAgdGhpcy5lbmRTY2FsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVuZFNjYWxlXHJcbiAgICB0aGlzLmVtaXNzaW9uUmF0ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVtaXNzaW9uUmF0ZVxyXG4gICAgdGhpcy5wYXJ0aWNsZVNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICAgIHRoaXMubG5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubG5nXHJcbiAgICB0aGlzLmxhdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhdFxyXG4gICAgdGhpcy5hbHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hbHRcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAvLyBzeW5jUHJpbWl0aXZlcyh0aGlzLmVudGl0eSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHN1cGVyLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5lbnRpdHkpO1xyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICBpZih0aGlzLnNkayAhPT0gc2RrRCkge1xyXG4gICAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75Yqf6IO9XHJcbiAgKlxyXG4gICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICogQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICAqXHJcbiAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+eCueWHu+m8oOagh+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIHBvc2l0aW9uczogeyAuLi50aGlzLmVudGl0eS5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1vdlBvc1xyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBtb3ZQb3MgPSBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gcG9zaXRpb25zLmFsdFxyXG4gICAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgICAgICB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKVxyXG5cclxuICAgICAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKCFtb3ZQb3MgfHwgbW92UG9zLnggIT09IG1vdmVtZW50LnBvc2l0aW9uLnggfHwgbW92UG9zLnkgIT09IG1vdmVtZW50LnBvc2l0aW9uLnktMikge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogeyAuLi50aGlzLmVudGl0eS5wb3NpdGlvbiB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxuZyA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gdGhpcy5lbnRpdHkucG9zaXRpb24ubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMuZW50aXR5LnBvc2l0aW9uIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIGlmKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sbmdcclxuICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxhdFxyXG4gICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpYyk7XHJcbiAgICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcblxyXG4gICAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcbiAgY2xvc2VQb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRmxhbWVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFyRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWhFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1FQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQXRHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWZBO0FBQUE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQXlJQTtBQUNBO0FBQUE7QUFwSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Flame/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Fountain/_element.js": -/*!***********************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Fountain/_element.js ***! - \***********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u989C\\u8272\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u53D1\\u5C04\\u901F\\u7387\\uFF08\\u4E2A/\\u79D2\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\u5C3A\\u5BF8\\uFF08\\u50CF\\u7D20\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZvdW50YWluL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9Gb3VudGFpbi9fZWxlbWVudC5qcz84ODY1Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwibGF0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7otbflp4vpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFydF9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbjogMDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uT5p2f6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5kX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/liJ3pgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cIm1pbmltdW1TcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5Yid6YCf5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJtYXhpbXVtU3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/lrZjlnKjml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjAuMDFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwibWluaW11bVBhcnRpY2xlTGlmZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5a2Y5Zyo5pe26Ze0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwLjAxXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cIm1heGltdW1QYXJ0aWNsZUxpZmVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7otbflp4vmr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzdGFydFNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5PmnZ/mr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJlbmRTY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuWPkeWwhOmAn+eOh++8iOS4qi/np5LvvIk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImVtaXNzaW9uUmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5bC65a+477yI5YOP57Sg77yJPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJwYXJ0aWNsZVNpemVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNEdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Fountain/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Fountain/eventBinding.js": -/*!***************************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Fountain/eventBinding.js ***! - \***************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' || e.target.type == 'range') {\n value = Number(value);\n }\n that[m.value] = value;\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that.Dialog[m.value] === 'function') {\n that.Dialog[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZvdW50YWluL2V2ZW50QmluZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9QYXJ0aWNsZUVmZmVjdHMvRm91bnRhaW4vZXZlbnRCaW5kaW5nLmpzPzRlNjciXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgZXZlbnRCaW5kaW5nIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgfVxyXG4gIHN0YXRpYyBldmVudCA9IHt9XHJcblxyXG4gIGdldEV2ZW50KG5hbWUpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV1cclxuICB9XHJcblxyXG4gIGdldEV2ZW50QWxsKCkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFxyXG4gIH1cclxuXHJcbiAgc2V0RXZlbnQobmFtZSwgZXZlbnQpIHtcclxuICAgIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXSA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBvbih0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgfHwgZS50YXJnZXQudHlwZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBpZihlbGVtZW50c1tpXS5ub2RlTmFtZT09J0lNRycpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnNyYyA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdC5EaWFsb2dbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LkRpYWxvZ1ttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IG49MDtuPHJlbW92ZU5hbWUubGVuZ3RoO24rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IEV2ZW50QmluZGluZyA9IG5ldyBldmVudEJpbmRpbmcoKTtcclxuZXhwb3J0IGRlZmF1bHQgRXZlbnRCaW5kaW5nOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVDQTtBQUFBO0FBQUE7QUE0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5FQTtBQUFBO0FBS0E7QUErREE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Fountain/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Fountain/index.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Fountain/index.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/ParticleEffects/Fountain/_element.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/ParticleEffects/Fountain/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * 喷泉特效\r\n */\n\n\n\n\n\n\n\n\n\nvar Fountain = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 喷泉特效\r\n * @param sdk \r\n * @param options {object} 粒子属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 贴图地址\r\n * @param options.startColor=\"#c1f7f24d\" {string} 起始颜色\r\n * @param options.endColor=\"#ffffff00\" {string} 结束颜色\r\n * @param options.startScale=1 {number} 初始比例\r\n * @param options.endScale=20 {number} 结束比例\r\n * @param options.minimumSpeed=9 {number} 最小初速度\r\n * @param options.maximumSpeed=9.5 {number} 最大初速度\r\n * @param options.minimumParticleLife=6 {number} 最小存在时间(秒)\r\n * @param options.maximumParticleLife=7 {number} 最大存在时间(秒)\r\n * @param options.emissionRate=20 {number} 发射速率(个/每秒)\r\n * @param options.particleSize=0.5{number} 粒子尺大小\r\n * @param options.lng 经度\r\n * @param options.lat 纬度\r\n * @param options.alt 高度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function Fountain(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Fountain);\n _this2 = _callSuper(this, Fountain, [sdk, options]);\n _this2.options.url = options.url;\n _this2.options.startColor = options.startColor || \"#c1f7f24d\";\n _this2.options.endColor = options.endColor || \"#ffffff00\";\n _this2.options.startScale = options.startScale || 1;\n _this2.options.endScale = options.endScale || 20;\n _this2.options.minimumParticleLife = options.minimumParticleLife || 6;\n _this2.options.maximumParticleLife = options.maximumParticleLife || 7;\n _this2.options.minimumSpeed = options.minimumSpeed || 9;\n _this2.options.maximumSpeed = options.maximumSpeed || 9.5;\n _this2.options.emissionRate = options.emissionRate || 20;\n _this2.options.particleSize = options.particleSize || 0.5;\n // this.options.gravity = (options.gravity || options.gravity === 0) ? options.gravity : -3.5\n _this2.options.show = options.show === false ? false : true;\n _this2._elms = {};\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2._element = null;\n _this2.particleSystem;\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.add();\n _this2.operate = {};\n _this2.previous = {\n positions: {\n lng: _this2.options.lng,\n lat: _this2.options.lat,\n alt: _this2.options.alt\n }\n };\n _this2.Dialog = _Dialog;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Fountain, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Fountain, [{\n key: \"type\",\n get: function get() {\n return \"ParticleEffects\";\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = this.options.show;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = this.options.show;\n }\n } else {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = false;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"add\",\n value: function () {\n var _add = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this3 = this;\n var _this, scene, gravityScratch, cartographic, position, matrix, cameraHeight, gravityVector, gravity, applyGravity, computeEmitterodelMatrix, computeModelMatrix;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n computeModelMatrix = function _computeModelMatrix(position) {\n var center = Cesium.Cartesian3.fromDegrees(120.40100613624982, 36.09030781, -5);\n var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);\n return modelMatrix;\n };\n computeEmitterodelMatrix = function _computeEmitterodelMa() {\n var hpr = Cesium.HeadingPitchRoll.fromDegrees(0, 0, 0); //!!!发射粒子的方向\n var trs = new Cesium.TranslationRotationScale();\n trs.translation = Cesium.Cartesian3.fromElements(0, 0, 0);\n trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr);\n var Matrix4 = Cesium.Matrix4.fromTranslationRotationScale(trs);\n return Matrix4;\n };\n applyGravity = function _applyGravity(p, dt) {\n p._billboard.id = _this.options.id;\n var position = p.position;\n Cesium.Cartesian3.normalize(position, gravityVector);\n Cesium.Cartesian3.multiplyByScalar(gravityVector, gravity * dt, gravityVector);\n p.velocity = Cesium.Cartesian3.add(p.velocity, gravityVector, p.velocity);\n };\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n scene = this.sdk.viewer.scene;\n gravityScratch = new Cesium.Cartesian3();\n cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(1, 1, 1), matrix);\n cameraHeight = this.sdk.viewer.camera.positionCartographic.height;\n this.particleSystem = scene.primitives.add(new Cesium.ParticleSystem({\n show: cameraHeight >= 10000000 ? false : this.options.show,\n image: this.options.url || this.getSourceRootPath() + '/img/particlesystem/fountain.png',\n // 从绿色到白色淡出\n startColor: Cesium.Color.fromCssColorString(this.options.startColor),\n //粒子出生时的颜色\n endColor: Cesium.Color.fromCssColorString(this.options.endColor),\n //当粒子死亡时的颜色\n startScale: this.options.startScale,\n //粒子出生时的比例\n endScale: this.options.endScale,\n //粒子在死亡时的比例\n minimumParticleLife: this.options.minimumParticleLife,\n //设置粒子寿命的可能持续时间的最小界限(以秒为单位)\n maximumParticleLife: this.options.maximumParticleLife,\n //设置粒子寿命的可能持续时间的最大界限(以秒为单位)\n minimumSpeed: this.options.minimumSpeed,\n //设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。\n maximumSpeed: this.options.maximumSpeed,\n //设置以米/秒为单位的最大界限,超过该最大界限,随机选择粒子的实际速度。\n // imageSize: new Cesium.Cartesian2( //如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小\n // this.options.imageSize || 10,\n // this.options.imageSize || 10\n // ),\n lifetime: 0.5,\n imageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize * 2),\n sizeInMeters: true,\n emissionRate: this.options.emissionRate,\n //每秒发射的粒子数。\n loop: true,\n emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(0.2)),\n modelMatrix: matrix,\n emitterModelMatrix: computeEmitterodelMatrix(),\n // 发射器转换为世界坐标\n\n // 增加重力场影像,\n updateCallback: applyGravity\n }));\n gravityVector = new Cesium.Cartesian3();\n gravity = -3.5; // !!!重力方向向上向下 -(9.8*9.8)\n // 计算粒子发射器的位置姿态\n // this.entity.modelMatrix\n this.particleSystem.id = this.options.id;\n this.entity = this.particleSystem;\n // this.entity.modelMatrix = Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(100.0, 20.0)), new Cesium.Cartesian3(0.0, 0.0, 10000.0), new Cesium.Matrix4())\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n // this.editObj = new EditParticle(this.sdk, this.entity)\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"setSplitDirection\"])(0, this.options.id);\n }\n\n // 监听相机高度\n this.sdk.viewer.camera.changed.addEventListener(function () {\n if (_this3.entity && _this3.show) {\n var _cameraHeight = _this3.sdk.viewer.camera.positionCartographic.height;\n if (_cameraHeight >= 10000000) {\n _this3.entity.show = false;\n } else {\n _this3.entity.show = true;\n }\n }\n });\n case 21:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function add() {\n return _add.apply(this, arguments);\n }\n return add;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 26;\n break;\n case 25:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.alt + 500),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"startColor\",\n get: function get() {\n return this.options.startColor;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.startColor = v;\n this.particleSystem.startColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.startColor) {\n this._elms.startColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.startColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.startColor[i] = picker;\n });\n }\n }\n }, {\n key: \"endColor\",\n get: function get() {\n return this.options.endColor;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.endColor = v;\n this.particleSystem.endColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.endColor) {\n this._elms.endColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this5.endColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.endColor[i] = picker;\n });\n }\n }\n }, {\n key: \"minimumSpeed\",\n get: function get() {\n return this.options.minimumSpeed;\n },\n set: function set(v) {\n this.options.minimumSpeed = v;\n this.particleSystem.minimumSpeed = v;\n this._elms.minimumSpeed && this._elms.minimumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"maximumSpeed\",\n get: function get() {\n return this.options.maximumSpeed;\n },\n set: function set(v) {\n this.options.maximumSpeed = v;\n this.particleSystem.maximumSpeed = v;\n this._elms.maximumSpeed && this._elms.maximumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"minimumParticleLife\",\n get: function get() {\n return this.options.minimumParticleLife;\n },\n set: function set(v) {\n this.options.minimumParticleLife = Number(v);\n this.particleSystem.minimumParticleLife = Number(v);\n this._elms.minimumParticleLife && this._elms.minimumParticleLife.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"maximumParticleLife\",\n get: function get() {\n return this.options.maximumParticleLife;\n },\n set: function set(v) {\n this.options.maximumParticleLife = Number(v);\n this.particleSystem.maximumParticleLife = Number(v);\n this._elms.maximumParticleLife && this._elms.maximumParticleLife.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"startScale\",\n get: function get() {\n return this.options.startScale;\n },\n set: function set(v) {\n this.options.startScale = v;\n this.particleSystem.startScale = v;\n this._elms.startScale && this._elms.startScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"endScale\",\n get: function get() {\n return this.options.endScale;\n },\n set: function set(v) {\n this.options.endScale = v;\n this.particleSystem.endScale = v;\n this._elms.endScale && this._elms.endScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"emissionRate\",\n get: function get() {\n return this.options.emissionRate;\n },\n set: function set(v) {\n this.options.emissionRate = v;\n this.particleSystem.emissionRate = v;\n this._elms.emissionRate && this._elms.emissionRate.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"particleSize\",\n get: function get() {\n return this.options.particleSize;\n },\n set: function set(v) {\n this.options.particleSize = v;\n this.particleSystem.minimumImageSize = new Cesium.Cartesian2(v, v);\n this.particleSystem.maximumImageSize = new Cesium.Cartesian2(v, v);\n this._elms.particleSize && this._elms.particleSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n this.options.lng = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n this.options.lat = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.alt;\n },\n set: function set(v) {\n this.options.alt = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var _this6 = this;\n var state,\n _this,\n contentElm,\n startColorPicker,\n endColorPicker,\n all_elm,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n state = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n return _context3.abrupt(\"return\");\n case 8:\n this._DialogObject = _context3.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' particle-effects';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n startColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"start_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.startColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.startColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n endColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"end_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.endColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.endColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].element;\n this._elms.startColor = [startColorPicker];\n this._elms.endColor = [endColorPicker];\n _context3.next = 22;\n break;\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.name = this.originalOptions.name;\n this.startColor = this.originalOptions.startColor;\n this.endColor = this.originalOptions.endColor;\n this.minimumSpeed = this.originalOptions.minimumSpeed;\n this.maximumSpeed = this.originalOptions.maximumSpeed;\n this.minimumParticleLife = this.originalOptions.minimumParticleLife;\n this.maximumParticleLife = this.originalOptions.maximumParticleLife;\n this.startScale = this.originalOptions.startScale;\n this.endScale = this.originalOptions.endScale;\n this.emissionRate = this.originalOptions.emissionRate;\n this.particleSize = this.originalOptions.particleSize;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.alt = this.originalOptions.alt;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var sdkD;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _superPropGet(Fountain, \"remove\", this, 3)([]);\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!(this.sdk !== sdkD)) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this7 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_15__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.picking = false;\n this.previous = {\n positions: _objectSpread({}, this.entity.position)\n };\n var movPos;\n this.event.mouse_move(function (movement, cartesian) {\n movPos = movement.endPosition;\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(_this7.options.lng, _this7.options.lat, _this7.options.alt);\n var position = _this7.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n _this7.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n _this7._elms.lng && _this7._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n _this7._elms.lat && _this7._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n _this7._elms.alt && _this7._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n if (!movPos || movPos.x !== movement.position.x || movPos.y !== movement.position.y - 2) {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n }\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n if (_this7._positionEditingCallback) {\n _this7._positionEditingCallback();\n _this7._positionEditingCallback = null;\n }\n _this7.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this7.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n } else {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n }\n });\n });\n } else {\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.options.lng = this.entity.position.lng;\n this.options.lat = this.entity.position.lat;\n this.options.alt = this.entity.position.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Fountain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL0ZvdW50YWluL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9Gb3VudGFpbi9pbmRleC5qcz84Y2FhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDllrfms4nnibnmlYhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZydcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uLy4uL2luZGV4XCI7XHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSwgZ2V0U2RrIGFzIGdldDJEU2RrIH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEZvdW50YWluIGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOWWt+azieeJueaViFxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g57KS5a2Q5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnVybCB7c3RyaW5nfSDotLTlm77lnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdGFydENvbG9yPVwiI2MxZjdmMjRkXCIge3N0cmluZ30g6LW35aeL6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kQ29sb3I9XCIjZmZmZmZmMDBcIiB7c3RyaW5nfSDnu5PmnZ/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdGFydFNjYWxlPTEge251bWJlcn0g5Yid5aeL5q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kU2NhbGU9MjAge251bWJlcn0g57uT5p2f5q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubWluaW11bVNwZWVkPTkge251bWJlcn0g5pyA5bCP5Yid6YCf5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubWF4aW11bVNwZWVkPTkuNSB7bnVtYmVyfSDmnIDlpKfliJ3pgJ/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlPTYge251bWJlcn0g5pyA5bCP5a2Y5Zyo5pe26Ze0KOenkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlPTcge251bWJlcn0g5pyA5aSn5a2Y5Zyo5pe26Ze0KOenkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5lbWlzc2lvblJhdGU9MjAge251bWJlcn0g5Y+R5bCE6YCf546HKOS4qi/mr4/np5IpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucGFydGljbGVTaXplPTAuNXtudW1iZXJ9IOeykuWtkOWwuuWkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxuZyDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYXQg57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYWx0IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcge29iamVjdH0g6buY6K6k6KeG6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbiB7b2JqZWN0fSDpu5jorqTop4bop5LmlrnkvY1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcge251bWJlcn0g6Iiq5ZCR6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB7bnVtYmVyfSDkv6/ku7Dop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwge251bWJlcn0g57+75rua6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uIHtvYmplY3R9IOinhuinkuebuOWvueS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zLCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMudXJsID0gb3B0aW9ucy51cmxcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydENvbG9yID0gb3B0aW9ucy5zdGFydENvbG9yIHx8IFwiI2MxZjdmMjRkXCJcclxuICAgIHRoaXMub3B0aW9ucy5lbmRDb2xvciA9IG9wdGlvbnMuZW5kQ29sb3IgfHwgXCIjZmZmZmZmMDBcIlxyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0U2NhbGUgPSBvcHRpb25zLnN0YXJ0U2NhbGUgfHwgMVxyXG4gICAgdGhpcy5vcHRpb25zLmVuZFNjYWxlID0gb3B0aW9ucy5lbmRTY2FsZSB8fCAyMFxyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSBvcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgfHwgNlxyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgPSBvcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgfHwgN1xyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1TcGVlZCA9IG9wdGlvbnMubWluaW11bVNwZWVkIHx8IDlcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtU3BlZWQgPSBvcHRpb25zLm1heGltdW1TcGVlZCB8fCA5LjVcclxuICAgIHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUgPSBvcHRpb25zLmVtaXNzaW9uUmF0ZSB8fCAyMFxyXG4gICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSA9IG9wdGlvbnMucGFydGljbGVTaXplIHx8IDAuNVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmdyYXZpdHkgPSAob3B0aW9ucy5ncmF2aXR5IHx8IG9wdGlvbnMuZ3Jhdml0eSA9PT0gMCkgPyBvcHRpb25zLmdyYXZpdHkgOiAtMy41XHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMucG9zaXRpb25DYWxsQmFjayA9IG51bGxcclxuICAgIHRoaXMucm90YXRpb25DYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMub25DbGlja0NhbGxiYWNrID0gbnVsbFxyXG4gICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgdGhpcy5fZWxlbWVudCA9IG51bGxcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW1cclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICB0aGlzLmFkZCgpXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgcG9zaXRpb25zOiB7XHJcbiAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMubG5nLFxyXG4gICAgICAgIGxhdDogdGhpcy5vcHRpb25zLmxhdCxcclxuICAgICAgICBhbHQ6IHRoaXMub3B0aW9ucy5hbHQsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gXCJQYXJ0aWNsZUVmZmVjdHNcIlxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgbGV0IHNka0QgPSBnZXQyRFNkaygpLnNka0RcclxuICAgICAgaWYgKCF0aGlzLmlzU2hvd1ZpZXcgfHwgIXNka0QpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHZcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzIHx8ICFzZGtEKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0IDwgMTAwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsICYmIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93KSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5lbnRpdHkgJiYgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAxMDAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWwgJiYgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cpIHtcclxuICAgICAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgdGhpcy5pc1Nob3dWaWV3ID0gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGQoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgY29uc3Qgc2NlbmUgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmU7XHJcbiAgICBsZXQgZ3Jhdml0eVNjcmF0Y2ggPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKTtcclxuICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKVxyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKG1hdHJpeCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKDEsIDEsIDEpLCBtYXRyaXgpXHJcblxyXG4gICAgbGV0IGNhbWVyYUhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtID0gc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uUGFydGljbGVTeXN0ZW0oe1xyXG4gICAgICAgIHNob3c6IChjYW1lcmFIZWlnaHQgPj0gMTAwMDAwMDApID8gZmFsc2UgOiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgICBpbWFnZTogdGhpcy5vcHRpb25zLnVybCB8fCAodGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcGFydGljbGVzeXN0ZW0vZm91bnRhaW4ucG5nJyksXHJcbiAgICAgICAgLy8g5LuO57u/6Imy5Yiw55m96Imy5reh5Ye6XHJcbiAgICAgICAgc3RhcnRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuc3RhcnRDb2xvciksIC8v57KS5a2Q5Ye655Sf5pe255qE6aKc6ImyXHJcbiAgICAgICAgZW5kQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmVuZENvbG9yKSwgLy/lvZPnspLlrZDmrbvkuqHml7bnmoTpopzoibJcclxuICAgICAgICBzdGFydFNjYWxlOiB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZSwgIC8v57KS5a2Q5Ye655Sf5pe255qE5q+U5L6LXHJcbiAgICAgICAgZW5kU2NhbGU6IHRoaXMub3B0aW9ucy5lbmRTY2FsZSwgLy/nspLlrZDlnKjmrbvkuqHml7bnmoTmr5TkvotcclxuICAgICAgICBtaW5pbXVtUGFydGljbGVMaWZlOiB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZSwgIC8v6K6+572u57KS5a2Q5a+/5ZG955qE5Y+v6IO95oyB57ut5pe26Ze055qE5pyA5bCP55WM6ZmQ77yI5Lul56eS5Li65Y2V5L2N77yJXHJcbiAgICAgICAgbWF4aW11bVBhcnRpY2xlTGlmZTogdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUsIC8v6K6+572u57KS5a2Q5a+/5ZG955qE5Y+v6IO95oyB57ut5pe26Ze055qE5pyA5aSn55WM6ZmQ77yI5Lul56eS5Li65Y2V5L2N77yJXHJcbiAgICAgICAgbWluaW11bVNwZWVkOiB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkLC8v6K6+572u5Lul57GzL+enkuS4uuWNleS9jeeahOacgOWwj+eVjOmZkO+8jOi2hei/h+ivpeacgOWwj+eVjOmZkO+8jOmaj+acuumAieaLqeeykuWtkOeahOWunumZhemAn+W6puOAglxyXG4gICAgICAgIG1heGltdW1TcGVlZDogdGhpcy5vcHRpb25zLm1heGltdW1TcGVlZCwvL+iuvue9ruS7peexsy/np5LkuLrljZXkvY3nmoTmnIDlpKfnlYzpmZDvvIzotoXov4for6XmnIDlpKfnlYzpmZDvvIzpmo/mnLrpgInmi6nnspLlrZDnmoTlrp7pmYXpgJ/luqbjgIJcclxuICAgICAgICAvLyBpbWFnZVNpemU6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMiggIC8v5aaC5p6c6K6+572u6K+l5bGe5oCn77yM5bCG5Lya6KaG55uWIG1pbmltdW1JbWFnZVNpemXlkoxtYXhpbXVtSW1hZ2VTaXpl5bGe5oCn77yM5Lul5YOP57Sg5Li65Y2V5L2N57yp5pS+aW1hZ2XnmoTlpKflsI9cclxuICAgICAgICAvLyAgIHRoaXMub3B0aW9ucy5pbWFnZVNpemUgfHwgMTAsXHJcbiAgICAgICAgLy8gICB0aGlzLm9wdGlvbnMuaW1hZ2VTaXplIHx8IDEwXHJcbiAgICAgICAgLy8gKSxcclxuICAgICAgICBsaWZldGltZTogMC41LFxyXG4gICAgICAgIGltYWdlU2l6ZTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemUsIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemUgKiAyKSxcclxuICAgICAgICBzaXplSW5NZXRlcnM6IHRydWUsXHJcbiAgICAgICAgZW1pc3Npb25SYXRlOiB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlLCAvL+avj+enkuWPkeWwhOeahOeykuWtkOaVsOOAglxyXG4gICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgZW1pdHRlcjogbmV3IENlc2l1bS5Db25lRW1pdHRlcihDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4yKSksXHJcbiAgICAgICAgbW9kZWxNYXRyaXg6IG1hdHJpeCxcclxuICAgICAgICBlbWl0dGVyTW9kZWxNYXRyaXg6IGNvbXB1dGVFbWl0dGVyb2RlbE1hdHJpeCgpLC8vIOWPkeWwhOWZqOi9rOaNouS4uuS4lueVjOWdkOagh1xyXG5cclxuICAgICAgICAvLyDlop7liqDph43lipvlnLrlvbHlg4/vvIxcclxuICAgICAgICB1cGRhdGVDYWxsYmFjazogYXBwbHlHcmF2aXR5LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGxldCBncmF2aXR5VmVjdG9yID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICBsZXQgZ3Jhdml0eSA9IC0zLjU7Ly8gISEh6YeN5Yqb5pa55ZCR5ZCR5LiK5ZCR5LiLIC0oOS44KjkuOClcclxuICAgIGZ1bmN0aW9uIGFwcGx5R3Jhdml0eShwLCBkdCkge1xyXG4gICAgICBwLl9iaWxsYm9hcmQuaWQgPSBfdGhpcy5vcHRpb25zLmlkXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHAucG9zaXRpb247XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShwb3NpdGlvbiwgZ3Jhdml0eVZlY3Rvcik7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm11bHRpcGx5QnlTY2FsYXIoZ3Jhdml0eVZlY3RvciwgZ3Jhdml0eSAqIGR0LCBncmF2aXR5VmVjdG9yKTtcclxuICAgICAgcC52ZWxvY2l0eSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChwLnZlbG9jaXR5LCBncmF2aXR5VmVjdG9yLCBwLnZlbG9jaXR5KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8g6K6h566X57KS5a2Q5Y+R5bCE5Zmo55qE5L2N572u5ae/5oCBXHJcbiAgICBmdW5jdGlvbiBjb21wdXRlRW1pdHRlcm9kZWxNYXRyaXgoKSB7XHJcbiAgICAgIGxldCBocHIgPSBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcygwLCAwLCAwKTsvLyEhIeWPkeWwhOeykuWtkOeahOaWueWQkVxyXG4gICAgICBsZXQgdHJzID0gbmV3IENlc2l1bS5UcmFuc2xhdGlvblJvdGF0aW9uU2NhbGUoKTtcclxuICAgICAgdHJzLnRyYW5zbGF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbUVsZW1lbnRzKDAsIDAsIDApO1xyXG4gICAgICB0cnMucm90YXRpb24gPSBDZXNpdW0uUXVhdGVybmlvbi5mcm9tSGVhZGluZ1BpdGNoUm9sbChocHIpO1xyXG4gICAgICBsZXQgTWF0cml4NCA9IENlc2l1bS5NYXRyaXg0LmZyb21UcmFuc2xhdGlvblJvdGF0aW9uU2NhbGUodHJzKTtcclxuICAgICAgcmV0dXJuIE1hdHJpeDRcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vZGVsTWF0cml4KHBvc2l0aW9uKSB7XHJcbiAgICAgIGxldCBjZW50ZXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygxMjAuNDAxMDA2MTM2MjQ5ODIsIDM2LjA5MDMwNzgxLCAtNSlcclxuICAgICAgbGV0IG1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoY2VudGVyKTtcclxuICAgICAgcmV0dXJuIG1vZGVsTWF0cml4O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmlkID0gdGhpcy5vcHRpb25zLmlkXHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMucGFydGljbGVTeXN0ZW1cclxuICAgIC8vIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVRyYW5zbGF0aW9uKENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKDEwMC4wLCAyMC4wKSksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLjAsIDAuMCwgMTAwMDAuMCksIG5ldyBDZXNpdW0uTWF0cml4NCgpKVxyXG4gICAgdGhpcy5lbnRpdHkucG9zaXRpb24gPSB7IGxuZzogdGhpcy5vcHRpb25zLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGF0LCBhbHQ6IHRoaXMub3B0aW9ucy5hbHQgfVxyXG4gICAgLy8gdGhpcy5lZGl0T2JqID0gbmV3IEVkaXRQYXJ0aWNsZSh0aGlzLnNkaywgdGhpcy5lbnRpdHkpXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuXHJcbiAgICAvLyDnm5HlkKznm7jmnLrpq5jluqZcclxuICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuY2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuc2hvdykge1xyXG4gICAgICAgIGxldCBjYW1lcmFIZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgICBpZiAoY2FtZXJhSGVpZ2h0ID49IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0ICsgNTAwKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnRDb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IHN0YXJ0Q29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0Q29sb3IgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLnN0YXJ0Q29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5zdGFydENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuc3RhcnRDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IHBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB2LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5zdGFydENvbG9yW2ldID0gcGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVuZENvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgZW5kQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmVuZENvbG9yID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbmRDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodilcclxuICAgIGlmICh0aGlzLl9lbG1zLmVuZENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuZW5kQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuZENvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5lbmRDb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbmltdW1TcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgbWluaW11bVNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5taW5pbXVtU3BlZWQgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1pbmltdW1TcGVlZCA9IHZcclxuICAgIHRoaXMuX2VsbXMubWluaW11bVNwZWVkICYmIHRoaXMuX2VsbXMubWluaW11bVNwZWVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWF4aW11bVNwZWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXhpbXVtU3BlZWRcclxuICB9XHJcblxyXG4gIHNldCBtYXhpbXVtU3BlZWQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1TcGVlZCA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0ubWF4aW11bVNwZWVkID0gdlxyXG4gICAgdGhpcy5fZWxtcy5tYXhpbXVtU3BlZWQgJiYgdGhpcy5fZWxtcy5tYXhpbXVtU3BlZWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBtaW5pbXVtUGFydGljbGVMaWZlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgfVxyXG5cclxuICBzZXQgbWluaW11bVBhcnRpY2xlTGlmZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5taW5pbXVtUGFydGljbGVMaWZlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5taW5pbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IE51bWJlcih2KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBtYXhpbXVtUGFydGljbGVMaWZlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgfVxyXG5cclxuICBzZXQgbWF4aW11bVBhcnRpY2xlTGlmZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5tYXhpbXVtUGFydGljbGVMaWZlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLl9lbG1zLm1heGltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5tYXhpbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IE51bWJlcih2KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzdGFydFNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdGFydFNjYWxlXHJcbiAgfVxyXG5cclxuICBzZXQgc3RhcnRTY2FsZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZSA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0uc3RhcnRTY2FsZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuc3RhcnRTY2FsZSAmJiB0aGlzLl9lbG1zLnN0YXJ0U2NhbGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBlbmRTY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZW5kU2NhbGVcclxuICB9XHJcblxyXG4gIHNldCBlbmRTY2FsZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZW5kU2NhbGUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmVuZFNjYWxlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5lbmRTY2FsZSAmJiB0aGlzLl9lbG1zLmVuZFNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZW1pc3Npb25SYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGVcclxuICB9XHJcblxyXG4gIHNldCBlbWlzc2lvblJhdGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmVtaXNzaW9uUmF0ZSA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0uZW1pc3Npb25SYXRlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5lbWlzc2lvblJhdGUgJiYgdGhpcy5fZWxtcy5lbWlzc2lvblJhdGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBwYXJ0aWNsZVNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZVxyXG4gIH1cclxuXHJcbiAgc2V0IHBhcnRpY2xlU2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5taW5pbXVtSW1hZ2VTaXplID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKHYsIHYpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1JbWFnZVNpemUgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIodiwgdilcclxuICAgIHRoaXMuX2VsbXMucGFydGljbGVTaXplICYmIHRoaXMuX2VsbXMucGFydGljbGVTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbG5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sbmdcclxuICB9XHJcblxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxuZyA9IHZcclxuICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgIHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYXRcclxuICB9XHJcblxyXG4gIHNldCBsYXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhdCA9IHZcclxuICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgYWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbHRcclxuICB9XHJcblxyXG4gIHNldCBhbHQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmFsdCA9IHZcclxuICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIOe8lui+keahhlxyXG4gICAqIEBwYXJhbSBzdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g54q25oCBOiB0cnVl5omT5byALCBmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIC8vIGxldCBlbG1zID0gdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWJhc2UtZGlhbG9nJylcclxuICAgIC8vIGZvciAobGV0IGkgPSBlbG1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLnJlbW92ZUNoaWxkKGVsbXNbaV0pXHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9yaWdpbmFsT3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn5Za35rOJ5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAgICAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBwYXJ0aWNsZS1lZmZlY3RzJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgc3RhcnRDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic3RhcnRfY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuc3RhcnRDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBlbmRDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW5kX2NvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmVuZENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVuZENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICBFdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IEV2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuc3RhcnRDb2xvciA9IFtzdGFydENvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmVuZENvbG9yID0gW2VuZENvbG9yUGlja2VyXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuc3RhcnRDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnN0YXJ0Q29sb3JcclxuICAgIHRoaXMuZW5kQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5lbmRDb2xvclxyXG4gICAgdGhpcy5taW5pbXVtU3BlZWQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5taW5pbXVtU3BlZWRcclxuICAgIHRoaXMubWF4aW11bVNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVNwZWVkXHJcbiAgICB0aGlzLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgICB0aGlzLm1heGltdW1QYXJ0aWNsZUxpZmUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgICB0aGlzLnN0YXJ0U2NhbGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zdGFydFNjYWxlXHJcbiAgICB0aGlzLmVuZFNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZW5kU2NhbGVcclxuICAgIHRoaXMuZW1pc3Npb25SYXRlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZW1pc3Npb25SYXRlXHJcbiAgICB0aGlzLnBhcnRpY2xlU2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnBhcnRpY2xlU2l6ZVxyXG4gICAgdGhpcy5sbmcgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sbmdcclxuICAgIHRoaXMubGF0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGF0XHJcbiAgICB0aGlzLmFsdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmFsdFxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHN1cGVyLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5lbnRpdHkpO1xyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICBpZih0aGlzLnNkayAhPT0gc2RrRCkge1xyXG4gICAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75Yqf6IO9XHJcbiAgKlxyXG4gICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICogQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICAqXHJcbiAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+eCueWHu+m8oOagh+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIHBvc2l0aW9uczogeyAuLi50aGlzLmVudGl0eS5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1vdlBvc1xyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBtb3ZQb3MgPSBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gcG9zaXRpb25zLmFsdFxyXG4gICAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgICAgICB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKVxyXG5cclxuICAgICAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKCFtb3ZQb3MgfHwgbW92UG9zLnggIT09IG1vdmVtZW50LnBvc2l0aW9uLnggfHwgbW92UG9zLnkgIT09IG1vdmVtZW50LnBvc2l0aW9uLnkgLSAyKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMuZW50aXR5LnBvc2l0aW9uIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgaWYodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gdGhpcy5lbnRpdHkucG9zaXRpb24ubG5nXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxhdFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5hbHRcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sbmdcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuYWx0IH1cclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IHsgLi4udGhpcy5lbnRpdHkucG9zaXRpb24gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gICAgICBpZiAodGhpcy5ldmVudCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vcHRpb25zLmxuZyA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxuZ1xyXG4gICAgICB0aGlzLm9wdGlvbnMubGF0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24ubGF0XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmxuZywgdGhpcy5vcHRpb25zLmxhdCwgdGhpcy5vcHRpb25zLmFsdCk7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuXHJcbiAgICAgIHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fZWxtcy5hbHQgJiYgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuICBjbG9zZVBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3VudGFpblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQStEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQVVBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTVGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBaEVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkE7QUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBdEdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWZBO0FBQUE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQTJJQTtBQUNBO0FBQUE7QUF0SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Fountain/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Smoke/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Smoke/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u989C\\u8272\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u521D\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u53D1\\u5C04\\u901F\\u7387\\uFF08\\u4E2A/\\u79D2\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\u5C3A\\u5BF8\\uFF08\\u50CF\\u7D20\\uFF09\\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL1Ntb2tlL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9TbW9rZS9fZWxlbWVudC5qcz82MmZkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwibGF0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7otbflp4vpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFydF9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbjogMDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uT5p2f6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5kX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/liJ3pgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cIm1pbmltdW1TcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5Yid6YCf5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJtYXhpbXVtU3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlsI/lrZjlnKjml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjAuMDFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwibWluaW11bVBhcnRpY2xlTGlmZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyA5aSn5a2Y5Zyo5pe26Ze0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwLjAxXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cIm1heGltdW1QYXJ0aWNsZUxpZmVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7otbflp4vmr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzdGFydFNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5PmnZ/mr5Tkvos8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJlbmRTY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuWPkeWwhOmAn+eOh++8iOS4qi/np5LvvIk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImVtaXNzaW9uUmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5bC65a+477yI5YOP57Sg77yJPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDBcIiBtaW49XCIwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJwYXJ0aWNsZVNpemVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNEdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Smoke/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Smoke/eventBinding.js": -/*!************************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Smoke/eventBinding.js ***! - \************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' || e.target.type == 'range') {\n value = Number(value);\n }\n that[m.value] = value;\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that.Dialog[m.value] === 'function') {\n that.Dialog[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL1Ntb2tlL2V2ZW50QmluZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9QYXJ0aWNsZUVmZmVjdHMvU21va2UvZXZlbnRCaW5kaW5nLmpzPzFjOTQiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgZXZlbnRCaW5kaW5nIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgfVxyXG4gIHN0YXRpYyBldmVudCA9IHt9XHJcblxyXG4gIGdldEV2ZW50KG5hbWUpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV1cclxuICB9XHJcblxyXG4gIGdldEV2ZW50QWxsKCkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFxyXG4gIH1cclxuXHJcbiAgc2V0RXZlbnQobmFtZSwgZXZlbnQpIHtcclxuICAgIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXSA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBvbih0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWUgXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHsgdGhhdFttLnZhbHVlXSA9IGUudGFyZ2V0LmNoZWNrZWQgfSlcclxuICAgICAgICAgICAgICBlbGVtZW50c1tpXS5jaGVja2VkID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZihlLnRhcmdldC50eXBlID09ICdudW1iZXInIHx8IGUudGFyZ2V0LnR5cGUgPT0gJ3JhbmdlJykge1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYoZWxlbWVudHNbaV0ubm9kZU5hbWU9PSdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFttLnZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXQuRGlhbG9nW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5EaWFsb2dbbS52YWx1ZV0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yKGxldCBuPTA7bjxyZW1vdmVOYW1lLmxlbmd0aDtuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGxldCB2ZW50VHlwZSA9ICdpbnB1dCdcclxuICAgICAgICBpZiAoZWxlbWVudHNbaV0udGFnTmFtZSAhPSAnSU5QVVQnIHx8IGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgdmVudFR5cGUgPSAnY2hhbmdlJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKHZlbnRUeXBlLCAoZSkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBFdmVudC5sZW5ndGg7IHQrKykge1xyXG4gICAgICAgICAgICBFdmVudFt0XShlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBFdmVudEJpbmRpbmcgPSBuZXcgZXZlbnRCaW5kaW5nKCk7XHJcbmV4cG9ydCBkZWZhdWx0IEV2ZW50QmluZGluZzsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1Q0E7QUFBQTtBQUFBO0FBNENBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuRUE7QUFBQTtBQUtBO0FBK0RBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Smoke/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Smoke/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Smoke/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/ParticleEffects/Smoke/_element.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/ParticleEffects/Smoke/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * 烟雾特效\r\n */\n\n\n\n\n\n\n\n\n\nvar Smoke = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 烟雾特效\r\n * @param sdk\r\n * @param options {object} 粒子属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 贴图地址\r\n * @param options.startColor=\"#00000000\" {string} 起始颜色\r\n * @param options.endColor=\"#0000001a\" {string} 结束颜色\r\n * @param options.startScale=0.1 {number} 初始比例\r\n * @param options.endScale=10 {number} 结束比例\r\n * @param options.minimumSpeed=10 {number} 最小初速度\r\n * @param options.maximumSpeed=15 {number} 最大初速度\r\n * @param options.minimumParticleLife=6 {number} 最小存在时间(秒)\r\n * @param options.maximumParticleLife=7 {number} 最大存在时间(秒)\r\n * @param options.emissionRate=28 {number} 发射速率(个/每秒)\r\n * @param options.particleSize=2{number} 粒子尺大小\r\n * @param options.lng 经度\r\n * @param options.lat 纬度\r\n * @param options.alt 高度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function Smoke(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Smoke);\n _this2 = _callSuper(this, Smoke, [sdk, options]);\n _this2.options.url = options.url;\n _this2.options.startColor = options.startColor || \"#00000000\";\n _this2.options.endColor = options.endColor || \"#0000001a\";\n _this2.options.startScale = options.startScale || 0.1;\n _this2.options.endScale = options.endScale || 10;\n _this2.options.minimumParticleLife = options.minimumParticleLife || 6;\n _this2.options.maximumParticleLife = options.maximumParticleLife || 7;\n _this2.options.minimumSpeed = options.minimumSpeed || 10;\n _this2.options.maximumSpeed = options.maximumSpeed || 15;\n _this2.options.emissionRate = options.emissionRate || 28;\n _this2.options.particleSize = options.particleSize || 2;\n _this2.options.show = options.show === false ? false : true;\n _this2._elms = {};\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2._element = null;\n _this2.particleSystem;\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.add();\n _this2.operate = {};\n _this2.previous = {\n positions: {\n lng: _this2.options.lng,\n lat: _this2.options.lat,\n alt: _this2.options.alt\n }\n };\n _this2.Dialog = _Dialog;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Smoke, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Smoke, [{\n key: \"type\",\n get: function get() {\n return \"ParticleEffects\";\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = this.options.show;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = this.options.show;\n }\n } else {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = false;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"add\",\n value: function () {\n var _add = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this3 = this;\n var scene, cartographic, position, matrix, cameraHeight;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n this.originalOptions = this.deepCopyObj(this.options);\n scene = this.sdk.viewer.scene;\n cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(1, 1, 1), matrix);\n cameraHeight = this.sdk.viewer.camera.positionCartographic.height;\n this.particleSystem = scene.primitives.add(new Cesium.ParticleSystem({\n show: cameraHeight >= 10000000 ? false : this.options.show,\n image: this.options.url || this.getSourceRootPath() + '/img/particlesystem/smoke.png',\n startColor: Cesium.Color.fromCssColorString(this.options.startColor),\n //粒子出生时的颜色\n endColor: Cesium.Color.fromCssColorString(this.options.endColor),\n //当粒子死亡时的颜色\n startScale: this.options.startScale,\n //粒子出生时的比例\n endScale: this.options.endScale,\n //粒子在死亡时的比例\n minimumParticleLife: this.options.minimumParticleLife,\n //设置粒子寿命的可能持续时间的最小界限(以秒为单位)\n maximumParticleLife: this.options.maximumParticleLife,\n //设置粒子寿命的可能持续时间的最大界限(以秒为单位)\n minimumSpeed: this.options.minimumSpeed,\n //设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。\n maximumSpeed: this.options.maximumSpeed,\n //设置以米/秒为单位的最大界限,超过该最大界限,随机选择粒子的实际速度。\n // imageSize: new Cesium.Cartesian2( //如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小\n // this.options.imageSize || 10,\n // this.options.imageSize || 10\n // ),\n minimumImageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize),\n maximumImageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize),\n sizeInMeters: true,\n emissionRate: this.options.emissionRate,\n //每秒发射的粒子数。\n lifetime: 0.5,\n //多长时间的粒子系统将以秒为单位发射粒子\n loop: true,\n emitter: new Cesium.CircleEmitter(0.2),\n performance: false,\n modelMatrix: matrix,\n updateCallback: function updateCallback(r) {\n r._billboard.id = _this3.options.id;\n }\n }));\n this.particleSystem.id = this.options.id;\n this.entity = this.particleSystem;\n // this.entity.modelMatrix = Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(100.0, 20.0)), new Cesium.Cartesian3(0.0, 0.0, 10000.0), new Cesium.Matrix4())\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n // this.editObj = new EditParticle(this.sdk, this.entity)\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"setSplitDirection\"])(0, this.options.id);\n }\n\n // 监听相机高度\n this.sdk.viewer.camera.changed.addEventListener(function () {\n if (_this3.entity && _this3.show) {\n var _cameraHeight = _this3.sdk.viewer.camera.positionCartographic.height;\n if (_cameraHeight >= 10000000) {\n _this3.entity.show = false;\n } else {\n _this3.entity.show = true;\n }\n }\n });\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function add() {\n return _add.apply(this, arguments);\n }\n return add;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 26;\n break;\n case 25:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.alt + 500),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"startColor\",\n get: function get() {\n return this.options.startColor;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.startColor = v;\n this.particleSystem.startColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.startColor) {\n this._elms.startColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.startColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.startColor[i] = picker;\n });\n }\n }\n }, {\n key: \"endColor\",\n get: function get() {\n return this.options.endColor;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.endColor = v;\n this.particleSystem.endColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.endColor) {\n this._elms.endColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this5.endColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.endColor[i] = picker;\n });\n }\n }\n }, {\n key: \"minimumSpeed\",\n get: function get() {\n return this.options.minimumSpeed;\n },\n set: function set(v) {\n this.options.minimumSpeed = v;\n this.particleSystem.minimumSpeed = v;\n this._elms.minimumSpeed && this._elms.minimumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"maximumSpeed\",\n get: function get() {\n return this.options.maximumSpeed;\n },\n set: function set(v) {\n this.options.maximumSpeed = v;\n this.particleSystem.maximumSpeed = v;\n this._elms.maximumSpeed && this._elms.maximumSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"minimumParticleLife\",\n get: function get() {\n return this.options.minimumParticleLife;\n },\n set: function set(v) {\n this.options.minimumParticleLife = v;\n this.particleSystem.minimumParticleLife = v;\n this._elms.minimumParticleLife && this._elms.minimumParticleLife.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"maximumParticleLife\",\n get: function get() {\n return this.options.maximumParticleLife;\n },\n set: function set(v) {\n this.options.maximumParticleLife = v;\n this.particleSystem.maximumParticleLife = v;\n this._elms.maximumParticleLife && this._elms.maximumParticleLife.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"startScale\",\n get: function get() {\n return this.options.startScale;\n },\n set: function set(v) {\n this.options.startScale = v;\n this.particleSystem.startScale = v;\n this._elms.startScale && this._elms.startScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"endScale\",\n get: function get() {\n return this.options.endScale;\n },\n set: function set(v) {\n this.options.endScale = v;\n this.particleSystem.endScale = v;\n this._elms.endScale && this._elms.endScale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"emissionRate\",\n get: function get() {\n return this.options.emissionRate;\n },\n set: function set(v) {\n this.options.emissionRate = v;\n this.particleSystem.emissionRate = v;\n this._elms.emissionRate && this._elms.emissionRate.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"particleSize\",\n get: function get() {\n return this.options.particleSize;\n },\n set: function set(v) {\n this.options.particleSize = v;\n this.particleSystem.minimumImageSize = new Cesium.Cartesian2(v, v);\n this.particleSystem.maximumImageSize = new Cesium.Cartesian2(v, v);\n this._elms.particleSize && this._elms.particleSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n this.options.lng = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n this.options.lat = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.alt;\n },\n set: function set(v) {\n this.options.alt = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var _this6 = this;\n var state,\n _this,\n contentElm,\n startColorPicker,\n endColorPicker,\n all_elm,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n state = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n return _context3.abrupt(\"return\");\n case 8:\n this._DialogObject = _context3.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' particle-effects';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n startColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"start_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.startColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.startColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n endColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"end_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.endColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.endColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"].element;\n this._elms.startColor = [startColorPicker];\n this._elms.endColor = [endColorPicker];\n _context3.next = 22;\n break;\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.name = this.originalOptions.name;\n this.startColor = this.originalOptions.startColor;\n this.endColor = this.originalOptions.endColor;\n this.minimumSpeed = this.originalOptions.minimumSpeed;\n this.maximumSpeed = this.originalOptions.maximumSpeed;\n this.minimumParticleLife = this.originalOptions.minimumParticleLife;\n this.maximumParticleLife = this.originalOptions.maximumParticleLife;\n this.startScale = this.originalOptions.startScale;\n this.endScale = this.originalOptions.endScale;\n this.emissionRate = this.originalOptions.emissionRate;\n this.particleSize = this.originalOptions.particleSize;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.alt = this.originalOptions.alt;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var sdkD;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _superPropGet(Smoke, \"remove\", this, 3)([]);\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!(this.sdk !== sdkD)) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this7 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_15__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.picking = false;\n this.previous = {\n positions: _objectSpread({}, this.entity.position)\n };\n var movPos;\n this.event.mouse_move(function (movement, cartesian) {\n movPos = movement.endPosition;\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(_this7.options.lng, _this7.options.lat, _this7.options.alt);\n var position = _this7.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n _this7.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n _this7._elms.lng && _this7._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n _this7._elms.lat && _this7._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n _this7._elms.alt && _this7._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n if (!movPos || movPos.x !== movement.position.x || movPos.y !== movement.position.y - 2) {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n }\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n if (_this7._positionEditingCallback) {\n _this7._positionEditingCallback();\n _this7._positionEditingCallback = null;\n }\n _this7.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this7.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n } else {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n }\n });\n });\n } else {\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.options.lng = this.entity.position.lng;\n this.options.lat = this.entity.position.lat;\n this.options.alt = this.entity.position.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.lng, this.options.lat, this.options.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this7.options.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this7.options.alt;\n });\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Smoke);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL1Ntb2tlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9TbW9rZS9pbmRleC5qcz80N2IwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDng5/pm77nibnmlYhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sLCBjc3MgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4vZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCB7IHN5bmNEYXRhLCBnZXRTZGsgYXMgZ2V0MkRTZGsgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgU21va2UgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAZGVzY3JpcHRpb24g54Of6Zu+54m55pWIXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOeykuWtkOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOagh+azqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmmL7npLov6ZqQ6JePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy51cmwge3N0cmluZ30g6LS05Zu+5Zyw5Z2AXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3RhcnRDb2xvcj1cIiMwMDAwMDAwMFwiIHtzdHJpbmd9IOi1t+Wni+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVuZENvbG9yPVwiIzAwMDAwMDFhXCIge3N0cmluZ30g57uT5p2f6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3RhcnRTY2FsZT0wLjEge251bWJlcn0g5Yid5aeL5q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kU2NhbGU9MTAge251bWJlcn0g57uT5p2f5q+U5L6LXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubWluaW11bVNwZWVkPTEwIHtudW1iZXJ9IOacgOWwj+WInemAn+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1heGltdW1TcGVlZD0xNSB7bnVtYmVyfSDmnIDlpKfliJ3pgJ/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlPTYge251bWJlcn0g5pyA5bCP5a2Y5Zyo5pe26Ze0KOenkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlPTcge251bWJlcn0g5pyA5aSn5a2Y5Zyo5pe26Ze0KOenkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5lbWlzc2lvblJhdGU9Mjgge251bWJlcn0g5Y+R5bCE6YCf546HKOS4qi/mr4/np5IpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucGFydGljbGVTaXplPTJ7bnVtYmVyfSDnspLlrZDlsLrlpKflsI9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sbmcg57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGF0IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmFsdCDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucywgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLnVybCA9IG9wdGlvbnMudXJsXHJcbiAgICB0aGlzLm9wdGlvbnMuc3RhcnRDb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvciB8fCBcIiMwMDAwMDAwMFwiXHJcbiAgICB0aGlzLm9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFwiIzAwMDAwMDFhXCJcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydFNjYWxlID0gb3B0aW9ucy5zdGFydFNjYWxlIHx8IDAuMVxyXG4gICAgdGhpcy5vcHRpb25zLmVuZFNjYWxlID0gb3B0aW9ucy5lbmRTY2FsZSB8fCAxMFxyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSBvcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgfHwgNlxyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgPSBvcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgfHwgN1xyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1TcGVlZCA9IG9wdGlvbnMubWluaW11bVNwZWVkIHx8IDEwXHJcbiAgICB0aGlzLm9wdGlvbnMubWF4aW11bVNwZWVkID0gb3B0aW9ucy5tYXhpbXVtU3BlZWQgfHwgMTVcclxuICAgIHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUgPSBvcHRpb25zLmVtaXNzaW9uUmF0ZSB8fCAyOFxyXG4gICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSA9IG9wdGlvbnMucGFydGljbGVTaXplIHx8IDJcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gb3B0aW9ucy5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5wb3NpdGlvbkNhbGxCYWNrID0gbnVsbFxyXG4gICAgdGhpcy5yb3RhdGlvbkNhbGxiYWNrID0gbnVsbFxyXG4gICAgdGhpcy5vbkNsaWNrQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB0aGlzLl9lbGVtZW50ID0gbnVsbFxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIHRoaXMuYWRkKClcclxuICAgIHRoaXMub3BlcmF0ZSA9IHt9XHJcbiAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICBwb3NpdGlvbnM6IHtcclxuICAgICAgICBsbmc6IHRoaXMub3B0aW9ucy5sbmcsXHJcbiAgICAgICAgbGF0OiB0aGlzLm9wdGlvbnMubGF0LFxyXG4gICAgICAgIGFsdDogdGhpcy5vcHRpb25zLmFsdCxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiBcIlBhcnRpY2xlRWZmZWN0c1wiXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICBsZXQgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgICBpZiAoIXRoaXMuaXNTaG93VmlldyB8fCAhc2RrRCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnRpdHkgJiYgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAxMDAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWwgJiYgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cpIHtcclxuICAgICAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodCA8IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbCAmJiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdykge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bikge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuLmNoZWNrZWQgPSB2XHJcbiAgICAgIH1cclxuICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICB0aGlzLmlzU2hvd1ZpZXcgPSBmYWxzZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIuWPguaVsOW/hemhu+S4umJvb2xlYW5cIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZCgpIHtcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICBjb25zdCBzY2VuZSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZTtcclxuICAgIHZhciBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjYXJ0b2dyYXBoaWMpO1xyXG4gICAgbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKVxyXG4gICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKG1hdHJpeCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKDEsIDEsIDEpLCBtYXRyaXgpXHJcbiAgICBsZXQgY2FtZXJhSGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtID0gc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uUGFydGljbGVTeXN0ZW0oe1xyXG4gICAgICAgIHNob3c6IChjYW1lcmFIZWlnaHQgPj0gMTAwMDAwMDApID8gZmFsc2UgOiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgICBpbWFnZTogdGhpcy5vcHRpb25zLnVybCB8fCAodGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcGFydGljbGVzeXN0ZW0vc21va2UucG5nJyksXHJcbiAgICAgICAgc3RhcnRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuc3RhcnRDb2xvciksIC8v57KS5a2Q5Ye655Sf5pe255qE6aKc6ImyXHJcbiAgICAgICAgZW5kQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmVuZENvbG9yKSwgLy/lvZPnspLlrZDmrbvkuqHml7bnmoTpopzoibJcclxuICAgICAgICBzdGFydFNjYWxlOiB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZSwgLy/nspLlrZDlh7rnlJ/ml7bnmoTmr5TkvotcclxuICAgICAgICBlbmRTY2FsZTogdGhpcy5vcHRpb25zLmVuZFNjYWxlLCAvL+eykuWtkOWcqOatu+S6oeaXtueahOavlOS+i1xyXG4gICAgICAgIG1pbmltdW1QYXJ0aWNsZUxpZmU6IHRoaXMub3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlLCAgLy/orr7nva7nspLlrZDlr7/lkb3nmoTlj6/og73mjIHnu63ml7bpl7TnmoTmnIDlsI/nlYzpmZDvvIjku6Xnp5LkuLrljZXkvY3vvIlcclxuICAgICAgICBtYXhpbXVtUGFydGljbGVMaWZlOiB0aGlzLm9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZSwgLy/orr7nva7nspLlrZDlr7/lkb3nmoTlj6/og73mjIHnu63ml7bpl7TnmoTmnIDlpKfnlYzpmZDvvIjku6Xnp5LkuLrljZXkvY3vvIlcclxuICAgICAgICBtaW5pbXVtU3BlZWQ6IHRoaXMub3B0aW9ucy5taW5pbXVtU3BlZWQsLy/orr7nva7ku6XnsbMv56eS5Li65Y2V5L2N55qE5pyA5bCP55WM6ZmQ77yM6LaF6L+H6K+l5pyA5bCP55WM6ZmQ77yM6ZqP5py66YCJ5oup57KS5a2Q55qE5a6e6ZmF6YCf5bqm44CCXHJcbiAgICAgICAgbWF4aW11bVNwZWVkOiB0aGlzLm9wdGlvbnMubWF4aW11bVNwZWVkLC8v6K6+572u5Lul57GzL+enkuS4uuWNleS9jeeahOacgOWkp+eVjOmZkO+8jOi2hei/h+ivpeacgOWkp+eVjOmZkO+8jOmaj+acuumAieaLqeeykuWtkOeahOWunumZhemAn+W6puOAglxyXG4gICAgICAgIC8vIGltYWdlU2l6ZTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKCAgLy/lpoLmnpzorr7nva7or6XlsZ7mgKfvvIzlsIbkvJropobnm5YgbWluaW11bUltYWdlU2l6ZeWSjG1heGltdW1JbWFnZVNpemXlsZ7mgKfvvIzku6Xlg4/ntKDkuLrljZXkvY3nvKnmlL5pbWFnZeeahOWkp+Wwj1xyXG4gICAgICAgIC8vICAgdGhpcy5vcHRpb25zLmltYWdlU2l6ZSB8fCAxMCxcclxuICAgICAgICAvLyAgIHRoaXMub3B0aW9ucy5pbWFnZVNpemUgfHwgMTBcclxuICAgICAgICAvLyApLFxyXG4gICAgICAgIG1pbmltdW1JbWFnZVNpemU6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemUsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtYXhpbXVtSW1hZ2VTaXplOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICksXHJcbiAgICAgICAgc2l6ZUluTWV0ZXJzOiB0cnVlLFxyXG4gICAgICAgIGVtaXNzaW9uUmF0ZTogdGhpcy5vcHRpb25zLmVtaXNzaW9uUmF0ZSwgLy/mr4/np5Llj5HlsITnmoTnspLlrZDmlbDjgIJcclxuICAgICAgICBsaWZldGltZTogMC41LCAgLy/lpJrplb/ml7bpl7TnmoTnspLlrZDns7vnu5/lsIbku6Xnp5LkuLrljZXkvY3lj5HlsITnspLlrZBcclxuICAgICAgICBsb29wOiB0cnVlLFxyXG4gICAgICAgIGVtaXR0ZXI6IG5ldyBDZXNpdW0uQ2lyY2xlRW1pdHRlcigwLjIpLFxyXG4gICAgICAgIHBlcmZvcm1hbmNlOiBmYWxzZSxcclxuICAgICAgICBtb2RlbE1hdHJpeDogbWF0cml4LFxyXG4gICAgICAgIHVwZGF0ZUNhbGxiYWNrOiAocikgPT4ge1xyXG4gICAgICAgICAgci5fYmlsbGJvYXJkLmlkID0gdGhpcy5vcHRpb25zLmlkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmlkID0gdGhpcy5vcHRpb25zLmlkXHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMucGFydGljbGVTeXN0ZW1cclxuICAgIC8vIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVRyYW5zbGF0aW9uKENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKDEwMC4wLCAyMC4wKSksIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLjAsIDAuMCwgMTAwMDAuMCksIG5ldyBDZXNpdW0uTWF0cml4NCgpKVxyXG4gICAgdGhpcy5lbnRpdHkucG9zaXRpb24gPSB7IGxuZzogdGhpcy5vcHRpb25zLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGF0LCBhbHQ6IHRoaXMub3B0aW9ucy5hbHQgfVxyXG4gICAgLy8gdGhpcy5lZGl0T2JqID0gbmV3IEVkaXRQYXJ0aWNsZSh0aGlzLnNkaywgdGhpcy5lbnRpdHkpXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcblxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8g55uR5ZCs55u45py66auY5bqmXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcigoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLnNob3cpIHtcclxuICAgICAgICBsZXQgY2FtZXJhSGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGNhbWVyYUhlaWdodCA+PSAxMDAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmxuZywgdGhpcy5vcHRpb25zLmxhdCwgdGhpcy5vcHRpb25zLmFsdCArIDUwMCksXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnN0YXJ0Q29sb3JcclxuICB9XHJcblxyXG4gIHNldCBzdGFydENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydENvbG9yID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5zdGFydENvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuc3RhcnRDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLnN0YXJ0Q29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuc3RhcnRDb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lbmRDb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGVuZENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRDb2xvciA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0uZW5kQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5lbmRDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmVuZENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgcGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmRDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuZW5kQ29sb3JbaV0gPSBwaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtaW5pbXVtU3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1pbmltdW1TcGVlZFxyXG4gIH1cclxuXHJcbiAgc2V0IG1pbmltdW1TcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubWluaW11bVNwZWVkID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5taW5pbXVtU3BlZWQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1TcGVlZCAmJiB0aGlzLl9lbG1zLm1pbmltdW1TcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1heGltdW1TcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4aW11bVNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgbWF4aW11bVNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtU3BlZWQgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1TcGVlZCA9IHZcclxuICAgIHRoaXMuX2VsbXMubWF4aW11bVNwZWVkICYmIHRoaXMuX2VsbXMubWF4aW11bVNwZWVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWluaW11bVBhcnRpY2xlTGlmZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZVxyXG4gIH1cclxuXHJcbiAgc2V0IG1pbmltdW1QYXJ0aWNsZUxpZmUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1pbmltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5taW5pbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbWF4aW11bVBhcnRpY2xlTGlmZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZVxyXG4gIH1cclxuXHJcbiAgc2V0IG1heGltdW1QYXJ0aWNsZUxpZmUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1QYXJ0aWNsZUxpZmUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm1heGltdW1QYXJ0aWNsZUxpZmUgJiYgdGhpcy5fZWxtcy5tYXhpbXVtUGFydGljbGVMaWZlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRTY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZVxyXG4gIH1cclxuXHJcbiAgc2V0IHN0YXJ0U2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0U2NhbGUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLnN0YXJ0U2NhbGUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLnN0YXJ0U2NhbGUgJiYgdGhpcy5fZWxtcy5zdGFydFNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZW5kU2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVuZFNjYWxlXHJcbiAgfVxyXG5cclxuICBzZXQgZW5kU2NhbGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmVuZFNjYWxlID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbmRTY2FsZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuZW5kU2NhbGUgJiYgdGhpcy5fZWxtcy5lbmRTY2FsZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVtaXNzaW9uUmF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlXHJcbiAgfVxyXG5cclxuICBzZXQgZW1pc3Npb25SYXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmVtaXNzaW9uUmF0ZSA9IHZcclxuICAgIHRoaXMuX2VsbXMuZW1pc3Npb25SYXRlICYmIHRoaXMuX2VsbXMuZW1pc3Npb25SYXRlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcGFydGljbGVTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICB9XHJcblxyXG4gIHNldCBwYXJ0aWNsZVNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSA9IHZcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0ubWluaW11bUltYWdlU2l6ZSA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMih2LCB2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5tYXhpbXVtSW1hZ2VTaXplID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKHYsIHYpXHJcbiAgICB0aGlzLl9lbG1zLnBhcnRpY2xlU2l6ZSAmJiB0aGlzLl9lbG1zLnBhcnRpY2xlU2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG5nXHJcbiAgfVxyXG5cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYXQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgfVxyXG5cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbHQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICAvLyBsZXQgZWxtcyA9IHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1iYXNlLWRpYWxvZycpXHJcbiAgICAvLyBmb3IgKGxldCBpID0gZWxtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChlbG1zW2ldKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcmlnaW5hbE9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+eDn+mbvuWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgICAgICAvLyAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgcGFydGljbGUtZWZmZWN0cydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IHN0YXJ0Q29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInN0YXJ0X2NvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLnN0YXJ0Q29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdGFydENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgZW5kQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImVuZF9jb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5lbmRDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5kQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSBFdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLnN0YXJ0Q29sb3IgPSBbc3RhcnRDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5lbmRDb2xvciA9IFtlbmRDb2xvclBpY2tlcl1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmICh0aGlzLl9lbGVtZW50X3N0eWxlKSB7XHJcbiAgICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50X3N0eWxlKVxyXG4gICAgICAvLyAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLnN0YXJ0Q29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zdGFydENvbG9yXHJcbiAgICB0aGlzLmVuZENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZW5kQ29sb3JcclxuICAgIHRoaXMubWluaW11bVNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWluaW11bVNwZWVkXHJcbiAgICB0aGlzLm1heGltdW1TcGVlZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1heGltdW1TcGVlZFxyXG4gICAgdGhpcy5taW5pbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5tYXhpbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5zdGFydFNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3RhcnRTY2FsZVxyXG4gICAgdGhpcy5lbmRTY2FsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVuZFNjYWxlXHJcbiAgICB0aGlzLmVtaXNzaW9uUmF0ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVtaXNzaW9uUmF0ZVxyXG4gICAgdGhpcy5wYXJ0aWNsZVNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICAgIHRoaXMubG5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubG5nXHJcbiAgICB0aGlzLmxhdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhdFxyXG4gICAgdGhpcy5hbHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hbHRcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICBzdXBlci5yZW1vdmUoKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KTtcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBsZXQgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgaWYodGhpcy5zZGsgIT09IHNka0QpIHtcclxuICAgICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICpcclxuICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgKlxyXG4gICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICBwb3NpdGlvbnM6IHsgLi4udGhpcy5lbnRpdHkucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBtb3ZQb3NcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbW92UG9zID0gbW92ZW1lbnQuZW5kUG9zaXRpb25cclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0KTtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpYyk7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmICghbW92UG9zIHx8IG1vdlBvcy54ICE9PSBtb3ZlbWVudC5wb3NpdGlvbi54IHx8IG1vdlBvcy55ICE9PSBtb3ZlbWVudC5wb3NpdGlvbi55IC0gMikge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogeyAuLi50aGlzLmVudGl0eS5wb3NpdGlvbiB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxuZyA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gdGhpcy5lbnRpdHkucG9zaXRpb24ubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMuZW50aXR5LnBvc2l0aW9uIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sbmdcclxuICAgICAgdGhpcy5vcHRpb25zLmxhdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxhdFxyXG4gICAgICB0aGlzLm9wdGlvbnMuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5hbHQpO1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpYyk7XHJcbiAgICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICAgIHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fZWxtcy5hbHQgJiYgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuICBjbG9zZVBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTbW9rZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcEVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFoRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQTtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUF0R0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBMElBO0FBQ0E7QUFBQTtBQXJJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Smoke/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Spout/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Spout/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u989C\\u8272\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n \\u53D1\\u5C04\\u901F\\u7387\\uFF08\\u4E2A/\\u79D2\\uFF09\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6700\\u5C0F\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n \\u6700\\u5927\\u5B58\\u5728\\u65F6\\u95F4\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u8D77\\u59CB\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n \\u7ED3\\u675F\\u6BD4\\u4F8B\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u671D\\u5411\\n \\n
\\n
\\n
\\n
\\n \\u4FEF\\u4EF0\\u89D2\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u5C3A\\u5BF8\\uFF08\\u50CF\\u7D20\\uFF09\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL1Nwb3V0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9TcG91dC9fZWxlbWVudC5qcz9lZGZhIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAxNzVweDtcIiBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwibG5nXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57qs5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTBcIiBtYXg9XCI5MFwiIEBtb2RlbD1cImxhdFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCIgQG1vZGVsPVwiYWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6LW35aeL6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhcnRfY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW46IDA7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue7k+adn+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVuZF9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+6YCf5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzMFwiIG1pbj1cIjBcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwic3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuWPkeWwhOmAn+eOh++8iOS4qi/np5LvvIk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImVtaXNzaW9uUmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuacgOWwj+WtmOWcqOaXtumXtDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTAwXCIgbWluPVwiMC4wMVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJtaW5pbXVtUGFydGljbGVMaWZlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7mnIDlpKflrZjlnKjml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjAuMDFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwibWF4aW11bVBhcnRpY2xlTGlmZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPui1t+Wni+avlOS+izwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cInN0YXJ0U2NhbGVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPue7k+adn+avlOS+izwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMVwiIEBtb2RlbD1cImVuZFNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5pyd5ZCRPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzNjBcIiBtaW49XCIwLjFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwiaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+5L+v5Luw6KeS5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIzNjBcIiBtaW49XCIwLjFcIiBzdGVwPVwiMC4xXCIgQG1vZGVsPVwicGl0Y2hcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7lsLrlr7jvvIjlg4/ntKDvvIk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cInBhcnRpY2xlU2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBc0hBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Spout/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/ParticleEffects/Spout/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/ParticleEffects/Spout/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/ParticleEffects/Spout/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * 水柱特效\r\n */\n\n\n\n\n\n\n\n\nvar Spout = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 水柱\r\n * @param sdk \r\n * @param options {object} 粒子属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.url {string} 贴图地址\r\n * @param options.startColor=\"#c1f7f2\" {string} 起始颜色\r\n * @param options.endColor=\"#ffffff00\" {string} 结束颜色\r\n * @param options.startScale=0.2 {number} 初始比例\r\n * @param options.endScale=2 {number} 结束比例\r\n * @param options.speed {number} 速度\r\n * @param options.minimumParticleLife=12 {number} 最小存在时间(秒)\r\n * @param options.maximumParticleLife=12 {number} 最大存在时间(秒)\r\n * @param options.emissionRate=100 {number} 发射速率(个/每秒)\r\n * @param options.particleSize=1 {number} 粒子尺大小\r\n * @param options.heading 航向角\r\n * @param options.pitch 俯仰角\r\n * @param options.start {object} 开始位置\r\n * @param options.start.lng 经度\r\n * @param options.start.lat 纬度\r\n * @param options.start.alt 高度\r\n * @param options.end {object} 结束位置\r\n * @param options.end.lng 经度\r\n * @param options.end.lat 纬度\r\n * @param options.end.alt 高度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function Spout(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Spout);\n _this2 = _callSuper(this, Spout, [sdk, options]);\n _this2.options.url = options.url;\n _this2.options.startColor = options.startColor || \"#c1f7f2\";\n _this2.options.endColor = options.endColor || \"#ffffff00\";\n _this2.options.startScale = options.startScale || 0.2;\n _this2.options.endScale = options.endScale || 2;\n _this2.options.minimumParticleLife = options.minimumParticleLife || 12;\n _this2.options.maximumParticleLife = options.maximumParticleLife || 12;\n _this2.options.emissionRate = options.emissionRate || 100;\n _this2.options.particleSize = options.particleSize || 1;\n _this2.options.show = options.show === false ? false : true;\n _this2._elms = {};\n _this2.positionCallBack = null;\n _this2.rotationCallback = null;\n _this2.onClickCallback = null;\n _this2._DialogObject = null;\n _this2._element = null;\n _this2.particleSystem;\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.add();\n _this2.operate = {};\n _this2.previous = {\n positions: {\n lng: _this2.options.start.lng,\n lat: _this2.options.start.lat,\n alt: _this2.options.start.alt\n }\n };\n _this2.Dialog = _Dialog;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this2.sdk);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(Spout, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Spout, [{\n key: \"type\",\n get: function get() {\n return \"ParticleEffects\";\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = this.options.show;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = this.options.show;\n }\n } else {\n if (this.entity && this.sdk.viewer.camera.positionCartographic.height < 10000000) {\n this.entity.show = false;\n }\n if (this.options.label && this.options.label.show) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"add\",\n value: function () {\n var _add = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee() {\n var _this3 = this;\n var _this, scene, cartographic, position, matrix, gravityVector, gravity, start, end, y0, x0, tanA, a, t, speed, cameraHeight, applyGravity, computeEmitterModelMatrix, getHeading;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n getHeading = function _getHeading(fromPosition, toPosition) {\n var finalPosition = new Cesium.Cartesian3();\n var matrix4 = Cesium.Transforms.eastNorthUpToFixedFrame(fromPosition);\n Cesium.Matrix4.inverse(matrix4, matrix4);\n Cesium.Matrix4.multiplyByPoint(matrix4, toPosition, finalPosition);\n Cesium.Cartesian3.normalize(finalPosition, finalPosition);\n return Cesium.Math.toDegrees(Math.atan2(finalPosition.x, finalPosition.y));\n };\n computeEmitterModelMatrix = function _computeEmitterModelM() {\n var hpr = Cesium.HeadingPitchRoll.fromDegrees(_this.options.heading + 90, _this.options.pitch, 0); //!!!发射粒子的方向\n var trs = new Cesium.TranslationRotationScale();\n trs.translation = Cesium.Cartesian3.fromElements(0, 0, 1);\n trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr);\n var Matrix4 = Cesium.Matrix4.fromTranslationRotationScale(trs);\n return Matrix4;\n };\n applyGravity = function _applyGravity(p, dt) {\n p._billboard.id = _this.options.id;\n var position = p.position;\n Cesium.Cartesian3.normalize(position, gravityVector);\n // Cesium.Cartesian3.multiplyByScalar(gravityVector, -4.8 * dt, gravityVector);\n Cesium.Cartesian3.multiplyByScalar(gravityVector, gravity * dt, gravityVector);\n p.velocity = Cesium.Cartesian3.add(p.velocity, gravityVector, p.velocity);\n };\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n scene = this.sdk.viewer.scene;\n cartographic = Cesium.Cartographic.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(1, 1, 1), matrix);\n gravityVector = new Cesium.Cartesian3();\n gravity = -3.8; // 重力方向\n start = Cesium.Cartesian3.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n end = Cesium.Cartesian3.fromDegrees(this.options.end.lng, this.options.end.lat, this.options.end.alt);\n if (!this.options.heading && this.options.heading !== 0) {\n this.options.heading = getHeading(start, end);\n }\n y0 = this.options.end.alt - this.options.start.alt;\n x0 = Cesium.Cartesian3.distance(start, Cesium.Cartesian3.fromDegrees(this.options.end.lng, this.options.end.lat, this.options.start.alt));\n if (!y0) {\n tanA = 0;\n } else {\n tanA = 2 * y0 / x0;\n }\n a = Math.atan(tanA) * (180 / Math.PI);\n t = Math.sqrt(Math.abs(tanA) * x0 / -gravity);\n speed = -gravity * t / Math.abs(Math.cos(a));\n if (!this.options.pitch && this.options.pitch !== 0) {\n this.options.pitch = 90 - a;\n }\n if (!this.options.speed && this.options.speed !== 0) {\n this.options.speed = speed;\n }\n cameraHeight = this.sdk.viewer.camera.positionCartographic.height; // // 计算发射参数\n // function calculateLaunchParameters(height, distance, gravity) {\n // // 解决斜抛运动问题:y = h + x·tan(θ) - (g·x²)/(2·v₀²·cos²(θ))\n // // 当 y = 0, x = distance 时,求解 v₀ 和 θ\n // // 简化计算,使用最优角度 θ = 45°\n // const angle = Cesium.Math.toRadians(45);\n // // 计算初始速度\n // const velocity = Math.sqrt((gravity * distance * distance) /\n // (2 * (height + distance * Math.tan(angle)) * Math.pow(Math.cos(angle), 2)));\n // // 计算飞行时间\n // const vy0 = velocity * Math.sin(angle);\n // const flightTime = (vy0 + Math.sqrt(vy0 * vy0 + 2 * gravity * height)) / gravity;\n // // 计算最大高度\n // const maxHeight = height + (vy0 * vy0) / (2 * gravity);\n // return { velocity, angle, flightTime, maxHeight };\n // }\n // let params = {\n // launchHeight: this.options.start.alt, // 发射高度\n // targetDistance: Cesium.Cartesian3.distance(start, end), // 目标距离\n // gravity: 9.8, // 重力\n // }\n // // 计算初始速度和发射角度\n // const { velocity, angle, flightTime, maxHeight } = calculateLaunchParameters(\n // params.launchHeight,\n // params.targetDistance,\n // params.gravity\n // );\n // if (!this.options.speed && this.options.speed !== 0) {\n // this.options.speed = velocity*10\n // }\n this.particleSystem = scene.primitives.add(new Cesium.ParticleSystem({\n show: cameraHeight >= 10000000 ? false : this.options.show,\n image: this.options.url || this.getSourceRootPath() + '/img/particlesystem/smoke.png',\n // 从绿色到白色淡出\n startColor: Cesium.Color.fromCssColorString(this.options.startColor),\n //粒子出生时的颜色\n endColor: Cesium.Color.fromCssColorString(this.options.endColor),\n //当粒子死亡时的颜色\n startScale: this.options.startScale,\n //粒子出生时的比例\n endScale: this.options.endScale,\n //粒子在死亡时的比例\n minimumParticleLife: this.options.minimumParticleLife,\n //设置粒子寿命的可能持续时间的最小界限(以秒为单位)\n maximumParticleLife: this.options.maximumParticleLife,\n //设置粒子寿命的可能持续时间的最大界限(以秒为单位)\n minimumSpeed: this.options.speed,\n //设置以米/秒为单位的最小界限,超过该最小界限,随机选择粒子的实际速度。\n maximumSpeed: this.options.speed,\n //设置以米/秒为单位的最大界限,超过该最大界限,随机选择粒子的实际速度。\n // imageSize: new Cesium.Cartesian2( //如果设置该属性,将会覆盖 minimumImageSize和maximumImageSize属性,以像素为单位缩放image的大小\n // this.options.imageSize || 10,\n // this.options.imageSize || 10\n // ),\n lifetime: 0.5,\n imageSize: new Cesium.Cartesian2(this.options.particleSize, this.options.particleSize * 2),\n sizeInMeters: true,\n emissionRate: this.options.emissionRate,\n //每秒发射的粒子数。\n loop: true,\n emitter: new Cesium.CircleEmitter(0.2),\n modelMatrix: matrix,\n emitterModelMatrix: computeEmitterModelMatrix(),\n // 发射器转换为世界坐标\n\n // 增加重力场影像,\n updateCallback: applyGravity\n }));\n\n // 计算粒子发射器的位置姿态\n\n // 根据两个坐标点,获取Heading(朝向)\n\n // this.entity.modelMatrix\n this.particleSystem.id = this.options.id;\n this.entity = this.particleSystem;\n // this.entity.modelMatrix = Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(100.0, 20.0)), new Cesium.Cartesian3(0.0, 0.0, 10000.0), new Cesium.Matrix4())\n this.entity.position = {\n lng: this.options.start.lng,\n lat: this.options.start.lat,\n alt: this.options.start.alt\n };\n // this.editObj = new EditParticle(this.sdk, this.entity)\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"setSplitDirection\"])(0, this.options.id);\n }\n\n // 监听相机高度\n this.sdk.viewer.camera.changed.addEventListener(function () {\n if (_this3.entity && _this3.show) {\n var _cameraHeight = _this3.sdk.viewer.camera.positionCartographic.height;\n if (_cameraHeight >= 10000000) {\n _this3.entity.show = false;\n } else {\n _this3.entity.show = true;\n }\n }\n });\n\n // this.translation = new Cesium.Cartesian3();\n // this.rotation = new Cesium.Quaternion();\n // this.hpr = new Cesium.HeadingPitchRoll();\n // this.trs = new Cesium.TranslationRotationScale();\n // this.emitterModelMatrix = new Cesium.Matrix4();\n // this.hpr = Cesium.HeadingPitchRoll.fromDegrees(60, 0.0, 0.0, this.hpr);\n // this.trs.translation = Cesium.Cartesian3.fromElements(0, 0, 0, this.translation);\n // this.trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(this.hpr, this.rotation);\n // this.particleSystem.emitterModelMatrix = Cesium.Matrix4.fromTranslationRotationScale(this.trs, this.emitterModelMatrix);\n case 31:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function add() {\n return _add.apply(this, arguments);\n }\n return add;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_16__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.line && this.options.line.positions) {\n position = _objectSpread({}, this.options.line.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 16;\n break;\n }\n _context2.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context2.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 24;\n break;\n case 23:\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt + 500),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"startColor\",\n get: function get() {\n return this.options.startColor;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.startColor = v;\n this.particleSystem.startColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.startColor) {\n this._elms.startColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.startColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.startColor[i] = picker;\n });\n }\n }\n }, {\n key: \"endColor\",\n get: function get() {\n return this.options.endColor;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.endColor = v;\n this.particleSystem.endColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.endColor) {\n this._elms.endColor.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this5.endColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.endColor[i] = picker;\n });\n }\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = Number(v);\n this.particleSystem.minimumSpeed = Number(v);\n this.particleSystem.maximumSpeed = Number(v);\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"minimumParticleLife\",\n get: function get() {\n return this.options.minimumParticleLife;\n },\n set: function set(v) {\n this.options.minimumParticleLife = Number(v);\n this.particleSystem.minimumParticleLife = Number(v);\n this._elms.minimumParticleLife && this._elms.minimumParticleLife.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"maximumParticleLife\",\n get: function get() {\n return this.options.maximumParticleLife;\n },\n set: function set(v) {\n this.options.maximumParticleLife = Number(v);\n this.particleSystem.maximumParticleLife = Number(v);\n this._elms.maximumParticleLife && this._elms.maximumParticleLife.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"startScale\",\n get: function get() {\n return this.options.startScale;\n },\n set: function set(v) {\n this.options.startScale = Number(v);\n this.particleSystem.startScale = Number(v);\n this._elms.startScale && this._elms.startScale.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"endScale\",\n get: function get() {\n return this.options.endScale;\n },\n set: function set(v) {\n this.options.endScale = Number(v);\n this.particleSystem.endScale = Number(v);\n this._elms.endScale && this._elms.endScale.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"emissionRate\",\n get: function get() {\n return this.options.emissionRate;\n },\n set: function set(v) {\n this.options.emissionRate = Number(v);\n this.particleSystem.emissionRate = Number(v);\n this._elms.emissionRate && this._elms.emissionRate.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"particleSize\",\n get: function get() {\n return this.options.particleSize;\n },\n set: function set(v) {\n this.options.particleSize = Number(v);\n this.particleSystem.minimumImageSize = new Cesium.Cartesian2(Number(v), Number(v) * 2);\n this.particleSystem.maximumImageSize = new Cesium.Cartesian2(Number(v), Number(v) * 2);\n this._elms.particleSize && this._elms.particleSize.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.start.lng;\n },\n set: function set(v) {\n this.options.start.lng = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.start.lng,\n lat: this.options.start.lat,\n alt: this.options.start.alt\n };\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.start.lat;\n },\n set: function set(v) {\n this.options.start.lat = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.start.lng,\n lat: this.options.start.lat,\n alt: this.options.start.alt\n };\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.start.alt;\n },\n set: function set(v) {\n this.options.start.alt = v;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this.entity.position = {\n lng: this.options.start.lng,\n lat: this.options.start.lat,\n alt: this.options.start.alt\n };\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"heading\",\n get: function get() {\n return this.options.heading;\n },\n set: function set(v) {\n this.options.heading = Number(v);\n var hpr = Cesium.HeadingPitchRoll.fromDegrees(this.options.heading + 90, this.options.pitch, 0); //!!!发射粒子的方向\n var trs = new Cesium.TranslationRotationScale();\n trs.translation = Cesium.Cartesian3.fromElements(0, 0, 1);\n trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr);\n var Matrix4 = Cesium.Matrix4.fromTranslationRotationScale(trs);\n this.particleSystem.emitterModelMatrix = Matrix4;\n this._elms.heading && this._elms.heading.forEach(function (item) {\n item.value = Number(v);\n });\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return this.options.pitch;\n },\n set: function set(v) {\n this.options.pitch = Number(v);\n var hpr = Cesium.HeadingPitchRoll.fromDegrees(this.options.heading + 90, this.options.pitch, 0); //!!!发射粒子的方向\n var trs = new Cesium.TranslationRotationScale();\n trs.translation = Cesium.Cartesian3.fromElements(0, 0, 1);\n trs.rotation = Cesium.Quaternion.fromHeadingPitchRoll(hpr);\n var Matrix4 = Cesium.Matrix4.fromTranslationRotationScale(trs);\n this.particleSystem.emitterModelMatrix = Matrix4;\n this._elms.pitch && this._elms.pitch.forEach(function (item) {\n item.value = Number(v);\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var _this6 = this;\n var state,\n _this,\n contentElm,\n startColorPicker,\n endColorPicker,\n all_elm,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n state = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context3.next = 20;\n break;\n }\n _context3.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.originalOptions, {\n title: '喷射水柱属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this6.name = _this6.name.trim();\n if (!_this6.name) {\n _this6.name = '未命名对象';\n }\n _this6.originalOptions = _this6.deepCopyObj(_this6.options);\n _this6._DialogObject.close();\n _this6.Dialog.confirmCallBack && _this6.Dialog.confirmCallBack(_this6.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(_this6.sdk, _this6.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(_this6.sdk, _this6.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this6.reset();\n _this6.Dialog.resetCallBack && _this6.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this6.Dialog.removeCallBack && _this6.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this6.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this6.positionEditing = false;\n _this6.Dialog.closeCallBack && _this6.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this6.show = show;\n _this6.Dialog.showCallBack && _this6.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this6.positionEditing = !_this6.positionEditing;\n }\n }, true);\n case 7:\n this._DialogObject = _context3.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' particle-effects';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n startColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"start_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.startColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.startColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.startColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n endColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"end_color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.endColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.endColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.endColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n Spout.EventBinding(this, all_elm);\n this._elms.startColor = [startColorPicker];\n this._elms.endColor = [endColorPicker];\n _context3.next = 20;\n break;\n case 20:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.name = this.originalOptions.name;\n this.startColor = this.originalOptions.startColor;\n this.endColor = this.originalOptions.endColor;\n this.speed = this.originalOptions.speed;\n this.minimumParticleLife = this.originalOptions.minimumParticleLife;\n this.maximumParticleLife = this.originalOptions.maximumParticleLife;\n this.startScale = this.originalOptions.startScale;\n this.endScale = this.originalOptions.endScale;\n this.emissionRate = this.originalOptions.emissionRate;\n this.particleSize = this.originalOptions.particleSize;\n this.lng = this.originalOptions.start.lng;\n this.lat = this.originalOptions.start.lat;\n this.alt = this.originalOptions.start.alt;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_15__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var sdkD;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _superPropGet(Spout, \"remove\", this, 3)([]);\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"getSdk\"])().sdkD;\n if (!(this.sdk !== sdkD)) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_13__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this7 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_14__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.picking = false;\n this.previous = {\n positions: _objectSpread({}, this.entity.position)\n };\n var movPos;\n this.event.mouse_move(function (movement, cartesian) {\n movPos = movement.endPosition;\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.start.lng = positions.lng;\n _this7.options.start.lat = positions.lat;\n _this7.options.start.alt = positions.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(_this7.options.start.lng, _this7.options.start.lat, _this7.options.start.alt);\n var position = _this7.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n _this7.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n _this7._elms.lng && _this7._elms.lng.forEach(function (item) {\n item.value = _this7.options.start.lng;\n });\n _this7._elms.lat && _this7._elms.lat.forEach(function (item) {\n item.value = _this7.options.start.lat;\n });\n _this7._elms.alt && _this7._elms.alt.forEach(function (item) {\n item.value = _this7.options.start.alt;\n });\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n if (!movPos || movPos.x !== movement.position.x || movPos.y !== movement.position.y - 2) {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.start.lng = positions.lng;\n _this7.options.start.lat = positions.lat;\n _this7.options.start.alt = positions.alt;\n }\n _this7.entity.position = {\n lng: _this7.options.start.lng,\n lat: _this7.options.start.lat,\n alt: _this7.options.start.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n if (_this7._positionEditingCallback) {\n _this7._positionEditingCallback();\n _this7._positionEditingCallback = null;\n }\n _this7.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.options.start.lng = _this7.entity.position.lng;\n _this7.options.start.lat = _this7.entity.position.lat;\n _this7.options.start.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this7.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this7.options.lng = _this7.entity.position.lng;\n _this7.options.lat = _this7.entity.position.lat;\n _this7.options.alt = _this7.entity.position.alt;\n _this7.positionEditing = false;\n } else {\n var positions = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.options.lng = positions.lng;\n _this7.options.lat = positions.lat;\n _this7.options.alt = positions.alt;\n _this7.entity.position = {\n lng: _this7.options.lng,\n lat: _this7.options.lat,\n alt: _this7.options.alt\n };\n _this7.previous = {\n positions: _objectSpread({}, _this7.entity.position)\n };\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n }\n });\n });\n } else {\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.options.start.lng = this.entity.position.lng;\n this.options.start.lat = this.entity.position.lat;\n this.options.start.alt = this.entity.position.alt;\n var cartographic = Cesium.Cartographic.fromDegrees(this.options.start.lng, this.options.start.lat, this.options.start.alt);\n var position = this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n this.entity.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = _this7.options.start.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = _this7.options.start.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = _this7.options.start.alt;\n });\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Spout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGFydGljbGVFZmZlY3RzL1Nwb3V0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BhcnRpY2xlRWZmZWN0cy9TcG91dC9pbmRleC5qcz81YWFmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDmsLTmn7HnibnmlYhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sLCBjc3MgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCB7IHN5bmNEYXRhLCBnZXRTZGsgYXMgZ2V0MkRTZGsgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgU3BvdXQgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAZGVzY3JpcHRpb24g5rC05p+xXHJcbiAgICogQHBhcmFtIHNkayBcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDnspLlrZDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDmoIfms6hpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudXJsIHtzdHJpbmd9IOi0tOWbvuWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0YXJ0Q29sb3I9XCIjYzFmN2YyXCIge3N0cmluZ30g6LW35aeL6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kQ29sb3I9XCIjZmZmZmZmMDBcIiB7c3RyaW5nfSDnu5PmnZ/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdGFydFNjYWxlPTAuMiB7bnVtYmVyfSDliJ3lp4vmr5TkvotcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5lbmRTY2FsZT0yIHtudW1iZXJ9IOe7k+adn+avlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNwZWVkIHtudW1iZXJ9IOmAn+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmU9MTIge251bWJlcn0g5pyA5bCP5a2Y5Zyo5pe26Ze0KOenkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlPTEyIHtudW1iZXJ9IOacgOWkp+WtmOWcqOaXtumXtCjnp5IpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW1pc3Npb25SYXRlPTEwMCB7bnVtYmVyfSDlj5HlsITpgJ/njoco5LiqL+avj+enkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wYXJ0aWNsZVNpemU9MSB7bnVtYmVyfSDnspLlrZDlsLrlpKflsI9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWFkaW5nIOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBpdGNoIOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0YXJ0IHtvYmplY3R9IOW8gOWni+S9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0YXJ0LmxuZyDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zdGFydC5sYXQg57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3RhcnQuYWx0IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVuZCB7b2JqZWN0fSDnu5PmnZ/kvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5lbmQubG5nIOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmVuZC5sYXQg57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kLmFsdCDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucywgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLnVybCA9IG9wdGlvbnMudXJsXHJcbiAgICB0aGlzLm9wdGlvbnMuc3RhcnRDb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvciB8fCBcIiNjMWY3ZjJcIlxyXG4gICAgdGhpcy5vcHRpb25zLmVuZENvbG9yID0gb3B0aW9ucy5lbmRDb2xvciB8fCBcIiNmZmZmZmYwMFwiXHJcbiAgICB0aGlzLm9wdGlvbnMuc3RhcnRTY2FsZSA9IG9wdGlvbnMuc3RhcnRTY2FsZSB8fCAwLjJcclxuICAgIHRoaXMub3B0aW9ucy5lbmRTY2FsZSA9IG9wdGlvbnMuZW5kU2NhbGUgfHwgMlxyXG4gICAgdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSBvcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUgfHwgMTJcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlID0gb3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlIHx8IDEyXHJcbiAgICB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlID0gb3B0aW9ucy5lbWlzc2lvblJhdGUgfHwgMTAwXHJcbiAgICB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplID0gb3B0aW9ucy5wYXJ0aWNsZVNpemUgfHwgMVxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSBvcHRpb25zLnNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLnBvc2l0aW9uQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnJvdGF0aW9uQ2FsbGJhY2sgPSBudWxsXHJcbiAgICB0aGlzLm9uQ2xpY2tDYWxsYmFjayA9IG51bGxcclxuICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIHRoaXMuX2VsZW1lbnQgPSBudWxsXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtXHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgdGhpcy5hZGQoKVxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgIHBvc2l0aW9uczoge1xyXG4gICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnN0YXJ0LmxuZyxcclxuICAgICAgICBsYXQ6IHRoaXMub3B0aW9ucy5zdGFydC5sYXQsXHJcbiAgICAgICAgYWx0OiB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0LFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuIFwiUGFydGljbGVFZmZlY3RzXCJcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICAgIGlmICghdGhpcy5pc1Nob3dWaWV3IHx8ICFzZGtEKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodCA8IDEwMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbCAmJiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdykge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0IDwgMTAwMDAwMDApIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsICYmIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93KSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgdGhpcy5pc1Nob3dWaWV3ID0gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGQoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgY29uc3Qgc2NlbmUgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmU7XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIGxldCBtYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygxLCAxLCAxKSwgbWF0cml4KVxyXG5cclxuICAgIGxldCBncmF2aXR5VmVjdG9yID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICBsZXQgZ3Jhdml0eSA9IC0zLjg7Ly8g6YeN5Yqb5pa55ZCRXHJcblxyXG4gICAgbGV0IHN0YXJ0ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnN0YXJ0LmxuZywgdGhpcy5vcHRpb25zLnN0YXJ0LmxhdCwgdGhpcy5vcHRpb25zLnN0YXJ0LmFsdClcclxuICAgIGxldCBlbmQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuZW5kLmxuZywgdGhpcy5vcHRpb25zLmVuZC5sYXQsIHRoaXMub3B0aW9ucy5lbmQuYWx0KVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVhZGluZyAmJiB0aGlzLm9wdGlvbnMuaGVhZGluZyAhPT0gMCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVhZGluZyA9IGdldEhlYWRpbmcoc3RhcnQsIGVuZClcclxuICAgIH1cclxuXHJcbiAgICBsZXQgeTAgPSB0aGlzLm9wdGlvbnMuZW5kLmFsdCAtIHRoaXMub3B0aW9ucy5zdGFydC5hbHRcclxuICAgIGxldCB4MCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHN0YXJ0LCBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuZW5kLmxuZywgdGhpcy5vcHRpb25zLmVuZC5sYXQsIHRoaXMub3B0aW9ucy5zdGFydC5hbHQpKVxyXG4gICAgbGV0IHRhbkFcclxuICAgIGlmICgheTApIHtcclxuICAgICAgdGFuQSA9IDBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0YW5BID0gMiAqIHkwIC8geDBcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYSA9IE1hdGguYXRhbih0YW5BKSAqICgxODAgLyBNYXRoLlBJKTtcclxuXHJcbiAgICBsZXQgdCA9IE1hdGguc3FydCgoTWF0aC5hYnModGFuQSkgKiB4MCkgLyAtZ3Jhdml0eSlcclxuICAgIGxldCBzcGVlZCA9IC1ncmF2aXR5ICogdCAvIE1hdGguYWJzKE1hdGguY29zKGEpKVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucGl0Y2ggJiYgdGhpcy5vcHRpb25zLnBpdGNoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5waXRjaCA9IDkwIC0gYVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc3BlZWQgJiYgdGhpcy5vcHRpb25zLnNwZWVkICE9PSAwKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IHNwZWVkXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNhbWVyYUhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0O1xyXG5cclxuXHJcblxyXG4gICAgLy8gLy8g6K6h566X5Y+R5bCE5Y+C5pWwXHJcbiAgICAvLyBmdW5jdGlvbiBjYWxjdWxhdGVMYXVuY2hQYXJhbWV0ZXJzKGhlaWdodCwgZGlzdGFuY2UsIGdyYXZpdHkpIHtcclxuICAgIC8vICAgLy8g6Kej5Yaz5pac5oqb6L+Q5Yqo6Zeu6aKY77yaeSA9IGggKyB4wrd0YW4ozrgpIC0gKGfCt3jCsikvKDLCt3bigoDCssK3Y29zwrIozrgpKVxyXG4gICAgLy8gICAvLyDlvZMgeSA9IDAsIHggPSBkaXN0YW5jZSDml7bvvIzmsYLop6MgduKCgCDlkowgzrhcclxuXHJcbiAgICAvLyAgIC8vIOeugOWMluiuoeeul++8jOS9v+eUqOacgOS8mOinkuW6piDOuCA9IDQ1wrBcclxuICAgIC8vICAgY29uc3QgYW5nbGUgPSBDZXNpdW0uTWF0aC50b1JhZGlhbnMoNDUpO1xyXG5cclxuICAgIC8vICAgLy8g6K6h566X5Yid5aeL6YCf5bqmXHJcbiAgICAvLyAgIGNvbnN0IHZlbG9jaXR5ID0gTWF0aC5zcXJ0KChncmF2aXR5ICogZGlzdGFuY2UgKiBkaXN0YW5jZSkgL1xyXG4gICAgLy8gICAgICgyICogKGhlaWdodCArIGRpc3RhbmNlICogTWF0aC50YW4oYW5nbGUpKSAqIE1hdGgucG93KE1hdGguY29zKGFuZ2xlKSwgMikpKTtcclxuXHJcbiAgICAvLyAgIC8vIOiuoeeul+mjnuihjOaXtumXtFxyXG4gICAgLy8gICBjb25zdCB2eTAgPSB2ZWxvY2l0eSAqIE1hdGguc2luKGFuZ2xlKTtcclxuICAgIC8vICAgY29uc3QgZmxpZ2h0VGltZSA9ICh2eTAgKyBNYXRoLnNxcnQodnkwICogdnkwICsgMiAqIGdyYXZpdHkgKiBoZWlnaHQpKSAvIGdyYXZpdHk7XHJcblxyXG4gICAgLy8gICAvLyDorqHnrpfmnIDlpKfpq5jluqZcclxuICAgIC8vICAgY29uc3QgbWF4SGVpZ2h0ID0gaGVpZ2h0ICsgKHZ5MCAqIHZ5MCkgLyAoMiAqIGdyYXZpdHkpO1xyXG5cclxuICAgIC8vICAgcmV0dXJuIHsgdmVsb2NpdHksIGFuZ2xlLCBmbGlnaHRUaW1lLCBtYXhIZWlnaHQgfTtcclxuICAgIC8vIH1cclxuICAgIC8vIGxldCBwYXJhbXMgPSB7XHJcbiAgICAvLyAgIGxhdW5jaEhlaWdodDogdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCwgLy8g5Y+R5bCE6auY5bqmXHJcbiAgICAvLyAgIHRhcmdldERpc3RhbmNlOiBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShzdGFydCwgZW5kKSwgLy8g55uu5qCH6Led56a7XHJcbiAgICAvLyAgIGdyYXZpdHk6IDkuOCwgLy8g6YeN5YqbXHJcbiAgICAvLyB9XHJcbiAgICAvLyAvLyDorqHnrpfliJ3lp4vpgJ/luqblkozlj5HlsITop5LluqZcclxuICAgIC8vIGNvbnN0IHsgdmVsb2NpdHksIGFuZ2xlLCBmbGlnaHRUaW1lLCBtYXhIZWlnaHQgfSA9IGNhbGN1bGF0ZUxhdW5jaFBhcmFtZXRlcnMoXHJcbiAgICAvLyAgIHBhcmFtcy5sYXVuY2hIZWlnaHQsXHJcbiAgICAvLyAgIHBhcmFtcy50YXJnZXREaXN0YW5jZSxcclxuICAgIC8vICAgcGFyYW1zLmdyYXZpdHlcclxuICAgIC8vICk7XHJcblxyXG4gICAgLy8gaWYgKCF0aGlzLm9wdGlvbnMuc3BlZWQgJiYgdGhpcy5vcHRpb25zLnNwZWVkICE9PSAwKSB7XHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IHZlbG9jaXR5KjEwXHJcbiAgICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbSA9IHNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLlBhcnRpY2xlU3lzdGVtKHtcclxuICAgICAgICBzaG93OiAoY2FtZXJhSGVpZ2h0ID49IDEwMDAwMDAwKSA/IGZhbHNlIDogdGhpcy5vcHRpb25zLnNob3csXHJcbiAgICAgICAgaW1hZ2U6IHRoaXMub3B0aW9ucy51cmwgfHwgKHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BhcnRpY2xlc3lzdGVtL3Ntb2tlLnBuZycpLFxyXG4gICAgICAgIC8vIOS7jue7v+iJsuWIsOeZveiJsua3oeWHulxyXG4gICAgICAgIHN0YXJ0Q29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLnN0YXJ0Q29sb3IpLCAvL+eykuWtkOWHuueUn+aXtueahOminOiJslxyXG4gICAgICAgIGVuZENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5lbmRDb2xvciksIC8v5b2T57KS5a2Q5q275Lqh5pe255qE6aKc6ImyXHJcbiAgICAgICAgc3RhcnRTY2FsZTogdGhpcy5vcHRpb25zLnN0YXJ0U2NhbGUsICAvL+eykuWtkOWHuueUn+aXtueahOavlOS+i1xyXG4gICAgICAgIGVuZFNjYWxlOiB0aGlzLm9wdGlvbnMuZW5kU2NhbGUsIC8v57KS5a2Q5Zyo5q275Lqh5pe255qE5q+U5L6LXHJcbiAgICAgICAgbWluaW11bVBhcnRpY2xlTGlmZTogdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmUsICAvL+iuvue9rueykuWtkOWvv+WRveeahOWPr+iDveaMgee7reaXtumXtOeahOacgOWwj+eVjOmZkO+8iOS7peenkuS4uuWNleS9je+8iVxyXG4gICAgICAgIG1heGltdW1QYXJ0aWNsZUxpZmU6IHRoaXMub3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlLCAvL+iuvue9rueykuWtkOWvv+WRveeahOWPr+iDveaMgee7reaXtumXtOeahOacgOWkp+eVjOmZkO+8iOS7peenkuS4uuWNleS9je+8iVxyXG4gICAgICAgIG1pbmltdW1TcGVlZDogdGhpcy5vcHRpb25zLnNwZWVkLC8v6K6+572u5Lul57GzL+enkuS4uuWNleS9jeeahOacgOWwj+eVjOmZkO+8jOi2hei/h+ivpeacgOWwj+eVjOmZkO+8jOmaj+acuumAieaLqeeykuWtkOeahOWunumZhemAn+W6puOAglxyXG4gICAgICAgIG1heGltdW1TcGVlZDogdGhpcy5vcHRpb25zLnNwZWVkLC8v6K6+572u5Lul57GzL+enkuS4uuWNleS9jeeahOacgOWkp+eVjOmZkO+8jOi2hei/h+ivpeacgOWkp+eVjOmZkO+8jOmaj+acuumAieaLqeeykuWtkOeahOWunumZhemAn+W6puOAglxyXG4gICAgICAgIC8vIGltYWdlU2l6ZTogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKCAgLy/lpoLmnpzorr7nva7or6XlsZ7mgKfvvIzlsIbkvJropobnm5YgbWluaW11bUltYWdlU2l6ZeWSjG1heGltdW1JbWFnZVNpemXlsZ7mgKfvvIzku6Xlg4/ntKDkuLrljZXkvY3nvKnmlL5pbWFnZeeahOWkp+Wwj1xyXG4gICAgICAgIC8vICAgdGhpcy5vcHRpb25zLmltYWdlU2l6ZSB8fCAxMCxcclxuICAgICAgICAvLyAgIHRoaXMub3B0aW9ucy5pbWFnZVNpemUgfHwgMTBcclxuICAgICAgICAvLyApLFxyXG4gICAgICAgIGxpZmV0aW1lOiAwLjUsXHJcbiAgICAgICAgaW1hZ2VTaXplOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIodGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSwgdGhpcy5vcHRpb25zLnBhcnRpY2xlU2l6ZSAqIDIpLFxyXG4gICAgICAgIHNpemVJbk1ldGVyczogdHJ1ZSxcclxuICAgICAgICBlbWlzc2lvblJhdGU6IHRoaXMub3B0aW9ucy5lbWlzc2lvblJhdGUsIC8v5q+P56eS5Y+R5bCE55qE57KS5a2Q5pWw44CCXHJcbiAgICAgICAgbG9vcDogdHJ1ZSxcclxuICAgICAgICBlbWl0dGVyOiBuZXcgQ2VzaXVtLkNpcmNsZUVtaXR0ZXIoMC4yKSxcclxuICAgICAgICBtb2RlbE1hdHJpeDogbWF0cml4LFxyXG4gICAgICAgIGVtaXR0ZXJNb2RlbE1hdHJpeDogY29tcHV0ZUVtaXR0ZXJNb2RlbE1hdHJpeCgpLC8vIOWPkeWwhOWZqOi9rOaNouS4uuS4lueVjOWdkOagh1xyXG5cclxuICAgICAgICAvLyDlop7liqDph43lipvlnLrlvbHlg4/vvIxcclxuICAgICAgICB1cGRhdGVDYWxsYmFjazogYXBwbHlHcmF2aXR5LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBmdW5jdGlvbiBhcHBseUdyYXZpdHkocCwgZHQpIHtcclxuICAgICAgcC5fYmlsbGJvYXJkLmlkID0gX3RoaXMub3B0aW9ucy5pZFxyXG4gICAgICBsZXQgcG9zaXRpb24gPSBwLnBvc2l0aW9uO1xyXG4gICAgICBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUocG9zaXRpb24sIGdyYXZpdHlWZWN0b3IpO1xyXG4gICAgICAvLyBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKGdyYXZpdHlWZWN0b3IsIC00LjggKiBkdCwgZ3Jhdml0eVZlY3Rvcik7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm11bHRpcGx5QnlTY2FsYXIoZ3Jhdml0eVZlY3RvciwgZ3Jhdml0eSAqIGR0LCBncmF2aXR5VmVjdG9yKTtcclxuICAgICAgcC52ZWxvY2l0eSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChwLnZlbG9jaXR5LCBncmF2aXR5VmVjdG9yLCBwLnZlbG9jaXR5KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8g6K6h566X57KS5a2Q5Y+R5bCE5Zmo55qE5L2N572u5ae/5oCBXHJcbiAgICBmdW5jdGlvbiBjb21wdXRlRW1pdHRlck1vZGVsTWF0cml4KCkge1xyXG4gICAgICBsZXQgaHByID0gQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXMoX3RoaXMub3B0aW9ucy5oZWFkaW5nICsgOTAsIF90aGlzLm9wdGlvbnMucGl0Y2gsIDApOy8vISEh5Y+R5bCE57KS5a2Q55qE5pa55ZCRXHJcbiAgICAgIGxldCB0cnMgPSBuZXcgQ2VzaXVtLlRyYW5zbGF0aW9uUm90YXRpb25TY2FsZSgpO1xyXG4gICAgICB0cnMudHJhbnNsYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRWxlbWVudHMoMCwgMCwgMSk7XHJcbiAgICAgIHRycy5yb3RhdGlvbiA9IENlc2l1bS5RdWF0ZXJuaW9uLmZyb21IZWFkaW5nUGl0Y2hSb2xsKGhwcik7XHJcbiAgICAgIGxldCBNYXRyaXg0ID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVRyYW5zbGF0aW9uUm90YXRpb25TY2FsZSh0cnMpO1xyXG4gICAgICByZXR1cm4gTWF0cml4NFxyXG4gICAgfVxyXG5cclxuICAgIC8vIOagueaNruS4pOS4quWdkOagh+eCuSzojrflj5ZIZWFkaW5nKOacneWQkSlcclxuICAgIGZ1bmN0aW9uIGdldEhlYWRpbmcoZnJvbVBvc2l0aW9uLCB0b1Bvc2l0aW9uKSB7XHJcbiAgICAgIGxldCBmaW5hbFBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICAgIGxldCBtYXRyaXg0ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoZnJvbVBvc2l0aW9uKTtcclxuICAgICAgQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZShtYXRyaXg0LCBtYXRyaXg0KTtcclxuICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KG1hdHJpeDQsIHRvUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pO1xyXG4gICAgICBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZmluYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbik7XHJcbiAgICAgIHJldHVybiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoTWF0aC5hdGFuMihmaW5hbFBvc2l0aW9uLngsIGZpbmFsUG9zaXRpb24ueSkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeFxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5pZCA9IHRoaXMub3B0aW9ucy5pZFxyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLnBhcnRpY2xlU3lzdGVtXHJcbiAgICAvLyB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlUcmFuc2xhdGlvbihDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygxMDAuMCwgMjAuMCkpLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMC4wLCAwLjAsIDEwMDAwLjApLCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSlcclxuICAgIHRoaXMuZW50aXR5LnBvc2l0aW9uID0geyBsbmc6IHRoaXMub3B0aW9ucy5zdGFydC5sbmcsIGxhdDogdGhpcy5vcHRpb25zLnN0YXJ0LmxhdCwgYWx0OiB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0IH1cclxuICAgIC8vIHRoaXMuZWRpdE9iaiA9IG5ldyBFZGl0UGFydGljbGUodGhpcy5zZGssIHRoaXMuZW50aXR5KVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8g55uR5ZCs55u45py66auY5bqmXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcigoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVudGl0eSAmJiB0aGlzLnNob3cpIHtcclxuICAgICAgICBsZXQgY2FtZXJhSGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGNhbWVyYUhlaWdodCA+PSAxMDAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLnRyYW5zbGF0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCk7XHJcbiAgICAvLyB0aGlzLnJvdGF0aW9uID0gbmV3IENlc2l1bS5RdWF0ZXJuaW9uKCk7XHJcbiAgICAvLyB0aGlzLmhwciA9IG5ldyBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbCgpO1xyXG4gICAgLy8gdGhpcy50cnMgPSBuZXcgQ2VzaXVtLlRyYW5zbGF0aW9uUm90YXRpb25TY2FsZSgpO1xyXG4gICAgLy8gdGhpcy5lbWl0dGVyTW9kZWxNYXRyaXggPSBuZXcgQ2VzaXVtLk1hdHJpeDQoKTtcclxuICAgIC8vIHRoaXMuaHByID0gQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXMoNjAsIDAuMCwgMC4wLCB0aGlzLmhwcik7XHJcbiAgICAvLyB0aGlzLnRycy50cmFuc2xhdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21FbGVtZW50cygwLCAwLCAwLCB0aGlzLnRyYW5zbGF0aW9uKTtcclxuICAgIC8vIHRoaXMudHJzLnJvdGF0aW9uID0gQ2VzaXVtLlF1YXRlcm5pb24uZnJvbUhlYWRpbmdQaXRjaFJvbGwodGhpcy5ocHIsIHRoaXMucm90YXRpb24pO1xyXG4gICAgLy8gdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbWl0dGVyTW9kZWxNYXRyaXggPSBDZXNpdW0uTWF0cml4NC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlKHRoaXMudHJzLCB0aGlzLmVtaXR0ZXJNb2RlbE1hdHJpeCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5saW5lICYmIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0ICsgNTAwKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnRDb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IHN0YXJ0Q29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0Q29sb3IgPSB2XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLnN0YXJ0Q29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5zdGFydENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuc3RhcnRDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IHBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB2LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5zdGFydENvbG9yW2ldID0gcGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVuZENvbG9yXHJcbiAgfVxyXG5cclxuICBzZXQgZW5kQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmVuZENvbG9yID0gdlxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbmRDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodilcclxuICAgIGlmICh0aGlzLl9lbG1zLmVuZENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuZW5kQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuZENvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5lbmRDb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNwZWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zcGVlZFxyXG4gIH1cclxuXHJcbiAgc2V0IHNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5taW5pbXVtU3BlZWQgPSBOdW1iZXIodilcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0ubWF4aW11bVNwZWVkID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLl9lbG1zLnNwZWVkICYmIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbmltdW1QYXJ0aWNsZUxpZmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1pbmltdW1QYXJ0aWNsZUxpZmVcclxuICB9XHJcblxyXG4gIHNldCBtaW5pbXVtUGFydGljbGVMaWZlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5taW5pbXVtUGFydGljbGVMaWZlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1pbmltdW1QYXJ0aWNsZUxpZmUgPSBOdW1iZXIodilcclxuICAgIHRoaXMuX2VsbXMubWluaW11bVBhcnRpY2xlTGlmZSAmJiB0aGlzLl9lbG1zLm1pbmltdW1QYXJ0aWNsZUxpZmUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1heGltdW1QYXJ0aWNsZUxpZmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1heGltdW1QYXJ0aWNsZUxpZmVcclxuICB9XHJcblxyXG4gIHNldCBtYXhpbXVtUGFydGljbGVMaWZlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tYXhpbXVtUGFydGljbGVMaWZlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1QYXJ0aWNsZUxpZmUgPSBOdW1iZXIodilcclxuICAgIHRoaXMuX2VsbXMubWF4aW11bVBhcnRpY2xlTGlmZSAmJiB0aGlzLl9lbG1zLm1heGltdW1QYXJ0aWNsZUxpZmUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0U2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnN0YXJ0U2NhbGVcclxuICB9XHJcblxyXG4gIHNldCBzdGFydFNjYWxlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydFNjYWxlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLnN0YXJ0U2NhbGUgPSBOdW1iZXIodilcclxuICAgIHRoaXMuX2VsbXMuc3RhcnRTY2FsZSAmJiB0aGlzLl9lbG1zLnN0YXJ0U2NhbGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZFNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lbmRTY2FsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGVuZFNjYWxlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRTY2FsZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbmRTY2FsZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5fZWxtcy5lbmRTY2FsZSAmJiB0aGlzLl9lbG1zLmVuZFNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IE51bWJlcih2KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBlbWlzc2lvblJhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVtaXNzaW9uUmF0ZVxyXG4gIH1cclxuXHJcbiAgc2V0IGVtaXNzaW9uUmF0ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZW1pc3Npb25SYXRlID0gTnVtYmVyKHYpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmVtaXNzaW9uUmF0ZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5fZWxtcy5lbWlzc2lvblJhdGUgJiYgdGhpcy5fZWxtcy5lbWlzc2lvblJhdGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcnRpY2xlU2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucGFydGljbGVTaXplXHJcbiAgfVxyXG5cclxuICBzZXQgcGFydGljbGVTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wYXJ0aWNsZVNpemUgPSBOdW1iZXIodilcclxuICAgIHRoaXMucGFydGljbGVTeXN0ZW0ubWluaW11bUltYWdlU2l6ZSA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihOdW1iZXIodiksIE51bWJlcih2KSAqIDIpXHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLm1heGltdW1JbWFnZVNpemUgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoTnVtYmVyKHYpLCBOdW1iZXIodikgKiAyKVxyXG4gICAgdGhpcy5fZWxtcy5wYXJ0aWNsZVNpemUgJiYgdGhpcy5fZWxtcy5wYXJ0aWNsZVNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxuZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnQubG5nXHJcbiAgfVxyXG5cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydC5sbmcgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5zdGFydC5sYXQsIGFsdDogdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnQubGF0XHJcbiAgfVxyXG5cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydC5sYXQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5zdGFydC5sYXQsIGFsdDogdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0XHJcbiAgfVxyXG5cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydC5hbHQgPSB2XHJcbiAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0KTtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5zdGFydC5sYXQsIGFsdDogdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCB9XHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlYWRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlYWRpbmdcclxuICB9XHJcblxyXG4gIHNldCBoZWFkaW5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWFkaW5nID0gTnVtYmVyKHYpXHJcbiAgICBsZXQgaHByID0gQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmhlYWRpbmcgKyA5MCwgdGhpcy5vcHRpb25zLnBpdGNoLCAwKTsvLyEhIeWPkeWwhOeykuWtkOeahOaWueWQkVxyXG4gICAgbGV0IHRycyA9IG5ldyBDZXNpdW0uVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlKCk7XHJcbiAgICB0cnMudHJhbnNsYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRWxlbWVudHMoMCwgMCwgMSk7XHJcbiAgICB0cnMucm90YXRpb24gPSBDZXNpdW0uUXVhdGVybmlvbi5mcm9tSGVhZGluZ1BpdGNoUm9sbChocHIpO1xyXG4gICAgbGV0IE1hdHJpeDQgPSBDZXNpdW0uTWF0cml4NC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlKHRycyk7XHJcbiAgICB0aGlzLnBhcnRpY2xlU3lzdGVtLmVtaXR0ZXJNb2RlbE1hdHJpeCA9IE1hdHJpeDRcclxuICAgIHRoaXMuX2VsbXMuaGVhZGluZyAmJiB0aGlzLl9lbG1zLmhlYWRpbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBpdGNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5waXRjaFxyXG4gIH1cclxuXHJcbiAgc2V0IHBpdGNoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5waXRjaCA9IE51bWJlcih2KVxyXG4gICAgbGV0IGhwciA9IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5oZWFkaW5nICsgOTAsIHRoaXMub3B0aW9ucy5waXRjaCwgMCk7Ly8hISHlj5HlsITnspLlrZDnmoTmlrnlkJFcclxuICAgIGxldCB0cnMgPSBuZXcgQ2VzaXVtLlRyYW5zbGF0aW9uUm90YXRpb25TY2FsZSgpO1xyXG4gICAgdHJzLnRyYW5zbGF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbUVsZW1lbnRzKDAsIDAsIDEpO1xyXG4gICAgdHJzLnJvdGF0aW9uID0gQ2VzaXVtLlF1YXRlcm5pb24uZnJvbUhlYWRpbmdQaXRjaFJvbGwoaHByKTtcclxuICAgIGxldCBNYXRyaXg0ID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVRyYW5zbGF0aW9uUm90YXRpb25TY2FsZSh0cnMpO1xyXG4gICAgdGhpcy5wYXJ0aWNsZVN5c3RlbS5lbWl0dGVyTW9kZWxNYXRyaXggPSBNYXRyaXg0XHJcbiAgICB0aGlzLl9lbG1zLnBpdGNoICYmIHRoaXMuX2VsbXMucGl0Y2guZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHYpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgLy8gbGV0IGVsbXMgPSB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tYmFzZS1kaWFsb2cnKVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IGVsbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIC8vICAgdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoZWxtc1tpXSlcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3JpZ2luYWxPcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICfllrflsITmsLTmn7HlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICAgICAgLy8gICBjb2xvcjogXCJjb2xvcigncmdiYSgyNTUsMjU1LDI1NSxcIiArIHRoaXMubmV3RGF0YS50cmFuc3BhcmVuY3kgKyBcIiknKVwiLFxyXG4gICAgICAgICAgLy8gICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHBhcnRpY2xlLWVmZmVjdHMnXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBzdGFydENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzdGFydF9jb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5zdGFydENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdGFydENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RhcnRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGVuZENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlbmRfY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuZW5kQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVuZENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5kQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIFNwb3V0LkV2ZW50QmluZGluZyh0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zLnN0YXJ0Q29sb3IgPSBbc3RhcnRDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5lbmRDb2xvciA9IFtlbmRDb2xvclBpY2tlcl1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmICh0aGlzLl9lbGVtZW50X3N0eWxlKSB7XHJcbiAgICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50X3N0eWxlKVxyXG4gICAgICAvLyAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLnN0YXJ0Q29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zdGFydENvbG9yXHJcbiAgICB0aGlzLmVuZENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZW5kQ29sb3JcclxuICAgIHRoaXMuc3BlZWQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zcGVlZFxyXG4gICAgdGhpcy5taW5pbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWluaW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5tYXhpbXVtUGFydGljbGVMaWZlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWF4aW11bVBhcnRpY2xlTGlmZVxyXG4gICAgdGhpcy5zdGFydFNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3RhcnRTY2FsZVxyXG4gICAgdGhpcy5lbmRTY2FsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVuZFNjYWxlXHJcbiAgICB0aGlzLmVtaXNzaW9uUmF0ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmVtaXNzaW9uUmF0ZVxyXG4gICAgdGhpcy5wYXJ0aWNsZVNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wYXJ0aWNsZVNpemVcclxuICAgIHRoaXMubG5nID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3RhcnQubG5nXHJcbiAgICB0aGlzLmxhdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnN0YXJ0LmxhdFxyXG4gICAgdGhpcy5hbHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zdGFydC5hbHRcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICBzdXBlci5yZW1vdmUoKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuZW50aXR5KTtcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBsZXQgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgaWYodGhpcy5zZGsgIT09IHNka0QpIHtcclxuICAgICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICpcclxuICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgKlxyXG4gICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICBwb3NpdGlvbnM6IHsgLi4udGhpcy5lbnRpdHkucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBtb3ZQb3NcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbW92UG9zID0gbW92ZW1lbnQuZW5kUG9zaXRpb25cclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc3RhcnQubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zdGFydC5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCA9IHBvc2l0aW9ucy5hbHRcclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCB0aGlzLm9wdGlvbnMuc3RhcnQubGF0LCB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0KTtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpYyk7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5zdGFydC5sbmdcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuc3RhcnQubGF0XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnN0YXJ0LmFsdFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmICghbW92UG9zIHx8IG1vdlBvcy54ICE9PSBtb3ZlbWVudC5wb3NpdGlvbi54IHx8IG1vdlBvcy55ICE9PSBtb3ZlbWVudC5wb3NpdGlvbi55IC0gMikge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc3RhcnQubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0LmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zdGFydC5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMuc3RhcnQubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5zdGFydC5sYXQsIGFsdDogdGhpcy5vcHRpb25zLnN0YXJ0LmFsdCB9XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogeyAuLi50aGlzLmVudGl0eS5wb3NpdGlvbiB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0LmxuZyA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zdGFydC5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubG5nID0gdGhpcy5lbnRpdHkucG9zaXRpb24ubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFsdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hbHQgPSBwb3NpdGlvbnMuYWx0XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQsIGFsdDogdGhpcy5vcHRpb25zLmFsdCB9XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zOiB7IC4uLnRoaXMuZW50aXR5LnBvc2l0aW9uIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zdGFydC5sbmcgPSB0aGlzLmVudGl0eS5wb3NpdGlvbi5sbmdcclxuICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0LmxhdCA9IHRoaXMuZW50aXR5LnBvc2l0aW9uLmxhdFxyXG4gICAgICB0aGlzLm9wdGlvbnMuc3RhcnQuYWx0ID0gdGhpcy5lbnRpdHkucG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5zdGFydC5sbmcsIHRoaXMub3B0aW9ucy5zdGFydC5sYXQsIHRoaXMub3B0aW9ucy5zdGFydC5hbHQpO1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGNhcnRvZ3JhcGhpYyk7XHJcbiAgICAgIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcblxyXG4gICAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5zdGFydC5sbmdcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMuc3RhcnQubGF0XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0ICYmIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnN0YXJ0LmFsdFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuICBjbG9zZVBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIEV2ZW50QmluZGluZyh0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCAhZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIGNvbnRpbnVlXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHsgdGhhdFttLnZhbHVlXSA9IGUudGFyZ2V0LmNoZWNrZWQgfSlcclxuICAgICAgICAgICAgICBlbGVtZW50c1tpXS5jaGVja2VkID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0Ll9lbG1zW20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoYXQuX2VsbXNbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2hhbmdlJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJlbW92ZU5hbWUubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGxldCB2ZW50VHlwZSA9ICdpbnB1dCdcclxuICAgICAgICBpZiAoZWxlbWVudHNbaV0udGFnTmFtZSAhPSAnSU5QVVQnIHx8IGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgdmVudFR5cGUgPSAnY2hhbmdlJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKHZlbnRUeXBlLCAoZSkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBFdmVudC5sZW5ndGg7IHQrKykge1xyXG4gICAgICAgICAgICBFdmVudFt0XShlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmbGlja2VyKCkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNwb3V0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBdUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFTQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBbkVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0VBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFwQ0E7QUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBMklBO0FBQ0E7QUFBQTtBQXRJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtHQTtBQUFBO0FBQUE7QUFoR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyRUE7QUFBQTtBQUFBO0FBcUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUtBO0FBd0ZBO0FBQUE7QUFBQTtBQUtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/ParticleEffects/Spout/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PincerArrowObject/_element.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/PincerArrowObject/_element.js ***! - \****************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u52A8\\u753B\\u65F6\\u957F\\n
\\n \\n ms\\n \\n
\\n
\\n
\\n
\\n
\\n \\u52A8\\u753B\\n \\n
\\n
\\n \\u52A8\\u753B\\u91CD\\u590D\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGluY2VyQXJyb3dPYmplY3QvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvUGluY2VyQXJyb3dPYmplY3QvX2VsZW1lbnQuanM/ZTVhYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA2MCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+5oqV5b2x6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW5wdXQtdGV4dFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cImFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlbGVjdC11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Yqo55S75pe26ZW/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgYmx1clwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjUwMFwiIG1heD1cIjk5OTk5OTlcIiBAbW9kZWw9XCJzcHJlYWRUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqjnlLs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzcHJlYWRTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWKqOeUu+mHjeWkjTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cImxvb3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJwaW5jZXItYXJyb3ctb2JqZWN0LWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1tb2RlLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1tb2RlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+WuWAvOe7n+S4gOWinuWKoDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIGhlaWdodC1jb25maXJtXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBzcGF0aWFsLWluZm8tdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nu4/luqbvvIhY77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue6rOW6pu+8iFnvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6auY5bqm77yIWu+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi6Z2i6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Z2i6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui+uee6v+WuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJsaW5lV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBNkdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/PincerArrowObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PincerArrowObject/index.js": -/*!*************************************************!*\ - !*** ./src/Obj/Base/PincerArrowObject/index.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/PincerArrowObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 双箭头\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import EditParticle from \"../../ModelController/EditParticle\";\nvar PincerArrowObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 双箭头\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色\r\n * @param options.height {number} 高度\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.spreadState=false {boolean} 动画\r\n * @param options.loop=false {loop} 动画重复\r\n * @param options.spreadTime=3000 {number} 动画持续时长(毫秒)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function PincerArrowObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PincerArrowObject);\n _this2 = _callSuper(this, PincerArrowObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"#ff000080\";\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.positions = options.positions || [];\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n _this2.options.height = options.height;\n _this2.options.loop = options.loop || false;\n _this2.options.spreadState = options.spreadState || false;\n _this2._elms = {};\n _this2.nodePoints = [];\n _this2.spreadTime = options.spreadTime;\n _this2.entity;\n _this2.event;\n _this2.operate = {};\n _this2.Dialog = _Dialog;\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n if (!_this2.options.positions || _this2.options.positions.length < 5) {\n _this2._error = '双箭头最少需要五个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n if (!_this2.options.height && _this2.options.height !== 0) {\n var height = _this2.options.positions[0].alt;\n for (var i = 1; i < _this2.options.positions.length; i++) {\n if (height < _this2.options.positions[i].alt) {\n height = _this2.options.positions[i].alt;\n }\n }\n _this2.options.height = height;\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n PincerArrowObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(PincerArrowObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PincerArrowObject, [{\n key: \"type\",\n get: function get() {\n return 'PincerArrowObject';\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this.label.text = v;\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this4.options.heightMode = v || v == 0 ? v : 2;\n _this4.positionEditing = false;\n if (!_this4.entity) {\n return;\n }\n var heightModeName = '';\n _this4.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this4.renewPositions();\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positionsH), [_this4.positionsH[0], _this4.positionsH[1]]);\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positionsH);\n switch (_this4.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this4.label.ground = ground;\n _this4.entity.polyline.clampToGround = ground;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4._elms.heightMode && (_this4._elms.heightMode.value = heightModeName);\n _this4._elms.heightModeObject && _this4._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this5 = this;\n if (!v || isNaN(Number(v))) {\n this.options.height = 0;\n } else {\n this.options.height = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this5.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this5.positionsH);\n _this5.entity.polygon.perPositionHeight = !ground ? true : false;\n _this5.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this5.positionsH), [_this5.positionsH[0], _this5.positionsH[1]]);\n _this5.entity.polyline.clampToGround = !ground ? false : true;\n _this5.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this5.options.height;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = _this7.options.line.width;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this12 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, heightBoxElm, heightElm, heightConfirmElm, heightModeData, heightModeObject, heightModeDataLegpElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 3:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 62;\n break;\n }\n createSpatialInfoTableContent = function createSpatialInfoTableContent() {\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n tBodyElm.innerHTML = '';\n _this._elms.lng = [];\n _this._elms.lngInput = [];\n _this._elms.lat = [];\n _this._elms.latInput = [];\n _this._elms.alt = [];\n _this._elms.altInput = [];\n var _loop = function _loop(i) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
\".concat(i + 1, \"
\\n
\\n
\\n
\\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this.options.positions[i].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this.options.positions[i].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this.height.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this.height.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n PincerArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this.options.positions[i].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n _this.height = _this.height;\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n PincerArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this.options.positions[i].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n _this.height = _this.height;\n });\n altBox.addEventListener('dblclick', function () {\n if (_this.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this.height.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n PincerArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this.height.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this.height = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = Number(_this.height.toFixed(2));\n });\n _this._elms.lng.push(lng);\n _this._elms.lngInput.push(lngInput);\n _this._elms.lat.push(lat);\n _this._elms.latInput.push(latInput);\n _this._elms.alt.push(alt);\n _this._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var i = 0; i < _this.options.positions.length; i++) {\n _loop(i);\n }\n };\n _context.next = 10;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '双箭头属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this12.name = _this12.name.trim();\n if (!_this12.name) {\n _this12.name = '未命名对象';\n }\n _this12.options.label.position = {\n lng: _this12.label.position[0],\n lat: _this12.label.position[1],\n alt: _this12.label.position[2]\n };\n _this12.originalOptions = _this12.deepCopyObj(_this12.options);\n _this12._DialogObject.close();\n _this12.Dialog.confirmCallBack && _this12.Dialog.confirmCallBack(_this12.originalOptions);\n },\n resetCallBack: function resetCallBack() {\n _this12.reset();\n _this12.Dialog.resetCallBack && _this12.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this12.Dialog.removeCallBack && _this12.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n var spreadState = _this12.options.spreadState;\n _this12.positionEditing = false;\n setTimeout(function () {\n _this12.options.spreadState = spreadState;\n _this12.reset();\n }, 10);\n _this12.Dialog.closeCallBack && _this12.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this12.options.show = show;\n _this12.originalOptions.show = show;\n _this12.show = show;\n _this12.Dialog.showCallBack && _this12.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this12.positionEditing = !_this12.positionEditing;\n },\n // 二次编辑回调\n secondaryEditCallBack: function secondaryEditCallBack() {\n PincerArrowObject.nodeEdit(_this12, function () {\n createSpatialInfoTableContent();\n });\n }\n });\n case 10:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' pincerArrow';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('pincer-arrow-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this12.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this12.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n PincerArrowObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (this.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context.next = 59;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = this._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n i = 0;\n case 43:\n if (!(i < heightModeData.length)) {\n _context.next = 51;\n break;\n }\n if (!(heightModeData[i].key == this.heightMode)) {\n _context.next = 48;\n break;\n }\n heightModeDataLegpElm.value = heightModeData[i].value;\n heightModeObject.legp_searchActive(heightModeData[i].value);\n return _context.abrupt(\"break\", 51);\n case 48:\n i++;\n _context.next = 43;\n break;\n case 51:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i = 0; _i < heightModeData.length; _i++) {\n if (heightModeData[_i].value === heightModeDataLegpElm.value) {\n _this12.heightMode = heightModeData[_i].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this12.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n this._elms.height = heightElm;\n this._elms.heightBox = heightBoxElm;\n this._elms.heightMode = heightModeDataLegpElm;\n this._elms.heightConfirm = heightConfirmElm;\n this._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this12.operate.positionEditing) {\n _this12.positionEditing = false;\n _this12.height = _this12.height + Number(heightElm.value);\n } else {\n PincerArrowObject.closeNodeEdit(_this12);\n _this12.heightMode = _this12.heightMode;\n setTimeout(function () {\n _this12.height = _this12.height + Number(heightElm.value);\n }, 100);\n }\n });\n case 59:\n setTimeout(function () {\n _this12.attributeLink = _this12.options.attribute.link.content;\n _this12.attributeVr = _this12.options.attribute.vr.content;\n _this12.cameraSelect && _this12.cameraSelect();\n _this12.goodsSelect && _this12.goodsSelect();\n var tagData = _this12.attributeSelect;\n var attributeElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this12._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i2 = 0; _i2 < tagData.length; _i2++) {\n if (tagData[_i2].key === _this12.options.attributeType) {\n attributeSelectElm.value = tagData[_i2].value;\n legpObject.legp_searchActive(tagData[_i2].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this12.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this12.options['area-unit'];\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this12.areaUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this12._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this12._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this12.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this12.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this12._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 63;\n break;\n case 62:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 63:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this13 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineColor = this.originalOptions.line.color;\n this.lineWidth = this.originalOptions.line.width;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n for (var i = 0; i < this.options.positions.length; i++) {\n if (this._elms.lng && this._elms.lng[i]) {\n this._elms.lng[i].innerHTML = this.options.positions[i].lng.toFixed(8);\n }\n if (this._elms.lat && this._elms.lat[i]) {\n this._elms.lat[i].innerHTML = this.options.positions[i].lat.toFixed(8);\n }\n if (this._elms.alt && this._elms.alt[i]) {\n this._elms.alt[i].innerHTML = Number(this.options.height.toFixed(2));\n }\n }\n this.heightMode = this.heightMode;\n for (var _i8 = 0; _i8 < this.nodePoints.length; _i8++) {\n this.sdk.viewer.entities.remove(this.nodePoints[_i8]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n var spreadState = this.options.spreadState;\n this.removeAnimate();\n setTimeout(function () {\n _this13.loop = _this13.options.loop;\n _this13.spreadState = spreadState;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(_this13.sdk, _this13.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(_this13.sdk, _this13.options.id);\n }, 200);\n setTimeout(function () {\n _this13.previous = null;\n }, 50);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.removeAnimate();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label && this.label.remove();\n this.entity && this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 9;\n return this.sdk.removeIncetance(this.options.id);\n case 9:\n _context2.next = 11;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n ground,\n i,\n height,\n a,\n _i9,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 51;\n break;\n case 25:\n positionArray = [];\n _context3.t0 = this.heightMode;\n _context3.next = _context3.t0 === 0 ? 29 : _context3.t0 === '0' ? 29 : _context3.t0 === 1 ? 31 : _context3.t0 === '1' ? 31 : _context3.t0 === 2 ? 33 : _context3.t0 === '2' ? 33 : 35;\n break;\n case 29:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 31:\n ground = false;\n return _context3.abrupt(\"break\", 35);\n case 33:\n ground = true;\n return _context3.abrupt(\"break\", 35);\n case 35:\n if (!ground) {\n _context3.next = 48;\n break;\n }\n i = 0;\n case 37:\n if (!(i < this.options.positions.length)) {\n _context3.next = 46;\n break;\n }\n _context3.next = 40;\n return this.getClampToHeight(this.options.positions[i]);\n case 40:\n height = _context3.sent;\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 43:\n i++;\n _context3.next = 37;\n break;\n case 46:\n _context3.next = 49;\n break;\n case 48:\n if (this.positionsH) {\n for (_i9 = 0; _i9 < this.positionsH.length; _i9++) {\n positionArray.push(this.positionsH[_i9].x, this.positionsH[_i9].y, this.positionsH[_i9].z);\n }\n }\n case 49:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 51:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this14 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this14.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this15 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.removeAnimate();\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n if (status === true) {\n var _Cesium$Cartesian;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var array = [];\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i10 = 0; _i10 < positions.length; _i10++) {\n center.x - positions[_i10].x;\n disparity.push({\n x: center.x - positions[_i10].x,\n y: center.y - positions[_i10].y,\n z: center.z - positions[_i10].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n newpositions = [];\n for (var _i11 = 0; _i11 < disparity.length; _i11++) {\n newpositions.push({\n x: cartesian.x - disparity[_i11].x,\n y: cartesian.y - disparity[_i11].y,\n z: cartesian.z - disparity[_i11].z\n });\n }\n _this15.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this15.event.mouse_move(function () {});\n _this15.event.mouse_left(function () {});\n _this15.event.mouse_right(function () {});\n _this15.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i12 = 0; _i12 < disparity.length; _i12++) {\n var pos3 = {\n x: cartesian.x - disparity[_i12].x,\n y: cartesian.y - disparity[_i12].y,\n z: cartesian.z - disparity[_i12].z\n };\n newpositions.push(pos3);\n _this15.options.positions[_i12] = _this15.cartesian3Towgs84(pos3, _this15.sdk.viewer);\n if (_this15._elms.lng && _this15._elms.lng[_i12]) {\n _this15._elms.lng[_i12].innerHTML = _this15.options.positions[_i12].lng.toFixed(8);\n }\n if (_this15._elms.lat && _this15._elms.lat[_i12]) {\n _this15._elms.lat[_i12].innerHTML = _this15.options.positions[_i12].lat.toFixed(8);\n }\n }\n _this15.positions = newpositions;\n _this15.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.positions)\n };\n _this15.positionEditing = false;\n if (_this15._positionEditingCallback) {\n _this15._positionEditingCallback();\n _this15._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this15.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this15.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this15.positionEditing = false;\n } else {\n _this15.event.mouse_move(function () {});\n _this15.event.mouse_left(function () {});\n _this15.event.mouse_right(function () {});\n _this15.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i13 = 0; _i13 < disparity.length; _i13++) {\n var pos3 = {\n x: cartesian.x - disparity[_i13].x,\n y: cartesian.y - disparity[_i13].y,\n z: cartesian.z - disparity[_i13].z\n };\n newpositions.push(pos3);\n _this15.options.positions[_i13] = _this15.cartesian3Towgs84(pos3, _this15.sdk.viewer);\n if (_this15._elms.lng && _this15._elms.lng[_i13]) {\n _this15._elms.lng[_i13].innerHTML = _this15.options.positions[_i13].lng.toFixed(8);\n }\n if (_this15._elms.lat && _this15._elms.lat[_i13]) {\n _this15._elms.lat[_i13].innerHTML = _this15.options.positions[_i13].lat.toFixed(8);\n }\n }\n _this15.positions = newpositions;\n _this15.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this15.positions)\n };\n _this15.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var position84 = [];\n if (newpositions.length > 0) {\n for (var _i14 = 0; _i14 < newpositions.length; _i14++) {\n position84.push(_this.cartesian3Towgs84(newpositions[_i14], _this.sdk.viewer));\n }\n } else {\n for (var _i15 = 0; _i15 < positions.length; _i15++) {\n position84.push(_this.cartesian3Towgs84(positions[_i15], _this.sdk.viewer));\n }\n }\n _this.renewPositions(position84);\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n if (!this.previous) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n } else {\n this.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.previous.positions);\n }\n var position84 = [];\n for (var _i16 = 0; _i16 < this.positions.length; _i16++) {\n position84.push(this.cartesian3Towgs84(this.positions[_i16], this.sdk.viewer));\n }\n this.renewPositions(position84);\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this16 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n this.positionEditing = false;\n setTimeout(function () {\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n var objectsToExclude, i, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this17.sdk.viewer.entities.values);\n i = 0;\n case 2:\n if (!(i < optionsPositions.length)) {\n _context4.next = 11;\n break;\n }\n _context4.next = 5;\n return _this17.getClampToHeight(_this17.options.positions[i], objectsToExclude);\n case 5:\n height = _context4.sent;\n entity = _this17.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n position: Cesium.Cartesian3.fromDegrees(optionsPositions[i].lng, optionsPositions[i].lat, height),\n billboard: {\n image: _this17.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this17.nodePoints.push(entity);\n case 8:\n i++;\n _context4.next = 2;\n break;\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints() {\n return _ref.apply(this, arguments);\n };\n }();\n _this16.removeAnimate();\n var _this17 = _this16;\n YJ.Measure.SetMeasureStatus(true);\n _this16.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', _this16.sdk);\n _this16.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this16.sdk);\n _this16.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var optionsPositions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.options.positions);\n var leftEvent = function leftEvent(movement, cartesian) {\n if (selectPoint) {\n _this16.options.positions[selectPoint.index] = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n optionsPositions[selectPoint.index] = _this16.options.positions[selectPoint.index];\n var index = selectPoint.index;\n var entity = _this16.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: index,\n position: Cesium.Cartesian3.fromDegrees(optionsPositions[selectPoint.index].lng, optionsPositions[selectPoint.index].lat, optionsPositions[selectPoint.index].alt),\n billboard: {\n image: _this16.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this16.nodePoints.splice(selectPoint.index, 0, entity);\n selectPoint = null;\n _this16.tip.set_text('请选择一个顶点,右键取消');\n } else {\n var pick = _this16.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n originalPosition = _this16.cartesian3Towgs84(pick.id.position.getValue(), _this16.sdk.viewer);\n _this16.nodePoints.splice(pick.id.index, 1);\n _this16.sdk.viewer.entities.remove(pick.id);\n _this16.tip.set_text('左键确定,右键取消');\n }\n }\n _this16.renewPositions();\n _this16.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n };\n var rightEvent = function rightEvent() {\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n if (selectPoint) {\n optionsPositions[selectPoint.index] = originalPosition;\n if (_this16._elms.lng && _this16._elms.lng[selectPoint.index]) {\n _this16._elms.lng[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (_this16._elms.lat && _this16._elms.lat[selectPoint.index]) {\n _this16._elms.lat[selectPoint.index].innerHTML = _this16.options.positions[selectPoint.index].lat.toFixed(8);\n }\n cb(null, optionsPositions);\n }\n _this16.options.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(optionsPositions);\n _this16.heightMode = _this16.heightMode;\n _this16.previous = null;\n };\n _this16.entity.polyline.clampToGround = true;\n _this16.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n _this16.entity.polygon.perPositionHeight = false;\n _this16.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this17.positionsH);\n }, false);\n _this16.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this17.positionsH), [_this17.positionsH[0], _this17.positionsH[1]]);\n }, false);\n setTimeout(function () {\n _this16.event.mouse_left(leftEvent);\n _this16.event.mouse_right(rightEvent);\n _this16.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n _this16.options.positions[selectPoint.index] = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n _this16.renewPositions();\n }\n _this16.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n _this16.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this16.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n var points = [[]];\n var pos84 = [];\n for (var i = 0; i < _this16.positionsH.length; i++) {\n var _position = _this16.cartesian3Towgs84(_this16.positionsH[i], _this16.sdk.viewer);\n pos84.push(_position);\n points[0].push([_position.lng, _position.lat]);\n }\n var position = _this16.cartesian3Towgs84(_this16.positionsH[0], _this16.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.sdk.viewer.entities.values);\n setTimeout(function () {\n _this16.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this16.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }, 200);\n createNodePoints();\n }, 200);\n }\n }, 0);\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n var _Cesium$Cartesian2;\n var cartesian = Cesium.Cartesian3.fromDegrees(v.position.lng, v.position.lat, v.position.alt);\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var array = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i17 = 0; _i17 < positions.length; _i17++) {\n disparity.push({\n x: center.x - positions[_i17].x,\n y: center.y - positions[_i17].y,\n z: center.z - positions[_i17].z\n });\n }\n var newpositions = [];\n for (var _i18 = 0; _i18 < disparity.length; _i18++) {\n newpositions.push({\n x: cartesian.x - disparity[_i18].x,\n y: cartesian.y - disparity[_i18].y,\n z: cartesian.z - disparity[_i18].z\n });\n }\n this.label.position = [v.position.lng, v.position.lat, v.position.alt];\n var positions84 = [];\n if (newpositions.length > 0) {\n for (var _i19 = 0; _i19 < newpositions.length; _i19++) {\n positions84.push(this.cartesian3Towgs84(newpositions[_i19], this.sdk.viewer));\n }\n }\n var arr = this.computePincerArrow(positions84);\n if (arr.length == 0) {\n return;\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this18 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var positions = this.computePincerArrow(this.options.positions);\n if (positions.length == 0) {\n return;\n }\n var points = [[]];\n for (var i = 0; i < positions.length; i++) {\n var _position2 = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n points[0].push([_position2.lng, _position2.lat]);\n }\n var position = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this18.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }, {\n key: \"spreadTime\",\n get: function get() {\n return this.options.spreadTime;\n },\n set: function set(v) {\n var spreadTime = Number(v);\n if (isNaN(spreadTime)) {\n spreadTime = 3000;\n } else if (spreadTime < 500) {\n spreadTime = 500;\n } else if (spreadTime > 9999999) {\n spreadTime = 9999999;\n }\n this.options.spreadTime = spreadTime;\n if (this.spreadState) {\n this.setSpreadProgressByTime();\n }\n this._elms.spreadTime && this._elms.spreadTime.forEach(function (item) {\n item.value = spreadTime;\n });\n }\n }, {\n key: \"loop\",\n get: function get() {\n return this.options.loop;\n },\n set: function set(v) {\n this.options.loop = v;\n if (this.TweenAnimate) {\n if (v) {\n this.TweenAnimate.repeat(Infinity);\n } else {\n this.TweenAnimate.repeat();\n }\n }\n this._elms.loop && this._elms.loop.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"spreadState\",\n get: function get() {\n return this.options.spreadState;\n },\n set: function set(v) {\n this.options.spreadState = v;\n if (this.TweenAnimate) {\n if (v) {\n this.lineEdit = false;\n this.setSpreadProgressByTime(this.TweenAnimate._object.distance1 / this.TweenAnimate._valuesEnd.distance1 * this.spreadTime);\n } else {\n this.TweenAnimate.pause();\n }\n } else {\n if (v) {\n this.setSpreadProgressByTime();\n }\n }\n this._elms.spreadState && this._elms.spreadState.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"setSpreadProgressByTime\",\n value: function setSpreadProgressByTime() {\n var _this19 = this;\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (!this.entity) {\n return;\n }\n var that = this;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n var PincerArrowArr = this.computePincerArrow(this.options.positions);\n if (PincerArrowArr.length == 0) {\n return;\n }\n var arr;\n var lineArr;\n // if (arr.length >= 3) {\n // lineArr = [...arr, arr[0], arr[1]]\n // }\n // else {\n // lineArr = [...arr]\n // }\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n }\n var _getSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"getSdk\"])(),\n sdkP = _getSdk.sdkP,\n sdkD = _getSdk.sdkD;\n var thatP;\n if (sdkD && sdkP) {\n if (this.sdk === sdkD) {\n thatP = sdkP.entityMap.get(this.options.id);\n if (thatP && thatP.entity && thatP.entity.polygon && thatP.positionsH) {\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(thatP.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(thatP.positionsH), [thatP.positionsH[0], thatP.positionsH[1]]);\n }, false);\n }\n return;\n }\n }\n\n // this.entity.polygon.hierarchy = arr\n // this.entity.polyline.positions = lineArr\n\n var linePos841 = [];\n var linePos842 = [];\n var linePos843 = [];\n var turfLine = [];\n for (var _i20 = 0; _i20 <= 2; _i20++) {\n turfLine.push([this.options.positions[_i20].lng, this.options.positions[_i20].lat]);\n }\n turfLine.push([this.options.positions[0].lng, this.options.positions[0].lat]);\n var clockwiseRing = turf.lineString(turfLine);\n var isClockwise = turf.booleanClockwise(clockwiseRing);\n for (var _i21 = 0; _i21 <= 100; _i21++) {\n var pos84 = this.cartesian3Towgs84(PincerArrowArr[_i21], this.sdk.viewer);\n linePos841.push([pos84.lng, pos84.lat, pos84.alt]);\n }\n if (isClockwise) {\n linePos841.push([this.options.positions[3].lng, this.options.positions[3].lat, this.options.positions[3].alt]);\n } else {\n linePos841.push([this.options.positions[2].lng, this.options.positions[2].lat, this.options.positions[2].alt]);\n }\n for (var _i22 = 312; _i22 >= 212; _i22--) {\n var _pos = this.cartesian3Towgs84(PincerArrowArr[_i22], this.sdk.viewer);\n linePos842.push([_pos.lng, _pos.lat, _pos.alt]);\n }\n if (isClockwise) {\n linePos842.push([this.options.positions[2].lng, this.options.positions[2].lat, this.options.positions[2].alt]);\n } else {\n linePos842.push([this.options.positions[3].lng, this.options.positions[3].lat, this.options.positions[3].alt]);\n }\n linePos843.push([(this.options.positions[0].lng + this.options.positions[1].lng) / 2, (this.options.positions[0].lat + this.options.positions[1].lat) / 2], [this.options.positions[4].lng, this.options.positions[4].lat]);\n var positions = this.deepCopyObj(this.options.positions);\n var line1 = turf.lineString(linePos841);\n var distance1 = turf.length(line1, {\n units: 'kilometers'\n });\n var line2 = turf.lineString(linePos842);\n var distance2 = turf.length(line2, {\n units: 'kilometers'\n });\n var line3 = turf.lineString(linePos843);\n var distance3 = turf.length(line3, {\n units: 'kilometers'\n });\n var timeRatio = time / this.spreadTime;\n var m = 0;\n this.TweenAnimate = new TWEEN.Tween({\n distance1: distance1 * timeRatio,\n distance2: distance2 * timeRatio,\n distance3: distance3 * timeRatio\n }).to({\n distance1: distance1,\n distance2: distance2,\n distance3: distance3\n }, this.spreadTime - time).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop ? Infinity : 0).onRepeat(function () {\n if (time) {\n _this19.setSpreadProgressByTime();\n }\n }).onUpdate(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!(_this19.TweenAnimate._duration == Infinity)) {\n _context5.next = 2;\n break;\n }\n return _context5.abrupt(\"return\");\n case 2:\n m++;\n if (_this19.sdk.viewer) {\n _context5.next = 6;\n break;\n }\n _this19.removeAnimate();\n return _context5.abrupt(\"return\");\n case 6:\n setSpread(r);\n case 7:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return function (_x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n }()).onStart(function () {\n _this19.options.spreadState = true;\n _this19._elms.spreadState && _this19._elms.spreadState.forEach(function (item) {\n item.checked = true;\n });\n }).onComplete(function (d) {\n _this19.removeAnimate();\n });\n if (this.spreadState) {\n this.TweenAnimate.start();\n } else {\n setSpread({\n distance1: distance1 * timeRatio,\n distance2: distance2 * timeRatio,\n distance3: distance3 * timeRatio\n });\n }\n function setSpread(_x4) {\n return _setSpread.apply(this, arguments);\n }\n function _setSpread() {\n _setSpread = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6(v) {\n var index2, index3, sliced1, coordinates1, sliced2, coordinates2, sliced3, coordinates3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (that.show) {\n _context6.next = 2;\n break;\n }\n return _context6.abrupt(\"return\");\n case 2:\n index2 = 2;\n index3 = 3;\n if (isClockwise) {\n index2 = 3;\n index3 = 2;\n }\n if (v.distance1) {\n _context6.next = 10;\n break;\n }\n positions[index2].lng = positions[1].lng;\n positions[index2].lat = positions[1].lat;\n _context6.next = 16;\n break;\n case 10:\n _context6.next = 12;\n return turf.lineSliceAlong(line1, 0, v.distance1, {\n units: 'kilometers'\n });\n case 12:\n sliced1 = _context6.sent;\n coordinates1 = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced1.geometry.coordinates[sliced1.geometry.coordinates.length - 1]);\n positions[index2].lng = coordinates1[0];\n positions[index2].lat = coordinates1[1];\n case 16:\n if (v.distance2) {\n _context6.next = 21;\n break;\n }\n positions[index3].lng = positions[0].lng;\n positions[3].lat = positions[0].lat;\n _context6.next = 27;\n break;\n case 21:\n _context6.next = 23;\n return turf.lineSliceAlong(line2, 0, v.distance2, {\n units: 'kilometers'\n });\n case 23:\n sliced2 = _context6.sent;\n coordinates2 = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced2.geometry.coordinates[sliced2.geometry.coordinates.length - 1]);\n positions[index3].lng = coordinates2[0];\n positions[index3].lat = coordinates2[1];\n case 27:\n if (v.distance3) {\n _context6.next = 32;\n break;\n }\n positions[4].lng = linePos843[0][0];\n positions[4].lat = linePos843[0][1];\n _context6.next = 38;\n break;\n case 32:\n _context6.next = 34;\n return turf.lineSliceAlong(line3, 0, v.distance3, {\n units: 'kilometers'\n });\n case 34:\n sliced3 = _context6.sent;\n coordinates3 = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced3.geometry.coordinates[sliced3.geometry.coordinates.length - 1]);\n positions[4].lng = coordinates3[0];\n positions[4].lat = coordinates3[1];\n case 38:\n that.renewPositions(positions);\n case 39:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return _setSpread.apply(this, arguments);\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(that.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]);\n }, false);\n }\n\n // 移除动画\n }, {\n key: \"removeAnimate\",\n value: function removeAnimate() {\n this.spreadState = false;\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positionsH);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positionsH), [this.positionsH[0], this.positionsH[1]]);\n }\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(position84) {\n var _this20 = this;\n if (this._error || !this.sdk.viewer) {\n return;\n }\n var ground = false;\n var array = [];\n var positions = this.options.positions;\n if (position84) {\n positions = position84;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = this.computePincerArrow(positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n var pos84 = [];\n for (var _i23 = 0; _i23 < positionsA.length; _i23++) {\n var _position3 = this.cartesian3Towgs84(positionsA[_i23], this.sdk.viewer);\n pos84.push(_position3);\n points[0].push([_position3.lng, _position3.lat]);\n }\n var position = this.cartesian3Towgs84(positionsA[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var height = 0;\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray2 = [];\n if (!ground && this.nodePoints.length == 0) {\n for (var _i24 = 0; _i24 < points[0].length; _i24++) {\n fromDegreesArray2.push(points[0][_i24][0], points[0][_i24][1], this.height + height);\n }\n this.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.height + height]);\n } else {\n this.positionsH = positionsA;\n setTimeout(function () {\n if (!_this20.sdk.viewer) {\n return;\n }\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this20.sdk.viewer.entities.values);\n _this20.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this20.label && (_this20.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n if (!this.spreadState) {\n this.areaByMeter = this.computeArea(pos84);\n this.areaChangeCallBack && this.areaChangeCallBack();\n }\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = that.computePincerArrow(that.options.positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n for (var _i25 = 0; _i25 < positionsA.length; _i25++) {\n var _position4 = that.cartesian3Towgs84(positionsA[_i25], that.sdk.viewer);\n points[0].push([_position4.lng, _position4.lat]);\n }\n var position = that.cartesian3Towgs84(positionsA[0], that.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n\n // if (!that.options.label.position) {\n // that.options.label.position = { lng: centroid.geometry.coordinates[0], lat: centroid.geometry.coordinates[1], alt: that.height + height }\n // }\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: that.height + height\n };\n var fromDegreesArray2 = [];\n for (var _i26 = 0; _i26 < points[0].length; _i26++) {\n fromDegreesArray2.push(points[0][_i26][0], points[0][_i26][1], that.height + height);\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n // that.options.label.ground = ground\n\n that.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: !ground ? new Cesium.PolygonHierarchy(that.positionsH) : new Cesium.PolygonHierarchy(positionsA),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n PincerArrowObject.createLabel(that);\n var pos84 = [];\n for (var _i27 = 0; _i27 < positionsA.length; _i27++) {\n pos84.push(that.cartesian3Towgs84(positionsA[_i27], that.sdk.viewer));\n }\n that.areaByMeter = that.computeArea(pos84);\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n that.spreadState = that.options.spreadState;\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee7(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n // ground: that.options.label.ground,\n });\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n function createLabel(_x5) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (PincerArrowObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUGluY2VyQXJyb3dPYmplY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvUGluY2VyQXJyb3dPYmplY3QvaW5kZXguanM/MTYxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog5Y+M566t5aS0XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgZ2V0U2RrLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuLy8gaW1wb3J0IEVkaXRQYXJ0aWNsZSBmcm9tIFwiLi4vLi4vTW9kZWxDb250cm9sbGVyL0VkaXRQYXJ0aWNsZVwiO1xyXG5cclxuY2xhc3MgUGluY2VyQXJyb3dPYmplY3QgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDlj4znrq3lpLRcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPSdyZ2JhKDI1NSwgMCwgMCwgMC41KScge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodE1vZGU9MntudW1iZXJ9IOmrmOW6puaooeW8j++8iDDvvJrmtbfmi5Tpq5jluqbvvJsx77ya55u45a+55Zyw6KGo77ybMu+8muS+nemZhOaooeW8j++8iVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUge29iamVjdH0g6L655qGGXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS53aWR0aD0yIHtzdHJpbmd9IOi+ueahhuWuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUuY29sb3I9XCJyZ2JhKDE1NSwgMTU1LCAxMjQsIDAuODkpXCIge3N0cmluZ30g6L655qGG6aKc6ImyXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zcHJlYWRTdGF0ZT1mYWxzZSB7Ym9vbGVhbn0g5Yqo55S7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubG9vcD1mYWxzZSB7bG9vcH0g5Yqo55S76YeN5aSNXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3ByZWFkVGltZT0zMDAwIHtudW1iZXJ9IOWKqOeUu+aMgee7reaXtumVvyjmr6vnp5IpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5qCH562+5a+56LGhXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwudGV4dCB7c3RyaW5nfSDmoIfnrb7mlofmnKxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IHtvYmplY3R9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+acquWRveWQjeWvueixoSdcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgXCIjZmYwMDAwODBcIlxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUgPSBvcHRpb25zLmxpbmUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5saW5lLndpZHRoID0gKCh0aGlzLm9wdGlvbnMubGluZS53aWR0aCB8fCB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9PT0gMCkgPyB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA6IDMpXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHRoaXMub3B0aW9ucy5saW5lLmNvbG9yIHx8ICdyZ2JhKDI1NSwgMCwgMCwgMSknXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHRcclxuICAgIHRoaXMub3B0aW9ucy5sb29wID0gb3B0aW9ucy5sb29wIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSBvcHRpb25zLnNwcmVhZFN0YXRlIHx8IGZhbHNlXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhpcy5zcHJlYWRUaW1lID0gb3B0aW9ucy5zcHJlYWRUaW1lXHJcbiAgICB0aGlzLmVudGl0eVxyXG4gICAgdGhpcy5ldmVudFxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IHtcclxuICAgICAgdGV4dDogdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgIHNob3c6IG9wdGlvbnMubGFiZWwuc2hvdyB8fCBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IG9wdGlvbnMubGFiZWwucG9zaXRpb24sXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZm9udFNpemUgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6IChvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiAob3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwKSA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG5cclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYVxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnJcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucG9zaXRpb25zIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgNSkge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICflj4znrq3lpLTmnIDlsJHpnIDopoHkupTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5fZXJyb3IsXHJcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmhlaWdodCAmJiB0aGlzLm9wdGlvbnMuaGVpZ2h0ICE9PSAwKSB7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaGVpZ2h0IDwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICAgIFBpbmNlckFycm93T2JqZWN0LmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ1BpbmNlckFycm93T2JqZWN0J1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcbiAgc2V0IG5hbWUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnRleHQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm5hbWUgJiYgdGhpcy5fZWxtcy5uYW1lLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlnb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA/IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlIDogMFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0TW9kZSh2KSB7XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IFtdXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVOYW1lID0gJydcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnNILFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFswXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hcclxuICAgICAgKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5rW35ouU6auY5bqmJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfnm7jlr7nlnLDooagnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn5L6d6ZmE5qih5Z6LJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlLnZhbHVlID0gaGVpZ2h0TW9kZU5hbWUpXHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCAmJiAodGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lXHJcbiAgICAgICkpXHJcbiAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybSAmJiB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICB9XHJcblxyXG4gIHNldCBoZWlnaHQodikge1xyXG4gICAgaWYgKCF2IHx8IGlzTmFOKE51bWJlcih2KSkpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IDBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gTnVtYmVyKE51bWJlcih2KS50b0ZpeGVkKDIpKVxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9uc0gsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNIWzBdLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFsxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDXHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5jb2xvclxyXG4gIH1cclxuICBzZXQgbGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdiB8fCAncmdiYSgyNTUsIDAsIDAsIDAuNSknXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5bGluZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMubGluZS5jb2xvcilcclxuICAgIGlmICh0aGlzLl9lbG1zLmxpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMubGluZS5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICB9XHJcbiAgc2V0IGxpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9ICgodiB8fCB2ID09PSAwKSA/IHYgOiAzKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggPSB0aGlzLm9wdGlvbnMubGluZS53aWR0aFxyXG4gICAgdGhpcy5fZWxtcy5saW5lV2lkdGggJiYgdGhpcy5fZWxtcy5saW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgIH1cclxuICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgbGV0IHBvc2l0aW9uc0EgPSB0aGF0LmNvbXB1dGVQaW5jZXJBcnJvdyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgaWYgKHBvc2l0aW9uc0EubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbaV0sIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVswXSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvaW50cyk7XHJcbiAgICAvLyBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKTtcclxuXHJcblxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgbGV0IGhlaWdodCA9IDBcclxuXHJcbiAgICBzd2l0Y2ggKHRoYXQub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGhlaWdodCA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pKSB8fCAwXHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgYWx0OiB0aGF0LmhlaWdodCArIGhlaWdodCB9XHJcbiAgICAvLyB9XHJcbiAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sIGFsdDogdGhhdC5oZWlnaHQgKyBoZWlnaHQgfVxyXG5cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50c1swXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKFxyXG4gICAgICAgIHBvaW50c1swXVtpXVswXSxcclxuICAgICAgICBwb2ludHNbMF1baV1bMV0sXHJcbiAgICAgICAgdGhhdC5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoYXQuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21Db2xvck1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmNvbG9yXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAvLyB0aGF0Lm9wdGlvbnMubGFiZWwuZ3JvdW5kID0gZ3JvdW5kXHJcblxyXG4gICAgdGhhdC5wb3NpdGlvbnNIID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpXHJcblxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvbHlnb246IHtcclxuICAgICAgICBoaWVyYXJjaHk6ICFncm91bmQgPyBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnNIKSA6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb3NpdGlvbnNBKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogIWdyb3VuZCA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBtYXRlcmlhbDogbWF0ZXJpYWwsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhhdC5wb3NpdGlvbnNILCB0aGF0LnBvc2l0aW9uc0hbMF0sIHRoYXQucG9zaXRpb25zSFsxXV0sXHJcbiAgICAgICAgd2lkdGg6IHRoYXQub3B0aW9ucy5saW5lLndpZHRoLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5saW5lLmNvbG9yKSxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIGFyY1R5cGU6ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhhdC5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICBQaW5jZXJBcnJvd09iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgbGV0IHBvczg0ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3M4NC5wdXNoKHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVtpXSwgdGhhdC5zZGsudmlld2VyKSlcclxuICAgIH1cclxuICAgIHRoYXQuYXJlYUJ5TWV0ZXIgPSB0aGF0LmNvbXB1dGVBcmVhKHBvczg0KTtcclxuICAgIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrICYmIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrKClcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnNob3cpIHtcclxuXHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuXHJcbiAgICB0aGF0LnNwcmVhZFN0YXRlID0gdGhhdC5vcHRpb25zLnNwcmVhZFN0YXRlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIC8vIGdyb3VuZDogdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KCkge1xyXG4gICAgICAgIGxldCB0YWJsZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3BhdGlhbC1pbmZvLXRhYmxlJylbMF1cclxuICAgICAgICBsZXQgdEJvZHlFbG0gPSB0YWJsZUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICB0Qm9keUVsbS5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZyA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgICAgICB0ci5jbGFzc05hbWUgPSAndHInXHJcbiAgICAgICAgICB0ci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj4ke2kgKyAxfTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxuZyBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsYXQgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgYWx0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgIGBcclxuICAgICAgICAgIGxldCBsbmdCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsbmcnKVswXVxyXG4gICAgICAgICAgbGV0IGxuZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbG5nLmlubmVySFRNTCA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOClcclxuICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmcpXHJcbiAgICAgICAgICBsZXQgbG5nSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBsbmdJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBsbmdJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGxuZ0lucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGxuZ0lucHV0Lm1pbiA9IC0xODBcclxuICAgICAgICAgIGxuZ0lucHV0Lm1heCA9IDE4MFxyXG4gICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgICAgbGV0IGxhdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhdCcpWzBdXHJcbiAgICAgICAgICBsZXQgbGF0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG4gICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdClcclxuICAgICAgICAgIGxldCBsYXRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGxhdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGxhdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgbGF0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgbGF0SW5wdXQubWluID0gLTkwXHJcbiAgICAgICAgICBsYXRJbnB1dC5tYXggPSA5MFxyXG4gICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgICAgbGV0IGFsdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsdCcpWzBdXHJcbiAgICAgICAgICBsZXQgYWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG4gICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIGxldCBhbHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGFsdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGFsdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgYWx0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgYWx0SW5wdXQubWluID0gLTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0Lm1heCA9IDk5OTk5OTk5OVxyXG4gICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcblxyXG4gICAgICAgICAgbG5nQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZ0lucHV0KVxyXG4gICAgICAgICAgICBsbmdJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgUGluY2VyQXJyb3dPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nID0gTnVtYmVyKE51bWJlcihsbmdJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nLmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBsYXRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0SW5wdXQpXHJcbiAgICAgICAgICAgIGxhdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBQaW5jZXJBcnJvd09iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxhdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxhdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQgPSBOdW1iZXIoTnVtYmVyKGxhdElucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXQuaW5uZXJIVE1MID0gX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gX3RoaXMuaGVpZ2h0XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGFsdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdElucHV0KVxyXG4gICAgICAgICAgICBhbHRJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICAgIF90aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgUGluY2VyQXJyb3dPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gTnVtYmVyKE51bWJlcihhbHRJbnB1dC52YWx1ZSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0LmlubmVySFRNTCA9IE51bWJlcihfdGhpcy5oZWlnaHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxuZy5wdXNoKGxuZylcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmxuZ0lucHV0LnB1c2gobG5nSW5wdXQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sYXQucHVzaChsYXQpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sYXRJbnB1dC5wdXNoKGxhdElucHV0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMuYWx0LnB1c2goYWx0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQucHVzaChhbHRJbnB1dClcclxuICAgICAgICAgIHRCb2R5RWxtLmFwcGVuZENoaWxkKHRyKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+WPjOeureWktOWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgc3ByZWFkU3RhdGUgPSB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGVcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSBzcHJlYWRTdGF0ZVxyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIH0sIDEwKTtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIOS6jOasoee8lui+keWbnuiwg1xyXG4gICAgICAgIHNlY29uZGFyeUVkaXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgUGluY2VyQXJyb3dPYmplY3Qubm9kZUVkaXQodGhpcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBwaW5jZXJBcnJvdydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygncGluY2VyLWFycm93LW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxMaW5lQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0XCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yRW5kXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIFBpbmNlckFycm93T2JqZWN0LkV2ZW50QmluZGluZyh0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvciA9IFtsaW5lY29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvciA9IFtsYWJlbENvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yID0gW2xpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgbGV0IGhlaWdodENvbmZpcm1FbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtY29uZmlybScpWzBdXHJcbiAgICAgIGhlaWdodEVsbS52YWx1ZSA9IDEwXHJcbiAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgIGhlaWdodEJveEVsbSAmJiAoaGVpZ2h0Qm94RWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94IGRpc2FibGVkJyk7XHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVEYXRhID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAgdmFsdWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIHZhbHVlOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIGtleTogJzEnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICBrZXk6ICcyJyxcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgICAgbGV0IGhlaWdodE1vZGVPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgKVxyXG4gICAgICBpZiAoaGVpZ2h0TW9kZU9iamVjdCkge1xyXG4gICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LW1vZGUnKVswXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLmtleSA9PSB0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0TW9kZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ID0gaGVpZ2h0Qm94RWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCA9IGhlaWdodE1vZGVPYmplY3RcclxuXHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgUGluY2VyQXJyb3dPYmplY3QuY2xvc2VOb2RlRWRpdCh0aGlzKVxyXG4gICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG4gICAgICAgIHRoaXMuZ29vZHNTZWxlY3QgJiYgdGhpcy5nb29kc1NlbGVjdCgpXHJcbiAgICAgICAgbGV0IHRhZ0RhdGEgPSB0aGlzLmF0dHJpYnV0ZVNlbGVjdFxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0LWJveCcpWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgXCIuYXR0cmlidXRlLXNlbGVjdFwiKVxyXG4gICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZVNlbGVjdEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbe1xyXG4gICAgICAgICAgbmFtZTogJ+W5s+aWueexsycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+W5s+aWueexsydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnljYPnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnljYPnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5LqpJyxcclxuICAgICAgICAgIHZhbHVlOiAn5LqpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+WFrOmhtycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+WFrOmhtydcclxuICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgdW5pdERhdGFMZWdwT2JqZWN0ID0gbGVncCh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdC1ib3gnKVswXSwgXCIuaW5wdXQtc2VsZWN0LXVuaXRcIilcclxuICAgICAgICBpZiAodW5pdERhdGFMZWdwT2JqZWN0KSB7XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2godW5pdERhdGEpXHJcbiAgICAgICAgICBsZXQgdW5pdERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zWydhcmVhLXVuaXQnXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh1bml0RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcmVhVW5pdCA9IHVuaXREYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuY29sb3JcclxuICAgIHRoaXMubGluZVdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGluZS53aWR0aFxyXG4gICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5sYWJlbEZvbnRTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgdGhpcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gICAgdGhpcy5sYWJlbE5lYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgICB0aGlzLmxhYmVsRmFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICB0aGlzLmxhYmVsTGluZVdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgICB0aGlzLmxhYmVsUGl4ZWxPZmZzZXQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcblxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdFtpXSkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuYWx0W2ldLmlubmVySFRNTCA9IE51bWJlcih0aGlzLm9wdGlvbnMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcblxyXG4gICAgbGV0IHNwcmVhZFN0YXRlID0gdGhpcy5vcHRpb25zLnNwcmVhZFN0YXRlXHJcbiAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9vcCA9IHRoaXMub3B0aW9ucy5sb29wXHJcbiAgICAgIHRoaXMuc3ByZWFkU3RhdGUgPSBzcHJlYWRTdGF0ZVxyXG4gICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9LCAyMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLmVudGl0eSAmJiB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24gJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24pIHtcclxuICAgICAgbGV0IG9yaWVudGF0aW9uID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHx8IDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB8fCAtNjAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmdcclxuICAgICAgbGV0IGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0XHJcbiAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdFxyXG4gICAgICBsZXQgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24pIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgICAgbGV0IGdyb3VuZFxyXG4gICAgICBzd2l0Y2ggKHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGdyb3VuZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldKVxyXG4gICAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnNIKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucG9zaXRpb25zSC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2godGhpcy5wb3NpdGlvbnNIW2ldLngsIHRoaXMucG9zaXRpb25zSFtpXS55LCB0aGlzLnBvc2l0aW9uc0hbaV0ueilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omT5byA5a+M5paH5pys5qGGXHJcbiAgICovXHJcbiAgb3BlblJpY2hUZXh0RWRpdG9yKGUpIHtcclxuICAgIHJpY2hUZXh0Lm9wZW4odGhpcy5vcHRpb25zLmlkLCB0aGlzLm9wdGlvbnMubmFtZSwgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudClcclxuICAgIHJpY2hUZXh0LnByaW1hcnlDYWxsQmFjayA9IChjb250ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBjb250ZW50XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlQW5pbWF0ZSgpXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nID0gc3RhdHVzXHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjkpYCkpXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmaXJzdHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgYXJyYXkucHVzaChbZmlyc3Rwb3NpdGlvbi5sbmcsIGZpcnN0cG9zaXRpb24ubGF0XSlcclxuICAgICAgdmFyIHBvbHlnb24gPSB0dXJmLnBvbHlnb24oW2FycmF5XSk7XHJcbiAgICAgIHZhciBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICAgIGxldCBjZW50ZXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5jZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54XHJcbiAgICAgICAgZGlzcGFyaXR5LnB1c2goe1xyXG4gICAgICAgICAgeDogY2VudGVyLnggLSBwb3NpdGlvbnNbaV0ueCxcclxuICAgICAgICAgIHk6IGNlbnRlci55IC0gcG9zaXRpb25zW2ldLnksXHJcbiAgICAgICAgICB6OiBjZW50ZXIueiAtIHBvc2l0aW9uc1tpXS56LFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwb3MzID0ge1xyXG4gICAgICAgICAgICB4OiBjYXJ0ZXNpYW4ueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gocG9zMylcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZ1tpXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sYXQgJiYgdGhpcy5fZWxtcy5sYXRbaV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3Bhcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGxldCBwb3MzID0ge1xyXG4gICAgICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaChwb3MzKVxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VsbXMubG5nW2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmxhdFtpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdC50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gbmV3cG9zaXRpb25zXHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uODQgPSBbXVxyXG4gICAgICAgIGlmIChuZXdwb3NpdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcG9zaXRpb244NC5wdXNoKF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KG5ld3Bvc2l0aW9uc1tpXSwgX3RoaXMuc2RrLnZpZXdlcikpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcG9zaXRpb244NC5wdXNoKF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgX3RoaXMuc2RrLnZpZXdlcikpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLnJlbmV3UG9zaXRpb25zKHBvc2l0aW9uODQpXHJcbiAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShfdGhpcy5wb3NpdGlvbnNIKVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gWy4uLl90aGlzLnBvc2l0aW9uc0gsIF90aGlzLnBvc2l0aW9uc0hbMF0sIF90aGlzLnBvc2l0aW9uc0hbMV1dXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwuZW50aXR5ICYmIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMSlgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnByZXZpb3VzKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFsuLi50aGlzLnByZXZpb3VzLnBvc2l0aW9uc11cclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zaXRpb244NCA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbjg0LnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnBvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKHBvc2l0aW9uODQpXHJcblxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShfdGhpcy5wb3NpdGlvbnNIKVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBbLi4uX3RoaXMucG9zaXRpb25zSCwgX3RoaXMucG9zaXRpb25zSFswXSwgX3RoaXMucG9zaXRpb25zSFsxXV1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZ1xyXG4gIH1cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcbiAgZ2V0IGFyZWFDaGFuZ2VDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBhcmVhQ2hhbmdlQ2FsbEJhY2soY2QpIHtcclxuICAgIHRoaXMuX2FyZWFDaGFuZ2VDYWxsQmFjayA9IGNkXHJcbiAgfVxyXG5cclxuXHJcbiAgbm9kZUVkaXQoY2IgPSAoKSA9PiB7IH0pIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn6K+36YCJ5oup5LiA5Liq6aG254K577yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb25cclxuICAgICAgICBsZXQgb3B0aW9uc1Bvc2l0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zXVxyXG5cclxuICAgICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIG9wdGlvbnNQb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF1cclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gc2VsZWN0UG9pbnQuaW5kZXhcclxuICAgICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKG9wdGlvbnNQb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZywgb3B0aW9uc1Bvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LCBvcHRpb25zUG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5hbHQpLFxyXG4gICAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMubm9kZVBvaW50cy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDAsIGVudGl0eSlcclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBwaWNrID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pO1xyXG4gICAgICAgICAgICBpZiAocGljayAmJiBwaWNrLmlkICYmIHBpY2suaWQubmFtZSAmJiBwaWNrLmlkLm5hbWUgPT09ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50Jykge1xyXG4gICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBpY2suaWQucG9zaXRpb24uZ2V0VmFsdWUoKSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICAgIHRoaXMubm9kZVBvaW50cy5zcGxpY2UocGljay5pZC5pbmRleCwgMSlcclxuICAgICAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHBpY2suaWQpXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruehruWumu+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmlnaHRFdmVudCA9ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNQb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNiKG51bGwsIG9wdGlvbnNQb3NpdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gWy4uLm9wdGlvbnNQb3NpdGlvbnNdXHJcbiAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIHRoaXMucHJldmlvdXMgPSBudWxsXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWVcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUNcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBbLi4uX3RoaXMucG9zaXRpb25zSCwgX3RoaXMucG9zaXRpb25zSFswXSwgX3RoaXMucG9zaXRpb25zSFsxXV1cclxuICAgICAgICB9LCBmYWxzZSlcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG5cclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgICAgIHJpZ2h0RXZlbnQoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgICBsZXQgcG9pbnRzID0gW1tdXVxyXG4gICAgICAgICAgbGV0IHBvczg0ID0gW11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnNILmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5wb3NpdGlvbnNIW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHBvczg0LnB1c2gocG9zaXRpb24pXHJcbiAgICAgICAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zSFswXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgICAgICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvaW50cylcclxuICAgICAgICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbilcclxuICAgICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpc1xyXG4gICAgICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgICAgIGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgICAgICAudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICAgIGNyZWF0ZU5vZGVQb2ludHMoKVxyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTm9kZVBvaW50cygpIHtcclxuICAgICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLl90aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zUG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCBfdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICBsZXQgZW50aXR5ID0gX3RoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMob3B0aW9uc1Bvc2l0aW9uc1tpXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbaV0ubGF0LCBoZWlnaHQpLFxyXG4gICAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IF90aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBfdGhpcy5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU5vZGVFZGl0KCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbih2KSB7XHJcbiAgICBsZXQgY2FydGVzaWFuID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModi5wb3NpdGlvbi5sbmcsIHYucG9zaXRpb24ubGF0LCB2LnBvc2l0aW9uLmFsdClcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgbGV0IGRpc3Bhcml0eSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBhcnJheS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgZmlyc3Rwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICBhcnJheS5wdXNoKFtmaXJzdHBvc2l0aW9uLmxuZywgZmlyc3Rwb3NpdGlvbi5sYXRdKVxyXG4gICAgdmFyIHBvbHlnb24gPSB0dXJmLnBvbHlnb24oW2FycmF5XSk7XHJcbiAgICB2YXIgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgbGV0IGNlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZGlzcGFyaXR5LnB1c2goe1xyXG4gICAgICAgIHg6IGNlbnRlci54IC0gcG9zaXRpb25zW2ldLngsXHJcbiAgICAgICAgeTogY2VudGVyLnkgLSBwb3NpdGlvbnNbaV0ueSxcclxuICAgICAgICB6OiBjZW50ZXIueiAtIHBvc2l0aW9uc1tpXS56LFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3Bhcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBuZXdwb3NpdGlvbnMucHVzaCh7XHJcbiAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgIHo6IGNhcnRlc2lhbi56IC0gZGlzcGFyaXR5W2ldLnosXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3YucG9zaXRpb24ubG5nLCB2LnBvc2l0aW9uLmxhdCwgdi5wb3NpdGlvbi5hbHRdXHJcblxyXG4gICAgbGV0IHBvc2l0aW9uczg0ID0gW11cclxuICAgIGlmIChuZXdwb3NpdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld3Bvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uczg0LnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChuZXdwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcikpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBhcnIgPSB0aGlzLmNvbXB1dGVQaW5jZXJBcnJvdyhwb3NpdGlvbnM4NClcclxuICAgIGlmIChhcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoYXJyKVxyXG4gICAgfSwgZmFsc2UpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAoYXJyLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5hcnIsIGFyclswXSwgYXJyWzFdXVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBbLi4uYXJyXVxyXG4gICAgICB9XHJcbiAgICB9LCBmYWxzZSlcclxuICB9XHJcblxyXG4gIHNldERJVihvcHRpb25zID0geyBkb21pZDogXCJcIiwgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IChvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwKSA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSAob3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCkgPyBvcHRpb25zLnkgOiAxMFxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNvbXB1dGVQaW5jZXJBcnJvdyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBwb2ludHMgPSBbW11dXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgfVxyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb2ludHMpO1xyXG4gICAgLy8gbGV0IGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbik7XHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pXHJcblxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcigocGVyY2VudGFnZSkgPT4ge1xyXG4gICAgICAvL+i9rOaNouWIsOWxj+W5leWdkOagh1xyXG4gICAgICBpZiAoc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnJykge1xyXG4gICAgICAgIGxldCB3aW5wb3MgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FydGVzaWFuVG9DYW52YXNDb29yZGluYXRlcyhzaXRlSW5mb1Bvc2l0aW9uKTtcclxuICAgICAgICBpZiAod2lucG9zKSB7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5sZWZ0ID0gKHdpbnBvcy54ICsgb3B0aW9ucy54KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLnRvcCA9ICh3aW5wb3MueSArIG9wdGlvbnMueSkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBzcHJlYWRUaW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zcHJlYWRUaW1lXHJcbiAgfVxyXG5cclxuICBzZXQgc3ByZWFkVGltZSh2KSB7XHJcbiAgICBsZXQgc3ByZWFkVGltZSA9IE51bWJlcih2KVxyXG4gICAgaWYgKGlzTmFOKHNwcmVhZFRpbWUpKSB7XHJcbiAgICAgIHNwcmVhZFRpbWUgPSAzMDAwXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzcHJlYWRUaW1lIDwgNTAwKSB7XHJcbiAgICAgIHNwcmVhZFRpbWUgPSA1MDBcclxuICAgIH0gZWxzZSBpZiAoc3ByZWFkVGltZSA+IDk5OTk5OTkpIHtcclxuICAgICAgc3ByZWFkVGltZSA9IDk5OTk5OTlcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5zcHJlYWRUaW1lID0gc3ByZWFkVGltZVxyXG4gICAgaWYgKHRoaXMuc3ByZWFkU3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnNwcmVhZFRpbWUgJiYgdGhpcy5fZWxtcy5zcHJlYWRUaW1lLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHNwcmVhZFRpbWVcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbG9vcCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG9vcFxyXG4gIH1cclxuICBzZXQgbG9vcCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubG9vcCA9IHZcclxuICAgIGlmICh0aGlzLlR3ZWVuQW5pbWF0ZSkge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnJlcGVhdChJbmZpbml0eSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5yZXBlYXQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxvb3AgJiYgdGhpcy5fZWxtcy5sb29wLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzcHJlYWRTdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGVcclxuICB9XHJcbiAgc2V0IHNwcmVhZFN0YXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZSA9IHZcclxuICAgIGlmICh0aGlzLlR3ZWVuQW5pbWF0ZSkge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMubGluZUVkaXQgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhpcy5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZTEgLyB0aGlzLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlMSAqIHRoaXMuc3ByZWFkVGltZSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5wYXVzZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnNwcmVhZFN0YXRlICYmIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGltZSA9IDApIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgIGxldCBQaW5jZXJBcnJvd0FyciA9IHRoaXMuY29tcHV0ZVBpbmNlckFycm93KHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICBpZiAoUGluY2VyQXJyb3dBcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgYXJyXHJcbiAgICBsZXQgbGluZUFyclxyXG4gICAgLy8gaWYgKGFyci5sZW5ndGggPj0gMykge1xyXG4gICAgLy8gICBsaW5lQXJyID0gWy4uLmFyciwgYXJyWzBdLCBhcnJbMV1dXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgbGluZUFyciA9IFsuLi5hcnJdXHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgVFdFRU4ucmVtb3ZlKHRoaXMuVHdlZW5BbmltYXRlKVxyXG4gICAgICB0aGlzLlR3ZWVuQW5pbWF0ZSA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBsZXQgeyBzZGtQLCBzZGtEIH0gPSBnZXRTZGsoKVxyXG4gICAgbGV0IHRoYXRQXHJcbiAgICBpZiAoc2RrRCAmJiBzZGtQKSB7XHJcbiAgICAgIGlmICh0aGlzLnNkayA9PT0gc2RrRCkge1xyXG4gICAgICAgIHRoYXRQID0gc2RrUC5lbnRpdHlNYXAuZ2V0KHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICBpZiAodGhhdFAgJiYgdGhhdFAuZW50aXR5ICYmIHRoYXRQLmVudGl0eS5wb2x5Z29uICYmIHRoYXRQLnBvc2l0aW9uc0gpIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0UC5wb3NpdGlvbnNIKVxyXG4gICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnRoYXRQLnBvc2l0aW9uc0gsIHRoYXRQLnBvc2l0aW9uc0hbMF0sIHRoYXRQLnBvc2l0aW9uc0hbMV1dXHJcbiAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IGFyclxyXG4gICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbGluZUFyclxyXG5cclxuICAgIGxldCBsaW5lUG9zODQxID0gW11cclxuICAgIGxldCBsaW5lUG9zODQyID0gW11cclxuICAgIGxldCBsaW5lUG9zODQzID0gW11cclxuXHJcbiAgICBsZXQgdHVyZkxpbmUgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMjsgaSsrKSB7XHJcbiAgICAgIHR1cmZMaW5lLnB1c2goW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICB9XHJcbiAgICB0dXJmTGluZS5wdXNoKFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRdKVxyXG4gICAgbGV0IGNsb2Nrd2lzZVJpbmcgPSB0dXJmLmxpbmVTdHJpbmcodHVyZkxpbmUpO1xyXG4gICAgbGV0IGlzQ2xvY2t3aXNlID0gdHVyZi5ib29sZWFuQ2xvY2t3aXNlKGNsb2Nrd2lzZVJpbmcpXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTAwOyBpKyspIHtcclxuICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChQaW5jZXJBcnJvd0FycltpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBsaW5lUG9zODQxLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0LCBwb3M4NC5hbHRdKVxyXG4gICAgfVxyXG4gICAgaWYgKGlzQ2xvY2t3aXNlKSB7XHJcbiAgICAgIGxpbmVQb3M4NDEucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1szXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbM10ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzNdLmFsdF0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGluZVBvczg0MS5wdXNoKFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzJdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1syXS5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMl0uYWx0XSlcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGZvciAobGV0IGkgPSAzMTI7IGkgPj0gMjEyOyBpLS0pIHtcclxuICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChQaW5jZXJBcnJvd0FycltpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBsaW5lUG9zODQyLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0LCBwb3M4NC5hbHRdKVxyXG4gICAgfVxyXG4gICAgaWYgKGlzQ2xvY2t3aXNlKSB7XHJcbiAgICAgIGxpbmVQb3M4NDIucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1syXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMl0ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzJdLmFsdF0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGluZVBvczg0Mi5wdXNoKFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzNdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1szXS5sYXQsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbM10uYWx0XSlcclxuICAgIH1cclxuXHJcbiAgICBsaW5lUG9zODQzLnB1c2goWyh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyArIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMV0ubG5nKSAvIDIsICh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCArIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMV0ubGF0KSAvIDJdLCBbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1s0XS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbNF0ubGF0XSlcclxuXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuXHJcbiAgICBsZXQgbGluZTEgPSB0dXJmLmxpbmVTdHJpbmcobGluZVBvczg0MSk7XHJcbiAgICBsZXQgZGlzdGFuY2UxID0gdHVyZi5sZW5ndGgobGluZTEsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgIGxldCBsaW5lMiA9IHR1cmYubGluZVN0cmluZyhsaW5lUG9zODQyKTtcclxuICAgIGxldCBkaXN0YW5jZTIgPSB0dXJmLmxlbmd0aChsaW5lMiwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgbGV0IGxpbmUzID0gdHVyZi5saW5lU3RyaW5nKGxpbmVQb3M4NDMpO1xyXG4gICAgbGV0IGRpc3RhbmNlMyA9IHR1cmYubGVuZ3RoKGxpbmUzLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICBsZXQgdGltZVJhdGlvID0gdGltZSAvIHRoaXMuc3ByZWFkVGltZVxyXG4gICAgbGV0IG0gPSAwXHJcbiAgICB0aGlzLlR3ZWVuQW5pbWF0ZSA9IG5ldyBUV0VFTi5Ud2Vlbih7IGRpc3RhbmNlMTogZGlzdGFuY2UxICogdGltZVJhdGlvLCBkaXN0YW5jZTI6IGRpc3RhbmNlMiAqIHRpbWVSYXRpbywgZGlzdGFuY2UzOiBkaXN0YW5jZTMgKiB0aW1lUmF0aW8gfSkudG8oeyBkaXN0YW5jZTE6IGRpc3RhbmNlMSwgZGlzdGFuY2UyOiBkaXN0YW5jZTIsIGRpc3RhbmNlMzogZGlzdGFuY2UzIH0sIHRoaXMuc3ByZWFkVGltZSAtIHRpbWUpLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLnJlcGVhdCh0aGlzLm9wdGlvbnMubG9vcCA/IEluZmluaXR5IDogMCkub25SZXBlYXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGltZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUoKVxyXG4gICAgICB9XHJcbiAgICB9KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuX2R1cmF0aW9uID09IEluZmluaXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbSsrXHJcbiAgICAgIGlmICghdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBzZXRTcHJlYWQocilcclxuICAgIH0pLm9uU3RhcnQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSB0cnVlXHJcbiAgICAgIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUgJiYgdGhpcy5fZWxtcy5zcHJlYWRTdGF0ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSkub25Db21wbGV0ZSgoZCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnNwcmVhZFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnN0YXJ0KClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXRTcHJlYWQoeyBkaXN0YW5jZTE6IGRpc3RhbmNlMSAqIHRpbWVSYXRpbywgZGlzdGFuY2UyOiBkaXN0YW5jZTIgKiB0aW1lUmF0aW8sIGRpc3RhbmNlMzogZGlzdGFuY2UzICogdGltZVJhdGlvIH0pXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gc2V0U3ByZWFkKHYpIHtcclxuICAgICAgaWYgKCF0aGF0LnNob3cpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgaW5kZXgyID0gMlxyXG4gICAgICBsZXQgaW5kZXgzID0gM1xyXG4gICAgICBpZiAoaXNDbG9ja3dpc2UpIHtcclxuICAgICAgICBpbmRleDIgPSAzXHJcbiAgICAgICAgaW5kZXgzID0gMlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdi5kaXN0YW5jZTEpIHtcclxuICAgICAgICBwb3NpdGlvbnNbaW5kZXgyXS5sbmcgPSBwb3NpdGlvbnNbMV0ubG5nXHJcbiAgICAgICAgcG9zaXRpb25zW2luZGV4Ml0ubGF0ID0gcG9zaXRpb25zWzFdLmxhdFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzbGljZWQxID0gYXdhaXQgdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lMSwgMCwgdi5kaXN0YW5jZTEsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBsZXQgY29vcmRpbmF0ZXMxID0gWy4uLnNsaWNlZDEuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkMS5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXV1cclxuICAgICAgICBwb3NpdGlvbnNbaW5kZXgyXS5sbmcgPSBjb29yZGluYXRlczFbMF1cclxuICAgICAgICBwb3NpdGlvbnNbaW5kZXgyXS5sYXQgPSBjb29yZGluYXRlczFbMV1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIXYuZGlzdGFuY2UyKSB7XHJcbiAgICAgICAgcG9zaXRpb25zW2luZGV4M10ubG5nID0gcG9zaXRpb25zWzBdLmxuZ1xyXG4gICAgICAgIHBvc2l0aW9uc1szXS5sYXQgPSBwb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHNsaWNlZDIgPSBhd2FpdCB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUyLCAwLCB2LmRpc3RhbmNlMiwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgIGxldCBjb29yZGluYXRlczIgPSBbLi4uc2xpY2VkMi5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQyLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdXVxyXG4gICAgICAgIHBvc2l0aW9uc1tpbmRleDNdLmxuZyA9IGNvb3JkaW5hdGVzMlswXVxyXG4gICAgICAgIHBvc2l0aW9uc1tpbmRleDNdLmxhdCA9IGNvb3JkaW5hdGVzMlsxXVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdi5kaXN0YW5jZTMpIHtcclxuICAgICAgICBwb3NpdGlvbnNbNF0ubG5nID0gbGluZVBvczg0M1swXVswXVxyXG4gICAgICAgIHBvc2l0aW9uc1s0XS5sYXQgPSBsaW5lUG9zODQzWzBdWzFdXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHNsaWNlZDMgPSBhd2FpdCB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUzLCAwLCB2LmRpc3RhbmNlMywgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgIGxldCBjb29yZGluYXRlczMgPSBbLi4uc2xpY2VkMy5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQzLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdXVxyXG4gICAgICAgIHBvc2l0aW9uc1s0XS5sbmcgPSBjb29yZGluYXRlczNbMF1cclxuICAgICAgICBwb3NpdGlvbnNbNF0ubGF0ID0gY29vcmRpbmF0ZXMzWzFdXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoYXQucmVuZXdQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9uc0gpXHJcbiAgICB9LCBmYWxzZSlcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBbLi4udGhhdC5wb3NpdGlvbnNILCB0aGF0LnBvc2l0aW9uc0hbMF0sIHRoYXQucG9zaXRpb25zSFsxXV1cclxuICAgIH0sIGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgLy8g56e76Zmk5Yqo55S7XHJcbiAgcmVtb3ZlQW5pbWF0ZSgpIHtcclxuICAgIHRoaXMuc3ByZWFkU3RhdGUgPSBmYWxzZVxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBudWxsXHJcblxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhpcy5wb3NpdGlvbnNIKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNILCB0aGlzLnBvc2l0aW9uc0hbMF0sIHRoaXMucG9zaXRpb25zSFsxXV1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbjg0KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG5cclxuICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgaWYgKHBvc2l0aW9uODQpIHtcclxuICAgICAgcG9zaXRpb25zID0gcG9zaXRpb244NFxyXG4gICAgfVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICB9XHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuXHJcbiAgICBsZXQgcG9zaXRpb25zQSA9IHRoaXMuY29tcHV0ZVBpbmNlckFycm93KHBvc2l0aW9ucylcclxuICAgIGlmIChwb3NpdGlvbnNBLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGxldCBwb3M4NCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIHBvczg0LnB1c2gocG9zaXRpb24pXHJcbiAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKVxyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKVxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgaWYgKCFncm91bmQgJiYgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChcclxuICAgICAgICAgIHBvaW50c1swXVtpXVswXSxcclxuICAgICAgICAgIHBvaW50c1swXVtpXVsxXSxcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ICsgaGVpZ2h0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zSCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkyKVxyXG5cclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICB0aGlzLmhlaWdodCArIGhlaWdodFxyXG4gICAgICBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnNIID0gcG9zaXRpb25zQVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sIDEwMClcclxuICAgIH1cclxuXHJcbiAgICAvLyDorqHnrpfmipXlvbHpnaLnp69cclxuICAgIGlmICghdGhpcy5zcHJlYWRTdGF0ZSkge1xyXG4gICAgICB0aGlzLmFyZWFCeU1ldGVyID0gdGhpcy5jb21wdXRlQXJlYShwb3M4NClcclxuICAgICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBpbmNlckFycm93T2JqZWN0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE4SEE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6SEE7QUFBQTtBQUFBO0FBMEhBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEzQ0E7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF6ZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBQUE7QUFlQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBVUE7QUFBQTtBQVBBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQUE7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQXNHQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBOExBO0FBQ0E7QUFBQTtBQXpMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFrSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBZEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBbEJBO0FBQUE7QUFBQTtBQWpKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFvQkE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcG1EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpZ0RBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PincerArrowObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolygonObject/_element.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/PolygonObject/_element.js ***! - \************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u63CF\\u8FB9\\u989C\\u8272\\n
\\n
\\n
\\n \\u63CF\\u8FB9\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWdvbk9iamVjdC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Qb2x5Z29uT2JqZWN0L19lbGVtZW50LmpzPzVmODAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC11bml0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDBweDtcIj7mipXlvbHpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbnB1dC10ZXh0XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwiYXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VsZWN0LXVuaXRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJwb2x5Z29uLW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLlsZ7mgKfkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuepuumXtOS/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBoZWlnaHQtbW9kZS1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPumrmOW6puaooeW8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWlnaHQtbW9kZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlrlgLznu5/kuIDlop7liqA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGhlaWdodFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlybSBoZWlnaHQtY29uZmlybVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDtcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUgc3BhdGlhbC1pbmZvLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57uP5bqm77yIWO+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nuqzluqbvvIhZ77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPumrmOW6pu+8iFrvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIumdoumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumdouminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaPj+i+ueminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mj4/ovrnlrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OVwiIEBtb2RlbD1cImxpbmVXaWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0yKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFicz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBdUZBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolygonObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolygonObject/index.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/PolygonObject/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/PolygonObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 多边形\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import EditParticle from \"../../ModelController/EditParticle\";\nvar PolygonObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 多边形\r\n * @param sdk\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色\r\n * @param options.height {number} 高度\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * \r\n \r\n * \r\n * @param _Dialog {object} 弹框事件\r\n * @param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function PolygonObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PolygonObject);\n _this2 = _callSuper(this, PolygonObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || 'rgba(255, 0, 0, 0.5)';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.positions = options.positions || [];\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n _this2.entity;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.operate = {};\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n _this2.nodePoints = [];\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n // this.options.attribute.camera = this.options.attribute.camera || {}\n // this.options.attribute.camera.content =\n // this.options.attribute.camera.content || []\n // this.options.attribute.vr = this.options.attribute.vr || {}\n // this.options.attribute.vr.content =\n // this.options.attribute.vr.content || []\n // this.options.attribute.goods = this.options.attribute.goods || {}\n // this.options.attribute.goods.content =\n // this.options.attribute.goods.content || []\n\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n if (!_this2.options.positions || _this2.options.positions.length < 3) {\n _this2._error = '多边形最少需要三个坐标!';\n console.warn(_this2._error);\n } else {\n if (!_this2.options.height && _this2.options.height !== 0) {\n var height = _this2.options.positions[0].alt;\n for (var i = 1; i < _this2.options.positions.length; i++) {\n if (height < _this2.options.positions[i].alt) {\n height = _this2.options.positions[i].alt;\n }\n }\n _this2.options.height = height;\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2._zIndex = _this2.sdk.entityMap.size;\n PolygonObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(PolygonObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PolygonObject, [{\n key: \"type\",\n get: function get() {\n return 'PolygonObject';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n this.heightMode = 0;\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this4.options.heightMode = v || v == 0 ? v : 2;\n _this4.positionEditing = false;\n if (!_this4.entity) {\n return;\n }\n var positions = _this4.options.positions;\n var heightModeName = '';\n _this4.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this4.renewPositions();\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positions), [_this4.positions[0], _this4.positions[1]]);\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positions);\n switch (_this4.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this4.label.ground = ground;\n _this4.entity.polyline.clampToGround = ground;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4._elms.heightMode && (_this4._elms.heightMode.value = heightModeName);\n _this4._elms.heightModeObject && _this4._elms.heightModeObject.legp_searchActive(heightModeName);\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this5 = this;\n if (!v || isNaN(Number(v))) {\n this.options.height = 0;\n } else {\n this.options.height = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this5.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this5.positions);\n _this5.entity.polygon.perPositionHeight = !ground ? true : false;\n _this5.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this5.positions), [_this5.positions[0], _this5.positions[1]]);\n _this5.entity.polyline.clampToGround = !ground ? false : true;\n _this5.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this5.options.height;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this11 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' polygon';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('polygon-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('lineColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelLineColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorStart')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorEnd')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this11.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this11.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n }); // let heightElm = this._DialogObject._element.body.getElementsByClassName(\n // 'height'\n // )[0]\n // heightElm.value = this.height\n // heightElm.addEventListener('input', e => {\n // let value = e.target.value\n // if (\n // (e.data === '.' && value.indexOf('.') === -1) ||\n // (e.data === '-' && value.indexOf('-') === -1)\n // ) {\n // } else {\n // if (value) {\n // value = Number(value)\n // if (e.target.max && value > Number(e.target.max)) {\n // value = Number(e.target.max)\n // }\n // if (e.target.min && value < Number(e.target.min)) {\n // value = Number(e.target.min)\n // }\n // }\n // this.height = value\n // }\n // })\n all_elm = contentElm.getElementsByTagName('*');\n PolygonObject.EventBinding(this, all_elm);\n // this._elms.height = [heightElm]\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this11.attributeLink = _this11.options.attribute.link.content;\n _this11.attributeVr = _this11.options.attribute.vr.content;\n _this11.cameraSelect && _this11.cameraSelect();\n _this11.goodsSelect && _this11.goodsSelect();\n var tagData = _this11.attributeSelect;\n var attributeElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, '.attribute-select');\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this11._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this11.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this11.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], '.input-select-unit');\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this11.options['area-unit'];\n for (var _i2 = 0; _i2 < unitData.length; _i2++) {\n if (unitData[_i2].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i2].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < unitData.length; _i3++) {\n if (unitData[_i3].value === unitDataLegpElm.value) {\n _this11.areaUnit = unitData[_i3].value;\n break;\n }\n }\n });\n }\n var heightBoxElm = _this11._DialogObject._element.content.getElementsByClassName('height-box')[0];\n var heightElm = heightBoxElm.getElementsByClassName('height')[0];\n var heightConfirmElm = _this11._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (_this11.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n var heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n var heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (heightModeObject) {\n heightModeObject.legp_search(heightModeData);\n var heightModeDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n for (var _i4 = 0; _i4 < heightModeData.length; _i4++) {\n if (heightModeData[_i4].key == _this11.heightMode) {\n heightModeDataLegpElm.value = heightModeData[_i4].value;\n heightModeObject.legp_searchActive(heightModeData[_i4].value);\n break;\n }\n }\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < heightModeData.length; _i5++) {\n if (heightModeData[_i5].value === heightModeDataLegpElm.value) {\n _this11.heightMode = heightModeData[_i5].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this11.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n _this11._elms.height = heightElm;\n _this11._elms.heightBox = heightBoxElm;\n _this11._elms.heightMode = heightModeDataLegpElm;\n _this11._elms.heightConfirm = heightConfirmElm;\n _this11._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this11.operate.positionEditing) {\n _this11.positionEditing = false;\n _this11.height = _this11.height + Number(heightElm.value);\n } else {\n PolygonObject.closeNodeEdit(_this11);\n _this11.heightMode = _this11.heightMode;\n setTimeout(function () {\n _this11.height = _this11.height + Number(heightElm.value);\n }, 100);\n }\n // this.positionEditing = false\n // for (let i = 0; i < this.options.positions.length; i++) {\n // this.options.positions[i].alt = Number((this.options.positions[i].alt + Number(heightElm.value)).toFixed(2))\n // this._elms.alt[i].innerHTML = this.options.positions[i].alt\n // }\n // this.renewPositions(this.options.positions)\n // this.entity.polyline.positions = [\n // ...this.positions,\n // this.positions[0],\n // this.positions[1]\n // ]\n\n // this.positionEditing = false\n // PolygonObject.closeNodeEdit(this)\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this11.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this11.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this11._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 34;\n break;\n case 33:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 34:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity && !this._DialogObject) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineColor = this.originalOptions.line.color;\n this.lineWidth = this.originalOptions.line.width;\n this.height = this.originalOptions.height;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.heightMode = this.options.heightMode;\n var positions = this.options.positions;\n var positions2 = [[]];\n var fromDegreesArray = [];\n if (this.options.height || this.options.height === 0) {\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, this.options.height);\n positions2[0].push([positions[i].lng, positions[i].lat]);\n }\n positions2[0].push([positions[0].lng, positions[0].lat]);\n this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n } else {\n for (var _i8 = 0; _i8 < positions.length; _i8++) {\n fromDegreesArray.push(positions[_i8].lng, positions[_i8].lat);\n positions2[0].push([positions[_i8].lng, positions[_i8].lat]);\n }\n positions2[0].push([positions[0].lng, positions[0].lat]);\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n }\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positions);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions), [this.positions[0], this.positions[1]]);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n _ground,\n i,\n height,\n a,\n _i9,\n BoundingSphere,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 51;\n break;\n case 25:\n positionArray = [];\n _context2.t0 = this.heightMode;\n _context2.next = _context2.t0 === 0 ? 29 : _context2.t0 === '0' ? 29 : _context2.t0 === 1 ? 31 : _context2.t0 === '1' ? 31 : _context2.t0 === 2 ? 33 : _context2.t0 === '2' ? 33 : 35;\n break;\n case 29:\n _ground = false;\n return _context2.abrupt(\"break\", 35);\n case 31:\n _ground = false;\n return _context2.abrupt(\"break\", 35);\n case 33:\n _ground = true;\n return _context2.abrupt(\"break\", 35);\n case 35:\n if (!_ground) {\n _context2.next = 48;\n break;\n }\n i = 0;\n case 37:\n if (!(i < this.options.positions.length)) {\n _context2.next = 46;\n break;\n }\n _context2.next = 40;\n return this.getClampToHeight(this.options.positions[i]);\n case 40:\n height = _context2.sent;\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 43:\n i++;\n _context2.next = 37;\n break;\n case 46:\n _context2.next = 49;\n break;\n case 48:\n if (this.positions) {\n for (_i9 = 0; _i9 < this.positions.length; _i9++) {\n positionArray.push(this.positions[_i9].x, this.positions[_i9].y, this.positions[_i9].z);\n }\n }\n case 49:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 51:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 删除\r\n */\n )\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.entities.remove(this.entity);\n this.label && this.label.remove();\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context3.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n )\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this12 = this;\n this.closeNodeEdit();\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n if (status === true) {\n var _Cesium$Cartesian;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var array = [];\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var positions84 = this.deepCopyObj(this.options.positions);\n var fromDegreesArray = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i10 = 0; _i10 < positions.length; _i10++) {\n disparity.push({\n x: center.x - positions[_i10].x,\n y: center.y - positions[_i10].y,\n z: center.z - positions[_i10].z\n });\n }\n var newpositions = [];\n var leftEvent = function leftEvent(movement, cartesian) {\n var position84 = _this12.cartesian3Towgs84(cartesian, _this12.sdk.viewer);\n _this12.event.mouse_move(function () {});\n _this12.event.mouse_left(function () {});\n _this12.event.mouse_right(function () {});\n newpositions = [];\n for (var _i11 = 0; _i11 < disparity.length; _i11++) {\n var pos3 = {\n x: cartesian.x - disparity[_i11].x,\n y: cartesian.y - disparity[_i11].y,\n z: cartesian.z - disparity[_i11].z\n };\n newpositions.push(pos3);\n _this12.options.positions[_i11] = _this12.cartesian3Towgs84(pos3, _this12.sdk.viewer);\n if (_this._elms.lng && _this._elms.lng[_i11]) {\n _this._elms.lng[_i11].innerHTML = _this12.options.positions[_i11].lng.toFixed(8);\n }\n if (_this._elms.lat && _this._elms.lat[_i11]) {\n _this._elms.lat[_i11].innerHTML = _this12.options.positions[_i11].lat.toFixed(8);\n }\n }\n _this12.previous = null;\n fromDegreesArray = [];\n _this12.heightMode = _this12.heightMode;\n if (_this12._positionEditingCallback) {\n _this12._positionEditingCallback();\n _this12._positionEditingCallback = null;\n }\n };\n this.event.mouse_move(function (movement, cartesian) {\n var position84 = _this12.cartesian3Towgs84(cartesian, _this12.sdk.viewer);\n newpositions = [];\n for (var _i12 = 0; _i12 < disparity.length; _i12++) {\n var pos3 = {\n x: cartesian.x - disparity[_i12].x,\n y: cartesian.y - disparity[_i12].y,\n z: cartesian.z - disparity[_i12].z\n };\n newpositions.push(pos3);\n positions84[_i12] = _this12.cartesian3Towgs84(pos3, _this12.sdk.viewer);\n }\n var ground = false;\n var array = [];\n for (var _i13 = 0; _i13 < positions84.length; _i13++) {\n array.push([positions84[_i13].lng, positions84[_i13].lat]);\n }\n array.push([positions84[0].lng, positions84[0].lat]);\n var height = 0;\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n switch (_this12.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = _this12.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]));\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n fromDegreesArray = [];\n if (!ground) {\n for (var _i14 = 0; _i14 < positions84.length; _i14++) {\n fromDegreesArray.push(positions84[_i14].lng, positions84[_i14].lat, _this12.height + height);\n }\n _this12.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this12.label.position = [position84.lng, position84.lat, _this12.height + height];\n } else {\n for (var _i15 = 0; _i15 < positions84.length; _i15++) {\n fromDegreesArray.push(positions84[_i15].lng, positions84[_i15].lat);\n }\n _this12.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this12.sdk.viewer.entities.values);\n _this12.getClampToHeight({\n lng: position84.lng,\n lat: position84.lat\n }, objectsToExclude).then(function (height) {\n _this12.label.position = [position84.lng, position84.lat, height];\n });\n }\n _this12.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this12.heightMode = _this12.heightMode;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this12.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this12.positionEditing = false;\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, false);\n } else {\n if (!this.previous) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n } else {\n this.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.previous.positions);\n }\n if (!this.sdk || !this.sdk.viewer || !this.label || !this.label.entity) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n var _positions = [[]];\n for (var _i16 = 0; _i16 < this.previous.positions.length; _i16++) {\n var _positions2 = this.cartesian3Towgs84(this.previous.positions[_i16], this.sdk.viewer);\n _positions[0].push([_positions2.lng, _positions2.lat]);\n }\n var _positions3 = this.cartesian3Towgs84(this.previous.positions[0], this.sdk.viewer);\n _positions[0].push([_positions3.lng, _positions3.lat]);\n var _polygon = turf.polygon(_positions);\n var _centroid = turf.centroid(_polygon);\n var _ground2 = false;\n var height = 0;\n switch (this.options.heightMode) {\n case '0':\n case 0:\n _ground2 = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(_centroid.geometry.coordinates[0], _centroid.geometry.coordinates[1]));\n _ground2 = false;\n break;\n case '2':\n case 2:\n _ground2 = true;\n break;\n }\n if (!_ground2) {\n this.label.position = [_centroid.geometry.coordinates[0], _centroid.geometry.coordinates[1], this.height + height];\n } else {\n this.label.position = [_centroid.geometry.coordinates[0], _centroid.geometry.coordinates[1]];\n }\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this.previous.positions);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.previous.positions), [_this.previous.positions[0], _this.previous.positions[1]]);\n this.previous = null;\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this13 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n this.positionEditing = false;\n setTimeout(function () {\n var previous = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.options.positions);\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5() {\n var objectsToExclude, _i24, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // sdk.viewer.scene.primitives\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this14.sdk.viewer.entities.values);\n _i24 = 0;\n case 2:\n if (!(_i24 < _this14.options.positions.length)) {\n _context5.next = 11;\n break;\n }\n _context5.next = 5;\n return _this14.getClampToHeight(_this14.options.positions[_i24], objectsToExclude);\n case 5:\n height = _context5.sent;\n entity = _this14.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i24,\n position: Cesium.Cartesian3.fromDegrees(_this14.options.positions[_i24].lng, _this14.options.positions[_i24].lat, height),\n billboard: {\n image: _this14.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this14.nodePoints.push(entity);\n case 8:\n _i24++;\n _context5.next = 2;\n break;\n case 11:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return function createNodePoints() {\n return _ref2.apply(this, arguments);\n };\n }();\n YJ.Measure.SetMeasureStatus(true);\n _this13.picking = false;\n _this13.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('左键单击选择控制点,右键单击取消编辑', _this13.sdk);\n _this13.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this13.sdk);\n _this13.nodePoints = [];\n var _this14 = _this13;\n var selectPoint;\n var originalPosition;\n var newpositions = [];\n var fromDegreesArray = [];\n for (var i = 0; i < _this13.options.positions.length; i++) {\n fromDegreesArray.push(_this13.options.positions[i].lng, _this13.options.positions[i].lat);\n }\n newpositions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var added = false;\n var leftEvent = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(movement, cartesian) {\n var objectsToExclude, potHeight, entity, positions, _fromDegreesArray, _i17, _positions4, _i18, polygon, centroid, pick;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.sdk.viewer.entities.values);\n if (!selectPoint) {\n _context4.next = 22;\n break;\n }\n _this13.options.positions[selectPoint.index] = _this13.cartesian3Towgs84(cartesian, _this13.sdk.viewer);\n originalPosition = _this13.options.positions[selectPoint.index];\n added = true;\n _context4.next = 7;\n return _this13.getClampToHeight(_this13.options.positions[selectPoint.index], objectsToExclude);\n case 7:\n potHeight = _context4.sent;\n entity = _this13.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(_this13.options.positions[selectPoint.index].lng, _this13.options.positions[selectPoint.index].lat, potHeight),\n billboard: {\n image: _this13.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this13.nodePoints.splice(selectPoint.index, 0, entity);\n _this13.options.positions.splice(selectPoint.index, 0, _this13.options.positions[selectPoint.index]);\n positions = _this13.options.positions;\n _fromDegreesArray = [];\n for (_i17 = 0; _i17 < positions.length; _i17++) {\n _fromDegreesArray.push(positions[_i17].lng, positions[_i17].lat);\n }\n _this13.positions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray);\n newpositions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray);\n if (_this13.options.positions.length < 3) {\n _this13.getClampToHeight({\n lng: _this13.options.positions[0].lng,\n lat: _this13.options.positions[0].lat\n }, objectsToExclude).then(function (height) {\n _this13.label.position = [_this13.options.positions[0].lng, _this13.options.positions[0].lat, height];\n });\n } else {\n _positions4 = [[]];\n for (_i18 = 0; _i18 < _this13.options.positions.length; _i18++) {\n _positions4[0].push([_this13.options.positions[_i18].lng, _this13.options.positions[_i18].lat]);\n }\n _positions4[0].push([_this13.options.positions[0].lng, _this13.options.positions[0].lat]);\n polygon = turf.polygon(_positions4);\n centroid = turf.centroid(polygon);\n _this13.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this13.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }\n _this13.areaByMeter = _this13.computeArea(_this13.options.positions);\n _this13.areaChangeCallBack && _this13.areaChangeCallBack();\n cb(null, _this13.options.positions, _this13.areaByMeter);\n // switch (this.options['area-unit']) {\n // case '平方米':\n // this.area = this.options.areaByMeter\n // break\n // case '平方千米':\n // this.area = Number(\n // (this.options.areaByMeter / 1000000).toFixed(8)\n // )\n // break\n // case '亩':\n // this.area = Number(\n // (this.options.areaByMeter / 666.6666667).toFixed(4)\n // )\n // break\n // case '公顷':\n // this.area = Number((this.options.areaByMeter / 10000).toFixed(6))\n // break\n // default:\n // this.area = this.options.areaByMeter\n // }\n _context4.next = 24;\n break;\n case 22:\n pick = _this13.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n _this13.nodePoints.splice(pick.id.index, 1);\n _this13.sdk.viewer.entities.remove(pick.id);\n _this13.tip.set_text('左键单击确定控制点位置,右键单击结束编辑! CTRL+右键单击撤销上一个控制点');\n originalPosition = _this13.cartesian3Towgs84(selectPoint.position.getValue(), _this13.sdk.viewer);\n }\n case 24:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function leftEvent(_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n var rightEvent = function rightEvent(movement, cartesian) {\n if (selectPoint) {\n _this13.options.positions[selectPoint.index] = originalPosition;\n // this.options.positions.splice(selectPoint.index, 1)\n if (added) {\n _this13.options.positions.splice(selectPoint.index, 1);\n }\n if (_this13.options.positions.length < 3) {\n _this13.options.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(previous);\n var positions = _this13.options.positions;\n var _fromDegreesArray2 = [];\n for (var _i19 = 0; _i19 < positions.length; _i19++) {\n _fromDegreesArray2.push(positions[_i19].lng, positions[_i19].lat);\n }\n _this13.positions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray2);\n newpositions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray2);\n _this13.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.positions)\n };\n var _objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.sdk.viewer.entities.values);\n var positions2 = [[]];\n for (var _i20 = 0; _i20 < _this13.options.positions.length; _i20++) {\n positions2[0].push([_this13.options.positions[_i20].lng, _this13.options.positions[_i20].lat]);\n }\n positions2[0].push([_this13.options.positions[0].lng, _this13.options.positions[0].lat]);\n var polygon = turf.polygon(positions2);\n var centroid = turf.centroid(polygon);\n _this13.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, _objectsToExclude).then(function (height) {\n _this13.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n _this13.areaByMeter = _this13.computeArea(_this13.options.positions);\n _this13.areaChangeCallBack && _this13.areaChangeCallBack();\n }\n cb(null, _this13.options.positions);\n }\n YJ.Measure.SetMeasureStatus(false);\n _this13.event.destroy();\n _this13.tip.destroy();\n _this13.heightMode = _this13.heightMode;\n };\n _this13.entity.polyline.clampToGround = true;\n _this13.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n _this13.entity.polygon.perPositionHeight = false;\n _this13.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(newpositions);\n }, false);\n _this13.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (newpositions.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(newpositions), [newpositions[0], newpositions[1], newpositions[2]]);\n } else {\n return newpositions;\n }\n }, false);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.sdk.viewer.entities.values);\n if (_this13.options.positions.length < 3) {\n _this13.getClampToHeight({\n lng: _this13.options.positions[0].lng,\n lat: _this13.options.positions[0].lat\n }, objectsToExclude).then(function (height) {\n _this13.label.position = [_this13.options.positions[0].lng, _this13.options.positions[0].lat, height];\n });\n } else {\n var positions = [[]];\n for (var _i21 = 0; _i21 < _this13.options.positions.length; _i21++) {\n positions[0].push([_this13.options.positions[_i21].lng, _this13.options.positions[_i21].lat]);\n }\n positions[0].push([_this13.options.positions[0].lng, _this13.options.positions[0].lat]);\n var polygon = turf.polygon(positions);\n var centroid = turf.centroid(polygon);\n setTimeout(function () {\n _this13.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this13.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }, 200);\n }\n setTimeout(function () {\n _this13.event.mouse_left(leftEvent);\n _this13.event.mouse_right(rightEvent);\n _this13.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n _this13.options.positions[selectPoint.index] = _this13.cartesian3Towgs84(cartesian, _this13.sdk.viewer);\n var _positions5 = _this13.options.positions;\n var _fromDegreesArray3 = [];\n for (var _i22 = 0; _i22 < _positions5.length; _i22++) {\n _fromDegreesArray3.push(_positions5[_i22].lng, _positions5[_i22].lat);\n }\n _this13.positions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray3);\n newpositions = Cesium.Cartesian3.fromDegreesArray(_fromDegreesArray3);\n var _objectsToExclude2 = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this13.sdk.viewer.entities.values);\n if (_this13.options.positions.length < 3) {\n _this13.getClampToHeight({\n lng: _this13.options.positions[0].lng,\n lat: _this13.options.positions[0].lat\n }, _objectsToExclude2).then(function (height) {\n _this13.label.position = [_this13.options.positions[0].lng, _this13.options.positions[0].lat, height];\n });\n } else {\n var _positions6 = [[]];\n for (var _i23 = 0; _i23 < _this13.options.positions.length; _i23++) {\n _positions6[0].push([_this13.options.positions[_i23].lng, _this13.options.positions[_i23].lat]);\n }\n _positions6[0].push([_this13.options.positions[0].lng, _this13.options.positions[0].lat]);\n var _polygon2 = turf.polygon(_positions6);\n var _centroid2 = turf.centroid(_polygon2);\n _this13.getClampToHeight({\n lng: _centroid2.geometry.coordinates[0],\n lat: _centroid2.geometry.coordinates[1]\n }, _objectsToExclude2).then(function (height) {\n _this13.label.position = [_centroid2.geometry.coordinates[0], _centroid2.geometry.coordinates[1], height];\n });\n }\n }\n _this13.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n _this13.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n _this13.options.positions.pop();\n _this13.sdk.viewer.entities.remove(_this13.nodePoints[_this13.nodePoints.length - 1]);\n if (selectPoint.index === _this13.options.positions.length) {\n if (_this13.nodePoints[selectPoint.index - 1]) {\n selectPoint = _this13.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = 0;\n }\n }\n _this13.nodePoints.pop();\n if (_this13.options.positions.length < 3) {\n _this13.tip.set_text('左键单击确定控制点位置,右键单击取消编辑! CTRL+右键单击撤销上一个控制点');\n }\n }\n });\n _this13.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this13.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n createNodePoints();\n }, 200);\n }\n }, 50);\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n if (!this.sdk || !this.sdk.viewer) {\n return;\n }\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n var _Cesium$Cartesian2,\n _this15 = this;\n var cartesian = Cesium.Cartesian3.fromDegrees(v.position.lng, v.position.lat, v.position.alt);\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var array = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i25 = 0; _i25 < positions.length; _i25++) {\n disparity.push({\n x: center.x - positions[_i25].x,\n y: center.y - positions[_i25].y,\n z: center.z - positions[_i25].z\n });\n }\n var newpositions = [];\n for (var _i26 = 0; _i26 < disparity.length; _i26++) {\n newpositions.push({\n x: cartesian.x - disparity[_i26].x,\n y: cartesian.y - disparity[_i26].y,\n z: cartesian.z - disparity[_i26].z\n });\n }\n var ground = false;\n var height = 0;\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]));\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n if (!ground) {\n this.label.position = [v.position.lng, v.position.lat, v.position.alt + height];\n } else {\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.sdk.viewer.entities.values);\n this.getClampToHeight({\n lng: v.position.lng,\n lat: v.position.lat\n }, objectsToExclude).then(function (height) {\n _this15.label.position = [v.position.lng, v.position.lat, height];\n });\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n if (newpositions.length > 0) {\n return new Cesium.PolygonHierarchy(newpositions);\n } else {\n return new Cesium.PolygonHierarchy(positions);\n }\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (newpositions.length > 0) {\n return [].concat(newpositions, [newpositions[0], newpositions[1]]);\n } else {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(positions), [positions[0], positions[1]]);\n }\n }, false);\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions() {\n var _this16 = this;\n if (this._error) {\n return;\n }\n var ground = false;\n var array = [];\n var positions = this.options.positions;\n for (var i = 0; i < positions.length; i++) {\n array.push([positions[i].lng, positions[i].lat]);\n }\n array.push([positions[0].lng, positions[0].lat]);\n var height = 0;\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray = [];\n if (!ground && this.nodePoints.length == 0) {\n for (var _i27 = 0; _i27 < positions.length; _i27++) {\n fromDegreesArray.push(positions[_i27].lng, positions[_i27].lat, this.height + height);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.label && (this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.height + height]);\n } else {\n for (var _i28 = 0; _i28 < positions.length; _i28++) {\n fromDegreesArray.push(positions[_i28].lng, positions[_i28].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n setTimeout(function () {\n if (!_this16.sdk.viewer) {\n return;\n }\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.sdk.viewer.entities.values);\n _this16.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this16.label && (_this16.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n this.areaByMeter = this.computeArea(positions);\n this.areaChangeCallBack && this.areaChangeCallBack();\n return fromDegreesArray;\n }\n }, {\n key: \"setDIV\",\n value: function () {\n var _setDIV = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6() {\n var _this17 = this;\n var options,\n positions,\n i,\n polygon,\n centroid,\n height,\n objectsToExclude,\n siteInfoDom,\n siteInfoPosition,\n _args6 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n options = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {\n domid: '',\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n positions = [[]];\n for (i = 0; i < this.options.positions.length; i++) {\n positions[0].push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n positions[0].push([this.options.positions[0].lng, this.options.positions[0].lat]);\n polygon = turf.polygon(positions);\n centroid = turf.pointOnFeature(polygon);\n if (ground) {\n _context6.next = 12;\n break;\n }\n height = this.options.height;\n _context6.next = 16;\n break;\n case 12:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.sdk.viewer.entities.values);\n _context6.next = 15;\n return this.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude);\n case 15:\n height = _context6.sent;\n case 16:\n siteInfoDom = document.getElementById(options.domid);\n siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this17.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n case 19:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function setDIV() {\n return _setDIV.apply(this, arguments);\n }\n return setDIV;\n }()\n }], [{\n key: \"create\",\n value: function create(that) {\n var ground;\n if (that.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n that.renewPositions();\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n that.options.heightMode = 0;\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n that.entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n id: that.options.id,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(that.positions),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positions), [that.positions[0], that.positions[1]]),\n width: that.options.line.width,\n arcType: Cesium.ArcType.NONE,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true\n }, \"arcType\", !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC), \"zIndex\", that.sdk._entityZIndex)\n });\n that.sdk._entityZIndex++;\n PolygonObject.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee7(that) {\n var positions, i, polygon, centroid, height, ground, _i29, objectsToExclude;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n positions = [[]];\n for (i = 0; i < that.options.positions.length; i++) {\n positions[0].push([that.options.positions[i].lng, that.options.positions[i].lat]);\n }\n positions[0].push([that.options.positions[0].lng, that.options.positions[0].lat]);\n polygon = turf.polygon(positions); // let centroid = turf.centroid(polygon);\n centroid = turf.pointOnFeature(polygon);\n height = 0;\n _context7.t0 = that.heightMode;\n _context7.next = _context7.t0 === 0 ? 9 : _context7.t0 === '0' ? 9 : _context7.t0 === 1 ? 11 : _context7.t0 === '1' ? 11 : _context7.t0 === 2 ? 14 : _context7.t0 === '2' ? 14 : 16;\n break;\n case 9:\n ground = false;\n return _context7.abrupt(\"break\", 16);\n case 11:\n for (_i29 = 0; _i29 < positions.length; _i29++) {\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions[_i29].lng, positions[_i29].lat));\n }\n ground = false;\n return _context7.abrupt(\"break\", 16);\n case 14:\n ground = true;\n return _context7.abrupt(\"break\", 16);\n case 16:\n if (ground) {\n _context7.next = 20;\n break;\n }\n height = that.options.height + height;\n _context7.next = 24;\n break;\n case 20:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.sdk.viewer.entities.values);\n _context7.next = 23;\n return that.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude);\n case 23:\n height = _context7.sent;\n case 24:\n // if (!that.options.label.position) {\n // that.options.label.position = {\n // lng: centroid.geometry.coordinates[0],\n // lat: centroid.geometry.coordinates[1],\n // alt: height\n // }\n // }\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: height\n };\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: ground\n });\n case 26:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n function createLabel(_x4) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolygonObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWdvbk9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Qb2x5Z29uT2JqZWN0L2luZGV4LmpzP2M0ZDMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWkmui+ueW9olxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZydcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSAnLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnMnXHJcbmltcG9ydCByaWNoVGV4dCBmcm9tICcuLi8uLi9FbGVtZW50L3JpY2hUZXh0J1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnLi9fZWxlbWVudCdcclxuaW1wb3J0IEJhc2UgZnJvbSAnLi4vaW5kZXgnXHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0J1xyXG5pbXBvcnQgeyBnZXRGb250TGlzdCwgZ2V0Rm9udEZhbWlseU5hbWUgfSBmcm9tICcuLi8uLi9FbGVtZW50L2ZvbnRTZWxlY3QnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuLy8gaW1wb3J0IEVkaXRQYXJ0aWNsZSBmcm9tIFwiLi4vLi4vTW9kZWxDb250cm9sbGVyL0VkaXRQYXJ0aWNsZVwiO1xyXG5cclxuY2xhc3MgUG9seWdvbk9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBkZXNjcmlwdGlvbiDlpJrovrnlvaJcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5ZSv5LiA5qCH6K+GXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmmL7npLov6ZqQ6JePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jb2xvcj0ncmdiYSgyNTUsIDAsIDAsIDAuNSknIHtzdHJpbmd9IOminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHRNb2RlPTJ7bnVtYmVyfSDpq5jluqbmqKHlvI/vvIgw77ya5rW35ouU6auY5bqm77ybMe+8muebuOWvueWcsOihqO+8mzLvvJrkvp3pmYTmqKHlvI/vvIlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lIHtvYmplY3R9IOi+ueahhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUud2lkdGg9MiB7c3RyaW5nfSDovrnmoYblrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lLmNvbG9yPVwicmdiYSgxNTUsIDE1NSwgMTI0LCAwLjg5KVwiIHtzdHJpbmd9IOi+ueahhuminOiJslxyXG4gICAqIEBwYXJhbSB7QXJyYXkuPG9iamVjdD59IG9wdGlvbnMucG9zaXRpb25zIOW/heWhq++8jOe7j+e6rOW6puWSjOmrmOW6pueahOWIl+ihqO+8jOWAvOS6pOabvyBbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5qCH562+5a+56LGhXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwudGV4dCB7c3RyaW5nfSDmoIfnrb7mlofmnKxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogXHJcblxyXG5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gX0RpYWxvZyB7b2JqZWN0fSDlvLnmoYbkuovku7ZcclxuICAgKiBAcGFyYW0gX0RpYWxvZy5jb25maXJtQ2FsbEJhY2sge2Z1bmN0aW9ufSDlvLnmoYbnoa7orqTml7bnmoTlm57osINcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID1cclxuICAgICAgb3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHRoaXMub3B0aW9ucy5saW5lLndpZHRoIHx8IHRoaXMub3B0aW9ucy5saW5lLndpZHRoID09PSAwKSA/IHRoaXMub3B0aW9ucy5saW5lLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID1cclxuICAgICAgdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgfHwgJ3JnYmEoMjU1LCAwLCAwLCAxKSdcclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLm9wZXJhdGUgPSB7fVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogb3B0aW9ucy5sYWJlbC5wb3NpdGlvbixcclxuICAgICAgZm9udFNpemU6XHJcbiAgICAgICAgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwXHJcbiAgICAgICAgICA/IG9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgICAgICAgIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOlxyXG4gICAgICAgIG9wdGlvbnMubGFiZWwubGluZVdpZHRoIHx8IG9wdGlvbnMubGFiZWwubGluZVdpZHRoID09PSAwXHJcbiAgICAgICAgICA/IG9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgICAgICAgICA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OlxyXG4gICAgICAgIG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMFxyXG4gICAgICAgICAgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICAgICAgICA6IDIwLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddLFxyXG4gICAgICBsaW5lQ29sb3I6IG9wdGlvbnMubGFiZWwubGluZUNvbG9yIHx8ICcjMDBmZmZmODAnLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHx8IGZhbHNlLFxyXG4gICAgICBuZWFyOlxyXG4gICAgICAgIG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDBcclxuICAgICAgICAgID8gb3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgICAgICAgICA6IDIwMDAsXHJcbiAgICAgIGZhcjpcclxuICAgICAgICBvcHRpb25zLmxhYmVsLmZhciB8fCBvcHRpb25zLmxhYmVsLmZhciA9PT0gMFxyXG4gICAgICAgICAgPyBvcHRpb25zLmxhYmVsLmZhclxyXG4gICAgICAgICAgOiAxMDAwMDBcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhIHx8IHt9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50ID1cclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudCB8fCBbXVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIgfHwge31cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudCA9XHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudCB8fCBbXVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcyA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMgfHwge31cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCA9XHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHMuY29udGVudCB8fCBbXVxyXG5cclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYVxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnJcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcblxyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBvc2l0aW9ucyB8fCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgdGhpcy5fZXJyb3IgPSAn5aSa6L655b2i5pyA5bCR6ZyA6KaB5LiJ5Liq5Z2Q5qCH77yBJ1xyXG4gICAgICBjb25zb2xlLndhcm4odGhpcy5fZXJyb3IpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5oZWlnaHQgJiYgdGhpcy5vcHRpb25zLmhlaWdodCAhPT0gMCkge1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGhlaWdodCA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0KSB7XHJcbiAgICAgICAgICAgIGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSBoZWlnaHRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgICB0aGlzLl96SW5kZXggPSB0aGlzLnNkay5lbnRpdHlNYXAuc2l6ZVxyXG4gICAgICBQb2x5Z29uT2JqZWN0LmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ1BvbHlnb25PYmplY3QnXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSdcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlnb24pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5Z29uKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IDIpIHtcclxuICAgICAgdGhpcy5oZWlnaHRNb2RlID0gMFxyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA/IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlIDogMFxyXG4gIH1cclxuICBzZXQgaGVpZ2h0TW9kZSh2KSB7XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IFtdXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgbGV0IGhlaWdodE1vZGVOYW1lID0gJydcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMF0sXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1xyXG4gICAgICApXHJcbiAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfmtbfmi5Tpq5jluqYnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+ebuOWvueWcsOihqCdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfkvp3pmYTmqKHlnosnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFiZWwuZ3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9ICFncm91bmQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlICYmICh0aGlzLl9lbG1zLmhlaWdodE1vZGUudmFsdWUgPSBoZWlnaHRNb2RlTmFtZSlcclxuICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ICYmICh0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgaGVpZ2h0TW9kZU5hbWVcclxuICAgICAgKSlcclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gIH1cclxuXHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICBpZiAoIXYgfHwgaXNOYU4oTnVtYmVyKHYpKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB9XHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBpZiAodGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoaXMucG9zaXRpb25zKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMF0sXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5fZWxtcy5hbHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5hbHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUuY29sb3JcclxuICB9XHJcbiAgc2V0IGxpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5jb2xvciA9IHYgfHwgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJ1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWxpbmUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmxpbmUuY29sb3IpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5saW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMubGluZS5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwwLDAsMC41KSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yW2ldID0gbGluZUNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLndpZHRoXHJcbiAgfVxyXG4gIHNldCBsaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHYgfHwgdiA9PT0gMCkgPyB2IDogMylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMuX2VsbXMubGluZVdpZHRoICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGluZVdpZHRoLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxMaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbXHJcbiAgICAgICAgICBpXHJcbiAgICAgICAgXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSwgdl1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBpZiAodGhhdC5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoYXQucmVuZXdQb3NpdGlvbnMoKVxyXG5cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoYXQuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5oZWlnaHRNb2RlID0gMFxyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpLFxyXG4gICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIG1hdGVyaWFsOiBtYXRlcmlhbCxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGF0LnBvc2l0aW9ucywgdGhhdC5wb3NpdGlvbnNbMF0sIHRoYXQucG9zaXRpb25zWzFdXSxcclxuICAgICAgICB3aWR0aDogdGhhdC5vcHRpb25zLmxpbmUud2lkdGgsXHJcbiAgICAgICAgYXJjVHlwZTogQ2VzaXVtLkFyY1R5cGUuTk9ORSxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGluZS5jb2xvciksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogIWdyb3VuZCA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICBhcmNUeXBlOiAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhhdC5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICBQb2x5Z29uT2JqZWN0LmNyZWF0ZUxhYmVsKHRoYXQpXHJcblxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgXSlcclxuICAgIH1cclxuICAgIHBvc2l0aW9uc1swXS5wdXNoKFtcclxuICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICBdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zKVxyXG4gICAgLy8gbGV0IGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbilcclxuXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgc3dpdGNoICh0aGF0LmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGhlaWdodCA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gICAgaWYgKCFncm91bmQpIHtcclxuICAgICAgaGVpZ2h0ID0gdGhhdC5vcHRpb25zLmhlaWdodCArIGhlaWdodFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgIH1cclxuICAgIC8vIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgIC8vICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgLy8gICAgIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sXHJcbiAgICAvLyAgICAgYWx0OiBoZWlnaHRcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0ge1xyXG4gICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICBhbHQ6IGhlaWdodFxyXG4gICAgfVxyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFtcclxuICAgICAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLFxyXG4gICAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdFxyXG4gICAgICBdLFxyXG4gICAgICB0ZXh0OiB0aGF0Lm9wdGlvbnMubmFtZSxcclxuICAgICAgZm9udFNpemU6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250U2l6ZSxcclxuICAgICAgZm9udEZhbWlseTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHksXHJcbiAgICAgIGNvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuY29sb3IsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiB0aGF0Lm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgbGluZUNvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZUNvbG9yLFxyXG4gICAgICBsaW5lV2lkdGg6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lV2lkdGgsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogdGhhdC5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSxcclxuICAgICAgbmVhcjogdGhhdC5vcHRpb25zLmxhYmVsLm5lYXIsXHJcbiAgICAgIGZhcjogdGhhdC5vcHRpb25zLmxhYmVsLmZhcixcclxuICAgICAgZ3JvdW5kOiBncm91bmRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcblxyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpIHtcclxuICAgICAgICBsZXQgdGFibGVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NwYXRpYWwtaW5mby10YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRCb2R5RWxtID0gdGFibGVFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgdEJvZHlFbG0uaW5uZXJIVE1MID0gJydcclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmcgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZ0lucHV0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdElucHV0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdElucHV0ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF90aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyJ1xyXG4gICAgICAgICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+JHtpICsgMX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsbmcgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbGF0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICBgXHJcbiAgICAgICAgICBsZXQgbG5nQm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nJylbMF1cclxuICAgICAgICAgIGxldCBsbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICAgIGxuZy5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgICAgbGV0IGxuZ0lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgbG5nSW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgbG5nSW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBsbmdJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBsbmdJbnB1dC5taW4gPSAtMTgwXHJcbiAgICAgICAgICBsbmdJbnB1dC5tYXggPSAxODBcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBsYXRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQnKVswXVxyXG4gICAgICAgICAgbGV0IGxhdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbGF0LmlubmVySFRNTCA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOClcclxuICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICBsZXQgbGF0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBsYXRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBsYXRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGxhdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGxhdElucHV0Lm1pbiA9IC05MFxyXG4gICAgICAgICAgbGF0SW5wdXQubWF4ID0gOTBcclxuICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBhbHRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbHQnKVswXVxyXG4gICAgICAgICAgbGV0IGFsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgYWx0LmlubmVySFRNTCA9IChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMilcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgICBsZXQgYWx0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBhbHRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBhbHRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGFsdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGFsdElucHV0Lm1pbiA9IC05OTk5OTk5XHJcbiAgICAgICAgICBhbHRJbnB1dC5tYXggPSA5OTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG5cclxuICAgICAgICAgIGxuZ0JveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbG5nQm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmdJbnB1dClcclxuICAgICAgICAgICAgbG5nSW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFBvbHlnb25PYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nID0gTnVtYmVyKE51bWJlcihsbmdJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nLmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBsYXRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0SW5wdXQpXHJcbiAgICAgICAgICAgIGxhdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBQb2x5Z29uT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCA9IE51bWJlcihOdW1iZXIobGF0SW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdC5pbm5lckhUTUwgPSBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBfdGhpcy5oZWlnaHRcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgYWx0Qm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0SW5wdXQpXHJcbiAgICAgICAgICAgIGFsdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBQb2x5Z29uT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IE51bWJlcihOdW1iZXIoYWx0SW5wdXQudmFsdWUpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSBOdW1iZXIoX3RoaXMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sbmcucHVzaChsbmcpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sbmdJbnB1dC5wdXNoKGxuZ0lucHV0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubGF0LnB1c2gobGF0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQucHVzaChsYXRJbnB1dClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmFsdC5wdXNoKGFsdClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmFsdElucHV0LnB1c2goYWx0SW5wdXQpXHJcbiAgICAgICAgICB0Qm9keUVsbS5hcHBlbmRDaGlsZCh0cilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn6Z2i5bGe5oCnJyxcclxuICAgICAgICBsZWZ0OiAnMTgwcHgnLFxyXG4gICAgICAgIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IG9wdGlvbnMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgbG5nOiB0aGlzLmxhYmVsLnBvc2l0aW9uWzBdLFxyXG4gICAgICAgICAgICBsYXQ6IHRoaXMubGFiZWwucG9zaXRpb25bMV0sXHJcbiAgICAgICAgICAgIGFsdDogdGhpcy5sYWJlbC5wb3NpdGlvblsyXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IHNob3cgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyDkuozmrKHnvJbovpHlm57osINcclxuICAgICAgICBzZWNvbmRhcnlFZGl0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIFBvbHlnb25PYmplY3Qubm9kZUVkaXQodGhpcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHBvbHlnb24nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygncG9seWdvbi1vYmplY3QtZWRpdC10YWJzJywgdW5kZWZpbmVkLCB0aGlzLnNkaylcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGluZWNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVDb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYWJlbENvbG9yJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGFiZWxMaW5lQ29sb3InKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCcpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJyxcclxuICAgICAgICBhbHBoYTogdHJ1ZSxcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQnKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLy8gbGV0IGhlaWdodEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgIC8vICAgJ2hlaWdodCdcclxuICAgICAgLy8gKVswXVxyXG4gICAgICAvLyBoZWlnaHRFbG0udmFsdWUgPSB0aGlzLmhlaWdodFxyXG4gICAgICAvLyBoZWlnaHRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBlID0+IHtcclxuICAgICAgLy8gICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAvLyAgIGlmIChcclxuICAgICAgLy8gICAgIChlLmRhdGEgPT09ICcuJyAmJiB2YWx1ZS5pbmRleE9mKCcuJykgPT09IC0xKSB8fFxyXG4gICAgICAvLyAgICAgKGUuZGF0YSA9PT0gJy0nICYmIHZhbHVlLmluZGV4T2YoJy0nKSA9PT0gLTEpXHJcbiAgICAgIC8vICAgKSB7XHJcbiAgICAgIC8vICAgfSBlbHNlIHtcclxuICAgICAgLy8gICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgLy8gICAgICAgaWYgKGUudGFyZ2V0Lm1heCAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgIC8vICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICAgIGlmIChlLnRhcmdldC5taW4gJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAvLyAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgLy8gICAgICAgfVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgICAgdGhpcy5oZWlnaHQgPSB2YWx1ZVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSlcclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJylcclxuICAgICAgUG9seWdvbk9iamVjdC5FdmVudEJpbmRpbmcodGhpcywgYWxsX2VsbSlcclxuICAgICAgLy8gdGhpcy5fZWxtcy5oZWlnaHQgPSBbaGVpZ2h0RWxtXVxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvciA9IFtsaW5lY29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvciA9IFtsYWJlbENvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yID0gW2xpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICBsZXQgdGFnRGF0YSA9IHRoaXMuYXR0cmlidXRlU2VsZWN0XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnYXR0cmlidXRlLXNlbGVjdC1ib3gnXHJcbiAgICAgICAgKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sICcuYXR0cmlidXRlLXNlbGVjdCcpXHJcbiAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB1bml0RGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+W5s+aWueexsycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5bmz5pa557GzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+W5s+aWueWNg+exsycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5bmz5pa55Y2D57GzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+S6qScsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5LqpJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+WFrOmhtycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5YWs6aG3J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuXHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnaW5wdXQtc2VsZWN0LXVuaXQtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuaW5wdXQtc2VsZWN0LXVuaXQnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh1bml0RGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaCh1bml0RGF0YSlcclxuICAgICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMub3B0aW9uc1snYXJlYS11bml0J11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJlYVVuaXQgPSB1bml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgICAgbGV0IGhlaWdodEVsbSA9IGhlaWdodEJveEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRDb25maXJtRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWNvbmZpcm0nKVswXVxyXG4gICAgICAgIGhlaWdodEVsbS52YWx1ZSA9IDEwXHJcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAgICBrZXk6ICcwJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+ebuOWvueWcsOihqCcsXHJcbiAgICAgICAgICAgIGtleTogJzEnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgICAgICAga2V5OiAnMicsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdoZWlnaHQtbW9kZS1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGhlaWdodE1vZGVPYmplY3QpIHtcclxuICAgICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1tb2RlJylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS5rZXkgPT0gdGhpcy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlaWdodE1vZGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0ID0gaGVpZ2h0RWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCA9IGhlaWdodEJveEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gPSBoZWlnaHRDb25maXJtRWxtXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgPSBoZWlnaHRNb2RlT2JqZWN0XHJcblxyXG4gICAgICAgICAgaGVpZ2h0Q29uZmlybUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgUG9seWdvbk9iamVjdC5jbG9zZU5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQgPSBOdW1iZXIoKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSkpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5fZWxtcy5hbHRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvLyB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgICAgLy8gICAuLi50aGlzLnBvc2l0aW9ucyxcclxuICAgICAgICAgICAgLy8gICB0aGlzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICAgICAgLy8gICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICAgICAgICAvLyBdXHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIC8vIFBvbHlnb25PYmplY3QuY2xvc2VOb2RlRWRpdCh0aGlzKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpXHJcblxyXG5cclxuXHJcbiAgICAgIH0sIDApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5saW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUud2lkdGhcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuaGVpZ2h0XHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGxldCBwb3NpdGlvbnMyID0gW1tdXVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5vcHRpb25zLmhlaWdodCA9PT0gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChcclxuICAgICAgICAgIHBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICBwb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICAgIClcclxuICAgICAgICBwb3NpdGlvbnMyWzBdLnB1c2goW3Bvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXRdKVxyXG4gICAgICB9XHJcbiAgICAgIHBvc2l0aW9uczJbMF0ucHVzaChbcG9zaXRpb25zWzBdLmxuZywgcG9zaXRpb25zWzBdLmxhdF0pXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICAgIHBvc2l0aW9uczJbMF0ucHVzaChbcG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgcG9zaXRpb25zMlswXS5wdXNoKFtwb3NpdGlvbnNbMF0ubG5nLCBwb3NpdGlvbnNbMF0ubGF0XSlcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgLi4udGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgIHRoaXMucG9zaXRpb25zWzBdLFxyXG4gICAgICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgXVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOmjnuWIsFxyXG4gICAqL1xyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmNlbnRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuY2VudGVyIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc3RhcnQpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnN0YXJ0IH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgZ3JvdW5kXHJcbiAgICAgIHN3aXRjaCAodGhpcy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZ3JvdW5kKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0pXHJcbiAgICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2godGhpcy5wb3NpdGlvbnNbaV0ueCwgdGhpcy5wb3NpdGlvbnNbaV0ueSwgdGhpcy5wb3NpdGlvbnNbaV0ueilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlciB8fCAhdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nID0gc3RhdHVzXHJcblxyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiZcclxuICAgICAgICAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgIGByZ2JhKDI1NSwyNTUsMjU1LDAuOSlgXHJcbiAgICAgICAgKSlcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcblxyXG4gICAgICBsZXQgZGlzcGFyaXR5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIGFycmF5LnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgZmlyc3Rwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIGFycmF5LnB1c2goW2ZpcnN0cG9zaXRpb24ubG5nLCBmaXJzdHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgIHZhciBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKFthcnJheV0pXHJcbiAgICAgIHZhciBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbilcclxuICAgICAgbGV0IGNlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIC4uLmNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIClcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBkaXNwYXJpdHkucHVzaCh7XHJcbiAgICAgICAgICB4OiBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54LFxyXG4gICAgICAgICAgeTogY2VudGVyLnkgLSBwb3NpdGlvbnNbaV0ueSxcclxuICAgICAgICAgIHo6IGNlbnRlci56IC0gcG9zaXRpb25zW2ldLnpcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwb3MzID0ge1xyXG4gICAgICAgICAgICB4OiBjYXJ0ZXNpYW4ueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaChwb3MzKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoXHJcbiAgICAgICAgICAgIHBvczMsXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlclxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKF90aGlzLl9lbG1zLmxuZyAmJiBfdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICAgICAgX3RoaXMuX2VsbXMubG5nW2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChfdGhpcy5fZWxtcy5sYXQgJiYgX3RoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgICAgIF90aGlzLl9lbG1zLmxhdFtpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdC50b0ZpeGVkKDgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3Bhcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHBvczMgPSB7XHJcbiAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgIHo6IGNhcnRlc2lhbi56IC0gZGlzcGFyaXR5W2ldLnpcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHBvczMpXHJcbiAgICAgICAgICBwb3NpdGlvbnM4NFtpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoXHJcbiAgICAgICAgICAgIHBvczMsXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlclxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uczg0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBhcnJheS5wdXNoKFtwb3NpdGlvbnM4NFtpXS5sbmcsIHBvc2l0aW9uczg0W2ldLmxhdF0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFycmF5LnB1c2goW3Bvc2l0aW9uczg0WzBdLmxuZywgcG9zaXRpb25zODRbMF0ubGF0XSlcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKFthcnJheV0pXHJcbiAgICAgICAgbGV0IGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKVxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pKVxyXG4gICAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgaWYgKCFncm91bmQpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zODQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uczg0W2ldLmxuZyxcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM4NFtpXS5sYXQsXHJcbiAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtwb3NpdGlvbjg0LmxuZywgcG9zaXRpb244NC5sYXQsIHRoaXMuaGVpZ2h0ICsgaGVpZ2h0XVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uczg0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnM4NFtpXS5sbmcsIHBvc2l0aW9uczg0W2ldLmxhdClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG5cclxuICAgICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICBsbmc6IHBvc2l0aW9uODQubG5nLFxyXG4gICAgICAgICAgICBsYXQ6IHBvc2l0aW9uODQubGF0XHJcbiAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKS50aGVuKGhlaWdodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCBoZWlnaHRdXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9ucylcclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnMsIF90aGlzLnBvc2l0aW9uc1swXSwgX3RoaXMucG9zaXRpb25zWzFdXVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5wcmV2aW91cykge1xyXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbLi4udGhpcy5wcmV2aW91cy5wb3NpdGlvbnNdXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmxhYmVsIHx8ICF0aGlzLmxhYmVsLmVudGl0eSkge1xyXG4gICAgICAgIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoXHJcbiAgICAgICAgICBgcmdiYSgyNTUsMjU1LDI1NSwxKWBcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gICAgICBpZiAodGhpcy5ldmVudCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICBsZXQgcG9zaXRpb25zID0gW1tdXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJldmlvdXMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICAgIHRoaXMucHJldmlvdXMucG9zaXRpb25zW2ldLFxyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyXHJcbiAgICAgICAgKVxyXG4gICAgICAgIHBvc2l0aW9uc1swXS5wdXNoKFtwb3NpdGlvbnM4NC5sbmcsIHBvc2l0aW9uczg0LmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICB0aGlzLnByZXZpb3VzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXJcclxuICAgICAgKVxyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbcG9zaXRpb25zODQubG5nLCBwb3NpdGlvbnM4NC5sYXRdKVxyXG4gICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb3NpdGlvbnMpXHJcbiAgICAgIGxldCBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbilcclxuXHJcbiAgICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG4gICAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgaGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSkpXHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZ3JvdW5kKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sXHJcbiAgICAgICAgICB0aGlzLmhlaWdodCArIGhlaWdodFxyXG4gICAgICAgIF1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucHJldmlvdXMucG9zaXRpb25zKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgLi4uX3RoaXMucHJldmlvdXMucG9zaXRpb25zLFxyXG4gICAgICAgIF90aGlzLnByZXZpb3VzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICBfdGhpcy5wcmV2aW91cy5wb3NpdGlvbnNbMV1cclxuICAgICAgXVxyXG4gICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBvcGVuUG9zaXRpb25FZGl0aW5nKGNkKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IHRydWVcclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcblxyXG4gIGdldCBhcmVhQ2hhbmdlQ2FsbEJhY2soKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJlYUNoYW5nZUNhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBzZXQgYXJlYUNoYW5nZUNhbGxCYWNrKGNkKSB7XHJcbiAgICB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgbm9kZUVkaXQoY2IgPSAoKSA9PiB7IH0pIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgcHJldmlvdXMgPSBbLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc11cclxuICAgICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu5Y2V5Ye76YCJ5oup5o6n5Yi254K577yM5Y+z6ZSu5Y2V5Ye75Y+W5raI57yW6L6RJywgdGhpcy5zZGspXHJcbiAgICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICAgIGxldCBzZWxlY3RQb2ludFxyXG4gICAgICAgIGxldCBvcmlnaW5hbFBvc2l0aW9uXHJcbiAgICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3cG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG5cclxuICAgICAgICBsZXQgYWRkZWQgPSBmYWxzZVxyXG4gICAgICAgIGxldCBsZWZ0RXZlbnQgPSBhc3luYyAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoXHJcbiAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlclxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gICAgICAgICAgICBhZGRlZCA9IHRydWVcclxuICAgICAgICAgICAgbGV0IHBvdEhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSwgb2JqZWN0c1RvRXhjbHVkZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LFxyXG4gICAgICAgICAgICAgICAgcG90SGVpZ2h0XHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMubm9kZVBvaW50cy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDAsIGVudGl0eSlcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgc2VsZWN0UG9pbnQuaW5kZXgsXHJcbiAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFxyXG4gICAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBuZXdwb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgICAgdGhpc1xyXG4gICAgICAgICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgICAgICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gW1tdXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zWzBdLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uc1swXS5wdXNoKFtcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9ucylcclxuICAgICAgICAgICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pXHJcbiAgICAgICAgICAgICAgdGhpc1xyXG4gICAgICAgICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5hcmVhQnlNZXRlciA9IHRoaXMuY29tcHV0ZUFyZWEodGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgICBjYihudWxsLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLCB0aGlzLmFyZWFCeU1ldGVyKVxyXG4gICAgICAgICAgICAvLyBzd2l0Y2ggKHRoaXMub3B0aW9uc1snYXJlYS11bml0J10pIHtcclxuICAgICAgICAgICAgLy8gICBjYXNlICflubPmlrnnsbMnOlxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5hcmVhID0gdGhpcy5vcHRpb25zLmFyZWFCeU1ldGVyXHJcbiAgICAgICAgICAgIC8vICAgICBicmVha1xyXG4gICAgICAgICAgICAvLyAgIGNhc2UgJ+W5s+aWueWNg+exsyc6XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLmFyZWEgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgIC8vICAgICAgICh0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXIgLyAxMDAwMDAwKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIC8vICAgICApXHJcbiAgICAgICAgICAgIC8vICAgICBicmVha1xyXG4gICAgICAgICAgICAvLyAgIGNhc2UgJ+S6qSc6XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLmFyZWEgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgIC8vICAgICAgICh0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXIgLyA2NjYuNjY2NjY2NykudG9GaXhlZCg0KVxyXG4gICAgICAgICAgICAvLyAgICAgKVxyXG4gICAgICAgICAgICAvLyAgICAgYnJlYWtcclxuICAgICAgICAgICAgLy8gICBjYXNlICflhazpobcnOlxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5hcmVhID0gTnVtYmVyKCh0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXIgLyAxMDAwMCkudG9GaXhlZCg2KSlcclxuICAgICAgICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICAgICAgICAgIC8vICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuYXJlYSA9IHRoaXMub3B0aW9ucy5hcmVhQnlNZXRlclxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgcGljayA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgcGljayAmJlxyXG4gICAgICAgICAgICAgIHBpY2suaWQgJiZcclxuICAgICAgICAgICAgICBwaWNrLmlkLm5hbWUgJiZcclxuICAgICAgICAgICAgICBwaWNrLmlkLm5hbWUgPT09ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50J1xyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAgICAgICAgICAgICB0aGlzLm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShwaWNrLmlkKVxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vnu5PmnZ/nvJbovpEhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSA5LiK5LiA5Liq5o6n5Yi254K5JylcclxuICAgICAgICAgICAgICBvcmlnaW5hbFBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICAgICAgICAgIHNlbGVjdFBvaW50LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNkay52aWV3ZXJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJpZ2h0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMSlcclxuICAgICAgICAgICAgaWYgKGFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBbLi4ucHJldmlvdXNdXHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoXHJcbiAgICAgICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIG5ld3Bvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMyID0gW1tdXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zMlswXS5wdXNoKFtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwb3NpdGlvbnMyWzBdLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdFxyXG4gICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zMilcclxuICAgICAgICAgICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pXHJcbiAgICAgICAgICAgICAgdGhpc1xyXG4gICAgICAgICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hcmVhQnlNZXRlciA9IHRoaXMuY29tcHV0ZUFyZWEodGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLmFyZWFDaGFuZ2VDYWxsQmFjayAmJiB0aGlzLmFyZWFDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQ1xyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkobmV3cG9zaXRpb25zKVxyXG4gICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgLi4ubmV3cG9zaXRpb25zLFxyXG4gICAgICAgICAgICAgIG5ld3Bvc2l0aW9uc1swXSxcclxuICAgICAgICAgICAgICBuZXdwb3NpdGlvbnNbMV0sXHJcbiAgICAgICAgICAgICAgbmV3cG9zaXRpb25zWzJdXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdwb3NpdGlvbnNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSlcclxuXHJcbiAgICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAgICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtbXV1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnNbMF0ucHVzaChbXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBvc2l0aW9uc1swXS5wdXNoKFtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zKVxyXG4gICAgICAgICAgbGV0IGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXNcclxuICAgICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICAudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuXHJcbiAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcblxyXG4gICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlclxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoXHJcbiAgICAgICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIG5ld3Bvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXNcclxuICAgICAgICAgICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgbGF0OiB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdFxyXG4gICAgICAgICAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgICAgICAgICAudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gW1tdXVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1swXS5wdXNoKFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdFxyXG4gICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zWzBdLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pXHJcbiAgICAgICAgICAgICAgICB0aGlzXHJcbiAgICAgICAgICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZVBvaW50c1t0aGlzLm5vZGVQb2ludHMubGVuZ3RoIC0gMV1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgaWYgKHNlbGVjdFBvaW50LmluZGV4ID09PSB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZVBvaW50c1tzZWxlY3RQb2ludC5pbmRleCAtIDFdKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhpcy5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdFBvaW50LmluZGV4ID0gMFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLm5vZGVQb2ludHMucG9wKClcclxuICAgICAgICAgICAgICBpZih0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojnvJbovpEhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSA5LiK5LiA5Liq5o6n5Yi254K5JylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgICAgICByaWdodEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjcmVhdGVOb2RlUG9pbnRzKClcclxuICAgICAgICB9LCAyMDApO1xyXG5cclxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGVOb2RlUG9pbnRzKCkge1xyXG4gICAgICAgICAgLy8gc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzXHJcbiAgICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi5fdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IF90aGlzLmdldENsYW1wVG9IZWlnaHQoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgICAgICAgIGxldCBlbnRpdHkgPSBfdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogX3RoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgX3RoaXMubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIGNsb3NlTm9kZUVkaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbnVsbFxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKHYpIHtcclxuICAgIGxldCBjYXJ0ZXNpYW4gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgdi5wb3NpdGlvbi5sbmcsXHJcbiAgICAgIHYucG9zaXRpb24ubGF0LFxyXG4gICAgICB2LnBvc2l0aW9uLmFsdFxyXG4gICAgKVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc11cclxuICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICBsZXQgZGlzcGFyaXR5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIGFycmF5LnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBmaXJzdHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIGFycmF5LnB1c2goW2ZpcnN0cG9zaXRpb24ubG5nLCBmaXJzdHBvc2l0aW9uLmxhdF0pXHJcbiAgICB2YXIgcG9seWdvbiA9IHR1cmYucG9seWdvbihbYXJyYXldKVxyXG4gICAgdmFyIGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKVxyXG4gICAgbGV0IGNlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZGlzcGFyaXR5LnB1c2goe1xyXG4gICAgICAgIHg6IGNlbnRlci54IC0gcG9zaXRpb25zW2ldLngsXHJcbiAgICAgICAgeTogY2VudGVyLnkgLSBwb3NpdGlvbnNbaV0ueSxcclxuICAgICAgICB6OiBjZW50ZXIueiAtIHBvc2l0aW9uc1tpXS56XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBsZXQgbmV3cG9zaXRpb25zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICB4OiBjYXJ0ZXNpYW4ueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0uelxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG4gICAgbGV0IGhlaWdodCA9IDBcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgaGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSkpXHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gICAgaWYgKCFncm91bmQpIHtcclxuICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt2LnBvc2l0aW9uLmxuZywgdi5wb3NpdGlvbi5sYXQsIHYucG9zaXRpb24uYWx0ICsgaGVpZ2h0XVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiB2LnBvc2l0aW9uLmxuZywgbGF0OiB2LnBvc2l0aW9uLmxhdCB9LCBvYmplY3RzVG9FeGNsdWRlKS50aGVuKFxyXG4gICAgICAgIGhlaWdodCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3YucG9zaXRpb24ubG5nLCB2LnBvc2l0aW9uLmxhdCwgaGVpZ2h0XVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KG5ld3Bvc2l0aW9ucylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHBvc2l0aW9ucylcclxuICAgICAgfVxyXG4gICAgfSwgZmFsc2UpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gWy4uLm5ld3Bvc2l0aW9ucywgbmV3cG9zaXRpb25zWzBdLCBuZXdwb3NpdGlvbnNbMV1dXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5wb3NpdGlvbnMsIHBvc2l0aW9uc1swXSwgcG9zaXRpb25zWzFdXVxyXG4gICAgICB9XHJcbiAgICB9LCBmYWxzZSlcclxuICB9XHJcblxyXG4gIC8vIOabtOaWsOWdkOagh1xyXG4gIHJlbmV3UG9zaXRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcblxyXG4gICAgbGV0IGFycmF5ID0gW11cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhcnJheS5wdXNoKFtwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuICAgIGFycmF5LnB1c2goW3Bvc2l0aW9uc1swXS5sbmcsIHBvc2l0aW9uc1swXS5sYXRdKVxyXG4gICAgbGV0IGhlaWdodCA9IDBcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKFthcnJheV0pXHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pKSB8fCAwXHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcyJzpcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGlmICghZ3JvdW5kICYmIHRoaXMubm9kZVBvaW50cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChcclxuICAgICAgICAgIHBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICBwb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sXHJcbiAgICAgICAgdGhpcy5oZWlnaHQgKyBoZWlnaHRcclxuICAgICAgXSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgIGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSkudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSwgMTAwKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiuoeeul+aKleW9semdouenr1xyXG4gICAgdGhpcy5hcmVhQnlNZXRlciA9IHRoaXMuY29tcHV0ZUFyZWEocG9zaXRpb25zKVxyXG4gICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldERJVihvcHRpb25zID0geyBkb21pZDogJycsIHg6IDEwLCB5OiAxMCB9KSB7XHJcbiAgICBvcHRpb25zLnggPSBvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IG9wdGlvbnMueSB8fCBvcHRpb25zLnkgPT09IDAgPyBvcHRpb25zLnkgOiAxMFxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMgPSBbW11dXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9zaXRpb25zWzBdLnB1c2goW1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgIF0pXHJcbiAgICB9XHJcbiAgICBwb3NpdGlvbnNbMF0ucHVzaChbXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdFxyXG4gICAgXSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9ucylcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbilcclxuICAgIGxldCBoZWlnaHRcclxuICAgIGlmICghZ3JvdW5kKSB7XHJcbiAgICAgIGhlaWdodCA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgIGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgbG5nOiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgaGVpZ2h0XHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihwZXJjZW50YWdlID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHxcclxuICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoXHJcbiAgICAgICAgICBzaXRlSW5mb1Bvc2l0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUG9seWdvbk9iamVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFnSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUpBO0FBeURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQTdpQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFFQTtBQVVBO0FBQUE7QUFQQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFLQTtBQUFBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFwR0E7QUFBQTtBQUFBO0FBQUE7QUFzR0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUE2UUE7QUFDQTtBQUFBO0FBeFFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFnWUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFsQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0JBO0FBdkJBO0FBQUE7QUFBQTtBQS9YQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBOUhBO0FBQUE7QUFBQTtBQStIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTBCQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFJQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFIQTtBQUFBO0FBTUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUlBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFsREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE3c0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBSUE7QUFFQTtBQUVBO0FBQUE7QUFFQTtBQWFBO0FBQUE7QUFWQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFIQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE5RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcXREQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolygonObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolyhedronObject/_element.js": -/*!***************************************************!*\ - !*** ./src/Obj/Base/PolyhedronObject/_element.js ***! - \***************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u591A\\u9762\\u4F53\\u989C\\u8272\\n
\\n
\\n
\\n \\u591A\\u9762\\u4F53\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWhlZHJvbk9iamVjdC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Qb2x5aGVkcm9uT2JqZWN0L19lbGVtZW50LmpzP2VkZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA2MCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+5oqV5b2x6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW5wdXQtdGV4dFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cImFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlbGVjdC11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5aSa6Z2i5L2T6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgNjAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWkmumdouS9k+mrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTk5OVwiIGRhdGEtbnVsbCBkYXRhLW1pbj1cIjAuMDFcIiBAbW9kZWw9XCJoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaLieS8uOmrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OTlcIiBAbW9kZWw9XCJleHRydWRlZEhlaWdodFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWJzIGlkPVwicG9seWdvbi1vYmplY3QtZWRpdC10YWJzXCI+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0xKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICAgICAke2xhYmVsU3R5bGVFbG0yKCl9XHJcbiAgICAgICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFicz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBc0RBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolyhedronObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolyhedronObject/eventBinding.js": -/*!*******************************************************!*\ - !*** ./src/Obj/Base/PolyhedronObject/eventBinding.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n var blurEvent = function blurEvent() {};\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n var str = e.target.value + '';\n if (e.data != '.' && (e.data != '-' || e.target.value) && !(str.charAt(str.length - 1) == '0' && e.target.value.toString().includes('.')) && e.target.value != '0') {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min !== 'undefined' && e.target.dataset.min !== '') {\n var min = Number(e.target.dataset.min);\n if (value < min) {\n value = min;\n }\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n blurEvent = function blurEvent(e) {\n var value = e.target.value;\n if (e.target.type == 'number' && (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n };\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n elements[i].addEventListener('blur', blurEvent);\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWhlZHJvbk9iamVjdC9ldmVudEJpbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvUG9seWhlZHJvbk9iamVjdC9ldmVudEJpbmRpbmcuanM/YWY2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBldmVudEJpbmRpbmcge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5lbGVtZW50ID0ge31cclxuICB9XHJcbiAgc3RhdGljIGV2ZW50ID0ge31cclxuXHJcbiAgZ2V0RXZlbnQobmFtZSkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXVxyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRBbGwoKSB7XHJcbiAgICByZXR1cm4gZXZlbnRCaW5kaW5nLmV2ZW50XHJcbiAgfVxyXG5cclxuICBzZXRFdmVudChuYW1lLCBldmVudCkge1xyXG4gICAgZXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdID0gZXZlbnRcclxuICB9XHJcblxyXG4gIG9uKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBsZXQgYmx1ckV2ZW50ID0gKCkgPT4geyB9XHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZSBcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdHIgPSBlLnRhcmdldC52YWx1ZSArICcnXHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSAmJiAhKHN0ci5jaGFyQXQoc3RyLmxlbmd0aCAtIDEpID09ICcwJyAmJiBlLnRhcmdldC52YWx1ZS50b1N0cmluZygpLmluY2x1ZGVzKCcuJykpICYmIGUudGFyZ2V0LnZhbHVlICE9ICcwJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKChlLnRhcmdldC5tYXgpICYmIHZhbHVlPk51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKChlLnRhcmdldC5taW4pICYmIHZhbHVlPE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5kYXRhc2V0Lm1pbiAhPT0gJ3VuZGVmaW5lZCcgJiYgZS50YXJnZXQuZGF0YXNldC5taW4gIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWU8bWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbWluXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBibHVyRXZlbnQgPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJykgJiYgKGUudGFyZ2V0LnZhbHVlIHx8IChlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICd1bmRlZmluZWQnICYmIGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJycgJiYgIUJvb2xlYW4oZS50YXJnZXQuZGF0YXNldC5udWxsKSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0LmRhdGFzZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRzW2ldLm5vZGVOYW1lPT0nSU1HJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uc3JjID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0ucHVzaChlbGVtZW50c1tpXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2hhbmdlJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICBpZihlLnRhcmdldC50eXBlID09ICdudW1iZXInICYmIHZhbHVlIT0nJykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IG49MDtuPHJlbW92ZU5hbWUubGVuZ3RoO24rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGJsdXJFdmVudClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgRXZlbnRCaW5kaW5nID0gbmV3IGV2ZW50QmluZGluZygpO1xyXG5leHBvcnQgZGVmYXVsdCBFdmVudEJpbmRpbmc7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUFBO0FBNEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJIQTtBQUFBO0FBTUE7QUFnSEE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolyhedronObject/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolyhedronObject/index.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/PolyhedronObject/index.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/PolyhedronObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/PolyhedronObject/eventBinding.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 多面体\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PolyhedronObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 多面体\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color=\"#ff0000\" {string} 颜色\r\n * @param options.height=10 {number} 高\r\n * @param options.areaUnit='平方米' {string} 投影面积单位\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function PolyhedronObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, PolyhedronObject);\n _this2 = _callSuper(this, PolyhedronObject, [sdk, options]);\n _this2.options.color = options.color || \"#ff0000\";\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.height = options.height || options.height === 0 ? options.height : 10;\n if (_this2.options.height <= 0.01) {\n _this2.options.height = 0.01;\n }\n // this.options.extrudedHeight = (options.extrudedHeight || options.extrudedHeight === 0) ? options.extrudedHeight : this.options.height + 5\n _this2.options.extrudedHeight = options.extrudedHeight || options.extrudedHeight === 0 ? options.extrudedHeight : 0;\n _this2.entity;\n _this2.nodePoints = [];\n _this2.operate = {};\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n if (!_this2.options.positions || _this2.options.positions.length < 3) {\n _this2._error = '多面体最少需要三个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n PolyhedronObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(PolyhedronObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(PolyhedronObject, [{\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set:\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n function set(status) {\n var _this3 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.positions)\n };\n if (status === true) {\n var _Cesium$Cartesian;\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n var material = Cesium.Color.fromCssColorString(this.options.color).withAlpha(0.99);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n this.picking = false;\n var array = [];\n var positions = this.positions;\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(centroid.geometry.coordinates));\n for (var _i = 0; _i < positions.length; _i++) {\n center.x - positions[_i].x;\n disparity.push({\n x: center.x - positions[_i].x,\n y: center.y - positions[_i].y,\n z: center.z - positions[_i].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n var position84 = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n var cartesian3 = Cesium.Cartesian3.fromDegrees(position84.lng, position84.lat);\n newpositions = [];\n for (var _i2 = 0; _i2 < disparity.length; _i2++) {\n newpositions.push({\n x: cartesian3.x - disparity[_i2].x,\n y: cartesian3.y - disparity[_i2].y,\n z: cartesian3.z - disparity[_i2].z\n });\n }\n _this3.label.position = [position84.lng, position84.lat, _this3.options.height + _this3.options.extrudedHeight];\n _this3.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n _this3.event.destroy();\n // let ray = this.sdk.viewer.camera.getPickRay(movement.position);//获取一条射线\n // let cartesian2 = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n var position84 = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n var cartesian3 = Cesium.Cartesian3.fromDegrees(position84.lng, position84.lat);\n newpositions = [];\n _this3.options.positions = [];\n for (var _i3 = 0; _i3 < disparity.length; _i3++) {\n newpositions.push({\n x: cartesian3.x - disparity[_i3].x,\n y: cartesian3.y - disparity[_i3].y,\n z: cartesian3.z - disparity[_i3].z\n });\n var _position = _this3.cartesian3Towgs84({\n x: cartesian3.x - disparity[_i3].x,\n y: cartesian3.y - disparity[_i3].y,\n z: cartesian3.z - disparity[_i3].z\n }, _this3.sdk.viewer);\n _position.alt = _position.alt - _this3.options.height;\n _this3.options.positions.push(_position);\n }\n _this3.positions = newpositions;\n _this3.previous.positions = newpositions;\n if (_this3._positionEditingCallback) {\n _this3._positionEditingCallback();\n _this3._positionEditingCallback = null;\n }\n _this3.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this3.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.positionEditing = false;\n } else {\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n _this3.event.destroy();\n var position84 = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n var cartesian3 = Cesium.Cartesian3.fromDegrees(position84.lng, position84.lat);\n newpositions = [];\n _this3.options.positions = [];\n for (var _i4 = 0; _i4 < disparity.length; _i4++) {\n newpositions.push({\n x: cartesian3.x - disparity[_i4].x,\n y: cartesian3.y - disparity[_i4].y,\n z: cartesian3.z - disparity[_i4].z\n });\n var _position2 = _this3.cartesian3Towgs84({\n x: cartesian3.x - disparity[_i4].x,\n y: cartesian3.y - disparity[_i4].y,\n z: cartesian3.z - disparity[_i4].z\n }, _this3.sdk.viewer);\n _position2.alt = _position2.alt - _this3.options.height;\n _this3.options.positions.push(_position2);\n }\n _this3.positions = newpositions;\n _this3.previous.positions = newpositions;\n _this3.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n if (newpositions.length > 0) {\n return new Cesium.PolygonHierarchy(newpositions);\n } else {\n return new Cesium.PolygonHierarchy(positions);\n }\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n var _material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n _material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = _material;\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n var _positions = [[]];\n for (var _i5 = 0; _i5 < this.previous.positions.length; _i5++) {\n var _positions2 = this.cartesian3Towgs84(this.previous.positions[_i5], this.sdk.viewer);\n _positions[0].push([_positions2.lng, _positions2.lat]);\n }\n var positions84 = this.cartesian3Towgs84(this.previous.positions[0], this.sdk.viewer);\n _positions[0].push([positions84.lng, positions84.lat]);\n var _polygon = turf.polygon(_positions);\n var _centroid = turf.centroid(_polygon);\n this.label.position = [_centroid.geometry.coordinates[0], _centroid.geometry.coordinates[1], this.options.height + this.options.extrudedHeight];\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.previous.positions);\n }, true);\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.color = v || '#ff0000';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this4.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = v;\n if (this.options.height <= 0.01) {\n this.options.height = 0.01;\n }\n var positions = [[]];\n for (var i = 0; i < this.options.positions.length; i++) {\n positions[0].push([this.options.positions[i].lng, this.options.positions[i].lat, this.options.height + this.options.extrudedHeight]);\n }\n positions[0].push([this.options.positions[0].lng, this.options.positions[0].lat, this.options.height + this.options.extrudedHeight]);\n var polygon = turf.polygon(positions);\n var centroid = turf.centroid(polygon);\n this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.options.extrudedHeight + this.options.height];\n var position;\n if (this.entity.polygon.hierarchy._value) {\n position = this.entity.polygon.hierarchy._value.positions;\n } else {\n position = this.entity.polygon.hierarchy._callback().positions;\n }\n var newPosition = [];\n this.entity.polygon.perPositionHeight = true;\n for (var _i6 = 0; _i6 < position.length; _i6++) {\n var cartographic = Cesium.Cartographic.fromCartesian(position[_i6]);\n var longitude = Cesium.Math.toDegrees(cartographic.longitude);\n var latitude = Cesium.Math.toDegrees(cartographic.latitude);\n var cartesian = new Cesium.Cartesian3.fromDegrees(longitude, latitude, this.options.extrudedHeight + v);\n newPosition.push(cartesian);\n }\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(newPosition);\n this.positions = newPosition;\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.positions)\n };\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"extrudedHeight\",\n get: function get() {\n return this.options.extrudedHeight;\n },\n set: function set(v) {\n this.options.extrudedHeight = v;\n var positions = [[]];\n for (var i = 0; i < this.options.positions.length; i++) {\n positions[0].push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n positions[0].push([this.options.positions[0].lng, this.options.positions[0].lat]);\n var polygon = turf.polygon(positions);\n var centroid = turf.centroid(polygon);\n this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.options.extrudedHeight + this.options.height];\n this._elms.extrudedHeight && this._elms.extrudedHeight.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"area\",\n get: function get() {\n return this.options.area;\n },\n set: function set(v) {\n this.options.area = v;\n this._elms.area && this._elms.area.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this5.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this5.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n\n // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this9 = this;\n var _this, contentElm, tabsElm, colorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 3:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 31;\n break;\n }\n _context.next = 9;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '多面体属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this9.name = _this9.name.trim();\n if (!_this9.name) {\n _this9.name = '未命名对象';\n }\n _this9.options.label.position = {\n lng: _this9.label.position[0],\n lat: _this9.label.position[1],\n alt: _this9.label.position[2]\n };\n _this9.originalOptions = _this9.deepCopyObj(_this9.options);\n _this9._DialogObject.close();\n _this9.Dialog.confirmCallBack && _this9.Dialog.confirmCallBack(_this9.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(_this9.sdk, _this9.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__[\"syncSplitData\"])(_this9.sdk, _this9.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this9.reset();\n _this9.Dialog.resetCallBack && _this9.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this9.Dialog.removeCallBack && _this9.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this9.reset();\n _this9.Dialog.closeCallBack && _this9.Dialog.closeCallBack();\n for (var i = 0; i < _this9.nodePoints.length; i++) {\n _this9.sdk.viewer.entities.remove(_this9.nodePoints[i]);\n }\n _this9.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n _this9.positionEditing = false;\n },\n showCallBack: function showCallBack(show) {\n _this9.options.show = show;\n _this9.originalOptions.show = show;\n _this9.show = show;\n _this9.Dialog.showCallBack && _this9.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this9.positionEditing = !_this9.positionEditing;\n },\n // 二次编辑回调\n secondaryEditCallBack: function secondaryEditCallBack() {\n PolyhedronObject.nodeEdit(_this9);\n }\n });\n case 9:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' polyhedron';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('polygon-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_16__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_16__[\"default\"].element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this9.attributeLink = _this9.options.attribute.link.content;\n _this9.attributeVr = _this9.options.attribute.vr.content;\n _this9.cameraSelect && _this9.cameraSelect();\n _this9.goodsSelect && _this9.goodsSelect();\n var tagData = _this9.attributeSelect;\n var attributeElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this9.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < tagData.length; _i7++) {\n if (tagData[_i7].value === attributeSelectElm.value) {\n _this9.attributeType = tagData[_i7].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this9._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this9.options['area-unit'];\n for (var _i8 = 0; _i8 < unitData.length; _i8++) {\n if (unitData[_i8].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i8].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < unitData.length; _i9++) {\n if (unitData[_i9].value === unitDataLegpElm.value) {\n _this9.areaUnit = unitData[_i9].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this9._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this9.labelFontFamily].value;\n for (var _i10 = 0; _i10 < fontData.length; _i10++) {\n if (fontData[_i10].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i10].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i11 = 0; _i11 < fontData.length; _i11++) {\n if (fontData[_i11].value === fontDataLegpElm.value) {\n _this9.labelFontFamily = fontData[_i11].key;\n break;\n }\n }\n });\n _this9._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 32;\n break;\n case 31:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 32:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function () {\n var _reset = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var positions, fromDegreesArray, i, _i12, positions2, _i13, polygon, centroid, height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (this.entity) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\");\n case 2:\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.height = this.originalOptions.height;\n this.extrudedHeight = this.originalOptions.extrudedHeight;\n this.area = this.originalOptions.area;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n positions = this.options.positions;\n fromDegreesArray = [];\n if (this.options.height || this.options.height === 0) {\n for (i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, this.options.height + this.options.extrudedHeight);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n } else {\n for (_i12 = 0; _i12 < positions.length; _i12++) {\n fromDegreesArray.push(positions[_i12].lng, positions[_i12].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n }\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positions);\n positions2 = [[]];\n for (_i13 = 0; _i13 < this.options.positions.length; _i13++) {\n positions2[0].push([this.options.positions[_i13].lng, this.options.positions[_i13].lat]);\n }\n positions2[0].push([this.options.positions[0].lng, this.options.positions[0].lat]);\n polygon = turf.polygon(positions2);\n centroid = turf.pointOnFeature(polygon);\n _context2.next = 31;\n return this.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n });\n case 31:\n height = _context2.sent;\n this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.extrudedHeight + this.height];\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 35:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function reset() {\n return _reset.apply(this, arguments);\n }\n return reset;\n }()\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label && this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context3.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n // that.positionEditing = false\n // that.event && that.event.destroy()\n var that = this;\n that.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('请选择一个顶点,右键取消', that.sdk);\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var added = false;\n var leftEvent = function leftEvent(movement, cartesian) {\n if (selectPoint) {\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n originalPosition = that.options.positions[selectPoint.index];\n added = true;\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[selectPoint.index].lng, that.options.positions[selectPoint.index].lat, that.options.extrudedHeight),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.splice(selectPoint.index, 0, entity);\n that.options.positions.splice(selectPoint.index, 0, that.options.positions[selectPoint.index]);\n that.areaByMeter = that.computeArea(that.options.positions);\n that.areaChangeCallBack && that.areaChangeCallBack();\n var labelPositions = [[]];\n for (var i = 0; i < that.options.positions.length; i++) {\n labelPositions[0].push([that.options.positions[i].lng, that.options.positions[i].lat]);\n }\n labelPositions[0].push([that.options.positions[0].lng, that.options.positions[0].lat]);\n if (labelPositions[0].length >= 4) {\n var polygon = turf.polygon(labelPositions);\n var centroid = turf.centroid(polygon);\n that.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], that.options.height + that.options.extrudedHeight];\n }\n } else {\n var pick = that.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n that.nodePoints.splice(pick.id.index, 1);\n that.sdk.viewer.entities.remove(pick.id);\n that.tip.set_text('左键确认,右键结束,CTRL+右键撤销');\n originalPosition = that.cartesian3Towgs84(selectPoint.position._value, that.sdk.viewer);\n }\n }\n };\n var rightEvent = function rightEvent(movement, cartesian) {\n if (selectPoint) {\n that.options.positions[selectPoint.index] = originalPosition;\n if (added) {\n that.options.positions.splice(selectPoint.index, 1);\n }\n that.areaByMeter = that.computeArea(that.options.positions);\n that.areaChangeCallBack && that.areaChangeCallBack();\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.height + that.options.extrudedHeight);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n that.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(that.positions);\n // let positions = []\n // cache_positions.forEach((item) => {\n // positions.push(this.cartesian3Towgs84(item, this.viewer))\n // })\n cb(null, that.options.positions);\n }\n for (var _i14 = 0; _i14 < that.nodePoints.length; _i14++) {\n that.sdk.viewer.entities.remove(that.nodePoints[_i14]);\n }\n that.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n that.event.destroy();\n that.tip.destroy();\n };\n that.event.mouse_left(leftEvent);\n that.event.mouse_right(rightEvent);\n that.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.height + that.options.extrudedHeight);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n that.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(that.positions);\n var labelPositions = [[]];\n for (var _i15 = 0; _i15 < that.options.positions.length; _i15++) {\n labelPositions[0].push([that.options.positions[_i15].lng, that.options.positions[_i15].lat]);\n }\n labelPositions[0].push([that.options.positions[0].lng, that.options.positions[0].lat]);\n if (labelPositions[0].length >= 4) {\n var polygon = turf.polygon(labelPositions);\n var centroid = turf.centroid(polygon);\n that.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], that.options.height + that.options.extrudedHeight];\n }\n }\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n that.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n that.options.positions.pop();\n that.sdk.viewer.entities.remove(that.nodePoints[that.nodePoints.length - 1]);\n // that.nodePoints.pop()\n if (selectPoint.index === that.options.positions.length) {\n if (that.nodePoints[selectPoint.index - 1]) {\n selectPoint = that.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = 0;\n }\n }\n that.nodePoints.pop();\n }\n });\n for (var i = 0; i < that.options.positions.length; i++) {\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[i].lng, that.options.positions[i].lat, that.options.extrudedHeight),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.push(entity);\n }\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this10 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var positions = [[]];\n for (var i = 0; i < this.options.positions.length; i++) {\n positions[0].push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n positions[0].push([this.options.positions[0].lng, this.options.positions[0].lat]);\n var polygon = turf.polygon(positions);\n var centroid = turf.pointOnFeature(polygon);\n var siteInfoDom = document.getElementById(options.domid);\n // let siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.options.extrudedHeight + this.options.height)\n\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], _this10.options.extrudedHeight + _this10.options.height);\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this10.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(that) {\n var positions, i, polygon, centroid;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n positions = [[]];\n for (i = 0; i < that.options.positions.length; i++) {\n positions[0].push([that.options.positions[i].lng, that.options.positions[i].lat]);\n }\n positions[0].push([that.options.positions[0].lng, that.options.positions[0].lat]);\n polygon = turf.polygon(positions);\n centroid = turf.pointOnFeature(polygon);\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: that.options.extrudedHeight + that.options.height\n };\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n ground: false,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n });\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n /**\r\n * 创建多面体\r\n */\n }, {\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n var extrudedHeight = positions[0].alt;\n for (var i = 0; i < positions.length; i++) {\n if (extrudedHeight > positions[i].alt) {\n extrudedHeight = positions[i].alt;\n }\n }\n that.options.extrudedHeight = extrudedHeight;\n for (var _i16 = 0; _i16 < positions.length; _i16++) {\n fromDegreesArray.push(positions[_i16].lng, positions[_i16].lat, that.options.height + extrudedHeight);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(that.positions),\n extrudedHeight: that.options.extrudedHeight,\n perPositionHeight: true,\n material: material\n }\n });\n PolyhedronObject.createLabel(that);\n that.areaByMeter = that.computeArea(positions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_7___default()(PolyhedronObject, \"elms\", {});\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolyhedronObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWhlZHJvbk9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Qb2x5aGVkcm9uT2JqZWN0L2luZGV4LmpzPzQzYmQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWkmumdouS9k1xyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSBcIi4uLy4uL0VsZW1lbnQvcmljaFRleHRcIjtcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4vZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5cclxuY2xhc3MgUG9seWhlZHJvbk9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5aSa6Z2i5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5ZSv5LiA5qCH6K+GXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmmL7npLov6ZqQ6JePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jb2xvcj1cIiNmZjAwMDBcIiB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQ9MTAge251bWJlcn0g6auYXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXJlYVVuaXQ9J+W5s+aWueexsycge3N0cmluZ30g5oqV5b2x6Z2i56ev5Y2V5L2NXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8IFwiI2ZmMDAwMFwiXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gKG9wdGlvbnMuaGVpZ2h0IHx8IG9wdGlvbnMuaGVpZ2h0ID09PSAwKSA/IG9wdGlvbnMuaGVpZ2h0IDogMTBcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVpZ2h0IDw9IDAuMDEpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IDAuMDFcclxuICAgIH1cclxuICAgIC8vIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCA9IChvcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IHx8IG9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgPT09IDApID8gb3B0aW9ucy5leHRydWRlZEhlaWdodCA6IHRoaXMub3B0aW9ucy5oZWlnaHQgKyA1XHJcbiAgICB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgPSAob3B0aW9ucy5leHRydWRlZEhlaWdodCB8fCBvcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0ID09PSAwKSA/IG9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgOiAwXHJcbiAgICB0aGlzLmVudGl0eVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIHRoaXMub3BlcmF0ZSA9IHt9XHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogb3B0aW9ucy5sYWJlbC5wb3NpdGlvbixcclxuICAgICAgZm9udFNpemU6IChvcHRpb25zLmxhYmVsLmZvbnRTaXplIHx8IG9wdGlvbnMubGFiZWwuZm9udFNpemUgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA6IDIwLFxyXG4gICAgICBmb250RmFtaWx5OiBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPyBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgOiAwLFxyXG4gICAgICBjb2xvcjogb3B0aW9ucy5sYWJlbC5jb2xvciB8fCAnI2ZmZmZmZicsXHJcbiAgICAgIGxpbmVXaWR0aDogKG9wdGlvbnMubGFiZWwubGluZVdpZHRoIHx8IG9wdGlvbnMubGFiZWwubGluZVdpZHRoID09PSAwKSA/IG9wdGlvbnMubGFiZWwubGluZVdpZHRoIDogNCxcclxuICAgICAgcGl4ZWxPZmZzZXQ6IChvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IHx8IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPT09IDApID8gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA6IDIwLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yIHx8IFsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddLFxyXG4gICAgICBsaW5lQ29sb3I6IG9wdGlvbnMubGFiZWwubGluZUNvbG9yIHx8ICcjMDBmZmZmODAnLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHx8IGZhbHNlLFxyXG4gICAgICBuZWFyOiAob3B0aW9ucy5sYWJlbC5uZWFyIHx8IG9wdGlvbnMubGFiZWwubmVhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLm5lYXIgOiAyMDAwLFxyXG4gICAgICBmYXI6IChvcHRpb25zLmxhYmVsLmZhciB8fCBvcHRpb25zLmxhYmVsLmZhciA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZhciA6IDEwMDAwMCxcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBvc2l0aW9ucyB8fCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgdGhpcy5fZXJyb3IgPSAn5aSa6Z2i5L2T5pyA5bCR6ZyA6KaB5LiJ5Liq5Z2Q5qCH77yBJ1xyXG4gICAgICBjb25zb2xlLndhcm4odGhpcy5fZXJyb3IpXHJcbiAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuX2Vycm9yLFxyXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgICBQb2x5aGVkcm9uT2JqZWN0LmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVsbXMgPSB7fVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuICAgIHBvc2l0aW9uc1swXS5wdXNoKFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zKTtcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbik7XHJcbiAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sIGFsdDogdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0ICsgdGhhdC5vcHRpb25zLmhlaWdodCB9XHJcbiAgICAvLyDmoIfnrb5cclxuICAgIHRoYXQubGFiZWwgPSBuZXcgTGFiZWxPYmplY3QodGhhdC5zZGssIHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3cgPyB0aGF0Lm9wdGlvbnMubGFiZWwuc2hvdyA6IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogW3RoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcsIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQsIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHRdLFxyXG4gICAgICB0ZXh0OiB0aGF0Lm9wdGlvbnMubmFtZSxcclxuICAgICAgZ3JvdW5kOiBmYWxzZSxcclxuICAgICAgZm9udFNpemU6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250U2l6ZSxcclxuICAgICAgZm9udEZhbWlseTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHksXHJcbiAgICAgIGNvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuY29sb3IsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiB0aGF0Lm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgbGluZUNvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZUNvbG9yLFxyXG4gICAgICBsaW5lV2lkdGg6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lV2lkdGgsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogdGhhdC5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSxcclxuICAgICAgbmVhcjogdGhhdC5vcHRpb25zLmxhYmVsLm5lYXIsXHJcbiAgICAgIGZhcjogdGhhdC5vcHRpb25zLmxhYmVsLmZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuWkmumdouS9k1xyXG4gICAqL1xyXG4gIHN0YXRpYyBjcmVhdGUodGhhdCkge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGxldCBleHRydWRlZEhlaWdodCA9IHBvc2l0aW9uc1swXS5hbHRcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChleHRydWRlZEhlaWdodCA+IHBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICBleHRydWRlZEhlaWdodCA9IHBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0ID0gZXh0cnVkZWRIZWlnaHRcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCB0aGF0Lm9wdGlvbnMuaGVpZ2h0ICsgZXh0cnVkZWRIZWlnaHQpXHJcbiAgICB9XHJcbiAgICB0aGF0LnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgbGV0IG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpXHJcbiAgICBpZih0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpLFxyXG4gICAgICAgIGV4dHJ1ZGVkSGVpZ2h0OiB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQsXHJcbiAgICAgICAgcGVyUG9zaXRpb25IZWlnaHQ6IHRydWUsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIFBvbHloZWRyb25PYmplY3QuY3JlYXRlTGFiZWwodGhhdClcclxuICAgIHRoYXQuYXJlYUJ5TWV0ZXIgPSB0aGF0LmNvbXB1dGVBcmVhKHBvc2l0aW9ucyk7XHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYodGhhdC5vcHRpb25zLnNob3cpIHtcclxuICAgICAgIFxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICpcclxuICAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkgfHwgIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5Z29uKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMC45KWApKVxyXG4gICAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcikud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgIGlmKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uc1xyXG5cclxuICAgICAgbGV0IGRpc3Bhcml0eSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBhcnJheS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpcnN0cG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBhcnJheS5wdXNoKFtmaXJzdHBvc2l0aW9uLmxuZywgZmlyc3Rwb3NpdGlvbi5sYXRdKVxyXG4gICAgICB2YXIgcG9seWdvbiA9IHR1cmYucG9seWdvbihbYXJyYXldKTtcclxuICAgICAgdmFyIGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgICAgbGV0IGNlbnRlciA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNlbnRlci54IC0gcG9zaXRpb25zW2ldLnhcclxuICAgICAgICBkaXNwYXJpdHkucHVzaCh7XHJcbiAgICAgICAgICB4OiBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54LFxyXG4gICAgICAgICAgeTogY2VudGVyLnkgLSBwb3NpdGlvbnNbaV0ueSxcclxuICAgICAgICAgIHo6IGNlbnRlci56IC0gcG9zaXRpb25zW2ldLnosXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0KVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuMy54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgIHk6IGNhcnRlc2lhbjMueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICB6OiBjYXJ0ZXNpYW4zLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0ICsgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgLy8gbGV0IHJheSA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7Ly/ojrflj5bkuIDmnaHlsITnur9cclxuICAgICAgICAvLyBsZXQgY2FydGVzaWFuMiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgbGV0IGNhcnRlc2lhbjMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbjg0LmxuZywgcG9zaXRpb244NC5sYXQpXHJcbiAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3Bhcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICB4OiBjYXJ0ZXNpYW4zLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuMy55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgIHo6IGNhcnRlc2lhbjMueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoe1xyXG4gICAgICAgICAgICB4OiBjYXJ0ZXNpYW4zLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuMy55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgIHo6IGNhcnRlc2lhbjMueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICAgICAgfSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gcG9zaXRpb24uYWx0IC0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgIHRoaXMucHJldmlvdXMucG9zaXRpb25zID0gbmV3cG9zaXRpb25zXHJcblxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIGxldCBjYXJ0ZXNpYW4zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0KVxyXG4gICAgICAgICAgICBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB4OiBjYXJ0ZXNpYW4zLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgICAgIHk6IGNhcnRlc2lhbjMueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICAgICAgejogY2FydGVzaWFuMy56IC0gZGlzcGFyaXR5W2ldLnosXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHtcclxuICAgICAgICAgICAgICAgIHg6IGNhcnRlc2lhbjMueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgICAgICAgICAgeTogY2FydGVzaWFuMy55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgICAgICB6OiBjYXJ0ZXNpYW4zLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgICAgICB9LCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgcG9zaXRpb24uYWx0ID0gcG9zaXRpb24uYWx0IC0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMucHVzaChwb3NpdGlvbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKG5ld3Bvc2l0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KG5ld3Bvc2l0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHBvc2l0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbC5lbnRpdHkgJiYgdGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwxKWApXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgIGlmKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG1hdGVyaWFsXHJcbiAgICAgIHRoaXMucGlja2luZyA9IHRydWVcclxuICAgICAgaWYgKHRoaXMuZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICBsZXQgcG9zaXRpb25zID0gW1tdXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJldmlvdXMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnByZXZpb3VzLnBvc2l0aW9uc1tpXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHBvc2l0aW9uc1swXS5wdXNoKFtwb3NpdGlvbnM4NC5sbmcsIHBvc2l0aW9uczg0LmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnByZXZpb3VzLnBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbcG9zaXRpb25zODQubG5nLCBwb3NpdGlvbnM4NC5sYXRdKVxyXG4gICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb3NpdGlvbnMpO1xyXG4gICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW2NlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgdGhpcy5vcHRpb25zLmhlaWdodCArIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodF1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucHJldmlvdXMucG9zaXRpb25zKVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgZ2V0IGFyZWFDaGFuZ2VDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBhcmVhQ2hhbmdlQ2FsbEJhY2sgKGNkKSB7XHJcbiAgICB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdiB8fCAnI2ZmMDAwMCdcclxuICAgIGlmKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWdvbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IDIpIHtcclxuICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24ubWF0ZXJpYWwgPSBtYXRlcmlhbFxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMub3B0aW9ucy5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICB9XHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gdlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWlnaHQgPD0gMC4wMSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gMC4wMVxyXG4gICAgfVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0ICsgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XSlcclxuICAgIH1cclxuICAgIHBvc2l0aW9uc1swXS5wdXNoKFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoaXMub3B0aW9ucy5oZWlnaHQgKyB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zKTtcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW2NlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0ICsgdGhpcy5vcHRpb25zLmhlaWdodF1cclxuICAgIGxldCBwb3NpdGlvblxyXG4gICAgaWYgKHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5Ll92YWx1ZSkge1xyXG4gICAgICBwb3NpdGlvbiA9IHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5Ll92YWx1ZS5wb3NpdGlvbnNcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwb3NpdGlvbiA9IHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5Ll9jYWxsYmFjaygpLnBvc2l0aW9uc1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld1Bvc2l0aW9uID0gW11cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSB0cnVlXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9zaXRpb25baV0pO1xyXG4gICAgICBsZXQgbG9uZ2l0dWRlID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICBsZXQgbGF0aXR1ZGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKTtcclxuICAgICAgbGV0IGNhcnRlc2lhbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb25naXR1ZGUsIGxhdGl0dWRlLCB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgKyB2KTtcclxuICAgICAgbmV3UG9zaXRpb24ucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShuZXdQb3NpdGlvbilcclxuICAgIHRoaXMucG9zaXRpb25zID0gbmV3UG9zaXRpb25cclxuICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5oZWlnaHQgJiYgdGhpcy5fZWxtcy5oZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBleHRydWRlZEhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRcclxuICB9XHJcbiAgc2V0IGV4dHJ1ZGVkSGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCA9IHZcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbW11dXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9zaXRpb25zWzBdLnB1c2goW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICB9XHJcbiAgICBwb3NpdGlvbnNbMF0ucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9ucyk7XHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCArIHRoaXMub3B0aW9ucy5oZWlnaHRdXHJcbiAgICB0aGlzLl9lbG1zLmV4dHJ1ZGVkSGVpZ2h0ICYmIHRoaXMuX2VsbXMuZXh0cnVkZWRIZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBhcmVhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hcmVhXHJcbiAgfVxyXG5cclxuICBzZXQgYXJlYSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXJlYSA9IHZcclxuICAgIHRoaXMuX2VsbXMuYXJlYSAmJiB0aGlzLl9lbG1zLmFyZWEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udEZhbWlseSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsRm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5mb250RmFtaWx5ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gbGFiZWxDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZvbnRTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUgJiYgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTmVhciAmJiB0aGlzLl9lbG1zLmxhYmVsTmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5sYWJlbE5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5sYWJlbE5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRmFyICYmIHRoaXMuX2VsbXMubGFiZWxGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGggJiYgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsUGl4ZWxPZmZzZXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBsYWJlbFBpeGVsT2Zmc2V0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQgJiYgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0sIHZdXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kW2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICflpJrpnaLkvZPlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGlzLmxhYmVsLnBvc2l0aW9uWzBdLCBsYXQ6IHRoaXMubGFiZWwucG9zaXRpb25bMV0sIGFsdDogdGhpcy5sYWJlbC5wb3NpdGlvblsyXSB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8g5LqM5qyh57yW6L6R5Zue6LCDXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBQb2x5aGVkcm9uT2JqZWN0Lm5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHBvbHloZWRyb24nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygncG9seWdvbi1vYmplY3QtZWRpdC10YWJzJywgdW5kZWZpbmVkLCB0aGlzLnNkaylcclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbENvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbExpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIEV2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2xhYmVsQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IgPSBbbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgICB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbe1xyXG4gICAgICAgICAgbmFtZTogJ+W5s+aWueexsycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+W5s+aWueexsydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnljYPnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnljYPnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5LqpJyxcclxuICAgICAgICAgIHZhbHVlOiAn5LqpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+WFrOmhtycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+WFrOmhtydcclxuICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgdW5pdERhdGFMZWdwT2JqZWN0ID0gbGVncCh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdC1ib3gnKVswXSwgXCIuaW5wdXQtc2VsZWN0LXVuaXRcIilcclxuICAgICAgICBpZiAodW5pdERhdGFMZWdwT2JqZWN0KSB7XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2godW5pdERhdGEpXHJcbiAgICAgICAgICBsZXQgdW5pdERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zWydhcmVhLXVuaXQnXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh1bml0RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodW5pdERhdGFbaV0udmFsdWUgPT09IHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcmVhVW5pdCA9IHVuaXREYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSwgMCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmhlaWdodFxyXG4gICAgdGhpcy5leHRydWRlZEhlaWdodCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XHJcbiAgICB0aGlzLmFyZWEgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hcmVhXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuXHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5vcHRpb25zLmhlaWdodCA9PT0gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCB0aGlzLm9wdGlvbnMuaGVpZ2h0ICsgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhpcy5wb3NpdGlvbnMpXHJcblxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMyID0gW1tdXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHBvc2l0aW9uczJbMF0ucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuICAgIHBvc2l0aW9uczJbMF0ucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvc2l0aW9uczIpO1xyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKTtcclxuICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdIH0pXHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW2NlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgdGhpcy5leHRydWRlZEhlaWdodCArIHRoaXMuaGVpZ2h0XVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgbm9kZUVkaXQoY2IgPSAoKSA9PiB7IH0pIHtcclxuICAgIC8vIHRoYXQucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIC8vIHRoYXQuZXZlbnQgJiYgdGhhdC5ldmVudC5kZXN0cm95KClcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgdGhhdC5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb25cclxuXHJcbiAgICAgIGxldCBhZGRlZCA9IGZhbHNlXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdXHJcbiAgICAgICAgICBhZGRlZCA9IHRydWVcclxuICAgICAgICAgIGxldCBlbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQsIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodCksXHJcbiAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgZW50aXR5KVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDAsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdKVxyXG4gICAgICAgICAgdGhhdC5hcmVhQnlNZXRlciA9IHRoYXQuY29tcHV0ZUFyZWEodGhhdC5vcHRpb25zLnBvc2l0aW9ucyk7XHJcbiAgICAgICAgICB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjayAmJiB0aGF0LmFyZWFDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgICAgICBsZXQgbGFiZWxQb3NpdGlvbnMgPSBbW11dXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGFiZWxQb3NpdGlvbnNbMF0ucHVzaChbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxhYmVsUG9zaXRpb25zWzBdLnB1c2goW3RoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdF0pXHJcbiAgICAgICAgICBpZiAobGFiZWxQb3NpdGlvbnNbMF0ubGVuZ3RoID49IDQpIHtcclxuICAgICAgICAgICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24obGFiZWxQb3NpdGlvbnMpO1xyXG4gICAgICAgICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW2NlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgdGhhdC5vcHRpb25zLmhlaWdodCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodF1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB2YXIgcGljayA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKTtcclxuICAgICAgICAgIGlmIChwaWNrICYmIHBpY2suaWQgJiYgcGljay5pZC5uYW1lICYmIHBpY2suaWQubmFtZSA9PT0gJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUocGljay5pZClcclxuICAgICAgICAgICAgdGhhdC50aXAuc2V0X3RleHQoJ+W3pumUruehruiupO+8jOWPs+mUrue7k+adn++8jENUUkwr5Y+z6ZSu5pKk6ZSAJylcclxuICAgICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoc2VsZWN0UG9pbnQucG9zaXRpb24uX3ZhbHVlLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgaWYoYWRkZWQpIHtcclxuICAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGF0LmFyZWFCeU1ldGVyID0gdGhhdC5jb21wdXRlQXJlYSh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKTtcclxuICAgICAgICAgIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrICYmIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrKClcclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLmhlaWdodCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgIHRoYXQuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgLy8gbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAvLyBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICBjYihudWxsLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0Lm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgIHRoYXQuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgdGhhdC50aXAuZGVzdHJveSgpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG5cclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9yaWdodChyaWdodEV2ZW50KVxyXG5cclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHRoYXQub3B0aW9ucy5oZWlnaHQgKyB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGF0LnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgICB0aGF0LmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9ucylcclxuXHJcbiAgICAgICAgICBsZXQgbGFiZWxQb3NpdGlvbnMgPSBbW11dXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGFiZWxQb3NpdGlvbnNbMF0ucHVzaChbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxhYmVsUG9zaXRpb25zWzBdLnB1c2goW3RoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdF0pXHJcbiAgICAgICAgICBpZiAobGFiZWxQb3NpdGlvbnNbMF0ubGVuZ3RoID49IDQpIHtcclxuICAgICAgICAgICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24obGFiZWxQb3NpdGlvbnMpO1xyXG4gICAgICAgICAgICBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW2NlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSwgdGhhdC5vcHRpb25zLmhlaWdodCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodF1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0Lm5vZGVQb2ludHNbdGhhdC5ub2RlUG9pbnRzLmxlbmd0aCAtIDFdKVxyXG4gICAgICAgICAgLy8gdGhhdC5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm5vZGVQb2ludHNbc2VsZWN0UG9pbnQuaW5kZXggLSAxXSkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhhdC5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludC5pbmRleCA9IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQpLFxyXG4gICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoYXQubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VOb2RlRWRpdCgpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3NpdGlvbnNbMF0ucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuICAgIHBvc2l0aW9uc1swXS5wdXNoKFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9zaXRpb25zKTtcclxuICAgIGxldCBjZW50cm9pZCA9IHR1cmYucG9pbnRPbkZlYXR1cmUocG9seWdvbik7XHJcblxyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIC8vIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLCB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgKyB0aGlzLm9wdGlvbnMuaGVpZ2h0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCArIHRoaXMub3B0aW9ucy5oZWlnaHQpXHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8IHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICcnKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHNpdGVJbmZvUG9zaXRpb24pO1xyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUG9seWhlZHJvbk9iamVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvUkE7QUFDQTtBQUFBO0FBdE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUE1Q0E7QUE2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQTNQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNlBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW5EQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdm5DQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBM0JBO0FBQUE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUE5S0E7QUFpdUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolyhedronObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolylineObject/_element.js": -/*!*************************************************!*\ - !*** ./src/Obj/Base/PolylineObject/_element.js ***! - \*************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u7EBF\\u6761\\u989C\\u8272\\n
\\n
\\n
\\n \\u7EBF\\u6761\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n \\u7EBF\\u6761\\u5F62\\u5F0F\\n
\\n
\\n
\\n
\\n
\\n \\u9996\\u5C3E\\u76F8\\u8FDE\\n \\n
\\n
\\n \\u7EBF\\u6BB5\\u5706\\u6ED1\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7EBF\\u6BB5\\u7F13\\u51B2\\n \\n
\\n
\\n \\u7F13\\u51B2\\u5BBD\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n \\u7F13\\u51B2\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n \\u9996\\u5C3E\\u53CD\\u5411\\n \\n
\\n
\\n \\u6D41\\u52A8\\u901F\\u7387\\n
\\n \\n \\n
\\n
\\n
\\n \\u7EBF\\u6761\\u95F4\\u8DDD\\n
\\n \\n \\u500D\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWxpbmVPYmplY3QvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvUG9seWxpbmVPYmplY3QvX2VsZW1lbnQuanM/OWMyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2JTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC11bml0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlbGVjdC11bml0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbnB1dC10ZXh0XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCIgc3R5bGU9XCJmbGV4OiAwIDAgMTMwcHg7XCIgQG1vZGVsPVwibGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VsZWN0LXVuaXRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWJzIGlkPVwicG9seWxpbmUtb2JqZWN0LWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1tb2RlLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1tb2RlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+WuWAvOe7n+S4gOWinuWKoDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIGhlaWdodC1jb25maXJtXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPuW6lOeUqDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBzcGF0aWFsLWluZm8tdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nu4/luqbvvIhY77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue6rOW6pu+8iFnvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6auY5bqm77yIWu+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi57q/5p2h6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57q/5p2h6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzMlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6v+adoeWuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5XCIgQG1vZGVsPVwibGluZVdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtbGluZS10eXBlLWJveFwiIHN0eWxlPVwiZmxleDogMCAwIDM3JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nur/mnaHlvaLlvI88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VsZWN0LWxpbmUtdHlwZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppblsL7nm7jov548L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibm9zZVRvVGFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDMzJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nur/mrrXlnIbmu5E8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwic21vb3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzclO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nur/mrrXnvJPlhrI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwiZXh0ZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzMlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue8k+WGsuWuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgZGF0YS1taW49XCIwLjAxXCIgbWF4PVwiOTk5OTk5XCIgQG1vZGVsPVwiZXh0ZW5kV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzNyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57yT5Yay6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuZENvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBpZD1cImRhc2hUZXh0dXJlRG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppblsL7lj43lkJE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwicm90YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMzMlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPua1geWKqOmAn+eOhzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiIHN0eWxlPVwid2lkdGg6IDgwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTk5XCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAzNyU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgbGluZVNwYWNlXCI+57q/5p2h6Ze06LedPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgbGluZVNwYWNlXCIgc3R5bGU9XCJ3aWR0aDogODBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjQuNVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJzcGFjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+5YCNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICA8IS0tICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIueBr+WFieaOp+WItlwiPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICA8ZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaMh+S7pDwvc3Bhbj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cImluc3RydWN0XCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgQGNsaWNrPVwiaW5zdHJ1Y3RTdWJtaXRcIj7mj5DkuqQ8L2J1dHRvbj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi6K6+572u5pON5L2c54K5XCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6K6+572u5pON5L2c54K5PC9zcGFuPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwib3BlcmF0aW5nUG9pbnRcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiBAY2xpY2s9XCJvcGVyYXRpbmdQb2ludFN1Ym1pdFwiPuaPkOS6pDwvYnV0dG9uPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPi0tPlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFrS0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolylineObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolylineObject/eventBinding.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/PolylineObject/eventBinding.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n e.target.value = value;\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n e.target.value = value;\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWxpbmVPYmplY3QvZXZlbnRCaW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1BvbHlsaW5lT2JqZWN0L2V2ZW50QmluZGluZy5qcz9jMmE1Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIGV2ZW50QmluZGluZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB7fVxyXG4gIH1cclxuICBzdGF0aWMgZXZlbnQgPSB7fVxyXG5cclxuICBnZXRFdmVudChuYW1lKSB7XHJcbiAgICByZXR1cm4gZXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdXHJcbiAgfVxyXG5cclxuICBnZXRFdmVudEFsbCgpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRcclxuICB9XHJcblxyXG4gIHNldEV2ZW50KG5hbWUsIGV2ZW50KSB7XHJcbiAgICBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV0gPSBldmVudFxyXG4gIH1cclxuXHJcbiAgb24odGhhdCwgZWxlbWVudHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IEV2ZW50ID0gW11cclxuICAgICAgbGV0IGlzRXZlbnQgPSBmYWxzZVxyXG4gICAgICBsZXQgcmVtb3ZlTmFtZSA9IFtdXHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG0gb2YgZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIHN3aXRjaCAobS5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdAbW9kZWwnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7IHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC5jaGVja2VkIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YSAhPSAnLicgJiYgKGUuZGF0YSAhPSAnLScgfHwgZS50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5kYXRhc2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5ub2RlTmFtZSA9PSAnSU1HJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uc3JjID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50W20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNoYW5nZSc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlLCB2YWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCByZW1vdmVOYW1lLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgKGUpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgRXZlbnQubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgRXZlbnRbdF0oZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgRXZlbnRCaW5kaW5nID0gbmV3IGV2ZW50QmluZGluZygpO1xyXG5leHBvcnQgZGVmYXVsdCBFdmVudEJpbmRpbmc7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUEwRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpHQTtBQUFBO0FBS0E7QUE2RkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolylineObject/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/PolylineObject/index.js": -/*!**********************************************!*\ - !*** ./src/Obj/Base/PolylineObject/index.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/PolylineObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/PolylineObject/eventBinding.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 线\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PolylineObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 折线\r\n * @param options {object} 线属性\r\n * @param options.name{string} 名称\r\n * @param options.width=3{number} 线宽\r\n * @param options.color=#ff0000 {string} 颜色\r\n * @param options.type=0 {number} 材质类型 0-实线 1-虚线 2-泛光...\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对高度;2:依附模式)\r\n * @param options.noseToTail=false {boolean} 首尾相连\r\n * @param options.smooth=false {boolean} 线段圆滑\r\n * @param options.extend=false {boolean} 线缓冲\r\n * @param options.extendWidth=10 {number} 线缓冲宽度\r\n * @param options.extendColor=rgba(255,255,80,0.3) {number} 线缓冲颜色\r\n * @param options.show=true {boolean} 显隐\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * \r\n * \r\n * @param options.noseToTail=false {boolean} 是否首尾相连\r\n * \r\n * \r\n * \r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {string} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * \r\n * \r\n * @param _Dialog {object} 弹框事件\r\n * @param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function PolylineObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PolylineObject);\n _this2 = _callSuper(this, PolylineObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.width = options.width || options.width === 0 ? options.width : 3;\n _this2.options.color = options.color || '#ff0000';\n _this2.options.type = options.type ? Number(options.type) : 0;\n _this2.options.noseToTail = options.noseToTail || false;\n _this2.options.smooth = options.smooth || false;\n _this2.options.extend = options.extend || false;\n _this2.options.rotate = options.rotate || options.rotate === false ? options.rotate : true;\n _this2.options.space = options.space || options.space === 0 ? options.space : 1;\n _this2.options.speed = options.speed || 10;\n // this.options.dashSize = options.dashSize || 0.03\n _this2.options.wordsName = options.wordsName || 0;\n _this2.options.extendWidth = options.extendWidth || options.extendWidth === 0 ? options.extendWidth : 10;\n _this2.options.extendColor = options.extendColor || 'rgba(255,255,80,0.3)';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2._elms = [];\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n // this.options.attribute.camera = this.options.attribute.camera || {}\n // this.options.attribute.camera.content =\n // this.options.attribute.camera.content || []\n // this.options.attribute.vr = this.options.attribute.vr || {}\n // this.options.attribute.vr.content =\n // this.options.attribute.vr.content || []\n // this.options.attribute.goods = this.options.attribute.goods || {}\n // this.options.attribute.goods.content =\n // this.options.attribute.goods.content || []\n\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.operate = {};\n _this2.nodePoints = [];\n _this2.unitNum = 0;\n _this2.inputSpeed = options.speed && Math.pow(options.speed, -1) * 100 || 10;\n _this2.Dialog = _Dialog;\n if (!_this2.options.positions || _this2.options.positions.length < 2) {\n _this2._error = '线段最少需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n for (var i = 0; i < _this2.options.positions.length; i++) {\n _this2.options.positions[i].lng = Number(Number(_this2.options.positions[i].lng).toFixed(8));\n _this2.options.positions[i].lat = Number(Number(_this2.options.positions[i].lat).toFixed(8));\n _this2.options.positions[i].alt = Number(Number(_this2.options.positions[i].alt).toFixed(2));\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n PolylineObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(PolylineObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PolylineObject, [{\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || '#ff0000';\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,0,0,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n this.inputSpeed = v !== 0 ? Math.pow(v, -1) * 100 : 0;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.options.speed = v !== 0 ? Math.pow(v, -1) * 100 : 0\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n // get dashSize() {\n // return this.options.dashSize\n // }\n\n // set dashSize(v) {\n // this.options.dashSize = v\n // let params = { ...this.options }\n // params.speed = this.inputSpeed\n // // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params)\n // }\n }, {\n key: \"rotate\",\n get: function get() {\n return this.options.rotate;\n },\n set: function set(v) {\n this.options.rotate = v;\n this.closeNodeEdit();\n this._elms.rotate && this._elms.rotate.forEach(function (item) {\n item.checked = v;\n });\n this.options.rotate = v;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n }, {\n key: \"space\",\n get: function get() {\n return this.options.space;\n },\n set: function set(v) {\n this.options.space = v;\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n // this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)\n this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params);\n }\n }, {\n key: \"wordsName\",\n get: function get() {\n return this.options.wordsName;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.wordsName = Number(v);\n var _this = this;\n if (!this.noseToTail) {\n this.computeDistance(this.options.positions, 2, v).then(function (res) {\n // _this.options.lengthByMeter = res\n // if (res > 1000 || res == 1000) {\n // _this.length = (res / 1000).toFixed(5)\n // _this.lengthUnit = '千米'\n // } else {\n // _this.length = res\n // _this.lengthUnit = '米'\n // }\n _this.lengthByMeter = res;\n _this4.lengthChangeCallBack && _this4.lengthChangeCallBack();\n });\n } else {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n }\n }\n\n // get fitLengthUnit() {\n // return this.options.fitLengthUnit\n // }\n // set fitLengthUnit(v) {\n // this.options.fitLengthUnit = v\n // this._elms.fitLengthUnit &&\n // this._elms.fitLengthUnit.forEach(item => {\n // item.value = v\n // })\n // if (this.fitLengthByMeter) {\n // switch (v) {\n // case '米':\n // this.fitLength = this.fitLengthByMeter\n // break\n // case '千米':\n // this.fitLength = Number(\n // (this.fitLengthByMeter / 1000).toFixed(5)\n // )\n // break\n // default:\n // this.fitLength = this.fitLengthByMeter\n // }\n // }\n // }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.width;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.width = v || v == 0 ? v : 3;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = _this5.options.width;\n });\n if (this.entity && this.entity.polyline) {\n this.entity.polyline.width = this.entity.polyline.width + v - this.entity.polyline.oriWidth;\n this.entity.polyline.oriWidth = this.options.width;\n }\n // this.entity &&\n // this.entity.polyline &&\n // (this.entity.polyline.width = this.options.width) && (this.entity.polyline.oriWidth = this.options.width)\n }\n }, {\n key: \"lineType\",\n get: function get() {\n return this.options.type;\n },\n set: function set(v) {\n var _this6 = this;\n var lineTypeData = [{\n name: '实线',\n value: '实线',\n key: 0,\n icon: 'line'\n }, {\n name: '虚线',\n value: '虚线',\n key: 1,\n icon: 'dash-line'\n }, {\n name: '泛光',\n value: '泛光',\n key: 2,\n icon: 'light-line'\n }, {\n name: '尾迹光线',\n value: '尾迹光线',\n key: 3,\n icon: 'tail-line'\n }, {\n name: '多尾迹光线',\n value: '多尾迹光线',\n key: 4,\n icon: 'mult-tail-line'\n }, {\n name: '流动虚线1',\n value: '流动虚线1',\n key: 5,\n icon: 'flow-dash-line1'\n }, {\n name: '流动虚线2',\n value: '流动虚线2',\n key: 6,\n icon: 'flow-dash-line2'\n }, {\n name: '流动箭头1',\n value: '流动箭头1',\n key: 7,\n icon: 'pic-line1'\n }, {\n name: '流动箭头2',\n value: '流动箭头2',\n key: 8,\n icon: 'pic-line2'\n }, {\n name: '流动箭头3',\n value: '流动箭头3',\n key: 9,\n icon: 'pic-line3'\n }, {\n name: '流动箭头4',\n value: '流动箭头4',\n key: 10,\n icon: 'pic-line4'\n }, {\n name: '流动箭头5',\n value: '流动箭头5',\n key: 11,\n icon: 'pic-line5'\n }, {\n name: '流动箭头6',\n value: '流动箭头6',\n key: 12,\n icon: 'pic-line6'\n }];\n this.options.type = Number(v);\n var _loop = function _loop(i) {\n if (lineTypeData[i].key === Number(v)) {\n _this6._elms.lineType && _this6._elms.lineType.forEach(function (item) {\n item.value = lineTypeData[i].value;\n if (2 < item.value && item.value < 13) {\n //贴图参数\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'flex');\n } else {\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'none');\n }\n if (2 < item.value && item.value < 5) {\n //尾迹参数\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'none');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'none');\n } else {\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'flex');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'flex');\n }\n });\n return 1; // break\n }\n };\n for (var i = 0; i < lineTypeData.length; i++) {\n if (_loop(i)) break;\n }\n var params = _objectSpread({}, this.options);\n params.speed = this.inputSpeed;\n this.entity && this.entity.polyline && (this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, params));\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.noseToTail;\n },\n set: function set(v) {\n this.options.noseToTail = v;\n this.closeNodeEdit();\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n if (this.entity) {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n }\n // if (v) {\n // if (this.options.fitLengthByMeter > 1000 || this.options.fitLengthByMeter == 1000) {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()\n // } else {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()\n // }\n\n // } else {\n // if (this.options.lengthByMeter > 1000 || this.options.lengthByMeter == 1000) {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()\n // } else {\n // let dom = document.getElementsByClassName('input-select-unit')[1]\n // dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()\n // }\n // }\n }\n }, {\n key: \"smooth\",\n get: function get() {\n return this.options.smooth;\n },\n set: function set(v) {\n this.options.smooth = v;\n this.closeNodeEdit();\n this._elms.smooth && this._elms.smooth.forEach(function (item) {\n item.checked = v;\n });\n if (this.entity) {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this7 = this;\n if (!this._isNodeEdit) {\n this._lastHeightMode = null;\n }\n this.positionEditing = false;\n this.options.heightMode = v || v == 0 ? v : 2;\n var heightModeName = '';\n this.closeNodeEdit();\n var ground = false;\n var disabled = false;\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n this.entity.polyline.clampToGround = ground;\n this.extend = false;\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n this.entity.polyline.clampToGround = ground;\n this.extend = false;\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n this.entity.polyline.clampToGround = ground;\n heightModeName = '依附模型';\n break;\n }\n setTimeout(function () {\n if (ground) {\n _this7.label.ground = ground;\n _this7._elms.heightMode && (_this7._elms.heightMode.value = '依附模型');\n _this7.label.position = [_this7.options.positions[0].lng, _this7.options.positions[0].lat];\n } else {\n _this7.label.ground = ground;\n _this7.label.position = [_this7.options.positions[0].lng, _this7.options.positions[0].lat, fromDegreesArray[2]];\n _this7.options.label.position = {\n lng: _this7.options.positions[0].lng,\n lat: _this7.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n }\n }, 50);\n }\n }, {\n key: \"extend\",\n get: function get() {\n return this.options.extend;\n },\n set: function set(v) {\n this.options.extend = v;\n this.closeNodeEdit();\n if (v) {\n this.heightMode = 2;\n }\n this._elms.extend && this._elms.extend.forEach(function (item) {\n item.checked = v;\n });\n if (this.entity) {\n if (this.options.extend) {\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.renewPolygon(fromDegreesArray);\n } else {\n this.entity.polygon = undefined;\n }\n }\n }\n }, {\n key: \"extendWidth\",\n get: function get() {\n return this.options.extendWidth;\n },\n set: function set(v) {\n this.options.extendWidth = v;\n this.heightMode = this.heightMode;\n this._elms.extendWidth && this._elms.extendWidth.forEach(function (item) {\n item.value = v;\n });\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.renewPolygon(fromDegreesArray);\n }\n }, {\n key: \"extendColor\",\n get: function get() {\n return this.options.extendColor;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.extendColor = v;\n if (this._elms.extendColor) {\n this._elms.extendColor.forEach(function (item, i) {\n var extendColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.extendColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.extendColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.extendColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.extendColor[i] = extendColorPicker;\n });\n }\n this.entity && this.entity.polygon && (this.entity.polygon.material = Cesium.Color.fromCssColorString(this.options.extendColor));\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n setTimeout(function () {\n _this9.label.position = [_this9.options.positions[0].lng, _this9.options.positions[0].lat, _this9.options.positions[0].alt];\n }, 0);\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this12 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this12.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this12._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this13 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this13.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this13._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n\n // get attributeCamera() {\n // return this.options.attribute.camera.content\n // }\n\n // set attributeCamera(v) {\n // this.options.attribute.camera.content = v\n // }\n\n // get attributeVr() {\n // return this.options.attribute.vr.content\n // }\n\n // set attributeVr(v) {\n // this.options.attribute.vr.content = v\n // if (\n // !this._DialogObject ||\n // !this._DialogObject._element ||\n // !this._DialogObject._element.content ||\n // this._DialogObject._element.content.getElementsByClassName(\n // 'attribute-content-vr'\n // ).length == 0\n // ) {\n // return\n // }\n // let table = this._DialogObject._element.content\n // .getElementsByClassName('attribute-content-vr')[1]\n // .getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // tableContent.innerHTML = ''\n // if (this.options.attribute.vr.content.length > 0) {\n // table.getElementsByClassName('table-empty')[0].style.display = 'none'\n // } else {\n // table.getElementsByClassName('table-empty')[0].style.display = 'flex'\n // }\n // for (let i = 0; i < this.options.attribute.vr.content.length; i++) {\n // let tr =\n // `\n //
\n //
` +\n // this.options.attribute.vr.content[i].name +\n // `
\n //
` +\n // this.options.attribute.vr.content[i].url +\n // `
\n //
\n // \n // \n //
\n //
`\n // let trElm = document.createRange().createContextualFragment(tr)\n // tableContent.appendChild(trElm)\n // }\n // let item = tableContent.getElementsByClassName('tr')\n // let fun = {\n // vrEdit: async index => {\n // this.attributeVr = await this.options.attribute.vr.content\n // let table = this._DialogObject._element.content\n // .getElementsByClassName('attribute-content-vr')[1]\n // .getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // let item = tableContent.getElementsByClassName('tr')\n // for (let i = 0; i < item.length; i++) {\n // if (index === i) {\n // let height = item[i].offsetHeight\n // let html = `\n //
\n // \n //
\n //
\n // \n //
\n //
\n // \n // \n //
`\n // item[i].innerHTML = html\n // let textareaElm = item[i].getElementsByClassName('link-edit')[0]\n // textareaElm.style.height = height - 10 + 'px'\n // let td = item[i].getElementsByClassName('td')\n // td[0].getElementsByClassName(\n // 'input'\n // )[0].value = this.options.attribute.vr.content[index].name\n // td[1].getElementsByClassName(\n // 'input'\n // )[0].value = this.options.attribute.vr.content[index].url\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // if (!btn[n] || !btn[n].attributes) {\n // continue\n // }\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', e => {\n // if (typeof fun[m.value] === 'function') {\n // fun[m.value](\n // {\n // name: td[0].getElementsByClassName('input')[0].value,\n // url: td[1].getElementsByClassName('input')[0].value\n // },\n // i\n // )\n // }\n // })\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // break\n // }\n // }\n // },\n // vrDelete: i => {\n // this.options.attribute.vr.content.splice(i, 1)\n // this.attributeVr = this.options.attribute.vr.content\n // },\n\n // confirmEdit: (value, i) => {\n // let name = value.name && value.name.replace(/\\s/g, '')\n // let url = value.url && value.url.replace(/\\s/g, '')\n // if (name && url) {\n // this.options.attribute.vr.content[i] = value\n // } else {\n // window.ELEMENT &&\n // window.ELEMENT.Message({\n // message: '名称或链接不能为空!',\n // type: 'warning',\n // duration: 1500\n // })\n // }\n // this.attributeVr = this.options.attribute.vr.content\n // },\n // cancelEdit: () => {\n // this.attributeVr = this.options.attribute.vr.content\n // },\n // fileSelect: (value, i) => {\n // let fileElm = item[i].getElementsByClassName('file-select')[0]\n // fileElm.click()\n // fileElm.removeEventListener('change', fileSelect)\n // fileElm.addEventListener('change', fileSelect)\n // }\n // }\n // let fileSelect = event => {\n // if (event.target.value) {\n // let td = item[\n // event.target.getAttribute('index')\n // ].getElementsByClassName('td')\n // td[1].getElementsByClassName('input')[0].value = event.target.value\n // event.target.value = null\n // }\n // }\n // for (let i = 0; i < item.length; i++) {\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // if (!btn[n] || !btn[n].attributes) {\n // continue\n // }\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', e => {\n // if (typeof fun[m.value] === 'function') {\n // fun[m.value](i)\n // }\n // })\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // }\n // }\n\n // get attributeGoods() {\n // return this.options.attribute.goods.content\n // }\n\n // set attributeGoods(v) {\n // this.options.attribute.goods.content = v\n // }\n }, {\n key: \"positions\",\n get: function get() {\n return this.options.positions;\n }\n }, {\n key: \"judgeLine\",\n value: function judgeLine(entity, newParam) {\n if (!entity.polyline.oriRepeat) {\n var param = {\n color: newParam.color,\n image: this.getSourceRootPath() + \"/img/arrow/1.png\",\n space: newParam.space,\n speed: newParam.speed\n };\n param.speed = newParam.rotate ? param.speed : 0 - param.speed;\n var canvasEle = document.createElement('canvas');\n var ctx = canvasEle.getContext('2d');\n var myImg = new Image();\n // myImg.src = that.getSourceRootPath() + '/img/arrow/1.png'\n myImg.src = param.image;\n var that = this;\n myImg.onload = function () {\n canvasEle.width = myImg.width * (param.space + 1);\n canvasEle.height = myImg.height;\n var oriRepeat = that.getSceenLine(entity, param, canvasEle);\n oriRepeat && (entity.polyline.oriRepeat = oriRepeat);\n var positionProperty = entity.polyline.positions;\n var positions = positionProperty.getValue(that.sdk.viewer.clock.currentTime);\n if (!Cesium.defined(positions)) {\n return new Cesium.Cartesian2(1.0, 1.0);\n // return 1.0;\n }\n var distance = 0;\n for (var i = 0; i < positions.length - 1; ++i) {\n distance += Cesium.Cartesian3.distance(positions[i], positions[i + 1]);\n }\n var repeatX = distance / entity.polyline.width.getValue();\n // 根据地图缩放程度调整repeatX\n var cameraHeight = that.sdk.viewer.camera.positionCartographic.height;\n var boundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(-1000000, 0, 0),\n // 中心点坐标\n 500000 // 半径(距离)\n );\n\n // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)\n var drawingBufferWidth = that.sdk.viewer.canvas.clientWidth;\n var drawingBufferHeight = that.sdk.viewer.canvas.clientHeight;\n\n // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小\n var groundResolution = that.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight);\n repeatX *= groundResolution / cameraHeight / (param.space * (canvasEle.width / canvasEle.height * 5) + 1);\n // if (entity.polyline.material.oriRepeat) {\n\n if (that.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) {\n var speed = repeatX / entity.polyline.oriRepeat;\n entity.polyline.oriSpeed = speed;\n entity.polyline.oriRepeatX = repeatX;\n } else {\n var sdk3d = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"get3DView\"])();\n var sdk3dEntity = sdk3d.viewer.entities.getById(that.options.id);\n entity.polyline.oriSpeed = sdk3dEntity.polyline.oriSpeed;\n entity.polyline.oriRepeatX = sdk3dEntity.polyline.oriRepeatX;\n }\n };\n }\n }\n /**获取当前满屏横线速度 */\n }, {\n key: \"getSceenLine\",\n value: function getSceenLine(entity, options, canvasEle) {\n var point1 = new Cesium.Cartesian2(0, this.sdk.viewer.canvas.clientHeight);\n var point2 = new Cesium.Cartesian2(this.sdk.viewer.canvas.clientWidth / 2, this.sdk.viewer.canvas.clientHeight);\n // var cartesian1 = this.sdk.viewer.scene.pickPosition(point1)\n // var cartesian2 = this.sdk.viewer.scene.pickPosition(point2)\n\n var ray = this.sdk.viewer.camera.getPickRay(point1);\n var cartesian1 = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n var ray2 = this.sdk.viewer.camera.getPickRay(point2);\n var cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene);\n // if (!cartesian1 || !cartesian2) {\n // let ray = this.sdk.viewer.camera.getPickRay(point1);\n // cartesian1 = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n\n // let ray2 = this.sdk.viewer.camera.getPickRay(point2);\n // cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene);\n // }\n if (cartesian1 && cartesian2) {\n var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2);\n var repeatX = distance / entity.polyline.width.getValue();\n // 根据地图缩放程度调整repeatX\n var cameraHeight = this.sdk.viewer.camera.positionCartographic.height;\n var boundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(-1000000, 0, 0),\n // 中心点坐标\n 500000 // 半径(距离)\n );\n\n // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)\n var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth;\n var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight;\n\n // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小\n var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight);\n // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1);\n if (groundResolution > 700) {\n repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1);\n } else {\n repeatX = undefined;\n }\n if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) {\n return repeatX;\n } else {\n var sdk3d = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"get3DView\"])();\n var sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id);\n return sdk3dEntity.polyline.oriRepeatX;\n }\n }\n }\n /**\r\n * 编辑框\r\n * @param {boolean} state true打开,false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this14 = this;\n var _this, tabClick, contentElm, tabsElm, colorPicker, labelColorPicker, extendColorPicker, lineColorPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' polyline';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n // this.attributeCamera = this.options.attribute.camera.content\n // this.attributeGoods = this.options.attribute.goods.content\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_12__[\"default\"]('polyline-object-edit-tabs', tabClick, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n extendColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('extendColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.extendColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.extendColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.extendColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelLineColor')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this14.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this14.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this.labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorStart')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this14.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this14.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('labelBackgroundColorEnd')[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this14.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this14.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName('*');\n _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.extendColor = [extendColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [_this.labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this14.attributeLink = _this14.options.attribute.link.content;\n // this.attributeVr = this.options.attribute.vr.content\n // this.cameraSelect && this.cameraSelect()\n // this.goodsSelect && this.goodsSelect()\n var tagData = _this14.attributeSelect;\n var attributeElm = _this14._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(attributeElm, '.attribute-select');\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this14._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this14.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this14.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var nameData = [{\n name: '空间长度',\n value: '空间长度'\n }, {\n name: '投影长度',\n value: '投影长度'\n }, {\n name: '地表长度',\n value: '地表长度'\n }];\n var nameDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], '.input-select-unit');\n if (nameDataLegpObject) {\n nameDataLegpObject.legp_search(nameData);\n var nameDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n _this14._elms.wordsName = [nameDataLegpElm];\n nameDataLegpElm.value = _this14.options.wordsName;\n for (var _i2 = 0; _i2 < nameData.length; _i2++) {\n if (nameData[_i2].value === nameDataLegpElm.value) {\n nameDataLegpObject.legp_searchActive(nameData[_i2].value);\n break;\n }\n }\n nameDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < nameData.length; _i3++) {\n if (nameData[_i3].value === nameDataLegpElm.value) {\n _this14.wordsName = nameData[_i3].value;\n break;\n }\n }\n });\n }\n\n // 原始长度单位\n var unitData = [{\n name: '米',\n value: '米'\n }, {\n name: '千米',\n value: '千米'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], '.input-select-unit', 1);\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-unit')[1].getElementsByTagName('input')[0];\n _this14._elms.lengthUnit = [unitDataLegpElm];\n unitDataLegpElm.value = _this14.options.lengthUnit;\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this14.lengthUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n //\n\n // 拟合长度单位\n // let fitUnitData = [\n // {\n // name: '米',\n // value: '米'\n // },\n // {\n // name: '千米',\n // value: '千米'\n // }\n // ]\n\n // let fitUnitDataLegpObject = legp(\n // this._DialogObject._element.content.getElementsByClassName(\n // 'input-select-fit-unit-box'\n // )[0],\n // '.input-select-fit-unit'\n // )\n // if (fitUnitDataLegpObject) {\n // fitUnitDataLegpObject.legp_search(fitUnitData)\n // let fitUnitDataLegpElm = this._DialogObject._element.content\n // .getElementsByClassName('input-select-fit-unit')[0]\n // .getElementsByTagName('input')[0]\n // this._elms.fitLengthUnit = [fitUnitDataLegpElm]\n // fitUnitDataLegpElm.value = this.options.fitLengthUnit\n // for (let i = 0; i < fitUnitData.length; i++) {\n // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {\n // fitUnitDataLegpObject.legp_searchActive(fitUnitData[i].value)\n // break\n // }\n // }\n // fitUnitDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < fitUnitData.length; i++) {\n // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {\n // this.fitLengthUnit = fitUnitData[i].value\n // break\n // }\n // }\n // })\n // }\n\n var lineTypeData = [{\n name: '实线',\n value: '实线',\n key: 0,\n icon: 'line'\n }, {\n name: '虚线',\n value: '虚线',\n key: 1,\n icon: 'dash-line'\n }, {\n name: '泛光',\n value: '泛光',\n key: 2,\n icon: 'light-line'\n }, {\n name: '尾迹光线',\n value: '尾迹光线',\n key: 3,\n icon: 'tail-line'\n }, {\n name: '多尾迹光线',\n value: '多尾迹光线',\n key: 4,\n icon: 'mult-tail-line'\n }, {\n name: '流动虚线1',\n value: '流动虚线1',\n key: 5,\n icon: 'flow-dash-line1'\n }, {\n name: '流动虚线2',\n value: '流动虚线2',\n key: 6,\n icon: 'flow-dash-line2'\n }, {\n name: '流动箭头1',\n value: '流动箭头1',\n key: 7,\n icon: 'pic-line1'\n }, {\n name: '流动箭头2',\n value: '流动箭头2',\n key: 8,\n icon: 'pic-line2'\n }, {\n name: '流动箭头3',\n value: '流动箭头3',\n key: 9,\n icon: 'pic-line3'\n }, {\n name: '流动箭头4',\n value: '流动箭头4',\n key: 10,\n icon: 'pic-line4'\n }, {\n name: '流动箭头5',\n value: '流动箭头5',\n key: 11,\n icon: 'pic-line5'\n }, {\n name: '流动箭头6',\n value: '流动箭头6',\n key: 12,\n icon: 'pic-line6'\n }];\n var lineTypeDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('input-select-line-type-box')[0], '.input-select-line-type');\n if (lineTypeDataLegpObject) {\n lineTypeDataLegpObject.legp_search(lineTypeData);\n var iActiveElm2 = document.createElement('i');\n iActiveElm2.className = 'icon icon-active';\n _this14._DialogObject._element.content.getElementsByClassName('input-select-line-type')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm2);\n var lineTypeDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('input-select-line-type')[0].getElementsByTagName('input')[0];\n _this14._elms.lineType = [lineTypeDataLegpElm];\n for (var _i6 = 0; _i6 < lineTypeData.length; _i6++) {\n if (lineTypeData[_i6].key === _this14.options.type) {\n lineTypeDataLegpObject.legp_searchActive(lineTypeData[_i6].value);\n lineTypeDataLegpElm.value = lineTypeData[_i6].value;\n iActiveElm2.className = \"icon icon-active \".concat(lineTypeData[_i6].icon);\n break;\n }\n }\n lineTypeDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < lineTypeData.length; _i7++) {\n if (lineTypeData[_i7].value === lineTypeDataLegpElm.value) {\n _this14.lineType = lineTypeData[_i7].key;\n iActiveElm2.className = \"icon icon-active \".concat(lineTypeData[_i7].icon);\n\n //控制参数显隐\n if (2 < _this14.lineType && _this14.lineType < 13) {\n //贴图参数\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'flex');\n } else {\n document.getElementById('dashTextureDom') && (document.getElementById('dashTextureDom').style.display = 'none');\n }\n if (2 < _this14.lineType && _this14.lineType < 5) {\n //尾迹参数\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'none');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'none');\n } else {\n document.getElementsByClassName('lineSpace')[0] && (document.getElementsByClassName('lineSpace')[0].style.display = 'flex');\n document.getElementsByClassName('lineSpace')[1] && (document.getElementsByClassName('lineSpace')[1].style.display = 'flex');\n }\n break;\n }\n }\n });\n }\n var heightBoxElm = _this14._DialogObject._element.content.getElementsByClassName('height-box')[0];\n var heightElm = heightBoxElm.getElementsByClassName('height')[0];\n var heightConfirmElm = _this14._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (_this14.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n var heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n var heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (heightModeObject) {\n heightModeObject.legp_search(heightModeData);\n var heightModeDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n for (var _i8 = 0; _i8 < heightModeData.length; _i8++) {\n if (heightModeData[_i8].key == _this14.heightMode) {\n heightModeDataLegpElm.value = heightModeData[_i8].value;\n heightModeObject.legp_searchActive(heightModeData[_i8].value);\n break;\n }\n }\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < heightModeData.length; _i9++) {\n if (heightModeData[_i9].value === heightModeDataLegpElm.value) {\n _this14.heightMode = heightModeData[_i9].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this14.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n _this14._elms.height = heightElm;\n _this14._elms.heightBox = heightBoxElm;\n _this14._elms.heightMode = heightModeDataLegpElm;\n _this14._elms.heightConfirm = heightConfirmElm;\n _this14._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n _this14.positionEditing = false;\n for (var _i10 = 0; _i10 < _this14.options.positions.length; _i10++) {\n _this14.options.positions[_i10].alt = Number((_this14.options.positions[_i10].alt + Number(heightElm.value)).toFixed(2));\n _this14._elms.alt[_i10].innerHTML = _this14.options.positions[_i10].alt;\n }\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n }\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n _this14._elms.lng = [];\n _this14._elms.lngInput = [];\n _this14._elms.lat = [];\n _this14._elms.latInput = [];\n _this14._elms.alt = [];\n _this14._elms.altInput = [];\n var _loop2 = function _loop2(_i11) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
\".concat(_i11 + 1, \"
\\n
\\n
\\n
\\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this14.options.positions[_i11].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this14.options.positions[_i11].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this14.options.positions[_i11].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this14.options.positions[_i11].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this14.options.positions[_i11].alt.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this14.options.positions[_i11].alt.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this14.options.positions[_i11].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this14.options.positions[_i11].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this14.options.positions[_i11].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this14.options.positions[_i11].lng.toFixed(8);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this14.options.positions[_i11].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this14.options.positions[_i11].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this14.options.positions[_i11].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this14.options.positions[_i11].lat.toFixed(8);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n altBox.addEventListener('dblclick', function () {\n if (_this14.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this14.options.positions[_i11].alt.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n _this14.positionEditing = false;\n _this14.closeNodeEdit();\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this14.options.positions[_i11].alt.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this14.options.positions[_i11].alt = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = _this14.options.positions[_i11].alt.toFixed(2);\n var fromDegreesArray = _this14.renewPositions(_this14.options.positions);\n _this14.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this14.label.position = [_this14.options.positions[0].lng, _this14.options.positions[0].lat, fromDegreesArray[2]];\n });\n _this14._elms.lng.push(lng);\n _this14._elms.lngInput.push(lngInput);\n _this14._elms.lat.push(lat);\n _this14._elms.latInput.push(latInput);\n _this14._elms.alt.push(alt);\n _this14._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var _i11 = 0; _i11 < _this14.options.positions.length; _i11++) {\n _loop2(_i11);\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_21__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_20__[\"legp\"])(_this14._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this14._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this14.labelFontFamily].value;\n for (var _i12 = 0; _i12 < fontData.length; _i12++) {\n if (fontData[_i12].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i12].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i13 = 0; _i13 < fontData.length; _i13++) {\n if (fontData[_i13].value === fontDataLegpElm.value) {\n _this14.labelFontFamily = fontData[_i13].key;\n break;\n }\n }\n });\n _this14._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 34;\n break;\n case 33:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 34:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }() // 平滑处理\n )\n }, {\n key: \"smoothHandle\",\n value: function smoothHandle(positions) {\n var newPositions = [];\n var time = [];\n var fromDegreesArrayHeights = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n time.push(i / (positions.length - 1));\n }\n var spline = new Cesium.CatmullRomSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n var length = positions.length * 20;\n for (var _i14 = 0; _i14 <= length; _i14++) {\n var cartesian3 = spline.evaluate(_i14 / length);\n newPositions.push(this.cartesian3Towgs84(cartesian3, this.sdk.viewer));\n }\n return newPositions;\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(positionsArray, cd) {\n var _this16 = this;\n if (this._error) {\n return;\n }\n var positions = JSON.parse(JSON.stringify(positionsArray));\n var ground;\n var heightMode = this.heightMode;\n if (this._isNodeEdit) {\n heightMode = 0;\n }\n switch (heightMode) {\n case 0:\n case '0':\n ground = false;\n break;\n case 1:\n case '1':\n for (var i = 0; i < positions.length; i++) {\n var height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions[i].lng, positions[i].lat));\n positions[i].alt = height ? Number((positions[i].alt + Number(height)).toFixed(2)) : Number(positions[i].alt.toFixed(2));\n }\n ground = false;\n break;\n case 2:\n case '2':\n ground = true;\n break;\n }\n var newPositions;\n var fromDegreesArray = [];\n if (this.options.noseToTail && this.options.noseToTail !== 'false') {\n newPositions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(positions), [positions[0]]);\n } else {\n newPositions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(positions);\n }\n if (this.options.smooth && this.options.smooth !== 'false') {\n newPositions = this.smoothHandle(newPositions);\n for (var _i15 = 0; _i15 < newPositions.length; _i15++) {\n fromDegreesArray.push(newPositions[_i15].lng, newPositions[_i15].lat, newPositions[_i15].alt);\n }\n } else {\n for (var _i16 = 0; _i16 < newPositions.length; _i16++) {\n fromDegreesArray.push(newPositions[_i16].lng, newPositions[_i16].lat, newPositions[_i16].alt);\n }\n }\n\n // 计算长度\n if (this.options.noseToTail && this.options.noseToTail !== 'false' || this.options.smooth && this.options.smooth !== 'false') {\n var array = [];\n for (var _i17 = 0; _i17 < fromDegreesArray.length; _i17 += 3) {\n array.push({\n lng: fromDegreesArray[_i17],\n lat: fromDegreesArray[_i17 + 1],\n alt: fromDegreesArray[_i17 + 2]\n });\n }\n var _this15 = this;\n this.computeDistance(array, 2, this.options.wordsName).then(function (res) {\n _this15.lengthByMeter = res;\n _this16.lengthChangeCallBack && _this16.lengthChangeCallBack();\n cd && cd();\n });\n } else {\n var _this17 = this;\n this.computeDistance(positions, 2, this.options.wordsName).then(function (res) {\n _this17.lengthByMeter = res;\n _this16.lengthChangeCallBack && _this16.lengthChangeCallBack();\n cd && cd();\n });\n }\n return fromDegreesArray;\n }\n\n // 更新多边形(线扩展)\n }, {\n key: \"renewPolygon\",\n value: function renewPolygon(fromDegreesArray) {\n var linePositions = [];\n if (this.options.extend && this.options.extend !== 'false') {\n var outerHole = [];\n for (var i = 0; i < fromDegreesArray.length; i += 3) {\n linePositions.push([fromDegreesArray[i], fromDegreesArray[i + 1]]);\n }\n var linestring = turf.lineString(linePositions);\n var buffered = turf.buffer(linestring, this.options.extendWidth / 1000, {\n units: 'kilometers'\n });\n for (var _i18 = 0; _i18 < buffered.geometry.coordinates[0].length; _i18++) {\n outerHole.push(buffered.geometry.coordinates[0][_i18][0], buffered.geometry.coordinates[0][_i18][1]);\n }\n var holes = []; // 孔\n for (var _i19 = 1; _i19 < buffered.geometry.coordinates.length; _i19++) {\n var array = [];\n for (var m = 0; m < buffered.geometry.coordinates[_i19].length; m++) {\n array.push(buffered.geometry.coordinates[_i19][m][0], buffered.geometry.coordinates[_i19][m][1]);\n }\n holes.push({\n positions: Cesium.Cartesian3.fromDegreesArray(array)\n });\n }\n this.entity.polygon = new Cesium.PolygonGraphics({\n hierarchy: {\n positions: Cesium.Cartesian3.fromDegreesArray(outerHole),\n holes: holes\n },\n material: Cesium.Color.fromCssColorString(this.options.extendColor)\n });\n } else {\n this.entity.polygon = undefined;\n }\n }\n }, {\n key: \"reset\",\n value: function () {\n var _reset = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (this.entity) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\");\n case 2:\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineWidth = this.originalOptions.width;\n this.lineType = this.originalOptions.type;\n this.noseToTail = this.originalOptions.noseToTail;\n this.smooth = this.originalOptions.smooth;\n this.extend = this.originalOptions.extend;\n this.extendWidth = this.originalOptions.extendWidth;\n this.extendColor = this.originalOptions.extendColor;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n // this.attributeVr = this.options.attribute.vr.content\n // this.attributeCamera = this.options.attribute.camera.content\n // this.attributeGoods = this.options.attribute.goods.content\n this.rotate = this.originalOptions.rotate;\n this.speed = this.originalOptions.speed;\n // this.dashSize = this.originalOptions.dashSize\n this.space = this.originalOptions.space;\n // this.cameraSelect && this.cameraSelect()\n // this.goodsSelect && this.goodsSelect()\n\n this.heightMode = this.options.heightMode;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"syncSplitData\"])(this.sdk, this.options.id);\n\n // let height\n // if (this.ground) {\n // height = await that.getClampToHeight({\n // lng: this.options.positions[0].lng,\n // lat: this.options.positions[0].lat\n // })\n // } else {\n // height = this.options.positions[0].alt\n // }\n // this.options.label.position = {\n // lng: this.options.positions[0].lng,\n // lat: this.options.positions[0].lat,\n // alt: height\n // }\n // this.label.position = [\n // this.options.label.position.lng,\n // this.options.label.position.lat,\n // this.options.label.position.alt\n // ]\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function reset() {\n return _reset.apply(this, arguments);\n }\n return reset;\n }() // _addRr() {\n // if (\n // this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value\n // ) {\n // this.options.attribute.vr.content.push({\n // name: '全景图' + (this.options.attribute.vr.content.length + 1),\n // url: this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value\n // })\n // this._DialogObject._element.content.getElementsByClassName(\n // 'vr_add'\n // )[0].value = ''\n // this.attributeVr = this.options.attribute.vr.content\n // } else {\n // this.Dialog.clickAddVr && this.Dialog.clickAddVr()\n // }\n // }\n // addAttributeRr(vr) {\n // this.options.attribute.vr.content.push({\n // name: '全景图' + (this.options.attribute.vr.content.length + 1),\n // url: vr\n // })\n // this.attributeVr = this.options.attribute.vr.content\n // }\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n height,\n i,\n a,\n _i20,\n _a,\n _i21,\n _a2,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n if (!this._error) {\n _context3.next = 3;\n break;\n }\n return _context3.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_23__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context3.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 18;\n break;\n }\n _context3.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context3.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 43;\n break;\n case 25:\n positionArray = [];\n _context3.t0 = this.options.heightMode;\n _context3.next = _context3.t0 === '0' ? 29 : _context3.t0 === 0 ? 29 : _context3.t0 === '1' ? 31 : _context3.t0 === 1 ? 31 : _context3.t0 === '2' ? 36 : _context3.t0 === 2 ? 36 : 41;\n break;\n case 29:\n for (i = 0; i < this.options.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt);\n positionArray.push(a.x, a.y, a.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 31:\n _context3.next = 33;\n return this.getClampToHeight(this.options.positions[0]);\n case 33:\n height = _context3.sent;\n for (_i20 = 0; _i20 < this.options.positions.length; _i20++) {\n _a = Cesium.Cartesian3.fromDegrees(this.options.positions[_i20].lng, this.options.positions[_i20].lat, height + this.options.positions[_i20].alt);\n positionArray.push(_a.x, _a.y, _a.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 36:\n _context3.next = 38;\n return this.getClampToHeight(this.options.positions[0]);\n case 38:\n height = _context3.sent;\n for (_i21 = 0; _i21 < this.options.positions.length; _i21++) {\n _a2 = Cesium.Cartesian3.fromDegrees(this.options.positions[_i21].lng, this.options.positions[_i21].lat, height);\n positionArray.push(_a2.x, _a2.y, _a2.z);\n }\n return _context3.abrupt(\"break\", 41);\n case 41:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 43:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }() // static nodeEdit2(that, cb = () => { }) {\n // that.positionEditing = false\n // if (YJ.Measure.GetMeasureStatus()) {\n // cb('上一次测量未结束')\n // } else {\n // YJ.Measure.SetMeasureStatus(true)\n // that.tip = new MouseTip('请选择一个顶点,右键取消', that.sdk)\n // that.event = new MouseEvent(that.sdk)\n // that.nodePoints = []\n // let selectPoint\n // let originalPosition\n // let newpositions = []\n // let fromDegreesArray = []\n // for (let i = 0; i < that.options.positions.length; i++) {\n // fromDegreesArray.push(\n // that.options.positions[i].lng,\n // that.options.positions[i].lat,\n // that.options.positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n // that.event.mouse_left((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // originalPosition = that.options.positions[selectPoint.index]\n // let entity = that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // position: Cesium.Cartesian3.fromDegrees(\n // that.options.positions[selectPoint.index].lng,\n // that.options.positions[selectPoint.index].lat,\n // that.options.positions[selectPoint.index].alt\n // ),\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // }\n // })\n // that.nodePoints.splice(selectPoint.index, 0, entity)\n // that.options.positions.splice(\n // selectPoint.index,\n // 0,\n // that.options.positions[selectPoint.index]\n // )\n // let fromDegreesArray = that.renewPositions(that.options.positions)\n // that.renewPolygon(fromDegreesArray)\n // that.options.lengthByMeter = that.computeDistance(\n // that.options.positions,\n // 2,\n // that.ground\n // )\n // that.lengthUnit = that.options.lengthUnit\n // } else {\n // var pick = that.sdk.viewer.scene.pick(movement.position)\n // if (\n // pick &&\n // pick.id &&\n // pick.id.name &&\n // pick.id.name === 'node-secondary-edit-point'\n // ) {\n // selectPoint = pick.id\n // that.nodePoints.splice(pick.id.index, 1)\n // that.sdk.viewer.entities.remove(pick.id)\n // that.tip.set_text('左键开始,右键结束,CTRL+右键撤销')\n // originalPosition = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // }\n // }\n // })\n // that.event.mouse_right((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = originalPosition\n // cb(null, that.options.positions)\n // }\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(\n // positions[i].lng,\n // positions[i].lat,\n // positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(\n // fromDegreesArray\n // )\n // for (let i = 0; i < that.nodePoints.length; i++) {\n // that.sdk.viewer.entities.remove(that.nodePoints[i])\n // }\n // that.nodePoints = []\n // that.event.destroy()\n // that.tip.destroy()\n // })\n // that.event.mouse_move((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions[selectPoint.index] = that.cartesian3Towgs84(\n // cartesian,\n // that.sdk.viewer\n // )\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(\n // positions[i].lng,\n // positions[i].lat,\n // positions[i].alt\n // )\n // }\n // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(\n // fromDegreesArray\n // )\n // if (that.options.positions.length === 1) {\n // that.label.position = [\n // that.options.positions[0].lng,\n // that.options.positions[0].lat,\n // that.options.positions[0].alt\n // ]\n // that.options.label.position = {\n // lng: that.options.positions[0].lng,\n // lat: that.options.positions[0].lat,\n // alt: that.options.positions[0].alt\n // }\n // }\n // }\n // that.tip.setPosition(\n // cartesian,\n // movement.endPosition.x,\n // movement.endPosition.y\n // )\n // })\n // that.event.mouse_right_keyboard_ctrl((movement, cartesian) => {\n // if (selectPoint) {\n // that.options.positions.pop()\n // that.sdk.viewer.entities.remove(\n // that.nodePoints[that.nodePoints.length - 1]\n // )\n // that.nodePoints.pop()\n // if (selectPoint.index === that.options.positions.length) {\n // if (that.nodePoints[selectPoint.index - 1]) {\n // selectPoint = that.nodePoints[selectPoint.index - 1]\n // } else {\n // selectPoint.index = 0\n // }\n // }\n // }\n // })\n // that.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n // return newpositions\n // }, false)\n // for (let i = 0; i < that.options.positions.length; i++) {\n // let entity = that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: Cesium.Cartesian3.fromDegrees(\n // that.options.positions[i].lng,\n // that.options.positions[i].lat,\n // that.options.positions[i].alt\n // ),\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // }\n // })\n // that.nodePoints.push(entity)\n // }\n // }\n // }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit(cb) {\n var _this18 = this;\n if (this._isNodeEdit) {\n return;\n }\n this.closeNodeEdit();\n var lastHeightMode = this.heightMode;\n this._isNodeEdit = true;\n this.positionEditing = false;\n this.noseToTail = false;\n // this.smooth = false\n this.heightMode = 0;\n if (YJ.Measure.GetMeasureStatus()) {} else {\n if (!this._lastHeightMode && this._lastHeightMode != 0) {\n this._lastHeightMode = lastHeightMode;\n }\n YJ.Measure.SetMeasureStatus(true);\n this._nodeEditCallback = cb;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk);\n this.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_18__[\"default\"](this.sdk);\n var selectPoint;\n this.event.mouse_left(function (movement, cartesian) {\n var pick = _this18.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n _this18.ControllerObject.position = _this18.options.positions[selectPoint.index];\n _this18.ControllerObject.editTranslational();\n _this18.tip && _this18.tip.destroy();\n _this18.ControllerObject.controllerCallBack = function (params) {\n if (selectPoint.index === 0) {\n _this18.label.position = [params.position.lng, params.position.lat, params.position.alt];\n _this18.options.label.position = {\n lng: params.position.lng,\n lat: params.position.lat,\n alt: params.position.alt\n };\n }\n _this18.options.positions[selectPoint.index] = params.position;\n _this18._elms.lng && (_this18._elms.lng[selectPoint.index].innerHTML = params.position.lng.toFixed(8));\n _this18._elms.lngInput && (_this18._elms.lngInput[selectPoint.index].value = params.position.lng.toFixed(8));\n _this18._elms.lat && (_this18._elms.lat[selectPoint.index].innerHTML = params.position.lat.toFixed(8));\n _this18._elms.latInput && (_this18._elms.latInput[selectPoint.index].value = params.position.lat.toFixed(8));\n _this18._elms.alt && (_this18._elms.alt[selectPoint.index].innerHTML = params.position.alt.toFixed(2));\n _this18._elms.altInput && (_this18._elms.altInput[selectPoint.index].value = params.position.alt.toFixed(2));\n selectPoint.position = Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt);\n };\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n var _lastHeightMode = _this18._lastHeightMode;\n _this18._lastHeightMode = null;\n if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {\n _this18.heightMode = _lastHeightMode;\n }\n for (var i = 0; i < _this18.nodePoints.length; i++) {\n _this18.sdk.viewer.entities.remove(_this18.nodePoints[i]);\n }\n _this18.nodePoints = [];\n _this18.event.destroy();\n _this18.tip && _this18.tip.destroy();\n _this18.tip = null;\n _this18.ControllerObject.destroy();\n var fromDegreesArray = _this18.renewPositions(_this18.options.positions);\n _this18.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n YJ.Measure.SetMeasureStatus(false);\n _this18._nodeEditCallback = null;\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this18.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n var fromDegreesArray = _this18.renewPositions(_this18.options.positions);\n _this18._nodeEditCallback && _this18._nodeEditCallback(_this18.options.positions, _this18.lengthByMeter);\n return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n }, false);\n for (var i = 0; i < this.options.positions.length; i++) {\n var entity = this.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n position: Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt),\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n this.nodePoints.push(entity);\n }\n this._isNodeEdit = true;\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n this._isNodeEdit = false;\n var _lastHeightMode = this._lastHeightMode;\n this._lastHeightMode = null;\n if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {\n this.heightMode = _lastHeightMode;\n }\n YJ.Measure.SetMeasureStatus(false);\n this.ControllerObject && this.ControllerObject.destroy();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this._nodeEditCallback = null;\n }\n\n /**\r\n * 删除\r\n */\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label && this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context4.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context4.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n )\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this19 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.closeNodeEdit();\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk);\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var positions = JSON.parse(JSON.stringify(this.options.positions));\n // let positions2 = JSON.parse(JSON.stringify(positions))\n // for (let i = 0; i < positions2.length; i++) {\n // let height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions2[i].lng, positions2[i].lat))\n // positions2[i] = Cesium.Cartesian3.fromDegrees(\n // positions2[i].lng,\n // positions2[i].lat,\n // Number((positions2[i].alt + Number(height)).toFixed(2))\n // )\n // }\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.options.positions)\n };\n for (var i = 0; i < positions.length; i++) {\n positions[i] = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n var center = positions[Math.floor(positions.length / 2)];\n var disparity = [];\n for (var _i22 = 0; _i22 < positions.length; _i22++) {\n center.x - positions[_i22].x;\n disparity.push({\n x: center.x - positions[_i22].x,\n y: center.y - positions[_i22].y,\n z: center.z - positions[_i22].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n newpositions = [];\n for (var _i23 = 0; _i23 < disparity.length; _i23++) {\n var newP = {\n x: cartesian.x - disparity[_i23].x,\n y: cartesian.y - disparity[_i23].y,\n z: cartesian.z - disparity[_i23].z\n };\n // let pos84 = this.cartesian3Towgs84(\n // newP,\n // this.sdk.viewer\n // )\n // let height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat))\n // pos84.alt = Number((pos84.alt + Number(height)).toFixed(2))\n // newP = Cesium.Cartesian3.fromDegrees(\n // pos84.lng,\n // pos84.lat,\n // pos84.alt\n // )\n newpositions.push(newP);\n }\n var position84 = _this19.cartesian3Towgs84(newpositions[0], _this19.sdk.viewer);\n _this19.label.position = [position84.lng, position84.lat, position84.alt];\n _this19.options.label.position = {\n lng: position84.lng,\n lat: position84.lat,\n alt: position84.alt\n };\n _this19.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this19.event.mouse_move(function () {});\n _this19.event.mouse_left(function () {});\n _this19.event.mouse_right(function () {});\n newpositions = [];\n for (var _i24 = 0; _i24 < disparity.length; _i24++) {\n newpositions.push({\n x: cartesian.x - disparity[_i24].x,\n y: cartesian.y - disparity[_i24].y,\n z: cartesian.z - disparity[_i24].z\n });\n }\n var positionsLngLat = [];\n for (var _i25 = 0; _i25 < newpositions.length; _i25++) {\n var position = _this19.cartesian3Towgs84(newpositions[_i25], _this19.sdk.viewer);\n position.alt = _this19.options.positions[_i25].alt;\n positionsLngLat.push(position);\n _this19._elms.lng && (_this19._elms.lng[_i25].innerHTML = position.lng.toFixed(8));\n _this19._elms.lngInput && (_this19._elms.lngInput[_i25].value = position.lng.toFixed(8));\n _this19._elms.lat && (_this19._elms.lat[_i25].innerHTML = position.lat.toFixed(8));\n _this19._elms.latInput && (_this19._elms.latInput[_i25].value = position.lat.toFixed(8));\n _this19._elms.alt && (_this19._elms.alt[_i25].innerHTML = position.alt.toFixed(2));\n _this19._elms.altInput && (_this19._elms.altInput[_i25].value = position.alt.toFixed(2));\n }\n _this19.options.positions = positionsLngLat;\n _this19.previous.positions = positionsLngLat;\n\n // this.entity.polyline.positionsLngLat = positionsLngLat\n var fromDegreesArray = _this19.renewPositions(_this19.options.positions, function () {\n if (_this19._positionEditingCallback) {\n _this19._positionEditingCallback();\n _this19._positionEditingCallback = null;\n }\n });\n _this19.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this19.renewPolygon(fromDegreesArray);\n _this19.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this19.event.mouse_move(function () {});\n _this19.event.mouse_left(function () {});\n _this19.event.mouse_right(function () {});\n _this19.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this19.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n // 长按取消\n _this19.event.mouse_move(function () {});\n _this19.event.mouse_left(function () {});\n _this19.event.mouse_right(function () {});\n _this19.positionEditing = false;\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (newpositions.length > 0) {\n return newpositions;\n } else {\n return positions;\n }\n }, false);\n } else {\n if (!this.sdk || !this.sdk.viewer || !this.label || !this.label.entity) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n var fromDegreesArray = this.renewPositions(this.options.positions);\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.renewPolygon(fromDegreesArray);\n var heightMode = this.heightMode;\n if (this._isNodeEdit) {\n heightMode = 0;\n }\n switch (heightMode) {\n case 0:\n case '0':\n case 1:\n case '1':\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat, fromDegreesArray[2]];\n this.options.label.position = {\n lng: this.options.positions[0].lng,\n lat: this.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n break;\n case 2:\n case '2':\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat];\n this.options.label.position = {\n lng: this.options.positions[0].lng,\n lat: this.options.positions[0].lat,\n alt: fromDegreesArray[2]\n };\n break;\n }\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"lengthChangeCallBack\",\n get: function get() {\n return this._lengthChangeCallBack;\n },\n set: function set(cd) {\n this._lengthChangeCallBack = cd;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _Cesium$Cartesian,\n _this20 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: '',\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var points = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n points.push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n var line = turf.lineString(points);\n var length = turf.length(line, {\n units: 'kilometers'\n });\n var sliced = turf.lineSliceAlong(line, 0, length / 2, {\n units: 'kilometers'\n });\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]));\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this20.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n var height, ground;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.t0 = that.options.heightMode;\n _context5.next = _context5.t0 === '0' ? 3 : _context5.t0 === 0 ? 3 : _context5.t0 === '1' ? 6 : _context5.t0 === 1 ? 6 : _context5.t0 === '2' ? 13 : _context5.t0 === 2 ? 13 : 18;\n break;\n case 3:\n ground = false;\n height = that.options.positions[0].alt;\n return _context5.abrupt(\"break\", 18);\n case 6:\n ground = false;\n _context5.next = 9;\n return that.getClampToHeight({\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat\n });\n case 9:\n _context5.t1 = _context5.sent;\n _context5.t2 = that.options.positions[0].alt;\n height = _context5.t1 + _context5.t2;\n return _context5.abrupt(\"break\", 18);\n case 13:\n ground = true;\n _context5.next = 16;\n return that.getClampToHeight({\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat\n });\n case 16:\n height = _context5.sent;\n return _context5.abrupt(\"break\", 18);\n case 18:\n if (!that.options.label.position) {\n that.options.label.position = {\n lng: that.options.positions[0].lng,\n lat: that.options.positions[0].lat,\n alt: height\n };\n }\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: ground\n });\n case 20:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"create\",\n value: function create(that) {\n var ground;\n if (that.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n var positions = that.options.positions;\n var fromDegreesArray = that.renewPositions(positions);\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polyline: {\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n width: that.options.width,\n clampToGround: ground,\n // material: that.getMaterial(that.options.color, that.options.type, that.entity, that.options),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.entity.polyline.oriWidth = that.options.width;\n that.judgeLine(that.entity, that.options);\n var params = _objectSpread({}, that.options);\n params.speed = that.inputSpeed;\n that.entity.polyline.material = that.getMaterial(that.options.color, that.options.type, that.entity, params);\n that.sdk._entityZIndex++;\n PolylineObject.createLabel(that);\n // that.entity.polyline.positionsLngLat = positions\n that.renewPolygon(fromDegreesArray);\n that.computeDistance(positions, 2, that.options.wordsName).then(function (res) {\n that.lengthByMeter = res;\n that.lengthChangeCallBack && that.lengthChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(that.sdk, that.options.id);\n });\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_22__[\"setSplitDirection\"])(0, that.options.id);\n }\n\n // if (this.options.noseToTail) {\n // let array = []\n // for (let i = 0; i < fromDegreesArray.length; i += 2) {\n // array.push({ lng: fromDegreesArray[i], lat: fromDegreesArray[i + 1] })\n // }\n // this.options.fit_length = tool.computeDistance(array)\n // }\n // else {\n // this.options.fit_length = tool.computeDistance(positions)\n // }\n // if (this.options.fit_length_unit === 'km') {\n // this.options.fit_length = this.options.fit_length / 1000\n // }\n\n var scene = that.sdk.viewer.scene;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolylineObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUG9seWxpbmVPYmplY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvUG9seWxpbmVPYmplY3QvaW5kZXguanM/YmM3OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGRlc2NyaXB0aW9uIOe6v1xyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZydcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gJy4vX2VsZW1lbnQnXHJcbmltcG9ydCBCYXNlIGZyb20gJy4uL2luZGV4J1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tICcuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFicydcclxuaW1wb3J0IHJpY2hUZXh0IGZyb20gJy4uLy4uL0VsZW1lbnQvcmljaFRleHQnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi9ldmVudEJpbmRpbmcnXHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vLi4vQ29udHJvbGxlci9pbmRleCdcclxuaW1wb3J0IHsgc3luY0RhdGEsIGdldDNEVmlldyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZGF0YWxpc3QnXHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5cclxuY2xhc3MgUG9seWxpbmVPYmplY3QgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOaKmOe6v1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOe6v+WxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWV7c3RyaW5nfSDlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy53aWR0aD0ze251bWJlcn0g57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9I2ZmMDAwMCB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy50eXBlPTAge251bWJlcn0g5p2Q6LSo57G75Z6LIDAt5a6e57q/IDEt6Jma57q/IDIt5rOb5YWJLi4uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0TW9kZT0ye251bWJlcn0g6auY5bqm5qih5byP77yIMO+8mua1t+aLlOmrmOW6pu+8mzHvvJrnm7jlr7npq5jluqbvvJsy77ya5L6d6ZmE5qih5byP77yJXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubm9zZVRvVGFpbD1mYWxzZSB7Ym9vbGVhbn0g6aaW5bC+55u46L+eXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc21vb3RoPWZhbHNlIHtib29sZWFufSDnur/mrrXlnIbmu5FcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5leHRlbmQ9ZmFsc2Uge2Jvb2xlYW59IOe6v+e8k+WGslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmV4dGVuZFdpZHRoPTEwIHtudW1iZXJ9IOe6v+e8k+WGsuWuveW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmV4dGVuZENvbG9yPXJnYmEoMjU1LDI1NSw4MCwwLjMpIHtudW1iZXJ9IOe6v+e8k+WGsuminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+6ZqQXHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBcclxuICAgKiBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5ub3NlVG9UYWlsPWZhbHNlIHtib29sZWFufSDmmK/lkKbpppblsL7nm7jov55cclxuICAgKiBcclxuICAgKiBcclxuICAgKiBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30ge3N0cmluZ30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBcclxuICAgKiBcclxuICAgKiBAcGFyYW0gX0RpYWxvZyB7b2JqZWN0fSDlvLnmoYbkuovku7ZcclxuICAgKiBAcGFyYW0gX0RpYWxvZy5jb25maXJtQ2FsbEJhY2sge2Z1bmN0aW9ufSDlvLnmoYbnoa7orqTml7bnmoTlm57osINcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMud2lkdGggPSAoKG9wdGlvbnMud2lkdGggfHwgb3B0aW9ucy53aWR0aCA9PT0gMCkgPyBvcHRpb25zLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgJyNmZjAwMDAnXHJcbiAgICB0aGlzLm9wdGlvbnMudHlwZSA9IG9wdGlvbnMudHlwZSA/IE51bWJlcihvcHRpb25zLnR5cGUpIDogMFxyXG4gICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgPSBvcHRpb25zLm5vc2VUb1RhaWwgfHwgZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5zbW9vdGggPSBvcHRpb25zLnNtb290aCB8fCBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZCA9IG9wdGlvbnMuZXh0ZW5kIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlID0gKG9wdGlvbnMucm90YXRlIHx8IG9wdGlvbnMucm90YXRlID09PSBmYWxzZSkgPyBvcHRpb25zLnJvdGF0ZSA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5zcGFjZSA9IChvcHRpb25zLnNwYWNlIHx8IG9wdGlvbnMuc3BhY2UgPT09IDApID8gb3B0aW9ucy5zcGFjZSA6IDFcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IG9wdGlvbnMuc3BlZWQgfHwgMTBcclxuICAgIC8vIHRoaXMub3B0aW9ucy5kYXNoU2l6ZSA9IG9wdGlvbnMuZGFzaFNpemUgfHwgMC4wM1xyXG4gICAgdGhpcy5vcHRpb25zLndvcmRzTmFtZSA9IG9wdGlvbnMud29yZHNOYW1lIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5leHRlbmRXaWR0aCA9XHJcbiAgICAgIG9wdGlvbnMuZXh0ZW5kV2lkdGggfHwgb3B0aW9ucy5leHRlbmRXaWR0aCA9PT0gMFxyXG4gICAgICAgID8gb3B0aW9ucy5leHRlbmRXaWR0aFxyXG4gICAgICAgIDogMTBcclxuICAgIHRoaXMub3B0aW9ucy5leHRlbmRDb2xvciA9IG9wdGlvbnMuZXh0ZW5kQ29sb3IgfHwgJ3JnYmEoMjU1LDI1NSw4MCwwLjMpJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPVxyXG4gICAgICBvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID0gKG9wdGlvbnMuaGVpZ2h0TW9kZSB8fCBvcHRpb25zLmhlaWdodE1vZGUgPT0gMCkgPyBvcHRpb25zLmhlaWdodE1vZGUgOiAyXHJcbiAgICB0aGlzLl9lbG1zID0gW11cclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLFxyXG4gICAgICBmb250U2l6ZTpcclxuICAgICAgICBvcHRpb25zLmxhYmVsLmZvbnRTaXplIHx8IG9wdGlvbnMubGFiZWwuZm9udFNpemUgPT09IDBcclxuICAgICAgICAgID8gb3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgICAgICAgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6XHJcbiAgICAgICAgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDBcclxuICAgICAgICAgID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgICAgICAgIDogNCxcclxuICAgICAgcGl4ZWxPZmZzZXQ6XHJcbiAgICAgICAgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwXHJcbiAgICAgICAgICA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgICAgICAgIDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6XHJcbiAgICAgICAgb3B0aW9ucy5sYWJlbC5uZWFyIHx8IG9wdGlvbnMubGFiZWwubmVhciA9PT0gMFxyXG4gICAgICAgICAgPyBvcHRpb25zLmxhYmVsLm5lYXJcclxuICAgICAgICAgIDogMjAwMCxcclxuICAgICAgZmFyOlxyXG4gICAgICAgIG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwXHJcbiAgICAgICAgICA/IG9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICAgICAgICA6IDEwMDAwMFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID1cclxuICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgfHwge31cclxuICAgIC8vIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgPVxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50IHx8IFtdXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ciB8fCB7fVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50ID1cclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50IHx8IFtdXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcyB8fCB7fVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID1cclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50IHx8IFtdXHJcblxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52clxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHNcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgJydcclxuXHJcblxyXG4gICAgdGhpcy5vcGVyYXRlID0ge31cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLnVuaXROdW0gPSAwXHJcbiAgICB0aGlzLmlucHV0U3BlZWQgPSAob3B0aW9ucy5zcGVlZCAmJiBNYXRoLnBvdyhvcHRpb25zLnNwZWVkLCAtMSkgKiAxMDApIHx8IDEwXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBvc2l0aW9ucyB8fCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgdGhpcy5fZXJyb3IgPSAn57q/5q615pyA5bCR6ZyA6KaB5Lik5Liq5Z2Q5qCH77yBJ1xyXG4gICAgICBjb25zb2xlLndhcm4odGhpcy5fZXJyb3IpXHJcbiAgICAgIHdpbmRvdy5FTEVNRU5UICYmXHJcbiAgICAgICAgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLl9lcnJvcixcclxuICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyA9IE51bWJlcihOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQgPSBOdW1iZXIoTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ID0gTnVtYmVyKE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkudG9GaXhlZCgyKSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgICAgUG9seWxpbmVPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICcjZmYwMDAwJ1xyXG4gICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5vcHRpb25zIH1cclxuICAgIHBhcmFtcy5zcGVlZCA9IHRoaXMuaW5wdXRTcGVlZFxyXG4gICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHRoaXMub3B0aW9ucy5jb2xvciwgdGhpcy5vcHRpb25zLnR5cGUsIHRoaXMuZW50aXR5LCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHBhcmFtcylcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMub3B0aW9ucy5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMCwwLDEpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgc3BlZWQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gdlxyXG4gICAgdGhpcy5pbnB1dFNwZWVkID0gdiAhPT0gMCA/IE1hdGgucG93KHYsIC0xKSAqIDEwMCA6IDBcclxuICAgIGxldCBwYXJhbXMgPSB7IC4uLnRoaXMub3B0aW9ucyB9XHJcbiAgICBwYXJhbXMuc3BlZWQgPSB0aGlzLmlucHV0U3BlZWRcclxuICAgIC8vIHRoaXMub3B0aW9ucy5zcGVlZCA9IHYgIT09IDAgPyBNYXRoLnBvdyh2LCAtMSkgKiAxMDAgOiAwXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgcGFyYW1zKVxyXG4gIH1cclxuICAvLyBnZXQgZGFzaFNpemUoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmRhc2hTaXplXHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXQgZGFzaFNpemUodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmRhc2hTaXplID0gdlxyXG4gIC8vICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5vcHRpb25zIH1cclxuICAvLyAgIHBhcmFtcy5zcGVlZCA9IHRoaXMuaW5wdXRTcGVlZFxyXG4gIC8vICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHRoaXMub3B0aW9ucy5jb2xvciwgdGhpcy5vcHRpb25zLnR5cGUsIHRoaXMuZW50aXR5LCB0aGlzLm9wdGlvbnMpXHJcbiAgLy8gICB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHBhcmFtcylcclxuICAvLyB9XHJcblxyXG4gIGdldCByb3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdGF0ZVxyXG4gIH1cclxuXHJcbiAgc2V0IHJvdGF0ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm90YXRlID0gdlxyXG4gICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgIHRoaXMuX2VsbXMucm90YXRlICYmXHJcbiAgICAgIHRoaXMuX2VsbXMucm90YXRlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yb3RhdGUgPSB2XHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGlzLm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhpcy5pbnB1dFNwZWVkXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCB0aGlzLm9wdGlvbnMudHlwZSwgdGhpcy5lbnRpdHksIHRoaXMub3B0aW9ucylcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgcGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNwYWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zcGFjZVxyXG4gIH1cclxuXHJcbiAgc2V0IHNwYWNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcGFjZSA9IHZcclxuICAgIGxldCBwYXJhbXMgPSB7IC4uLnRoaXMub3B0aW9ucyB9XHJcbiAgICBwYXJhbXMuc3BlZWQgPSB0aGlzLmlucHV0U3BlZWRcclxuICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIHRoaXMub3B0aW9ucy50eXBlLCB0aGlzLmVudGl0eSwgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHRoaXMub3B0aW9ucy5jb2xvciwgdGhpcy5vcHRpb25zLnR5cGUsIHRoaXMuZW50aXR5LCBwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBnZXQgd29yZHNOYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy53b3Jkc05hbWVcclxuICB9XHJcbiAgc2V0IHdvcmRzTmFtZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMud29yZHNOYW1lID0gTnVtYmVyKHYpXHJcblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgaWYgKCF0aGlzLm5vc2VUb1RhaWwpIHtcclxuICAgICAgdGhpcy5jb21wdXRlRGlzdGFuY2UoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyxcclxuICAgICAgICAyLFxyXG4gICAgICAgIHZcclxuICAgICAgKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgLy8gX3RoaXMub3B0aW9ucy5sZW5ndGhCeU1ldGVyID0gcmVzXHJcbiAgICAgICAgLy8gaWYgKHJlcyA+IDEwMDAgfHwgcmVzID09IDEwMDApIHtcclxuICAgICAgICAvLyAgIF90aGlzLmxlbmd0aCA9IChyZXMgLyAxMDAwKS50b0ZpeGVkKDUpXHJcbiAgICAgICAgLy8gICBfdGhpcy5sZW5ndGhVbml0ID0gJ+WNg+exsydcclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgX3RoaXMubGVuZ3RoID0gcmVzXHJcbiAgICAgICAgLy8gICBfdGhpcy5sZW5ndGhVbml0ID0gJ+exsydcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgX3RoaXMubGVuZ3RoQnlNZXRlciA9IHJlc1xyXG4gICAgICAgIHRoaXMubGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGdldCBmaXRMZW5ndGhVbml0KCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maXRMZW5ndGhVbml0XHJcbiAgLy8gfVxyXG4gIC8vIHNldCBmaXRMZW5ndGhVbml0KHYpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5maXRMZW5ndGhVbml0ID0gdlxyXG4gIC8vICAgdGhpcy5fZWxtcy5maXRMZW5ndGhVbml0ICYmXHJcbiAgLy8gICAgIHRoaXMuX2VsbXMuZml0TGVuZ3RoVW5pdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gIC8vICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICBpZiAodGhpcy5maXRMZW5ndGhCeU1ldGVyKSB7XHJcbiAgLy8gICAgIHN3aXRjaCAodikge1xyXG4gIC8vICAgICAgIGNhc2UgJ+exsyc6XHJcbiAgLy8gICAgICAgICB0aGlzLmZpdExlbmd0aCA9IHRoaXMuZml0TGVuZ3RoQnlNZXRlclxyXG4gIC8vICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICBjYXNlICfljYPnsbMnOlxyXG4gIC8vICAgICAgICAgdGhpcy5maXRMZW5ndGggPSBOdW1iZXIoXHJcbiAgLy8gICAgICAgICAgICh0aGlzLmZpdExlbmd0aEJ5TWV0ZXIgLyAxMDAwKS50b0ZpeGVkKDUpXHJcbiAgLy8gICAgICAgICApXHJcbiAgLy8gICAgICAgICBicmVha1xyXG4gIC8vICAgICAgIGRlZmF1bHQ6XHJcbiAgLy8gICAgICAgICB0aGlzLmZpdExlbmd0aCA9IHRoaXMuZml0TGVuZ3RoQnlNZXRlclxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBnZXQgbGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy53aWR0aFxyXG4gIH1cclxuXHJcbiAgc2V0IGxpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMud2lkdGggPSAodiB8fCB2ID09IDApID8gdiA6IDNcclxuICAgIHRoaXMuX2VsbXMubGluZVdpZHRoICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGluZVdpZHRoLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMub3B0aW9ucy53aWR0aFxyXG4gICAgICB9KVxyXG4gICAgaWYgKHRoaXMuZW50aXR5ICYmIHRoaXMuZW50aXR5LnBvbHlsaW5lKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggKyB2IC0gdGhpcy5lbnRpdHkucG9seWxpbmUub3JpV2lkdGhcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUub3JpV2lkdGggPSB0aGlzLm9wdGlvbnMud2lkdGhcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZW50aXR5ICYmXHJcbiAgICAvLyAgIHRoaXMuZW50aXR5LnBvbHlsaW5lICYmXHJcbiAgICAvLyAgICh0aGlzLmVudGl0eS5wb2x5bGluZS53aWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aCkgJiYgKHRoaXMuZW50aXR5LnBvbHlsaW5lLm9yaVdpZHRoID0gdGhpcy5vcHRpb25zLndpZHRoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50eXBlXHJcbiAgfVxyXG5cclxuICBzZXQgbGluZVR5cGUodikge1xyXG4gICAgbGV0IGxpbmVUeXBlRGF0YSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbGluZVwiPjwvaT7lrp7nur8nLFxyXG4gICAgICAgIHZhbHVlOiAn5a6e57q/JyxcclxuICAgICAgICBrZXk6IDAsXHJcbiAgICAgICAgaWNvbjogJ2xpbmUnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGRhc2gtbGluZVwiPjwvaT7omZrnur8nLFxyXG4gICAgICAgIHZhbHVlOiAn6Jma57q/JyxcclxuICAgICAgICBrZXk6IDEsXHJcbiAgICAgICAgaWNvbjogJ2Rhc2gtbGluZSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbGlnaHQtbGluZVwiPjwvaT7ms5vlhYknLFxyXG4gICAgICAgIHZhbHVlOiAn5rOb5YWJJyxcclxuICAgICAgICBrZXk6IDIsXHJcbiAgICAgICAgaWNvbjogJ2xpZ2h0LWxpbmUnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHRhaWwtbGluZVwiPjwvaT7lsL7ov7nlhYnnur8nLFxyXG4gICAgICAgIHZhbHVlOiAn5bC+6L+55YWJ57q/JyxcclxuICAgICAgICBrZXk6IDMsXHJcbiAgICAgICAgaWNvbjogJ3RhaWwtbGluZSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbXVsdC10YWlsLWxpbmVcIj48L2k+5aSa5bC+6L+55YWJ57q/JyxcclxuICAgICAgICB2YWx1ZTogJ+WkmuWwvui/ueWFiee6vycsXHJcbiAgICAgICAga2V5OiA0LFxyXG4gICAgICAgIGljb246ICdtdWx0LXRhaWwtbGluZSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gZmxvdy1kYXNoLWxpbmUxXCI+PC9pPua1geWKqOiZmue6vzEnLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo6Jma57q/MScsXHJcbiAgICAgICAga2V5OiA1LFxyXG4gICAgICAgIGljb246ICdmbG93LWRhc2gtbGluZTEnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGZsb3ctZGFzaC1saW5lMlwiPjwvaT7mtYHliqjomZrnur8yJyxcclxuICAgICAgICB2YWx1ZTogJ+a1geWKqOiZmue6vzInLFxyXG4gICAgICAgIGtleTogNixcclxuICAgICAgICBpY29uOiAnZmxvdy1kYXNoLWxpbmUyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTFcIj48L2k+5rWB5Yqo566t5aS0MScsXHJcbiAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQxJyxcclxuICAgICAgICBrZXk6IDcsXHJcbiAgICAgICAgaWNvbjogJ3BpYy1saW5lMSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmUyXCI+PC9pPua1geWKqOeureWktDInLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0MicsXHJcbiAgICAgICAga2V5OiA4LFxyXG4gICAgICAgIGljb246ICdwaWMtbGluZTInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lM1wiPjwvaT7mtYHliqjnrq3lpLQzJyxcclxuICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDMnLFxyXG4gICAgICAgIGtleTogOSxcclxuICAgICAgICBpY29uOiAncGljLWxpbmUzJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTRcIj48L2k+5rWB5Yqo566t5aS0NCcsXHJcbiAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQ0JyxcclxuICAgICAgICBrZXk6IDEwLFxyXG4gICAgICAgIGljb246ICdwaWMtbGluZTQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lNVwiPjwvaT7mtYHliqjnrq3lpLQ1JyxcclxuICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDUnLFxyXG4gICAgICAgIGtleTogMTEsXHJcbiAgICAgICAgaWNvbjogJ3BpYy1saW5lNSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmU2XCI+PC9pPua1geWKqOeureWktDYnLFxyXG4gICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0NicsXHJcbiAgICAgICAga2V5OiAxMixcclxuICAgICAgICBpY29uOiAncGljLWxpbmU2J1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgICB0aGlzLm9wdGlvbnMudHlwZSA9IE51bWJlcih2KVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lVHlwZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGxpbmVUeXBlRGF0YVtpXS5rZXkgPT09IE51bWJlcih2KSkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMubGluZVR5cGUgJiZcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGluZVR5cGUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGxpbmVUeXBlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBpZiAoMiA8IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZSA8IDEzKSB7Ly/otLTlm77lj4LmlbBcclxuICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykuc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykuc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoMiA8IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZSA8IDUpIHsvL+Wwvui/ueWPguaVsFxyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVsxXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzBdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdICYmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVsxXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBwYXJhbXMgPSB7IC4uLnRoaXMub3B0aW9ucyB9XHJcbiAgICBwYXJhbXMuc3BlZWQgPSB0aGlzLmlucHV0U3BlZWRcclxuICAgIHRoaXMuZW50aXR5ICYmXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lICYmXHJcbiAgICAgICh0aGlzLmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy50eXBlLFxyXG4gICAgICAgIHRoaXMuZW50aXR5LFxyXG4gICAgICAgIHBhcmFtc1xyXG4gICAgICApKVxyXG4gIH1cclxuICBnZXQgbm9zZVRvVGFpbCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbFxyXG4gIH1cclxuXHJcbiAgc2V0IG5vc2VUb1RhaWwodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgPSB2XHJcbiAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgdGhpcy5fZWxtcy5ub3NlVG9UYWlsICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubm9zZVRvVGFpbC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICApXHJcbiAgICAgIHRoaXMucmVuZXdQb2x5Z29uKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICB9XHJcbiAgICAvLyBpZiAodikge1xyXG4gICAgLy8gICBpZiAodGhpcy5vcHRpb25zLmZpdExlbmd0aEJ5TWV0ZXIgPiAxMDAwIHx8IHRoaXMub3B0aW9ucy5maXRMZW5ndGhCeU1ldGVyID09IDEwMDApIHtcclxuICAgIC8vICAgICBsZXQgZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQnKVsxXVxyXG4gICAgLy8gICAgIGRvbSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVsxXSAmJiBkb20ucXVlcnlTZWxlY3RvckFsbCgnZGQnKVsxXS5jbGljaygpXHJcbiAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgbGV0IGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMV1cclxuICAgIC8vICAgICBkb20gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMF0gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMF0uY2xpY2soKVxyXG4gICAgLy8gICB9XHJcblxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGhCeU1ldGVyID4gMTAwMCB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoQnlNZXRlciA9PSAxMDAwKSB7XHJcbiAgICAvLyAgICAgbGV0IGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMV1cclxuICAgIC8vICAgICBkb20gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMV0gJiYgZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RkJylbMV0uY2xpY2soKVxyXG4gICAgLy8gICB9IGVsc2Uge1xyXG4gICAgLy8gICAgIGxldCBkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzFdXHJcbiAgICAvLyAgICAgZG9tICYmIGRvbS5xdWVyeVNlbGVjdG9yQWxsKCdkZCcpWzBdICYmIGRvbS5xdWVyeVNlbGVjdG9yQWxsKCdkZCcpWzBdLmNsaWNrKClcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNtb290aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc21vb3RoXHJcbiAgfVxyXG5cclxuICBzZXQgc21vb3RoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zbW9vdGggPSB2XHJcbiAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgdGhpcy5fZWxtcy5zbW9vdGggJiZcclxuICAgICAgdGhpcy5fZWxtcy5zbW9vdGguZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICAgIH0pXHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKFxyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA6IDBcclxuICB9XHJcbiAgc2V0IGhlaWdodE1vZGUodikge1xyXG4gICAgaWYgKCF0aGlzLl9pc05vZGVFZGl0KSB7XHJcbiAgICAgIHRoaXMuX2xhc3RIZWlnaHRNb2RlID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPSAodiB8fCB2ID09IDApID8gdiA6IDJcclxuICAgIGxldCBoZWlnaHRNb2RlTmFtZSA9ICcnXHJcbiAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgKVxyXG4gICAgdGhpcy5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgICAgdGhpcy5leHRlbmQgPSBmYWxzZVxyXG4gICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+a1t+aLlOmrmOW6pidcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgICB0aGlzLmV4dGVuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn55u45a+55Zyw6KGoJ1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfkvp3pmYTmqKHlnosnXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoZ3JvdW5kKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZS52YWx1ZSA9ICfkvp3pmYTmqKHlnosnKVxyXG4gICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGFiZWwuZ3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICBmcm9tRGVncmVlc0FycmF5WzJdXHJcbiAgICAgICAgXVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LFxyXG4gICAgICAgICAgYWx0OiBmcm9tRGVncmVlc0FycmF5WzJdXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZXh0ZW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHRlbmRcclxuICB9XHJcblxyXG4gIHNldCBleHRlbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZCA9IHZcclxuICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLmhlaWdodE1vZGUgPSAyXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmV4dGVuZCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmV4dGVuZC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4dGVuZCkge1xyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIHRoaXMucmVuZXdQb2x5Z29uKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWdvbiA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZXh0ZW5kV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4dGVuZFdpZHRoXHJcbiAgfVxyXG5cclxuICBzZXQgZXh0ZW5kV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZFdpZHRoID0gdlxyXG4gICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICB0aGlzLl9lbG1zLmV4dGVuZFdpZHRoICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuZXh0ZW5kV2lkdGguZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGV4dGVuZENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHRlbmRDb2xvclxyXG4gIH1cclxuICBzZXQgZXh0ZW5kQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmV4dGVuZENvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMuZXh0ZW5kQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5leHRlbmRDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dGVuZENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5leHRlbmRDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5leHRlbmRDb2xvcltpXSA9IGV4dGVuZENvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eSAmJlxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uICYmXHJcbiAgICAgICh0aGlzLmVudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kQ29sb3JcclxuICAgICAgKSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICAgIF1cclxuICAgICAgfSwgMClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxMaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLCAvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbXHJcbiAgICAgICAgICBpXHJcbiAgICAgICAgXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSwgdl1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldCBhdHRyaWJ1dGVDYW1lcmEoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudFxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IGF0dHJpYnV0ZUNhbWVyYSh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50ID0gdlxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IGF0dHJpYnV0ZVZyKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IGF0dHJpYnV0ZVZyKHYpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudCA9IHZcclxuICAvLyAgIGlmIChcclxuICAvLyAgICAgIXRoaXMuX0RpYWxvZ09iamVjdCB8fFxyXG4gIC8vICAgICAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8XHJcbiAgLy8gICAgICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fFxyXG4gIC8vICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gIC8vICAgICAgICdhdHRyaWJ1dGUtY29udGVudC12cidcclxuICAvLyAgICAgKS5sZW5ndGggPT0gMFxyXG4gIC8vICAgKSB7XHJcbiAgLy8gICAgIHJldHVyblxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAvLyAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LXZyJylbMV1cclxuICAvLyAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAvLyAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAvLyAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gIC8vICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgdHIgPVxyXG4gIC8vICAgICAgIGBcclxuICAvLyAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgLy8gICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICtcclxuICAvLyAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaV0ubmFtZSArXHJcbiAgLy8gICAgICAgYDwvZGl2PlxyXG4gIC8vICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+YCArXHJcbiAgLy8gICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldLnVybCArXHJcbiAgLy8gICAgICAgYDwvZGl2PlxyXG4gIC8vICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgLy8gICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ2ckVkaXRcIj7nvJbovpE8L2J1dHRvbj5cclxuICAvLyAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInZyRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgLy8gICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgPC9kaXY+YFxyXG4gIC8vICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAvLyAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gIC8vICAgbGV0IGZ1biA9IHtcclxuICAvLyAgICAgdnJFZGl0OiBhc3luYyBpbmRleCA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vICAgICAgIGxldCB0YWJsZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgLy8gICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtdnInKVsxXVxyXG4gIC8vICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAvLyAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgLy8gICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gIC8vICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgLy8gICAgICAgICAgIGxldCBoZWlnaHQgPSBpdGVtW2ldLm9mZnNldEhlaWdodFxyXG4gIC8vICAgICAgICAgICBsZXQgaHRtbCA9IGBcclxuICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAvLyAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAvLyAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAvLyAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0IGxpbmstZWRpdFwiIHR5cGU9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAvLyAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gIC8vICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAvLyAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgLy8gICAgICAgICAgIGl0ZW1baV0uaW5uZXJIVE1MID0gaHRtbFxyXG4gIC8vICAgICAgICAgICBsZXQgdGV4dGFyZWFFbG0gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmstZWRpdCcpWzBdXHJcbiAgLy8gICAgICAgICAgIHRleHRhcmVhRWxtLnN0eWxlLmhlaWdodCA9IGhlaWdodCAtIDEwICsgJ3B4J1xyXG4gIC8vICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAvLyAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAvLyAgICAgICAgICAgICAnaW5wdXQnXHJcbiAgLy8gICAgICAgICAgIClbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaW5kZXhdLm5hbWVcclxuICAvLyAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAvLyAgICAgICAgICAgICAnaW5wdXQnXHJcbiAgLy8gICAgICAgICAgIClbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaW5kZXhdLnVybFxyXG4gIC8vICAgICAgICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAvLyAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAvLyAgICAgICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnRpbnVlXHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAvLyAgICAgICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuW20udmFsdWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZVxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICBpXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICApXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gIC8vICAgICAgICAgICAgICAgICBicmVha1xyXG4gIC8vICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICBicmVha1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgdnJEZWxldGU6IGkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5zcGxpY2UoaSwgMSlcclxuICAvLyAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgLy8gICAgIH0sXHJcblxyXG4gIC8vICAgICBjb25maXJtRWRpdDogKHZhbHVlLCBpKSA9PiB7XHJcbiAgLy8gICAgICAgbGV0IG5hbWUgPSB2YWx1ZS5uYW1lICYmIHZhbHVlLm5hbWUucmVwbGFjZSgvXFxzL2csICcnKVxyXG4gIC8vICAgICAgIGxldCB1cmwgPSB2YWx1ZS51cmwgJiYgdmFsdWUudXJsLnJlcGxhY2UoL1xccy9nLCAnJylcclxuICAvLyAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcclxuICAvLyAgICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgLy8gICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgIHdpbmRvdy5FTEVNRU5UICYmXHJcbiAgLy8gICAgICAgICAgIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gIC8vICAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DmiJbpk77mjqXkuI3og73kuLrnqbrvvIEnLFxyXG4gIC8vICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAvLyAgICAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gIC8vICAgICAgICAgICB9KVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAvLyAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gIC8vICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgLy8gICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgLy8gICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gIC8vICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IGZpbGVTZWxlY3QgPSBldmVudCA9PiB7XHJcbiAgLy8gICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAvLyAgICAgICBsZXQgdGQgPSBpdGVtW1xyXG4gIC8vICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKVxyXG4gIC8vICAgICAgIF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gIC8vICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAvLyAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAvLyAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAvLyAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAvLyAgICAgICAgIGNvbnRpbnVlXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAvLyAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgLy8gICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuW20udmFsdWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgLy8gICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oaSlcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgLy8gICAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXQgYXR0cmlidXRlR29vZHMoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXQgYXR0cmlidXRlR29vZHModikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID0gdlxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb25zXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgbGV0IGhlaWdodFxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0ID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHRcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgIGxuZzogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICBsYXQ6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgfSkgKyB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgbGF0OiB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgIGxhdDogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgYWx0OiBoZWlnaHRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbXHJcbiAgICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LFxyXG4gICAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHRcclxuICAgICAgXSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIGdyb3VuZDogZ3JvdW5kXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcblxyXG4gICAgbGV0IGdyb3VuZFxyXG4gICAgaWYgKHRoYXQuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGF0LnJlbmV3UG9zaXRpb25zKHBvc2l0aW9ucylcclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSksXHJcbiAgICAgICAgd2lkdGg6IHRoYXQub3B0aW9ucy53aWR0aCxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiBncm91bmQsXHJcbiAgICAgICAgLy8gbWF0ZXJpYWw6IHRoYXQuZ2V0TWF0ZXJpYWwodGhhdC5vcHRpb25zLmNvbG9yLCB0aGF0Lm9wdGlvbnMudHlwZSwgdGhhdC5lbnRpdHksIHRoYXQub3B0aW9ucyksXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhhdC5lbnRpdHkucG9seWxpbmUub3JpV2lkdGggPSB0aGF0Lm9wdGlvbnMud2lkdGhcclxuICAgIHRoYXQuanVkZ2VMaW5lKHRoYXQuZW50aXR5LCB0aGF0Lm9wdGlvbnMpXHJcbiAgICBsZXQgcGFyYW1zID0geyAuLi50aGF0Lm9wdGlvbnMgfVxyXG4gICAgcGFyYW1zLnNwZWVkID0gdGhhdC5pbnB1dFNwZWVkXHJcbiAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IHRoYXQuZ2V0TWF0ZXJpYWwoXHJcbiAgICAgIHRoYXQub3B0aW9ucy5jb2xvcixcclxuICAgICAgdGhhdC5vcHRpb25zLnR5cGUsXHJcbiAgICAgIHRoYXQuZW50aXR5LFxyXG4gICAgICBwYXJhbXNcclxuICAgIClcclxuICAgIHRoYXQuc2RrLl9lbnRpdHlaSW5kZXgrK1xyXG4gICAgUG9seWxpbmVPYmplY3QuY3JlYXRlTGFiZWwodGhhdClcclxuICAgIC8vIHRoYXQuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9uc0xuZ0xhdCA9IHBvc2l0aW9uc1xyXG4gICAgdGhhdC5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIHRoYXQuY29tcHV0ZURpc3RhbmNlKFxyXG4gICAgICBwb3NpdGlvbnMsXHJcbiAgICAgIDIsXHJcbiAgICAgIHRoYXQub3B0aW9ucy53b3Jkc05hbWVcclxuICAgICkudGhlbihyZXMgPT4ge1xyXG4gICAgICB0aGF0Lmxlbmd0aEJ5TWV0ZXIgPSByZXNcclxuICAgICAgdGhhdC5sZW5ndGhDaGFuZ2VDYWxsQmFjayAmJiB0aGF0Lmxlbmd0aENoYW5nZUNhbGxCYWNrKClcclxuICAgICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH0pXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLm5vc2VUb1RhaWwpIHtcclxuICAgIC8vICAgbGV0IGFycmF5ID0gW11cclxuICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAvLyAgICAgYXJyYXkucHVzaCh7IGxuZzogZnJvbURlZ3JlZXNBcnJheVtpXSwgbGF0OiBmcm9tRGVncmVlc0FycmF5W2kgKyAxXSB9KVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5maXRfbGVuZ3RoID0gdG9vbC5jb21wdXRlRGlzdGFuY2UoYXJyYXkpXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmZpdF9sZW5ndGggPSB0b29sLmNvbXB1dGVEaXN0YW5jZShwb3NpdGlvbnMpXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLmZpdF9sZW5ndGhfdW5pdCA9PT0gJ2ttJykge1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuZml0X2xlbmd0aCA9IHRoaXMub3B0aW9ucy5maXRfbGVuZ3RoIC8gMTAwMFxyXG4gICAgLy8gfVxyXG5cclxuICAgIGxldCBzY2VuZSA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZVxyXG4gIH1cclxuICBqdWRnZUxpbmUoZW50aXR5LCBuZXdQYXJhbSkge1xyXG4gICAgaWYgKCFlbnRpdHkucG9seWxpbmUub3JpUmVwZWF0KSB7XHJcbiAgICAgIGxldCBwYXJhbSA9IHtcclxuICAgICAgICBjb2xvcjogbmV3UGFyYW0uY29sb3IsXHJcbiAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGAvaW1nL2Fycm93LzEucG5nYCxcclxuICAgICAgICBzcGFjZTogbmV3UGFyYW0uc3BhY2UsXHJcbiAgICAgICAgc3BlZWQ6IG5ld1BhcmFtLnNwZWVkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHBhcmFtLnNwZWVkID0gbmV3UGFyYW0ucm90YXRlID8gcGFyYW0uc3BlZWQgOiAwIC0gcGFyYW0uc3BlZWRcclxuXHJcbiAgICAgIGNvbnN0IGNhbnZhc0VsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjb25zdCBjdHggPSBjYW52YXNFbGUuZ2V0Q29udGV4dCgnMmQnKVxyXG4gICAgICBjb25zdCBteUltZyA9IG5ldyBJbWFnZSgpXHJcbiAgICAgIC8vIG15SW1nLnNyYyA9IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2Fycm93LzEucG5nJ1xyXG4gICAgICBteUltZy5zcmMgPSBwYXJhbS5pbWFnZVxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgICAgbXlJbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNhbnZhc0VsZS53aWR0aCA9IG15SW1nLndpZHRoICogKHBhcmFtLnNwYWNlICsgMSlcclxuICAgICAgICBjYW52YXNFbGUuaGVpZ2h0ID0gbXlJbWcuaGVpZ2h0XHJcblxyXG4gICAgICAgIGxldCBvcmlSZXBlYXQgPSB0aGF0LmdldFNjZWVuTGluZShlbnRpdHksIHBhcmFtLCBjYW52YXNFbGUpXHJcbiAgICAgICAgb3JpUmVwZWF0ICYmIChlbnRpdHkucG9seWxpbmUub3JpUmVwZWF0ID0gb3JpUmVwZWF0KVxyXG5cclxuXHJcbiAgICAgICAgdmFyIHBvc2l0aW9uUHJvcGVydHkgPSBlbnRpdHkucG9seWxpbmUucG9zaXRpb25zO1xyXG4gICAgICAgIHZhciBwb3NpdGlvbnMgPSBwb3NpdGlvblByb3BlcnR5LmdldFZhbHVlKHRoYXQuc2RrLnZpZXdlci5jbG9jay5jdXJyZW50VGltZSk7XHJcblxyXG4gICAgICAgIGlmICghQ2VzaXVtLmRlZmluZWQocG9zaXRpb25zKSkge1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxLjAsIDEuMCk7XHJcbiAgICAgICAgICAvLyByZXR1cm4gMS4wO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLSAxOyArK2kpIHtcclxuICAgICAgICAgIGRpc3RhbmNlICs9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvc2l0aW9uc1tpXSwgcG9zaXRpb25zW2kgKyAxXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcmVwZWF0WCA9IGRpc3RhbmNlIC8gZW50aXR5LnBvbHlsaW5lLndpZHRoLmdldFZhbHVlKCk7XHJcbiAgICAgICAgLy8g5qC55o2u5Zyw5Zu+57yp5pS+56iL5bqm6LCD5pW0cmVwZWF0WFxyXG4gICAgICAgIHZhciBjYW1lcmFIZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgICB2YXIgYm91bmRpbmdTcGhlcmUgPSBuZXcgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlKFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKC0xMDAwMDAwLCAwLCAwKSwgLy8g5Lit5b+D54K55Z2Q5qCHXHJcbiAgICAgICAgICA1MDAwMDAgLy8g5Y2K5b6E77yI6Led56a777yJXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W57uY5Zu+57yT5Yay5Yy655qE5a695bqm5ZKM6auY5bqm77yI6YCa5bi45piv5bGP5bmV55qE5YiG6L6o546H77yJXHJcbiAgICAgICAgdmFyIGRyYXdpbmdCdWZmZXJXaWR0aCA9IHRoYXQuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgdmFyIGRyYXdpbmdCdWZmZXJIZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgLy8g5L2/55SoIGdldFBpeGVsU2l6ZSDmlrnms5Xojrflj5bljIXlm7TnkIPlnKjlsY/luZXkuIrnmoTlg4/ntKDlpKflsI9cclxuICAgICAgICB2YXIgZ3JvdW5kUmVzb2x1dGlvbiA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5jYW1lcmEuZ2V0UGl4ZWxTaXplKGJvdW5kaW5nU3BoZXJlLCBkcmF3aW5nQnVmZmVyV2lkdGgsIGRyYXdpbmdCdWZmZXJIZWlnaHQpXHJcbiAgICAgICAgcmVwZWF0WCAqPSBncm91bmRSZXNvbHV0aW9uIC8gY2FtZXJhSGVpZ2h0IC8gKHBhcmFtLnNwYWNlICogKGNhbnZhc0VsZS53aWR0aCAvIGNhbnZhc0VsZS5oZWlnaHQgKiA1KSArIDEpO1xyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucG9seWxpbmUubWF0ZXJpYWwub3JpUmVwZWF0KSB7XHJcblxyXG4gICAgICAgIGlmICh0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gQ2VzaXVtLlNjZW5lTW9kZS5TQ0VORTNEKSB7XHJcbiAgICAgICAgICBsZXQgc3BlZWQgPSByZXBlYXRYIC8gZW50aXR5LnBvbHlsaW5lLm9yaVJlcGVhdFxyXG4gICAgICAgICAgZW50aXR5LnBvbHlsaW5lLm9yaVNwZWVkID0gc3BlZWRcclxuICAgICAgICAgIGVudGl0eS5wb2x5bGluZS5vcmlSZXBlYXRYID0gcmVwZWF0WFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgc2RrM2QgPSBnZXQzRFZpZXcoKVxyXG4gICAgICAgICAgbGV0IHNkazNkRW50aXR5ID0gc2RrM2Qudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhhdC5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgZW50aXR5LnBvbHlsaW5lLm9yaVNwZWVkID0gc2RrM2RFbnRpdHkucG9seWxpbmUub3JpU3BlZWRcclxuICAgICAgICAgIGVudGl0eS5wb2x5bGluZS5vcmlSZXBlYXRYID0gc2RrM2RFbnRpdHkucG9seWxpbmUub3JpUmVwZWF0WFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLyoq6I635Y+W5b2T5YmN5ruh5bGP5qiq57q/6YCf5bqmICovXHJcbiAgZ2V0U2NlZW5MaW5lKGVudGl0eSwgb3B0aW9ucywgY2FudmFzRWxlKSB7XHJcbiAgICBsZXQgcG9pbnQxID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0KVxyXG4gICAgbGV0IHBvaW50MiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMih0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMiwgdGhpcy5zZGsudmlld2VyLmNhbnZhcy5jbGllbnRIZWlnaHQpXHJcbiAgICAvLyB2YXIgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9pbnQxKVxyXG4gICAgLy8gdmFyIGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKHBvaW50MilcclxuXHJcbiAgICBsZXQgcmF5ID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvaW50MSk7XHJcbiAgICBsZXQgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuXHJcbiAgICBsZXQgcmF5MiA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb2ludDIpO1xyXG4gICAgbGV0IGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXkyLCB0aGlzLnNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgLy8gaWYgKCFjYXJ0ZXNpYW4xIHx8ICFjYXJ0ZXNpYW4yKSB7XHJcbiAgICAvLyAgIGxldCByYXkgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmdldFBpY2tSYXkocG9pbnQxKTtcclxuICAgIC8vICAgY2FydGVzaWFuMSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuXHJcbiAgICAvLyAgIGxldCByYXkyID0gdGhpcy5zZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvaW50Mik7XHJcbiAgICAvLyAgIGNhcnRlc2lhbjIgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXkyLCB0aGlzLnNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGNhcnRlc2lhbjEgJiYgY2FydGVzaWFuMikge1xyXG5cclxuXHJcbiAgICAgIHZhciBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGNhcnRlc2lhbjEsIGNhcnRlc2lhbjIpO1xyXG5cclxuICAgICAgdmFyIHJlcGVhdFggPSBkaXN0YW5jZSAvIGVudGl0eS5wb2x5bGluZS53aWR0aC5nZXRWYWx1ZSgpO1xyXG4gICAgICAvLyDmoLnmja7lnLDlm77nvKnmlL7nqIvluqbosIPmlbRyZXBlYXRYXHJcbiAgICAgIHZhciBjYW1lcmFIZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodDtcclxuICAgICAgdmFyIGJvdW5kaW5nU3BoZXJlID0gbmV3IENlc2l1bS5Cb3VuZGluZ1NwaGVyZShcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoLTEwMDAwMDAsIDAsIDApLCAvLyDkuK3lv4PngrnlnZDmoIdcclxuICAgICAgICA1MDAwMDAgLy8g5Y2K5b6E77yI6Led56a777yJXHJcbiAgICAgICk7XHJcblxyXG5cclxuICAgICAgLy8g6I635Y+W57uY5Zu+57yT5Yay5Yy655qE5a695bqm5ZKM6auY5bqm77yI6YCa5bi45piv5bGP5bmV55qE5YiG6L6o546H77yJXHJcbiAgICAgIHZhciBkcmF3aW5nQnVmZmVyV2lkdGggPSB0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoO1xyXG4gICAgICB2YXIgZHJhd2luZ0J1ZmZlckhlaWdodCA9IHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgLy8g5L2/55SoIGdldFBpeGVsU2l6ZSDmlrnms5Xojrflj5bljIXlm7TnkIPlnKjlsY/luZXkuIrnmoTlg4/ntKDlpKflsI9cclxuICAgICAgdmFyIGdyb3VuZFJlc29sdXRpb24gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FtZXJhLmdldFBpeGVsU2l6ZShib3VuZGluZ1NwaGVyZSwgZHJhd2luZ0J1ZmZlcldpZHRoLCBkcmF3aW5nQnVmZmVySGVpZ2h0KVxyXG4gICAgICAvLyByZXBlYXRYICo9IGdyb3VuZFJlc29sdXRpb24gLyBjYW1lcmFIZWlnaHQgLyAoKG15SW1nLndpZHRoIC8gbXlJbWcuaGVpZ2h0ICogNSkgKyAxKTtcclxuICAgICAgaWYgKGdyb3VuZFJlc29sdXRpb24gPiA3MDApIHtcclxuICAgICAgICByZXBlYXRYICo9IGdyb3VuZFJlc29sdXRpb24gLyBjYW1lcmFIZWlnaHQgLyAob3B0aW9ucy5zcGFjZSAqIChjYW52YXNFbGUud2lkdGggLyBjYW52YXNFbGUuaGVpZ2h0ICogNSkgKyAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXBlYXRYID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUzRCkge1xyXG4gICAgICAgIHJldHVybiByZXBlYXRYXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHNkazNkID0gZ2V0M0RWaWV3KClcclxuICAgICAgICBsZXQgc2RrM2RFbnRpdHkgPSBzZGszZC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgcmV0dXJuIHNkazNkRW50aXR5LnBvbHlsaW5lLm9yaVJlcGVhdFhcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlIHRydWXmiZPlvIDvvIxmYWxzZeWFs+mXrVxyXG4gICAqL1xyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+e6v+WxnuaApycsXHJcbiAgICAgICAgbGVmdDogJzE4MHB4JyxcclxuICAgICAgICB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiBvcHRpb25zID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5sYWJlbC5wb3NpdGlvblswXSxcclxuICAgICAgICAgICAgbGF0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzFdLFxyXG4gICAgICAgICAgICBhbHQ6IHRoaXMubGFiZWwucG9zaXRpb25bMl1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93Q2FsbEJhY2s6IHNob3cgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyDkuozmrKHnvJbovpHlm57osINcclxuICAgICAgICBzZWNvbmRhcnlFZGl0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubm9kZUVkaXQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHBvbHlsaW5lJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlXHJcbiAgICAgIC8vIHRoaXMuYXR0cmlidXRlQ2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudFxyXG4gICAgICAvLyB0aGlzLmF0dHJpYnV0ZUdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcblxyXG4gICAgICBmdW5jdGlvbiB0YWJDbGljayhlKSB7XHJcbiAgICAgICAgaWYgKGUgPT09ICcyJyB8fCBlID09PSAyKSB7Ly/ngrnlh7vnur/mnaHmoLflvI9cclxuICAgICAgICAgIGlmICgyIDwgX3RoaXMub3B0aW9ucy50eXBlICYmIF90aGlzLm9wdGlvbnMudHlwZSA8IDEzKSB7Ly/otLTlm77lj4LmlbBcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykgJiYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykuc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKFxyXG4gICAgICAgICdwb2x5bGluZS1vYmplY3QtZWRpdC10YWJzJyxcclxuICAgICAgICB0YWJDbGljayxcclxuICAgICAgICB0aGlzLnNka1xyXG4gICAgICApXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29sb3InKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGFiZWxDb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgZXh0ZW5kQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZXh0ZW5kQ29sb3InKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmV4dGVuZENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsIC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5leHRlbmRDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYWJlbExpbmVDb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBfdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQnKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xhYmVsQmFja2dyb3VuZENvbG9yRW5kJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpXHJcbiAgICAgIEV2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2xhYmVsQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMuZXh0ZW5kQ29sb3IgPSBbZXh0ZW5kQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IgPSBbbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbX3RoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgLy8gdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIC8vIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgICAvLyB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdhdHRyaWJ1dGUtc2VsZWN0LWJveCdcclxuICAgICAgICApWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgJy5hdHRyaWJ1dGUtc2VsZWN0JylcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5hbWVEYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn56m66Ze06ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnqbrpl7Tplb/luqYnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5oqV5b2x6ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmipXlvbHplb/luqYnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5Zyw6KGo6ZW/5bqmJyxcclxuICAgICAgICAgICAgdmFsdWU6ICflnLDooajplb/luqYnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG5cclxuICAgICAgICBsZXQgbmFtZURhdGFMZWdwT2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdpbnB1dC1zZWxlY3QtdW5pdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5pbnB1dC1zZWxlY3QtdW5pdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKG5hbWVEYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgbmFtZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKG5hbWVEYXRhKVxyXG4gICAgICAgICAgbGV0IG5hbWVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy53b3Jkc05hbWUgPSBbbmFtZURhdGFMZWdwRWxtXVxyXG4gICAgICAgICAgbmFtZURhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLndvcmRzTmFtZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAobmFtZURhdGFbaV0udmFsdWUgPT09IG5hbWVEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIG5hbWVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShuYW1lRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuYW1lRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAobmFtZURhdGFbaV0udmFsdWUgPT09IG5hbWVEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3Jkc05hbWUgPSBuYW1lRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDljp/lp4vplb/luqbljZXkvY1cclxuICAgICAgICBsZXQgdW5pdERhdGEgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+exsydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfljYPnsbMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+WNg+exsydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcblxyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2lucHV0LXNlbGVjdC11bml0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmlucHV0LXNlbGVjdC11bml0JyxcclxuICAgICAgICAgIDFcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QtdW5pdCcpWzFdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sZW5ndGhVbml0ID0gW3VuaXREYXRhTGVncEVsbV1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5sZW5ndGhVbml0XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHVuaXREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bml0RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh1bml0RGF0YVtpXS52YWx1ZSA9PT0gdW5pdERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aFVuaXQgPSB1bml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vXHJcblxyXG5cclxuICAgICAgICAvLyDmi5/lkIjplb/luqbljZXkvY1cclxuICAgICAgICAvLyBsZXQgZml0VW5pdERhdGEgPSBbXHJcbiAgICAgICAgLy8gICB7XHJcbiAgICAgICAgLy8gICAgIG5hbWU6ICfnsbMnLFxyXG4gICAgICAgIC8vICAgICB2YWx1ZTogJ+exsydcclxuICAgICAgICAvLyAgIH0sXHJcbiAgICAgICAgLy8gICB7XHJcbiAgICAgICAgLy8gICAgIG5hbWU6ICfljYPnsbMnLFxyXG4gICAgICAgIC8vICAgICB2YWx1ZTogJ+WNg+exsydcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyBdXHJcblxyXG4gICAgICAgIC8vIGxldCBmaXRVbml0RGF0YUxlZ3BPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAvLyAgICAgJ2lucHV0LXNlbGVjdC1maXQtdW5pdC1ib3gnXHJcbiAgICAgICAgLy8gICApWzBdLFxyXG4gICAgICAgIC8vICAgJy5pbnB1dC1zZWxlY3QtZml0LXVuaXQnXHJcbiAgICAgICAgLy8gKVxyXG4gICAgICAgIC8vIGlmIChmaXRVbml0RGF0YUxlZ3BPYmplY3QpIHtcclxuICAgICAgICAvLyAgIGZpdFVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaChmaXRVbml0RGF0YSlcclxuICAgICAgICAvLyAgIGxldCBmaXRVbml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgIC8vICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LWZpdC11bml0JylbMF1cclxuICAgICAgICAvLyAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgLy8gICB0aGlzLl9lbG1zLmZpdExlbmd0aFVuaXQgPSBbZml0VW5pdERhdGFMZWdwRWxtXVxyXG4gICAgICAgIC8vICAgZml0VW5pdERhdGFMZWdwRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLmZpdExlbmd0aFVuaXRcclxuICAgICAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgZml0VW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyAgICAgaWYgKGZpdFVuaXREYXRhW2ldLnZhbHVlID09PSBmaXRVbml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICBmaXRVbml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoZml0VW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgLy8gICAgICAgYnJlYWtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZml0VW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpdFVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgICAgaWYgKGZpdFVuaXREYXRhW2ldLnZhbHVlID09PSBmaXRVbml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuZml0TGVuZ3RoVW5pdCA9IGZpdFVuaXREYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgLy8gICAgICAgICBicmVha1xyXG4gICAgICAgIC8vICAgICAgIH1cclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfSlcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIGxldCBsaW5lVHlwZURhdGEgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbGluZVwiPjwvaT7lrp7nur8nLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+Wunue6vycsXHJcbiAgICAgICAgICAgIGtleTogMCxcclxuICAgICAgICAgICAgaWNvbjogJ2xpbmUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGRhc2gtbGluZVwiPjwvaT7omZrnur8nLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+iZmue6vycsXHJcbiAgICAgICAgICAgIGtleTogMSxcclxuICAgICAgICAgICAgaWNvbjogJ2Rhc2gtbGluZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbGlnaHQtbGluZVwiPjwvaT7ms5vlhYknLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+azm+WFiScsXHJcbiAgICAgICAgICAgIGtleTogMixcclxuICAgICAgICAgICAgaWNvbjogJ2xpZ2h0LWxpbmUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHRhaWwtbGluZVwiPjwvaT7lsL7ov7nlhYnnur8nLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+Wwvui/ueWFiee6vycsXHJcbiAgICAgICAgICAgIGtleTogMyxcclxuICAgICAgICAgICAgaWNvbjogJ3RhaWwtbGluZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gbXVsdC10YWlsLWxpbmVcIj48L2k+5aSa5bC+6L+55YWJ57q/JyxcclxuICAgICAgICAgICAgdmFsdWU6ICflpJrlsL7ov7nlhYnnur8nLFxyXG4gICAgICAgICAgICBrZXk6IDQsXHJcbiAgICAgICAgICAgIGljb246ICdtdWx0LXRhaWwtbGluZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gZmxvdy1kYXNoLWxpbmUxXCI+PC9pPua1geWKqOiZmue6vzEnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+a1geWKqOiZmue6vzEnLFxyXG4gICAgICAgICAgICBrZXk6IDUsXHJcbiAgICAgICAgICAgIGljb246ICdmbG93LWRhc2gtbGluZTEnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGZsb3ctZGFzaC1saW5lMlwiPjwvaT7mtYHliqjomZrnur8yJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjomZrnur8yJyxcclxuICAgICAgICAgICAga2V5OiA2LFxyXG4gICAgICAgICAgICBpY29uOiAnZmxvdy1kYXNoLWxpbmUyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTFcIj48L2k+5rWB5Yqo566t5aS0MScsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0MScsXHJcbiAgICAgICAgICAgIGtleTogNyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpYy1saW5lMSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmUyXCI+PC9pPua1geWKqOeureWktDInLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDInLFxyXG4gICAgICAgICAgICBrZXk6IDgsXHJcbiAgICAgICAgICAgIGljb246ICdwaWMtbGluZTInXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lM1wiPjwvaT7mtYHliqjnrq3lpLQzJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQzJyxcclxuICAgICAgICAgICAga2V5OiA5LFxyXG4gICAgICAgICAgICBpY29uOiAncGljLWxpbmUzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBwaWMtbGluZTRcIj48L2k+5rWB5Yqo566t5aS0NCcsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rWB5Yqo566t5aS0NCcsXHJcbiAgICAgICAgICAgIGtleTogMTAsXHJcbiAgICAgICAgICAgIGljb246ICdwaWMtbGluZTQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIHBpYy1saW5lNVwiPjwvaT7mtYHliqjnrq3lpLQ1JyxcclxuICAgICAgICAgICAgdmFsdWU6ICfmtYHliqjnrq3lpLQ1JyxcclxuICAgICAgICAgICAga2V5OiAxMSxcclxuICAgICAgICAgICAgaWNvbjogJ3BpYy1saW5lNSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gcGljLWxpbmU2XCI+PC9pPua1geWKqOeureWktDYnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+a1geWKqOeureWktDYnLFxyXG4gICAgICAgICAgICBrZXk6IDEyLFxyXG4gICAgICAgICAgICBpY29uOiAncGljLWxpbmU2J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgbGluZVR5cGVEYXRhTGVncE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnaW5wdXQtc2VsZWN0LWxpbmUtdHlwZS1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5pbnB1dC1zZWxlY3QtbGluZS10eXBlJ1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAobGluZVR5cGVEYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgbGluZVR5cGVEYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaChsaW5lVHlwZURhdGEpXHJcblxyXG4gICAgICAgICAgbGV0IGlBY3RpdmVFbG0yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXHJcbiAgICAgICAgICBpQWN0aXZlRWxtMi5jbGFzc05hbWUgPSAnaWNvbiBpY29uLWFjdGl2ZSdcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC1saW5lLXR5cGUnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjeV9kYXRhbGlzdCcpWzBdLmFwcGVuZENoaWxkKGlBY3RpdmVFbG0yKVxyXG5cclxuICAgICAgICAgIGxldCBsaW5lVHlwZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC1saW5lLXR5cGUnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIHRoaXMuX2VsbXMubGluZVR5cGUgPSBbbGluZVR5cGVEYXRhTGVncEVsbV1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVR5cGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lVHlwZURhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMudHlwZSkge1xyXG4gICAgICAgICAgICAgIGxpbmVUeXBlRGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUobGluZVR5cGVEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGxpbmVUeXBlRGF0YUxlZ3BFbG0udmFsdWUgPSBsaW5lVHlwZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBpQWN0aXZlRWxtMi5jbGFzc05hbWUgPSBgaWNvbiBpY29uLWFjdGl2ZSAke2xpbmVUeXBlRGF0YVtpXS5pY29ufWBcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsaW5lVHlwZURhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVUeXBlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChsaW5lVHlwZURhdGFbaV0udmFsdWUgPT09IGxpbmVUeXBlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGUgPSBsaW5lVHlwZURhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBpQWN0aXZlRWxtMi5jbGFzc05hbWUgPSBgaWNvbiBpY29uLWFjdGl2ZSAke2xpbmVUeXBlRGF0YVtpXS5pY29ufWBcclxuXHJcbiAgICAgICAgICAgICAgICAvL+aOp+WItuWPguaVsOaYvumakFxyXG4gICAgICAgICAgICAgICAgaWYgKDIgPCB0aGlzLmxpbmVUeXBlICYmIHRoaXMubGluZVR5cGUgPCAxMykgey8v6LS05Zu+5Y+C5pWwXHJcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpICYmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGFzaFRleHR1cmVEb20nKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hUZXh0dXJlRG9tJykgJiYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoVGV4dHVyZURvbScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoMiA8IHRoaXMubGluZVR5cGUgJiYgdGhpcy5saW5lVHlwZSA8IDUpIHsvL+Wwvui/ueWPguaVsFxyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVswXSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMV0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lU3BhY2UnKVswXSAmJiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZVNwYWNlJylbMV0gJiYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVTcGFjZScpWzFdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgbGV0IGhlaWdodEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1ib3gnKVswXVxyXG4gICAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgICBsZXQgaGVpZ2h0Q29uZmlybUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1jb25maXJtJylbMF1cclxuICAgICAgICBoZWlnaHRFbG0udmFsdWUgPSAxMFxyXG4gICAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaGVpZ2h0Qm94RWxtICYmIChoZWlnaHRCb3hFbG0uY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoZWlnaHRNb2RlRGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5rW35ouU6auY5bqmJyxcclxuICAgICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAgICAgICBrZXk6ICcxJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICfkvp3pmYTmqKHlnosnLFxyXG4gICAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICAgIGtleTogJzInLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgaGVpZ2h0TW9kZU9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuaGVpZ2h0LW1vZGUnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChoZWlnaHRNb2RlT2JqZWN0KSB7XHJcbiAgICAgICAgICBoZWlnaHRNb2RlT2JqZWN0LmxlZ3Bfc2VhcmNoKGhlaWdodE1vZGVEYXRhKVxyXG4gICAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtbW9kZScpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9kZURhdGFbaV0ua2V5ID09IHRoaXMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS52YWx1ZSA9IGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICAgIGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZSA9PT0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGhlaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggPSBoZWlnaHRCb3hFbG1cclxuICAgICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZSA9IGhlaWdodE1vZGVEYXRhTGVncEVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ID0gaGVpZ2h0TW9kZU9iamVjdFxyXG5cclxuICAgICAgICAgIGhlaWdodENvbmZpcm1FbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQgPSBOdW1iZXIoKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSkpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgICAgdGhpcy5fZWxtcy5hbHRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRhYmxlRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzcGF0aWFsLWluZm8tdGFibGUnKVswXVxyXG4gICAgICAgIGxldCB0Qm9keUVsbSA9IHRhYmxlRWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIHRoaXMuX2VsbXMubG5nID0gW11cclxuICAgICAgICB0aGlzLl9lbG1zLmxuZ0lucHV0ID0gW11cclxuICAgICAgICB0aGlzLl9lbG1zLmxhdCA9IFtdXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYXRJbnB1dCA9IFtdXHJcbiAgICAgICAgdGhpcy5fZWxtcy5hbHQgPSBbXVxyXG4gICAgICAgIHRoaXMuX2VsbXMuYWx0SW5wdXQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgICAgIHRyLmNsYXNzTmFtZSA9ICd0cidcclxuICAgICAgICAgIHRyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+JHtpICsgMX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxuZyBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGxhdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICAgIGBcclxuICAgICAgICAgIGxldCBsbmdCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsbmcnKVswXVxyXG4gICAgICAgICAgbGV0IGxuZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbG5nLmlubmVySFRNTCA9ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KVxyXG4gICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIGxldCBsbmdJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGxuZ0lucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGxuZ0lucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgbG5nSW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgbG5nSW5wdXQubWluID0gLTE4MFxyXG4gICAgICAgICAgbG5nSW5wdXQubWF4ID0gMTgwXHJcbiAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBsYXRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQnKVswXVxyXG4gICAgICAgICAgbGV0IGxhdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbGF0LmlubmVySFRNTCA9ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG4gICAgICAgICAgbGF0Qm94LmFwcGVuZENoaWxkKGxhdClcclxuICAgICAgICAgIGxldCBsYXRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcclxuICAgICAgICAgIGxhdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICAgIGxhdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgICAgbGF0SW5wdXQudGl0bGUgPSAnJ1xyXG4gICAgICAgICAgbGF0SW5wdXQubWluID0gLTkwXHJcbiAgICAgICAgICBsYXRJbnB1dC5tYXggPSA5MFxyXG4gICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSAodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgICBsZXQgYWx0Qm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWx0JylbMF1cclxuICAgICAgICAgIGxldCBhbHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSAodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpLnRvRml4ZWQoMilcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgICBsZXQgYWx0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBhbHRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBhbHRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGFsdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGFsdElucHV0Lm1pbiA9IC05OTk5OTk5XHJcbiAgICAgICAgICBhbHRJbnB1dC5tYXggPSA5OTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0KS50b0ZpeGVkKDIpXHJcblxyXG4gICAgICAgICAgbG5nQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nSW5wdXQudmFsdWUgPSBOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZ0lucHV0KVxyXG4gICAgICAgICAgICBsbmdJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcgPSBOdW1iZXIoTnVtYmVyKGxuZ0lucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmcuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIGZyb21EZWdyZWVzQXJyYXlbMl1dXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGxhdEJveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXRJbnB1dClcclxuICAgICAgICAgICAgbGF0SW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VOb2RlRWRpdCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0ID0gTnVtYmVyKE51bWJlcihsYXRJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0LmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LCBmcm9tRGVncmVlc0FycmF5WzJdXVxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBhbHRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdElucHV0KVxyXG4gICAgICAgICAgICBhbHRJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcih0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQgPSBOdW1iZXIoTnVtYmVyKGFsdElucHV0LnZhbHVlKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIGZyb21EZWdyZWVzQXJyYXlbMl1dXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIHRoaXMuX2VsbXMubG5nLnB1c2gobG5nKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sbmdJbnB1dC5wdXNoKGxuZ0lucHV0KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYXQucHVzaChsYXQpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhdElucHV0LnB1c2gobGF0SW5wdXQpXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmFsdC5wdXNoKGFsdClcclxuICAgICAgICAgIHRoaXMuX2VsbXMuYWx0SW5wdXQucHVzaChhbHRJbnB1dClcclxuICAgICAgICAgIHRCb2R5RWxtLmFwcGVuZENoaWxkKHRyKVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5bmz5ruR5aSE55CGXHJcbiAgc21vb3RoSGFuZGxlKHBvc2l0aW9ucykge1xyXG4gICAgbGV0IG5ld1Bvc2l0aW9ucyA9IFtdXHJcbiAgICBsZXQgdGltZSA9IFtdXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheUhlaWdodHMgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheUhlaWdodHMucHVzaChcclxuICAgICAgICBwb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgIHBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgcG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICApXHJcbiAgICAgIHRpbWUucHVzaChpIC8gKHBvc2l0aW9ucy5sZW5ndGggLSAxKSlcclxuICAgIH1cclxuICAgIGxldCBzcGxpbmUgPSBuZXcgQ2VzaXVtLkNhdG11bGxSb21TcGxpbmUoe1xyXG4gICAgICB0aW1lczogdGltZSxcclxuICAgICAgcG9pbnRzOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5SGVpZ2h0cylcclxuICAgIH0pXHJcbiAgICBsZXQgbGVuZ3RoID0gcG9zaXRpb25zLmxlbmd0aCAqIDIwXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBsZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY2FydGVzaWFuMyA9IHNwbGluZS5ldmFsdWF0ZShpIC8gbGVuZ3RoKVxyXG4gICAgICBuZXdQb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbjMsIHRoaXMuc2RrLnZpZXdlcikpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3UG9zaXRpb25zXHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbnNBcnJheSwgY2QpIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBvc2l0aW9uc0FycmF5KSlcclxuICAgIGxldCBncm91bmRcclxuICAgIGxldCBoZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICBpZiAodGhpcy5faXNOb2RlRWRpdCkge1xyXG4gICAgICBoZWlnaHRNb2RlID0gMFxyXG4gICAgfVxyXG4gICAgc3dpdGNoIChoZWlnaHRNb2RlKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpKVxyXG4gICAgICAgICAgcG9zaXRpb25zW2ldLmFsdCA9IGhlaWdodCA/IE51bWJlcigocG9zaXRpb25zW2ldLmFsdCArIE51bWJlcihoZWlnaHQpKS50b0ZpeGVkKDIpKSA6IE51bWJlcigocG9zaXRpb25zW2ldLmFsdCkudG9GaXhlZCgyKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIGdyb3VuZCA9IHRydWVcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld1Bvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbCAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbCAhPT0gJ2ZhbHNlJ1xyXG4gICAgKSB7XHJcbiAgICAgIG5ld1Bvc2l0aW9ucyA9IFsuLi5wb3NpdGlvbnMsIHBvc2l0aW9uc1swXV1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld1Bvc2l0aW9ucyA9IFsuLi5wb3NpdGlvbnNdXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNtb290aCAmJiB0aGlzLm9wdGlvbnMuc21vb3RoICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgIG5ld1Bvc2l0aW9ucyA9IHRoaXMuc21vb3RoSGFuZGxlKG5ld1Bvc2l0aW9ucylcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdQb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goXHJcbiAgICAgICAgICBuZXdQb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgbmV3UG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgIG5ld1Bvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3UG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gICAgICAgICAgbmV3UG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgIG5ld1Bvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICBuZXdQb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6K6h566X6ZW/5bqmXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLm9wdGlvbnMubm9zZVRvVGFpbCAmJlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5ub3NlVG9UYWlsICE9PSAnZmFsc2UnKSB8fFxyXG4gICAgICAodGhpcy5vcHRpb25zLnNtb290aCAmJiB0aGlzLm9wdGlvbnMuc21vb3RoICE9PSAnZmFsc2UnKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkgKz0gMykge1xyXG4gICAgICAgIGFycmF5LnB1c2goe1xyXG4gICAgICAgICAgbG5nOiBmcm9tRGVncmVlc0FycmF5W2ldLFxyXG4gICAgICAgICAgbGF0OiBmcm9tRGVncmVlc0FycmF5W2kgKyAxXSxcclxuICAgICAgICAgIGFsdDogZnJvbURlZ3JlZXNBcnJheVtpICsgMl1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICAgIHRoaXMuY29tcHV0ZURpc3RhbmNlKFxyXG4gICAgICAgIGFycmF5LFxyXG4gICAgICAgIDIsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLndvcmRzTmFtZVxyXG4gICAgICApLnRoZW4ocmVzID0+IHtcclxuICAgICAgICBfdGhpcy5sZW5ndGhCeU1ldGVyID0gcmVzXHJcbiAgICAgICAgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjayAmJiB0aGlzLmxlbmd0aENoYW5nZUNhbGxCYWNrKClcclxuICAgICAgICBjZCAmJiBjZCgpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICAgIHRoaXMuY29tcHV0ZURpc3RhbmNlKFxyXG4gICAgICAgIHBvc2l0aW9ucyxcclxuICAgICAgICAyLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy53b3Jkc05hbWVcclxuICAgICAgKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgX3RoaXMubGVuZ3RoQnlNZXRlciA9IHJlc1xyXG4gICAgICAgIHRoaXMubGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5sZW5ndGhDaGFuZ2VDYWxsQmFjaygpXHJcbiAgICAgICAgY2QgJiYgY2QoKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcblxyXG4gIC8vIOabtOaWsOWkmui+ueW9ou+8iOe6v+aJqeWxle+8iVxyXG4gIHJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KSB7XHJcbiAgICBsZXQgbGluZVBvc2l0aW9ucyA9IFtdXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmV4dGVuZCAmJiB0aGlzLm9wdGlvbnMuZXh0ZW5kICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgIGxldCBvdXRlckhvbGUgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpICs9IDMpIHtcclxuICAgICAgICBsaW5lUG9zaXRpb25zLnB1c2goW2Zyb21EZWdyZWVzQXJyYXlbaV0sIGZyb21EZWdyZWVzQXJyYXlbaSArIDFdXSlcclxuICAgICAgfVxyXG4gICAgICBsZXQgbGluZXN0cmluZyA9IHR1cmYubGluZVN0cmluZyhsaW5lUG9zaXRpb25zKVxyXG4gICAgICBsZXQgYnVmZmVyZWQgPSB0dXJmLmJ1ZmZlcihcclxuICAgICAgICBsaW5lc3RyaW5nLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5leHRlbmRXaWR0aCAvIDEwMDAsXHJcbiAgICAgICAgeyB1bml0czogJ2tpbG9tZXRlcnMnIH1cclxuICAgICAgKVxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJlZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG91dGVySG9sZS5wdXNoKFxyXG4gICAgICAgICAgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1baV1bMF0sXHJcbiAgICAgICAgICBidWZmZXJlZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtpXVsxXVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICBsZXQgaG9sZXMgPSBbXSAvLyDlrZRcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBidWZmZXJlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBidWZmZXJlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tpXS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgYXJyYXkucHVzaChcclxuICAgICAgICAgICAgYnVmZmVyZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bbV1bMF0sXHJcbiAgICAgICAgICAgIGJ1ZmZlcmVkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldW21dWzFdXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvbGVzLnB1c2goeyBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoYXJyYXkpIH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbiA9IG5ldyBDZXNpdW0uUG9seWdvbkdyYXBoaWNzKHtcclxuICAgICAgICBoaWVyYXJjaHk6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShvdXRlckhvbGUpLFxyXG4gICAgICAgICAgaG9sZXM6IGhvbGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuZXh0ZW5kQ29sb3IpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLndpZHRoXHJcbiAgICB0aGlzLmxpbmVUeXBlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMudHlwZVxyXG4gICAgdGhpcy5ub3NlVG9UYWlsID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubm9zZVRvVGFpbFxyXG4gICAgdGhpcy5zbW9vdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zbW9vdGhcclxuICAgIHRoaXMuZXh0ZW5kID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZXh0ZW5kXHJcbiAgICB0aGlzLmV4dGVuZFdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZXh0ZW5kV2lkdGhcclxuICAgIHRoaXMuZXh0ZW5kQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5leHRlbmRDb2xvclxyXG4gICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5sYWJlbEZvbnRTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgdGhpcy5sYWJlbExpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gICAgdGhpcy5sYWJlbFBpeGVsT2Zmc2V0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gICAgLy8gdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgLy8gdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgICAvLyB0aGlzLmF0dHJpYnV0ZUdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcbiAgICB0aGlzLnJvdGF0ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnJvdGF0ZVxyXG4gICAgdGhpcy5zcGVlZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNwZWVkXHJcbiAgICAvLyB0aGlzLmRhc2hTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZGFzaFNpemVcclxuICAgIHRoaXMuc3BhY2UgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zcGFjZVxyXG4gICAgLy8gdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG4gICAgLy8gdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZVxyXG5cclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcblxyXG4gICAgLy8gbGV0IGhlaWdodFxyXG4gICAgLy8gaWYgKHRoaXMuZ3JvdW5kKSB7XHJcbiAgICAvLyAgIGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAvLyAgICAgbG5nOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZyxcclxuICAgIC8vICAgICBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBoZWlnaHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0ge1xyXG4gICAgLy8gICBsbmc6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgLy8gICBsYXQ6IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LFxyXG4gICAgLy8gICBhbHQ6IGhlaWdodFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyxcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCxcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdFxyXG4gICAgLy8gXVxyXG4gIH1cclxuXHJcbiAgLy8gX2FkZFJyKCkge1xyXG4gIC8vICAgaWYgKFxyXG4gIC8vICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gIC8vICAgICAgICd2cl9hZGQnXHJcbiAgLy8gICAgIClbMF0udmFsdWVcclxuICAvLyAgICkge1xyXG4gIC8vICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgLy8gICAgICAgbmFtZTogJ+WFqOaZr+WbvicgKyAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50Lmxlbmd0aCArIDEpLFxyXG4gIC8vICAgICAgIHVybDogdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAvLyAgICAgICAgICd2cl9hZGQnXHJcbiAgLy8gICAgICAgKVswXS52YWx1ZVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gIC8vICAgICAgICd2cl9hZGQnXHJcbiAgLy8gICAgIClbMF0udmFsdWUgPSAnJ1xyXG4gIC8vICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLkRpYWxvZy5jbGlja0FkZFZyICYmIHRoaXMuRGlhbG9nLmNsaWNrQWRkVnIoKVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gYWRkQXR0cmlidXRlUnIodnIpIHtcclxuICAvLyAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5wdXNoKHtcclxuICAvLyAgICAgbmFtZTogJ+WFqOaZr+WbvicgKyAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50Lmxlbmd0aCArIDEpLFxyXG4gIC8vICAgICB1cmw6IHZyXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGxldCBoZWlnaHRcclxuICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0ICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0pXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc3RhdGljIG5vZGVFZGl0Mih0aGF0LCBjYiA9ICgpID0+IHsgfSkge1xyXG4gIC8vICAgdGhhdC5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gIC8vICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgLy8gICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgLy8gICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAvLyAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gIC8vICAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gIC8vICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAvLyAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb25cclxuICAvLyAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgLy8gICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKFxyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsXHJcbiAgLy8gICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgLy8gICAgICAgKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIG5ld3Bvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gIC8vICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAvLyAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAvLyAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gIC8vICAgICAgICAgICB0aGF0LnNkay52aWV3ZXJcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gIC8vICAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gIC8vICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgLy8gICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAvLyAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcsXHJcbiAgLy8gICAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LFxyXG4gIC8vICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmFsdFxyXG4gIC8vICAgICAgICAgICApLFxyXG4gIC8vICAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAvLyAgICAgICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAvLyAgICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgLy8gICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAvLyAgICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgZW50aXR5KVxyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2UoXHJcbiAgLy8gICAgICAgICAgIHNlbGVjdFBvaW50LmluZGV4LFxyXG4gIC8vICAgICAgICAgICAwLFxyXG4gIC8vICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGF0LnJlbmV3UG9zaXRpb25zKHRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgLy8gICAgICAgICB0aGF0LnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLmxlbmd0aEJ5TWV0ZXIgPSB0aGF0LmNvbXB1dGVEaXN0YW5jZShcclxuICAvLyAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucyxcclxuICAvLyAgICAgICAgICAgMixcclxuICAvLyAgICAgICAgICAgdGhhdC5ncm91bmRcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIHRoYXQubGVuZ3RoVW5pdCA9IHRoYXQub3B0aW9ucy5sZW5ndGhVbml0XHJcbiAgLy8gICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgIHZhciBwaWNrID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgLy8gICAgICAgICBpZiAoXHJcbiAgLy8gICAgICAgICAgIHBpY2sgJiZcclxuICAvLyAgICAgICAgICAgcGljay5pZCAmJlxyXG4gIC8vICAgICAgICAgICBwaWNrLmlkLm5hbWUgJiZcclxuICAvLyAgICAgICAgICAgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCdcclxuICAvLyAgICAgICAgICkge1xyXG4gIC8vICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAvLyAgICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnNwbGljZShwaWNrLmlkLmluZGV4LCAxKVxyXG4gIC8vICAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHBpY2suaWQpXHJcbiAgLy8gICAgICAgICAgIHRoYXQudGlwLnNldF90ZXh0KCflt6bplK7lvIDlp4vvvIzlj7PplK7nu5PmnZ/vvIxDVFJMK+WPs+mUruaSpOmUgCcpXHJcbiAgLy8gICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gIC8vICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAvLyAgICAgICAgICAgICB0aGF0LnNkay52aWV3ZXJcclxuICAvLyAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAvLyAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gIC8vICAgICAgICAgY2IobnVsbCwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAvLyAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgLy8gICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChcclxuICAvLyAgICAgICAgICAgcG9zaXRpb25zW2ldLmxuZyxcclxuICAvLyAgICAgICAgICAgcG9zaXRpb25zW2ldLmxhdCxcclxuICAvLyAgICAgICAgICAgcG9zaXRpb25zW2ldLmFsdFxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBuZXdwb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAvLyAgICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC5ub2RlUG9pbnRzW2ldKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gIC8vICAgICAgIHRoYXQuZXZlbnQuZGVzdHJveSgpXHJcbiAgLy8gICAgICAgdGhhdC50aXAuZGVzdHJveSgpXHJcbiAgLy8gICAgIH0pXHJcblxyXG4gIC8vICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAvLyAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAvLyAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChcclxuICAvLyAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gIC8vICAgICAgICAgICB0aGF0LnNkay52aWV3ZXJcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgLy8gICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgLy8gICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goXHJcbiAgLy8gICAgICAgICAgICAgcG9zaXRpb25zW2ldLmxuZyxcclxuICAvLyAgICAgICAgICAgICBwb3NpdGlvbnNbaV0ubGF0LFxyXG4gIC8vICAgICAgICAgICAgIHBvc2l0aW9uc1tpXS5hbHRcclxuICAvLyAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgbmV3cG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgLy8gICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAvLyAgICAgICAgIClcclxuICAvLyAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gIC8vICAgICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gIC8vICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gIC8vICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LFxyXG4gIC8vICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgLy8gICAgICAgICAgIF1cclxuICAvLyAgICAgICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0ge1xyXG4gIC8vICAgICAgICAgICAgIGxuZzogdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgLy8gICAgICAgICAgICAgbGF0OiB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCxcclxuICAvLyAgICAgICAgICAgICBhbHQ6IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgLy8gICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgLy8gICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gIC8vICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gIC8vICAgICAgIClcclxuICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gIC8vICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gIC8vICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gIC8vICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShcclxuICAvLyAgICAgICAgICAgdGhhdC5ub2RlUG9pbnRzW3RoYXQubm9kZVBvaW50cy5sZW5ndGggLSAxXVxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgLy8gICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGlmICh0aGF0Lm5vZGVQb2ludHNbc2VsZWN0UG9pbnQuaW5kZXggLSAxXSkge1xyXG4gIC8vICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhhdC5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAvLyAgICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgICBzZWxlY3RQb2ludC5pbmRleCA9IDBcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSlcclxuXHJcbiAgLy8gICAgIHRoYXQuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIG5ld3Bvc2l0aW9uc1xyXG4gIC8vICAgICB9LCBmYWxzZSlcclxuXHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGxldCBlbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAvLyAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAvLyAgICAgICAgIGluZGV4OiBpLFxyXG4gIC8vICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gIC8vICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAvLyAgICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgLy8gICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgLy8gICAgICAgICApLFxyXG4gIC8vICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgLy8gICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gIC8vICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgLy8gICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgLy8gICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgICB0aGF0Lm5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG5vZGVFZGl0KGNiKSB7XHJcbiAgICBpZih0aGlzLl9pc05vZGVFZGl0KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgIGxldCBsYXN0SGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgdGhpcy5faXNOb2RlRWRpdCA9IHRydWVcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHRoaXMubm9zZVRvVGFpbCA9IGZhbHNlXHJcbiAgICAvLyB0aGlzLnNtb290aCA9IGZhbHNlXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSAwXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5fbGFzdEhlaWdodE1vZGUgJiYgdGhpcy5fbGFzdEhlaWdodE1vZGUgIT0gMCkge1xyXG4gICAgICAgIHRoaXMuX2xhc3RIZWlnaHRNb2RlID0gbGFzdEhlaWdodE1vZGVcclxuICAgICAgfVxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy5fbm9kZUVkaXRDYWxsYmFjayA9IGNiXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgPSBuZXcgQ29udHJvbGxlcih0aGlzLnNkaylcclxuXHJcbiAgICAgIGxldCBzZWxlY3RQb2ludFxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB2YXIgcGljayA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHBpY2sgJiZcclxuICAgICAgICAgIHBpY2suaWQgJiZcclxuICAgICAgICAgIHBpY2suaWQubmFtZSAmJlxyXG4gICAgICAgICAgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCdcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LnBvc2l0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF1cclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5jb250cm9sbGVyQ2FsbEJhY2sgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIGxuZzogcGFyYW1zLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICAgICAgICAgIGxhdDogcGFyYW1zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgICAgICAgIGFsdDogcGFyYW1zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHBhcmFtcy5wb3NpdGlvblxyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxuZyAmJiAodGhpcy5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHBhcmFtcy5wb3NpdGlvbi5sbmcudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5sbmdJbnB1dCAmJiAodGhpcy5fZWxtcy5sbmdJbnB1dFtzZWxlY3RQb2ludC5pbmRleF0udmFsdWUgPSBwYXJhbXMucG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubGF0ICYmICh0aGlzLl9lbG1zLmxhdFtzZWxlY3RQb2ludC5pbmRleF0uaW5uZXJIVE1MID0gcGFyYW1zLnBvc2l0aW9uLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxhdElucHV0ICYmICh0aGlzLl9lbG1zLmxhdElucHV0W3NlbGVjdFBvaW50LmluZGV4XS52YWx1ZSA9IHBhcmFtcy5wb3NpdGlvbi5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgdGhpcy5fZWxtcy5hbHQgJiYgKHRoaXMuX2VsbXMuYWx0W3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSBwYXJhbXMucG9zaXRpb24uYWx0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMuYWx0SW5wdXQgJiYgKHRoaXMuX2VsbXMuYWx0SW5wdXRbc2VsZWN0UG9pbnQuaW5kZXhdLnZhbHVlID0gcGFyYW1zLnBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBzZWxlY3RQb2ludC5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICAgICAgICBwYXJhbXMucG9zaXRpb24uYWx0XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IF9sYXN0SGVpZ2h0TW9kZSA9IHRoaXMuX2xhc3RIZWlnaHRNb2RlXHJcbiAgICAgICAgdGhpcy5fbGFzdEhlaWdodE1vZGUgPSBudWxsXHJcbiAgICAgICAgaWYgKF9sYXN0SGVpZ2h0TW9kZSAmJiBfbGFzdEhlaWdodE1vZGUgIT09IDAgJiYgX2xhc3RIZWlnaHRNb2RlICE9PSAnMCcpIHtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IF9sYXN0SGVpZ2h0TW9kZVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcblxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuX25vZGVFZGl0Q2FsbGJhY2sgPSBudWxsXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMucmVuZXdQb3NpdGlvbnModGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICB0aGlzLl9ub2RlRWRpdENhbGxiYWNrICYmIHRoaXMuX25vZGVFZGl0Q2FsbGJhY2sodGhpcy5vcHRpb25zLnBvc2l0aW9ucywgdGhpcy5sZW5ndGhCeU1ldGVyKVxyXG4gICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICB9LCBmYWxzZSlcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2lzTm9kZUVkaXQgPSB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU5vZGVFZGl0KCkge1xyXG4gICAgdGhpcy5faXNOb2RlRWRpdCA9IGZhbHNlXHJcbiAgICBsZXQgX2xhc3RIZWlnaHRNb2RlID0gdGhpcy5fbGFzdEhlaWdodE1vZGVcclxuICAgIHRoaXMuX2xhc3RIZWlnaHRNb2RlID0gbnVsbFxyXG4gICAgaWYgKF9sYXN0SGVpZ2h0TW9kZSAmJiBfbGFzdEhlaWdodE1vZGUgIT09IDAgJiYgX2xhc3RIZWlnaHRNb2RlICE9PSAnMCcpIHtcclxuICAgICAgdGhpcy5oZWlnaHRNb2RlID0gX2xhc3RIZWlnaHRNb2RlXHJcbiAgICB9XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QgJiYgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLl9ub2RlRWRpdENhbGxiYWNrID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwucmVtb3ZlKClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jbG9zZU5vZGVFZGl0KClcclxuICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn54K55Ye76byg5qCH5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMubGFiZWwgJiZcclxuICAgICAgICAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgIGByZ2JhKDI1NSwyNTUsMjU1LDAuOSlgXHJcbiAgICAgICAgKSlcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRpb25zLnBvc2l0aW9ucykpXHJcbiAgICAgIC8vIGxldCBwb3NpdGlvbnMyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwb3NpdGlvbnMpKVxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uczIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBsZXQgaGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHBvc2l0aW9uczJbaV0ubG5nLCBwb3NpdGlvbnMyW2ldLmxhdCkpXHJcbiAgICAgIC8vICAgcG9zaXRpb25zMltpXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAvLyAgICAgcG9zaXRpb25zMltpXS5sbmcsXHJcbiAgICAgIC8vICAgICBwb3NpdGlvbnMyW2ldLmxhdCxcclxuICAgICAgLy8gICAgIE51bWJlcigocG9zaXRpb25zMltpXS5hbHQgKyBOdW1iZXIoaGVpZ2h0KSkudG9GaXhlZCgyKSlcclxuICAgICAgLy8gICApXHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zXVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcG9zaXRpb25zW2ldID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICBwb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgcG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgIHBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNlbnRlciA9IHBvc2l0aW9uc1tNYXRoLmZsb29yKHBvc2l0aW9ucy5sZW5ndGggLyAyKV1cclxuICAgICAgbGV0IGRpc3Bhcml0eSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY2VudGVyLnggLSBwb3NpdGlvbnNbaV0ueFxyXG4gICAgICAgIGRpc3Bhcml0eS5wdXNoKHtcclxuICAgICAgICAgIHg6IGNlbnRlci54IC0gcG9zaXRpb25zW2ldLngsXHJcbiAgICAgICAgICB5OiBjZW50ZXIueSAtIHBvc2l0aW9uc1tpXS55LFxyXG4gICAgICAgICAgejogY2VudGVyLnogLSBwb3NpdGlvbnNbaV0uelxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBuZXdQID0ge1xyXG4gICAgICAgICAgICB4OiBjYXJ0ZXNpYW4ueCAtIGRpc3Bhcml0eVtpXS54LFxyXG4gICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBsZXQgcG9zODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gICAgICAgICAgLy8gICBuZXdQLFxyXG4gICAgICAgICAgLy8gICB0aGlzLnNkay52aWV3ZXJcclxuICAgICAgICAgIC8vIClcclxuICAgICAgICAgIC8vIGxldCBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMocG9zODQubG5nLCBwb3M4NC5sYXQpKVxyXG4gICAgICAgICAgLy8gcG9zODQuYWx0ID0gTnVtYmVyKChwb3M4NC5hbHQgKyBOdW1iZXIoaGVpZ2h0KSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgIC8vIG5ld1AgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIC8vICAgcG9zODQubG5nLFxyXG4gICAgICAgICAgLy8gICBwb3M4NC5sYXQsXHJcbiAgICAgICAgICAvLyAgIHBvczg0LmFsdFxyXG4gICAgICAgICAgLy8gKVxyXG4gICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gobmV3UClcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gICAgICAgICAgbmV3cG9zaXRpb25zWzBdLFxyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyXHJcbiAgICAgICAgKVxyXG4gICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbcG9zaXRpb244NC5sbmcsIHBvc2l0aW9uODQubGF0LCBwb3NpdGlvbjg0LmFsdF1cclxuICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICBsbmc6IHBvc2l0aW9uODQubG5nLFxyXG4gICAgICAgICAgbGF0OiBwb3NpdGlvbjg0LmxhdCxcclxuICAgICAgICAgIGFsdDogcG9zaXRpb244NC5hbHRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG5ld3Bvc2l0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgeDogY2FydGVzaWFuLnggLSBkaXNwYXJpdHlbaV0ueCxcclxuICAgICAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0uelxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uc0xuZ0xhdCA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQobmV3cG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAgICAgcG9zaXRpb25zTG5nTGF0LnB1c2gocG9zaXRpb24pXHJcblxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sbmcgJiYgKHRoaXMuX2VsbXMubG5nW2ldLmlubmVySFRNTCA9IHBvc2l0aW9uLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sbmdJbnB1dCAmJiAodGhpcy5fZWxtcy5sbmdJbnB1dFtpXS52YWx1ZSA9IHBvc2l0aW9uLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYXQgJiYgKHRoaXMuX2VsbXMubGF0W2ldLmlubmVySFRNTCA9IHBvc2l0aW9uLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYXRJbnB1dCAmJiAodGhpcy5fZWxtcy5sYXRJbnB1dFtpXS52YWx1ZSA9IHBvc2l0aW9uLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5hbHQgJiYgKHRoaXMuX2VsbXMuYWx0W2ldLmlubmVySFRNTCA9IHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5hbHRJbnB1dCAmJiAodGhpcy5fZWxtcy5hbHRJbnB1dFtpXS52YWx1ZSA9IHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IHBvc2l0aW9uc0xuZ0xhdFxyXG4gICAgICAgIHRoaXMucHJldmlvdXMucG9zaXRpb25zID0gcG9zaXRpb25zTG5nTGF0XHJcblxyXG4gICAgICAgIC8vIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9uc0xuZ0xhdCA9IHBvc2l0aW9uc0xuZ0xhdFxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zLCAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2soKVxyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKFxyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLnJlbmV3UG9seWdvbihmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHJldHVybiBuZXdwb3NpdGlvbnNcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMubGFiZWwgfHwgIXRoaXMubGFiZWwuZW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgIGByZ2JhKDI1NSwyNTUsMjU1LDEpYFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhpcy5yZW5ld1Bvc2l0aW9ucyh0aGlzLm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgIClcclxuICAgICAgdGhpcy5yZW5ld1BvbHlnb24oZnJvbURlZ3JlZXNBcnJheSlcclxuXHJcbiAgICAgIGxldCBoZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgIGlmICh0aGlzLl9pc05vZGVFZGl0KSB7XHJcbiAgICAgICAgaGVpZ2h0TW9kZSA9IDBcclxuICAgICAgfVxyXG4gICAgICBzd2l0Y2ggKGhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LFxyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5WzJdXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICAgIGFsdDogZnJvbURlZ3JlZXNBcnJheVsyXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgIGxhdDogdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsXHJcbiAgICAgICAgICAgIGFsdDogZnJvbURlZ3JlZXNBcnJheVsyXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBwb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZ1xyXG4gIH1cclxuXHJcbiAgb3BlblBvc2l0aW9uRWRpdGluZyhjZCkge1xyXG4gICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBnZXQgbGVuZ3RoQ2hhbmdlQ2FsbEJhY2soKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGVuZ3RoQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBsZW5ndGhDaGFuZ2VDYWxsQmFjayhjZCkge1xyXG4gICAgdGhpcy5fbGVuZ3RoQ2hhbmdlQ2FsbEJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiAnJywgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDAgPyBvcHRpb25zLnggOiAxMFxyXG4gICAgb3B0aW9ucy55ID0gb3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCA/IG9wdGlvbnMueSA6IDEwXHJcblxyXG4gICAgbGV0IHBvaW50cyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9pbnRzLnB1c2goW1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgIF0pXHJcbiAgICB9XHJcbiAgICBsZXQgbGluZSA9IHR1cmYubGluZVN0cmluZyhwb2ludHMpXHJcbiAgICBsZXQgbGVuZ3RoID0gdHVyZi5sZW5ndGgobGluZSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pXHJcbiAgICBsZXQgc2xpY2VkID0gdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lLCAwLCBsZW5ndGggLyAyLCB7XHJcbiAgICAgIHVuaXRzOiAna2lsb21ldGVycydcclxuICAgIH0pXHJcblxyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIC4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1cclxuICAgIClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIocGVyY2VudGFnZSA9PiB7XHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChcclxuICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8XHJcbiAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKFxyXG4gICAgICAgICAgc2l0ZUluZm9Qb3NpdGlvblxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAod2lucG9zKSB7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS5sZWZ0ID0gKHdpbnBvcy54ICsgb3B0aW9ucy54KS50b0ZpeGVkKDApICsgJ3B4J1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4J1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgUG9seWxpbmVPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBcEJBO0FBQUE7QUFrQkE7QUFHQTtBQUNBO0FBQ0E7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQXNEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQU9BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRIQTtBQUFBO0FBQUE7QUF5SEE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFsdUJBO0FBQUE7QUFBQTtBQUFBO0FBb3VCQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6REE7QUFBQTtBQUFBO0FBQUE7QUE0REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBeUJBO0FBQUE7QUF0QkE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQTFHQTtBQUFBO0FBQUE7QUFBQTtBQTZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFnT0E7QUFDQTtBQUFBO0FBM05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF6N0RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQWVBO0FBQUE7QUFaQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBSEE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF0REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFrMERBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/PolylineObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RadarScan/_element.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/RadarScan/_element.js ***! - \********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u626B\\u63CF\\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u626B\\u63CF\\u534A\\u5F84\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u626B\\u63CF\\u901F\\u5EA6\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUmFkYXJTY2FuL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1JhZGFyU2Nhbi9fZWxlbWVudC5qcz9mYjY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSwgbGFiZWxTdHlsZUVsbTEsIGxhYmVsU3R5bGVFbG0yIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9lbG1faHRtbCdcclxuXHJcbmZ1bmN0aW9uIGh0bWwodGhhdCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5omr5o+P6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwibG5nXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5omr5o+P5Y2K5b6EPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yIGlucHV0LXJhZGl1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgZGF0YS1taW49XCIwLjFcIiBtYXg9XCI5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1yYWRpdXMtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCA2MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1yYWRpdXMtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6rOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTkwXCIgbWF4PVwiOTBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7miavmj4/pgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBAbW9kZWw9XCJzcGVlZFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJyYWRhci1zY2FuLWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBNkRBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/RadarScan/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RadarScan/index.js": -/*!*****************************************!*\ - !*** ./src/Obj/Base/RadarScan/index.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/RadarScan/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _positionEditingCallback = /*#__PURE__*/new WeakMap();\nvar RadarScan = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 雷达扫描\r\n * @param sdk \r\n * @param options {object} 圆属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.lng {number} 经度\r\n * @param options.lat {number} 维度\r\n * @param options.color=#ff0000 {string} 颜色\r\n * @param options.radius=10 {number} 半径\r\n * @param options.speed=20 {number} 速度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function RadarScan(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, RadarScan);\n _this2 = _callSuper(this, RadarScan, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _positionEditingCallback, null);\n _this2.options.lng = options.lng;\n _this2.options.lat = options.lat;\n _this2.options.color = options.color || '#ff0000';\n _this2.options.radius = options.radius || 10;\n if (_this2.options.radius > 999999) {\n _this2.options.radius = 999999;\n }\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 20;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this2.sdk);\n _this2.operate = {};\n options.label = options.label || {};\n _this2._elms = {};\n _this2.options.label = {\n show: options.label.show || false,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n // if(this.sdk.viewer.scene.mode === 2) {\n // RadarScan.createBy2D(this)\n // }\n // else {\n // RadarScan.create(this)\n // }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n RadarScan.create(_this2);\n // this.sdk.addIncetance(this.options.id, {\n // type: 'CircleDiffuse',\n // options: options\n // })\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(RadarScan, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(RadarScan, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n this.entity.show = this.options.show;\n if (this.options.label.show && this.label) {\n this.label.show = this.options.show;\n }\n } else {\n this.entity.show = false;\n if (this.options.label.show && this.label) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this3 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.operate.positionEditing = status;\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_19__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n this.lastOptions = {\n lng: this.options.lng,\n lat: this.options.lat\n };\n this.event.mouse_move(function (movement, cartesian) {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.lng = positions.lng;\n _this3.lat = positions.lat;\n _this3.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.lng = positions.lng;\n _this3.lat = positions.lat;\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n if (_classPrivateFieldGet(_positionEditingCallback, _this3)) {\n _classPrivateFieldGet(_positionEditingCallback, _this3).call(_this3);\n _classPrivateFieldSet(_positionEditingCallback, _this3, null);\n }\n _this3.lastOptions = undefined;\n _this3.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this3.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.positionEditing = false;\n } else {\n var positions = _this3.cartesian3Towgs84(cartesian, _this3.sdk.viewer);\n _this3.lng = positions.lng;\n _this3.lat = positions.lat;\n _this3.event.mouse_move(function () {});\n _this3.event.mouse_left(function () {});\n _this3.event.mouse_right(function () {});\n _this3.event.gesture_pinck_start(function () {});\n _this3.event.gesture_pinck_end(function () {});\n _this3.lastOptions = undefined;\n _this3.positionEditing = false;\n }\n });\n });\n } else {\n setTimeout(function () {\n _this3.picking = true;\n }, 500);\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n if (this.lastOptions) {\n this.lng = this.lastOptions.lng;\n this.lat = this.lastOptions.lat;\n }\n this.lastOptions = undefined;\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n _classPrivateFieldSet(_positionEditingCallback, this, cd);\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n this.options.lng = v;\n this.label.position = [v, this.lat];\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n this.options.lat = v;\n this.label.position = [this.lng, v];\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"radius\",\n get: function get() {\n return this.options.radius;\n },\n set: function set(v) {\n var radius = Number(v.toFixed(2));\n if (radius > 999999) {\n radius = 999999;\n }\n if (radius < 0.1) {\n radius = 0.1;\n }\n this.options.radius = radius;\n\n // let pos = this.createCircle({lng: this.options.lng, lat:this.options.lat}, this.options.radius)\n // this.entity2.polygon.hierarchy = new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(pos))\n // this.sdk.viewer.scene.primitives.update(this.entity2)\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n var unitDataLegpElm = this._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n if (unitDataLegpElm.value === '千米') {\n radius = Number((radius / 1000).toFixed(5));\n }\n }\n this._elms.radius && this._elms.radius.forEach(function (item) {\n item.value = radius;\n });\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n this.changeMaterial();\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.color = v;\n this.changeMaterial();\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"getSdk\"])().sdkD;\n this.options.label.show = v;\n if (this.show && (!this.showView || this.showView == 3 || !sdkD)) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_18__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this5.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this5.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n height,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context.next = 16;\n break;\n }\n _context.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context.next = 27;\n break;\n case 23:\n _context.next = 25;\n return this.getClampToHeight({\n lng: this.options.lng,\n lat: this.options.lat\n });\n case 25:\n height = _context.sent;\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.radius * 6 + height),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n duration: 1\n });\n case 27:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }() // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2(state) {\n var _this9 = this;\n var _this, contentElm, tabsElm, colorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, inputRadiusElm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\");\n case 7:\n this._DialogObject = _context2.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' radar-scan';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_10__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('radar-scan-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n inputRadiusElm = this._DialogObject._element.content.getElementsByClassName('input-radius')[0].getElementsByTagName('input')[0];\n inputRadiusElm.value = this.options.radius;\n this._elms.radius = [inputRadiusElm];\n inputRadiusElm.addEventListener('input', function (e) {\n var unitDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n var unit = unitDataLegpElm.value;\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) / (unit === '米' ? 1 : 1000) && value >= Number(e.target.min)) {\n _this9.radius = value * (unit === '米' ? 1 : 1000);\n }\n }\n }\n });\n inputRadiusElm.addEventListener('blur', function (e) {\n var unitDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n var unit = unitDataLegpElm.value;\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.target.max && value > Number(e.target.max) / (unit === '米' ? 1 : 1000)) {\n value = Number(e.target.max) / (unit === '米' ? 1 : 1000);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n _this9.radius = Number((value * (unit === '米' ? 1 : 1000)).toFixed(2));\n }\n });\n setTimeout(function () {\n _this9.attributeLink = _this9.options.attribute.link.content;\n _this9.attributeVr = _this9.options.attribute.vr.content;\n _this9.ISCSelect && _this9.ISCSelect();\n _this9.goodsSelect && _this9.goodsSelect();\n _this9.cameraSelect && _this9.cameraSelect();\n var tagData = _this9.attributeSelect;\n var attributeElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = attributeElm.getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this9.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this9.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '米',\n value: '米'\n }, {\n name: '千米',\n value: '千米'\n }];\n var unitDataElm = _this9._DialogObject._element.content.getElementsByClassName('input-radius-unit-box')[0];\n if (unitDataElm) {\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(unitDataElm, \".input-radius-unit\");\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = unitData[0].value;\n unitDataLegpElm.addEventListener('input', function () {\n var radiusElmBox = _this9._DialogObject._element.content.getElementsByClassName('input-radius')[0];\n var unitElm = radiusElmBox.getElementsByClassName('unit')[0];\n var radiusElm = radiusElmBox.getElementsByClassName('input')[0];\n switch (unitDataLegpElm.value) {\n case '米':\n if (unitElm.innerHTML === 'km') {\n unitElm.innerHTML = 'm';\n radiusElm.value = Number((radiusElm.value * 1000).toFixed(2));\n }\n break;\n case '千米':\n if (unitElm.innerHTML === 'm') {\n unitElm.innerHTML = 'km';\n radiusElm.value = Number((radiusElm.value / 1000).toFixed(5));\n }\n break;\n default:\n break;\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_18__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_17__[\"legp\"])(_this9._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this9.labelFontFamily].value;\n for (var _i2 = 0; _i2 < fontData.length; _i2++) {\n if (fontData[_i2].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i2].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < fontData.length; _i3++) {\n if (fontData[_i3].value === fontDataLegpElm.value) {\n _this9.labelFontFamily = fontData[_i3].key;\n break;\n }\n }\n });\n _this9._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n case 32:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.color = this.originalOptions.color;\n this.radius = this.originalOptions.radius;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.label && this.label.remove();\n this.entity && this.sdk.viewer.entities.remove(this.entity);\n this.entity2 && this.sdk.viewer.entities.remove(this.entity2);\n this.entity = null;\n this.entity2 = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n _context3.next = 10;\n return this.sdk.removeIncetance(this.options.id);\n case 10:\n _context3.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"changeMaterial\",\n value: function changeMaterial() {\n // 提取颜色透明度\n function extractRGBA(rgbaString) {\n if (/^#/.test(rgbaString)) {\n // 去除#号\n var _color = rgbaString.replace(\"#\", \"\");\n\n // 分割成红、绿、蓝三部分的16进制字符串\n var red = parseInt(_color.substring(0, 2), 16);\n var green = parseInt(_color.substring(2, 4), 16);\n var blue = parseInt(_color.substring(4, 6), 16);\n var opacity = parseInt(_color.substring(6, 8), 16);\n if (!opacity && opacity !== 0) {\n opacity = 1;\n } else {\n opacity = opacity / 255;\n }\n rgbaString = \"rgba(\".concat(red, \",\").concat(green, \",\").concat(blue, \",\").concat(opacity, \")\");\n }\n var match = rgbaString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\n return match ? [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10), match[4] ? parseFloat(match[4]) : 1] : null;\n }\n var array = extractRGBA(this.options.color);\n var color = \"rgba(\".concat(array[0], \",\").concat(array[1], \",\").concat(array[2], \",1)\");\n this.entity && (this.entity.ellipse.material = new Cesium.RadarScanMaterialProperty({\n color: Cesium.Color.fromCssColorString(color),\n transparency: array[3],\n speed: this.options.speed\n }));\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this10 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this10.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n // 提取颜色透明度\n function extractRGBA(rgbaString) {\n if (/^#/.test(rgbaString)) {\n // 去除#号\n var _color2 = rgbaString.replace(\"#\", \"\");\n\n // 分割成红、绿、蓝三部分的16进制字符串\n var red = parseInt(_color2.substring(0, 2), 16);\n var green = parseInt(_color2.substring(2, 4), 16);\n var blue = parseInt(_color2.substring(4, 6), 16);\n var opacity = parseInt(_color2.substring(6, 8), 16);\n if (!opacity && opacity !== 0) {\n opacity = 1;\n } else {\n opacity = opacity / 255;\n }\n rgbaString = \"rgba(\".concat(red, \",\").concat(green, \",\").concat(blue, \",\").concat(opacity, \")\");\n }\n var match = rgbaString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\n return match ? [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10), match[4] ? parseFloat(match[4]) : 1] : null;\n }\n var array = extractRGBA(that.options.color);\n var color = \"rgba(\".concat(array[0], \",\").concat(array[1], \",\").concat(array[2], \",1)\");\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n position: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegrees(that.options.lng, that.options.lat);\n }, false),\n name: \"雷达扫描\",\n ellipse: {\n semiMinorAxis: new Cesium.CallbackProperty(function () {\n return that.options.radius;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function () {\n return that.options.radius;\n }, false),\n material: new Cesium.RadarScanMaterialProperty({\n color: Cesium.Color.fromCssColorString(color),\n transparency: array[3],\n speed: that.options.speed\n }),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n if (that.sdk.viewer._element.className === 'cesium-viewer 2d') {\n that.entity.ellipse.height = 1;\n }\n RadarScan.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee4(that) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return that.getClampToHeight({\n lng: that.options.lng,\n lat: that.options.lat\n });\n case 2:\n height = _context4.sent;\n // if (!that.options.label.position) {\n // that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height }\n // }\n that.options.label.position = {\n lng: that.options.lng,\n lat: that.options.lat,\n alt: height\n };\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: true\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"createBy2D\",\n value: function createBy2D(that) {\n that.entity = new Cesium.EntityCollection();\n var heading = 0;\n var arr = calculatePane(that.options, that.options.radius, heading);\n var _time = new Date().getTime();\n\n // 每一帧刷新时调用\n that.viewer.clock.onTick.addEventListener(function () {\n var tempTime = new Date().getTime();\n var everyTime = 0;\n var speed = (tempTime - _time) * everyTime;\n _time = tempTime;\n heading += speed;\n arr = calculatePane(that.options, that.options.radius, heading);\n });\n var outline = that.sdk.viewer.entities.add({\n show: that.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n var fromDegreesArray = that.createCircle({\n lng: that.options.lng,\n lat: that.options.lat\n }, that.options.radius);\n return Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n }, false),\n width: 2,\n material: Cesium.Color.fromCssColorString(that.options.color),\n clampToGround: true\n }\n });\n var dynamic = that.sdk.viewer.entities.add({\n show: that.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArray(arr);\n }, false),\n width: 2,\n material: Cesium.Color.fromCssColorString(that.options.color),\n clampToGround: true\n }\n });\n that.entity.add(outline);\n that.entity.add(dynamic);\n that.sdk.viewer.entities.add(that.entity);\n RadarScan.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_16__[\"syncData\"])(that.sdk, that.options.id);\n\n // 计算平面扫描范围\n function calculatePane(position, radius, heading) {\n var x1 = position.lng,\n y1 = position.lat,\n height = 0;\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(x1, y1, height));\n var rx = radius * Math.cos(heading * Math.PI / 180.0);\n var ry = radius * Math.sin(heading * Math.PI / 180.0);\n var translation = Cesium.Cartesian3.fromElements(rx, ry, height);\n var d = Cesium.Matrix4.multiplyByPoint(m, translation, new Cesium.Cartesian3());\n var c = Cesium.Cartographic.fromCartesian(d);\n var x2 = Cesium.Math.toDegrees(c.longitude);\n var y2 = Cesium.Math.toDegrees(c.latitude);\n return [x1, y1, x2, y2];\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (RadarScan);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUmFkYXJTY2FuL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1JhZGFyU2Nhbi9pbmRleC5qcz83NzZkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tIFwiLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnNcIjtcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgRXZlbnRCaW5kaW5nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSwgZ2V0U2RrIGFzIGdldDJEU2RrIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIFJhZGFyU2NhbiBleHRlbmRzIEJhc2Uge1xyXG4gICNfcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOmbt+i+vuaJq+aPj1xyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5ZyG5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGF0IHtudW1iZXJ9IOe7tOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPSNmZjAwMDAge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucmFkaXVzPTEwIHtudW1iZXJ9IOWNiuW+hFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNwZWVkPTIwIHtudW1iZXJ9IOmAn+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsIHtvYmplY3R9IOagh+etvuWvueixoVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLmxuZyA9IG9wdGlvbnMubG5nXHJcbiAgICB0aGlzLm9wdGlvbnMubGF0ID0gb3B0aW9ucy5sYXRcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgJyNmZjAwMDAnXHJcbiAgICB0aGlzLm9wdGlvbnMucmFkaXVzID0gb3B0aW9ucy5yYWRpdXMgfHwgMTBcclxuICAgIGlmKHRoaXMub3B0aW9ucy5yYWRpdXMgPiA5OTk5OTkpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJhZGl1cyA9IDk5OTk5OVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gKG9wdGlvbnMuc3BlZWQgfHwgb3B0aW9ucy5zcGVlZCA9PT0gMCkgPyBvcHRpb25zLnNwZWVkIDogMjBcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMub3BlcmF0ZSA9IHt9XHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZm9udFNpemUgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6IChvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiAob3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwKSA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIC8vIGlmKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAvLyAgIFJhZGFyU2Nhbi5jcmVhdGVCeTJEKHRoaXMpXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgUmFkYXJTY2FuLmNyZWF0ZSh0aGlzKVxyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIFJhZGFyU2Nhbi5jcmVhdGUodGhpcylcclxuICAgIC8vIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHtcclxuICAgIC8vICAgdHlwZTogJ0NpcmNsZURpZmZ1c2UnLFxyXG4gICAgLy8gICBvcHRpb25zOiBvcHRpb25zXHJcbiAgICAvLyB9KVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICAvLyDmj5Dlj5bpopzoibLpgI/mmI7luqZcclxuICAgIGZ1bmN0aW9uIGV4dHJhY3RSR0JBKHJnYmFTdHJpbmcpIHtcclxuICAgICAgaWYgKC9eIy8udGVzdChyZ2JhU3RyaW5nKSkge1xyXG4gICAgICAgIC8vIOWOu+mZpCPlj7dcclxuICAgICAgICBsZXQgY29sb3IgPSByZ2JhU3RyaW5nLnJlcGxhY2UoXCIjXCIsIFwiXCIpO1xyXG5cclxuICAgICAgICAvLyDliIblibLmiJDnuqLjgIHnu7/jgIHok53kuInpg6jliIbnmoQxNui/m+WItuWtl+espuS4slxyXG4gICAgICAgIGxldCByZWQgPSBwYXJzZUludChjb2xvci5zdWJzdHJpbmcoMCwgMiksIDE2KTtcclxuICAgICAgICBsZXQgZ3JlZW4gPSBwYXJzZUludChjb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgICAgICBsZXQgYmx1ZSA9IHBhcnNlSW50KGNvbG9yLnN1YnN0cmluZyg0LCA2KSwgMTYpO1xyXG4gICAgICAgIGxldCBvcGFjaXR5ID0gcGFyc2VJbnQoY29sb3Iuc3Vic3RyaW5nKDYsIDgpLCAxNik7XHJcbiAgICAgICAgaWYgKCFvcGFjaXR5ICYmIG9wYWNpdHkgIT09IDApIHtcclxuICAgICAgICAgIG9wYWNpdHkgPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgb3BhY2l0eSA9IG9wYWNpdHkgLyAyNTVcclxuICAgICAgICB9XHJcbiAgICAgICAgcmdiYVN0cmluZyA9IGByZ2JhKCR7cmVkfSwke2dyZWVufSwke2JsdWV9LCR7b3BhY2l0eX0pYFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gcmdiYVN0cmluZy5tYXRjaCgvXnJnYmE/XFwoKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKSg/OixcXHMqKFxcZCsoPzpcXC5cXGQrKT8pKT9cXCkkLyk7XHJcbiAgICAgIHJldHVybiBtYXRjaCA/IFtwYXJzZUludChtYXRjaFsxXSwgMTApLCBwYXJzZUludChtYXRjaFsyXSwgMTApLCBwYXJzZUludChtYXRjaFszXSwgMTApLCBtYXRjaFs0XSA/IHBhcnNlRmxvYXQobWF0Y2hbNF0pIDogMV0gOiBudWxsXHJcbiAgICB9XHJcbiAgICBsZXQgYXJyYXkgPSBleHRyYWN0UkdCQSh0aGF0Lm9wdGlvbnMuY29sb3IpXHJcbiAgICBsZXQgY29sb3IgPSBgcmdiYSgke2FycmF5WzBdfSwke2FycmF5WzFdfSwke2FycmF5WzJdfSwxKWBcclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmxuZywgdGhhdC5vcHRpb25zLmxhdClcclxuICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICBuYW1lOiBcIumbt+i+vuaJq+aPj1wiLFxyXG4gICAgICBlbGxpcHNlOiB7XHJcbiAgICAgICAgc2VtaU1pbm9yQXhpczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiB0aGF0Lm9wdGlvbnMucmFkaXVzXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHNlbWlNYWpvckF4aXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5vcHRpb25zLnJhZGl1c1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5SYWRhclNjYW5NYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKSxcclxuICAgICAgICAgIHRyYW5zcGFyZW5jeTogYXJyYXlbM10sXHJcbiAgICAgICAgICBzcGVlZDogdGhhdC5vcHRpb25zLnNwZWVkXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgIGlmICh0aGF0LnNkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lID09PSAnY2VzaXVtLXZpZXdlciAyZCcpIHtcclxuICAgICAgdGhhdC5lbnRpdHkuZWxsaXBzZS5oZWlnaHQgPSAxXHJcbiAgICB9XHJcbiAgICBSYWRhclNjYW4uY3JlYXRlTGFiZWwodGhhdClcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZih0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICAgXHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVMYWJlbCh0aGF0KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiB0aGF0Lm9wdGlvbnMubG5nLCBsYXQ6IHRoYXQub3B0aW9ucy5sYXQgfSlcclxuICAgIC8vIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMubG5nLCBsYXQ6IHRoYXQub3B0aW9ucy5sYXQsIGFsdDogaGVpZ2h0IH1cclxuICAgIC8vIH1cclxuICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMubG5nLCBsYXQ6IHRoYXQub3B0aW9ucy5sYXQsIGFsdDogaGVpZ2h0IH1cclxuICAgIC8vIOagh+etvlxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCwgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdF0sXHJcbiAgICAgIHRleHQ6IHRoYXQub3B0aW9ucy5uYW1lLFxyXG4gICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSxcclxuICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgcGl4ZWxPZmZzZXQ6IHRoYXQub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICBsaW5lQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGF0Lm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICBuZWFyOiB0aGF0Lm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMubGFiZWwuZmFyLFxyXG4gICAgICBncm91bmQ6IHRydWVcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlQnkyRCh0aGF0KSB7XHJcbiAgICB0aGF0LmVudGl0eSA9IG5ldyBDZXNpdW0uRW50aXR5Q29sbGVjdGlvbigpO1xyXG4gICAgbGV0IGhlYWRpbmcgPSAwO1xyXG4gICAgbGV0IGFyciA9IGNhbGN1bGF0ZVBhbmUodGhhdC5vcHRpb25zLCB0aGF0Lm9wdGlvbnMucmFkaXVzLCBoZWFkaW5nKTtcclxuICAgIGxldCBfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIC8vIOavj+S4gOW4p+WIt+aWsOaXtuiwg+eUqFxyXG4gICAgdGhhdC52aWV3ZXIuY2xvY2sub25UaWNrLmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xyXG4gICAgICBsZXQgdGVtcFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICBsZXQgZXZlcnlUaW1lID0gMFxyXG4gICAgICBsZXQgc3BlZWQgPSAodGVtcFRpbWUgLSBfdGltZSkgKiBldmVyeVRpbWVcclxuICAgICAgX3RpbWUgPSB0ZW1wVGltZVxyXG4gICAgICBoZWFkaW5nICs9IHNwZWVkO1xyXG4gICAgICBhcnIgPSBjYWxjdWxhdGVQYW5lKHRoYXQub3B0aW9ucywgdGhhdC5vcHRpb25zLnJhZGl1cywgaGVhZGluZyk7XHJcbiAgICB9KTtcclxuICAgIGxldCBvdXRsaW5lID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhhdC5jcmVhdGVDaXJjbGUoeyBsbmc6IHRoYXQub3B0aW9ucy5sbmcsIGxhdDogdGhhdC5vcHRpb25zLmxhdCB9LCB0aGF0Lm9wdGlvbnMucmFkaXVzKVxyXG4gICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSk7XHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvciksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICBsZXQgZHluYW1pYyA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShhcnIpO1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICB3aWR0aDogMixcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhhdC5lbnRpdHkuYWRkKG91dGxpbmUpXHJcbiAgICB0aGF0LmVudGl0eS5hZGQoZHluYW1pYylcclxuICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQodGhhdC5lbnRpdHkpXHJcbiAgICBSYWRhclNjYW4uY3JlYXRlTGFiZWwodGhhdClcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcblxyXG4gICAgLy8g6K6h566X5bmz6Z2i5omr5o+P6IyD5Zu0XHJcbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVQYW5lKHBvc2l0aW9uLCByYWRpdXMsIGhlYWRpbmcpIHtcclxuICAgICAgbGV0IHgxID0gcG9zaXRpb24ubG5nLFxyXG4gICAgICAgIHkxID0gcG9zaXRpb24ubGF0LFxyXG4gICAgICAgIGhlaWdodCA9IDA7XHJcbiAgICAgIGxldCBtID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoeDEsIHkxLCBoZWlnaHQpXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCByeCA9IHJhZGl1cyAqIE1hdGguY29zKChoZWFkaW5nICogTWF0aC5QSSkgLyAxODAuMCk7XHJcbiAgICAgIGxldCByeSA9IHJhZGl1cyAqIE1hdGguc2luKChoZWFkaW5nICogTWF0aC5QSSkgLyAxODAuMCk7XHJcbiAgICAgIGxldCB0cmFuc2xhdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21FbGVtZW50cyhyeCwgcnksIGhlaWdodCk7XHJcbiAgICAgIGxldCBkID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIG0sXHJcbiAgICAgICAgdHJhbnNsYXRpb24sXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgKTtcclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oZCk7XHJcbiAgICAgIGxldCB4MiA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjLmxvbmdpdHVkZSk7XHJcbiAgICAgIGxldCB5MiA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjLmxhdGl0dWRlKTtcclxuICAgICAgcmV0dXJuIFt4MSwgeTEsIHgyLCB5Ml07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICBsZXQgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgICBpZiAoIXRoaXMuaXNTaG93VmlldyB8fCAhc2RrRCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsLnNob3cgJiYgdGhpcy5sYWJlbCkge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ICYmIHRoaXMubGFiZWwpIHtcclxuICAgICAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHRoaXMuaXNTaG93VmlldyA9IGZhbHNlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqQGRlc2Mg5omT5byA5bmz56e75Yqf6IO9XHJcbiAqXHJcbiAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICogQHBhcmFtIHN0YXR1cyB7Ym9vbGVhbn1cclxuICpcclxuICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjkpYCkpXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMubGFzdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgbG5nOiB0aGlzLm9wdGlvbnMubG5nLFxyXG4gICAgICAgIGxhdDogdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHRoaXMubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgIGlmICh0aGlzLiNfcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuI19wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgICB0aGlzLiNfcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdE9wdGlvbnMgPSB1bmRlZmluZWRcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAgICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb25zLmxhdFxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMubGFzdE9wdGlvbnMgPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gICAgICB9LCA1MDApO1xyXG4gICAgICBpZih0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwuZW50aXR5ICYmIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZClcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMubGFiZWwuZW50aXR5LmJpbGxib2FyZC5jb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYHJnYmEoMjU1LDI1NSwyNTUsMSlgKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIGlmICh0aGlzLmxhc3RPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5sbmcgPSB0aGlzLmxhc3RPcHRpb25zLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gdGhpcy5sYXN0T3B0aW9ucy5sYXRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RPcHRpb25zID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy4jX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gY2RcclxuICB9XHJcblxyXG4gIGdldCBsbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxuZ1xyXG4gIH1cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3YsIHRoaXMubGF0XVxyXG4gICAgdGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0IGxhdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGF0XHJcbiAgfVxyXG4gIHNldCBsYXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhdCA9IHZcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5sbmcsIHZdXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJhZGl1cygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmFkaXVzXHJcbiAgfVxyXG4gIHNldCByYWRpdXModikge1xyXG4gICAgbGV0IHJhZGl1cyA9IE51bWJlcih2LnRvRml4ZWQoMikpXHJcbiAgICBpZihyYWRpdXMgPiA5OTk5OTkpIHtcclxuICAgICAgcmFkaXVzID0gOTk5OTk5XHJcbiAgICB9XHJcbiAgICBpZihyYWRpdXMgPCAwLjEpIHtcclxuICAgICAgcmFkaXVzID0gMC4xXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMucmFkaXVzID0gcmFkaXVzXHJcbiAgICBcclxuICAgIC8vIGxldCBwb3MgPSB0aGlzLmNyZWF0ZUNpcmNsZSh7bG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6dGhpcy5vcHRpb25zLmxhdH0sIHRoaXMub3B0aW9ucy5yYWRpdXMpXHJcbiAgICAvLyB0aGlzLmVudGl0eTIucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShwb3MpKVxyXG4gICAgLy8gdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMudXBkYXRlKHRoaXMuZW50aXR5MilcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1yYWRpdXMtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgIGlmICh1bml0RGF0YUxlZ3BFbG0udmFsdWUgPT09ICfljYPnsbMnKSB7XHJcbiAgICAgICAgcmFkaXVzID0gTnVtYmVyKChyYWRpdXMgLyAxMDAwKS50b0ZpeGVkKDUpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnJhZGl1cyAmJiB0aGlzLl9lbG1zLnJhZGl1cy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSByYWRpdXNcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG4gIHNldCBzcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPSB2XHJcbiAgICB0aGlzLmNoYW5nZU1hdGVyaWFsKClcclxuICAgIHRoaXMuX2VsbXMuc3BlZWQgJiYgdGhpcy5fZWxtcy5zcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgdGhpcy5jaGFuZ2VNYXRlcmlhbCgpXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IGNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgbGV0IHNka0QgPSBnZXQyRFNkaygpLnNka0RcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMuc2hvdyAmJiAoIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzIHx8ICFzZGtEKSkge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiB0aGlzLm9wdGlvbnMubG5nLCBsYXQ6IHRoaXMub3B0aW9ucy5sYXQgfSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5sbmcsIHRoaXMub3B0aW9ucy5sYXQsIHRoaXMub3B0aW9ucy5yYWRpdXMgKiA2ICsgaGVpZ2h0KSxcclxuICAgICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGR1cmF0aW9uOiAxLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcblxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+mbt+i+vuWFieazouWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHJhZGFyLXNjYW4nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygncmFkYXItc2Nhbi1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsaW5lQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IFtsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gW2xhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXVxyXG5cclxuICAgICAgbGV0IGlucHV0UmFkaXVzRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtcmFkaXVzJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgaW5wdXRSYWRpdXNFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMucmFkaXVzXHJcbiAgICAgIHRoaXMuX2VsbXMucmFkaXVzID0gW2lucHV0UmFkaXVzRWxtXVxyXG4gICAgICBpbnB1dFJhZGl1c0VsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlKSA9PiB7XHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cy11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICBsZXQgdW5pdCA9IHVuaXREYXRhTGVncEVsbS52YWx1ZVxyXG4gICAgICAgIGlmIChlLnRhcmdldC52YWx1ZSB8fCBlLnRhcmdldC52YWx1ZSA9PT0gMCkge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgaWYgKGUuZGF0YSAhPSAnLicgJiYgKGUuZGF0YSAhPSAnLScgfHwgZS50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmICgoKCFlLnRhcmdldC5tYXgpICYmICghZS50YXJnZXQubWluKSkgfHwgKCh2YWx1ZSA8PSAoTnVtYmVyKGUudGFyZ2V0Lm1heCkgLyAodW5pdCA9PT0gJ+exsycgPyAxIDogMTAwMCkpKSAmJiB2YWx1ZSA+PSBOdW1iZXIoZS50YXJnZXQubWluKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJhZGl1cyA9IHZhbHVlICogKHVuaXQgPT09ICfnsbMnID8gMSA6IDEwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlucHV0UmFkaXVzRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1yYWRpdXMtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgbGV0IHVuaXQgPSB1bml0RGF0YUxlZ3BFbG0udmFsdWVcclxuICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgZS50YXJnZXQudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IChOdW1iZXIoZS50YXJnZXQubWF4KSAvICh1bml0ID09PSAn57GzJyA/IDEgOiAxMDAwKSkpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSAoTnVtYmVyKGUudGFyZ2V0Lm1heCkgLyAodW5pdCA9PT0gJ+exsycgPyAxIDogMTAwMCkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJhZGl1cyA9IE51bWJlcigodmFsdWUgKiAodW5pdCA9PT0gJ+exsycgPyAxIDogMTAwMCkpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgICAgdGhpcy5JU0NTZWxlY3QgJiYgdGhpcy5JU0NTZWxlY3QoKVxyXG4gICAgICAgIHRoaXMuZ29vZHNTZWxlY3QgJiYgdGhpcy5nb29kc1NlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoKVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHRhZ0RhdGEgPSB0aGlzLmF0dHJpYnV0ZVNlbGVjdFxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0LWJveCcpWzBdXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgbGV0IGxlZ3BPYmplY3QgPSBsZWdwKGF0dHJpYnV0ZUVsbSwgXCIuYXR0cmlidXRlLXNlbGVjdFwiKVxyXG4gICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZVNlbGVjdEVsbSA9IGF0dHJpYnV0ZUVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUgPSB0YWdEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHVuaXREYXRhID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn57GzJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfnsbMnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAn5Y2D57GzJyxcclxuICAgICAgICAgICAgdmFsdWU6ICfljYPnsbMnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICAgIGxldCB1bml0RGF0YUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cy11bml0LWJveCcpWzBdXHJcbiAgICAgICAgaWYgKHVuaXREYXRhRWxtKSB7XHJcbiAgICAgICAgICBsZXQgdW5pdERhdGFMZWdwT2JqZWN0ID0gbGVncCh1bml0RGF0YUVsbSwgXCIuaW5wdXQtcmFkaXVzLXVuaXRcIilcclxuICAgICAgICAgIHVuaXREYXRhTGVncE9iamVjdC5sZWdwX3NlYXJjaCh1bml0RGF0YSlcclxuICAgICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1yYWRpdXMtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BFbG0udmFsdWUgPSB1bml0RGF0YVswXS52YWx1ZVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcmFkaXVzRWxtQm94ID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtcmFkaXVzJylbMF1cclxuICAgICAgICAgICAgbGV0IHVuaXRFbG0gPSByYWRpdXNFbG1Cb3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndW5pdCcpWzBdXHJcbiAgICAgICAgICAgIGxldCByYWRpdXNFbG0gPSByYWRpdXNFbG1Cb3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+exsyc6XHJcbiAgICAgICAgICAgICAgICBpZiAodW5pdEVsbS5pbm5lckhUTUwgPT09ICdrbScpIHtcclxuICAgICAgICAgICAgICAgICAgdW5pdEVsbS5pbm5lckhUTUwgPSAnbSdcclxuICAgICAgICAgICAgICAgICAgcmFkaXVzRWxtLnZhbHVlID0gTnVtYmVyKChyYWRpdXNFbG0udmFsdWUgKiAxMDAwKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICBjYXNlICfljYPnsbMnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHVuaXRFbG0uaW5uZXJIVE1MID09PSAnbScpIHtcclxuICAgICAgICAgICAgICAgICAgdW5pdEVsbS5pbm5lckhUTUwgPSAna20nXHJcbiAgICAgICAgICAgICAgICAgIHJhZGl1c0VsbS52YWx1ZSA9IE51bWJlcigocmFkaXVzRWxtLnZhbHVlIC8gMTAwMCkudG9GaXhlZCg1KSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5sbmcgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sbmdcclxuICAgIHRoaXMubGF0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGF0XHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMucmFkaXVzID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucmFkaXVzXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLmxhYmVsICYmIHRoaXMubGFiZWwucmVtb3ZlKClcclxuICAgIHRoaXMuZW50aXR5ICYmIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eTIgJiYgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eTIpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIHRoaXMuZW50aXR5MiA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGNoYW5nZU1hdGVyaWFsKCkge1xyXG4gICAgLy8g5o+Q5Y+W6aKc6Imy6YCP5piO5bqmXHJcbiAgICBmdW5jdGlvbiBleHRyYWN0UkdCQShyZ2JhU3RyaW5nKSB7XHJcbiAgICAgIGlmICgvXiMvLnRlc3QocmdiYVN0cmluZykpIHtcclxuICAgICAgICAvLyDljrvpmaQj5Y+3XHJcbiAgICAgICAgbGV0IGNvbG9yID0gcmdiYVN0cmluZy5yZXBsYWNlKFwiI1wiLCBcIlwiKTtcclxuXHJcbiAgICAgICAgLy8g5YiG5Ymy5oiQ57qi44CB57u/44CB6JOd5LiJ6YOo5YiG55qEMTbov5vliLblrZfnrKbkuLJcclxuICAgICAgICBsZXQgcmVkID0gcGFyc2VJbnQoY29sb3Iuc3Vic3RyaW5nKDAsIDIpLCAxNik7XHJcbiAgICAgICAgbGV0IGdyZWVuID0gcGFyc2VJbnQoY29sb3Iuc3Vic3RyaW5nKDIsIDQpLCAxNik7XHJcbiAgICAgICAgbGV0IGJsdWUgPSBwYXJzZUludChjb2xvci5zdWJzdHJpbmcoNCwgNiksIDE2KTtcclxuICAgICAgICBsZXQgb3BhY2l0eSA9IHBhcnNlSW50KGNvbG9yLnN1YnN0cmluZyg2LCA4KSwgMTYpO1xyXG4gICAgICAgIGlmICghb3BhY2l0eSAmJiBvcGFjaXR5ICE9PSAwKSB7XHJcbiAgICAgICAgICBvcGFjaXR5ID0gMVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG9wYWNpdHkgPSBvcGFjaXR5IC8gMjU1XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJnYmFTdHJpbmcgPSBgcmdiYSgke3JlZH0sJHtncmVlbn0sJHtibHVlfSwke29wYWNpdHl9KWBcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBtYXRjaCA9IHJnYmFTdHJpbmcubWF0Y2goL15yZ2JhP1xcKChcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKykoPzosXFxzKihcXGQrKD86XFwuXFxkKyk/KSk/XFwpJC8pO1xyXG4gICAgICByZXR1cm4gbWF0Y2ggPyBbcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSwgcGFyc2VJbnQobWF0Y2hbMl0sIDEwKSwgcGFyc2VJbnQobWF0Y2hbM10sIDEwKSwgbWF0Y2hbNF0gPyBwYXJzZUZsb2F0KG1hdGNoWzRdKSA6IDFdIDogbnVsbFxyXG4gICAgfVxyXG4gICAgbGV0IGFycmF5ID0gZXh0cmFjdFJHQkEodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgbGV0IGNvbG9yID0gYHJnYmEoJHthcnJheVswXX0sJHthcnJheVsxXX0sJHthcnJheVsyXX0sMSlgXHJcbiAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuZWxsaXBzZS5tYXRlcmlhbCA9IG5ldyBDZXNpdW0uUmFkYXJTY2FuTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKSxcclxuICAgICAgdHJhbnNwYXJlbmN5OiBhcnJheVszXSxcclxuICAgICAgc3BlZWQ6IHRoaXMub3B0aW9ucy5zcGVlZCxcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSYWRhclNjYW5cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQS9DQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkpBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQWtHQTtBQUNBO0FBQUE7QUE3RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFsRUE7QUFBQTtBQUFBO0FBQUE7QUFvRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUE3UUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUF5MkJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/RadarScan/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RadarScanStereoscopic/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/RadarScanStereoscopic/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u7ECF\\u5EA6\\n \\n
\\n
\\n \\u6269\\u6563\\u534A\\u5F84\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7EAC\\u5EA6\\n \\n
\\n
\\n \\u6301\\u7EED\\u65F6\\u95F4\\n
\\n \\n ms\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u8303\\u56F4\\u989C\\u8272\\n
\\n
\\n
\\n \\u626B\\u63CF\\u989C\\u8272\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
\\n
\\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUmFkYXJTY2FuU3RlcmVvc2NvcGljL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1JhZGFyU2NhblN0ZXJlb3Njb3BpYy9fZWxlbWVudC5qcz9iNzIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSwgbGFiZWxTdHlsZUVsbTEsIGxhYmVsU3R5bGVFbG0yIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9lbG1faHRtbCdcclxuXHJcbmZ1bmN0aW9uIGh0bWwodGhhdCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57uP5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItMTgwXCIgbWF4PVwiMTgwXCIgQG1vZGVsPVwibG5nXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5omp5pWj5Y2K5b6EPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0yIGlucHV0LXJhZGl1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgZGF0YS1taW49XCIwLjFcIiBtYXg9XCI5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1yYWRpdXMtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCA2MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1yYWRpdXMtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue6rOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTkwXCIgbWF4PVwiOTBcIiBAbW9kZWw9XCJsYXRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mjIHnu63ml7bpl7Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjEwMFwiIG1heD1cIjk5OTk5XCIgQG1vZGVsPVwiZHVyYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJhbHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ojIPlm7TpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvck91dFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaJq+aPj+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9ySW5cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJyYWRhci1zY2FuLWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBcUZBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/RadarScanStereoscopic/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RadarScanStereoscopic/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/RadarScanStereoscopic/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/RadarScanStereoscopic/_element.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 立体雷达扫描\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RadarScanStereoscopic = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 立体雷达扫描\r\n * @param sdk \r\n * @param options {object} 属性\r\n * @param options.id {string} 标注id\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.lng {number} 经度\r\n * @param options.lat {number} 纬度\r\n * @param options.alt {number} 高度\r\n * @param options.colorOut=rgba(255,255,0,0.3){string} 范围颜色\r\n * @param options.colorIn=rgba(255,0,0,0.3){string} 扫描颜色\r\n * @param options.radius=10 {number} 半径\r\n * @param options.speed=1 {number} 扫描速度(倍)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function RadarScanStereoscopic(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RadarScanStereoscopic);\n _this2 = _callSuper(this, RadarScanStereoscopic, [sdk, options]);\n _this2.options.lng = options.lng;\n _this2.options.lat = options.lat;\n _this2.options.alt = options.alt;\n _this2.options.colorOut = options.colorOut || 'rgba(255,255,0,0.3)';\n _this2.options.colorIn = options.colorIn || 'rgba(255,0,0,0.3)';\n _this2.options.radius = options.radius || 10;\n if (_this2.options.radius > 999999) {\n _this2.options.radius = 999999;\n }\n _this2.options.speed = options.speed || 1;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n options.label = options.label || {};\n _this2.options.label = {\n show: options.label.show || false,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.richTextContent = options.richTextContent || '';\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"]();\n _this2.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_17__[\"default\"](_this2.sdk);\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n RadarScanStereoscopic.radarSolidScan(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(RadarScanStereoscopic, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RadarScanStereoscopic, [{\n key: \"type\",\n get: function get() {\n return 'RadarScanStereoscopic';\n }\n }, {\n key: \"positionEditing\",\n get: function get() {\n if (this.ControllerObject.getActiveState() === 'translational') {\n return true;\n }\n return false;\n },\n set:\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n function set(status) {\n var _this3 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n if (status) {\n this.picking = false;\n this.ControllerObject.position = {\n lng: this.options.lng,\n lat: this.options.lat,\n alt: this.options.alt\n };\n this.ControllerObject.editTranslational();\n this.ControllerObject.controllerCallBack = function (params) {\n _this3.lng = params.position.lng;\n _this3.lat = params.position.lat;\n _this3.alt = params.position.alt;\n if (_this3._positionEditingCallback) {\n _this3._positionEditingCallback();\n }\n };\n } else {\n setTimeout(function () {\n _this3.picking = true;\n }, 500);\n this.ControllerObject.destroy();\n this._positionEditingCallback = null;\n }\n // this.options.positionEditing = status\n // if (status === true) {\n // this.picking = false\n // this.event.mouse_move((movement, cartesian) => {\n // let positions = this.cartesian3Towgs84(cartesian, this.sdk.viewer)\n // this.lng = positions.lng\n // this.lat = positions.lat\n // })\n // this.event.mouse_left((movement, cartesian) => {\n // let positions = this.cartesian3Towgs84(cartesian, this.sdk.viewer)\n // this.originalOptions.lng = this.lng = positions.lng\n // this.originalOptions.lat = this.lat = positions.lat\n // this.event.mouse_move(() => { })\n // this.event.mouse_left(() => { })\n // this.event.mouse_right(() => { })\n // this.positionEditing = false\n // })\n // this.event.mouse_right((movement, cartesian) => {\n // this.positionEditing = false\n // })\n // }\n // else {\n // this.picking = true\n // this.event.mouse_move(() => { })\n // this.event.mouse_left(() => { })\n // this.event.mouse_right(() => { })\n // this.lng = this.originalOptions.lng\n // this.lat = this.originalOptions.lat\n // }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"closePositionEditing\",\n value: function closePositionEditing() {\n this.positionEditing = false;\n this._positionEditingCallback = null;\n }\n }, {\n key: \"lng\",\n get: function get() {\n return this.options.lng;\n },\n set: function set(v) {\n this.options.lng = Number(v);\n this.label.position = [v, this.lat, this.alt + this.radius];\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n RadarScanStereoscopic.changeParam(this);\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.lat;\n },\n set: function set(v) {\n this.options.lat = Number(v);\n this.label.position = [this.lng, v, this.alt + this.radius];\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n RadarScanStereoscopic.changeParam(this);\n }\n }, {\n key: \"alt\",\n get: function get() {\n return this.options.alt;\n },\n set: function set(v) {\n this.options.alt = Number(v);\n this.label.position = [this.lng, this.lat, v + this.radius];\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.value = v;\n });\n RadarScanStereoscopic.changeParam(this);\n }\n }, {\n key: \"radius\",\n get: function get() {\n return this.options.radius;\n },\n set: function set(v) {\n var radius = Number(v.toFixed(2));\n if (radius > 999999) {\n radius = 999999;\n }\n if (radius < 0.1) {\n radius = 0.1;\n }\n this.options.radius = radius;\n this.label.position = [this.lng, this.lat, this.alt + v];\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n var unitDataLegpElm = this._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n if (unitDataLegpElm.value === '千米') {\n radius = Number((radius / 1000).toFixed(5));\n }\n }\n this._elms.radius && this._elms.radius.forEach(function (item) {\n item.value = radius;\n });\n RadarScanStereoscopic.changeParam(this);\n }\n }, {\n key: \"duration\",\n get: function get() {\n return 1000;\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n RadarScanStereoscopic.changeParam(this);\n }\n }, {\n key: \"colorOut\",\n get: function get() {\n return this.options.colorOut;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.colorOut = v;\n this.entity.ellipsoid.material = Cesium.Color.fromCssColorString(v);\n this.entity.ellipsoid.outlineColor = Cesium.Color.fromCssColorString(v);\n if (this._elms.colorOut) {\n this._elms.colorOut.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.colorOut = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.colorOut = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.colorOut[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"colorIn\",\n get: function get() {\n return this.options.colorIn;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.colorIn = v;\n this.entity.wall.material = Cesium.Color.fromCssColorString(v);\n if (this._elms.colorIn) {\n this._elms.colorIn.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this5.colorIn = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.colorIn = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.colorIn[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n\n // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this10 = this;\n var _this, contentElm, tabsElm, colorOutPicker, colorInPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, inputRadiusElm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' radar-scan-stereoscopic';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('radar-scan-edit-tabs', undefined, this.sdk); // 颜色组件\n colorOutPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"colorOut\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.colorOut,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.colorOut = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.colorOut = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n colorInPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"colorIn\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.colorIn,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.colorIn = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.colorIn = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this10.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this10.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this10.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this10.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.colorOut = [colorOutPicker];\n this._elms.colorIn = [colorInPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n inputRadiusElm = this._DialogObject._element.content.getElementsByClassName('input-radius')[0].getElementsByTagName('input')[0];\n inputRadiusElm.value = this.options.radius;\n this._elms.radius = [inputRadiusElm];\n inputRadiusElm.addEventListener('input', function (e) {\n var unitDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n var unit = unitDataLegpElm.value;\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) / (unit === '米' ? 1 : 1000) && value >= Number(e.target.min)) {\n _this10.radius = value * (unit === '米' ? 1 : 1000);\n }\n }\n }\n });\n inputRadiusElm.addEventListener('blur', function (e) {\n var unitDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n var unit = unitDataLegpElm.value;\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.target.max && value > Number(e.target.max) / (unit === '米' ? 1 : 1000)) {\n value = Number(e.target.max) / (unit === '米' ? 1 : 1000);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n _this10.radius = Number((value * (unit === '米' ? 1 : 1000)).toFixed(2));\n }\n });\n setTimeout(function () {\n var tagData = _this10.attributeSelect;\n var attributeElm = _this10._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = attributeElm.getElementsByTagName('input')[0];\n for (var i = 0; i < tagData.length; i++) {\n if (tagData[i].key === _this10.options.attributeType) {\n attributeSelectElm.value = tagData[i].value;\n legpObject.legp_searchActive(tagData[i].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i = 0; _i < tagData.length; _i++) {\n if (tagData[_i].value === attributeSelectElm.value) {\n _this10.attributeType = tagData[_i].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '米',\n value: '米'\n }, {\n name: '千米',\n value: '千米'\n }];\n var unitDataElm = _this10._DialogObject._element.content.getElementsByClassName('input-radius-unit-box')[0];\n if (unitDataElm) {\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(unitDataElm, \".input-radius-unit\");\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = unitData[0].value;\n unitDataLegpElm.addEventListener('input', function () {\n var radiusElmBox = _this10._DialogObject._element.content.getElementsByClassName('input-radius')[0];\n var unitElm = radiusElmBox.getElementsByClassName('unit')[0];\n var radiusElm = radiusElmBox.getElementsByClassName('input')[0];\n switch (unitDataLegpElm.value) {\n case '米':\n if (unitElm.innerHTML === 'km') {\n unitElm.innerHTML = 'm';\n radiusElm.value = Number((radiusElm.value * 1000).toFixed(2));\n }\n break;\n case '千米':\n if (unitElm.innerHTML === 'm') {\n unitElm.innerHTML = 'km';\n radiusElm.value = Number((radiusElm.value / 1000).toFixed(5));\n }\n break;\n default:\n break;\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this10._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this10._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this10.labelFontFamily].value;\n for (var _i2 = 0; _i2 < fontData.length; _i2++) {\n if (fontData[_i2].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i2].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < fontData.length; _i3++) {\n if (fontData[_i3].value === fontDataLegpElm.value) {\n _this10.labelFontFamily = fontData[_i3].key;\n break;\n }\n }\n });\n _this10._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n case 34:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n height,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_22__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 16;\n break;\n }\n _context2.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context2.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 27;\n break;\n case 23:\n _context2.next = 25;\n return this.getClampToHeight({\n lng: this.options.lng,\n lat: this.options.lat\n });\n case 25:\n height = _context2.sent;\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.radius * 6 + height),\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n duration: 1\n });\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.lng = this.originalOptions.lng;\n this.lat = this.originalOptions.lat;\n this.alt = this.originalOptions.alt;\n this.colorOut = this.originalOptions.colorOut;\n this.colorIn = this.originalOptions.colorIn;\n this.radius = this.originalOptions.radius;\n this.speed = this.originalOptions.speed;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.positionEditing = false;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 6;\n return this.sdk.removeIncetance(this.options.id);\n case 6:\n _context3.next = 8;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this11 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.lng, this.options.lat, this.options.alt + this.options.radius);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this11.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"radarSolidScan\",\n value: function radarSolidScan(that) {\n var viewer = that.sdk.viewer;\n var options = that.options;\n var radius = options.radius;\n var centerLng = options.lng;\n var centerLat = options.lat;\n var height = options.alt;\n var heading = that.options.speed ? 360 / that.duration * Cesium.getTimestamp() * that.options.speed : 0;\n var arr = calculatePane(that.options, that.options.radius, heading);\n var _time = new Date().getTime();\n\n // 每一帧刷新时调用\n viewer.clock.onTick.addEventListener(function () {\n // let tempTime = new Date().getTime()\n // let everyTime = that.options.duration ? 360 / that.options.duration : 0\n // let speed = (tempTime - _time) * everyTime\n // _time = tempTime\n // heading += speed;\n\n heading = that.options.speed ? 360 / that.duration * Cesium.getTimestamp() * that.options.speed : 0;\n arr = calculatePane(that.options, that.options.radius, heading);\n });\n that.entity = viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n position: new Cesium.CallbackProperty(function () {\n return new Cesium.Cartesian3.fromDegrees(that.options.lng, that.options.lat, that.options.alt);\n }, false),\n ellipsoid: {\n radii: new Cesium.CallbackProperty(function () {\n return new Cesium.Cartesian3(that.options.radius, that.options.radius, that.options.radius);\n }, false),\n material: Cesium.Color.fromCssColorString(options.colorOut),\n outline: true,\n outlineColor: Cesium.Color.fromCssColorString(options.colorOut),\n outlineWidth: 1,\n maximumCone: Cesium.Math.toRadians(90)\n },\n wall: {\n positions: new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArrayHeights(arr.positionArr);\n }, false),\n material: Cesium.Color.fromCssColorString(options.colorIn),\n minimumHeights: new Cesium.CallbackProperty(function () {\n return arr.bottomArr;\n }, false)\n }\n });\n RadarScanStereoscopic.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_21__[\"setSplitDirection\"])(0, that.options.id);\n }\n\n // 计算平面扫描范围\n function calculatePane(position, radius, heading) {\n var x1 = position.lng,\n y1 = position.lat,\n height = position.alt;\n var m = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(x1, y1, height));\n var rx = radius * Math.cos(heading * Math.PI / 180.0);\n var ry = radius * Math.sin(heading * Math.PI / 180.0);\n var translation = Cesium.Cartesian3.fromElements(rx, ry, height);\n var d = Cesium.Matrix4.multiplyByPoint(m, translation, new Cesium.Cartesian3());\n var c = Cesium.Cartographic.fromCartesian(d);\n var x2 = Cesium.Math.toDegrees(c.longitude);\n var y2 = Cesium.Math.toDegrees(c.latitude);\n return calculateSector(x1, y1, x2, y2, height);\n }\n\n // 计算竖直扇形\n function calculateSector(x1, y1, x2, y2, height) {\n var positionArr = [];\n var bottomArr = [];\n positionArr.push(x1, y1, height);\n bottomArr.push(height);\n var radius = Cesium.Cartesian3.distance(Cesium.Cartesian3.fromDegrees(x1, y1), Cesium.Cartesian3.fromDegrees(x2, y2));\n // 角度设置为0-90,也就是1/4圆\n for (var i = 0; i <= 90; i++) {\n var h = radius * Math.sin(i * Math.PI / 180.0);\n var r = Math.cos(i * Math.PI / 180.0);\n var x = (x2 - x1) * r + x1;\n var y = (y2 - y1) * r + y1;\n positionArr.push(x, y, h + height);\n bottomArr.push(height);\n }\n return {\n positionArr: positionArr,\n bottomArr: bottomArr\n };\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(that) {\n var height, objectsToExclude;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!that.options.alt) {\n _context4.next = 4;\n break;\n }\n height = that.options.alt + that.options.radius;\n _context4.next = 8;\n break;\n case 4:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(that.sdk.viewer.entities.values);\n _context4.next = 7;\n return that.getClampToHeight({\n lng: that.options.lng,\n lat: that.options.lat\n }, objectsToExclude);\n case 7:\n height = _context4.sent;\n case 8:\n that.options.label.position = {\n lng: that.options.lng,\n lat: that.options.lat,\n alt: height\n };\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_16__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n ground: false,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n });\n case 10:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function createLabel(_x2) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"changeParam\",\n value: function changeParam(that) {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (RadarScanStereoscopic);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUmFkYXJTY2FuU3RlcmVvc2NvcGljL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1JhZGFyU2NhblN0ZXJlb3Njb3BpYy9pbmRleC5qcz85MTRlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZGVzY3JpcHRpb24g56uL5L2T6Zu36L6+5omr5o+PXHJcbiAqL1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xsZXIvaW5kZXhcIjtcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvd30gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIFJhZGFyU2NhblN0ZXJlb3Njb3BpYyBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBkZXNjcmlwdGlvbiDnq4vkvZPpm7fovr7miavmj49cclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOagh+azqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc2hvdz10cnVlIHtib29sZWFufSDmmL7npLov6ZqQ6JePXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3JPdXQ9cmdiYSgyNTUsMjU1LDAsMC4zKXtzdHJpbmd9IOiMg+WbtOminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9ySW49cmdiYSgyNTUsMCwwLDAuMyl7c3RyaW5nfSDmiavmj4/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yYWRpdXM9MTAge251bWJlcn0g5Y2K5b6EXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MSB7bnVtYmVyfSDmiavmj4/pgJ/luqYo5YCNKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsIHtvYmplY3R9IOagh+etvuWvueixoVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSBvcHRpb25zLmxuZ1xyXG4gICAgdGhpcy5vcHRpb25zLmxhdCA9IG9wdGlvbnMubGF0XHJcbiAgICB0aGlzLm9wdGlvbnMuYWx0ID0gb3B0aW9ucy5hbHRcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvck91dCA9IG9wdGlvbnMuY29sb3JPdXQgfHwgJ3JnYmEoMjU1LDI1NSwwLDAuMyknXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3JJbiA9IG9wdGlvbnMuY29sb3JJbiB8fCAncmdiYSgyNTUsMCwwLDAuMyknXHJcbiAgICB0aGlzLm9wdGlvbnMucmFkaXVzID0gb3B0aW9ucy5yYWRpdXMgfHwgMTBcclxuICAgIGlmKHRoaXMub3B0aW9ucy5yYWRpdXMgPiA5OTk5OTkpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJhZGl1cyA9IDk5OTk5OVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gb3B0aW9ucy5zcGVlZCB8fCAxXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICBvcHRpb25zLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsID0ge1xyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZm9udFNpemUgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6IChvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiAob3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwKSA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlID0gb3B0aW9ucy5hdHRyaWJ1dGUgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluayB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCB8fCBbXVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCA9IG5ldyBDb250cm9sbGVyKHRoaXMuc2RrKVxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIFJhZGFyU2NhblN0ZXJlb3Njb3BpYy5yYWRhclNvbGlkU2Nhbih0aGlzKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ1JhZGFyU2NhblN0ZXJlb3Njb3BpYydcclxuICB9XHJcblxyXG4gIHN0YXRpYyByYWRhclNvbGlkU2Nhbih0aGF0KSB7XHJcbiAgICBsZXQgdmlld2VyID0gdGhhdC5zZGsudmlld2VyXHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoYXQub3B0aW9uc1xyXG4gICAgbGV0IHJhZGl1cyA9IG9wdGlvbnMucmFkaXVzO1xyXG4gICAgbGV0IGNlbnRlckxuZyA9IG9wdGlvbnMubG5nO1xyXG4gICAgbGV0IGNlbnRlckxhdCA9IG9wdGlvbnMubGF0O1xyXG4gICAgbGV0IGhlaWdodCA9IG9wdGlvbnMuYWx0O1xyXG5cclxuXHJcbiAgICBsZXQgaGVhZGluZyA9IHRoYXQub3B0aW9ucy5zcGVlZCA/ICgzNjAgLyB0aGF0LmR1cmF0aW9uICogQ2VzaXVtLmdldFRpbWVzdGFtcCgpICogdGhhdC5vcHRpb25zLnNwZWVkKSA6IDA7XHJcbiAgICBsZXQgYXJyID0gY2FsY3VsYXRlUGFuZSh0aGF0Lm9wdGlvbnMsIHRoYXQub3B0aW9ucy5yYWRpdXMsIGhlYWRpbmcpO1xyXG4gICAgbGV0IF90aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgLy8g5q+P5LiA5bin5Yi35paw5pe26LCD55SoXHJcbiAgICB2aWV3ZXIuY2xvY2sub25UaWNrLmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xyXG4gICAgICAvLyBsZXQgdGVtcFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICAvLyBsZXQgZXZlcnlUaW1lID0gdGhhdC5vcHRpb25zLmR1cmF0aW9uID8gMzYwIC8gdGhhdC5vcHRpb25zLmR1cmF0aW9uIDogMFxyXG4gICAgICAvLyBsZXQgc3BlZWQgPSAodGVtcFRpbWUgLSBfdGltZSkgKiBldmVyeVRpbWVcclxuICAgICAgLy8gX3RpbWUgPSB0ZW1wVGltZVxyXG4gICAgICAvLyBoZWFkaW5nICs9IHNwZWVkO1xyXG5cclxuICAgICAgaGVhZGluZyA9IHRoYXQub3B0aW9ucy5zcGVlZCA/ICgzNjAgLyB0aGF0LmR1cmF0aW9uICogQ2VzaXVtLmdldFRpbWVzdGFtcCgpICogdGhhdC5vcHRpb25zLnNwZWVkKSA6IDA7XHJcbiAgICAgIGFyciA9IGNhbGN1bGF0ZVBhbmUodGhhdC5vcHRpb25zLCB0aGF0Lm9wdGlvbnMucmFkaXVzLCBoZWFkaW5nKTtcclxuICAgIH0pO1xyXG4gICAgdGhhdC5lbnRpdHkgPSB2aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMubG5nLFxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLmxhdCxcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5hbHRcclxuICAgICAgICApXHJcbiAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgZWxsaXBzb2lkOiB7XHJcbiAgICAgICAgcmFkaWk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKHRoYXQub3B0aW9ucy5yYWRpdXMsIHRoYXQub3B0aW9ucy5yYWRpdXMsIHRoYXQub3B0aW9ucy5yYWRpdXMpXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKG9wdGlvbnMuY29sb3JPdXQpLFxyXG4gICAgICAgIG91dGxpbmU6IHRydWUsXHJcbiAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKG9wdGlvbnMuY29sb3JPdXQpLFxyXG4gICAgICAgIG91dGxpbmVXaWR0aDogMSxcclxuICAgICAgICBtYXhpbXVtQ29uZTogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDkwKSxcclxuICAgICAgfSxcclxuICAgICAgd2FsbDoge1xyXG4gICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhhcnIucG9zaXRpb25BcnIpO1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhvcHRpb25zLmNvbG9ySW4pLFxyXG4gICAgICAgIG1pbmltdW1IZWlnaHRzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGFyci5ib3R0b21BcnJcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIFJhZGFyU2NhblN0ZXJlb3Njb3BpYy5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgICBcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiuoeeul+W5s+mdouaJq+aPj+iMg+WbtFxyXG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlUGFuZShwb3NpdGlvbiwgcmFkaXVzLCBoZWFkaW5nKSB7XHJcbiAgICAgIGxldCB4MSA9IHBvc2l0aW9uLmxuZyxcclxuICAgICAgICB5MSA9IHBvc2l0aW9uLmxhdCxcclxuICAgICAgICBoZWlnaHQgPSBwb3NpdGlvbi5hbHQ7XHJcbiAgICAgIGxldCBtID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoeDEsIHkxLCBoZWlnaHQpXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCByeCA9IHJhZGl1cyAqIE1hdGguY29zKChoZWFkaW5nICogTWF0aC5QSSkgLyAxODAuMCk7XHJcbiAgICAgIGxldCByeSA9IHJhZGl1cyAqIE1hdGguc2luKChoZWFkaW5nICogTWF0aC5QSSkgLyAxODAuMCk7XHJcbiAgICAgIGxldCB0cmFuc2xhdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21FbGVtZW50cyhyeCwgcnksIGhlaWdodCk7XHJcbiAgICAgIGxldCBkID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIG0sXHJcbiAgICAgICAgdHJhbnNsYXRpb24sXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgKTtcclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oZCk7XHJcbiAgICAgIGxldCB4MiA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjLmxvbmdpdHVkZSk7XHJcbiAgICAgIGxldCB5MiA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjLmxhdGl0dWRlKTtcclxuICAgICAgcmV0dXJuIGNhbGN1bGF0ZVNlY3Rvcih4MSwgeTEsIHgyLCB5MiwgaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDorqHnrpfnq5bnm7TmiYflvaJcclxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVNlY3Rvcih4MSwgeTEsIHgyLCB5MiwgaGVpZ2h0KSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbkFyciA9IFtdO1xyXG4gICAgICBsZXQgYm90dG9tQXJyID0gW107XHJcbiAgICAgIHBvc2l0aW9uQXJyLnB1c2goeDEsIHkxLCBoZWlnaHQpO1xyXG4gICAgICBib3R0b21BcnIucHVzaChoZWlnaHQpO1xyXG4gICAgICBsZXQgcmFkaXVzID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoeDEsIHkxKSxcclxuICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh4MiwgeTIpXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIOinkuW6puiuvue9ruS4ujAtOTAs5Lmf5bCx5pivMS805ZyGXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDkwOyBpKyspIHtcclxuICAgICAgICBsZXQgaCA9IHJhZGl1cyAqIE1hdGguc2luKChpICogTWF0aC5QSSkgLyAxODAuMCk7XHJcbiAgICAgICAgbGV0IHIgPSBNYXRoLmNvcygoaSAqIE1hdGguUEkpIC8gMTgwLjApO1xyXG4gICAgICAgIGxldCB4ID0gKHgyIC0geDEpICogciArIHgxO1xyXG4gICAgICAgIGxldCB5ID0gKHkyIC0geTEpICogciArIHkxO1xyXG4gICAgICAgIHBvc2l0aW9uQXJyLnB1c2goeCwgeSwgaCArIGhlaWdodCk7XHJcbiAgICAgICAgYm90dG9tQXJyLnB1c2goaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBwb3NpdGlvbkFyciwgYm90dG9tQXJyIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgbGV0IGhlaWdodFxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5hbHQpIHtcclxuICAgICAgaGVpZ2h0ID0gdGhhdC5vcHRpb25zLmFsdCArIHRoYXQub3B0aW9ucy5yYWRpdXNcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGF0LnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICBoZWlnaHQgPSBhd2FpdCB0aGF0LmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRoYXQub3B0aW9ucy5sbmcsIGxhdDogdGhhdC5vcHRpb25zLmxhdCB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgfVxyXG4gICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoYXQub3B0aW9ucy5sbmcsIGxhdDogdGhhdC5vcHRpb25zLmxhdCwgYWx0OiBoZWlnaHQgfVxyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGdyb3VuZDogZmFsc2UsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICpcclxuICogQG1lbWJlck9mIFNvdXJjZVxyXG4gKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gKlxyXG4gKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QucG9zaXRpb24gPSB7IGxuZzogdGhpcy5vcHRpb25zLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGF0LCBhbHQ6IHRoaXMub3B0aW9ucy5hbHQgfVxyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZWRpdFRyYW5zbGF0aW9uYWwoKVxyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuY29udHJvbGxlckNhbGxCYWNrID0gKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIHRoaXMubG5nID0gcGFyYW1zLnBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcGFyYW1zLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgIHRoaXMuYWx0ID0gcGFyYW1zLnBvc2l0aW9uLmFsdFxyXG4gICAgICAgIGlmKHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5waWNraW5nID0gdHJ1ZVxyXG4gICAgICB9LCA1MDApO1xyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnBvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgLy8gaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgLy8gICB0aGlzLnBpY2tpbmcgPSBmYWxzZVxyXG4gICAgLy8gICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgIC8vICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIC8vICAgICB0aGlzLmxuZyA9IHBvc2l0aW9ucy5sbmdcclxuICAgIC8vICAgICB0aGlzLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAvLyAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAvLyAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMubG5nID0gdGhpcy5sbmcgPSBwb3NpdGlvbnMubG5nXHJcbiAgICAvLyAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMubGF0ID0gdGhpcy5sYXQgPSBwb3NpdGlvbnMubGF0XHJcbiAgICAvLyAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgIC8vICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgLy8gICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgLy8gICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIC8vICAgfSlcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAvLyAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAvLyAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAvLyAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgLy8gICB0aGlzLmxuZyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxuZ1xyXG4gICAgLy8gICB0aGlzLmxhdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhdFxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIGlmICh0aGlzLkNvbnRyb2xsZXJPYmplY3QuZ2V0QWN0aXZlU3RhdGUoKSA9PT0gJ3RyYW5zbGF0aW9uYWwnKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgY2xvc2VQb3NpdGlvbkVkaXRpbmcoKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICB9XHJcblxyXG4gIGdldCBsbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxuZ1xyXG4gIH1cclxuICBzZXQgbG5nKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sbmcgPSBOdW1iZXIodilcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdiwgdGhpcy5sYXQsIHRoaXMuYWx0ICsgdGhpcy5yYWRpdXNdXHJcbiAgICB0aGlzLl9lbG1zLmxuZyAmJiB0aGlzLl9lbG1zLmxuZy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gICAgUmFkYXJTY2FuU3RlcmVvc2NvcGljLmNoYW5nZVBhcmFtKHRoaXMpXHJcbiAgfVxyXG4gIGdldCBsYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhdFxyXG4gIH1cclxuICBzZXQgbGF0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYXQgPSBOdW1iZXIodilcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5sbmcsIHYsIHRoaXMuYWx0ICsgdGhpcy5yYWRpdXNdXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gICAgUmFkYXJTY2FuU3RlcmVvc2NvcGljLmNoYW5nZVBhcmFtKHRoaXMpXHJcbiAgfVxyXG4gIGdldCBhbHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFsdFxyXG4gIH1cclxuICBzZXQgYWx0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbHQgPSBOdW1iZXIodilcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5sbmcsIHRoaXMubGF0LCB2ICsgdGhpcy5yYWRpdXNdXHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gICAgUmFkYXJTY2FuU3RlcmVvc2NvcGljLmNoYW5nZVBhcmFtKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgcmFkaXVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXNcclxuICB9XHJcbiAgc2V0IHJhZGl1cyh2KSB7XHJcbiAgICBsZXQgcmFkaXVzID0gTnVtYmVyKHYudG9GaXhlZCgyKSlcclxuICAgIGlmKHJhZGl1cyA+IDk5OTk5OSkge1xyXG4gICAgICByYWRpdXMgPSA5OTk5OTlcclxuICAgIH1cclxuICAgIGlmKHJhZGl1cyA8IDAuMSkge1xyXG4gICAgICByYWRpdXMgPSAwLjFcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5yYWRpdXMgPSByYWRpdXNcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5sbmcsIHRoaXMubGF0LCB0aGlzLmFsdCArIHZdXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cy11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgaWYgKHVuaXREYXRhTGVncEVsbS52YWx1ZSA9PT0gJ+WNg+exsycpIHtcclxuICAgICAgICByYWRpdXMgPSBOdW1iZXIoKHJhZGl1cyAvIDEwMDApLnRvRml4ZWQoNSkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbG1zLnJhZGl1cyAmJiB0aGlzLl9lbG1zLnJhZGl1cy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSByYWRpdXNcclxuICAgIH0pXHJcbiAgICBSYWRhclNjYW5TdGVyZW9zY29waWMuY2hhbmdlUGFyYW0odGhpcylcclxuICB9XHJcblxyXG4gIGdldCBkdXJhdGlvbigpIHtcclxuICAgIHJldHVybiAxMDAwXHJcbiAgfVxyXG4gIGdldCBzcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3BlZWRcclxuICB9XHJcbiAgc2V0IHNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IHZcclxuICAgIHRoaXMuX2VsbXMuc3BlZWQgJiYgdGhpcy5fZWxtcy5zcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gICAgUmFkYXJTY2FuU3RlcmVvc2NvcGljLmNoYW5nZVBhcmFtKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3JPdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yT3V0XHJcbiAgfVxyXG4gIHNldCBjb2xvck91dCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3JPdXQgPSB2XHJcbiAgICB0aGlzLmVudGl0eS5lbGxpcHNvaWQubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICB0aGlzLmVudGl0eS5lbGxpcHNvaWQub3V0bGluZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3JPdXQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvck91dC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvck91dCA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3JPdXQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JPdXRbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9ySW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9ySW5cclxuICB9XHJcbiAgc2V0IGNvbG9ySW4odikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9ySW4gPSB2XHJcbiAgICB0aGlzLmVudGl0eS53YWxsLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3JJbikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9ySW4uZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB2LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3JJbiA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3JJbiA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvckluW2ldID0gY29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udEZhbWlseSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsRm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5mb250RmFtaWx5ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gbGFiZWxDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZvbnRTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUgJiYgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTmVhciAmJiB0aGlzLl9lbG1zLmxhYmVsTmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5sYWJlbE5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5sYWJlbE5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRmFyICYmIHRoaXMuX2VsbXMubGFiZWxGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGggJiYgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsUGl4ZWxPZmZzZXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBsYWJlbFBpeGVsT2Zmc2V0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQgJiYgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0sIHZdXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kW2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIHJldHVyblxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn56uL5L2T6Zu36L6+5omr5o+P5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogdGhpcy5sYWJlbC5wb3NpdGlvblswXSwgbGF0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzFdLCBhbHQ6IHRoaXMub3B0aW9ucy5hbHQgKyB0aGlzLm9wdGlvbnMucmFkaXVzIH1cclxuICAgICAgICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCwgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdF1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sodGhpcy5vcHRpb25zKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyByYWRhci1zY2FuLXN0ZXJlb3Njb3BpYydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdyYWRhci1zY2FuLWVkaXQtdGFicycsIHVuZGVmaW5lZCwgdGhpcy5zZGspXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JPdXRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yT3V0XCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yT3V0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvck91dCA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yT3V0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgY29sb3JJblBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29sb3JJblwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvckluLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvckluID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3JJbiA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yT3V0ID0gW2NvbG9yT3V0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9ySW4gPSBbY29sb3JJblBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yID0gW2xhYmVsQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IgPSBbbGluZUNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IFtsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlcl1cclxuXHJcbiAgICAgIGxldCBpbnB1dFJhZGl1c0VsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cycpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgIGlucHV0UmFkaXVzRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLnJhZGl1c1xyXG4gICAgICB0aGlzLl9lbG1zLnJhZGl1cyA9IFtpbnB1dFJhZGl1c0VsbV1cclxuICAgICAgaW5wdXRSYWRpdXNFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4ge1xyXG4gICAgICAgIGxldCB1bml0RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1yYWRpdXMtdW5pdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgbGV0IHVuaXQgPSB1bml0RGF0YUxlZ3BFbG0udmFsdWVcclxuICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgZS50YXJnZXQudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAoKCghZS50YXJnZXQubWF4KSAmJiAoIWUudGFyZ2V0Lm1pbikpIHx8ICgodmFsdWUgPD0gKE51bWJlcihlLnRhcmdldC5tYXgpIC8gKHVuaXQgPT09ICfnsbMnID8gMSA6IDEwMDApKSkgJiYgdmFsdWUgPj0gTnVtYmVyKGUudGFyZ2V0Lm1pbikpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yYWRpdXMgPSB2YWx1ZSAqICh1bml0ID09PSAn57GzJyA/IDEgOiAxMDAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpbnB1dFJhZGl1c0VsbS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICBsZXQgdW5pdERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtcmFkaXVzLXVuaXQnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgIGxldCB1bml0ID0gdW5pdERhdGFMZWdwRWxtLnZhbHVlXHJcbiAgICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IGUudGFyZ2V0LnZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiAoTnVtYmVyKGUudGFyZ2V0Lm1heCkgLyAodW5pdCA9PT0gJ+exsycgPyAxIDogMTAwMCkpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gKE51bWJlcihlLnRhcmdldC5tYXgpIC8gKHVuaXQgPT09ICfnsbMnID8gMSA6IDEwMDApKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yYWRpdXMgPSBOdW1iZXIoKHZhbHVlICogKHVuaXQgPT09ICfnsbMnID8gMSA6IDEwMDApKS50b0ZpeGVkKDIpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSBhdHRyaWJ1dGVFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB1bml0RGF0YSA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+exsycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn57GzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ+WNg+exsycsXHJcbiAgICAgICAgICAgIHZhbHVlOiAn5Y2D57GzJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgICBsZXQgdW5pdERhdGFFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1yYWRpdXMtdW5pdC1ib3gnKVswXVxyXG4gICAgICAgIGlmICh1bml0RGF0YUVsbSkge1xyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AodW5pdERhdGFFbG0sIFwiLmlucHV0LXJhZGl1cy11bml0XCIpXHJcbiAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2godW5pdERhdGEpXHJcbiAgICAgICAgICBsZXQgdW5pdERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtcmFkaXVzLXVuaXQnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLnZhbHVlID0gdW5pdERhdGFbMF0udmFsdWVcclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJhZGl1c0VsbUJveCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXJhZGl1cycpWzBdXHJcbiAgICAgICAgICAgIGxldCB1bml0RWxtID0gcmFkaXVzRWxtQm94LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3VuaXQnKVswXVxyXG4gICAgICAgICAgICBsZXQgcmFkaXVzRWxtID0gcmFkaXVzRWxtQm94LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgICAgc3dpdGNoICh1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBjYXNlICfnsbMnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHVuaXRFbG0uaW5uZXJIVE1MID09PSAna20nKSB7XHJcbiAgICAgICAgICAgICAgICAgIHVuaXRFbG0uaW5uZXJIVE1MID0gJ20nXHJcbiAgICAgICAgICAgICAgICAgIHJhZGl1c0VsbS52YWx1ZSA9IE51bWJlcigocmFkaXVzRWxtLnZhbHVlICogMTAwMCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgY2FzZSAn5Y2D57GzJzpcclxuICAgICAgICAgICAgICAgIGlmICh1bml0RWxtLmlubmVySFRNTCA9PT0gJ20nKSB7XHJcbiAgICAgICAgICAgICAgICAgIHVuaXRFbG0uaW5uZXJIVE1MID0gJ2ttJ1xyXG4gICAgICAgICAgICAgICAgICByYWRpdXNFbG0udmFsdWUgPSBOdW1iZXIoKHJhZGl1c0VsbS52YWx1ZSAvIDEwMDApLnRvRml4ZWQoNSkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvbnREYXRhID0gZ2V0Rm9udExpc3QoKVxyXG4gICAgICAgIGxldCBmb250T2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdmb250LXNlbGVjdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5mb250LXNlbGVjdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGZvbnRPYmplY3QpIHtcclxuICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2goZm9udERhdGEpXHJcbiAgICAgICAgICBsZXQgZm9udERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvbnQtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0udmFsdWUgPSBmb250RGF0YVt0aGlzLmxhYmVsRm9udEZhbWlseV0udmFsdWVcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoZm9udERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gZm9udERhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ID0gW2ZvbnREYXRhTGVncEVsbV1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjaGFuZ2VQYXJhbSh0aGF0KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmNlbnRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuY2VudGVyIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc3RhcnQpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnN0YXJ0IH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogdGhpcy5vcHRpb25zLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGF0IH0pXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMucmFkaXVzICogNiArIGhlaWdodCksXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkdXJhdGlvbjogMSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5sbmcgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sbmdcclxuICAgIHRoaXMubGF0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGF0XHJcbiAgICB0aGlzLmFsdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmFsdFxyXG4gICAgdGhpcy5jb2xvck91dCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yT3V0XHJcbiAgICB0aGlzLmNvbG9ySW4gPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvckluXHJcbiAgICB0aGlzLnJhZGl1cyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnJhZGl1c1xyXG4gICAgdGhpcy5zcGVlZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNwZWVkXHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubG5nLCB0aGlzLm9wdGlvbnMubGF0LCB0aGlzLm9wdGlvbnMuYWx0ICsgdGhpcy5vcHRpb25zLnJhZGl1cylcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKChwZXJjZW50YWdlKSA9PiB7XHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8IHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICcnKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHNpdGVJbmZvUG9zaXRpb24pO1xyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmFkYXJTY2FuU3RlcmVvc2NvcGljXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBelJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBbEVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBeDhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK3RCQTtBQUFBO0FBbUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/RadarScanStereoscopic/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RoadObject/_element.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/RoadObject/_element.js ***! - \*********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n \\u9053\\u8DEF\\u7C7B\\u578B\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\u8F66\\u9053\\u5BBD\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n \\u4EBA\\u884C\\u9053\\u5BBD\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUm9hZE9iamVjdC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Sb2FkT2JqZWN0L19lbGVtZW50LmpzPzI4MWQiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaHRtbCgpIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgcm9hZC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPumBk+i3r+exu+Weizwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2FkLXR5cGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovabpgZPlrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1heD1cIjk5OTk5XCIgbWluPVwiMVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwiY2FyUm9hZFdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuS6uuihjOmBk+WuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWF4PVwiOTk5OTlcIiBtaW49XCIxXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzaWRlV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1DQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/RoadObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RoadObject/index.js": -/*!******************************************!*\ - !*** ./src/Obj/Base/RoadObject/index.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/RoadObject/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 道路\r\n */\n\n\n\n\n\n\n\nvar Road = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 道路\r\n * @param options {object} 道路属性\r\n * @param options.name=未命名对象 {string} 名称\r\n * @param options.carRoadWidth=2 {number} 车道宽度\r\n * @param options.sideWidth=2 {number} 人行道宽度\r\n * @param options.positions=[] {array} 道路positions\r\n * @param options.roadImage='' {string} 车道贴图\r\n * @param options.sideImage='' {string} 人行道贴图\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function Road(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Road);\n _this2 = _callSuper(this, Road, [sdk, options]);\n _this2.viewer = _this2.sdk.viewer;\n _this2.options.name = options.name || '道路';\n _this2.options.carRoadWidth = options.carRoadWidth || 10;\n _this2.options.sideWidth = options.sideWidth || 5;\n _this2.options.positions = options.positions || [];\n _this2.options.roadImage = options.roadImage || _this2.getSourceRootPath() + '/img/roadPhoto.png';\n _this2.options.sideImage = options.sideImage || _this2.getSourceRootPath() + '/img/sidePhoto.png';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this2._elms = {};\n _this2.positionArea = [];\n _this2.positions = [];\n _this2.lineEntity = '';\n _this2.crossArr = [];\n _this2.pointArr = [];\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n // Road.create(this)\n // console.log('1212')\n function createCustomCorridor(viewer, positions, width) {\n // 计算两侧顶点位置\n var leftPositions = [];\n var rightPositions = [];\n var topPositions = [];\n\n // 生成两侧和顶部顶点\n for (var i = 0; i < positions.length; i++) {\n var position = positions[i];\n var nextPosition = positions[i + 1];\n if (!nextPosition) continue;\n\n // 计算方向向量\n var direction = Cesium.Cartesian3.subtract(nextPosition, position, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(direction, direction);\n\n // 计算垂直向量\n var normal = Cesium.Cartesian3.cross(direction, Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(normal, normal);\n\n // 计算两侧偏移量\n var offset = Cesium.Cartesian3.multiplyByScalar(normal, width / 2, new Cesium.Cartesian3());\n\n // 左侧点\n var left = Cesium.Cartesian3.add(position, offset, new Cesium.Cartesian3());\n leftPositions.push(left.x, left.y, left.z);\n\n // 右侧点\n var right = Cesium.Cartesian3.subtract(position, offset, new Cesium.Cartesian3());\n rightPositions.push(right.x, right.y, right.z);\n\n // 顶部点(高度增加)\n var top = Cesium.Cartesian3.clone(position);\n top.z += 100; // 设置顶部高度\n topPositions.push(top.x, top.y, top.z);\n }\n\n // 合并所有顶点\n var allPositions = new Float64Array([].concat(leftPositions, rightPositions, topPositions));\n\n // 创建几何体\n var geometry = new Cesium.Geometry({\n attributes: {\n position: new Cesium.GeometryAttribute({\n componentDatatype: Cesium.ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: allPositions\n })\n },\n indices: new Uint16Array([\n // 左侧面索引\n 0, 1, 3, 1, 4, 3,\n // 右侧面索引\n 2, 5, 6, 2, 6, 7,\n // 顶面索引\n 8, 9, 10, 8, 10, 11]),\n primitiveType: Cesium.PrimitiveType.TRIANGLES,\n boundingSphere: Cesium.BoundingSphere.fromVertices(allPositions)\n });\n\n // 创建图元\n var primitive = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: geometry\n }),\n appearance: new Cesium.PerInstanceColorAppearance({\n flat: true,\n translucent: false\n }),\n asynchronous: false\n });\n viewer.scene.primitives.add(primitive);\n return primitive;\n }\n\n // 使用示例\n var positions = Cesium.Cartesian3.fromDegreesArray([-75.0, 39.0, -74.5, 39.5, -74.0, 40.0]);\n createCustomCorridor(_this2.sdk.viewer, positions, 1000);\n _this2.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(-75.0, 39.0, 100)\n // orientation: {\n // heading: Cesium.Math.toRadians(0),\n // pitch: Cesium.Math.toRadians(-30),\n // roll: 0.0\n // }\n });\n return _this2;\n }\n // 创建走廊几何体\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Road, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Road, [{\n key: \"createCorridor\",\n value: function createCorridor(myImg) {\n var positions = Cesium.Cartesian3.fromDegreesArray([116.391, 39.907,\n // 北京\n 116.404, 39.914, 116.417, 39.921, 116.430, 39.928]);\n var corridorInstance = new Cesium.GeometryInstance({\n geometry: new Cesium.CorridorGeometry({\n positions: positions,\n width: 200.0,\n vertexFormat: Cesium.VertexFormat.POSITION_AND_ST,\n cornerType: Cesium.CornerType.ROUNDED\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.WHITE)\n }\n });\n var primitive = new Cesium.Primitive({\n geometryInstances: corridorInstance,\n appearance: new Cesium.MaterialAppearance({\n material: new Cesium.Material({\n fabric: {\n type: 'Image',\n uniforms: {\n image: myImg\n }\n }\n }),\n translucent: false\n }),\n asynchronous: false\n });\n this.sdk.viewer.scene.primitives.add(primitive);\n\n // 定位到走廊\n this.sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(116.404, 39.914, 2000),\n orientation: {\n heading: Cesium.Math.toRadians(0),\n pitch: Cesium.Math.toRadians(-30),\n roll: 0.0\n }\n });\n return primitive;\n }\n // 创建道路\n }, {\n key: \"getSideRectangle\",\n value: function getSideRectangle(positions, width) {\n var right = [];\n var left = [];\n var that = this;\n positions.forEach(function (item) {\n right.push([item[0], item[1]]);\n left.push([item[2], item[3]]);\n });\n var rightPosi = that.getRectangle(right, width, 'side');\n var leftPosi = this.getRectangle(left, width, 'side');\n return {\n left: leftPosi,\n right: rightPosi\n };\n }\n }, {\n key: \"getRectangle\",\n value: function getRectangle(positions, width, type) {\n var areaArr = [];\n var newPositions = [];\n var that = this;\n // for (let i = 0; i < positions.length - 1; i++) {\n var _loop = function _loop() {\n var start = positions[i][0];\n var end = positions[i][1];\n areaArr[i] = [];\n var posi = [];\n var Outlinegeometry = new Cesium.CorridorGeometry({\n positions: [start, end],\n width: width,\n cornerType: Cesium.CornerType.MITERED,\n vertexFormat: Cesium.MaterialAppearance.MaterialSupport.ALL.vertexFormat\n });\n var geometry = Cesium.CorridorGeometry.createGeometry(Outlinegeometry);\n for (var j = 0; j < geometry.attributes.position.values.length; j += 3) {\n var val = that.cartesian3Towgs84(new Cesium.Cartesian3(geometry.attributes.position.values[j], geometry.attributes.position.values[j + 1], geometry.attributes.position.values[j + 2]), that.sdk.viewer);\n posi.push([val.lng, val.lat]);\n }\n for (var x = 0; x < geometry.indices.length; x += 3) {\n areaArr[i].push(turf.polygon([[posi[geometry.indices[x]], posi[geometry.indices[x + 1]], posi[geometry.indices[x + 2]], posi[geometry.indices[x]]]]));\n }\n var geojson = turf.union(areaArr[i][0], areaArr[i][1]);\n var arr = [];\n geojson.geometry.coordinates[0].pop();\n geojson.geometry.coordinates[0].forEach(function (item) {\n arr.push(new Cesium.Cartesian3.fromDegrees(item[0], item[1]));\n });\n var dotResult, angle;\n var tempVec = new Cesium.Cartesian3();\n\n // 计算并归一化第一个向量\n var vector1 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(that.pointArr[i][1], that.pointArr[i][0], tempVec), tempVec);\n\n // 计算并归一化第二个向量\n var vector2 = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(arr[1], arr[0], new Cesium.Cartesian3()), new Cesium.Cartesian3());\n dotResult = Cesium.Cartesian3.dot(vector1, vector2);\n if (0.999 < dotResult && dotResult < 1.001 || -0.999 > dotResult && dotResult > -1.001) {\n //调整方向\n newPositions.push(arr);\n } else {\n var newArr = [];\n newArr[0] = arr[1];\n newArr[1] = arr[2];\n newArr[2] = arr[3];\n newArr[3] = arr[0];\n newPositions.push(newArr);\n }\n // }\n\n // if (!type) {\n // // if (cross > 0 && !type) {//调整方向\n // if ((0.999 < dotResult && dotResult < 1.001) || (-0.999 > dotResult && dotResult > -1.001)) {//调整方向\n // newPositions.push(arr)\n // } else {\n // let newArr = []\n // newArr[0] = arr[1]\n // newArr[1] = arr[2]\n // newArr[2] = arr[3]\n // newArr[3] = arr[0]\n // newPositions.push(newArr)\n // }\n // } else {\n // newPositions.push(arr)\n // }\n };\n for (var i = 0; i < positions.length; i++) {\n _loop();\n }\n return newPositions;\n }\n }, {\n key: \"getExtendPoint\",\n value: function getExtendPoint(position1, position2, distance) {\n // let position1 = Cesium.Cartesian3.fromDegrees(p1[0], p1[1], 0);\n // let position2 = Cesium.Cartesian3.fromDegrees(p2[0], p2[1], 0);\n var pot = Cesium.Cartesian3.subtract(position2, position1, new Cesium.Cartesian3()); //方向\n var dir = Cesium.Cartesian3.normalize(pot, new Cesium.Cartesian3()); //向量归一化\n\n var ray = new Cesium.Ray(position1, dir);\n var np = Cesium.Ray.getPoint(ray, distance * 10); //计算延长点\n return np;\n }\n }, {\n key: \"getArr\",\n value: function getArr(arr1, arr2) {\n arr2 = arr2.reverse();\n var polygon = [];\n for (var index = 0; index < arr1.length - 1; index++) {\n polygon.push([arr1[index], arr1[index + 1], arr2[index + 1], arr2[index]]);\n }\n return polygon;\n }\n }, {\n key: \"calculateRoadAngle2\",\n value: function calculateRoadAngle2(startPoint, endPoint) {\n // 1. 获取地表法向量\n var normal = this.sdk.viewer.scene.globe.ellipsoid.geodeticSurfaceNormal(startPoint, new Cesium.Cartesian3());\n\n // 2. 构建带椭球参数的ENU矩阵\n var enuMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(startPoint, this.sdk.viewer.scene.globe.ellipsoid, normal);\n var inverseMatrix = Cesium.Matrix4.inverse(enuMatrix, new Cesium.Matrix4());\n\n // 3. 转换坐标并计算相对向量\n var localEnd = Cesium.Matrix4.multiplyByPoint(inverseMatrix, endPoint, new Cesium.Cartesian3());\n var heightFactor = Math.abs(localEnd.z) / 1000; // 高度差补偿\n\n // 4. 使用四象限反正切计算角度\n var angle = Math.atan2(localEnd.y, localEnd.x);\n var adjustedAngle = angle - heightFactor * 0.01; // 高度补偿\n var result = Cesium.Math.toDegrees(adjustedAngle);\n console.log(result, 'result');\n return result;\n }\n }, {\n key: \"calculateRoadAngle\",\n value: function calculateRoadAngle(startPoint, endPoint) {\n // 1. 获取地表法向量\n var normal = Cesium.Ellipsoid.WGS84.geodeticSurfaceNormal(startPoint);\n\n // 2. 构建精确ENU坐标系\n var enuMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(startPoint, undefined, normal);\n var inverseMatrix = Cesium.Matrix4.inverse(enuMatrix, new Cesium.Matrix4());\n\n // 3. 转换终点并计算水平向量\n var localEnd = Cesium.Matrix4.multiplyByPoint(inverseMatrix, endPoint, new Cesium.Cartesian3());\n var horizontalVec = new Cesium.Cartesian2(localEnd.x, localEnd.y);\n Cesium.Cartesian2.normalize(horizontalVec, horizontalVec);\n var north = new Cesium.Cartesian2(1, 0);\n var angle = Cesium.Cartesian2.angleBetween(north, horizontalVec);\n var cross = Cesium.Cartesian2.cross(north, horizontalVec, new Cesium.Cartesian2());\n return cross < 0 ? angle : -angle;\n }\n }, {\n key: \"calculatePolygonOrientation\",\n value: function calculatePolygonOrientation(positions) {\n // 假设 position 是 Cesium.Cartesian3 对象,表示地球上的某个点\n var position = positions[0];\n // 获取东、北、上坐标系\n var eastNorthUp = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n // northAxis 是北方向向量\n var northAxis = eastNorthUp.getColumn(1, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(northAxis, northAxis);\n var direction = Cesium.Cartesian3.subtract(positions[0], positions[1], new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(direction, direction);\n var dot = Cesium.Cartesian3.dot(northAxis, direction);\n var magA = Cesium.Cartesian3.magnitude(northAxis);\n var magB = Cesium.Cartesian3.magnitude(direction);\n return Math.acos(dot / (magA * magB));\n }\n }, {\n key: \"calculateTextureRepeat\",\n value: function calculateTextureRepeat(polygonPositions, textureSize) {\n var meterPerPixel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.01;\n // 验证纹理尺寸\n if (!textureSize.width || !textureSize.height) {\n throw new Error('Texture size must contain width and height in pixels');\n }\n\n // 创建多边形几何体\n var geometry = Cesium.PolygonGeometry.createGeometry(new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(polygonPositions),\n vertexFormat: Cesium.VertexFormat.POSITION_ONLY\n }));\n\n // 计算多边形面积(平方米)\n var area = 0;\n var indices = geometry.indices;\n var positions = geometry.attributes.position.values;\n for (var i = 0; i < indices.length; i += 3) {\n var i0 = indices[i] * 3;\n var i1 = indices[i + 1] * 3;\n var i2 = indices[i + 2] * 3;\n var p0 = new Cesium.Cartesian3(positions[i0], positions[i0 + 1], positions[i0 + 2]);\n var p1 = new Cesium.Cartesian3(positions[i1], positions[i1 + 1], positions[i1 + 2]);\n var p2 = new Cesium.Cartesian3(positions[i2], positions[i2 + 1], positions[i2 + 2]);\n var cross = Cesium.Cartesian3.cross(Cesium.Cartesian3.subtract(p1, p0, new Cesium.Cartesian3()), Cesium.Cartesian3.subtract(p2, p0, new Cesium.Cartesian3()), new Cesium.Cartesian3());\n area += Cesium.Cartesian3.magnitude(cross) * 0.5;\n }\n\n // 将像素尺寸转换为实际尺寸(平方米)\n var textureWidthMeters = textureSize.width * meterPerPixel;\n var textureHeightMeters = textureSize.height * meterPerPixel;\n var textureArea = textureWidthMeters * textureHeightMeters;\n\n // 计算各轴向重复次数\n var repeatX = Math.sqrt(area) / textureWidthMeters;\n var repeatY = Math.sqrt(area) / textureHeightMeters;\n return new Cesium.Cartesian2(Math.max(1, Math.ceil(repeatX)), 1.0);\n }\n }, {\n key: \"swapLastElements\",\n value: function swapLastElements(arr1, arr2) {\n var last = arr1[arr1.length - 1];\n var first = arr2[0];\n arr1[arr1.length - 1] = first;\n arr2[0] = last;\n return [arr1, arr2];\n }\n }, {\n key: \"createLineBufferPolygonSide\",\n value: function createLineBufferPolygonSide(positions, width) {\n var area = [];\n for (var i = 0; i < positions.length; i++) {\n var posi = positions[i];\n var dir = Cesium.Cartesian3.subtract(posi[1], posi[0], new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(dir, dir);\n\n // 获取垂直向量(基于Z轴)\n var perp = Cesium.Cartesian3.cross(dir, Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perp, perp);\n\n // 生成偏移向量\n var offset = Cesium.Cartesian3.multiplyByScalar(perp, width, new Cesium.Cartesian3());\n var point1 = Cesium.Cartesian3.add(posi[0], offset, new Cesium.Cartesian3());\n var point3 = Cesium.Cartesian3.add(posi[1], offset, new Cesium.Cartesian3());\n\n // i == positions.length - 2 ? area.push(start, point1, end, point3) : area.push(start, point1)\n area.push([posi[0], point1, point3, posi[1]]);\n }\n // let arr = []\n // for (let i = 0; i < area.length - 2; i += 2) {\n // arr.push([area[i], area[i + 1], area[i + 3], area[i + 2]])\n // }\n return area;\n }\n }, {\n key: \"createLineBufferPolygon2\",\n value: function createLineBufferPolygon2(positions, width) {\n var area = [];\n var leftPositions = [];\n var rightPositions = [];\n for (var i = 0; i < positions.length - 1; i++) {\n var start = positions[i];\n // const end = positions[i + 1] || positions[i - 1];\n var end = positions[i + 1];\n var dir = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(dir, dir);\n\n // 获取垂直向量(基于Z轴)\n var perp = Cesium.Cartesian3.cross(dir, Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perp, perp);\n var dir2 = Cesium.Cartesian3.subtract(start, end, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(dir2, dir2);\n\n // 获取垂直向量(基于Z轴)\n var perp2 = Cesium.Cartesian3.cross(dir2, Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perp2, perp2);\n\n // 生成偏移向量\n var offset = Cesium.Cartesian3.multiplyByScalar(perp, width, new Cesium.Cartesian3());\n var offset2 = Cesium.Cartesian3.multiplyByScalar(perp, -width, new Cesium.Cartesian3());\n var offsetEnd = Cesium.Cartesian3.multiplyByScalar(perp2, -width, new Cesium.Cartesian3());\n var offsetEnd2 = Cesium.Cartesian3.multiplyByScalar(perp2, width, new Cesium.Cartesian3());\n var point1 = Cesium.Cartesian3.add(start, offset, new Cesium.Cartesian3());\n var point2 = Cesium.Cartesian3.add(start, offset2, new Cesium.Cartesian3());\n var point3 = Cesium.Cartesian3.add(end, offsetEnd, new Cesium.Cartesian3());\n var point4 = Cesium.Cartesian3.add(end, offsetEnd2, new Cesium.Cartesian3());\n area.push([point1, point3, point4, point2]);\n rightPositions.push([point1, point3]);\n leftPositions.push([point2, point4]);\n\n // if (i == positions.length - 2) {\n // area.push(point1, point2, point3, point4)\n // rightPositions.push(point1)\n // leftPositions.push(point2)\n // leftPositions.push(point4)\n // rightPositions.push(point3)\n // } else {\n // area.push(point1, point2)\n // rightPositions.push(point1)\n // leftPositions.push(point2)\n // }\n }\n // let arr = []\n // for (let i = 0; i < area.length - 2; i += 2) {\n // arr.push([area[i], area[i + 1], area[i + 3], area[i + 2]])\n // }\n console.log(area, rightPositions, 'rightPositions');\n var that = this;\n // return [arr, rightPositions, leftPositions]\n return [area, rightPositions, leftPositions];\n }\n }, {\n key: \"getIntersects\",\n value: function getIntersects(point1, point2, point3, point4) {\n var carPoint1 = this.getLonLat(point1);\n var carPoint2 = this.getLonLat(point2);\n var carPoint3 = this.getLonLat(point3);\n var carPoint4 = this.getLonLat(point4);\n var line1 = turf.lineString([[carPoint1.lon, carPoint1.lat], [carPoint2.lon, carPoint2.lat]]);\n var line2 = turf.lineString([[carPoint3.lon, carPoint3.lat], [carPoint4.lon, carPoint4.lat]]);\n var intersects = turf.lineIntersect(line1, line2);\n if (intersects.features.length > 0) {\n return Cesium.Cartesian3.fromDegrees(intersects.features[0].geometry.coordinates[0], intersects.features[0].geometry.coordinates[1]);\n }\n }\n }, {\n key: \"getLonLat\",\n value: function getLonLat(point) {\n var pointDe = Cesium.Cartographic.fromCartesian(point);\n var longitude = Cesium.Math.toDegrees(pointDe.longitude);\n var latitude = Cesium.Math.toDegrees(pointDe.latitude);\n return {\n lon: longitude,\n lat: latitude\n };\n }\n }, {\n key: \"createLineBufferPolygon\",\n value: function createLineBufferPolygon(viewer, positions, width) {\n // 计算每个线段的左右偏移点\n var leftPositions = [];\n var rightPositions = [];\n for (var i = 0; i < positions.length; i++) {\n var start = positions[i];\n var end = positions[i + 1] || positions[i - 1];\n\n // 计算线段方向向量\n var direction = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3());\n // const direction = Cesium.Cartesian3.subtract(start, end, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(direction, direction);\n\n // 计算垂直向量(使用上向量叉积)\n var up = Cesium.Cartesian3.UNIT_Z;\n var perpendicular = Cesium.Cartesian3.cross(direction, up, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perpendicular, perpendicular);\n\n // 计算左右偏移点\n var leftOffset = Cesium.Cartesian3.multiplyByScalar(perpendicular, width, new Cesium.Cartesian3());\n if (width > 0) {\n rightPositions.unshift(Cesium.Cartesian3.add(start, leftOffset, new Cesium.Cartesian3()));\n } else if (width < 0) {\n rightPositions.push(Cesium.Cartesian3.add(start, leftOffset, new Cesium.Cartesian3()));\n }\n }\n return rightPositions;\n }\n //计算角度\n }, {\n key: \"calculateAangle\",\n value: function calculateAangle(arr) {\n // let fromDegreesArray = that.calSector(that.options.center, that.options.radius, that.options.startAngle, that.options.endAngle, 360, true)\n\n function getAangle(start, end) {\n var rad = Math.PI / 180,\n lat1 = start.y * rad,\n lat2 = end.y * rad,\n lon1 = start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n var bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI) - 90;\n return 360 - bearing % 360;\n }\n var center = arr[0];\n var pos84_1 = arr[1];\n var pos84_2 = arr[2];\n var start = {\n x: center.lng,\n y: center.lat\n };\n var end1 = {\n x: pos84_1.lng,\n y: pos84_1.lat\n };\n var end2 = {\n x: pos84_2.lng,\n y: pos84_2.lat\n };\n var angle1 = getAangle(start, end1);\n var angle2 = getAangle(start, end2);\n return {\n angle1: angle1,\n angle2: angle2\n };\n }\n }, {\n key: \"carRoadWidth\",\n get: function get() {\n return this.options.carRoadWidth;\n },\n set: function set(v) {\n this.options.carRoadWidth = v;\n Road.create(this);\n }\n }, {\n key: \"sideWidth\",\n get: function get() {\n return this.options.sideWidth;\n },\n set: function set(v) {\n this.options.sideWidth = v;\n Road.create(this);\n }\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var _this3 = this;\n var state,\n _this,\n contentElm,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 17;\n break;\n }\n _context.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk, this.originalOptions, {\n title: '道路属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this3.name = _this3.name.trim();\n if (!_this3.name) {\n _this3.name = '道路';\n }\n _this3.originalOptions = _this3.deepCopyObj(_this3.options);\n _this3._DialogObject.close();\n _this3.Dialog.confirmCallBack && _this3.Dialog.confirmCallBack(_this3.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(_this3.sdk, _this3.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(_this3.sdk, _this3.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this3.reset();\n _this3.Dialog.resetCallBack && _this3.Dialog.resetCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this3.reset();\n _this3.Dialog.closeCallBack && _this3.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this3.show = show;\n _this3.Dialog.showCallBack && _this3.Dialog.showCallBack();\n }\n }, true);\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' road-surface';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_9__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n\n // 下拉选项\n // let heightModeData = [\n // {\n // name: '海拔高度',\n // value: '海拔高度',\n // key: '0',\n // },\n // {\n // name: '相对地表',\n // value: '相对地表',\n // key: '1',\n // },\n // {\n // name: '依附模型',\n // value: '依附模型',\n // key: '2',\n // }\n // ]\n // let heightModeObject = legp(\n // this._DialogObject._element.content.getElementsByClassName(\n // 'road-box'\n // )[0],\n // '.road-type'\n // )\n // if (heightModeObject) {\n // heightModeObject.legp_search(heightModeData)\n // let heightModeDataLegpElm = this._DialogObject._element.content\n // .getElementsByClassName('road-type')[0]\n // .getElementsByTagName('input')[0]\n // for (let i = 0; i < heightModeData.length; i++) {\n // if (heightModeData[i].key == this.heightMode) {\n // heightModeDataLegpElm.value = heightModeData[i].value\n // heightModeObject.legp_searchActive(\n // heightModeData[i].value\n // )\n // break\n // }\n // }\n // heightModeDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < heightModeData.length; i++) {\n // if (heightModeData[i].value === heightModeDataLegpElm.value) {\n // this.heightMode = heightModeData[i].key\n // break\n // }\n // }\n // })\n\n // this._elms.height = heightElm\n // this._elms.heightBox = heightBoxElm\n // this._elms.heightMode = heightModeDataLegpElm\n // this._elms.heightConfirm = heightConfirmElm\n // this._elms.heightModeObject = heightModeObject\n\n // heightConfirmElm.addEventListener('click', () => {\n // this.positionEditing = false\n // for (let i = 0; i < this.options.positions.length; i++) {\n // this.options.positions[i].alt = Number((this.options.positions[i].alt + Number(heightElm.value)).toFixed(2))\n // this._elms.alt[i].innerHTML = this.options.positions[i].alt\n // }\n // let fromDegreesArray = this.renewPositions(this.options.positions)\n // this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(\n // fromDegreesArray\n // )\n\n // this.positionEditing = false\n // PolylineObject.closeNodeEdit(this)\n // })\n // }\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n _context.next = 17;\n break;\n case 17:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.viewer.entities.getById(this.options.id)) {\n return;\n }\n this.name = this.originalOptions.name;\n this.carRoadWidth = this.originalOptions.carRoadWidth;\n this.sideWidth = this.originalOptions.sideWidth;\n this.positions = this.originalOptions.positions;\n this.roadImage = this.originalOptions.roadImage;\n this.sideImage = this.originalOptions.sideImage;\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n i,\n a,\n BoundingSphere,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeViewFollow\"])(this.sdk);\n if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n // if (!position.hasOwnProperty('alt')) {\n // position.alt = await this.getClampToHeight(position)\n // }\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n } else {\n positionArray = [];\n for (i = 0; i < this.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.positions[i][0], this.positions[i][1], this.options.height + this.options.heightDifference / 2);\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-20.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"getSphere\",\n value: function getSphere() {\n var _this4 = this;\n return new Promise(function (resolve) {\n // entity没有加载完成时 state 不会等于0 所以设置定时器直到获取到为止\n var interval = setInterval(function () {\n var sphere = new Cesium.BoundingSphere();\n var state = _this4.sdk.viewer._dataSourceDisplay.getBoundingSphere(_this4.viewer.entities.getById(_this4.options.id), false, sphere);\n if (state === Cesium.BoundingSphereState.DONE) {\n clearInterval(interval);\n }\n }, 1000);\n });\n }\n\n /**\r\n * 删除\r\n */\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n var _this5 = this;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.positions = [];\n this.lineEntity = null;\n if (this.viewer.entities.getById(this.options.id)) {\n this.viewer.entities.getById(this.options.id)._children.forEach(function (item) {\n _this5.viewer.entities.remove(item);\n });\n this.viewer.entities.remove(this.viewer.entities.getById(this.options.id));\n }\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 6;\n return this.sdk.removeIncetance(this.options.id);\n case 6:\n _context3.next = 8;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(this.sdk, this.options.id);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = [];\n that.options.positions.forEach(function (v) {\n positions.push(new Cesium.Cartesian3.fromDegrees(v.lng, v.lat, v.alt));\n });\n var newPosi = [];\n for (var i = 0; i < positions.length - 1; i++) {\n var start = positions[i];\n var end = positions[i + 1];\n newPosi.push([start, end]);\n that.pointArr = newPosi;\n }\n var area = [[], [], []];\n\n // area[1] = that.getRectangle(positions, that.options.carRoadWidth)\n area[1][0] = that.getRectangle(newPosi, that.options.carRoadWidth);\n var sideArr = that.getSideRectangle(area[1][0], that.options.sideWidth);\n area[0] = sideArr.left;\n area[2] = sideArr.right;\n // area[1] = that.createLineBufferPolygon2(positions, that.options.carRoadWidth / 2)\n // area[1] = newPositions\n // area[0] = that.createLineBufferPolygonSide(area[1][2], -that.options.sideWidth)\n // area[2] = that.createLineBufferPolygonSide(area[1][1], that.options.sideWidth)\n\n //判断道路边是否相交\n for (var _i = 0; _i < area[0].length - 1; _i++) {\n var leftItem = area[0][_i];\n var leftItem2 = area[0][_i + 1];\n var rightItem = area[2][_i];\n var rightItem2 = area[2][_i + 1];\n var carItem = area[1][0][_i];\n var carItem2 = area[1][0][_i + 1];\n var leftLine = that.getIntersects(leftItem[2], leftItem[3], leftItem2[2], leftItem2[3]);\n var rightLine = that.getIntersects(rightItem[0], rightItem[1], rightItem2[0], rightItem2[1]);\n if (!leftLine && !rightLine) {\n for (var index = 0; index < 4; index++) {\n var _positions = [];\n index === 0 ? _positions.push(leftItem[2], leftItem[3]) : index === 1 ? _positions.push(leftItem2[2], leftItem2[3]) : index === 2 ? _positions.push(rightItem[0], rightItem[1]) : _positions.push(rightItem2[0], rightItem2[1]);\n that.sdk.viewer.entities.add({\n polyline: {\n positions: _positions,\n width: 10.0,\n material: new Cesium.PolylineGlowMaterialProperty({\n color: index === 0 ? Cesium.Color.RED : index === 1 ? Cesium.Color.BLUE : index === 2 ? Cesium.Color.YELLOW : Cesium.Color.GREEN,\n glowPower: 0.25\n })\n }\n });\n }\n }\n console.log(leftLine, rightLine, 'leftLine');\n if (leftLine) {\n //左侧相交\n //获取右侧延长交点\n var point1 = that.getExtendPoint(rightItem[0], rightItem[1], 1000);\n var point2 = that.getExtendPoint(rightItem2[1], rightItem2[0], 1000);\n console.log('aaaa');\n var rightIntersection = that.getIntersects(rightItem[0], point1, rightItem2[1], point2);\n //将其他几条边都延长\n var leftLineNeiPoint = that.getExtendPoint(leftItem[0], leftItem[1], 1000);\n var carLeftPoint = that.getExtendPoint(carItem[3], carItem[2], 1000);\n var carRightPoint = that.getExtendPoint(carItem[0], carItem[1], 1000);\n var rightLineNeiPoint = that.getExtendPoint(rightItem[3], rightItem[2], 1000);\n console.log(leftLine, rightIntersection, leftItem[0], leftLineNeiPoint, 'bbbb');\n //跟左侧里相交点\n var leftLineNei = that.getIntersects(leftLine, rightIntersection, leftItem[0], leftLineNeiPoint);\n console.log(leftLineNei, 'leftLineNei');\n //跟车道左侧相交点\n var carLeft = that.getIntersects(leftLine, rightIntersection, carItem[3], carLeftPoint);\n\n //跟车道右侧相交点\n var carRight = that.getIntersects(leftLine, rightIntersection, carItem[0], carRightPoint);\n var rightLineNei = that.getIntersects(leftLine, rightIntersection, rightItem[3], rightLineNeiPoint);\n console.log('ccc');\n // let leftLineNei = that.getIntersects(leftLine, rightItem[2], leftItem[0], leftItem[3])\n // let carLeft = that.getIntersects(leftLine, rightItem[2], carItem[3], carItem[2])\n // let carRight = that.getIntersects(leftLine, rightItem[2], carItem[0], carItem[1])\n // let rightLineNei = that.getIntersects(leftLine, rightItem[2], rightItem[0], rightItem[3])\n\n // let leftLineNei = that.getIntersects(leftLine, intersection, leftItem[0], leftItem[3])\n // //跟车道左侧相交点\n // let carLeft = that.getIntersects(leftLine, intersection, carItem[3], carItem[2])\n // //跟车道右侧相交点\n // let carRight = that.getIntersects(leftLine, intersection, carItem[0], carItem[1])\n // let rightLineNei = that.getIntersects(leftLine, intersection, rightItem[0], rightItem[3])\n\n leftItem[2] = leftLine;\n leftItem[1] = leftLineNei;\n carItem[2] = carLeft;\n carItem[1] = carRight;\n rightItem[2] = rightLineNei;\n rightItem[1] = rightIntersection;\n console.log(leftItem, carItem, rightItem, 'leftItemleft');\n\n //将其他几条边都延长\n var leftLineNeiPoint2 = that.getExtendPoint(leftItem2[1], leftItem2[0], 1000);\n var carLeftPoint2 = that.getExtendPoint(carItem2[2], carItem2[3], 1000);\n var carRightPoint2 = that.getExtendPoint(carItem2[1], carItem2[0], 1000);\n var rightLineNeiPoint2 = that.getExtendPoint(rightItem2[2], rightItem2[3], 1000);\n\n // let leftLineNei2 = that.getIntersects(leftLine, rightItem2[1], leftItem2[0], leftItem2[3])\n // let carLeft2 = that.getIntersects(leftLine, rightItem2[1], carItem2[3], carItem2[2])\n // let carRight2 = that.getIntersects(leftLine, rightItem2[1], carItem2[0], carItem2[1])\n // let rightLineNei2 = that.getIntersects(leftLine, rightItem2[1], rightItem2[0], rightItem2[3])\n\n var leftLineNei2 = that.getIntersects(leftLine, rightIntersection, leftItem2[1], leftLineNeiPoint2);\n var carLeft2 = that.getIntersects(leftLine, rightIntersection, carItem2[2], carLeftPoint2);\n var carRight2 = that.getIntersects(leftLine, rightIntersection, carItem2[1], carRightPoint2);\n var rightLineNei2 = that.getIntersects(leftLine, rightIntersection, rightItem2[2], rightLineNeiPoint2);\n\n // let arr = [leftLine, rightIntersection, leftItem2[3], leftLineNeiPoint2]\n // arr.forEach((item, index) => {\n // that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: item,\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // color: Cesium.Color.WHITE.withAlpha(0.99)\n // },\n // label: {\n // text: '' + index,\n // pixelOffset: { x: 0, y: -20 },\n // },\n // })\n // })\n\n // let leftLineNei2 = that.getIntersects(leftLine, intersection, leftItem2[0], leftItem2[3])\n // //跟车道左侧相交点\n // let carLeft2 = that.getIntersects(leftLine, intersection, carItem2[3], carItem2[2])\n // //跟车道右侧相交点\n // let carRight2 = that.getIntersects(leftLine, intersection, carItem2[0], carItem2[1])\n // let rightLineNei2 = that.getIntersects(leftLine, intersection, rightItem2[0], rightItem2[3])\n\n leftItem2[3] = leftLine;\n leftItem2[0] = leftLineNei;\n carItem2[3] = carLeft;\n carItem2[0] = carRight;\n rightItem2[3] = rightLineNei;\n rightItem2[0] = rightIntersection;\n console.log(leftItem2, carItem2, rightItem2, 'leftItem2left');\n } else if (rightLine) {\n //右侧相交\n\n //获取左侧延长交点\n var _point = that.getExtendPoint(leftItem[3], leftItem[2], 1000);\n var _point2 = that.getExtendPoint(leftItem2[2], leftItem2[3], 1000);\n var _rightIntersection = that.getIntersects(leftItem[3], _point, leftItem2[2], _point2);\n if (!_rightIntersection) {\n return;\n }\n //将其他几条边都延长\n var _leftLineNeiPoint = that.getExtendPoint(leftItem[0], leftItem[1], 1000);\n var _carLeftPoint = that.getExtendPoint(carItem[3], carItem[2], 1000);\n var _carRightPoint = that.getExtendPoint(carItem[0], carItem[1], 1000);\n var _rightLineNeiPoint = that.getExtendPoint(rightItem[3], rightItem[2], 1000);\n\n // //跟左侧里相交点\n var _leftLineNei = that.getIntersects(rightLine, _rightIntersection, leftItem[0], _leftLineNeiPoint);\n //跟车道左侧相交点\n var _carLeft = that.getIntersects(rightLine, _rightIntersection, carItem[3], _carLeftPoint);\n //跟车道右侧相交点\n var _carRight = that.getIntersects(rightLine, _rightIntersection, carItem[0], _carRightPoint);\n var _rightLineNei = that.getIntersects(rightLine, _rightIntersection, rightItem[3], _rightLineNeiPoint);\n // //跟左侧里相交点\n // let leftLineNei = that.getIntersects(rightLine, leftItem[2], leftItem[0], leftItem[3])\n // //跟车道左侧相交点\n // let carLeft = that.getIntersects(rightLine, leftItem[2], carItem[3], carItem[2])\n // //跟车道右侧相交点\n // let carRight = that.getIntersects(rightLine, leftItem[2], carItem[0], carItem[1])\n // let rightLineNei = that.getIntersects(rightLine, leftItem[2], rightItem[0], rightItem[3])\n\n leftItem[2] = _rightIntersection;\n leftItem[1] = _leftLineNei;\n carItem[2] = _carLeft;\n carItem[1] = _carRight;\n rightItem[2] = _rightLineNei;\n rightItem[1] = rightLine;\n console.log(leftItem, carItem, rightItem, 'leftItemright');\n\n //将其他几条边都延长\n var _leftLineNeiPoint2 = that.getExtendPoint(leftItem2[2], leftItem2[3], 1000);\n var _carLeftPoint2 = that.getExtendPoint(carItem2[2], carItem2[3], 1000);\n var _carRightPoint2 = that.getExtendPoint(carItem2[1], carItem2[0], 1000);\n var _rightLineNeiPoint2 = that.getExtendPoint(rightItem2[2], rightItem2[3], 1000);\n var _leftLineNei2 = that.getIntersects(rightLine, _rightIntersection, leftItem2[1], _leftLineNeiPoint2);\n //跟车道左侧相交点\n var _carLeft2 = that.getIntersects(rightLine, _rightIntersection, carItem2[2], _carLeftPoint2);\n //跟车道右侧相交点\n var _carRight2 = that.getIntersects(rightLine, _rightIntersection, carItem2[1], _carRightPoint2);\n var _rightLineNei2 = that.getIntersects(rightLine, _rightIntersection, rightItem2[2], _rightLineNeiPoint2);\n // let leftLineNei2 = that.getIntersects(rightLine, leftItem2[1], leftItem2[0], leftItem2[3])\n // //跟车道左侧相交点\n // let carLeft2 = that.getIntersects(rightLine, leftItem2[1], carItem2[3], carItem2[2])\n // //跟车道右侧相交点\n // let carRight2 = that.getIntersects(rightLine, leftItem2[1], carItem2[0], carItem2[1])\n // let rightLineNei2 = that.getIntersects(rightLine, leftItem2[1], rightItem2[0], rightItem2[3])\n\n leftItem2[3] = _rightIntersection;\n leftItem2[0] = _leftLineNei;\n carItem2[3] = _carLeft;\n carItem2[0] = _carRight;\n rightItem2[3] = _rightLineNei;\n rightItem2[0] = rightLine;\n console.log(leftItem2, carItem2, rightItem2, 'leftItem2right');\n }\n }\n if (that.viewer.entities.getById(that.options.id)) {\n that.viewer.entities.getById(that.options.id)._children.forEach(function (item) {\n that.viewer.entities.remove(item);\n });\n that.viewer.entities.remove(that.viewer.entities.getById(that.options.id));\n }\n that.lineEntity = that.viewer.entities.add(new Cesium.Entity({\n id: that.options.id,\n show: that.options.show\n }));\n var myImg = new Image();\n myImg.src = that.options.roadImage;\n myImg.onload = function () {\n console.log(area[1][0], that.options.roadImage, 'llll');\n area[1][0].forEach(function (item, index) {\n that.viewer.entities.add({\n // id: that.options.id,\n parent: that.lineEntity,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(item),\n material: new Cesium.ImageMaterialProperty({\n image: that.options.roadImage,\n transparent: true,\n // 如果图片有透明部分,需要设置为 true\n repeat: that.calculateTextureRepeat(item, myImg)\n }),\n stRotation: that.calculateRoadAngle(positions[index], positions[index + 1])\n }\n });\n });\n };\n var myImg2 = new Image();\n myImg2.src = that.options.sideImage;\n myImg2.onload = function () {\n // area[0].forEach((item, index) => {\n area[0].forEach(function (item, index) {\n that.viewer.entities.add({\n parent: that.lineEntity,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(item),\n material: new Cesium.ImageMaterialProperty({\n image: that.options.sideImage,\n transparent: true,\n // 如果图片有透明部分,需要设置为 true\n repeat: that.calculateTextureRepeat(item, myImg2)\n }),\n stRotation: that.calculateRoadAngle(positions[index], positions[index + 1])\n }\n });\n });\n\n // area[2].forEach((item, index) => {\n area[2].forEach(function (item, index) {\n that.viewer.entities.add({\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(item),\n material: new Cesium.ImageMaterialProperty({\n image: that.options.sideImage,\n transparent: true,\n // 如果图片有透明部分,需要设置为 true\n repeat: that.calculateTextureRepeat(item, myImg2)\n }),\n stRotation: that.calculateRoadAngle(positions[index], positions[index + 1])\n }\n });\n });\n };\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Road);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUm9hZE9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Sb2FkT2JqZWN0L2luZGV4LmpzPzc1M2IiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDpgZPot69cclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIFJvYWQgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOmBk+i3r1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOmBk+i3r+WxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWU95pyq5ZG95ZCN5a+56LGhIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNhclJvYWRXaWR0aD0yIHtudW1iZXJ9IOi9pumBk+WuveW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNpZGVXaWR0aD0yIHtudW1iZXJ9IOS6uuihjOmBk+WuveW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9ucz1bXSB7YXJyYXl9IOmBk+i3r3Bvc2l0aW9uc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJvYWRJbWFnZT0nJyB7c3RyaW5nfSDovabpgZPotLTlm75cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaWRlSW1hZ2U9Jycge3N0cmluZ30g5Lq66KGM6YGT6LS05Zu+XHJcbiAgICogQHBhcmFtIERpYWxvZyB7b2JqZWN0fSDlvLnmoYblr7nosaFcclxuICAgKiBAcGFyYW0gRGlhbG9nLmNvbmZpcm1DYWxsQmFjayB7ZnVuY3Rpb259IOW8ueahhuehruiupOaXtueahOWbnuiwg1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMudmlld2VyID0gdGhpcy5zZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn6YGT6LevJ1xyXG4gICAgdGhpcy5vcHRpb25zLmNhclJvYWRXaWR0aCA9IG9wdGlvbnMuY2FyUm9hZFdpZHRoIHx8IDEwXHJcbiAgICB0aGlzLm9wdGlvbnMuc2lkZVdpZHRoID0gb3B0aW9ucy5zaWRlV2lkdGggfHwgNVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMucm9hZEltYWdlID0gb3B0aW9ucy5yb2FkSW1hZ2UgfHwgKHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3JvYWRQaG90by5wbmcnKVxyXG4gICAgdGhpcy5vcHRpb25zLnNpZGVJbWFnZSA9IG9wdGlvbnMuc2lkZUltYWdlIHx8ICh0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9zaWRlUGhvdG8ucG5nJylcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLnBvc2l0aW9uQXJlYSA9IFtdXHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmxpbmVFbnRpdHkgPSAnJ1xyXG4gICAgdGhpcy5jcm9zc0FyciA9IFtdXHJcbiAgICB0aGlzLnBvaW50QXJyID0gW11cclxuXHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgLy8gUm9hZC5jcmVhdGUodGhpcylcclxuICAgIC8vIGNvbnNvbGUubG9nKCcxMjEyJylcclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUNvcnJpZG9yKHZpZXdlciwgcG9zaXRpb25zLCB3aWR0aCkge1xyXG4gICAgICAvLyDorqHnrpfkuKTkvqfpobbngrnkvY3nva5cclxuICAgICAgY29uc3QgbGVmdFBvc2l0aW9ucyA9IFtdO1xyXG4gICAgICBjb25zdCByaWdodFBvc2l0aW9ucyA9IFtdO1xyXG4gICAgICBjb25zdCB0b3BQb3NpdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgIC8vIOeUn+aIkOS4pOS+p+WSjOmhtumDqOmhtueCuVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gcG9zaXRpb25zW2ldO1xyXG4gICAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uc1tpICsgMV07XHJcblxyXG4gICAgICAgIGlmICghbmV4dFBvc2l0aW9uKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgLy8g6K6h566X5pa55ZCR5ZCR6YePXHJcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgICAgICBuZXh0UG9zaXRpb24sXHJcbiAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBkaXJlY3Rpb24pO1xyXG5cclxuICAgICAgICAvLyDorqHnrpflnoLnm7TlkJHph49cclxuICAgICAgICBjb25zdCBub3JtYWwgPSBDZXNpdW0uQ2FydGVzaWFuMy5jcm9zcyhcclxuICAgICAgICAgIGRpcmVjdGlvbixcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLlVOSVRfWixcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUobm9ybWFsLCBub3JtYWwpO1xyXG5cclxuICAgICAgICAvLyDorqHnrpfkuKTkvqflgY/np7vph49cclxuICAgICAgICBjb25zdCBvZmZzZXQgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKFxyXG4gICAgICAgICAgbm9ybWFsLFxyXG4gICAgICAgICAgd2lkdGggLyAyLFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyDlt6bkvqfngrlcclxuICAgICAgICBjb25zdCBsZWZ0ID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHBvc2l0aW9uLCBvZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgICBsZWZ0UG9zaXRpb25zLnB1c2gobGVmdC54LCBsZWZ0LnksIGxlZnQueik7XHJcblxyXG4gICAgICAgIC8vIOWPs+S+p+eCuVxyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QocG9zaXRpb24sIG9mZnNldCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgICAgIHJpZ2h0UG9zaXRpb25zLnB1c2gocmlnaHQueCwgcmlnaHQueSwgcmlnaHQueik7XHJcblxyXG4gICAgICAgIC8vIOmhtumDqOeCue+8iOmrmOW6puWinuWKoO+8iVxyXG4gICAgICAgIGNvbnN0IHRvcCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmNsb25lKHBvc2l0aW9uKTtcclxuICAgICAgICB0b3AueiArPSAxMDA7IC8vIOiuvue9rumhtumDqOmrmOW6plxyXG4gICAgICAgIHRvcFBvc2l0aW9ucy5wdXNoKHRvcC54LCB0b3AueSwgdG9wLnopO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDlkIjlubbmiYDmnInpobbngrlcclxuICAgICAgY29uc3QgYWxsUG9zaXRpb25zID0gbmV3IEZsb2F0NjRBcnJheShbXHJcbiAgICAgICAgLi4ubGVmdFBvc2l0aW9ucyxcclxuICAgICAgICAuLi5yaWdodFBvc2l0aW9ucyxcclxuICAgICAgICAuLi50b3BQb3NpdGlvbnNcclxuICAgICAgXSk7XHJcblxyXG4gICAgICAvLyDliJvlu7rlh6DkvZXkvZNcclxuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgQ2VzaXVtLkdlb21ldHJ5KHtcclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5HZW9tZXRyeUF0dHJpYnV0ZSh7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudERhdGF0eXBlOiBDZXNpdW0uQ29tcG9uZW50RGF0YXR5cGUuRE9VQkxFLFxyXG4gICAgICAgICAgICBjb21wb25lbnRzUGVyQXR0cmlidXRlOiAzLFxyXG4gICAgICAgICAgICB2YWx1ZXM6IGFsbFBvc2l0aW9uc1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGluZGljZXM6IG5ldyBVaW50MTZBcnJheShbXHJcbiAgICAgICAgICAvLyDlt6bkvqfpnaLntKLlvJVcclxuICAgICAgICAgIDAsIDEsIDMsXHJcbiAgICAgICAgICAxLCA0LCAzLFxyXG4gICAgICAgICAgLy8g5Y+z5L6n6Z2i57Si5byVXHJcbiAgICAgICAgICAyLCA1LCA2LFxyXG4gICAgICAgICAgMiwgNiwgNyxcclxuICAgICAgICAgIC8vIOmhtumdoue0ouW8lVxyXG4gICAgICAgICAgOCwgOSwgMTAsXHJcbiAgICAgICAgICA4LCAxMCwgMTFcclxuICAgICAgICBdKSxcclxuICAgICAgICBwcmltaXRpdmVUeXBlOiBDZXNpdW0uUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsXHJcbiAgICAgICAgYm91bmRpbmdTcGhlcmU6IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMoYWxsUG9zaXRpb25zKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIOWIm+W7uuWbvuWFg1xyXG4gICAgICBjb25zdCBwcmltaXRpdmUgPSBuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeTogZ2VvbWV0cnlcclxuICAgICAgICB9KSxcclxuICAgICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlKHtcclxuICAgICAgICAgIGZsYXQ6IHRydWUsXHJcbiAgICAgICAgICB0cmFuc2x1Y2VudDogZmFsc2VcclxuICAgICAgICB9KSxcclxuICAgICAgICBhc3luY2hyb25vdXM6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHByaW1pdGl2ZSk7XHJcbiAgICAgIHJldHVybiBwcmltaXRpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5L2/55So56S65L6LXHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFtcclxuICAgICAgLTc1LjAsIDM5LjAsXHJcbiAgICAgIC03NC41LCAzOS41LFxyXG4gICAgICAtNzQuMCwgNDAuMFxyXG4gICAgXSk7XHJcbiAgICBjcmVhdGVDdXN0b21Db3JyaWRvcih0aGlzLnNkay52aWV3ZXIsIHBvc2l0aW9ucywgMTAwMCk7XHJcbiAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC03NS4wLCAzOS4wLCAxMDApLFxyXG4gICAgICAvLyBvcmllbnRhdGlvbjoge1xyXG4gICAgICAvLyAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwKSxcclxuICAgICAgLy8gICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0zMCksXHJcbiAgICAgIC8vICAgcm9sbDogMC4wXHJcbiAgICAgIC8vIH1cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIC8vIOWIm+W7uui1sOW7iuWHoOS9leS9k1xyXG4gIGNyZWF0ZUNvcnJpZG9yKG15SW1nKSB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFtcclxuICAgICAgMTE2LjM5MSwgMzkuOTA3LCAgLy8g5YyX5LqsXHJcbiAgICAgIDExNi40MDQsIDM5LjkxNCxcclxuICAgICAgMTE2LjQxNywgMzkuOTIxLFxyXG4gICAgICAxMTYuNDMwLCAzOS45MjhcclxuICAgIF0pO1xyXG5cclxuICAgIGNvbnN0IGNvcnJpZG9ySW5zdGFuY2UgPSBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICBnZW9tZXRyeTogbmV3IENlc2l1bS5Db3JyaWRvckdlb21ldHJ5KHtcclxuICAgICAgICBwb3NpdGlvbnM6IHBvc2l0aW9ucyxcclxuICAgICAgICB3aWR0aDogMjAwLjAsXHJcbiAgICAgICAgdmVydGV4Rm9ybWF0OiBDZXNpdW0uVmVydGV4Rm9ybWF0LlBPU0lUSU9OX0FORF9TVCxcclxuICAgICAgICBjb3JuZXJUeXBlOiBDZXNpdW0uQ29ybmVyVHlwZS5ST1VOREVEXHJcbiAgICAgIH0pLFxyXG4gICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKENlc2l1bS5Db2xvci5XSElURSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcHJpbWl0aXZlID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogY29ycmlkb3JJbnN0YW5jZSxcclxuICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5NYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLk1hdGVyaWFsKHtcclxuICAgICAgICAgIGZhYnJpYzoge1xyXG4gICAgICAgICAgICB0eXBlOiAnSW1hZ2UnLFxyXG4gICAgICAgICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgICAgICAgIGltYWdlOiBteUltZ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdHJhbnNsdWNlbnQ6IGZhbHNlXHJcbiAgICAgIH0pLFxyXG4gICAgICBhc3luY2hyb25vdXM6IGZhbHNlXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQocHJpbWl0aXZlKTtcclxuXHJcbiAgICAvLyDlrprkvY3liLDotbDlu4pcclxuICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoMTE2LjQwNCwgMzkuOTE0LCAyMDAwKSxcclxuICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtMzApLFxyXG4gICAgICAgIHJvbGw6IDAuMFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcHJpbWl0aXZlO1xyXG4gIH1cclxuICAvLyDliJvlu7rpgZPot69cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICBwb3NpdGlvbnMucHVzaChuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModi5sbmcsIHYubGF0LCB2LmFsdCkpXHJcbiAgICB9KVxyXG4gICAgbGV0IG5ld1Bvc2kgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcG9zaXRpb25zW2ldO1xyXG4gICAgICBjb25zdCBlbmQgPSBwb3NpdGlvbnNbaSArIDFdO1xyXG4gICAgICBuZXdQb3NpLnB1c2goW3N0YXJ0LCBlbmRdKVxyXG4gICAgICB0aGF0LnBvaW50QXJyID0gbmV3UG9zaVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBhcmVhID0gW1tdLCBbXSwgW11dXHJcblxyXG4gICAgLy8gYXJlYVsxXSA9IHRoYXQuZ2V0UmVjdGFuZ2xlKHBvc2l0aW9ucywgdGhhdC5vcHRpb25zLmNhclJvYWRXaWR0aClcclxuICAgIGFyZWFbMV1bMF0gPSB0aGF0LmdldFJlY3RhbmdsZShuZXdQb3NpLCB0aGF0Lm9wdGlvbnMuY2FyUm9hZFdpZHRoKVxyXG4gICAgbGV0IHNpZGVBcnIgPSB0aGF0LmdldFNpZGVSZWN0YW5nbGUoYXJlYVsxXVswXSwgdGhhdC5vcHRpb25zLnNpZGVXaWR0aClcclxuICAgIGFyZWFbMF0gPSBzaWRlQXJyLmxlZnRcclxuICAgIGFyZWFbMl0gPSBzaWRlQXJyLnJpZ2h0XHJcbiAgICAvLyBhcmVhWzFdID0gdGhhdC5jcmVhdGVMaW5lQnVmZmVyUG9seWdvbjIocG9zaXRpb25zLCB0aGF0Lm9wdGlvbnMuY2FyUm9hZFdpZHRoIC8gMilcclxuICAgIC8vIGFyZWFbMV0gPSBuZXdQb3NpdGlvbnNcclxuICAgIC8vIGFyZWFbMF0gPSB0aGF0LmNyZWF0ZUxpbmVCdWZmZXJQb2x5Z29uU2lkZShhcmVhWzFdWzJdLCAtdGhhdC5vcHRpb25zLnNpZGVXaWR0aClcclxuICAgIC8vIGFyZWFbMl0gPSB0aGF0LmNyZWF0ZUxpbmVCdWZmZXJQb2x5Z29uU2lkZShhcmVhWzFdWzFdLCB0aGF0Lm9wdGlvbnMuc2lkZVdpZHRoKVxyXG5cclxuICAgIC8v5Yik5pat6YGT6Lev6L655piv5ZCm55u45LqkXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZWFbMF0ubGVuZ3RoIC0gMTsgaSsrKSB7XHJcblxyXG4gICAgICBsZXQgbGVmdEl0ZW0gPSBhcmVhWzBdW2ldXHJcbiAgICAgIGxldCBsZWZ0SXRlbTIgPSBhcmVhWzBdW2kgKyAxXVxyXG4gICAgICBsZXQgcmlnaHRJdGVtID0gYXJlYVsyXVtpXVxyXG4gICAgICBsZXQgcmlnaHRJdGVtMiA9IGFyZWFbMl1baSArIDFdXHJcbiAgICAgIGxldCBjYXJJdGVtID0gYXJlYVsxXVswXVtpXVxyXG4gICAgICBsZXQgY2FySXRlbTIgPSBhcmVhWzFdWzBdW2kgKyAxXVxyXG4gICAgICBsZXQgbGVmdExpbmUgPSB0aGF0LmdldEludGVyc2VjdHMobGVmdEl0ZW1bMl0sIGxlZnRJdGVtWzNdLCBsZWZ0SXRlbTJbMl0sIGxlZnRJdGVtMlszXSlcclxuICAgICAgbGV0IHJpZ2h0TGluZSA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodEl0ZW1bMF0sIHJpZ2h0SXRlbVsxXSwgcmlnaHRJdGVtMlswXSwgcmlnaHRJdGVtMlsxXSlcclxuICAgICAgaWYgKCFsZWZ0TGluZSAmJiAhcmlnaHRMaW5lKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDQ7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgaW5kZXggPT09IDAgPyBwb3NpdGlvbnMucHVzaChsZWZ0SXRlbVsyXSwgbGVmdEl0ZW1bM10pIDogaW5kZXggPT09IDEgPyBwb3NpdGlvbnMucHVzaChsZWZ0SXRlbTJbMl0sIGxlZnRJdGVtMlszXSkgOiBpbmRleCA9PT0gMiA/IHBvc2l0aW9ucy5wdXNoKHJpZ2h0SXRlbVswXSwgcmlnaHRJdGVtWzFdKSA6IHBvc2l0aW9ucy5wdXNoKHJpZ2h0SXRlbTJbMF0sIHJpZ2h0SXRlbTJbMV0pXHJcbiAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IHBvc2l0aW9ucyxcclxuICAgICAgICAgICAgICB3aWR0aDogMTAuMCxcclxuICAgICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZUdsb3dNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBpbmRleCA9PT0gMCA/IENlc2l1bS5Db2xvci5SRUQgOiBpbmRleCA9PT0gMSA/IENlc2l1bS5Db2xvci5CTFVFIDogaW5kZXggPT09IDIgPyBDZXNpdW0uQ29sb3IuWUVMTE9XIDogQ2VzaXVtLkNvbG9yLkdSRUVOLFxyXG4gICAgICAgICAgICAgICAgZ2xvd1Bvd2VyOiAwLjI1LFxyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKGxlZnRMaW5lLCByaWdodExpbmUsICdsZWZ0TGluZScpXHJcbiAgICAgIGlmIChsZWZ0TGluZSkgey8v5bem5L6n55u45LqkXHJcbiAgICAgICAgLy/ojrflj5blj7Pkvqflu7bplb/kuqTngrlcclxuICAgICAgICBsZXQgcG9pbnQxID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW1bMF0sIHJpZ2h0SXRlbVsxXSwgMTAwMClcclxuICAgICAgICBsZXQgcG9pbnQyID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW0yWzFdLCByaWdodEl0ZW0yWzBdLCAxMDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdhYWFhJylcclxuICAgICAgICBsZXQgcmlnaHRJbnRlcnNlY3Rpb24gPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRJdGVtWzBdLCBwb2ludDEsIHJpZ2h0SXRlbTJbMV0sIHBvaW50MilcclxuICAgICAgICAvL+WwhuWFtuS7luWHoOadoei+uemDveW7tumVv1xyXG4gICAgICAgIGxldCBsZWZ0TGluZU5laVBvaW50ID0gdGhhdC5nZXRFeHRlbmRQb2ludChsZWZ0SXRlbVswXSwgbGVmdEl0ZW1bMV0sIDEwMDApXHJcbiAgICAgICAgbGV0IGNhckxlZnRQb2ludCA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQoY2FySXRlbVszXSwgY2FySXRlbVsyXSwgMTAwMClcclxuICAgICAgICBsZXQgY2FyUmlnaHRQb2ludCA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQoY2FySXRlbVswXSwgY2FySXRlbVsxXSwgMTAwMClcclxuXHJcbiAgICAgICAgbGV0IHJpZ2h0TGluZU5laVBvaW50ID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW1bM10sIHJpZ2h0SXRlbVsyXSwgMTAwMClcclxuXHJcblxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGxlZnRJdGVtWzBdLCBsZWZ0TGluZU5laVBvaW50LCAnYmJiYicpXHJcbiAgICAgICAgLy/ot5/lt6bkvqfph4znm7jkuqTngrlcclxuICAgICAgICBsZXQgbGVmdExpbmVOZWkgPSB0aGF0LmdldEludGVyc2VjdHMobGVmdExpbmUsIHJpZ2h0SW50ZXJzZWN0aW9uLCBsZWZ0SXRlbVswXSwgbGVmdExpbmVOZWlQb2ludClcclxuICAgICAgICBjb25zb2xlLmxvZyhsZWZ0TGluZU5laSwgJ2xlZnRMaW5lTmVpJylcclxuICAgICAgICAvL+i3n+i9pumBk+W3puS+p+ebuOS6pOeCuVxyXG4gICAgICAgIGxldCBjYXJMZWZ0ID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCByaWdodEludGVyc2VjdGlvbiwgY2FySXRlbVszXSwgY2FyTGVmdFBvaW50KVxyXG5cclxuICAgICAgICAvL+i3n+i9pumBk+WPs+S+p+ebuOS6pOeCuVxyXG4gICAgICAgIGxldCBjYXJSaWdodCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGNhckl0ZW1bMF0sIGNhclJpZ2h0UG9pbnQpXHJcbiAgICAgICAgbGV0IHJpZ2h0TGluZU5laSA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIHJpZ2h0SXRlbVszXSwgcmlnaHRMaW5lTmVpUG9pbnQpXHJcbiAgICAgICAgY29uc29sZS5sb2coJ2NjYycpXHJcbiAgICAgICAgLy8gbGV0IGxlZnRMaW5lTmVpID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCByaWdodEl0ZW1bMl0sIGxlZnRJdGVtWzBdLCBsZWZ0SXRlbVszXSlcclxuICAgICAgICAvLyBsZXQgY2FyTGVmdCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJdGVtWzJdLCBjYXJJdGVtWzNdLCBjYXJJdGVtWzJdKVxyXG4gICAgICAgIC8vIGxldCBjYXJSaWdodCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJdGVtWzJdLCBjYXJJdGVtWzBdLCBjYXJJdGVtWzFdKVxyXG4gICAgICAgIC8vIGxldCByaWdodExpbmVOZWkgPSB0aGF0LmdldEludGVyc2VjdHMobGVmdExpbmUsIHJpZ2h0SXRlbVsyXSwgcmlnaHRJdGVtWzBdLCByaWdodEl0ZW1bM10pXHJcblxyXG4gICAgICAgIC8vIGxldCBsZWZ0TGluZU5laSA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCBsZWZ0SXRlbVswXSwgbGVmdEl0ZW1bM10pXHJcbiAgICAgICAgLy8gLy/ot5/ovabpgZPlt6bkvqfnm7jkuqTngrlcclxuICAgICAgICAvLyBsZXQgY2FyTGVmdCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCBjYXJJdGVtWzNdLCBjYXJJdGVtWzJdKVxyXG4gICAgICAgIC8vIC8v6Lef6L2m6YGT5Y+z5L6n55u45Lqk54K5XHJcbiAgICAgICAgLy8gbGV0IGNhclJpZ2h0ID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCBpbnRlcnNlY3Rpb24sIGNhckl0ZW1bMF0sIGNhckl0ZW1bMV0pXHJcbiAgICAgICAgLy8gbGV0IHJpZ2h0TGluZU5laSA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCByaWdodEl0ZW1bMF0sIHJpZ2h0SXRlbVszXSlcclxuXHJcbiAgICAgICAgbGVmdEl0ZW1bMl0gPSBsZWZ0TGluZVxyXG4gICAgICAgIGxlZnRJdGVtWzFdID0gbGVmdExpbmVOZWlcclxuICAgICAgICBjYXJJdGVtWzJdID0gY2FyTGVmdFxyXG4gICAgICAgIGNhckl0ZW1bMV0gPSBjYXJSaWdodFxyXG4gICAgICAgIHJpZ2h0SXRlbVsyXSA9IHJpZ2h0TGluZU5laVxyXG4gICAgICAgIHJpZ2h0SXRlbVsxXSA9IHJpZ2h0SW50ZXJzZWN0aW9uXHJcbiAgICAgICAgY29uc29sZS5sb2cobGVmdEl0ZW0sIGNhckl0ZW0sIHJpZ2h0SXRlbSwgJ2xlZnRJdGVtbGVmdCcpXHJcblxyXG5cclxuICAgICAgICAvL+WwhuWFtuS7luWHoOadoei+uemDveW7tumVv1xyXG4gICAgICAgIGxldCBsZWZ0TGluZU5laVBvaW50MiA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQobGVmdEl0ZW0yWzFdLCBsZWZ0SXRlbTJbMF0sIDEwMDApXHJcbiAgICAgICAgbGV0IGNhckxlZnRQb2ludDIgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW0yWzJdLCBjYXJJdGVtMlszXSwgMTAwMClcclxuICAgICAgICBsZXQgY2FyUmlnaHRQb2ludDIgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW0yWzFdLCBjYXJJdGVtMlswXSwgMTAwMClcclxuICAgICAgICBsZXQgcmlnaHRMaW5lTmVpUG9pbnQyID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW0yWzJdLCByaWdodEl0ZW0yWzNdLCAxMDAwKVxyXG5cclxuICAgICAgICAvLyBsZXQgbGVmdExpbmVOZWkyID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCByaWdodEl0ZW0yWzFdLCBsZWZ0SXRlbTJbMF0sIGxlZnRJdGVtMlszXSlcclxuICAgICAgICAvLyBsZXQgY2FyTGVmdDIgPSB0aGF0LmdldEludGVyc2VjdHMobGVmdExpbmUsIHJpZ2h0SXRlbTJbMV0sIGNhckl0ZW0yWzNdLCBjYXJJdGVtMlsyXSlcclxuICAgICAgICAvLyBsZXQgY2FyUmlnaHQyID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCByaWdodEl0ZW0yWzFdLCBjYXJJdGVtMlswXSwgY2FySXRlbTJbMV0pXHJcbiAgICAgICAgLy8gbGV0IHJpZ2h0TGluZU5laTIgPSB0aGF0LmdldEludGVyc2VjdHMobGVmdExpbmUsIHJpZ2h0SXRlbTJbMV0sIHJpZ2h0SXRlbTJbMF0sIHJpZ2h0SXRlbTJbM10pXHJcblxyXG5cclxuXHJcbiAgICAgICAgbGV0IGxlZnRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGxlZnRJdGVtMlsxXSwgbGVmdExpbmVOZWlQb2ludDIpXHJcbiAgICAgICAgbGV0IGNhckxlZnQyID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCByaWdodEludGVyc2VjdGlvbiwgY2FySXRlbTJbMl0sIGNhckxlZnRQb2ludDIpXHJcbiAgICAgICAgbGV0IGNhclJpZ2h0MiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGNhckl0ZW0yWzFdLCBjYXJSaWdodFBvaW50MilcclxuICAgICAgICBsZXQgcmlnaHRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIHJpZ2h0SXRlbTJbMl0sIHJpZ2h0TGluZU5laVBvaW50MilcclxuXHJcbiAgICAgICAgLy8gbGV0IGFyciA9IFtsZWZ0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGxlZnRJdGVtMlszXSwgbGVmdExpbmVOZWlQb2ludDJdXHJcbiAgICAgICAgLy8gYXJyLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgLy8gICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAvLyAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgIC8vICAgICBpbmRleDogaSxcclxuICAgICAgICAvLyAgICAgcG9zaXRpb246IGl0ZW0sXHJcbiAgICAgICAgLy8gICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgIC8vICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgIC8vICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAvLyAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgIC8vICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgIC8vICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICAgIGxhYmVsOiB7XHJcbiAgICAgICAgLy8gICAgICAgdGV4dDogJycgKyBpbmRleCxcclxuICAgICAgICAvLyAgICAgICBwaXhlbE9mZnNldDogeyB4OiAwLCB5OiAtMjAgfSxcclxuICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAvLyAgIH0pXHJcbiAgICAgICAgLy8gfSlcclxuXHJcbiAgICAgICAgLy8gbGV0IGxlZnRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCBsZWZ0SXRlbTJbMF0sIGxlZnRJdGVtMlszXSlcclxuICAgICAgICAvLyAvL+i3n+i9pumBk+W3puS+p+ebuOS6pOeCuVxyXG4gICAgICAgIC8vIGxldCBjYXJMZWZ0MiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCBjYXJJdGVtMlszXSwgY2FySXRlbTJbMl0pXHJcbiAgICAgICAgLy8gLy/ot5/ovabpgZPlj7Pkvqfnm7jkuqTngrlcclxuICAgICAgICAvLyBsZXQgY2FyUmlnaHQyID0gdGhhdC5nZXRJbnRlcnNlY3RzKGxlZnRMaW5lLCBpbnRlcnNlY3Rpb24sIGNhckl0ZW0yWzBdLCBjYXJJdGVtMlsxXSlcclxuICAgICAgICAvLyBsZXQgcmlnaHRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0TGluZSwgaW50ZXJzZWN0aW9uLCByaWdodEl0ZW0yWzBdLCByaWdodEl0ZW0yWzNdKVxyXG5cclxuICAgICAgICBsZWZ0SXRlbTJbM10gPSBsZWZ0TGluZVxyXG4gICAgICAgIGxlZnRJdGVtMlswXSA9IGxlZnRMaW5lTmVpXHJcbiAgICAgICAgY2FySXRlbTJbM10gPSBjYXJMZWZ0XHJcbiAgICAgICAgY2FySXRlbTJbMF0gPSBjYXJSaWdodFxyXG4gICAgICAgIHJpZ2h0SXRlbTJbM10gPSByaWdodExpbmVOZWlcclxuICAgICAgICByaWdodEl0ZW0yWzBdID0gcmlnaHRJbnRlcnNlY3Rpb25cclxuICAgICAgICBjb25zb2xlLmxvZyhsZWZ0SXRlbTIsIGNhckl0ZW0yLCByaWdodEl0ZW0yLCAnbGVmdEl0ZW0ybGVmdCcpXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHJpZ2h0TGluZSkgey8v5Y+z5L6n55u45LqkXHJcblxyXG4gICAgICAgIC8v6I635Y+W5bem5L6n5bu26ZW/5Lqk54K5XHJcbiAgICAgICAgbGV0IHBvaW50MSA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQobGVmdEl0ZW1bM10sIGxlZnRJdGVtWzJdLCAxMDAwKVxyXG4gICAgICAgIGxldCBwb2ludDIgPSB0aGF0LmdldEV4dGVuZFBvaW50KGxlZnRJdGVtMlsyXSwgbGVmdEl0ZW0yWzNdLCAxMDAwKVxyXG4gICAgICAgIGxldCByaWdodEludGVyc2VjdGlvbiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhsZWZ0SXRlbVszXSwgcG9pbnQxLCBsZWZ0SXRlbTJbMl0sIHBvaW50MilcclxuICAgICAgICBpZiAoIXJpZ2h0SW50ZXJzZWN0aW9uKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgLy/lsIblhbbku5blh6DmnaHovrnpg73lu7bplb9cclxuICAgICAgICBsZXQgbGVmdExpbmVOZWlQb2ludCA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQobGVmdEl0ZW1bMF0sIGxlZnRJdGVtWzFdLCAxMDAwKVxyXG4gICAgICAgIGxldCBjYXJMZWZ0UG9pbnQgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW1bM10sIGNhckl0ZW1bMl0sIDEwMDApXHJcbiAgICAgICAgbGV0IGNhclJpZ2h0UG9pbnQgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW1bMF0sIGNhckl0ZW1bMV0sIDEwMDApXHJcbiAgICAgICAgbGV0IHJpZ2h0TGluZU5laVBvaW50ID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW1bM10sIHJpZ2h0SXRlbVsyXSwgMTAwMClcclxuXHJcbiAgICAgICAgLy8gLy/ot5/lt6bkvqfph4znm7jkuqTngrlcclxuICAgICAgICBsZXQgbGVmdExpbmVOZWkgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCByaWdodEludGVyc2VjdGlvbiwgbGVmdEl0ZW1bMF0sIGxlZnRMaW5lTmVpUG9pbnQpXHJcbiAgICAgICAgLy/ot5/ovabpgZPlt6bkvqfnm7jkuqTngrlcclxuICAgICAgICBsZXQgY2FyTGVmdCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodExpbmUsIHJpZ2h0SW50ZXJzZWN0aW9uLCBjYXJJdGVtWzNdLCBjYXJMZWZ0UG9pbnQpXHJcbiAgICAgICAgLy/ot5/ovabpgZPlj7Pkvqfnm7jkuqTngrlcclxuICAgICAgICBsZXQgY2FyUmlnaHQgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCByaWdodEludGVyc2VjdGlvbiwgY2FySXRlbVswXSwgY2FyUmlnaHRQb2ludClcclxuICAgICAgICBsZXQgcmlnaHRMaW5lTmVpID0gdGhhdC5nZXRJbnRlcnNlY3RzKHJpZ2h0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIHJpZ2h0SXRlbVszXSwgcmlnaHRMaW5lTmVpUG9pbnQpXHJcbiAgICAgICAgLy8gLy/ot5/lt6bkvqfph4znm7jkuqTngrlcclxuICAgICAgICAvLyBsZXQgbGVmdExpbmVOZWkgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCBsZWZ0SXRlbVsyXSwgbGVmdEl0ZW1bMF0sIGxlZnRJdGVtWzNdKVxyXG4gICAgICAgIC8vIC8v6Lef6L2m6YGT5bem5L6n55u45Lqk54K5XHJcbiAgICAgICAgLy8gbGV0IGNhckxlZnQgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCBsZWZ0SXRlbVsyXSwgY2FySXRlbVszXSwgY2FySXRlbVsyXSlcclxuICAgICAgICAvLyAvL+i3n+i9pumBk+WPs+S+p+ebuOS6pOeCuVxyXG4gICAgICAgIC8vIGxldCBjYXJSaWdodCA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodExpbmUsIGxlZnRJdGVtWzJdLCBjYXJJdGVtWzBdLCBjYXJJdGVtWzFdKVxyXG4gICAgICAgIC8vIGxldCByaWdodExpbmVOZWkgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCBsZWZ0SXRlbVsyXSwgcmlnaHRJdGVtWzBdLCByaWdodEl0ZW1bM10pXHJcblxyXG5cclxuICAgICAgICBsZWZ0SXRlbVsyXSA9IHJpZ2h0SW50ZXJzZWN0aW9uXHJcbiAgICAgICAgbGVmdEl0ZW1bMV0gPSBsZWZ0TGluZU5laVxyXG4gICAgICAgIGNhckl0ZW1bMl0gPSBjYXJMZWZ0XHJcbiAgICAgICAgY2FySXRlbVsxXSA9IGNhclJpZ2h0XHJcbiAgICAgICAgcmlnaHRJdGVtWzJdID0gcmlnaHRMaW5lTmVpXHJcbiAgICAgICAgcmlnaHRJdGVtWzFdID0gcmlnaHRMaW5lXHJcbiAgICAgICAgY29uc29sZS5sb2cobGVmdEl0ZW0sIGNhckl0ZW0sIHJpZ2h0SXRlbSwgJ2xlZnRJdGVtcmlnaHQnKVxyXG5cclxuICAgICAgICAvL+WwhuWFtuS7luWHoOadoei+uemDveW7tumVv1xyXG4gICAgICAgIGxldCBsZWZ0TGluZU5laVBvaW50MiA9IHRoYXQuZ2V0RXh0ZW5kUG9pbnQobGVmdEl0ZW0yWzJdLCBsZWZ0SXRlbTJbM10sIDEwMDApXHJcbiAgICAgICAgbGV0IGNhckxlZnRQb2ludDIgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW0yWzJdLCBjYXJJdGVtMlszXSwgMTAwMClcclxuICAgICAgICBsZXQgY2FyUmlnaHRQb2ludDIgPSB0aGF0LmdldEV4dGVuZFBvaW50KGNhckl0ZW0yWzFdLCBjYXJJdGVtMlswXSwgMTAwMClcclxuICAgICAgICBsZXQgcmlnaHRMaW5lTmVpUG9pbnQyID0gdGhhdC5nZXRFeHRlbmRQb2ludChyaWdodEl0ZW0yWzJdLCByaWdodEl0ZW0yWzNdLCAxMDAwKVxyXG5cclxuICAgICAgICBsZXQgbGVmdExpbmVOZWkyID0gdGhhdC5nZXRJbnRlcnNlY3RzKHJpZ2h0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGxlZnRJdGVtMlsxXSwgbGVmdExpbmVOZWlQb2ludDIpXHJcbiAgICAgICAgLy/ot5/ovabpgZPlt6bkvqfnm7jkuqTngrlcclxuICAgICAgICBsZXQgY2FyTGVmdDIgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCByaWdodEludGVyc2VjdGlvbiwgY2FySXRlbTJbMl0sIGNhckxlZnRQb2ludDIpXHJcbiAgICAgICAgLy/ot5/ovabpgZPlj7Pkvqfnm7jkuqTngrlcclxuICAgICAgICBsZXQgY2FyUmlnaHQyID0gdGhhdC5nZXRJbnRlcnNlY3RzKHJpZ2h0TGluZSwgcmlnaHRJbnRlcnNlY3Rpb24sIGNhckl0ZW0yWzFdLCBjYXJSaWdodFBvaW50MilcclxuICAgICAgICBsZXQgcmlnaHRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodExpbmUsIHJpZ2h0SW50ZXJzZWN0aW9uLCByaWdodEl0ZW0yWzJdLCByaWdodExpbmVOZWlQb2ludDIpXHJcbiAgICAgICAgLy8gbGV0IGxlZnRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodExpbmUsIGxlZnRJdGVtMlsxXSwgbGVmdEl0ZW0yWzBdLCBsZWZ0SXRlbTJbM10pXHJcbiAgICAgICAgLy8gLy/ot5/ovabpgZPlt6bkvqfnm7jkuqTngrlcclxuICAgICAgICAvLyBsZXQgY2FyTGVmdDIgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCBsZWZ0SXRlbTJbMV0sIGNhckl0ZW0yWzNdLCBjYXJJdGVtMlsyXSlcclxuICAgICAgICAvLyAvL+i3n+i9pumBk+WPs+S+p+ebuOS6pOeCuVxyXG4gICAgICAgIC8vIGxldCBjYXJSaWdodDIgPSB0aGF0LmdldEludGVyc2VjdHMocmlnaHRMaW5lLCBsZWZ0SXRlbTJbMV0sIGNhckl0ZW0yWzBdLCBjYXJJdGVtMlsxXSlcclxuICAgICAgICAvLyBsZXQgcmlnaHRMaW5lTmVpMiA9IHRoYXQuZ2V0SW50ZXJzZWN0cyhyaWdodExpbmUsIGxlZnRJdGVtMlsxXSwgcmlnaHRJdGVtMlswXSwgcmlnaHRJdGVtMlszXSlcclxuXHJcbiAgICAgICAgbGVmdEl0ZW0yWzNdID0gcmlnaHRJbnRlcnNlY3Rpb25cclxuICAgICAgICBsZWZ0SXRlbTJbMF0gPSBsZWZ0TGluZU5laVxyXG4gICAgICAgIGNhckl0ZW0yWzNdID0gY2FyTGVmdFxyXG4gICAgICAgIGNhckl0ZW0yWzBdID0gY2FyUmlnaHRcclxuICAgICAgICByaWdodEl0ZW0yWzNdID0gcmlnaHRMaW5lTmVpXHJcbiAgICAgICAgcmlnaHRJdGVtMlswXSA9IHJpZ2h0TGluZVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGxlZnRJdGVtMiwgY2FySXRlbTIsIHJpZ2h0SXRlbTIsICdsZWZ0SXRlbTJyaWdodCcpXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoYXQudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhhdC5vcHRpb25zLmlkKSkge1xyXG4gICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoYXQub3B0aW9ucy5pZCkuX2NoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGF0Lm9wdGlvbnMuaWQpKVxyXG4gICAgfVxyXG4gICAgdGhhdC5saW5lRW50aXR5ID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHsgaWQ6IHRoYXQub3B0aW9ucy5pZCwgc2hvdzogdGhhdC5vcHRpb25zLnNob3cgfSkpXHJcblxyXG4gICAgY29uc3QgbXlJbWcgPSBuZXcgSW1hZ2UoKVxyXG4gICAgbXlJbWcuc3JjID0gdGhhdC5vcHRpb25zLnJvYWRJbWFnZVxyXG4gICAgbXlJbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhhcmVhWzFdWzBdLCB0aGF0Lm9wdGlvbnMucm9hZEltYWdlLCAnbGxsbCcpXHJcbiAgICAgIGFyZWFbMV1bMF0uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgLy8gaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgIHBhcmVudDogdGhhdC5saW5lRW50aXR5LFxyXG4gICAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShpdGVtKSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uSW1hZ2VNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgICBpbWFnZTogdGhhdC5vcHRpb25zLnJvYWRJbWFnZSxcclxuICAgICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSwvLyDlpoLmnpzlm77niYfmnInpgI/mmI7pg6jliIbvvIzpnIDopoHorr7nva7kuLogdHJ1ZVxyXG4gICAgICAgICAgICAgIHJlcGVhdDogdGhhdC5jYWxjdWxhdGVUZXh0dXJlUmVwZWF0KGl0ZW0sIG15SW1nKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3RSb3RhdGlvbjogdGhhdC5jYWxjdWxhdGVSb2FkQW5nbGUocG9zaXRpb25zW2luZGV4XSwgcG9zaXRpb25zW2luZGV4ICsgMV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbXlJbWcyID0gbmV3IEltYWdlKClcclxuICAgIG15SW1nMi5zcmMgPSB0aGF0Lm9wdGlvbnMuc2lkZUltYWdlXHJcbiAgICBteUltZzIub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyBhcmVhWzBdLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGFyZWFbMF0uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgcGFyZW50OiB0aGF0LmxpbmVFbnRpdHksXHJcbiAgICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGl0ZW0pLFxyXG4gICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5JbWFnZU1hdGVyaWFsUHJvcGVydHkoe1xyXG4gICAgICAgICAgICAgIGltYWdlOiB0aGF0Lm9wdGlvbnMuc2lkZUltYWdlLFxyXG4gICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLC8vIOWmguaenOWbvueJh+aciemAj+aYjumDqOWIhu+8jOmcgOimgeiuvue9ruS4uiB0cnVlXHJcbiAgICAgICAgICAgICAgcmVwZWF0OiB0aGF0LmNhbGN1bGF0ZVRleHR1cmVSZXBlYXQoaXRlbSwgbXlJbWcyKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3RSb3RhdGlvbjogdGhhdC5jYWxjdWxhdGVSb2FkQW5nbGUocG9zaXRpb25zW2luZGV4XSwgcG9zaXRpb25zW2luZGV4ICsgMV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyBhcmVhWzJdLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGFyZWFbMl0uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShpdGVtKSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uSW1hZ2VNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgICBpbWFnZTogdGhhdC5vcHRpb25zLnNpZGVJbWFnZSxcclxuICAgICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSwvLyDlpoLmnpzlm77niYfmnInpgI/mmI7pg6jliIbvvIzpnIDopoHorr7nva7kuLogdHJ1ZVxyXG4gICAgICAgICAgICAgIHJlcGVhdDogdGhhdC5jYWxjdWxhdGVUZXh0dXJlUmVwZWF0KGl0ZW0sIG15SW1nMilcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN0Um90YXRpb246IHRoYXQuY2FsY3VsYXRlUm9hZEFuZ2xlKHBvc2l0aW9uc1tpbmRleF0sIHBvc2l0aW9uc1tpbmRleCArIDFdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGdldFNpZGVSZWN0YW5nbGUocG9zaXRpb25zLCB3aWR0aCkge1xyXG4gICAgbGV0IHJpZ2h0ID0gW11cclxuICAgIGxldCBsZWZ0ID0gW11cclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgcG9zaXRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHJpZ2h0LnB1c2goW2l0ZW1bMF0sIGl0ZW1bMV1dKVxyXG4gICAgICBsZWZ0LnB1c2goW2l0ZW1bMl0sIGl0ZW1bM11dKVxyXG4gICAgfSlcclxuICAgIGxldCByaWdodFBvc2kgPSB0aGF0LmdldFJlY3RhbmdsZShyaWdodCwgd2lkdGgsICdzaWRlJylcclxuXHJcbiAgICBsZXQgbGVmdFBvc2kgPSB0aGlzLmdldFJlY3RhbmdsZShsZWZ0LCB3aWR0aCwgJ3NpZGUnKVxyXG4gICAgcmV0dXJuIHsgbGVmdDogbGVmdFBvc2ksIHJpZ2h0OiByaWdodFBvc2kgfVxyXG4gIH1cclxuICBnZXRSZWN0YW5nbGUocG9zaXRpb25zLCB3aWR0aCwgdHlwZSkge1xyXG4gICAgbGV0IGFyZWFBcnIgPSBbXVxyXG4gICAgbGV0IG5ld1Bvc2l0aW9ucyA9IFtdXHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBwb3NpdGlvbnNbaV1bMF07XHJcbiAgICAgIGNvbnN0IGVuZCA9IHBvc2l0aW9uc1tpXVsxXTtcclxuXHJcbiAgICAgIGFyZWFBcnJbaV0gPSBbXVxyXG4gICAgICBsZXQgcG9zaSA9IFtdXHJcbiAgICAgIGxldCBPdXRsaW5lZ2VvbWV0cnkgPSBuZXcgQ2VzaXVtLkNvcnJpZG9yR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvc2l0aW9uczogW3N0YXJ0LCBlbmRdLFxyXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgICBjb3JuZXJUeXBlOiBDZXNpdW0uQ29ybmVyVHlwZS5NSVRFUkVELFxyXG4gICAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLk1hdGVyaWFsQXBwZWFyYW5jZS5NYXRlcmlhbFN1cHBvcnQuQUxMLnZlcnRleEZvcm1hdFxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgZ2VvbWV0cnkgPSBDZXNpdW0uQ29ycmlkb3JHZW9tZXRyeS5jcmVhdGVHZW9tZXRyeShPdXRsaW5lZ2VvbWV0cnkpXHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoOyBqICs9IDMpIHtcclxuICAgICAgICBsZXQgdmFsID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXNbal0sIGdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzW2ogKyAxXSwgZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXNbaiArIDJdKSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgIHBvc2kucHVzaChbdmFsLmxuZywgdmFsLmxhdF0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgZ2VvbWV0cnkuaW5kaWNlcy5sZW5ndGg7IHggKz0gMykge1xyXG4gICAgICAgIGFyZWFBcnJbaV0ucHVzaCh0dXJmLnBvbHlnb24oW1twb3NpW2dlb21ldHJ5LmluZGljZXNbeF1dLCBwb3NpW2dlb21ldHJ5LmluZGljZXNbeCArIDFdXSwgcG9zaVtnZW9tZXRyeS5pbmRpY2VzW3ggKyAyXV0sIHBvc2lbZ2VvbWV0cnkuaW5kaWNlc1t4XV1dXSkpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBnZW9qc29uID0gdHVyZi51bmlvbihhcmVhQXJyW2ldWzBdLCBhcmVhQXJyW2ldWzFdKTtcclxuICAgICAgbGV0IGFyciA9IFtdXHJcbiAgICAgIGdlb2pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ucG9wKClcclxuICAgICAgZ2VvanNvbi5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGFyci5wdXNoKG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhpdGVtWzBdLCBpdGVtWzFdKSlcclxuICAgICAgfSlcclxuICAgICAgbGV0IGRvdFJlc3VsdCwgYW5nbGVcclxuICAgICAgY29uc3QgdGVtcFZlYyA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpO1xyXG5cclxuICAgICAgLy8g6K6h566X5bm25b2S5LiA5YyW56ys5LiA5Liq5ZCR6YePXHJcbiAgICAgIGNvbnN0IHZlY3RvcjEgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QodGhhdC5wb2ludEFycltpXVsxXSwgdGhhdC5wb2ludEFycltpXVswXSwgdGVtcFZlYyksXHJcbiAgICAgICAgdGVtcFZlY1xyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8g6K6h566X5bm25b2S5LiA5YyW56ys5LqM5Liq5ZCR6YePXHJcbiAgICAgIGNvbnN0IHZlY3RvcjIgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoXHJcbiAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoYXJyWzFdLCBhcnJbMF0sIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZG90UmVzdWx0ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZG90KHZlY3RvcjEsIHZlY3RvcjIpO1xyXG4gICAgICBpZiAoKDAuOTk5IDwgZG90UmVzdWx0ICYmIGRvdFJlc3VsdCA8IDEuMDAxKSB8fCAoLTAuOTk5ID4gZG90UmVzdWx0ICYmIGRvdFJlc3VsdCA+IC0xLjAwMSkpIHsvL+iwg+aVtOaWueWQkVxyXG4gICAgICAgIG5ld1Bvc2l0aW9ucy5wdXNoKGFycilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgbmV3QXJyID0gW11cclxuICAgICAgICBuZXdBcnJbMF0gPSBhcnJbMV1cclxuICAgICAgICBuZXdBcnJbMV0gPSBhcnJbMl1cclxuICAgICAgICBuZXdBcnJbMl0gPSBhcnJbM11cclxuICAgICAgICBuZXdBcnJbM10gPSBhcnJbMF1cclxuICAgICAgICBuZXdQb3NpdGlvbnMucHVzaChuZXdBcnIpXHJcbiAgICAgIH1cclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8gaWYgKCF0eXBlKSB7XHJcbiAgICAgIC8vICAgLy8gaWYgKGNyb3NzID4gMCAmJiAhdHlwZSkgey8v6LCD5pW05pa55ZCRXHJcbiAgICAgIC8vICAgaWYgKCgwLjk5OSA8IGRvdFJlc3VsdCAmJiBkb3RSZXN1bHQgPCAxLjAwMSkgfHwgKC0wLjk5OSA+IGRvdFJlc3VsdCAmJiBkb3RSZXN1bHQgPiAtMS4wMDEpKSB7Ly/osIPmlbTmlrnlkJFcclxuICAgICAgLy8gICAgIG5ld1Bvc2l0aW9ucy5wdXNoKGFycilcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgbGV0IG5ld0FyciA9IFtdXHJcbiAgICAgIC8vICAgICBuZXdBcnJbMF0gPSBhcnJbMV1cclxuICAgICAgLy8gICAgIG5ld0FyclsxXSA9IGFyclsyXVxyXG4gICAgICAvLyAgICAgbmV3QXJyWzJdID0gYXJyWzNdXHJcbiAgICAgIC8vICAgICBuZXdBcnJbM10gPSBhcnJbMF1cclxuICAgICAgLy8gICAgIG5ld1Bvc2l0aW9ucy5wdXNoKG5ld0FycilcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgbmV3UG9zaXRpb25zLnB1c2goYXJyKVxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3UG9zaXRpb25zXHJcbiAgfVxyXG4gIGdldEV4dGVuZFBvaW50KHBvc2l0aW9uMSwgcG9zaXRpb24yLCBkaXN0YW5jZSkge1xyXG4gICAgLy8gbGV0IHBvc2l0aW9uMSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAxWzBdLCBwMVsxXSwgMCk7XHJcbiAgICAvLyBsZXQgcG9zaXRpb24yID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocDJbMF0sIHAyWzFdLCAwKTtcclxuICAgIGxldCBwb3QgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwb3NpdGlvbjIsIHBvc2l0aW9uMSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpOy8v5pa55ZCRXHJcbiAgICB2YXIgZGlyID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKHBvdCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpOy8v5ZCR6YeP5b2S5LiA5YyWXHJcblxyXG4gICAgdmFyIHJheSA9IG5ldyBDZXNpdW0uUmF5KHBvc2l0aW9uMSwgZGlyKTtcclxuICAgIGxldCBucCA9IENlc2l1bS5SYXkuZ2V0UG9pbnQocmF5LCBkaXN0YW5jZSAqIDEwKTsvL+iuoeeul+W7tumVv+eCuVxyXG4gICAgcmV0dXJuIG5wXHJcbiAgfVxyXG4gIGdldEFycihhcnIxLCBhcnIyKSB7XHJcbiAgICBhcnIyID0gYXJyMi5yZXZlcnNlKClcclxuICAgIGxldCBwb2x5Z29uID0gW11cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnIxLmxlbmd0aCAtIDE7IGluZGV4KyspIHtcclxuICAgICAgcG9seWdvbi5wdXNoKFthcnIxW2luZGV4XSwgYXJyMVtpbmRleCArIDFdLCBhcnIyW2luZGV4ICsgMV0sIGFycjJbaW5kZXhdXSlcclxuICAgIH1cclxuICAgIHJldHVybiBwb2x5Z29uXHJcbiAgfVxyXG4gIGNhbGN1bGF0ZVJvYWRBbmdsZTIoc3RhcnRQb2ludCwgZW5kUG9pbnQpIHtcclxuICAgIC8vIDEuIOiOt+WPluWcsOihqOazleWQkemHj1xyXG4gICAgY29uc3Qgbm9ybWFsID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoXHJcbiAgICAgIHN0YXJ0UG9pbnQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuXHJcbiAgICAvLyAyLiDmnoTlu7rluKbmpK3nkIPlj4LmlbDnmoRFTlXnn6npmLVcclxuICAgIGNvbnN0IGVudU1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKFxyXG4gICAgICBzdGFydFBvaW50LCB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLCBub3JtYWwpO1xyXG4gICAgY29uc3QgaW52ZXJzZU1hdHJpeCA9IENlc2l1bS5NYXRyaXg0LmludmVyc2UoXHJcbiAgICAgIGVudU1hdHJpeCwgbmV3IENlc2l1bS5NYXRyaXg0KCkpO1xyXG5cclxuICAgIC8vIDMuIOi9rOaNouWdkOagh+W5tuiuoeeul+ebuOWvueWQkemHj1xyXG4gICAgY29uc3QgbG9jYWxFbmQgPSBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQoXHJcbiAgICAgIGludmVyc2VNYXRyaXgsIGVuZFBvaW50LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBoZWlnaHRGYWN0b3IgPSBNYXRoLmFicyhsb2NhbEVuZC56KSAvIDEwMDA7IC8vIOmrmOW6puW3ruihpeWBv1xyXG5cclxuICAgIC8vIDQuIOS9v+eUqOWbm+ixoemZkOWPjeato+WIh+iuoeeul+inkuW6plxyXG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKGxvY2FsRW5kLnksIGxvY2FsRW5kLngpO1xyXG4gICAgY29uc3QgYWRqdXN0ZWRBbmdsZSA9IGFuZ2xlIC0gKGhlaWdodEZhY3RvciAqIDAuMDEpOyAvLyDpq5jluqbooaXlgb9cclxuICAgIGxldCByZXN1bHQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoYWRqdXN0ZWRBbmdsZSlcclxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCwgJ3Jlc3VsdCcpXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBjYWxjdWxhdGVSb2FkQW5nbGUoc3RhcnRQb2ludCwgZW5kUG9pbnQpIHtcclxuICAgIC8vIDEuIOiOt+WPluWcsOihqOazleWQkemHj1xyXG4gICAgY29uc3Qgbm9ybWFsID0gQ2VzaXVtLkVsbGlwc29pZC5XR1M4NC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoc3RhcnRQb2ludCk7XHJcblxyXG4gICAgLy8gMi4g5p6E5bu657K+56GuRU5V5Z2Q5qCH57O7XHJcbiAgICBjb25zdCBlbnVNYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShzdGFydFBvaW50LCB1bmRlZmluZWQsIG5vcm1hbCk7XHJcbiAgICBjb25zdCBpbnZlcnNlTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZShlbnVNYXRyaXgsIG5ldyBDZXNpdW0uTWF0cml4NCgpKTtcclxuXHJcbiAgICAvLyAzLiDovazmjaLnu4jngrnlubborqHnrpfmsLTlubPlkJHph49cclxuICAgIGNvbnN0IGxvY2FsRW5kID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KGludmVyc2VNYXRyaXgsIGVuZFBvaW50LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBob3Jpem9udGFsVmVjID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKGxvY2FsRW5kLngsIGxvY2FsRW5kLnkpO1xyXG4gICAgQ2VzaXVtLkNhcnRlc2lhbjIubm9ybWFsaXplKGhvcml6b250YWxWZWMsIGhvcml6b250YWxWZWMpO1xyXG5cclxuICAgIGNvbnN0IG5vcnRoID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDEsIDApO1xyXG5cclxuICAgIGNvbnN0IGFuZ2xlID0gQ2VzaXVtLkNhcnRlc2lhbjIuYW5nbGVCZXR3ZWVuKG5vcnRoLCBob3Jpem9udGFsVmVjKTtcclxuICAgIGNvbnN0IGNyb3NzID0gQ2VzaXVtLkNhcnRlc2lhbjIuY3Jvc3Mobm9ydGgsIGhvcml6b250YWxWZWMsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMigpKTtcclxuICAgIHJldHVybiBjcm9zcyA8IDAgPyBhbmdsZSA6IC1hbmdsZTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVBvbHlnb25PcmllbnRhdGlvbihwb3NpdGlvbnMpIHtcclxuXHJcbiAgICAvLyDlgYforr4gcG9zaXRpb24g5pivIENlc2l1bS5DYXJ0ZXNpYW4zIOWvueixoe+8jOihqOekuuWcsOeQg+S4iueahOafkOS4queCuVxyXG4gICAgdmFyIHBvc2l0aW9uID0gcG9zaXRpb25zWzBdXHJcbiAgICAvLyDojrflj5bkuJzjgIHljJfjgIHkuIrlnZDmoIfns7tcclxuICAgIHZhciBlYXN0Tm9ydGhVcCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKTtcclxuICAgIC8vIG5vcnRoQXhpcyDmmK/ljJfmlrnlkJHlkJHph49cclxuICAgIHZhciBub3J0aEF4aXMgPSBlYXN0Tm9ydGhVcC5nZXRDb2x1bW4oMSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKG5vcnRoQXhpcywgbm9ydGhBeGlzKTtcclxuXHJcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwb3NpdGlvbnNbMF0sIHBvc2l0aW9uc1sxXSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpcmVjdGlvbiwgZGlyZWN0aW9uKTtcclxuXHJcblxyXG4gICAgY29uc3QgZG90ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZG90KG5vcnRoQXhpcywgZGlyZWN0aW9uKTtcclxuICAgIGNvbnN0IG1hZ0EgPSBDZXNpdW0uQ2FydGVzaWFuMy5tYWduaXR1ZGUobm9ydGhBeGlzKTtcclxuICAgIGNvbnN0IG1hZ0IgPSBDZXNpdW0uQ2FydGVzaWFuMy5tYWduaXR1ZGUoZGlyZWN0aW9uKTtcclxuICAgIHJldHVybiBNYXRoLmFjb3MoZG90IC8gKG1hZ0EgKiBtYWdCKSk7XHJcbiAgfVxyXG4gIGNhbGN1bGF0ZVRleHR1cmVSZXBlYXQocG9seWdvblBvc2l0aW9ucywgdGV4dHVyZVNpemUsIG1ldGVyUGVyUGl4ZWwgPSAwLjAxKSB7XHJcbiAgICAvLyDpqozor4HnurnnkIblsLrlr7hcclxuICAgIGlmICghdGV4dHVyZVNpemUud2lkdGggfHwgIXRleHR1cmVTaXplLmhlaWdodCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RleHR1cmUgc2l6ZSBtdXN0IGNvbnRhaW4gd2lkdGggYW5kIGhlaWdodCBpbiBwaXhlbHMnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDliJvlu7rlpJrovrnlvaLlh6DkvZXkvZNcclxuICAgIGNvbnN0IGdlb21ldHJ5ID0gQ2VzaXVtLlBvbHlnb25HZW9tZXRyeS5jcmVhdGVHZW9tZXRyeShcclxuICAgICAgbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb2x5Z29uUG9zaXRpb25zKSxcclxuICAgICAgICB2ZXJ0ZXhGb3JtYXQ6IENlc2l1bS5WZXJ0ZXhGb3JtYXQuUE9TSVRJT05fT05MWVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyDorqHnrpflpJrovrnlvaLpnaLnp68o5bmz5pa557GzKVxyXG4gICAgbGV0IGFyZWEgPSAwO1xyXG4gICAgY29uc3QgaW5kaWNlcyA9IGdlb21ldHJ5LmluZGljZXM7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkgKz0gMykge1xyXG4gICAgICBjb25zdCBpMCA9IGluZGljZXNbaV0gKiAzO1xyXG4gICAgICBjb25zdCBpMSA9IGluZGljZXNbaSArIDFdICogMztcclxuICAgICAgY29uc3QgaTIgPSBpbmRpY2VzW2kgKyAyXSAqIDM7XHJcblxyXG4gICAgICBjb25zdCBwMCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhwb3NpdGlvbnNbaTBdLCBwb3NpdGlvbnNbaTAgKyAxXSwgcG9zaXRpb25zW2kwICsgMl0pO1xyXG4gICAgICBjb25zdCBwMSA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhwb3NpdGlvbnNbaTFdLCBwb3NpdGlvbnNbaTEgKyAxXSwgcG9zaXRpb25zW2kxICsgMl0pO1xyXG4gICAgICBjb25zdCBwMiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhwb3NpdGlvbnNbaTJdLCBwb3NpdGlvbnNbaTIgKyAxXSwgcG9zaXRpb25zW2kyICsgMl0pO1xyXG5cclxuICAgICAgY29uc3QgY3Jvc3MgPSBDZXNpdW0uQ2FydGVzaWFuMy5jcm9zcyhcclxuICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwMSwgcDAsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSxcclxuICAgICAgICBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChwMiwgcDAsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApO1xyXG4gICAgICBhcmVhICs9IENlc2l1bS5DYXJ0ZXNpYW4zLm1hZ25pdHVkZShjcm9zcykgKiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5bCG5YOP57Sg5bC65a+46L2s5o2i5Li65a6e6ZmF5bC65a+477yI5bmz5pa557Gz77yJXHJcbiAgICBjb25zdCB0ZXh0dXJlV2lkdGhNZXRlcnMgPSB0ZXh0dXJlU2l6ZS53aWR0aCAqIG1ldGVyUGVyUGl4ZWw7XHJcbiAgICBjb25zdCB0ZXh0dXJlSGVpZ2h0TWV0ZXJzID0gdGV4dHVyZVNpemUuaGVpZ2h0ICogbWV0ZXJQZXJQaXhlbDtcclxuICAgIGNvbnN0IHRleHR1cmVBcmVhID0gdGV4dHVyZVdpZHRoTWV0ZXJzICogdGV4dHVyZUhlaWdodE1ldGVycztcclxuXHJcbiAgICAvLyDorqHnrpflkITovbTlkJHph43lpI3mrKHmlbBcclxuICAgIGNvbnN0IHJlcGVhdFggPSBNYXRoLnNxcnQoYXJlYSkgLyB0ZXh0dXJlV2lkdGhNZXRlcnM7XHJcbiAgICBjb25zdCByZXBlYXRZID0gTWF0aC5zcXJ0KGFyZWEpIC8gdGV4dHVyZUhlaWdodE1ldGVycztcclxuXHJcbiAgICByZXR1cm4gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKE1hdGgubWF4KDEsIE1hdGguY2VpbChyZXBlYXRYKSksIDEuMCk7XHJcbiAgfVxyXG4gIHN3YXBMYXN0RWxlbWVudHMoYXJyMSwgYXJyMikge1xyXG4gICAgY29uc3QgbGFzdCA9IGFycjFbYXJyMS5sZW5ndGggLSAxXVxyXG4gICAgY29uc3QgZmlyc3QgPSBhcnIyWzBdXHJcbiAgICBhcnIxW2FycjEubGVuZ3RoIC0gMV0gPSBmaXJzdFxyXG4gICAgYXJyMlswXSA9IGxhc3RcclxuXHJcbiAgICByZXR1cm4gW2FycjEsIGFycjJdO1xyXG4gIH1cclxuICBjcmVhdGVMaW5lQnVmZmVyUG9seWdvblNpZGUocG9zaXRpb25zLCB3aWR0aCkge1xyXG4gICAgbGV0IGFyZWEgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgcG9zaSA9IHBvc2l0aW9uc1tpXTtcclxuXHJcbiAgICAgIGNvbnN0IGRpciA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KHBvc2lbMV0sIHBvc2lbMF0sIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpciwgZGlyKTtcclxuXHJcbiAgICAgIC8vIOiOt+WPluWeguebtOWQkemHj++8iOWfuuS6jlrovbTvvIlcclxuICAgICAgY29uc3QgcGVycCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmNyb3NzKGRpciwgQ2VzaXVtLkNhcnRlc2lhbjMuVU5JVF9aLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShwZXJwLCBwZXJwKTtcclxuXHJcbiAgICAgIC8vIOeUn+aIkOWBj+enu+WQkemHj1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKHBlcnAsIHdpZHRoLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5hZGQocG9zaVswXSwgb2Zmc2V0LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgICAgbGV0IHBvaW50MyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChwb3NpWzFdLCBvZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKVxyXG5cclxuICAgICAgLy8gaSA9PSBwb3NpdGlvbnMubGVuZ3RoIC0gMiA/IGFyZWEucHVzaChzdGFydCwgcG9pbnQxLCBlbmQsIHBvaW50MykgOiBhcmVhLnB1c2goc3RhcnQsIHBvaW50MSlcclxuICAgICAgYXJlYS5wdXNoKFtwb3NpWzBdLCBwb2ludDEsIHBvaW50MywgcG9zaVsxXV0pXHJcbiAgICB9XHJcbiAgICAvLyBsZXQgYXJyID0gW11cclxuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgYXJlYS5sZW5ndGggLSAyOyBpICs9IDIpIHtcclxuICAgIC8vICAgYXJyLnB1c2goW2FyZWFbaV0sIGFyZWFbaSArIDFdLCBhcmVhW2kgKyAzXSwgYXJlYVtpICsgMl1dKVxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIGFyZWFcclxuICB9XHJcbiAgY3JlYXRlTGluZUJ1ZmZlclBvbHlnb24yKHBvc2l0aW9ucywgd2lkdGgpIHtcclxuICAgIGxldCBhcmVhID0gW11cclxuICAgIGxldCBsZWZ0UG9zaXRpb25zID0gW107XHJcbiAgICBsZXQgcmlnaHRQb3NpdGlvbnMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBwb3NpdGlvbnNbaV07XHJcbiAgICAgIC8vIGNvbnN0IGVuZCA9IHBvc2l0aW9uc1tpICsgMV0gfHwgcG9zaXRpb25zW2kgLSAxXTtcclxuICAgICAgY29uc3QgZW5kID0gcG9zaXRpb25zW2kgKyAxXTtcclxuXHJcbiAgICAgIGNvbnN0IGRpciA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KGVuZCwgc3RhcnQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpciwgZGlyKTtcclxuXHJcbiAgICAgIC8vIOiOt+WPluWeguebtOWQkemHj++8iOWfuuS6jlrovbTvvIlcclxuICAgICAgY29uc3QgcGVycCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmNyb3NzKGRpciwgQ2VzaXVtLkNhcnRlc2lhbjMuVU5JVF9aLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShwZXJwLCBwZXJwKTtcclxuXHJcbiAgICAgIGNvbnN0IGRpcjIgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChzdGFydCwgZW5kLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShkaXIyLCBkaXIyKTtcclxuXHJcbiAgICAgIC8vIOiOt+WPluWeguebtOWQkemHj++8iOWfuuS6jlrovbTvvIlcclxuICAgICAgY29uc3QgcGVycDIgPSBDZXNpdW0uQ2FydGVzaWFuMy5jcm9zcyhkaXIyLCBDZXNpdW0uQ2FydGVzaWFuMy5VTklUX1osIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKHBlcnAyLCBwZXJwMik7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAvLyDnlJ/miJDlgY/np7vlkJHph49cclxuICAgICAgY29uc3Qgb2Zmc2V0ID0gQ2VzaXVtLkNhcnRlc2lhbjMubXVsdGlwbHlCeVNjYWxhcihwZXJwLCB3aWR0aCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgICBjb25zdCBvZmZzZXQyID0gQ2VzaXVtLkNhcnRlc2lhbjMubXVsdGlwbHlCeVNjYWxhcihwZXJwLCAtd2lkdGgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuXHJcbiAgICAgIGNvbnN0IG9mZnNldEVuZCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm11bHRpcGx5QnlTY2FsYXIocGVycDIsIC13aWR0aCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgICBjb25zdCBvZmZzZXRFbmQyID0gQ2VzaXVtLkNhcnRlc2lhbjMubXVsdGlwbHlCeVNjYWxhcihwZXJwMiwgd2lkdGgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuXHJcbiAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5hZGQoc3RhcnQsIG9mZnNldCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpXHJcbiAgICAgIGxldCBwb2ludDIgPSBDZXNpdW0uQ2FydGVzaWFuMy5hZGQoc3RhcnQsIG9mZnNldDIsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKVxyXG4gICAgICBsZXQgcG9pbnQzID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKGVuZCwgb2Zmc2V0RW5kLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgICAgbGV0IHBvaW50NCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChlbmQsIG9mZnNldEVuZDIsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKVxyXG5cclxuICAgICAgYXJlYS5wdXNoKFtwb2ludDEsIHBvaW50MywgcG9pbnQ0LCBwb2ludDJdKVxyXG5cclxuICAgICAgcmlnaHRQb3NpdGlvbnMucHVzaChbcG9pbnQxLCBwb2ludDNdKVxyXG4gICAgICBsZWZ0UG9zaXRpb25zLnB1c2goW3BvaW50MiwgcG9pbnQ0XSlcclxuXHJcbiAgICAgIC8vIGlmIChpID09IHBvc2l0aW9ucy5sZW5ndGggLSAyKSB7XHJcbiAgICAgIC8vICAgYXJlYS5wdXNoKHBvaW50MSwgcG9pbnQyLCBwb2ludDMsIHBvaW50NClcclxuICAgICAgLy8gICByaWdodFBvc2l0aW9ucy5wdXNoKHBvaW50MSlcclxuICAgICAgLy8gICBsZWZ0UG9zaXRpb25zLnB1c2gocG9pbnQyKVxyXG4gICAgICAvLyAgIGxlZnRQb3NpdGlvbnMucHVzaChwb2ludDQpXHJcbiAgICAgIC8vICAgcmlnaHRQb3NpdGlvbnMucHVzaChwb2ludDMpXHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgYXJlYS5wdXNoKHBvaW50MSwgcG9pbnQyKVxyXG4gICAgICAvLyAgIHJpZ2h0UG9zaXRpb25zLnB1c2gocG9pbnQxKVxyXG4gICAgICAvLyAgIGxlZnRQb3NpdGlvbnMucHVzaChwb2ludDIpXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIC8vIGxldCBhcnIgPSBbXVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBhcmVhLmxlbmd0aCAtIDI7IGkgKz0gMikge1xyXG4gICAgLy8gICBhcnIucHVzaChbYXJlYVtpXSwgYXJlYVtpICsgMV0sIGFyZWFbaSArIDNdLCBhcmVhW2kgKyAyXV0pXHJcbiAgICAvLyB9XHJcbiAgICBjb25zb2xlLmxvZyhhcmVhLCByaWdodFBvc2l0aW9ucywgJ3JpZ2h0UG9zaXRpb25zJylcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8gcmV0dXJuIFthcnIsIHJpZ2h0UG9zaXRpb25zLCBsZWZ0UG9zaXRpb25zXVxyXG4gICAgcmV0dXJuIFthcmVhLCByaWdodFBvc2l0aW9ucywgbGVmdFBvc2l0aW9uc11cclxuICB9XHJcbiAgZ2V0SW50ZXJzZWN0cyhwb2ludDEsIHBvaW50MiwgcG9pbnQzLCBwb2ludDQpIHtcclxuICAgIGxldCBjYXJQb2ludDEgPSB0aGlzLmdldExvbkxhdChwb2ludDEpXHJcbiAgICBsZXQgY2FyUG9pbnQyID0gdGhpcy5nZXRMb25MYXQocG9pbnQyKVxyXG4gICAgbGV0IGNhclBvaW50MyA9IHRoaXMuZ2V0TG9uTGF0KHBvaW50MylcclxuICAgIGxldCBjYXJQb2ludDQgPSB0aGlzLmdldExvbkxhdChwb2ludDQpXHJcbiAgICB2YXIgbGluZTEgPSB0dXJmLmxpbmVTdHJpbmcoW1xyXG4gICAgICBbY2FyUG9pbnQxLmxvbiwgY2FyUG9pbnQxLmxhdF0sXHJcbiAgICAgIFtjYXJQb2ludDIubG9uLCBjYXJQb2ludDIubGF0XVxyXG4gICAgXSk7XHJcbiAgICB2YXIgbGluZTIgPSB0dXJmLmxpbmVTdHJpbmcoW1xyXG4gICAgICBbY2FyUG9pbnQzLmxvbiwgY2FyUG9pbnQzLmxhdF0sXHJcbiAgICAgIFtjYXJQb2ludDQubG9uLCBjYXJQb2ludDQubGF0XVxyXG4gICAgXSk7XHJcbiAgICB2YXIgaW50ZXJzZWN0cyA9IHR1cmYubGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xyXG4gICAgaWYgKGludGVyc2VjdHMuZmVhdHVyZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoaW50ZXJzZWN0cy5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgaW50ZXJzZWN0cy5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0TG9uTGF0KHBvaW50KSB7XHJcbiAgICBsZXQgcG9pbnREZSA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihwb2ludClcclxuICAgIGNvbnN0IGxvbmdpdHVkZSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhwb2ludERlLmxvbmdpdHVkZSk7XHJcbiAgICBjb25zdCBsYXRpdHVkZSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhwb2ludERlLmxhdGl0dWRlKTtcclxuICAgIHJldHVybiB7IGxvbjogbG9uZ2l0dWRlLCBsYXQ6IGxhdGl0dWRlIH1cclxuXHJcbiAgfVxyXG4gIGNyZWF0ZUxpbmVCdWZmZXJQb2x5Z29uKHZpZXdlciwgcG9zaXRpb25zLCB3aWR0aCkge1xyXG4gICAgLy8g6K6h566X5q+P5Liq57q/5q6155qE5bem5Y+z5YGP56e754K5XHJcbiAgICBjb25zdCBsZWZ0UG9zaXRpb25zID0gW107XHJcbiAgICBjb25zdCByaWdodFBvc2l0aW9ucyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcG9zaXRpb25zW2ldO1xyXG4gICAgICBjb25zdCBlbmQgPSBwb3NpdGlvbnNbaSArIDFdIHx8IHBvc2l0aW9uc1tpIC0gMV07XHJcblxyXG4gICAgICAvLyDorqHnrpfnur/mrrXmlrnlkJHlkJHph49cclxuICAgICAgY29uc3QgZGlyZWN0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoZW5kLCBzdGFydCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgICAvLyBjb25zdCBkaXJlY3Rpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChzdGFydCwgZW5kLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShkaXJlY3Rpb24sIGRpcmVjdGlvbik7XHJcblxyXG4gICAgICAvLyDorqHnrpflnoLnm7TlkJHph4/vvIjkvb/nlKjkuIrlkJHph4/lj4nnp6/vvIlcclxuICAgICAgY29uc3QgdXAgPSBDZXNpdW0uQ2FydGVzaWFuMy5VTklUX1o7XHJcbiAgICAgIGNvbnN0IHBlcnBlbmRpY3VsYXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5jcm9zcyhkaXJlY3Rpb24sIHVwLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShwZXJwZW5kaWN1bGFyLCBwZXJwZW5kaWN1bGFyKTtcclxuXHJcbiAgICAgIC8vIOiuoeeul+W3puWPs+WBj+enu+eCuVxyXG4gICAgICBjb25zdCBsZWZ0T2Zmc2V0ID0gQ2VzaXVtLkNhcnRlc2lhbjMubXVsdGlwbHlCeVNjYWxhcihcclxuICAgICAgICBwZXJwZW5kaWN1bGFyLFxyXG4gICAgICAgIHdpZHRoLFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAod2lkdGggPiAwKSB7XHJcbiAgICAgICAgcmlnaHRQb3NpdGlvbnMudW5zaGlmdChDZXNpdW0uQ2FydGVzaWFuMy5hZGQoc3RhcnQsIGxlZnRPZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAod2lkdGggPCAwKSB7XHJcbiAgICAgICAgcmlnaHRQb3NpdGlvbnMucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5hZGQoc3RhcnQsIGxlZnRPZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmlnaHRQb3NpdGlvbnNcclxuICB9XHJcbiAgLy/orqHnrpfop5LluqZcclxuICBjYWxjdWxhdGVBYW5nbGUoYXJyKSB7XHJcbiAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQuY2FsU2VjdG9yKHRoYXQub3B0aW9ucy5jZW50ZXIsIHRoYXQub3B0aW9ucy5yYWRpdXMsIHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlLCB0aGF0Lm9wdGlvbnMuZW5kQW5nbGUsIDM2MCwgdHJ1ZSlcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRBYW5nbGUoc3RhcnQsIGVuZCkge1xyXG4gICAgICBsZXQgcmFkID0gTWF0aC5QSSAvIDE4MCxcclxuICAgICAgICBsYXQxID0gc3RhcnQueSAqIHJhZCxcclxuICAgICAgICBsYXQyID0gZW5kLnkgKiByYWQsXHJcbiAgICAgICAgbG9uMSA9IHN0YXJ0LnggKiByYWQsXHJcbiAgICAgICAgbG9uMiA9IGVuZC54ICogcmFkO1xyXG4gICAgICBjb25zdCBhID0gTWF0aC5zaW4obG9uMiAtIGxvbjEpICogTWF0aC5jb3MobGF0Mik7XHJcbiAgICAgIGNvbnN0IGIgPVxyXG4gICAgICAgIE1hdGguY29zKGxhdDEpICogTWF0aC5zaW4obGF0MikgLVxyXG4gICAgICAgIE1hdGguc2luKGxhdDEpICogTWF0aC5jb3MobGF0MikgKiBNYXRoLmNvcyhsb24yIC0gbG9uMSk7XHJcbiAgICAgIGNvbnN0IHJhZGlhbnMgPSBNYXRoLmF0YW4yKGEsIGIpXHJcbiAgICAgIGNvbnN0IGRlZ3JlZXMgPSByYWRpYW5zICUgKDIgKiBNYXRoLlBJKTtcclxuICAgICAgbGV0IGJlYXJpbmcgPSA0NTAgLSAoKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSSA8IDBcclxuICAgICAgICA/IDM2MCArIChkZWdyZWVzICogMTgwKSAvIE1hdGguUElcclxuICAgICAgICA6IChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkpIC0gOTA7XHJcbiAgICAgIHJldHVybiAzNjAgLSAoYmVhcmluZyAlIDM2MClcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2VudGVyID0gYXJyWzBdXHJcbiAgICBsZXQgcG9zODRfMSA9IGFyclsxXVxyXG4gICAgbGV0IHBvczg0XzIgPSBhcnJbMl1cclxuXHJcbiAgICBsZXQgc3RhcnQgPSB7IHg6IGNlbnRlci5sbmcsIHk6IGNlbnRlci5sYXQgfVxyXG4gICAgbGV0IGVuZDEgPSB7IHg6IHBvczg0XzEubG5nLCB5OiBwb3M4NF8xLmxhdCB9XHJcbiAgICBsZXQgZW5kMiA9IHsgeDogcG9zODRfMi5sbmcsIHk6IHBvczg0XzIubGF0IH1cclxuXHJcbiAgICBsZXQgYW5nbGUxID0gZ2V0QWFuZ2xlKHN0YXJ0LCBlbmQxKVxyXG4gICAgbGV0IGFuZ2xlMiA9IGdldEFhbmdsZShzdGFydCwgZW5kMilcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhbmdsZTEsXHJcbiAgICAgIGFuZ2xlMlxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNhclJvYWRXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2FyUm9hZFdpZHRoXHJcbiAgfVxyXG5cclxuICBzZXQgY2FyUm9hZFdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jYXJSb2FkV2lkdGggPSB2XHJcbiAgICBSb2FkLmNyZWF0ZSh0aGlzKVxyXG5cclxuICB9XHJcbiAgZ2V0IHNpZGVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2lkZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBzaWRlV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNpZGVXaWR0aCA9IHZcclxuICAgIFJvYWQuY3JlYXRlKHRoaXMpXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9yaWdpbmFsT3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn6YGT6Lev5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfpgZPot68nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHJvYWQtc3VyZmFjZSdcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG5cclxuXHJcbiAgICAgIC8vIOS4i+aLiemAiemhuVxyXG4gICAgICAvLyBsZXQgaGVpZ2h0TW9kZURhdGEgPSBbXHJcbiAgICAgIC8vICAge1xyXG4gICAgICAvLyAgICAgbmFtZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgIC8vICAgICB2YWx1ZTogJ+a1t+aLlOmrmOW6picsXHJcbiAgICAgIC8vICAgICBrZXk6ICcwJyxcclxuICAgICAgLy8gICB9LFxyXG4gICAgICAvLyAgIHtcclxuICAgICAgLy8gICAgIG5hbWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAvLyAgICAgdmFsdWU6ICfnm7jlr7nlnLDooagnLFxyXG4gICAgICAvLyAgICAga2V5OiAnMScsXHJcbiAgICAgIC8vICAgfSxcclxuICAgICAgLy8gICB7XHJcbiAgICAgIC8vICAgICBuYW1lOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgLy8gICAgIHZhbHVlOiAn5L6d6ZmE5qih5Z6LJyxcclxuICAgICAgLy8gICAgIGtleTogJzInLFxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gXVxyXG4gICAgICAvLyBsZXQgaGVpZ2h0TW9kZU9iamVjdCA9IGxlZ3AoXHJcbiAgICAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgLy8gICAgICdyb2FkLWJveCdcclxuICAgICAgLy8gICApWzBdLFxyXG4gICAgICAvLyAgICcucm9hZC10eXBlJ1xyXG4gICAgICAvLyApXHJcbiAgICAgIC8vIGlmIChoZWlnaHRNb2RlT2JqZWN0KSB7XHJcbiAgICAgIC8vICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaChoZWlnaHRNb2RlRGF0YSlcclxuICAgICAgLy8gICBsZXQgaGVpZ2h0TW9kZURhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgLy8gICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyb2FkLXR5cGUnKVswXVxyXG4gICAgICAvLyAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLmtleSA9PSB0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgLy8gICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgLy8gICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgLy8gICAgICAgICBoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAvLyAgICAgICApXHJcbiAgICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0TW9kZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgLy8gICAgICAgICBicmVha1xyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuXHJcblxyXG4gICAgICAvLyAgIHRoaXMuX2VsbXMuaGVpZ2h0ID0gaGVpZ2h0RWxtXHJcbiAgICAgIC8vICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggPSBoZWlnaHRCb3hFbG1cclxuICAgICAgLy8gICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG1cclxuICAgICAgLy8gICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gPSBoZWlnaHRDb25maXJtRWxtXHJcbiAgICAgIC8vICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ID0gaGVpZ2h0TW9kZU9iamVjdFxyXG5cclxuICAgICAgLy8gICBoZWlnaHRDb25maXJtRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ID0gTnVtYmVyKCh0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpKS50b0ZpeGVkKDIpKVxyXG4gICAgICAvLyAgICAgICB0aGlzLl9lbG1zLmFsdFtpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLnJlbmV3UG9zaXRpb25zKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgIC8vICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhcclxuICAgICAgLy8gICAgICAgZnJvbURlZ3JlZXNBcnJheVxyXG4gICAgICAvLyAgICAgKVxyXG5cclxuICAgICAgLy8gICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgLy8gICAgIFBvbHlsaW5lT2JqZWN0LmNsb3NlTm9kZUVkaXQodGhpcylcclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZiAodGhpcy5fZWxlbWVudF9zdHlsZSkge1xyXG4gICAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0ucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudF9zdHlsZSlcclxuICAgICAgLy8gICB0aGlzLl9lbGVtZW50X3N0eWxlID0gbnVsbFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAvLyAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY2FyUm9hZFdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY2FyUm9hZFdpZHRoXHJcbiAgICB0aGlzLnNpZGVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNpZGVXaWR0aFxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIHRoaXMucm9hZEltYWdlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucm9hZEltYWdlXHJcbiAgICB0aGlzLnNpZGVJbWFnZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnNpZGVJbWFnZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5Yiw5a+55bqU5a6e5L2TXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICAvLyBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAvLyAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgLy8gfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV1bMF0sXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tpXVsxXSxcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgKyB0aGlzLm9wdGlvbnMuaGVpZ2h0RGlmZmVyZW5jZSAvIDJcclxuICAgICAgICApXHJcbiAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0yMC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNwaGVyZSgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAvLyBlbnRpdHnmsqHmnInliqDovb3lrozmiJDml7Ygc3RhdGUg5LiN5Lya562J5LqOMCDmiYDku6Xorr7nva7lrprml7blmajnm7TliLDojrflj5bliLDkuLrmraJcclxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3BoZXJlID0gbmV3IENlc2l1bS5Cb3VuZGluZ1NwaGVyZSgpXHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNkay52aWV3ZXIuX2RhdGFTb3VyY2VEaXNwbGF5LmdldEJvdW5kaW5nU3BoZXJlKFxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpLFxyXG4gICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICBzcGhlcmVcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKHN0YXRlID09PSBDZXNpdW0uQm91bmRpbmdTcGhlcmVTdGF0ZS5ET05FKSB7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmxpbmVFbnRpdHkgPSBudWxsXHJcblxyXG4gICAgaWYgKHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5vcHRpb25zLmlkKSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZCkuX2NoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLm9wdGlvbnMuaWQpKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBmbGlja2VyKCkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJvYWRcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFxU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkVBO0FBQUE7QUFBQTtBQXdFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBekJBO0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBaklBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUExRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBO0FBQUE7QUFBQTtBQTM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBNnJCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/RoadObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RoutePlanning/_element.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/RoutePlanning/_element.js ***! - \************************************************/ -/*! exports provided: html, css */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\nfunction html() {\n return \"\\n
\\n
\\n \\u8D77\\u70B9\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\u7EC8\\u70B9\\n \\n \\n \\n
\\n
\\n \";\n}\nfunction css() {\n return \"\\n .YJ-custom-base-dialog>.content {\\n width: 460px;\\n }\\n .YJ-custom-base-dialog>.content>div>.row .col {\\n margin: 0 10px;\\n }\\n .YJ-custom-base-dialog>.content .row .label {\\n flex: auto;\\n }\\n\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUm91dGVQbGFubmluZy9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Sb3V0ZVBsYW5uaW5nL19lbGVtZW50LmpzPzU3ZmEiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaHRtbCgpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHN0YXJ0LWNvbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6LW354K5PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJzdGFydExuZ1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwic3RhcnRMYXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJwaWNrU3RhcnRQb3NcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O1wiPuaLvuWPljwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4jngrk8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTE4MFwiIG1heD1cIjE4MFwiIEBtb2RlbD1cImVuZExuZ1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwiZW5kTGF0XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbmQtcGljay1idG5cIiBAY2xpY2s9XCJwaWNrRW5kUG9zXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj7mi77lj5Y8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYFxyXG59XHJcbmZ1bmN0aW9uIGNzcygpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50IHtcclxuICAgICAgICB3aWR0aDogNDYwcHg7XHJcbiAgICB9XHJcbiAgICAuWUotY3VzdG9tLWJhc2UtZGlhbG9nPi5jb250ZW50PmRpdj4ucm93IC5jb2wge1xyXG4gICAgICAgIG1hcmdpbjogMCAxMHB4O1xyXG4gICAgfVxyXG4gICAgLllKLWN1c3RvbS1iYXNlLWRpYWxvZz4uY29udGVudCAucm93IC5sYWJlbCB7XHJcbiAgICAgICAgZmxleDogYXV0bztcclxuICAgIH1cclxuYFxyXG59XHJcbmV4cG9ydCB7IGh0bWwsIGNzcyB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQVdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/RoutePlanning/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RoutePlanning/clear.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/RoutePlanning/clear.js ***! - \*********************************************/ -/*! exports provided: Clear */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Clear\", function() { return Clear; });\nfunction Clear() {\n YJ.RoutePlanningArrays.forEach(function (m) {\n m.destroy();\n });\n YJ.RoutePlanningArrays = [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUm91dGVQbGFubmluZy9jbGVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Sb3V0ZVBsYW5uaW5nL2NsZWFyLmpzPzViN2IiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gQ2xlYXIoKSB7XHJcbiAgWUouUm91dGVQbGFubmluZ0FycmF5cy5mb3JFYWNoKG0gPT4ge1xyXG4gICAgbS5kZXN0cm95KClcclxuICB9KVxyXG4gIFlKLlJvdXRlUGxhbm5pbmdBcnJheXMgPSBbXVxyXG59XHJcblxyXG5leHBvcnQge0NsZWFyfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/RoutePlanning/clear.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/RoutePlanning/index.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/RoutePlanning/index.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/RoutePlanning/_element.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\nvar RoutePlanning = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 路径规划\r\n * */\n function RoutePlanning(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, RoutePlanning);\n _this2 = _callSuper(this, RoutePlanning, [sdk, options]);\n YJ.RoutePlanningArrays.push(_this2);\n _this2.options.width = options.width || 4;\n _this2.options.color = options.color || '#ff0000';\n _this2.options.gps = options.gps || false;\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2.start = {\n lng: null,\n lat: null\n };\n _this2.end = {\n lng: null,\n lat: null\n };\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_13__[\"default\"](sdk);\n _this2.init();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(RoutePlanning, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(RoutePlanning, [{\n key: \"init\",\n value: function init() {\n var _this3 = this;\n this.startEntity = this.sdk.viewer.entities.getOrCreateEntity('YJ-route-planning-start');\n if (this.start && (this.start.lng || this.start.lng === 0) && (this.start.lat || this.start.lat === 0)) {\n this.startEntity.show = true;\n } else {\n this.startEntity.show = false;\n }\n this.startEntity.position = new Cesium.CallbackProperty(function () {\n var pos = _this3.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this3.startLng, _this3.startLat));\n _this3.clickCallBack({\n start: pos,\n end: _this3.endEntity.position\n });\n return pos;\n }, false);\n this.startEntity.billboard = {\n image: this.getSourceRootPath() + '/img/start.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n };\n this.endEntity = this.sdk.viewer.entities.getOrCreateEntity('YJ-route-planning-end');\n if (this.end && (this.end.lng || this.end.lng === 0) && (this.end.lat || this.end.lat === 0)) {\n this.endEntity.show = true;\n } else {\n this.endEntity.show = false;\n }\n this.endEntity.position = new Cesium.CallbackProperty(function () {\n var pos = _this3.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this3.endLng, _this3.endLat));\n _this3.clickCallBack({\n start: _this3.startEntity.position,\n end: pos\n });\n return pos;\n }, false);\n this.endEntity.billboard = {\n image: this.getSourceRootPath() + '/img/end.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n };\n this.edit(true);\n this.clear();\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"startLng\",\n get: function get() {\n return this.start.lng;\n },\n set: function set(v) {\n this.start.lng = v;\n if (this.start && (this.start.lng || this.start.lng === 0) && (this.start.lat || this.start.lat === 0)) {\n this.startEntity && (this.startEntity.show = true);\n } else {\n this.startEntity && (this.startEntity.show = false);\n }\n this._elms.startLng && this._elms.startLng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"startLat\",\n get: function get() {\n return this.start.lat;\n },\n set: function set(v) {\n this.start.lat = v;\n if (this.start && (this.start.lng || this.start.lng === 0) && (this.start.lat || this.start.lat === 0)) {\n this.startEntity && (this.startEntity.show = true);\n } else {\n this.startEntity && (this.startEntity.show = false);\n }\n this._elms.startLat && this._elms.startLat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"endLng\",\n get: function get() {\n return this.end.lng;\n },\n set: function set(v) {\n this.end.lng = v;\n if (this.end && (this.end.lng || this.end.lng === 0) && (this.end.lat || this.end.lat === 0)) {\n this.endEntity && (this.endEntity.show = true);\n } else {\n this.endEntity && (this.endEntity.show = false);\n }\n this._elms.endLng && this._elms.endLng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"endLat\",\n get: function get() {\n return this.end.lat;\n },\n set: function set(v) {\n this.end.lat = v;\n if (this.end && (this.end.lng || this.end.lng === 0) && (this.end.lat || this.end.lat === 0)) {\n this.endEntity && (this.endEntity.show = true);\n } else {\n this.endEntity && (this.endEntity.show = false);\n }\n this._elms.endLat && this._elms.endLat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(state) {\n var _this4 = this;\n var _this, queryBtn, cleanBtn, contentElm, locateCurrentBtn, startColElm, endPickBtnElm, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n this._element_style = null;\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (state) {\n this._element_style = document.createElement('style');\n this._element_style.type = 'text/css';\n this._element_style.setAttribute('data-name', 'YJ_style_dialog');\n // this._element_style.innerHTML = css()\n // this._DialogObject = await new Dialog(this.sdk.viewer._container, {\n // title: '路径规划',\n // closeCallBack: () => {\n // this.tip && this.tip.destroy()\n // this.event && this.event.destroy()\n // this.Dialog.closeCallBack && this.Dialog.closeCallBack()\n // }\n // })\n // await this._DialogObject.init()\n\n // let div = document.createElement('div')\n // div.style.position = 'absolute'\n // div.style.left = '24px'\n // div.style.flet = '0'\n // div.style.display = 'flex'\n // document.getElementsByClassName('RoutePlanning')[0].getElementsByClassName('foot')[0].appendChild(div)\n // // this._DialogObject.footAppChild(div)\n\n // let queryBtn = document.createElement('button')\n // queryBtn.className = 'default'\n // queryBtn.innerHTML =\n // '查询'\n // queryBtn.style.width = 'auto'\n queryBtn = document.getElementById('routeQuery');\n queryBtn.addEventListener('click', function () {\n if ((_this4.startLng || _this4.startLng === 0) && (_this4.startLat || _this4.startLat === 0) && (_this4.endLng || _this4.endLng === 0) && (_this4.endLat || _this4.endLat === 0)) {\n !_this4.startEntity && (_this4.startEntity = _this4.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this4.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this4.startLng, _this4.startLat));\n return pos;\n }, false),\n billboard: {\n image: _this4.getSourceRootPath() + '/img/start.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this4.startEntity.show = true;\n !_this4.endEntity && (_this4.endEntity = _this4.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this4.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this4.endLng, _this4.endLat));\n return pos;\n }, false),\n billboard: {\n image: _this4.getSourceRootPath() + '/img/end.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this4.endEntity.show = true;\n _this4.Dialog.queryCallBack && _this4.Dialog.queryCallBack({\n start: [_this4.startLng, _this4.startLat],\n end: [_this4.endLng, _this4.endLat]\n });\n } else {\n _this4.tools.message({\n type: 'warning',\n text: '请先设置起点和终点坐标!'\n });\n }\n });\n // div.appendChild(queryBtn)\n\n // let cleanBtn = document.createElement('button')\n // cleanBtn.className = 'default'\n // cleanBtn.innerHTML =\n // '清除路线'\n // cleanBtn.style.width = 'auto'\n // cleanBtn.style.marginLeft = '10px'\n cleanBtn = document.getElementById('clearRoute');\n cleanBtn.addEventListener('click', function () {\n _this4.clear();\n });\n // div.appendChild(cleanBtn)\n\n document.getElementsByTagName('head')[0].appendChild(this._element_style);\n // let contentElm = document.createElement('div')\n // contentElm.innerHTML = html()\n // this._DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('RoutePlanning')[0];\n if (this.options.gps) {\n locateCurrentBtn = document.createElement('button');\n locateCurrentBtn.innerHTML = '当前位置';\n locateCurrentBtn.style.marginLeft = '10px';\n locateCurrentBtn.setAttribute('data-is', 'start');\n locateCurrentBtn.addEventListener('click', function (e) {\n _this4.getLocateCurrent(e);\n });\n startColElm = contentElm.getElementsByClassName('start-col')[0];\n startColElm.appendChild(locateCurrentBtn);\n endPickBtnElm = contentElm._element.body.getElementsByClassName('end-pick-btn')[0];\n endPickBtnElm.style.marginRight = '91px';\n }\n all_elm = contentElm.getElementsByTagName('*');\n RoutePlanning.EventBinding(this, all_elm);\n } else {\n if (this._element_style) {\n document.getElementsByTagName('head')[0].removeChild(this._element_style);\n this._element_style = null;\n }\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.startEntity) {\n this.sdk.viewer.entities.remove(this.startEntity);\n this.startEntity = null;\n }\n if (this.endEntity) {\n this.sdk.viewer.entities.remove(this.endEntity);\n this.endEntity = null;\n }\n if (this.entity) {\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n }\n if (this.startExtensionEntity) {\n this.sdk.viewer.entities.remove(this.startExtensionEntity);\n this.startExtensionEntity = null;\n }\n if (this.endExtensionEntity) {\n this.sdk.viewer.entities.remove(this.endExtensionEntity);\n this.endExtensionEntity = null;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clear();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }, {\n key: \"getLocateCurrent\",\n value: function getLocateCurrent(e) {\n var _this5 = this;\n this.reconnecting && this.reconnecting.close();\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_7__[\"getHost\"])();\n var url = '';\n url = this.options.host + '/yjearth4.0/api/v1/gps/state';\n this.reconnecting = new ReconnectingWebSocket('ws://' + url);\n this.reconnecting.onopen = function (event) {\n _this5.reconnecting.onmessage = function (event) {\n _this5.data = JSON.parse(event.data);\n if (_this5.data && _this5.data.rmc) {\n _this5.reconnecting.close();\n if (e.srcElement.getAttribute('data-is') === 'start') {\n _this5.startLng = _this5.data.rmc.lng;\n _this5.startLat = _this5.data.rmc.lat;\n !_this5.startEntity && (_this5.startEntity = _this5.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this5.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this5.startLng, _this5.startLat));\n return pos;\n }, false),\n billboard: {\n image: _this5.getSourceRootPath() + '/img/start.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this5.startEntity.show = true;\n } else {\n _this5.endLng = _this5.data.rmc.lng;\n _this5.endLat = _this5.data.rmc.lat;\n !_this5.endEntity && (_this5.endEntity = _this5.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this5.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this5.endLng, _this5.endLat));\n return pos;\n }, false),\n billboard: {\n image: _this5.getSourceRootPath() + '/img/end.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this5.endEntity.show = true;\n }\n }\n };\n };\n }\n\n /**\r\n * 绘制路径\r\n */\n }, {\n key: \"createRoute\",\n value: function createRoute(positions) {\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n if ((this.startLng || this.startLng === 0) && (this.startLat || this.startLat === 0) && (this.startLng !== positions[0].lng || this.startLat !== positions[0].lat)) {\n this.startExtension = [this.startLng, this.startLat, positions[0].lng, positions[0].lat];\n if (this.startExtensionEntity) {\n this.startExtensionEntity.polyline.positions = Cesium.Cartesian3.fromDegreesArray(this.startExtension);\n } else {\n this.startExtensionEntity = this.sdk.viewer.entities.add({\n show: this.options.show,\n polyline: {\n positions: Cesium.Cartesian3.fromDegreesArray(this.startExtension),\n width: this.options.width,\n clampToGround: true,\n material: this.getMaterial(this.options.color, 2),\n zIndex: 99999999\n }\n });\n }\n }\n if ((this.endLng || this.endLng === 0) && (this.endLat || this.endLat === 0) && (this.endLng !== positions[positions.length - 1].lng || this.endLat !== positions[positions.length - 1].lat)) {\n this.endExtension = [this.endLng, this.endLat, positions[positions.length - 1].lng, positions[positions.length - 1].lat];\n if (this.endExtensionEntity) {\n this.endExtensionEntity.polyline.positions = Cesium.Cartesian3.fromDegreesArray(this.endExtension);\n } else {\n this.endExtensionEntity = this.sdk.viewer.entities.add({\n show: this.options.show,\n polyline: {\n positions: Cesium.Cartesian3.fromDegreesArray(this.endExtension),\n width: this.options.width,\n clampToGround: true,\n material: this.getMaterial(this.options.color, 2),\n zIndex: 99999999\n }\n });\n }\n }\n if (this.entity) {\n this.entity.polyline.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n } else {\n this.entity = this.sdk.viewer.entities.add({\n show: this.options.show,\n polyline: {\n positions: Cesium.Cartesian3.fromDegreesArray(fromDegreesArray),\n width: this.options.width,\n clampToGround: true,\n material: this.getMaterial(this.options.color, 0),\n zIndex: 99999999\n }\n });\n }\n }\n\n /**\r\n * 拾取起点\r\n */\n }, {\n key: \"pickStartPos\",\n value: function pickStartPos(func) {\n var _this6 = this;\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_11__[\"default\"]('左键选择起点坐标,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk);\n this.event.mouse_move(function (movement, cartesian) {\n _this6.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n var leftEvent = function leftEvent(movement, cartesian) {\n var pos84 = _this6.cartesian3Towgs84(cartesian, _this6.sdk.viewer);\n _this6.startLng = pos84.lng;\n _this6.startLat = pos84.lat;\n func(pos84);\n !_this6.startEntity && (_this6.startEntity = _this6.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this6.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this6.startLng, _this6.startLat));\n return pos;\n }, false),\n billboard: {\n image: _this6.getSourceRootPath() + '/img/start.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this6.startEntity.show = true;\n _this6.tip && _this6.tip.destroy();\n _this6.event && _this6.event.destroy();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this6.tip && _this6.tip.destroy();\n _this6.event && _this6.event.destroy();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this6.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this6.tip && _this6.tip.destroy();\n _this6.event && _this6.event.destroy();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n\n /**\r\n * 拾取终点\r\n */\n }, {\n key: \"pickEndPos\",\n value: function pickEndPos(func) {\n var _this7 = this;\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_11__[\"default\"]('左键选择终点坐标,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk);\n this.event.mouse_move(function (movement, cartesian) {\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var pos84 = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.endLng = pos84.lng;\n _this7.endLat = pos84.lat;\n func(pos84);\n !_this7.endEntity && (_this7.endEntity = _this7.viewer.entities.add(new Cesium.Entity({\n position: new Cesium.CallbackProperty(function () {\n var pos = _this7.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(_this7.endLng, _this7.endLat));\n return pos;\n }, false),\n billboard: {\n image: _this7.getSourceRootPath() + '/img/end.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: 32,\n height: 32\n }\n })));\n _this7.endEntity.show = true;\n _this7.tip && _this7.tip.destroy();\n _this7.event && _this7.event.destroy();\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.tip && _this7.tip.destroy();\n _this7.event && _this7.event.destroy();\n });\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (RoutePlanning);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvUm91dGVQbGFubmluZy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9Sb3V0ZVBsYW5uaW5nL2luZGV4LmpzPzMxN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0SG9zdCB9IGZyb20gJy4uLy4uLy4uL29uJ1xyXG5pbXBvcnQgQmFzZSBmcm9tICcuLi9pbmRleCdcclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi9CYXNlRGlhbG9nJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBodG1sLCBjc3MgfSBmcm9tICcuL19lbGVtZW50J1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uLy4uL1Rvb2xzXCI7XHJcblxyXG5jbGFzcyBSb3V0ZVBsYW5uaW5nIGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDot6/lvoTop4TliJJcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIFlKLlJvdXRlUGxhbm5pbmdBcnJheXMucHVzaCh0aGlzKVxyXG4gICAgdGhpcy5vcHRpb25zLndpZHRoID0gb3B0aW9ucy53aWR0aCB8fCA0XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICcjZmYwMDAwJ1xyXG4gICAgdGhpcy5vcHRpb25zLmdwcyA9IG9wdGlvbnMuZ3BzIHx8IGZhbHNlXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX2VsbXMgPSB7fVxyXG4gICAgdGhpcy5zdGFydCA9IHtcclxuICAgICAgbG5nOiBudWxsLFxyXG4gICAgICBsYXQ6IG51bGxcclxuICAgIH1cclxuICAgIHRoaXMuZW5kID0ge1xyXG4gICAgICBsbmc6IG51bGwsXHJcbiAgICAgIGxhdDogbnVsbFxyXG4gICAgfVxyXG4gICAgdGhpcy50b29scyA9IG5ldyBUb29scyhzZGspXHJcbiAgICB0aGlzLmluaXQoKVxyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIHRoaXMuc3RhcnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuZ2V0T3JDcmVhdGVFbnRpdHkoXHJcbiAgICAgICdZSi1yb3V0ZS1wbGFubmluZy1zdGFydCdcclxuICAgIClcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zdGFydCAmJlxyXG4gICAgICAodGhpcy5zdGFydC5sbmcgfHwgdGhpcy5zdGFydC5sbmcgPT09IDApICYmXHJcbiAgICAgICh0aGlzLnN0YXJ0LmxhdCB8fCB0aGlzLnN0YXJ0LmxhdCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhcnRFbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuc3RhcnRMbmcsIHRoaXMuc3RhcnRMYXQpXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5jbGlja0NhbGxCYWNrKHsgc3RhcnQ6IHBvcywgZW5kOiB0aGlzLmVuZEVudGl0eS5wb3NpdGlvbiB9KVxyXG4gICAgICByZXR1cm4gcG9zXHJcbiAgICB9LCBmYWxzZSlcclxuICAgIHRoaXMuc3RhcnRFbnRpdHkuYmlsbGJvYXJkID0ge1xyXG4gICAgICBpbWFnZTogdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvc3RhcnQucG5nJyxcclxuICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICB3aWR0aDogMzIsXHJcbiAgICAgIGhlaWdodDogMzJcclxuICAgIH1cclxuICAgIHRoaXMuZW5kRW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmdldE9yQ3JlYXRlRW50aXR5KFxyXG4gICAgICAnWUotcm91dGUtcGxhbm5pbmctZW5kJ1xyXG4gICAgKVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuZCAmJlxyXG4gICAgICAodGhpcy5lbmQubG5nIHx8IHRoaXMuZW5kLmxuZyA9PT0gMCkgJiZcclxuICAgICAgKHRoaXMuZW5kLmxhdCB8fCB0aGlzLmVuZC5sYXQgPT09IDApXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lbmRFbnRpdHkuc2hvdyA9IHRydWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW5kRW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5lbmRFbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuZW5kTG5nLCB0aGlzLmVuZExhdClcclxuICAgICAgKVxyXG4gICAgICB0aGlzLmNsaWNrQ2FsbEJhY2soeyBzdGFydDogdGhpcy5zdGFydEVudGl0eS5wb3NpdGlvbiwgZW5kOiBwb3MgfSlcclxuICAgICAgcmV0dXJuIHBvc1xyXG4gICAgfSwgZmFsc2UpXHJcbiAgICB0aGlzLmVuZEVudGl0eS5iaWxsYm9hcmQgPSB7XHJcbiAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9lbmQucG5nJyxcclxuICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICB3aWR0aDogMzIsXHJcbiAgICAgIGhlaWdodDogMzJcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdCh0cnVlKVxyXG4gICAgdGhpcy5jbGVhcigpXHJcbiAgfVxyXG5cclxuICBnZXQgb25FbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGlja0NhbGxCYWNrXHJcbiAgfVxyXG4gIHNldCBvbkVuZCh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd2YWw6JywgdmFsLCAn5LiN5piv5LiA5LiqZnVuY3Rpb24nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlja0NhbGxCYWNrID0gdmFsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRMbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFydC5sbmdcclxuICB9XHJcbiAgc2V0IHN0YXJ0TG5nKHYpIHtcclxuICAgIHRoaXMuc3RhcnQubG5nID0gdlxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnN0YXJ0ICYmXHJcbiAgICAgICh0aGlzLnN0YXJ0LmxuZyB8fCB0aGlzLnN0YXJ0LmxuZyA9PT0gMCkgJiZcclxuICAgICAgKHRoaXMuc3RhcnQubGF0IHx8IHRoaXMuc3RhcnQubGF0ID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRFbnRpdHkgJiYgKHRoaXMuc3RhcnRFbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RW50aXR5ICYmICh0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSBmYWxzZSlcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuc3RhcnRMbmcgJiZcclxuICAgICAgdGhpcy5fZWxtcy5zdGFydExuZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRMYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFydC5sYXRcclxuICB9XHJcbiAgc2V0IHN0YXJ0TGF0KHYpIHtcclxuICAgIHRoaXMuc3RhcnQubGF0ID0gdlxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnN0YXJ0ICYmXHJcbiAgICAgICh0aGlzLnN0YXJ0LmxuZyB8fCB0aGlzLnN0YXJ0LmxuZyA9PT0gMCkgJiZcclxuICAgICAgKHRoaXMuc3RhcnQubGF0IHx8IHRoaXMuc3RhcnQubGF0ID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRFbnRpdHkgJiYgKHRoaXMuc3RhcnRFbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RW50aXR5ICYmICh0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSBmYWxzZSlcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuc3RhcnRMYXQgJiZcclxuICAgICAgdGhpcy5fZWxtcy5zdGFydExhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZW5kTG5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5kLmxuZ1xyXG4gIH1cclxuICBzZXQgZW5kTG5nKHYpIHtcclxuICAgIHRoaXMuZW5kLmxuZyA9IHZcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmQgJiZcclxuICAgICAgKHRoaXMuZW5kLmxuZyB8fCB0aGlzLmVuZC5sbmcgPT09IDApICYmXHJcbiAgICAgICh0aGlzLmVuZC5sYXQgfHwgdGhpcy5lbmQubGF0ID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZW5kRW50aXR5ICYmICh0aGlzLmVuZEVudGl0eS5zaG93ID0gdHJ1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW5kRW50aXR5ICYmICh0aGlzLmVuZEVudGl0eS5zaG93ID0gZmFsc2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmVuZExuZyAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmVuZExuZy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZW5kTGF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5kLmxhdFxyXG4gIH1cclxuICBzZXQgZW5kTGF0KHYpIHtcclxuICAgIHRoaXMuZW5kLmxhdCA9IHZcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmQgJiZcclxuICAgICAgKHRoaXMuZW5kLmxuZyB8fCB0aGlzLmVuZC5sbmcgPT09IDApICYmXHJcbiAgICAgICh0aGlzLmVuZC5sYXQgfHwgdGhpcy5lbmQubGF0ID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZW5kRW50aXR5ICYmICh0aGlzLmVuZEVudGl0eS5zaG93ID0gdHJ1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW5kRW50aXR5ICYmICh0aGlzLmVuZEVudGl0eS5zaG93ID0gZmFsc2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmVuZExhdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmVuZExhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcclxuICAgICAgdGhpcy5fZWxlbWVudF9zdHlsZS50eXBlID0gJ3RleHQvY3NzJ1xyXG4gICAgICB0aGlzLl9lbGVtZW50X3N0eWxlLnNldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJywgJ1lKX3N0eWxlX2RpYWxvZycpXHJcbiAgICAgIC8vIHRoaXMuX2VsZW1lbnRfc3R5bGUuaW5uZXJIVE1MID0gY3NzKClcclxuICAgICAgLy8gdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgICAvLyAgIHRpdGxlOiAn6Lev5b6E6KeE5YiSJyxcclxuICAgICAgLy8gICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgLy8gICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgLy8gICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9KVxyXG4gICAgICAvLyBhd2FpdCB0aGlzLl9EaWFsb2dPYmplY3QuaW5pdCgpXHJcblxyXG4gICAgICAvLyBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgLy8gZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgICAvLyBkaXYuc3R5bGUubGVmdCA9ICcyNHB4J1xyXG4gICAgICAvLyBkaXYuc3R5bGUuZmxldCA9ICcwJ1xyXG4gICAgICAvLyBkaXYuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdSb3V0ZVBsYW5uaW5nJylbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9vdCcpWzBdLmFwcGVuZENoaWxkKGRpdilcclxuICAgICAgLy8gLy8gdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChkaXYpXHJcblxyXG4gICAgICAvLyBsZXQgcXVlcnlCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKVxyXG4gICAgICAvLyBxdWVyeUJ0bi5jbGFzc05hbWUgPSAnZGVmYXVsdCdcclxuICAgICAgLy8gcXVlcnlCdG4uaW5uZXJIVE1MID1cclxuICAgICAgLy8gICAnPHN2ZyBjbGFzcz1cImljb24tcXVlcnlcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1xdWVyeVwiPjwvdXNlPjwvc3ZnPuafpeivoidcclxuICAgICAgLy8gcXVlcnlCdG4uc3R5bGUud2lkdGggPSAnYXV0bydcclxuICAgICAgbGV0IHF1ZXJ5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JvdXRlUXVlcnknKVxyXG4gICAgICBxdWVyeUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodGhpcy5zdGFydExuZyB8fCB0aGlzLnN0YXJ0TG5nID09PSAwKSAmJlxyXG4gICAgICAgICAgKHRoaXMuc3RhcnRMYXQgfHwgdGhpcy5zdGFydExhdCA9PT0gMCkgJiZcclxuICAgICAgICAgICh0aGlzLmVuZExuZyB8fCB0aGlzLmVuZExuZyA9PT0gMCkgJiZcclxuICAgICAgICAgICh0aGlzLmVuZExhdCB8fCB0aGlzLmVuZExhdCA9PT0gMClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICF0aGlzLnN0YXJ0RW50aXR5ICYmXHJcbiAgICAgICAgICAgICh0aGlzLnN0YXJ0RW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuc3RhcnRMbmcsIHRoaXMuc3RhcnRMYXQpXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc1xyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9zdGFydC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMixcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkpXHJcbiAgICAgICAgICB0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgICAhdGhpcy5lbmRFbnRpdHkgJiZcclxuICAgICAgICAgICAgKHRoaXMuZW5kRW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuZW5kTG5nLCB0aGlzLmVuZExhdClcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcG9zXHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2VuZC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMixcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkpXHJcbiAgICAgICAgICB0aGlzLmVuZEVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5xdWVyeUNhbGxCYWNrKHtcclxuICAgICAgICAgICAgICBzdGFydDogW3RoaXMuc3RhcnRMbmcsIHRoaXMuc3RhcnRMYXRdLFxyXG4gICAgICAgICAgICAgIGVuZDogW3RoaXMuZW5kTG5nLCB0aGlzLmVuZExhdF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiAn6K+35YWI6K6+572u6LW354K55ZKM57uI54K55Z2Q5qCH77yBJyB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLy8gZGl2LmFwcGVuZENoaWxkKHF1ZXJ5QnRuKVxyXG5cclxuICAgICAgLy8gbGV0IGNsZWFuQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcclxuICAgICAgLy8gY2xlYW5CdG4uY2xhc3NOYW1lID0gJ2RlZmF1bHQnXHJcbiAgICAgIC8vIGNsZWFuQnRuLmlubmVySFRNTCA9XHJcbiAgICAgIC8vICAgJzxzdmcgY2xhc3M9XCJpY29uLXJvdXRlXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tcm91dGVcIj48L3VzZT48L3N2Zz7muIXpmaTot6/nur8nXHJcbiAgICAgIC8vIGNsZWFuQnRuLnN0eWxlLndpZHRoID0gJ2F1dG8nXHJcbiAgICAgIC8vIGNsZWFuQnRuLnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBweCdcclxuICAgICAgbGV0IGNsZWFuQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsZWFyUm91dGUnKVxyXG4gICAgICBjbGVhbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKClcclxuICAgICAgfSlcclxuICAgICAgLy8gZGl2LmFwcGVuZENoaWxkKGNsZWFuQnRuKVxyXG5cclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50X3N0eWxlKVxyXG4gICAgICAvLyBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdSb3V0ZVBsYW5uaW5nJylbMF1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5ncHMpIHtcclxuICAgICAgICBsZXQgbG9jYXRlQ3VycmVudEJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpXHJcbiAgICAgICAgbG9jYXRlQ3VycmVudEJ0bi5pbm5lckhUTUwgPSAn5b2T5YmN5L2N572uJ1xyXG4gICAgICAgIGxvY2F0ZUN1cnJlbnRCdG4uc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4J1xyXG4gICAgICAgIGxvY2F0ZUN1cnJlbnRCdG4uc2V0QXR0cmlidXRlKCdkYXRhLWlzJywgJ3N0YXJ0JylcclxuICAgICAgICBsb2NhdGVDdXJyZW50QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldExvY2F0ZUN1cnJlbnQoZSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBzdGFydENvbEVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RhcnQtY29sJylbMF1cclxuICAgICAgICBzdGFydENvbEVsbS5hcHBlbmRDaGlsZChsb2NhdGVDdXJyZW50QnRuKVxyXG5cclxuICAgICAgICBsZXQgZW5kUGlja0J0bkVsbSA9IGNvbnRlbnRFbG0uX2VsZW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ2VuZC1waWNrLWJ0bidcclxuICAgICAgICApWzBdXHJcbiAgICAgICAgZW5kUGlja0J0bkVsbS5zdHlsZS5tYXJnaW5SaWdodCA9ICc5MXB4J1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKVxyXG4gICAgICBSb3V0ZVBsYW5uaW5nLkV2ZW50QmluZGluZyh0aGlzLCBhbGxfZWxtKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgICBkb2N1bWVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF1cclxuICAgICAgICAgIC5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50X3N0eWxlKVxyXG4gICAgICAgIHRoaXMuX2VsZW1lbnRfc3R5bGUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICBpZiAodGhpcy5zdGFydEVudGl0eSkge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc3RhcnRFbnRpdHkpXHJcbiAgICAgIHRoaXMuc3RhcnRFbnRpdHkgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbmRFbnRpdHkpIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVuZEVudGl0eSlcclxuICAgICAgdGhpcy5lbmRFbnRpdHkgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGFydEV4dGVuc2lvbkVudGl0eSkge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc3RhcnRFeHRlbnNpb25FbnRpdHkpXHJcbiAgICAgIHRoaXMuc3RhcnRFeHRlbnNpb25FbnRpdHkgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbmRFeHRlbnNpb25FbnRpdHkpIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVuZEV4dGVuc2lvbkVudGl0eSlcclxuICAgICAgdGhpcy5lbmRFeHRlbnNpb25FbnRpdHkgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5jbGVhcigpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhdGVDdXJyZW50KGUpIHtcclxuICAgIHRoaXMucmVjb25uZWN0aW5nICYmIHRoaXMucmVjb25uZWN0aW5nLmNsb3NlKClcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICBsZXQgdXJsID0gJydcclxuICAgIHVybCA9IHRoaXMub3B0aW9ucy5ob3N0ICsgJy95amVhcnRoNC4wL2FwaS92MS9ncHMvc3RhdGUnXHJcbiAgICB0aGlzLnJlY29ubmVjdGluZyA9IG5ldyBSZWNvbm5lY3RpbmdXZWJTb2NrZXQoJ3dzOi8vJyArIHVybClcclxuICAgIHRoaXMucmVjb25uZWN0aW5nLm9ub3BlbiA9IGV2ZW50ID0+IHtcclxuICAgICAgdGhpcy5yZWNvbm5lY3Rpbmcub25tZXNzYWdlID0gZXZlbnQgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSlcclxuICAgICAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5ybWMpIHtcclxuICAgICAgICAgIHRoaXMucmVjb25uZWN0aW5nLmNsb3NlKClcclxuICAgICAgICAgIGlmIChlLnNyY0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWlzJykgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydExuZyA9IHRoaXMuZGF0YS5ybWMubG5nXHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRMYXQgPSB0aGlzLmRhdGEucm1jLmxhdFxyXG4gICAgICAgICAgICAhdGhpcy5zdGFydEVudGl0eSAmJlxyXG4gICAgICAgICAgICAgICh0aGlzLnN0YXJ0RW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRMbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRMYXRcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc1xyXG4gICAgICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9zdGFydC5wbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMixcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgdGhpcy5zdGFydEVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbmRMbmcgPSB0aGlzLmRhdGEucm1jLmxuZ1xyXG4gICAgICAgICAgICB0aGlzLmVuZExhdCA9IHRoaXMuZGF0YS5ybWMubGF0XHJcbiAgICAgICAgICAgICF0aGlzLmVuZEVudGl0eSAmJlxyXG4gICAgICAgICAgICAgICh0aGlzLmVuZEVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgICAgICAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jbGFtcFRvSGVpZ2h0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZExuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRMYXRcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc1xyXG4gICAgICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9lbmQucG5nJyxcclxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzIsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgIHRoaXMuZW5kRW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnu5jliLbot6/lvoRcclxuICAgKi9cclxuICBjcmVhdGVSb3V0ZShwb3NpdGlvbnMpIHtcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5zdGFydExuZyB8fCB0aGlzLnN0YXJ0TG5nID09PSAwKSAmJlxyXG4gICAgICAodGhpcy5zdGFydExhdCB8fCB0aGlzLnN0YXJ0TGF0ID09PSAwKSAmJlxyXG4gICAgICAodGhpcy5zdGFydExuZyAhPT0gcG9zaXRpb25zWzBdLmxuZyB8fCB0aGlzLnN0YXJ0TGF0ICE9PSBwb3NpdGlvbnNbMF0ubGF0KVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRFeHRlbnNpb24gPSBbXHJcbiAgICAgICAgdGhpcy5zdGFydExuZyxcclxuICAgICAgICB0aGlzLnN0YXJ0TGF0LFxyXG4gICAgICAgIHBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgcG9zaXRpb25zWzBdLmxhdFxyXG4gICAgICBdXHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0RXh0ZW5zaW9uRW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5zdGFydEV4dGVuc2lvbkVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFxyXG4gICAgICAgICAgdGhpcy5zdGFydEV4dGVuc2lvblxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RXh0ZW5zaW9uRW50aXR5ID0gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheSh0aGlzLnN0YXJ0RXh0ZW5zaW9uKSxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3B0aW9ucy53aWR0aCxcclxuICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCAyKSxcclxuICAgICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuZW5kTG5nIHx8IHRoaXMuZW5kTG5nID09PSAwKSAmJlxyXG4gICAgICAodGhpcy5lbmRMYXQgfHwgdGhpcy5lbmRMYXQgPT09IDApICYmXHJcbiAgICAgICh0aGlzLmVuZExuZyAhPT0gcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5sbmcgfHxcclxuICAgICAgICB0aGlzLmVuZExhdCAhPT0gcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5sYXQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lbmRFeHRlbnNpb24gPSBbXHJcbiAgICAgICAgdGhpcy5lbmRMbmcsXHJcbiAgICAgICAgdGhpcy5lbmRMYXQsXHJcbiAgICAgICAgcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5sbmcsXHJcbiAgICAgICAgcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5sYXRcclxuICAgICAgXVxyXG4gICAgICBpZiAodGhpcy5lbmRFeHRlbnNpb25FbnRpdHkpIHtcclxuICAgICAgICB0aGlzLmVuZEV4dGVuc2lvbkVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFxyXG4gICAgICAgICAgdGhpcy5lbmRFeHRlbnNpb25cclxuICAgICAgICApXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbmRFeHRlbnNpb25FbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIHNob3c6IHRoaXMub3B0aW9ucy5zaG93LFxyXG4gICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgcG9zaXRpb25zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KHRoaXMuZW5kRXh0ZW5zaW9uKSxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3B0aW9ucy53aWR0aCxcclxuICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IHRoaXMuZ2V0TWF0ZXJpYWwodGhpcy5vcHRpb25zLmNvbG9yLCAyKSxcclxuICAgICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KFxyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXlcclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpLFxyXG4gICAgICAgICAgd2lkdGg6IHRoaXMub3B0aW9ucy53aWR0aCxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICBtYXRlcmlhbDogdGhpcy5nZXRNYXRlcmlhbCh0aGlzLm9wdGlvbnMuY29sb3IsIDApLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaLvuWPlui1t+eCuVxyXG4gICAqL1xyXG4gIHBpY2tTdGFydFBvcyhmdW5jKSB7XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCflt6bplK7pgInmi6notbfngrnlnZDmoIfvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgdGhpcy5zdGFydExuZyA9IHBvczg0LmxuZ1xyXG4gICAgICB0aGlzLnN0YXJ0TGF0ID0gcG9zODQubGF0XHJcbiAgICAgIGZ1bmMocG9zODQpXHJcbiAgICAgICF0aGlzLnN0YXJ0RW50aXR5ICYmXHJcbiAgICAgICAgKHRoaXMuc3RhcnRFbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChcclxuICAgICAgICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLnN0YXJ0TG5nLCB0aGlzLnN0YXJ0TGF0KVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICByZXR1cm4gcG9zXHJcbiAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3N0YXJ0LnBuZycsXHJcbiAgICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDMyLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMzJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApKVxyXG4gICAgICB0aGlzLnN0YXJ0RW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5ou+5Y+W57uI54K5XHJcbiAgICovXHJcbiAgcGlja0VuZFBvcyhmdW5jKSB7XHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCflt6bplK7pgInmi6nnu4jngrnlnZDmoIfvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgdGhpcy5lbmRMbmcgPSBwb3M4NC5sbmdcclxuICAgICAgdGhpcy5lbmRMYXQgPSBwb3M4NC5sYXRcclxuICAgICAgZnVuYyhwb3M4NClcclxuICAgICAgIXRoaXMuZW5kRW50aXR5ICYmXHJcbiAgICAgICAgKHRoaXMuZW5kRW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoXHJcbiAgICAgICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5lbmRMbmcsIHRoaXMuZW5kTGF0KVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICByZXR1cm4gcG9zXHJcbiAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2VuZC5wbmcnLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAzMixcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDMyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKSlcclxuICAgICAgdGhpcy5lbmRFbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIH0pXHJcbiAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIEV2ZW50QmluZGluZyh0aGF0LCBlbGVtZW50cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgRXZlbnQgPSBbXVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCAhZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIGNvbnRpbnVlXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXggJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQubWluICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdC5fZWxtc1ttLnZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoYXQuX2VsbXNbbS52YWx1ZV0ucHVzaChlbGVtZW50c1tpXSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGF0Ll9lbG1zW20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGF0W20udmFsdWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2hhbmdlJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5wdXNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoYXRbbS52YWx1ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCByZW1vdmVOYW1lLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgZSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFJvdXRlUGxhbm5pbmdcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQU1BO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFNQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBZ0dBO0FBQUE7QUFBQTtBQTlGQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5FQTtBQUFBO0FBQUE7QUFtRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFGQTtBQUFBO0FBS0E7QUFzRkE7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/RoutePlanning/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/SectorObject/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/SectorObject/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
\\n
\\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
\\n
\\n
\\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
\\n \\n m\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u7ECF\\u5EA6\\uFF08X\\uFF09
\\n
\\u7EAC\\u5EA6\\uFF08Y\\uFF09
\\n
\\u9AD8\\u5EA6\\uFF08Z\\uFF09
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\u9762\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
\\n
\\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU2VjdG9yT2JqZWN0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1NlY3Rvck9iamVjdC9fZWxlbWVudC5qcz9jZDMyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZUVsbSwgbGFiZWxTdHlsZUVsbTEsIGxhYmVsU3R5bGVFbG0yIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9lbG1faHRtbCdcclxuXHJcbmZ1bmN0aW9uIGh0bWwodGhhdCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCA2MCU7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwcHg7XCI+5oqV5b2x6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbnB1dC10ZXh0XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwiYXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWxlY3QtdW5pdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPERJVi1jeS10YWJzIGlkPVwiY2lyY2xlLW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgJHthdHRyaWJ1dGVFbG0odGhhdCl9XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi56m66Ze05L+h5oGvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGhlaWdodC1tb2RlLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+6auY5bqm5qih5byPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodC1tb2RlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+WuWAvOe7n+S4gOWinuWKoDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtIGhlaWdodC1jb25maXJtXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBzcGF0aWFsLWluZm8tdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nu4/luqbvvIhY77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPue6rOW6pu+8iFnvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6auY5bqm77yIWu+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIumdoumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumdouminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZUNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6557q/5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIiBzdHlsZT1cIndpZHRoOiA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTlcIiBAbW9kZWw9XCJsaW5lV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfms6jpo47moLxcIj5cclxuICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTEoKX1cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLmoIfnrb7po47moLxcIj5cclxuICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTIoKX1cclxuICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgPC9ESVYtY3ktdGFicz5cclxuICAgIDwvZGl2PlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQWlGQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/SectorObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/SectorObject/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/SectorObject/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/SectorObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 扇形\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SectorObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 创建扇形\r\n * @param sdk\r\n * @param options {object} 扇形属性\r\n * @param options.id {string} 标注id\r\n * @param options.name {string} 名称\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.color=\"rgba(255, 0, 0, 0.5)\" {string} 颜色\r\n * @param options.center {object} 位置\r\n * @param options.center.lng {number} 经度\r\n * @param options.center.lat {number} 纬度\r\n * @param options.center.alt {number} 高度\r\n * @param options.radius=10 {number} 半径\r\n * @param options.startAngle=10 {number} 起始方向\r\n * @param options.endAngle=0 {number} 结束方向\r\n * @param options.line {object} 边框\r\n * @param options.line.width=3 {number} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n */\n function SectorObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, SectorObject);\n _this2 = _callSuper(this, SectorObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"rgba(255, 0, 0, 0.5)\";\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.semiMinorAxis = options.semiMinorAxis || options.semiMinorAxis === 0 ? options.semiMinorAxis : 10;\n _this2.options.semiMajorAxis = options.semiMajorAxis || options.semiMajorAxis === 0 ? options.semiMajorAxis : 20;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.center = options.center || {};\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n options.label = options.label || {};\n _this2._elms = {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.nodePoints = [];\n _this2.operate = {};\n _this2.Dialog = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n SectorObject.create(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(SectorObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(SectorObject, [{\n key: \"type\",\n get: function get() {\n return 'SectorObject';\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this3 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this3.options.heightMode = v || v == 0 ? v : 2;\n _this3.positionEditing = false;\n if (!_this3.entity) {\n return;\n }\n var heightModeName = '';\n _this3.closeNodeEdit();\n var ground = false;\n var disabled = false;\n _this3.renewPositions();\n _this3.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this3.positions), [_this3.positions[0], _this3.positions[1]]);\n _this3.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this3.positions);\n switch (_this3.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this3.label.ground = ground;\n _this3.entity.polyline.clampToGround = ground;\n _this3.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this3.entity.polygon.perPositionHeight = !ground ? true : false;\n _this3._elms.heightMode && (_this3._elms.heightMode.value = heightModeName);\n _this3._elms.heightModeObject && _this3._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this3._elms.heightBox && (_this3._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this3._elms.heightConfirm && _this3._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.center.alt;\n },\n set: function set(v) {\n var _this4 = this;\n if (!v || isNaN(Number(v))) {\n this.options.center.alt = 0;\n } else {\n this.options.center.alt = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positions);\n _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positions), [_this4.positions[0], _this4.positions[1]]);\n _this4.entity.polyline.clampToGround = !ground ? false : true;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this4.options.center.alt;\n });\n }\n }, {\n key: \"startAngle\",\n get: function get() {\n return this.options.startAngle;\n },\n set: function set(v) {\n this.options.startAngle = v;\n this.height = this.height;\n }\n }, {\n key: \"endAngle\",\n get: function get() {\n return this.options.endAngle;\n },\n set: function set(v) {\n this.options.endAngle = v;\n this.height = this.height;\n }\n }, {\n key: \"center\",\n get: function get() {\n return this.options.center;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.center = v;\n this.height = this.height;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this5.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this5.options.center.lat;\n });\n }\n }, {\n key: \"radius\",\n get: function get() {\n return this.options.radius;\n },\n set: function set(v) {\n this.options.radius = v;\n this.height = this.height;\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n this.entity.polyline.width = this.lineWidth;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.color = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.line.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.options.line.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this7.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.lineColor = 'rgba(255,0,0,0.5)';\n } //点击清空按钮事件回调\n });\n _this7._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.line.width = v || v === 0 ? v : 3;\n this.entity.polyline.width = this.options.line.width;\n this._elms.lineWidth && this._elms.lineWidth.forEach(function (item) {\n item.value = _this8.options.line.width;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this11 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this11.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this11._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this12 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this12.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this12.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this12.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this12._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this13 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, heightBoxElm, heightElm, heightConfirmElm, heightModeData, heightModeObject, heightModeDataLegpElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 8:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' circle';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('circle-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n SectorObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (this.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context.next = 57;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = this._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n i = 0;\n case 41:\n if (!(i < heightModeData.length)) {\n _context.next = 49;\n break;\n }\n if (!(heightModeData[i].key == this.heightMode)) {\n _context.next = 46;\n break;\n }\n heightModeDataLegpElm.value = heightModeData[i].value;\n heightModeObject.legp_searchActive(heightModeData[i].value);\n return _context.abrupt(\"break\", 49);\n case 46:\n i++;\n _context.next = 41;\n break;\n case 49:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i = 0; _i < heightModeData.length; _i++) {\n if (heightModeData[_i].value === heightModeDataLegpElm.value) {\n _this13.heightMode = heightModeData[_i].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this13.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n this._elms.height = heightElm;\n this._elms.heightBox = heightBoxElm;\n this._elms.heightMode = heightModeDataLegpElm;\n this._elms.heightConfirm = heightConfirmElm;\n this._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this13.operate.positionEditing) {\n _this13.positionEditing = false;\n _this13.height = _this13.height + Number(heightElm.value);\n } else {\n SectorObject.closeNodeEdit(_this13);\n _this13.heightMode = _this13.heightMode;\n setTimeout(function () {\n _this13.height = _this13.height + Number(heightElm.value);\n }, 100);\n }\n });\n case 57:\n setTimeout(function () {\n _this13.attributeLink = _this13.options.attribute.link.content;\n _this13.attributeVr = _this13.options.attribute.vr.content;\n _this13.cameraSelect && _this13.cameraSelect();\n _this13.goodsSelect && _this13.goodsSelect();\n var tagData = _this13.attributeSelect;\n var attributeElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i2 = 0; _i2 < tagData.length; _i2++) {\n if (tagData[_i2].key === _this13.options.attributeType) {\n attributeSelectElm.value = tagData[_i2].value;\n legpObject.legp_searchActive(tagData[_i2].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this13.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n }\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this13.options['area-unit'];\n for (var _i4 = 0; _i4 < unitData.length; _i4++) {\n if (unitData[_i4].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i4].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < unitData.length; _i5++) {\n if (unitData[_i5].value === unitDataLegpElm.value) {\n _this13.areaUnit = unitData[_i5].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this13.labelFontFamily].value;\n for (var _i6 = 0; _i6 < fontData.length; _i6++) {\n if (fontData[_i6].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i6].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < fontData.length; _i7++) {\n if (fontData[_i7].value === fontDataLegpElm.value) {\n _this13.labelFontFamily = fontData[_i7].key;\n break;\n }\n }\n });\n _this13._elms.labelFontFamily = [fontDataLegpElm];\n }\n createSpatialInfoTableContent();\n }, 0);\n _context.next = 61;\n break;\n case 60:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 61:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this14 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.radius = this.originalOptions.radius;\n this.color = this.originalOptions.color;\n this.labelShow = this.originalOptions.label.show;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelColor = this.originalOptions.label.color;\n this.lineWidth = this.originalOptions.line.width;\n this.lineLength = this.originalOptions.line.length;\n this.lineColor = this.originalOptions.line.color;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.heightMode = this.originalOptions.heightMode;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.innerHTML = _this14.options.center.lng;\n });\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.innerHTML = _this14.options.center.lat;\n });\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this14.options.center.alt;\n });\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"_addLink\",\n value: function _addLink() {\n // document.getElementsByClassName\n if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '';\n this.attributeLink = this.options.attribute.link.content;\n } else {\n this.Dialog.clickAddLink && this.Dialog.clickAddLink();\n }\n }\n }, {\n key: \"addAttributeLink\",\n value: function addAttributeLink(link) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.attributeLink = this.options.attribute.link.content;\n }\n }, {\n key: \"_addRr\",\n value: function _addRr() {\n if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = '';\n this.attributeVr = this.options.attribute.vr.content;\n } else {\n this.Dialog.clickAddVr && this.Dialog.clickAddVr();\n }\n }\n }, {\n key: \"addAttributeRr\",\n value: function addAttributeRr(vr) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: vr\n });\n this.attributeVr = this.options.attribute.vr.content;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positions,\n positionArray,\n height,\n pos84,\n point1,\n point2,\n direction,\n c,\n ray,\n r,\n pickedObjects,\n i,\n promise,\n a,\n _i8,\n BoundingSphere,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!this.options.customView) {\n _context3.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context3.next = 16;\n break;\n }\n _context3.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context3.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context3.next = 60;\n break;\n case 23:\n positions = this.entity.polyline.positions.getValue();\n positionArray = [];\n height = 0;\n pos84 = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n point1 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 0);\n point2 = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 10000000);\n direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n c = Cesium.Cartesian3.normalize(direction, direction);\n ray = new Cesium.Ray(point1, c);\n r = {};\n pickedObjects = this.sdk.viewer.scene.drillPickFromRay(ray);\n i = 0;\n case 35:\n if (!(i < pickedObjects.length)) {\n _context3.next = 42;\n break;\n }\n if (!pickedObjects[i].position) {\n _context3.next = 39;\n break;\n }\n r = pickedObjects[i];\n return _context3.abrupt(\"break\", 42);\n case 39:\n i++;\n _context3.next = 35;\n break;\n case 42:\n if (!(r && r.position)) {\n _context3.next = 46;\n break;\n }\n height = this.cartesian3Towgs84(r.position, this.sdk.viewer).alt;\n _context3.next = 55;\n break;\n case 46:\n _context3.prev = 46;\n _context3.next = 49;\n return Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(pos84.lng, pos84.lat)]);\n case 49:\n promise = _context3.sent;\n height = promise[0].height;\n _context3.next = 55;\n break;\n case 53:\n _context3.prev = 53;\n _context3.t0 = _context3[\"catch\"](46);\n case 55:\n a = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, height);\n positionArray.push(a.x, a.y, a.z);\n for (_i8 = 1; _i8 < positions.length; _i8++) {\n positionArray.push(positions[_i8].x, positions[_i8].y, positions[_i8].z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 60:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this, [[46, 53]]);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this15 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this15.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this16 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var _this = this;\n this.operate.positionEditing = status;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n if (status === true) {\n this.previous = {\n center: this.deepCopyObj(this.options.center)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n this.renewPositions();\n this.event.mouse_move(function (movement, cartesian) {\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n positions.alt = _this16.options.center.alt;\n // this.renewPositions(positions)\n var height = 0;\n var ground = false;\n switch (_this16.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = _this16.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(positions.lng, positions.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray = _this16.calSector(positions, _this16.options.radius, _this16.options.startAngle, _this16.options.endAngle, 360, true);\n var fromDegreesArray2 = [];\n if (!ground) {\n for (var i = 0; i < fromDegreesArray.length; i++) {\n fromDegreesArray2.push(fromDegreesArray[i].lng, fromDegreesArray[i].lat, positions.alt + height);\n }\n _this16.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n _this16.label && (_this16.label.position = [positions.lng, positions.lat, positions.alt + height]);\n } else {\n for (var _i9 = 0; _i9 < fromDegreesArray.length; _i9++) {\n fromDegreesArray2.push(fromDegreesArray[_i9].lng, fromDegreesArray[_i9].lat);\n }\n _this16.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray2);\n _this16.getClampToHeight({\n lng: positions.lng,\n lat: positions.lat\n }).then(function (height) {\n _this16.label && (_this16.label.position = [positions.lng, positions.lat, height]);\n });\n }\n _this16.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n _this16.options.center.lng = Number(positions.lng.toFixed(8));\n _this16.options.center.lat = Number(positions.lat.toFixed(8));\n _this16.center = _this16.options.center;\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n _this16.previous = {\n center: _this16.deepCopyObj(_this16.options.center)\n };\n _this16.positionEditing = false;\n if (_this16._positionEditingCallback) {\n _this16._positionEditingCallback();\n _this16._positionEditingCallback = null;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this16.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this16.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this16.positionEditing = false;\n } else {\n var positions = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n _this16.options.center.lng = positions.lng;\n _this16.options.center.lat = positions.lat;\n _this16.center = _this16.options.center;\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n _this16.event.gesture_pinck_end(function () {});\n _this16.previous = {\n center: _this16.deepCopyObj(_this16.options.center)\n };\n _this16.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positions);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n }, false);\n } else {\n if (!this.previous) {\n this.previous = {\n center: this.deepCopyObj(this.options.center)\n };\n }\n this.options.center = this.deepCopyObj(this.previous.center);\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this.positions);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positions), [_this.positions[0], _this.positions[1]]);\n this.previous = null;\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n }, {\n key: \"areaChangeCallBack\",\n get: function get() {\n return this._areaChangeCallBack;\n },\n set: function set(cd) {\n this._areaChangeCallBack = cd;\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n var that = this;\n that.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {} else {\n var calculateAangle = function calculateAangle(arr) {\n function getAangle(start, end) {\n var rad = Math.PI / 180,\n lat1 = start.y * rad,\n lat2 = end.y * rad,\n lon1 = start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n var bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI) - 90;\n return 360 - bearing % 360;\n }\n var center = arr[0];\n var pos84_1 = arr[1];\n var pos84_2 = arr[2];\n var start = {\n x: center.lng,\n y: center.lat\n };\n var end1 = {\n x: pos84_1.lng,\n y: pos84_1.lat\n };\n var end2 = {\n x: pos84_2.lng,\n y: pos84_2.lat\n };\n var angle1 = getAangle(start, end1);\n var angle2 = getAangle(start, end2);\n return {\n angle1: angle1,\n angle2: angle2\n };\n };\n var createNodePoints = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(pos, type) {\n var pos84, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n pos84 = that.cartesian3Towgs84(pos, that.sdk.viewer);\n _context4.next = 3;\n return that.getClampToHeight(pos84);\n case 3:\n height = _context4.sent;\n entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n type: type,\n position: Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, height),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }\n });\n that.nodePoints.push(entity);\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function createNodePoints(_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n that.event && that.event.destroy();\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个编辑点,右键取消', that.sdk);\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var fromDegreesArray = that.calSector(that.options.center, that.options.radius, that.options.startAngle, that.options.endAngle);\n var points = [];\n var radius = that.options.radius;\n var options = {\n angle1: that.options.startAngle,\n angle2: that.options.endAngle\n };\n that.entity.polyline.clampToGround = true;\n that.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n that.entity.polygon.perPositionHeight = false;\n that.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(fromDegreesArray);\n }, false);\n that.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(fromDegreesArray), [fromDegreesArray[0], fromDegreesArray[1]]);\n }, false);\n var positions = that.entity.polyline.positions.getValue();\n points = [_objectSpread({}, that.center), that.cartesian3Towgs84(positions[1], that.sdk.viewer), that.cartesian3Towgs84(positions[positions.length - 4], that.sdk.viewer)];\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.sdk.viewer.entities.values);\n setTimeout(function () {\n that.getClampToHeight({\n lng: that.options.center.lng,\n lat: that.options.center.lat\n }, objectsToExclude).then(function (height) {\n that.label.position = [that.options.center.lng, that.options.center.lat, height];\n });\n }, 200);\n setTimeout(function () {\n createNodePoints(positions[1], 'sector-start');\n createNodePoints(positions[positions.length - 4], 'sector-end');\n that.event.mouse_left(function (movement, cartesian) {\n if (selectPoint) {\n that.options.startAngle = options.angle1;\n that.options.endAngle = options.angle2;\n that.options.radius = radius;\n that.event && that.event.destroy();\n that.tip && that.tip.destroy();\n that.tip = null;\n selectPoint = null;\n YJ.Measure.SetMeasureStatus(false);\n that.heightMode = that.heightMode;\n } else {\n var pick = that.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point' && (pick.id._type === 'sector-start' || pick.id._type === 'sector-end')) {\n that.tip.set_text('左键确认,右键取消');\n selectPoint = pick.id;\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n }\n }\n });\n that.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n var pos84 = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n if (selectPoint._type === 'sector-start') {\n points[1] = pos84;\n }\n if (selectPoint._type === 'sector-end') {\n points[2] = pos84;\n }\n options = calculateAangle(points);\n var pointA = Cesium.Cartesian3.fromDegrees(points[0].lng, points[0].lat, 0);\n var pointB = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, 0);\n ;\n radius = Cesium.Cartesian3.distance(pointA, pointB);\n fromDegreesArray = that.calSector(that.options.center, radius, options.angle1, options.angle2);\n }\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right(function (movement, cartesian) {\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n that.event && that.event.destroy();\n that.tip && that.tip.destroy();\n that.tip = null;\n that.heightMode = that.heightMode;\n cb('', _objectSpread({}, that.options.center));\n });\n }, 200);\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n this.picking = true;\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this17 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(this.options.center.lng, this.options.center.lat);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this17.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(center) {\n var _this18 = this;\n if (this._error) {\n return;\n }\n var ground = false;\n if (!center) {\n center = this.options.center;\n }\n var height = 0;\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(center.lng, center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray = this.calSector(center, this.options.radius, this.options.startAngle, this.options.endAngle, 360, true);\n var fromDegreesArray2 = [];\n if (!ground) {\n for (var i = 0; i < fromDegreesArray.length; i++) {\n fromDegreesArray2.push(fromDegreesArray[i].lng, fromDegreesArray[i].lat, center.alt + height);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [center.lng, center.lat, center.alt + height]);\n } else {\n for (var _i10 = 0; _i10 < fromDegreesArray.length; _i10++) {\n fromDegreesArray2.push(fromDegreesArray[_i10].lng, fromDegreesArray[_i10].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray2);\n setTimeout(function () {\n _this18.getClampToHeight({\n lng: center.lng,\n lat: center.lat\n }).then(function (height) {\n _this18.label && (_this18.label.position = [center.lng, center.lat, height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n var angle = this.options.endAngle - this.options.startAngle;\n if (angle < 0) {\n angle = 360 + angle;\n }\n this.areaByMeter = Number((Cesium.Math.PI * this.options.radius * this.options.radius * (angle / 360)).toFixed(2));\n this.areaChangeCallBack && this.areaChangeCallBack();\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var fromDegreesArray = that.calSector(that.options.center, that.options.radius, that.options.startAngle, that.options.endAngle, 360, true);\n var ground = true;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(that.options.center.lng, that.options.center.lat)) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n if (!that.options.label.position) {\n that.options.label.position = {\n lng: that.options.center.lng,\n lat: that.options.center.lat,\n alt: that.options.center.alt + height\n };\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n var fromDegreesArray2 = [];\n var positionsA;\n that.options.label.ground = ground;\n if (ground) {\n for (var i = 0; i < fromDegreesArray.length; i++) {\n fromDegreesArray2.push(fromDegreesArray[i].lng, fromDegreesArray[i].lat);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray2);\n } else {\n for (var _i11 = 0; _i11 < fromDegreesArray.length; _i11++) {\n fromDegreesArray2.push(fromDegreesArray[_i11].lng, fromDegreesArray[_i11].lat, that.options.center.alt + height);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n }\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(that.positions),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positions), [that.positions[0], that.positions[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n SectorObject.createLabel(that);\n var angle = that.options.endAngle - that.options.startAngle;\n if (angle < 0) {\n angle = 360 + angle;\n }\n that.areaByMeter = Number((Cesium.Math.PI * that.options.radius * that.options.radius * (angle / 360)).toFixed(2));\n that.areaChangeCallBack && that.areaChangeCallBack();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: that.options.label.ground\n });\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function createLabel(_x4) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (SectorObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU2VjdG9yT2JqZWN0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1NlY3Rvck9iamVjdC9pbmRleC5qcz8zOThjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDmiYflvaJcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tIFwiLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnNcIjtcclxuaW1wb3J0IHJpY2hUZXh0IGZyb20gXCIuLi8uLi9FbGVtZW50L3JpY2hUZXh0XCI7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZGF0YWxpc3QnO1xyXG5pbXBvcnQgeyBnZXRGb250TGlzdCwgZ2V0Rm9udEZhbWlseU5hbWUgfSBmcm9tICcuLi8uLi9FbGVtZW50L2ZvbnRTZWxlY3QnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIFNlY3Rvck9iamVjdCBleHRlbmRzIEJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBkZXNjcmlwdGlvbiDliJvlu7rmiYflvaJcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5omH5b2i5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaWQge3N0cmluZ30g5qCH5rOoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPVwicmdiYSgyNTUsIDAsIDAsIDAuNSlcIiB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jZW50ZXIge29iamVjdH0g5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY2VudGVyLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jZW50ZXIubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNlbnRlci5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucmFkaXVzPTEwIHtudW1iZXJ9IOWNiuW+hFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0YXJ0QW5nbGU9MTAge251bWJlcn0g6LW35aeL5pa55ZCRXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZW5kQW5nbGU9MCB7bnVtYmVyfSDnu5PmnZ/mlrnlkJFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lIHtvYmplY3R9IOi+ueahhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxpbmUud2lkdGg9MyB7bnVtYmVyfSDovrnmoYblrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lLmNvbG9yPVwicmdiYSgxNTUsIDE1NSwgMTI0LCAwLjg5KVwiIHtzdHJpbmd9IOi+ueahhuminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmhlaWdodE1vZGU9MntudW1iZXJ9IOmrmOW6puaooeW8j++8iDDvvJrmtbfmi5Tpq5jluqbvvJsx77ya55u45a+55Zyw6KGo77ybMu+8muS+nemZhOaooeW8j++8iVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsIHtvYmplY3R9IOagh+etvuWvueixoVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnRleHQge3N0cmluZ30g5qCH562+5paH5pysXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2hvdyB7c3RyaW5nfSDmoIfnrb7mmL7pmpBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbiB7c3RyaW5nfSDmoIfnrb7kvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mb250U2l6ZT0yMCB7bnVtYmVyfSDlrZfkvZPlpKflsI9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5PTAge251bWJlcn0g5a2X5L2T6aG5IDDvvJrpu5HkvZPvvJsx77ya5oCd5rqQ6buR5L2T77ybMu+8muW6numXqOato+mBk+agh+mimOS9k++8mzPvvJrmlbDpu5HkvZNcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5jb2xvcj0jZmZmZmZmIHtzdHJpbmd9IOWtl+S9k+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aD00IHtudW1iZXJ9IOW8lee6v+WuvVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmxpbmVDb2xvcj0jMDBmZmZmODAge3N0cmluZ30g5byV57q/6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQ9MjAge251bWJlcn0g5a2X5L2T5YGP56e7KOW8lee6v+mVv+W6pilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3I9WycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10ge2FycmF5fSDog4zmma/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2Uge2Jvb2xlYW59IOi3neemu+e8qeaUvlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLm5lYXI9MjAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5Hot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mYXI9MTAwMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/nOi3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZSB7b2JqZWN0fSDlsZ7mgKflhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluayB7b2JqZWN0fSDpk77mjqVcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50PVtdXSB7YXJyYXl9IOmTvuaOpeWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbXS5uYW1lIHtzdHJpbmd9IOmTvuaOpeWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbXS51cmwge3N0cmluZ30g6ZO+5o6l5Zyw5Z2AXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucmljaFRleHRDb250ZW50IHtzdHJpbmd9IOWvjOaWh+acrOWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcge29iamVjdH0g6buY6K6k6KeG6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbiB7b2JqZWN0fSDpu5jorqTop4bop5LmlrnkvY1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcge251bWJlcn0g6Iiq5ZCR6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5waXRjaCB7bnVtYmVyfSDkv6/ku7Dop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwge251bWJlcn0g57+75rua6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uIHtvYmplY3R9IOinhuinkuebuOWvueS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJ+acquWRveWQjeWvueixoSdcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgXCJyZ2JhKDI1NSwgMCwgMCwgMC41KVwiXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLnNlbWlNaW5vckF4aXMgPSAob3B0aW9ucy5zZW1pTWlub3JBeGlzIHx8IG9wdGlvbnMuc2VtaU1pbm9yQXhpcyA9PT0gMCkgPyBvcHRpb25zLnNlbWlNaW5vckF4aXMgOiAxMFxyXG4gICAgdGhpcy5vcHRpb25zLnNlbWlNYWpvckF4aXMgPSAob3B0aW9ucy5zZW1pTWFqb3JBeGlzIHx8IG9wdGlvbnMuc2VtaU1ham9yQXhpcyA9PT0gMCkgPyBvcHRpb25zLnNlbWlNYWpvckF4aXMgOiAyMFxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmNlbnRlciA9IG9wdGlvbnMuY2VudGVyIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHRoaXMub3B0aW9ucy5saW5lLndpZHRoIHx8IHRoaXMub3B0aW9ucy5saW5lLndpZHRoID09PSAwKSA/IHRoaXMub3B0aW9ucy5saW5lLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgfHwgJ3JnYmEoMjU1LCAwLCAwLCAxKSdcclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kc1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG4gICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIHRoaXMub3BlcmF0ZSA9IHt9XHJcbiAgICB0aGlzLkRpYWxvZyA9IHt9XHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgU2VjdG9yT2JqZWN0LmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ1NlY3Rvck9iamVjdCdcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHRNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID8gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgOiAwXHJcbiAgfVxyXG4gIHNldCBoZWlnaHRNb2RlKHYpIHtcclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gW11cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9ICh2IHx8IHYgPT0gMCkgPyB2IDogMlxyXG4gICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgaGVpZ2h0TW9kZU5hbWUgPSAnJ1xyXG4gICAgICB0aGlzLmNsb3NlTm9kZUVkaXQoKVxyXG4gICAgICBsZXQgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgbGV0IGRpc2FibGVkID0gZmFsc2VcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9ucyxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zXHJcbiAgICAgIClcclxuICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+a1t+aLlOmrmOW6pidcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgaGVpZ2h0TW9kZU5hbWUgPSAn55u45a+55Zyw6KGoJ1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+S+nemZhOaooeWeiydcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYWJlbC5ncm91bmQgPSBncm91bmRcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IGdyb3VuZFxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQyxcclxuICAgICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLnBlclBvc2l0aW9uSGVpZ2h0ID0gIWdyb3VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGUgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZS52YWx1ZSA9IGhlaWdodE1vZGVOYW1lKVxyXG4gICAgICB0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QgJiYgKHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICBoZWlnaHRNb2RlTmFtZVxyXG4gICAgICApKVxyXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3ggZGlzYWJsZWQnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodEJveCAmJiAodGhpcy5fZWxtcy5oZWlnaHRCb3guY2xhc3NOYW1lID0gJ2lucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3gnKTtcclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodENvbmZpcm0gJiYgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdFxyXG4gIH1cclxuXHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICBpZiAoIXYgfHwgaXNOYU4oTnVtYmVyKHYpKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdCA9IDBcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdCA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgyKSlcclxuICAgIH1cclxuICAgIGxldCBncm91bmRcclxuICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICBncm91bmQgPSB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhpcy5wb3NpdGlvbnMpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9ucyxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1swXSxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmFyY1R5cGUgPSAhZ3JvdW5kID8gQ2VzaXVtLkFyY1R5cGUuTk9ORSA6IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDXHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICB0aGlzLl9lbG1zLmFsdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmFsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmNlbnRlci5hbHRcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzdGFydEFuZ2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlXHJcbiAgfVxyXG4gIHNldCBzdGFydEFuZ2xlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlID0gdjtcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHRcclxuICB9XHJcbiAgZ2V0IGVuZEFuZ2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lbmRBbmdsZTtcclxuICB9XHJcbiAgc2V0IGVuZEFuZ2xlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5lbmRBbmdsZSA9IHY7XHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBnZXQgY2VudGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICB9XHJcbiAgc2V0IGNlbnRlcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY2VudGVyID0gdlxyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodFxyXG4gICAgdGhpcy5fZWxtcy5sbmcgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIubG5nXHJcbiAgICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmNlbnRlci5sYXRcclxuICAgICAgfSlcclxuICB9XHJcbiAgZ2V0IHJhZGl1cygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmFkaXVzXHJcbiAgfVxyXG5cclxuICBzZXQgcmFkaXVzKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5yYWRpdXMgPSB2O1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodFxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdiB8fCAncmdiYSgyNTUsIDAsIDAsIDAuNSknXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5Z29uKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IDIpIHtcclxuICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24ubWF0ZXJpYWwgPSBtYXRlcmlhbFxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggPSB0aGlzLmxpbmVXaWR0aFxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMub3B0aW9ucy5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwwLDAsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5jb2xvclxyXG4gIH1cclxuICBzZXQgbGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdiB8fCAncmdiYSgyNTUsIDAsIDAsIDAuNSknXHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5bGluZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMubGluZS5jb2xvcilcclxuICAgIGlmICh0aGlzLl9lbG1zLmxpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMubGluZS5jb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICB9XHJcbiAgc2V0IGxpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9ICgodiB8fCB2ID09PSAwKSA/IHYgOiAzKVxyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmUud2lkdGggPSB0aGlzLm9wdGlvbnMubGluZS53aWR0aFxyXG4gICAgdGhpcy5fZWxtcy5saW5lV2lkdGggJiYgdGhpcy5fZWxtcy5saW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gdGhhdC5jYWxTZWN0b3IodGhhdC5vcHRpb25zLmNlbnRlciwgdGhhdC5vcHRpb25zLnJhZGl1cywgdGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUsIHRoYXQub3B0aW9ucy5lbmRBbmdsZSwgMzYwLCB0cnVlKVxyXG4gICAgbGV0IGdyb3VuZCA9IHRydWVcclxuICAgIGxldCBoZWlnaHQgPSAwXHJcblxyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmNlbnRlci5sbmcsIHRoYXQub3B0aW9ucy5jZW50ZXIubGF0KSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIGlmICghdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAgIHRoYXQub3B0aW9ucy5sYWJlbC5wb3NpdGlvbiA9IHsgbG5nOiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgbGF0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmxhdCwgYWx0OiB0aGF0Lm9wdGlvbnMuY2VudGVyLmFsdCArIGhlaWdodCB9XHJcbiAgICB9XHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkyID0gW11cclxuICAgIGxldCBwb3NpdGlvbnNBXHJcblxyXG4gICAgdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG5cclxuICAgIGlmIChncm91bmQpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChmcm9tRGVncmVlc0FycmF5W2ldLmxuZywgZnJvbURlZ3JlZXNBcnJheVtpXS5sYXQpXHJcbiAgICAgIH1cclxuICAgICAgdGhhdC5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkyKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkyLnB1c2goZnJvbURlZ3JlZXNBcnJheVtpXS5sbmcsIGZyb21EZWdyZWVzQXJyYXlbaV0ubGF0LCB0aGF0Lm9wdGlvbnMuY2VudGVyLmFsdCArIGhlaWdodClcclxuICAgICAgfVxyXG4gICAgICB0aGF0LnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkyKVxyXG4gICAgfVxyXG5cclxuICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93LFxyXG4gICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpLFxyXG4gICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiAhZ3JvdW5kID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIG1hdGVyaWFsOiBtYXRlcmlhbCxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IFsuLi50aGF0LnBvc2l0aW9ucywgdGhhdC5wb3NpdGlvbnNbMF0sIHRoYXQucG9zaXRpb25zWzFdXSxcclxuICAgICAgICB3aWR0aDogdGhhdC5vcHRpb25zLmxpbmUud2lkdGgsXHJcbiAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmxpbmUuY29sb3IpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6ICFncm91bmQgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgICAgYXJjVHlwZTogIWdyb3VuZCA/IENlc2l1bS5BcmNUeXBlLk5PTkUgOiBDZXNpdW0uQXJjVHlwZS5HRU9ERVNJQyxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgIFNlY3Rvck9iamVjdC5jcmVhdGVMYWJlbCh0aGF0KVxyXG5cclxuICAgIGxldCBhbmdsZSA9IHRoYXQub3B0aW9ucy5lbmRBbmdsZSAtIHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlXHJcbiAgICBpZiAoYW5nbGUgPCAwKSB7XHJcbiAgICAgIGFuZ2xlID0gMzYwICsgYW5nbGVcclxuICAgIH1cclxuICAgIHRoYXQuYXJlYUJ5TWV0ZXIgPSBOdW1iZXIoKENlc2l1bS5NYXRoLlBJICogdGhhdC5vcHRpb25zLnJhZGl1cyAqIHRoYXQub3B0aW9ucy5yYWRpdXMgKiAoYW5nbGUgLyAzNjApKS50b0ZpeGVkKDIpKTtcclxuICAgIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrICYmIHRoYXQuYXJlYUNoYW5nZUNhbGxCYWNrKClcclxuXHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcblxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIGdyb3VuZDogdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KCkge1xyXG4gICAgICAgIGxldCB0YWJsZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3BhdGlhbC1pbmZvLXRhYmxlJylbMF1cclxuICAgICAgICBsZXQgdEJvZHlFbG0gPSB0YWJsZUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICB0Qm9keUVsbS5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZyA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdCA9IFtdXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQgPSBbXVxyXG4gICAgICAgIGxldCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyJ1xyXG4gICAgICAgIHRyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBhbGlnbi1jZW50ZXJcIj7lnIblv4PlnZDmoIc8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsbmcgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbGF0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICBgXHJcbiAgICAgICAgbGV0IGxuZ0JveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xuZycpWzBdXHJcbiAgICAgICAgbGV0IGxuZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgIGxuZy5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICBsZXQgbG5nSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgbG5nSW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgIGxuZ0lucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgIGxuZ0lucHV0LnRpdGxlID0gJydcclxuICAgICAgICBsbmdJbnB1dC5taW4gPSAtMTgwXHJcbiAgICAgICAgbG5nSW5wdXQubWF4ID0gMTgwXHJcbiAgICAgICAgbG5nSW5wdXQudmFsdWUgPSAoX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nKS50b0ZpeGVkKDgpXHJcblxyXG4gICAgICAgIGxldCBsYXRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQnKVswXVxyXG4gICAgICAgIGxldCBsYXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICBsYXQuaW5uZXJIVE1MID0gKF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdCkudG9GaXhlZCg4KVxyXG4gICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgbGV0IGxhdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgIGxhdElucHV0LmNsYXNzTmFtZSA9ICdpbnB1dCdcclxuICAgICAgICBsYXRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICBsYXRJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgbGF0SW5wdXQubWluID0gLTkwXHJcbiAgICAgICAgbGF0SW5wdXQubWF4ID0gOTBcclxuICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IChfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpLnRvRml4ZWQoOClcclxuXHJcbiAgICAgICAgbGV0IGFsdEJveCA9IHRyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsdCcpWzBdXHJcbiAgICAgICAgbGV0IGFsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgIGFsdC5pbm5lckhUTUwgPSAoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpXHJcbiAgICAgICAgYWx0Qm94LmFwcGVuZENoaWxkKGFsdClcclxuICAgICAgICBsZXQgYWx0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgYWx0SW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgIGFsdElucHV0LnR5cGUgPSAnbnVtYmVyJ1xyXG4gICAgICAgIGFsdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICBhbHRJbnB1dC5taW4gPSAtOTk5OTk5OVxyXG4gICAgICAgIGFsdElucHV0Lm1heCA9IDk5OTk5OTk5OVxyXG4gICAgICAgIGFsdElucHV0LnZhbHVlID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG5cclxuICAgICAgICBsbmdCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nSW5wdXQpXHJcbiAgICAgICAgICBsbmdJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFNlY3Rvck9iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxuZ0lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5jZW50ZXIubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgbG5nQm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbG5nSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5vcHRpb25zLmNlbnRlci5sbmcgPSBOdW1iZXIoTnVtYmVyKGxuZ0lucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgbG5nLmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMuY2VudGVyLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBfdGhpcy5oZWlnaHRcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBsYXRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBsYXRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0SW5wdXQpXHJcbiAgICAgICAgICBsYXRJbnB1dC5mb2N1cygpXHJcbiAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFNlY3Rvck9iamVjdC5jbG9zZU5vZGVFZGl0KF90aGlzKVxyXG4gICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxhdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5jZW50ZXIubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5vcHRpb25zLmNlbnRlci5sYXQgPSBOdW1iZXIoTnVtYmVyKGxhdElucHV0LnZhbHVlKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgbGF0LmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMuY2VudGVyLmxhdC50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBfdGhpcy5oZWlnaHRcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBhbHRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHRJbnB1dClcclxuICAgICAgICAgIGFsdElucHV0LmZvY3VzKClcclxuICAgICAgICAgIGlmIChfdGhpcy5vcGVyYXRlLnBvc2l0aW9uRWRpdGluZykge1xyXG4gICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgU2VjdG9yT2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICBfdGhpcy5oZWlnaHRNb2RlID0gX3RoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBhbHRCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBhbHRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIF90aGlzLmhlaWdodCA9IE51bWJlcihOdW1iZXIoYWx0SW5wdXQudmFsdWUpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICBhbHQuaW5uZXJIVE1MID0gTnVtYmVyKF90aGlzLmhlaWdodC50b0ZpeGVkKDIpKVxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmcucHVzaChsbmcpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubG5nSW5wdXQucHVzaChsbmdJbnB1dClcclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXQucHVzaChsYXQpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQucHVzaChsYXRJbnB1dClcclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHQucHVzaChhbHQpXHJcbiAgICAgICAgX3RoaXMuX2VsbXMuYWx0SW5wdXQucHVzaChhbHRJbnB1dClcclxuICAgICAgICB0Qm9keUVsbS5hcHBlbmRDaGlsZCh0cilcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+aJh+W9ouWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gIXRoaXMucG9zaXRpb25FZGl0aW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZWNvbmRhcnlFZGl0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIFNlY3Rvck9iamVjdC5ub2RlRWRpdCh0aGlzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGNpcmNsZSdcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGVcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygnY2lyY2xlLW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbExpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIFNlY3Rvck9iamVjdC5FdmVudEJpbmRpbmcodGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgPSBbbGluZWNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsYWJlbGxpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgbGV0IGhlaWdodENvbmZpcm1FbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtY29uZmlybScpWzBdXHJcbiAgICAgIGhlaWdodEVsbS52YWx1ZSA9IDEwXHJcbiAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgIGhlaWdodEJveEVsbSAmJiAoaGVpZ2h0Qm94RWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94IGRpc2FibGVkJyk7XHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVEYXRhID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAgdmFsdWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIHZhbHVlOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIGtleTogJzEnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICBrZXk6ICcyJyxcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgICAgbGV0IGhlaWdodE1vZGVPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgKVxyXG4gICAgICBpZiAoaGVpZ2h0TW9kZU9iamVjdCkge1xyXG4gICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LW1vZGUnKVswXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLmtleSA9PSB0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0TW9kZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ID0gaGVpZ2h0Qm94RWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCA9IGhlaWdodE1vZGVPYmplY3RcclxuXHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgU2VjdG9yT2JqZWN0LmNsb3NlTm9kZUVkaXQodGhpcylcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHRNb2RlID0gdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyBOdW1iZXIoaGVpZ2h0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgICB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXVxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncChhdHRyaWJ1dGVFbG0sIFwiLmF0dHJpYnV0ZS1zZWxlY3RcIilcclxuICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodGFnRGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0YWdEYXRhW2ldLnZhbHVlID09PSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHVuaXREYXRhID0gW3tcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5bmz5pa55Y2D57GzJyxcclxuICAgICAgICAgIHZhbHVlOiAn5bmz5pa55Y2D57GzJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S6qScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S6qSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflhazpobcnLFxyXG4gICAgICAgICAgdmFsdWU6ICflhazpobcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQtYm94JylbMF0sIFwiLmlucHV0LXNlbGVjdC11bml0XCIpXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMub3B0aW9uc1snYXJlYS11bml0J11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJlYVVuaXQgPSB1bml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY3JlYXRlU3BhdGlhbEluZm9UYWJsZUNvbnRlbnQoKVxyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMucmFkaXVzID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMucmFkaXVzXHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMubGFiZWxTaG93ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2hvd1xyXG4gICAgdGhpcy5sYWJlbEZvbnRTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgdGhpcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gICAgdGhpcy5sYWJlbE5lYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgICB0aGlzLmxhYmVsRmFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5saW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLndpZHRoXHJcbiAgICB0aGlzLmxpbmVMZW5ndGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLmxlbmd0aFxyXG4gICAgdGhpcy5saW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5oZWlnaHRNb2RlXHJcblxyXG4gICAgdGhpcy5fZWxtcy5sbmcgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sbmcuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5jZW50ZXIubG5nXHJcbiAgICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLmxhdCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmNlbnRlci5sYXRcclxuICAgICAgfSlcclxuICAgIHRoaXMuX2VsbXMuYWx0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdFxyXG4gICAgICB9KVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIF9hZGRMaW5rKCkge1xyXG4gICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0udmFsdWUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgICAgbmFtZTogJ+mTvuaOpScsXHJcbiAgICAgICAgdXJsOiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rX2FkZCcpWzBdLnZhbHVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0udmFsdWUgPSAnJ1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuRGlhbG9nLmNsaWNrQWRkTGluayAmJiB0aGlzLkRpYWxvZy5jbGlja0FkZExpbmsoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXR0cmlidXRlTGluayhsaW5rKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5wdXNoKHtcclxuICAgICAgbmFtZTogJ+mTvuaOpScsXHJcbiAgICAgIHVybDogbGlua1xyXG4gICAgfSlcclxuICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgfVxyXG5cclxuICBfYWRkUnIoKSB7XHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndnJfYWRkJylbMF0udmFsdWUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50LnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICflhajmma/lm74nLFxyXG4gICAgICAgIHVybDogdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndnJfYWRkJylbMF0udmFsdWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndnJfYWRkJylbMF0udmFsdWUgPSAnJ1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5EaWFsb2cuY2xpY2tBZGRWciAmJiB0aGlzLkRpYWxvZy5jbGlja0FkZFZyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEF0dHJpYnV0ZVJyKHZyKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgIG5hbWU6ICflhajmma/lm74nLFxyXG4gICAgICB1cmw6IHZyXHJcbiAgICB9KVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgKi9cclxuICBhc3luYyBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3KSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zLmdldFZhbHVlKClcclxuICAgICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgICBsZXQgcG9zODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBsZXQgcG9pbnQxID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zODQubG5nLCBwb3M4NC5sYXQsIDApO1xyXG4gICAgICBsZXQgcG9pbnQyID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zODQubG5nLCBwb3M4NC5sYXQsIDEwMDAwMDAwKTtcclxuICAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KHBvaW50MiwgcG9pbnQxLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIGxldCBjID0gQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKGRpcmVjdGlvbiwgZGlyZWN0aW9uKTtcclxuICAgICAgbGV0IHJheSA9IG5ldyBDZXNpdW0uUmF5KHBvaW50MSwgYyk7XHJcbiAgICAgIGxldCByID0ge31cclxuICAgICAgbGV0IHBpY2tlZE9iamVjdHMgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZHJpbGxQaWNrRnJvbVJheShyYXkpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocGlja2VkT2JqZWN0c1tpXS5wb3NpdGlvbikge1xyXG4gICAgICAgICAgciA9IHBpY2tlZE9iamVjdHNbaV1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyICYmIHIucG9zaXRpb24pIHtcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHIucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBwcm9taXNlID0gYXdhaXQgQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQodGhpcy5zZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlciwgW0Nlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMocG9zODQubG5nLCBwb3M4NC5sYXQpXSk7XHJcbiAgICAgICAgICBoZWlnaHQgPSBwcm9taXNlWzBdLmhlaWdodFxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zODQubG5nLCBwb3M4NC5sYXQsIGhlaWdodClcclxuICAgICAgcG9zaXRpb25BcnJheS5wdXNoKGEueCwgYS55LCBhLnopXHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKHBvc2l0aW9uc1tpXS54LCBwb3NpdGlvbnNbaV0ueSwgcG9zaXRpb25zW2ldLnopXHJcbiAgICAgIH1cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omT5byA5a+M5paH5pys5qGGXHJcbiAgICovXHJcbiAgb3BlblJpY2hUZXh0RWRpdG9yKGUpIHtcclxuICAgIHJpY2hUZXh0Lm9wZW4odGhpcy5vcHRpb25zLmlkLCB0aGlzLm9wdGlvbnMubmFtZSwgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudClcclxuICAgIHJpY2hUZXh0LnByaW1hcnlDYWxsQmFjayA9IChjb250ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBjb250ZW50XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpIHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWdvbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICBjZW50ZXI6IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLmNlbnRlcilcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+eCueWHu+m8oOagh+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDAuOSlgKSlcclxuICAgICAgdGhpcy5waWNraW5nID0gZmFsc2VcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgIHBvc2l0aW9ucy5hbHQgPSB0aGlzLm9wdGlvbnMuY2VudGVyLmFsdFxyXG4gICAgICAgIC8vIHRoaXMucmVuZXdQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICAgICAgbGV0IGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHBvc2l0aW9ucy5sbmcsIHBvc2l0aW9ucy5sYXQpKSB8fCAwXHJcbiAgICAgICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IHRoaXMuY2FsU2VjdG9yKHBvc2l0aW9ucywgdGhpcy5vcHRpb25zLnJhZGl1cywgdGhpcy5vcHRpb25zLnN0YXJ0QW5nbGUsIHRoaXMub3B0aW9ucy5lbmRBbmdsZSwgMzYwLCB0cnVlKVxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICAgICAgaWYgKCFncm91bmQpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKGZyb21EZWdyZWVzQXJyYXlbaV0ubG5nLCBmcm9tRGVncmVlc0FycmF5W2ldLmxhdCwgcG9zaXRpb25zLmFsdCArIGhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoXHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkyXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgcG9zaXRpb25zLmxuZyxcclxuICAgICAgICAgICAgcG9zaXRpb25zLmxhdCxcclxuICAgICAgICAgICAgcG9zaXRpb25zLmFsdCArIGhlaWdodFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcm9tRGVncmVlc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkyLnB1c2goZnJvbURlZ3JlZXNBcnJheVtpXS5sbmcsIGZyb21EZWdyZWVzQXJyYXlbaV0ubGF0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkyKVxyXG4gICAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgbG5nOiBwb3NpdGlvbnMubG5nLFxyXG4gICAgICAgICAgICBsYXQ6IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgIH0pLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnMubG5nLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9ucy5sYXQsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxuZyA9IE51bWJlcigocG9zaXRpb25zLmxuZykudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IE51bWJlcigocG9zaXRpb25zLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICB0aGlzLmNlbnRlciA9IHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgY2VudGVyOiB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucy5jZW50ZXIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2spIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jZW50ZXIubG5nID0gcG9zaXRpb25zLmxuZ1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2VudGVyLmxhdCA9IHBvc2l0aW9ucy5sYXRcclxuICAgICAgICAgICAgdGhpcy5jZW50ZXIgPSB0aGlzLm9wdGlvbnMuY2VudGVyXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgICAgICBjZW50ZXI6IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLmNlbnRlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9ucylcclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnMsIF90aGlzLnBvc2l0aW9uc1swXSwgX3RoaXMucG9zaXRpb25zWzFdXVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMucHJldmlvdXMpIHtcclxuICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgY2VudGVyOiB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucy5jZW50ZXIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5jZW50ZXIgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMucHJldmlvdXMuY2VudGVyKVxyXG4gICAgICBpZiAodGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLmVudGl0eSAmJiB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDEpYClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9ucylcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gWy4uLl90aGlzLnBvc2l0aW9ucywgX3RoaXMucG9zaXRpb25zWzBdLCBfdGhpcy5wb3NpdGlvbnNbMV1dXHJcblxyXG4gICAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcG9zaXRpb25FZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgZ2V0IGFyZWFDaGFuZ2VDYWxsQmFjaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmVhQ2hhbmdlQ2FsbEJhY2tcclxuICB9XHJcblxyXG4gIHNldCBhcmVhQ2hhbmdlQ2FsbEJhY2soY2QpIHtcclxuICAgIHRoaXMuX2FyZWFDaGFuZ2VDYWxsQmFjayA9IGNkXHJcbiAgfVxyXG5cclxuICBub2RlRWRpdChjYiA9ICgpID0+IHsgfSkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICB0aGF0LnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoYXQuZXZlbnQgJiYgdGhhdC5ldmVudC5kZXN0cm95KClcclxuICAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhhdC50aXAgPSBuZXcgTW91c2VUaXAoJ+ivt+mAieaLqeS4gOS4que8lui+keeCue+8jOWPs+mUruWPlua2iCcsIHRoYXQuc2RrKVxyXG4gICAgICB0aGF0LmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgIGxldCBzZWxlY3RQb2ludFxyXG5cclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGF0LmNhbFNlY3Rvcih0aGF0Lm9wdGlvbnMuY2VudGVyLCB0aGF0Lm9wdGlvbnMucmFkaXVzLCB0aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSwgdGhhdC5vcHRpb25zLmVuZEFuZ2xlKVxyXG4gICAgICBsZXQgcG9pbnRzID0gW11cclxuICAgICAgbGV0IHJhZGl1cyA9IHRoYXQub3B0aW9ucy5yYWRpdXNcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgYW5nbGUxOiB0aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSxcclxuICAgICAgICBhbmdsZTI6IHRoYXQub3B0aW9ucy5lbmRBbmdsZVxyXG4gICAgICB9XHJcbiAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUFhbmdsZShhcnIpIHtcclxuICAgICAgICBmdW5jdGlvbiBnZXRBYW5nbGUoc3RhcnQsIGVuZCkge1xyXG4gICAgICAgICAgbGV0IHJhZCA9IE1hdGguUEkgLyAxODAsXHJcbiAgICAgICAgICAgIGxhdDEgPSBzdGFydC55ICogcmFkLFxyXG4gICAgICAgICAgICBsYXQyID0gZW5kLnkgKiByYWQsXHJcbiAgICAgICAgICAgIGxvbjEgPSBzdGFydC54ICogcmFkLFxyXG4gICAgICAgICAgICBsb24yID0gZW5kLnggKiByYWQ7XHJcbiAgICAgICAgICBjb25zdCBhID0gTWF0aC5zaW4obG9uMiAtIGxvbjEpICogTWF0aC5jb3MobGF0Mik7XHJcbiAgICAgICAgICBjb25zdCBiID1cclxuICAgICAgICAgICAgTWF0aC5jb3MobGF0MSkgKiBNYXRoLnNpbihsYXQyKSAtXHJcbiAgICAgICAgICAgIE1hdGguc2luKGxhdDEpICogTWF0aC5jb3MobGF0MikgKiBNYXRoLmNvcyhsb24yIC0gbG9uMSk7XHJcbiAgICAgICAgICBjb25zdCByYWRpYW5zID0gTWF0aC5hdGFuMihhLCBiKVxyXG4gICAgICAgICAgY29uc3QgZGVncmVlcyA9IHJhZGlhbnMgJSAoMiAqIE1hdGguUEkpO1xyXG4gICAgICAgICAgbGV0IGJlYXJpbmcgPSA0NTAgLSAoKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSSA8IDBcclxuICAgICAgICAgICAgPyAzNjAgKyAoZGVncmVlcyAqIDE4MCkgLyBNYXRoLlBJXHJcbiAgICAgICAgICAgIDogKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSSkgLSA5MDtcclxuICAgICAgICAgIHJldHVybiAzNjAgLSAoYmVhcmluZyAlIDM2MClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjZW50ZXIgPSBhcnJbMF1cclxuICAgICAgICBsZXQgcG9zODRfMSA9IGFyclsxXVxyXG4gICAgICAgIGxldCBwb3M4NF8yID0gYXJyWzJdXHJcblxyXG4gICAgICAgIGxldCBzdGFydCA9IHsgeDogY2VudGVyLmxuZywgeTogY2VudGVyLmxhdCB9XHJcbiAgICAgICAgbGV0IGVuZDEgPSB7IHg6IHBvczg0XzEubG5nLCB5OiBwb3M4NF8xLmxhdCB9XHJcbiAgICAgICAgbGV0IGVuZDIgPSB7IHg6IHBvczg0XzIubG5nLCB5OiBwb3M4NF8yLmxhdCB9XHJcblxyXG4gICAgICAgIGxldCBhbmdsZTEgPSBnZXRBYW5nbGUoc3RhcnQsIGVuZDEpXHJcbiAgICAgICAgbGV0IGFuZ2xlMiA9IGdldEFhbmdsZShzdGFydCwgZW5kMilcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGFuZ2xlMSxcclxuICAgICAgICAgIGFuZ2xlMlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWVcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9IENlc2l1bS5BcmNUeXBlLkdFT0RFU0lDXHJcbiAgICAgIHRoYXQuZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSBmYWxzZVxyXG4gICAgICB0aGF0LmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gWy4uLmZyb21EZWdyZWVzQXJyYXksIGZyb21EZWdyZWVzQXJyYXlbMF0sIGZyb21EZWdyZWVzQXJyYXlbMV1dXHJcbiAgICAgIH0sIGZhbHNlKVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucy5nZXRWYWx1ZSgpXHJcbiAgICAgIHBvaW50cyA9IFtcclxuICAgICAgICB7IC4uLnRoYXQuY2VudGVyIH0sXHJcbiAgICAgICAgdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMV0sIHRoYXQuc2RrLnZpZXdlciksXHJcbiAgICAgICAgdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDRdLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgIF1cclxuICAgICAgbGV0IG9iamVjdHNUb0V4Y2x1ZGUgPSBbLi4udGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc11cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhhdFxyXG4gICAgICAgICAgLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICBsbmc6IHRoYXQub3B0aW9ucy5jZW50ZXIubG5nLFxyXG4gICAgICAgICAgICBsYXQ6IHRoYXQub3B0aW9ucy5jZW50ZXIubGF0XHJcbiAgICAgICAgICB9LCBvYmplY3RzVG9FeGNsdWRlKVxyXG4gICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMuY2VudGVyLmxuZyxcclxuICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMuY2VudGVyLmxhdCxcclxuICAgICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSwgMjAwKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY3JlYXRlTm9kZVBvaW50cyhwb3NpdGlvbnNbMV0sICdzZWN0b3Itc3RhcnQnKVxyXG4gICAgICAgIGNyZWF0ZU5vZGVQb2ludHMocG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSA0XSwgJ3NlY3Rvci1lbmQnKVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSA9IG9wdGlvbnMuYW5nbGUxXHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5lbmRBbmdsZSA9IG9wdGlvbnMuYW5nbGUyXHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5yYWRpdXMgPSByYWRpdXNcclxuXHJcbiAgICAgICAgICAgIHRoYXQuZXZlbnQgJiYgdGhhdC5ldmVudC5kZXN0cm95KClcclxuICAgICAgICAgICAgdGhhdC50aXAgJiYgdGhhdC50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICAgIHRoYXQudGlwID0gbnVsbFxyXG4gICAgICAgICAgICBzZWxlY3RQb2ludCA9IG51bGxcclxuICAgICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG5cclxuICAgICAgICAgICAgdGhhdC5oZWlnaHRNb2RlID0gdGhhdC5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBpY2sgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHBpY2sgJiZcclxuICAgICAgICAgICAgICBwaWNrLmlkICYmXHJcbiAgICAgICAgICAgICAgcGljay5pZC5uYW1lICYmXHJcbiAgICAgICAgICAgICAgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcgJiZcclxuICAgICAgICAgICAgICAocGljay5pZC5fdHlwZSA9PT0gJ3NlY3Rvci1zdGFydCcgfHwgcGljay5pZC5fdHlwZSA9PT0gJ3NlY3Rvci1lbmQnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGF0LnRpcC5zZXRfdGV4dCgn5bem6ZSu56Gu6K6k77yM5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0Lm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuX3R5cGUgPT09ICdzZWN0b3Itc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgcG9pbnRzWzFdID0gcG9zODRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuX3R5cGUgPT09ICdzZWN0b3ItZW5kJykge1xyXG4gICAgICAgICAgICAgIHBvaW50c1syXSA9IHBvczg0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucyA9IGNhbGN1bGF0ZUFhbmdsZShwb2ludHMpXHJcbiAgICAgICAgICAgIGxldCBwb2ludEEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb2ludHNbMF0ubG5nLCBwb2ludHNbMF0ubGF0LCAwKTtcclxuICAgICAgICAgICAgbGV0IHBvaW50QiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCAwKTs7XHJcbiAgICAgICAgICAgIHJhZGl1cyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IHRoYXQuY2FsU2VjdG9yKHRoYXQub3B0aW9ucy5jZW50ZXIsIHJhZGl1cywgb3B0aW9ucy5hbmdsZTEsIG9wdGlvbnMuYW5nbGUyKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoYXQudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQubm9kZVBvaW50c1tpXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcblxyXG4gICAgICAgICAgdGhhdC5ldmVudCAmJiB0aGF0LmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhhdC50aXAgJiYgdGhhdC50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGF0LnRpcCA9IG51bGxcclxuXHJcbiAgICAgICAgICB0aGF0LmhlaWdodE1vZGUgPSB0aGF0LmhlaWdodE1vZGVcclxuXHJcbiAgICAgICAgICBjYignJywgeyAuLi50aGF0Lm9wdGlvbnMuY2VudGVyIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSwgMjAwKTtcclxuICAgICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTm9kZVBvaW50cyhwb3MsIHR5cGUpIHtcclxuICAgICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvcywgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGF0LmdldENsYW1wVG9IZWlnaHQocG9zODQpXHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgaGVpZ2h0KSxcclxuICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGF0Lm5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU5vZGVFZGl0KCkge1xyXG4gICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCA9IG51bGxcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubm9kZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMubm9kZVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgRXZlbnRCaW5kaW5nKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBpZiAoIWVsZW1lbnRzW2ldIHx8ICFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubm9kZU5hbWUgPT0gJ0lNRycpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnNyYyA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS52YWx1ZSA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoYXQuX2VsbXNbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGF0Ll9lbG1zW20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjaGFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInICYmIHZhbHVlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlc1ttXSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcmVtb3ZlTmFtZS5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKHJlbW92ZU5hbWVbbl0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0V2ZW50KSB7XHJcbiAgICAgICAgbGV0IHZlbnRUeXBlID0gJ2lucHV0J1xyXG4gICAgICAgIGlmIChlbGVtZW50c1tpXS50YWdOYW1lICE9ICdJTlBVVCcgfHwgZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICB2ZW50VHlwZSA9ICdjaGFuZ2UnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIodmVudFR5cGUsIChlKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50Lmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgIEV2ZW50W3RdKGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERJVihvcHRpb25zID0geyBkb21pZDogXCJcIiwgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IChvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwKSA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSAob3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCkgPyBvcHRpb25zLnkgOiAxMFxyXG4gICAgbGV0IHNpdGVJbmZvRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5kb21pZClcclxuICAgIGxldCBzaXRlSW5mb1Bvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmNlbnRlci5sbmcsIHRoaXMub3B0aW9ucy5jZW50ZXIubGF0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld1Bvc2l0aW9ucyhjZW50ZXIpIHtcclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBncm91bmQgPSBmYWxzZVxyXG5cclxuICAgIGlmICghY2VudGVyKSB7XHJcbiAgICAgIGNlbnRlciA9IHRoaXMub3B0aW9ucy5jZW50ZXJcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoY2VudGVyLmxuZywgY2VudGVyLmxhdCkpIHx8IDBcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSB0aGlzLmNhbFNlY3RvcihjZW50ZXIsIHRoaXMub3B0aW9ucy5yYWRpdXMsIHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlLCB0aGlzLm9wdGlvbnMuZW5kQW5nbGUsIDM2MCwgdHJ1ZSlcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICBpZiAoIWdyb3VuZCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5Mi5wdXNoKGZyb21EZWdyZWVzQXJyYXlbaV0ubG5nLCBmcm9tRGVncmVlc0FycmF5W2ldLmxhdCwgY2VudGVyLmFsdCArIGhlaWdodClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKFxyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkyXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgY2VudGVyLmxuZyxcclxuICAgICAgICBjZW50ZXIubGF0LFxyXG4gICAgICAgIGNlbnRlci5hbHQgKyBoZWlnaHRcclxuICAgICAgXSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbURlZ3JlZXNBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkyLnB1c2goZnJvbURlZ3JlZXNBcnJheVtpXS5sbmcsIGZyb21EZWdyZWVzQXJyYXlbaV0ubGF0KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5MilcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IGNlbnRlci5sbmcsXHJcbiAgICAgICAgICBsYXQ6IGNlbnRlci5sYXRcclxuICAgICAgICB9KS50aGVuKGhlaWdodCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICBjZW50ZXIubG5nLFxyXG4gICAgICAgICAgICBjZW50ZXIubGF0LFxyXG4gICAgICAgICAgICBoZWlnaHRcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSwgMTAwKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOiuoeeul+aKleW9semdouenr1xyXG4gICAgbGV0IGFuZ2xlID0gdGhpcy5vcHRpb25zLmVuZEFuZ2xlIC0gdGhpcy5vcHRpb25zLnN0YXJ0QW5nbGVcclxuICAgIGlmIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgPSAzNjAgKyBhbmdsZVxyXG4gICAgfVxyXG4gICAgdGhpcy5hcmVhQnlNZXRlciA9IE51bWJlcigoQ2VzaXVtLk1hdGguUEkgKiB0aGlzLm9wdGlvbnMucmFkaXVzICogdGhpcy5vcHRpb25zLnJhZGl1cyAqIChhbmdsZSAvIDM2MCkpLnRvRml4ZWQoMikpO1xyXG4gICAgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2sgJiYgdGhpcy5hcmVhQ2hhbmdlQ2FsbEJhY2soKVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNlY3Rvck9iamVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMEdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZJQTtBQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUxBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWxlQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9lQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWhHQTtBQUFBO0FBQUE7QUFBQTtBQWtHQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBa0tBO0FBQ0E7QUFBQTtBQTdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQTRHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBN0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBa0dBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBbjFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdrQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyRUE7QUFBQTtBQUFBO0FBcUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUtBO0FBd0ZBO0FBQUE7QUFBQTtBQThGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/SectorObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Shp/index.js": -/*!***********************************!*\ - !*** ./src/Obj/Base/Shp/index.js ***! - \***********************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_Pagination__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Pagination */ \"./src/Obj/Element/Pagination.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _openAllNodeList__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./openAllNodeList */ \"./src/Obj/Base/Shp/openAllNodeList.js\");\n/* harmony import */ var _openNodeListById__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./openNodeListById */ \"./src/Obj/Base/Shp/openNodeListById.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n4 = 0, F = function F() {}; return { s: F, n: function n() { return _n4 >= r.length ? { done: !0 } : { done: !1, value: r[_n4++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\n\n\n\n\nvar Shp = /*#__PURE__*/function (_Base) {\n function Shp(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Shp);\n _this2 = _callSuper(this, Shp, [sdk, options]);\n _this2.viewer = sdk.viewer;\n if (!_this2.options.path) {\n _this2.error = '未提供路径!';\n if (window.ELEMENT) {\n window.ELEMENT.Message.closeAll();\n window.ELEMENT.Message({\n message: _this2.error,\n type: 'warning',\n duration: 1500\n });\n }\n console.warn(_this2.error);\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(_this2);\n }\n _this2.options.fileName = options.fileName || '未命名对象';\n _this2.options.field = options.field || 'id';\n _this2.options.color = options.color || 'rgba(0,255,184,0.5)';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.total = 0;\n _this2.page = 1;\n _this2.pageSize = 20;\n _this2.currentData = [];\n _this2.data = [];\n _this2.list = [];\n _this2.imgEntity = [];\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(Shp, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Shp, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.setShow(v);\n }\n }, {\n key: \"on\",\n value: function on() {\n if (!this.options.path) {\n return;\n }\n return this.init();\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee() {\n var url, response, data;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = \"\";\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getHost\"])();\n if (this.options.host.endsWith(\"yjearth4.0\")) {\n url = this.options.host + '/api/v1/vector/load';\n } else {\n url = this.options.host + '/yjearth4.0/api/v1/vector/load';\n }\n url += '?path=' + this.options.path;\n // url = 'json/shp.json'\n _context.next = 6;\n return fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getToken\"])()\n }\n });\n case 6:\n response = _context.sent;\n if (!(response.status === 200)) {\n _context.next = 19;\n break;\n }\n _context.next = 10;\n return response.json();\n case 10:\n data = _context.sent;\n if (!(data.code === 200 || data.code === 0)) {\n _context.next = 18;\n break;\n }\n this.data = data.data;\n\n // for (let i = 0; i < this.data.length; i++) {\n // let points\n // let polylines\n // let polygons\n // let multi_polylines\n // let multi_polygons\n // if (this.data[i].points) {\n // points = [...this.data[i].points]\n // }\n // else {\n // points = []\n // }\n // if (this.data[i].polylines) {\n // polylines = [...this.data[i].polylines]\n // }\n // else {\n // polylines = []\n // }\n // if (this.data[i].polygons) {\n // polygons = [...this.data[i].polygons]\n // }\n // else {\n // polygons = []\n // }\n // if (this.data[i].multi_polylines) {\n // multi_polylines = [...this.data[i].multi_polylines]\n // }\n // else {\n // multi_polylines = []\n // }\n // if (this.data[i].multi_polygons) {\n // multi_polygons = [...this.data[i].multi_polygons]\n // }\n // else {\n // multi_polygons = []\n // }\n // this.dataArray = [...this.dataArray, ...points, ...polylines, ...polygons, ...multi_polylines, ...multi_polygons]\n // }\n _context.next = 15;\n return this.formatData();\n case 15:\n return _context.abrupt(\"return\", Shp.create(this));\n case 18:\n return _context.abrupt(\"return\", console.error(data.message));\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }() // 格式化数据\n }, {\n key: \"formatData\",\n value: function () {\n var _formatData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2() {\n var features, _this, formatFeatures;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n formatFeatures = function _formatFeatures(data) {\n if (data.data) {\n var _this$list;\n (_this$list = _this.list).push.apply(_this$list, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data));\n for (var i = 0; i < data.data.length; i++) {\n var points = void 0;\n var polylines = void 0;\n var polygons = void 0;\n var multi_polylines = void 0;\n var multi_polygons = void 0;\n if (data.data[i].points) {\n points = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data[i].points);\n for (var m = 0; m < points.length; m++) {\n features.push({\n \"id\": points[m].attr.id,\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Point\",\n \"coordinates\": [points[m].x, points[m].y, points[m].z],\n \"range\": points[m].range,\n \"positions\": {\n x: points[m].x,\n y: points[m].y,\n z: points[m].z\n }\n },\n \"properties\": points[m].attr ? _objectSpread({}, points[m].attr) : {}\n });\n }\n }\n if (data.data[i].polylines) {\n polylines = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data[i].polylines);\n for (var _m = 0; _m < polylines.length; _m++) {\n var positions = [];\n for (var n = 0; n < polylines[_m].positions.length; n++) {\n positions.push([polylines[_m].positions[n].x, polylines[_m].positions[n].y, polylines[_m].positions[n].z]);\n }\n features.push({\n \"id\": polylines[_m].attr.id,\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"LineString\",\n \"coordinates\": positions,\n \"range\": polylines[_m].range,\n \"positions\": polylines[_m].positions\n },\n \"properties\": polylines[_m].attr ? _objectSpread({}, polylines[_m].attr) : {}\n });\n }\n }\n if (data.data[i].polygons) {\n polygons = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data[i].polygons);\n for (var _m2 = 0; _m2 < polygons.length; _m2++) {\n var _positions = [];\n for (var _n = 0; _n < polygons[_m2].positions.length; _n++) {\n _positions.push([polygons[_m2].positions[_n].x, polygons[_m2].positions[_n].y]);\n }\n features.push({\n \"id\": polygons[_m2].attr.id,\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Polygon\",\n \"coordinates\": [_positions],\n \"range\": polygons[_m2].range,\n \"positions\": polygons[_m2].positions\n },\n \"properties\": polygons[_m2].attr ? _objectSpread({}, polygons[_m2].attr) : {}\n });\n }\n }\n if (data.data[i].multi_polylines) {\n multi_polylines = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data[i].multi_polylines);\n for (var _m3 = 0; _m3 < multi_polylines.length; _m3++) {\n var _positions2 = [];\n var positionsxyz = [];\n for (var _n2 = 0; _n2 < multi_polylines[_m3].polylines.length; _n2++) {\n var positions2 = [];\n positionsxyz.push(multi_polylines[_m3].polylines[_n2].positions);\n for (var r = 0; r < multi_polylines[_m3].polylines[_n2].positions.length; r++) {\n positions2.push([multi_polylines[_m3].polylines[_n2].positions[r].x, multi_polylines[_m3].polylines[_n2].positions[r].y, multi_polylines[_m3].polylines[_n2].positions[r].z]);\n }\n _positions2.push(positions2);\n }\n features.push({\n \"id\": multi_polylines[_m3].attr.id,\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"MultiLineString\",\n \"coordinates\": _positions2,\n \"range\": multi_polylines[_m3].range,\n \"positions\": positionsxyz\n },\n \"properties\": multi_polylines[_m3].attr ? _objectSpread({}, multi_polylines[_m3].attr) : {}\n });\n }\n }\n if (data.data[i].multi_polygons) {\n multi_polygons = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(data.data[i].multi_polygons);\n for (var _m4 = 0; _m4 < multi_polygons.length; _m4++) {\n var _positions3 = [];\n var _positionsxyz = [];\n for (var _n3 = 0; _n3 < multi_polygons[_m4].polygons.length; _n3++) {\n var _positions4 = [];\n _positionsxyz.push(multi_polygons[_m4].polygons[_n3].positions);\n for (var _r = 0; _r < multi_polygons[_m4].polygons[_n3].positions.length; _r++) {\n _positions4.push([multi_polygons[_m4].polygons[_n3].positions[_r].x, multi_polygons[_m4].polygons[_n3].positions[_r].y, multi_polygons[_m4].polygons[_n3].positions[_r].z]);\n }\n _positions3.push(_positions4);\n }\n features.push({\n \"id\": multi_polygons[_m4].attr.id,\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"MultiPolygon\",\n \"coordinates\": [_positions3],\n \"range\": multi_polygons[_m4].range,\n \"positions\": _positionsxyz\n },\n \"properties\": multi_polygons[_m4].attr ? _objectSpread({}, multi_polygons[_m4].attr) : {}\n });\n }\n }\n }\n }\n if (data.children) {\n for (var _i = 0; _i < data.children.length; _i++) {\n formatFeatures(data.children[_i]);\n }\n }\n };\n features = [];\n _this = this;\n formatFeatures(this.data);\n features.sort(function (a, b) {\n return Number(a.properties.fid) - Number(b.properties.fid);\n });\n // for(let i=0;i<5;i++) {\n // features = [...features, ...features]\n // }\n this.geojson = {\n \"type\": \"FeatureCollection\",\n \"features\": features\n };\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function formatData() {\n return _formatData.apply(this, arguments);\n }\n return formatData;\n }()\n }, {\n key: \"fileName\",\n get: function get() {\n return this.options.fileName;\n },\n set: function set(v) {\n this.options.fileName = v;\n this._elms.fileName && (this._elms.fileName.value = v);\n }\n }, {\n key: \"field\",\n get: function get() {\n return this.options.field;\n },\n set: function set(v) {\n this.options.field = v;\n this._elms.field && (this._elms.field.value = v);\n }\n }, {\n key: \"onClick\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"img\",\n get: function get() {\n return this.options.img;\n },\n set: function set(v) {\n if (!Array.isArray(v)) {\n v = [v];\n }\n this.options.img = v;\n Shp.createImage(this);\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n this.options.color = v;\n this.entity.entities.values.forEach(function (enetity) {\n if (enetity.billboard) {\n enetity.billboard.color = v;\n }\n if (enetity.polygon) {\n enetity.polygon.material = Cesium.Color.fromCssColorString(v);\n }\n if (enetity.polyline) {\n enetity.polyline.material = Cesium.Color.fromCssColorString(v);\n }\n });\n }\n }, {\n key: \"leftClickCB\",\n value: function leftClickCB(mo, id, p, that) {\n if (that.clickCallBack && typeof that.clickCallBack === 'function') {\n that.clickCallBack(mo, id, p);\n }\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3() {\n var _this3 = this;\n var status,\n DialogEvent,\n html,\n contentElm,\n nameElm,\n selectElm,\n option,\n key,\n o,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n status = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n DialogEvent = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!status) {\n _context3.next = 25;\n break;\n }\n _context3.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk, this.options, {\n title: '编辑属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this3.fileName = _this3.fileName.trim();\n if (!_this3.fileName) {\n _this3.fileName = '未命名对象';\n }\n _this3.originalOptions.fileName = _this3.fileName;\n _this3.originalOptions.field = _this3.field;\n _this3._DialogObject.close();\n DialogEvent.confirmCallBack && DialogEvent.confirmCallBack({\n id: _this3.options.id,\n fileName: _this3.originalOptions.fileName,\n field: _this3.originalOptions.field\n });\n },\n closeCallBack: function closeCallBack() {\n _this3.reset();\n DialogEvent.closeCallBack && DialogEvent.closeCallBack();\n }\n });\n case 7:\n this._DialogObject = _context3.sent;\n html = \"\\n
\\n
\\n \\u6587\\u4EF6\\u540D\\u79F0\\uFF1A\\n \\n
\\n
\\n
\\n
\\n \\u540D\\u79F0\\u5B57\\u6BB5\\u9009\\u62E9\\uFF1A\\n \\n
\\n
\\n \";\n contentElm = document.createElement('div');\n contentElm.innerHTML = html;\n this._DialogObject.contentAppChild(contentElm);\n nameElm = contentElm.getElementsByClassName('flie-name')[0];\n nameElm.value = this.options.fileName;\n nameElm.addEventListener('input', function () {\n _this3.options.fileName = nameElm.value;\n });\n selectElm = contentElm.getElementsByClassName('input-select')[0];\n option = '';\n for (key in this.geojson.features[0].properties) {\n o = \"\");\n option = option + o;\n }\n selectElm.innerHTML = option;\n selectElm.value = this.options.field;\n selectElm.addEventListener('input', function () {\n _this3.options.field = selectElm.value;\n });\n this._elms.fileName = nameElm;\n this._elms.field = selectElm;\n _context3.next = 26;\n break;\n case 25:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 26:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"editById\",\n value: function () {\n var _editById = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee5() {\n var _this4 = this;\n var status,\n nodeId,\n DialogEvent,\n cameraName,\n index,\n options,\n i,\n html,\n contentElm,\n all_elm,\n attributeSelectElm,\n linkAddBtnElm,\n openRichTextBtnElm,\n attributeContent,\n _i2,\n cameraNameElm,\n cameraSelectElm,\n _args5 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n status = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : false;\n nodeId = _args5.length > 1 ? _args5[1] : undefined;\n DialogEvent = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};\n // nodeId = this.dataArray[0].attr.id\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n cameraName = '';\n if (!status) {\n _context5.next = 48;\n break;\n }\n options = {};\n i = 0;\n case 8:\n if (!(i < this.geojson.features.length)) {\n _context5.next = 16;\n break;\n }\n if (!(this.geojson.features[i].properties.id === nodeId)) {\n _context5.next = 13;\n break;\n }\n if (this.geojson.features[i].content) {\n options = this.deepCopyObj(this.geojson.features[i].content);\n }\n index = i;\n return _context5.abrupt(\"break\", 16);\n case 13:\n i++;\n _context5.next = 8;\n break;\n case 16:\n options.id = options.id || nodeId;\n options.link || (options.link = {});\n options.link.content || (options.link.content = []);\n options.camera || (options.camera = []);\n options.richTextContent || (options.richTextContent = '');\n options.attributeType = options.attributeType || 'richText';\n _context5.next = 24;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk, options, {\n title: '编辑属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack() {\n _this4._DialogObject.close();\n _this4.geojson.features[index].content = _this4.deepCopyObj(_this4._DialogObject.attribute);\n DialogEvent.confirmCallBack && DialogEvent.confirmCallBack(_this4._DialogObject.attribute);\n },\n closeCallBack: function closeCallBack() {\n // this.reset()\n DialogEvent.closeCallBack && DialogEvent.closeCallBack();\n }\n });\n case 24:\n this._DialogObject = _context5.sent;\n this._DialogObject.event = DialogEvent;\n this._DialogObject.attribute = this.deepCopyObj(options);\n html = \"\\n
\\n
\\n \\u5185\\u5BB9\\u7C7B\\u578B\\uFF1A\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\u7F16\\u8F91\\u5185\\u5BB9\\uFF1A\\n
\\n
\\n
\\n
\\n
\\n
\\u540D\\u79F0
\\n
\\u94FE\\u63A5
\\n
\\u64CD\\u4F5C
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\u6682\\u65E0\\u6570\\u636E

\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u7F16\\u8F91\\u5185\\u5BB9\\uFF1A\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u64CD\\u4F5C
\\n
\\u8BBE\\u5907\\u540D\\u79F0
\\n
\\u8BBE\\u5907\\u7C7B\\u578B
\\n
\\u8BBE\\u5907IP
\\n
\\u8BBE\\u5907\\u7AEF\\u53E3
\\n
\\u7528\\u6237\\u540D
\\n
\\u5BC6\\u7801
\\n
\\n
\\n
\\n
\\n
\\n \\n \\u7ED1\\u5B9A\\n
\\n
\\u8BBE\\u5907\\u540D\\u79F0
\\n
\\u8BBE\\u5907\\u7C7B\\u578B
\\n
\\u8BBE\\u5907IP
\\n
\\u8BBE\\u5907\\u7AEF\\u53E3
\\n
\\u7528\\u6237\\u540D
\\n
\\u5BC6\\u7801
\\n
\\n
\\n
\\n
\\n

\\u6682\\u65E0\\u6570\\u636E

\\n
\\n
\\n
\\n
\\n
    \\n
    \\n
    \\n \";\n contentElm = document.createElement('div');\n contentElm.innerHTML = html;\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._DialogObject._element.body.style.width = '600px';\n attributeSelectElm = contentElm.getElementsByClassName('attribute-select')[0];\n linkAddBtnElm = contentElm.getElementsByClassName('link_add_btn')[0];\n openRichTextBtnElm = contentElm.getElementsByClassName('open-richText-btn')[0];\n attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content');\n for (_i2 = 0; _i2 < attributeContent.length; _i2++) {\n if (attributeContent[_i2].className.indexOf('attribute-content-' + this._DialogObject.attribute.attributeType) > -1) {\n attributeContent[_i2].style.display = 'block';\n } else {\n attributeContent[_i2].style.display = 'none';\n }\n }\n attributeSelectElm.addEventListener('change', function () {\n _this4._DialogObject.attribute.attributeType = attributeSelectElm.value;\n for (var _i3 = 0; _i3 < attributeContent.length; _i3++) {\n if (attributeContent[_i3].className.indexOf('attribute-content-' + _this4._DialogObject.attribute.attributeType) > -1) {\n attributeContent[_i3].style.display = 'block';\n } else {\n attributeContent[_i3].style.display = 'none';\n }\n }\n });\n linkAddBtnElm.addEventListener('click', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (_this4._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {\n _this4._DialogObject.attribute.link.content.push({\n name: '链接',\n url: _this4._DialogObject._element.content.getElementsByClassName('link_add')[0].value\n });\n _this4._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '';\n _this4.setAttributeLinkById(nodeId, _this4._DialogObject.attribute.link.content);\n } else {\n DialogEvent.clickAddLink && DialogEvent.clickAddLink(nodeId);\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n })));\n openRichTextBtnElm.addEventListener('click', function () {\n _Element_richText__WEBPACK_IMPORTED_MODULE_14__[\"default\"].open(nodeId, nodeId, _this4._DialogObject.attribute.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_14__[\"default\"].primaryCallBack = function (content) {\n _this4._DialogObject.attribute.richTextContent = content;\n };\n });\n cameraNameElm = contentElm.getElementsByClassName('camera-name')[0];\n cameraSelectElm = contentElm.getElementsByClassName('camera-select')[0];\n cameraNameElm.addEventListener('input', function () {\n cameraName = cameraNameElm.value;\n });\n this.cameraSelect && this.cameraSelect(cameraName);\n cameraSelectElm.addEventListener('click', function () {\n _this4.cameraSelect && _this4.cameraSelect(cameraName);\n });\n\n // let nameElm = contentElm.getElementsByClassName('flie-name')[0]\n // nameElm.value = this.options.fileName\n // nameElm.addEventListener('input', ()=>{\n // this.options.fileName = nameElm.value\n // })\n\n // let selectElm = contentElm.getElementsByClassName('input-select')[0]\n // let option = ''\n // for(let key in this.dataArray[0].attr) {\n // let o = ``\n // option = option + o\n // }\n // selectElm.innerHTML = option\n // selectElm.value = this.options.field\n // selectElm.addEventListener('input', ()=>{\n // this.options.field = selectElm.value\n // })\n\n // this._elms.fileName = nameElm\n // this._elms.field = selectElm\n _context5.next = 49;\n break;\n case 48:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 49:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function editById() {\n return _editById.apply(this, arguments);\n }\n return editById;\n }()\n }, {\n key: \"editContentById\",\n value: function editContentById(nodeId, content) {\n for (var i = 0; i < this.geojson.features.length; i++) {\n if (this.geojson.features[i].properties.id === nodeId) {\n this.geojson.features[i].content = content;\n break;\n }\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.fileName = this.originalOptions.fileName;\n this.field = this.originalOptions.field;\n }\n }, {\n key: \"addAttributeLinkById\",\n value: function addAttributeLinkById(nodeId, link, i) {\n if (this._DialogObject && this._DialogObject.attribute && this._DialogObject.attribute.id == nodeId) {\n if (i || i === 0) {\n this._DialogObject._element.body.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('tr')[i + 1].getElementsByClassName('file-select')[0].value = link;\n } else {\n this._DialogObject.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.setAttributeLinkById(nodeId, this._DialogObject.attribute.link.content);\n }\n }\n }\n }, {\n key: \"setAttributeLinkById\",\n value: function setAttributeLinkById(nodeId, data) {\n var _this5 = this;\n if (this._DialogObject && this._DialogObject.attribute && this._DialogObject.attribute.id == nodeId) {\n this._DialogObject.attribute.link.content = data;\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this._DialogObject.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this._DialogObject.attribute.link.content.length; i++) {\n var tr = \"\\n
    \\n
    \" + this._DialogObject.attribute.link.content[i].name + \"
    \\n
    \" + this._DialogObject.attribute.link.content[i].url + \"
    \\n
    \\n \\n \\n
    \\n
    \";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee6(index) {\n var table, tableContent, item, _loop, _i4;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee6$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return _this5.setAttributeLinkById(nodeId, _this5._DialogObject.attribute.link.content);\n case 2:\n table = _this5._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop(_i4) {\n var html, td, btn, n, _iterator, _step, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (!(index === _i4)) {\n _context7.next = 33;\n break;\n }\n html = \"\\n
    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \";\n item[_i4].innerHTML = html;\n td = item[_i4].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this5._DialogObject.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this5._DialogObject.attribute.link.content[index].url;\n btn = item[_i4].getElementsByTagName('button');\n n = 0;\n case 8:\n if (!(n < btn.length)) {\n _context7.next = 32;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context7.next = 11;\n break;\n }\n return _context7.abrupt(\"continue\", 29);\n case 11:\n _iterator = _createForOfIteratorHelper(btn[n].attributes);\n _context7.prev = 12;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _loop2$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n m = _step.value;\n if (!(m.name === '@click')) {\n _context6.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i4);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context6.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context6.stop();\n }\n }, _loop2);\n });\n _iterator.s();\n case 15:\n if ((_step = _iterator.n()).done) {\n _context7.next = 21;\n break;\n }\n return _context7.delegateYield(_loop2(), \"t0\", 17);\n case 17:\n if (!_context7.t0) {\n _context7.next = 19;\n break;\n }\n return _context7.abrupt(\"break\", 21);\n case 19:\n _context7.next = 15;\n break;\n case 21:\n _context7.next = 26;\n break;\n case 23:\n _context7.prev = 23;\n _context7.t1 = _context7[\"catch\"](12);\n _iterator.e(_context7.t1);\n case 26:\n _context7.prev = 26;\n _iterator.f();\n return _context7.finish(26);\n case 29:\n n++;\n _context7.next = 8;\n break;\n case 32:\n return _context7.abrupt(\"return\", 1);\n case 33:\n case \"end\":\n return _context7.stop();\n }\n }, _loop, null, [[12, 23, 26, 29]]);\n });\n _i4 = 0;\n case 7:\n if (!(_i4 < item.length)) {\n _context8.next = 14;\n break;\n }\n return _context8.delegateYield(_loop(_i4), \"t0\", 9);\n case 9:\n if (!_context8.t0) {\n _context8.next = 11;\n break;\n }\n return _context8.abrupt(\"break\", 14);\n case 11:\n _i4++;\n _context8.next = 7;\n break;\n case 14:\n case \"end\":\n return _context8.stop();\n }\n }, _callee6);\n }));\n function linkEdit(_x) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this5._DialogObject.attribute.link.content.splice(i, 1);\n _this5.setAttributeLinkById(nodeId, _this5._DialogObject.attribute.link.content);\n },\n confirmEdit: function confirmEdit(value, i) {\n _this5._DialogObject.attribute.link.content[i] = value;\n _this5.setAttributeLinkById(nodeId, _this5._DialogObject.attribute.link.content);\n },\n cancelEdit: function cancelEdit() {\n _this5.setAttributeLinkById(nodeId, _this5._DialogObject.attribute.link.content);\n },\n fileSelect: function fileSelect(value, i) {\n _this5._DialogObject.event && _this5._DialogObject.event.clickAddLink && _this5._DialogObject.event.clickAddLink(nodeId, i);\n }\n };\n var _loop3 = function _loop3(_i5) {\n var btn = item[_i5].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(btn[n].attributes),\n _step2;\n try {\n var _loop4 = function _loop4() {\n var m = _step2.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i5);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n for (var _i5 = 0; _i5 < item.length; _i5++) {\n _loop3(_i5);\n }\n }\n for (var _i6 = 0; _i6 < this.dataArray.length; _i6++) {\n if (this.dataArray[_i6].attr.id === nodeId) {\n if (this.dataArray[_i6].content) {\n this.opt_DialogObject.attribute.link.content = v;\n }\n break;\n }\n }\n }\n }, {\n key: \"getAllNode\",\n value: function getAllNode() {\n return this.data;\n }\n }, {\n key: \"openAllNodeList\",\n value: function openAllNodeList() {\n Object(_openAllNodeList__WEBPACK_IMPORTED_MODULE_16__[\"openAllNodeList\"])(this);\n }\n }, {\n key: \"openNodeListById\",\n value: function openNodeListById(id) {\n Object(_openNodeListById__WEBPACK_IMPORTED_MODULE_17__[\"openNodeListById\"])(this, id);\n }\n }, {\n key: \"flyTo\",\n value: function flyTo(id) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (id) {\n for (var i = 0; i < this.geojson.features.length; i++) {\n if (this.geojson.features[i].properties.id === id) {\n var range = this.geojson.features[i].geometry.range;\n if (range) {\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeViewFollow\"])(this.sdk);\n this.viewer.camera.flyTo({\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n destination: Cesium.Rectangle.fromDegrees(range.min_x, range.min_y, range.max_x, range.max_y)\n });\n }\n }\n }\n } else {\n if (this.range) {\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_20__[\"closeViewFollow\"])(this.sdk);\n this.viewer.camera.flyTo({\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n destination: Cesium.Rectangle.fromDegrees(this.range.min_x, this.range.min_y, this.range.max_x, this.range.max_y)\n });\n }\n }\n }\n }, {\n key: \"setShow\",\n value: function setShow(status, id) {\n // let enetity = this.entity.entities.getById(id)\n // if(enetity) {\n // enetity.show = status\n // }\n // else {\n\n // }\n if (id) {\n for (var i = 0; i < this.entity.entities.values.length; i++) {\n if (this.entity.entities.values[i].id && this.entity.entities.values[i].id.startsWith(id)) {\n this.entity.entities.values[i].show = status;\n // this.entity.entities.remove(this.entity.entities.values[i])\n }\n }\n } else {\n this.options.show = status;\n // this.entity.show = status\n for (var _i7 = 0; _i7 < this.entity.entities.values.length; _i7++) {\n this.entity.entities.values[_i7].show = status;\n }\n }\n }\n }, {\n key: \"setShowImg\",\n value: function setShowImg(status, index) {\n if (index || index === 0) {\n for (var i = 0; i < this.imgEntity.length; i++) {\n if (i == index) {\n this.imgEntity[i].show = status;\n break;\n }\n }\n } else {\n for (var _i8 = 0; _i8 < this.imgEntity.length; _i8++) {\n this.imgEntity[_i8].show = status;\n }\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n // this.entity.entities.values.forEach(enetity => {\n // this.sdk.viewer.entities.remove(enetity)\n // })\n this.viewer.dataSources.remove(this.entity, true);\n this.removeImage();\n this.entity = null;\n this.geojson = {};\n this.data = {};\n }\n }, {\n key: \"removeImage\",\n value: function removeImage() {\n for (var i = 0; i < this.imgEntity.length; i++) {\n this.sdk.viewer.entities.remove(this.imgEntity[i]);\n }\n this.imgEntity = [];\n }\n }, {\n key: \"cameraSelect\",\n value: function cameraSelect(cameraName, page) {\n var _this6 = this;\n var type = {\n '1': '海康',\n '2': '大华'\n };\n var host = this.options.host;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n var paginationElm = that._DialogObject._element.content.getElementsByClassName('pagination')[0];\n var attributeCameraElm = that._DialogObject._element.content.getElementsByClassName('attribute-content-camera')[0];\n if (!paginationElm) {\n return;\n }\n if (!attributeCameraElm) {\n return;\n }\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_12__[\"generatePagination\"])(paginationElm, 1, 10, 1);\n } else {\n return;\n }\n var url = \"\";\n var params = {\n cameraName: cameraName,\n page: !page || _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(page) === 'object' ? 1 : page,\n pageSize: 5\n };\n var queryString = new URLSearchParams(params).toString();\n if (host.endsWith(\"yjearth4.0\")) url = \"\".concat(host, \"/api/v1/cameraData/list?\").concat(queryString);else url = \"\".concat(host, \"/yjearth4.0/api/v1/cameraData/list?\").concat(queryString);\n // url = this.options.path\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.json().then(function (data) {\n if (data.code === 200 || data.code === 0) {\n if (!_this6._DialogObject || !_this6._DialogObject._element || !_this6._DialogObject._element.content) {\n return;\n }\n var _paginationElm = _this6._DialogObject._element.content.getElementsByClassName('pagination')[0];\n var table = _this6._DialogObject._element.content.getElementsByClassName('camera-table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (data.data) {\n if (data.data.list && data.data.list.length > 0) {\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_12__[\"generatePagination\"])(_paginationElm, data.data.total, 10, 1, function (pageIndex) {\n _this6.cameraSelect && _this6.cameraSelect(cameraName, pageIndex);\n });\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n tableContent.style.display = 'inline-flex';\n var _loop5 = function _loop5(i) {\n var tr = \"\\n
    \\n
    \\n \\n \\u7ED1\\u5B9A\\n
    \\n
    \").concat(data.data.list[i].cameraName, \"
    \\n
    \").concat(type[data.data.list[i].type], \"
    \\n
    \").concat(data.data.list[i].ip, \"
    \\n
    \").concat(data.data.list[i].port, \"
    \\n
    \").concat(data.data.list[i].userName, \"
    \\n
    \").concat(data.data.list[i].passWord, \"
    \\n
    \");\n var trElm = document.createRange().createContextualFragment(tr);\n var checkbox = trElm.querySelector('input[type=\"checkbox\"]');\n checkbox.addEventListener('change', function () {\n if (checkbox.checked) {\n _this6._DialogObject.attribute.camera.push(data.data.list[i]);\n } else {\n var newArray = _this6._DialogObject.attribute.camera.filter(function (item) {\n return item.ID !== data.data.list[i].ID;\n });\n _this6._DialogObject.attribute.camera = newArray;\n }\n });\n tableContent.appendChild(trElm);\n for (var m = 0; m < _this6._DialogObject.attribute.camera.length; m++) {\n if (_this6._DialogObject.attribute.camera[m].ID === data.data.list[i].ID) {\n checkbox.checked = true;\n break;\n }\n }\n };\n for (var i = 0; i < data.data.list.length; i++) {\n _loop5(i);\n }\n }\n if (data.data && data.data.total) {\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_12__[\"generatePagination\"])(_paginationElm, data.data.total, 10, 1, function (pageIndex) {\n _this6.cameraSelect && _this6.cameraSelect(cameraName, pageIndex);\n });\n }\n } else {\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_12__[\"generatePagination\"])(_paginationElm, 1, 10, 1);\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n tableContent.style.display = 'none';\n }\n } else {\n console.error(data.message);\n }\n });\n }\n });\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n // that.entity = new Cesium.PrimitiveCollection();\n // that.viewer.scene.primitives.add(that.entity)\n // Shp.calculationScope(that, that.data)\n // Shp.createPoints(that, that.data.points)\n // Shp.createPolylines(that, that.data.polylines)\n // Shp.createPolygons(that, that.data.polygons)\n var bbox = turf.bbox(that.geojson);\n that.range = {\n max_x: bbox[2],\n max_y: bbox[3],\n min_x: bbox[0],\n min_y: bbox[1]\n };\n that.options.img && Shp.createImage(that);\n var getColor = function getColor(level) {\n var color = that.options.color;\n if (level) {\n switch (level._value) {\n case 1:\n color = 'rgba(255,0,0,1)';\n break;\n case 2:\n color = 'rgba(255,126,0,1)';\n break;\n case 3:\n color = 'rgba(255,250,0,1)';\n break;\n case 4:\n color = 'rgba(0,102,255,1)';\n break;\n case 5:\n color = 'rgba(0,255,0,1)';\n break;\n }\n return color;\n } else {\n return color;\n }\n };\n var geoJsonDataSource = new Cesium.GeoJsonDataSource();\n var promise = geoJsonDataSource.load(that.geojson, {\n clampToGround: true\n });\n var Instances = [];\n return promise.then(function (datasource) {\n that.entity = datasource;\n that.viewer.dataSources.add(datasource);\n datasource.entities.values.forEach(function (enetity) {\n enetity.show = that.options.show;\n // that.sdk.viewer.entities.add(enetity)\n if (enetity.billboard) {\n // enetity.billboard.show = false\n enetity.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n enetity.point = new Cesium.PointGraphics({\n show: true,\n // position: new Cesium.Cartesian3(enetity.position._value.x, enetity.position._value.y, enetity.position._value.z), // 点的位置\n color: Cesium.Color.fromCssColorString(getColor(enetity.properties.level)),\n // 点的颜色\n pixelSize: 10,\n // 点的大小\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n disableDepthTestDistance: Number.POSITIVE_INFINITY // 不应用深度测试\n });\n }\n if (enetity.polygon) {\n enetity.polygon.perPositionHeight = false;\n enetity.polygon.material = Cesium.Color.fromCssColorString(getColor(enetity.properties.level));\n }\n if (enetity.polyline) {\n var color = that.options.color;\n enetity.polyline.material = Cesium.Color.fromCssColorString(getColor(enetity.properties.level));\n\n // let polyline = new Cesium.GroundPolylineGeometry({\n // positions: enetity.polyline.positions._value,\n // width: 2\n // });\n // Instances.push(new Cesium.GeometryInstance({\n // geometry: polyline,\n // attributes: {\n // color: Cesium.ColorGeometryInstanceAttribute.fromColor(\n // Cesium.Color.fromCssColorString('rgba(0,255,184,0.5)')\n // )\n // }\n // }))\n // console.log(enetity.polyline)\n }\n });\n // let primitive = new Cesium.GroundPolylinePrimitive({\n // geometryInstances: Instances,\n // appearance: new Cesium.PolylineColorAppearance()\n // });\n // that.viewer.scene.primitives.add(primitive);\n // that.viewer.zoomTo(datasource)\n });\n }\n }, {\n key: \"createImage\",\n value: function createImage(that) {\n //(primitive无法贴地?)\n that.removeImage();\n for (var i = 0; i < that.options.img.length; i++) {\n var entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n rectangle: {\n coordinates: Cesium.Rectangle.fromDegrees(that.range.min_x, that.range.min_y, that.range.max_x, that.range.max_y),\n material: new Cesium.ImageMaterialProperty({\n image: that.options.img[i],\n transparent: true\n })\n }\n });\n that.imgEntity.push(entity);\n }\n }\n\n /**\r\n * @description 计算shp范围\r\n */\n }, {\n key: \"calculationScope\",\n value: function calculationScope(that, data) {\n var points = [];\n if (data.points) {\n for (var i = 0; i < data.points.length; i++) {\n points.push(turf.point([data.points[i].position.x, data.points[i].position.y]));\n }\n }\n if (data.polylines) {\n for (var _i9 = 0; _i9 < data.polylines.length; _i9++) {\n if (data.polylines[_i9].positions) for (var m = 0; m < data.polylines[_i9].positions.length; m++) {\n points.push(turf.point([data.polylines[_i9].positions[m].x, data.polylines[_i9].positions[m].y]));\n }\n }\n }\n if (data.polygons) {\n for (var _i10 = 0; _i10 < data.polygons.length; _i10++) {\n if (data.polygons[_i10].positions) for (var _m5 = 0; _m5 < data.polygons[_i10].positions.length; _m5++) {\n points.push(turf.point([data.polygons[_i10].positions[_m5].x, data.polygons[_i10].positions[_m5].y]));\n }\n }\n }\n if (points.length > 0) {\n var _features = turf.featureCollection(points);\n var enveloped = turf.envelope(_features);\n if (enveloped && enveloped.bbox && enveloped.bbox.length == 4) {\n that.range = {\n max_x: enveloped.bbox[2],\n max_y: enveloped.bbox[3],\n min_x: enveloped.bbox[0],\n min_y: enveloped.bbox[1]\n };\n }\n }\n }\n }, {\n key: \"createPoints\",\n value: function createPoints(that, data) {\n if (!data) {\n return;\n }\n var points = new Cesium.PointPrimitiveCollection({\n scene: that.viewer.scene // 指定场景\n });\n for (var i = 0; i < data.length; i++) {\n data[i].attr.id || (data[i].attr.id = that.randomString());\n points.add({\n id: data[i].attr.id,\n position: Cesium.Cartesian3.fromDegrees(data[i].x, data[i].y, data[i].z),\n // 点的位置\n color: Cesium.Color.RED,\n // 点的颜色\n pixelSize: 10,\n // 点的大小\n disableDepthTestDistance: Number.POSITIVE_INFINITY // 不应用深度测试\n });\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_13__[\"regLeftClickCallback\"])(data[i].attr.id, that.leftClickCB, that);\n }\n that.entity.add(points);\n }\n }, {\n key: \"createPolylines\",\n value: function createPolylines(that, data) {\n if (!data) {\n return;\n }\n var polylineInstance = [];\n for (var i = 0; i < data.length; i++) {\n data[i].attr.id || (data[i].attr.id = that.randomString());\n var positions = data[i].positions;\n var fromDegreesArray = [];\n for (var m = 0; m < positions.length; m++) {\n fromDegreesArray.push(positions[m].x, positions[m].y, positions[m].z);\n }\n var polyline = new Cesium.GroundPolylineGeometry({\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n width: 4\n });\n var instance = new Cesium.GeometryInstance({\n id: data[i].attr.id,\n geometry: polyline,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString(data[i].COLOR || 'rgba(0,255,184,0.5)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n polylineInstance.push(instance);\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_13__[\"regLeftClickCallback\"])(data[i].attr.id, that.leftClickCB, that);\n }\n if (polylineInstance.length > 0) {\n that.entity.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: polylineInstance,\n appearance: new Cesium.PolylineColorAppearance()\n }));\n }\n }\n }, {\n key: \"createPolygons\",\n value: function createPolygons(that, data) {\n if (!data) {\n return;\n }\n var polygonInstance = [];\n for (var i = 0; i < data.length; i++) {\n data[i].attr.id || (data[i].attr.id = that.randomString());\n var positions = data[i].positions;\n var fromDegreesArray = [];\n for (var m = 0; m < positions.length; m++) {\n fromDegreesArray.push(positions[m].x, positions[m].y, positions[m].z);\n }\n var polygon = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray))\n });\n var instance = new Cesium.GeometryInstance({\n id: data[i].attr.id,\n geometry: polygon,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString(data[i].COLOR || 'rgba(0,255,184,0.5)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n polygonInstance.push(instance);\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_13__[\"regLeftClickCallback\"])(data[i].attr.id, that.leftClickCB, that);\n }\n if (polygonInstance.length > 0) {\n var primitive = new Cesium.GroundPrimitive({\n geometryInstances: polygonInstance,\n appearance: new Cesium.PerInstanceColorAppearance({\n translucent: true,\n //false时透明度无效\n closed: false\n })\n });\n that.entity.add(primitive);\n }\n }\n }, {\n key: \"createTableContent\",\n value: function createTableContent(that) {\n var trsElm = '';\n for (var i = 0; i < that.currentData.length; i++) {\n var trElm = '';\n var tdElm = '';\n for (var key in that.currentData[i].attr) {\n tdElm = tdElm + \"
    \").concat(that.currentData[i].attr[key], \"
    \");\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shp);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU2hwL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1NocC9pbmRleC5qcz8zNDdjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEhvc3QsIGdldFRva2VuIH0gZnJvbSBcIi4uLy4uLy4uL29uXCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVBhZ2luYXRpb24gfSBmcm9tIFwiLi4vLi4vRWxlbWVudC9QYWdpbmF0aW9uXCI7XHJcbmltcG9ydCB7IHJlZ0xlZnRDbGlja0NhbGxiYWNrIH0gZnJvbSBcIi4uLy4uLy4uL0dsb2JhbC9DbGlja0NhbGxiYWNrXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IHsgb3BlbkFsbE5vZGVMaXN0IGFzIE9wZW5BbGxOb2RlTGlzdCB9IGZyb20gXCIuL29wZW5BbGxOb2RlTGlzdFwiO1xyXG5pbXBvcnQgeyBvcGVuTm9kZUxpc3RCeUlkIGFzIE9wZW5Ob2RlTGlzdEJ5SWQgfSBmcm9tIFwiLi9vcGVuTm9kZUxpc3RCeUlkXCI7XHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBhdHRyaWJ1dGVFbG0gfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3d9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBTaHAgZXh0ZW5kcyBCYXNlIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wYXRoKSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSAn5pyq5o+Q5L6b6Lev5b6EISdcclxuICAgICAgaWYgKHdpbmRvdy5FTEVNRU5UKSB7XHJcbiAgICAgICAgd2luZG93LkVMRU1FTlQuTWVzc2FnZS5jbG9zZUFsbCgpO1xyXG4gICAgICAgIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5lcnJvcixcclxuICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS53YXJuKHRoaXMuZXJyb3IpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmZpbGVOYW1lID0gb3B0aW9ucy5maWxlTmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgdGhpcy5vcHRpb25zLmZpZWxkID0gb3B0aW9ucy5maWVsZCB8fCAnaWQnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICdyZ2JhKDAsMjU1LDE4NCwwLjUpJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG5cclxuICAgIHRoaXMudG90YWwgPSAwXHJcbiAgICB0aGlzLnBhZ2UgPSAxXHJcbiAgICB0aGlzLnBhZ2VTaXplID0gMjBcclxuICAgIHRoaXMuY3VycmVudERhdGEgPSBbXVxyXG4gICAgdGhpcy5kYXRhID0gW11cclxuICAgIHRoaXMubGlzdCA9IFtdXHJcbiAgICB0aGlzLmltZ0VudGl0eSA9IFtdXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIHRoaXMuc2V0U2hvdyh2KVxyXG4gIH1cclxuXHJcbiAgb24oKSB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wYXRoKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaW5pdCgpXHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0KCkge1xyXG4gICAgbGV0IHVybCA9IFwiXCJcclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhvc3QuZW5kc1dpdGgoXCJ5amVhcnRoNC4wXCIpKSB7XHJcbiAgICAgIHVybCA9IHRoaXMub3B0aW9ucy5ob3N0ICsgJy9hcGkvdjEvdmVjdG9yL2xvYWQnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdXJsID0gdGhpcy5vcHRpb25zLmhvc3QgKyAnL3lqZWFydGg0LjAvYXBpL3YxL3ZlY3Rvci9sb2FkJ1xyXG4gICAgfVxyXG4gICAgdXJsICs9ICc/cGF0aD0nICsgdGhpcy5vcHRpb25zLnBhdGhcclxuICAgIC8vIHVybCA9ICdqc29uL3NocC5qc29uJ1xyXG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ2dldCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXHJcblxyXG4gICAgICAvLyBTaHAuY3JlYXRlKHRoaXMpXHJcbiAgICAgIGlmIChkYXRhLmNvZGUgPT09IDIwMCB8fCBkYXRhLmNvZGUgPT09IDApIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhLmRhdGFcclxuXHJcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyAgIGxldCBwb2ludHNcclxuICAgICAgICAvLyAgIGxldCBwb2x5bGluZXNcclxuICAgICAgICAvLyAgIGxldCBwb2x5Z29uc1xyXG4gICAgICAgIC8vICAgbGV0IG11bHRpX3BvbHlsaW5lc1xyXG4gICAgICAgIC8vICAgbGV0IG11bHRpX3BvbHlnb25zXHJcbiAgICAgICAgLy8gICBpZiAodGhpcy5kYXRhW2ldLnBvaW50cykge1xyXG4gICAgICAgIC8vICAgICBwb2ludHMgPSBbLi4udGhpcy5kYXRhW2ldLnBvaW50c11cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICBwb2ludHMgPSBbXVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgaWYgKHRoaXMuZGF0YVtpXS5wb2x5bGluZXMpIHtcclxuICAgICAgICAvLyAgICAgcG9seWxpbmVzID0gWy4uLnRoaXMuZGF0YVtpXS5wb2x5bGluZXNdXHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgcG9seWxpbmVzID0gW11cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGlmICh0aGlzLmRhdGFbaV0ucG9seWdvbnMpIHtcclxuICAgICAgICAvLyAgICAgcG9seWdvbnMgPSBbLi4udGhpcy5kYXRhW2ldLnBvbHlnb25zXVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIHBvbHlnb25zID0gW11cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGlmICh0aGlzLmRhdGFbaV0ubXVsdGlfcG9seWxpbmVzKSB7XHJcbiAgICAgICAgLy8gICAgIG11bHRpX3BvbHlsaW5lcyA9IFsuLi50aGlzLmRhdGFbaV0ubXVsdGlfcG9seWxpbmVzXVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIG11bHRpX3BvbHlsaW5lcyA9IFtdXHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gICBpZiAodGhpcy5kYXRhW2ldLm11bHRpX3BvbHlnb25zKSB7XHJcbiAgICAgICAgLy8gICAgIG11bHRpX3BvbHlnb25zID0gWy4uLnRoaXMuZGF0YVtpXS5tdWx0aV9wb2x5Z29uc11cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICBtdWx0aV9wb2x5Z29ucyA9IFtdXHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gICB0aGlzLmRhdGFBcnJheSA9IFsuLi50aGlzLmRhdGFBcnJheSwgLi4ucG9pbnRzLCAuLi5wb2x5bGluZXMsIC4uLnBvbHlnb25zLCAuLi5tdWx0aV9wb2x5bGluZXMsIC4uLm11bHRpX3BvbHlnb25zXVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBhd2FpdCB0aGlzLmZvcm1hdERhdGEoKVxyXG4gICAgICAgIHJldHVybiBTaHAuY3JlYXRlKHRoaXMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZGF0YS5tZXNzYWdlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmoLzlvI/ljJbmlbDmja5cclxuICBhc3luYyBmb3JtYXREYXRhKCkge1xyXG4gICAgbGV0IGZlYXR1cmVzID0gW11cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGZvcm1hdEZlYXR1cmVzKHRoaXMuZGF0YSlcclxuICAgIGZ1bmN0aW9uIGZvcm1hdEZlYXR1cmVzKGRhdGEpIHtcclxuICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgIF90aGlzLmxpc3QucHVzaCguLi5kYXRhLmRhdGEpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBwb2ludHNcclxuICAgICAgICAgIGxldCBwb2x5bGluZXNcclxuICAgICAgICAgIGxldCBwb2x5Z29uc1xyXG4gICAgICAgICAgbGV0IG11bHRpX3BvbHlsaW5lc1xyXG4gICAgICAgICAgbGV0IG11bHRpX3BvbHlnb25zXHJcbiAgICAgICAgICBpZiAoZGF0YS5kYXRhW2ldLnBvaW50cykge1xyXG4gICAgICAgICAgICBwb2ludHMgPSBbLi4uZGF0YS5kYXRhW2ldLnBvaW50c11cclxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb2ludHMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICBmZWF0dXJlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIFwiaWRcIjogcG9pbnRzW21dLmF0dHIuaWQsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXHJcbiAgICAgICAgICAgICAgICBcImdlb21ldHJ5XCI6IHtcclxuICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcclxuICAgICAgICAgICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbcG9pbnRzW21dLngsIHBvaW50c1ttXS55LCBwb2ludHNbbV0uel0sXHJcbiAgICAgICAgICAgICAgICAgIFwicmFuZ2VcIjogcG9pbnRzW21dLnJhbmdlLFxyXG4gICAgICAgICAgICAgICAgICBcInBvc2l0aW9uc1wiOiB7IHg6IHBvaW50c1ttXS54LCB5OiBwb2ludHNbbV0ueSwgejogcG9pbnRzW21dLnogfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFwicHJvcGVydGllc1wiOiBwb2ludHNbbV0uYXR0ciA/IHtcclxuICAgICAgICAgICAgICAgICAgLi4ucG9pbnRzW21dLmF0dHJcclxuICAgICAgICAgICAgICAgIH0gOiB7fVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChkYXRhLmRhdGFbaV0ucG9seWxpbmVzKSB7XHJcbiAgICAgICAgICAgIHBvbHlsaW5lcyA9IFsuLi5kYXRhLmRhdGFbaV0ucG9seWxpbmVzXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvbHlsaW5lcy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcG9seWxpbmVzW21dLnBvc2l0aW9ucy5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goW3BvbHlsaW5lc1ttXS5wb3NpdGlvbnNbbl0ueCwgcG9seWxpbmVzW21dLnBvc2l0aW9uc1tuXS55LCBwb2x5bGluZXNbbV0ucG9zaXRpb25zW25dLnpdKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmZWF0dXJlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIFwiaWRcIjogcG9seWxpbmVzW21dLmF0dHIuaWQsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXHJcbiAgICAgICAgICAgICAgICBcImdlb21ldHJ5XCI6IHtcclxuICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTGluZVN0cmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IHBvc2l0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgXCJyYW5nZVwiOiBwb2x5bGluZXNbbV0ucmFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgIFwicG9zaXRpb25zXCI6IHBvbHlsaW5lc1ttXS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcInByb3BlcnRpZXNcIjogcG9seWxpbmVzW21dLmF0dHIgPyB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLnBvbHlsaW5lc1ttXS5hdHRyXHJcbiAgICAgICAgICAgICAgICB9IDoge31cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGF0YS5kYXRhW2ldLnBvbHlnb25zKSB7XHJcbiAgICAgICAgICAgIHBvbHlnb25zID0gWy4uLmRhdGEuZGF0YVtpXS5wb2x5Z29uc11cclxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb2x5Z29ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcG9seWdvbnNbbV0ucG9zaXRpb25zLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaChbcG9seWdvbnNbbV0ucG9zaXRpb25zW25dLngsIHBvbHlnb25zW21dLnBvc2l0aW9uc1tuXS55XSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmVhdHVyZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBcImlkXCI6IHBvbHlnb25zW21dLmF0dHIuaWQsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXHJcbiAgICAgICAgICAgICAgICBcImdlb21ldHJ5XCI6IHtcclxuICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiUG9seWdvblwiLFxyXG4gICAgICAgICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFtwb3NpdGlvbnNdLFxyXG4gICAgICAgICAgICAgICAgICBcInJhbmdlXCI6IHBvbHlnb25zW21dLnJhbmdlLFxyXG4gICAgICAgICAgICAgICAgICBcInBvc2l0aW9uc1wiOiBwb2x5Z29uc1ttXS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcInByb3BlcnRpZXNcIjogcG9seWdvbnNbbV0uYXR0ciA/IHtcclxuICAgICAgICAgICAgICAgICAgLi4ucG9seWdvbnNbbV0uYXR0clxyXG4gICAgICAgICAgICAgICAgfSA6IHt9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRhdGEuZGF0YVtpXS5tdWx0aV9wb2x5bGluZXMpIHtcclxuICAgICAgICAgICAgbXVsdGlfcG9seWxpbmVzID0gWy4uLmRhdGEuZGF0YVtpXS5tdWx0aV9wb2x5bGluZXNdXHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbXVsdGlfcG9seWxpbmVzLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uc3h5eiA9IFtdXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBtdWx0aV9wb2x5bGluZXNbbV0ucG9seWxpbmVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zMiA9IFtdXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnN4eXoucHVzaChtdWx0aV9wb2x5bGluZXNbbV0ucG9seWxpbmVzW25dLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgbXVsdGlfcG9seWxpbmVzW21dLnBvbHlsaW5lc1tuXS5wb3NpdGlvbnMubGVuZ3RoOyByKyspIHtcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25zMi5wdXNoKFttdWx0aV9wb2x5bGluZXNbbV0ucG9seWxpbmVzW25dLnBvc2l0aW9uc1tyXS54LCBtdWx0aV9wb2x5bGluZXNbbV0ucG9seWxpbmVzW25dLnBvc2l0aW9uc1tyXS55LCBtdWx0aV9wb2x5bGluZXNbbV0ucG9seWxpbmVzW25dLnBvc2l0aW9uc1tyXS56XSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uczIpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgXCJpZFwiOiBtdWx0aV9wb2x5bGluZXNbbV0uYXR0ci5pZCxcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcclxuICAgICAgICAgICAgICAgIFwiZ2VvbWV0cnlcIjoge1xyXG4gICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJNdWx0aUxpbmVTdHJpbmdcIixcclxuICAgICAgICAgICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBwb3NpdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgIFwicmFuZ2VcIjogbXVsdGlfcG9seWxpbmVzW21dLnJhbmdlLFxyXG4gICAgICAgICAgICAgICAgICBcInBvc2l0aW9uc1wiOiBwb3NpdGlvbnN4eXpcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcInByb3BlcnRpZXNcIjogbXVsdGlfcG9seWxpbmVzW21dLmF0dHIgPyB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLm11bHRpX3BvbHlsaW5lc1ttXS5hdHRyXHJcbiAgICAgICAgICAgICAgICB9IDoge31cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGF0YS5kYXRhW2ldLm11bHRpX3BvbHlnb25zKSB7XHJcbiAgICAgICAgICAgIG11bHRpX3BvbHlnb25zID0gWy4uLmRhdGEuZGF0YVtpXS5tdWx0aV9wb2x5Z29uc11cclxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBtdWx0aV9wb2x5Z29ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICAgIGxldCBwb3NpdGlvbnN4eXogPSBbXVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbXVsdGlfcG9seWdvbnNbbV0ucG9seWdvbnMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMyID0gW11cclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uc3h5ei5wdXNoKG11bHRpX3BvbHlnb25zW21dLnBvbHlnb25zW25dLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgbXVsdGlfcG9seWdvbnNbbV0ucG9seWdvbnNbbl0ucG9zaXRpb25zLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczIucHVzaChbbXVsdGlfcG9seWdvbnNbbV0ucG9seWdvbnNbbl0ucG9zaXRpb25zW3JdLngsIG11bHRpX3BvbHlnb25zW21dLnBvbHlnb25zW25dLnBvc2l0aW9uc1tyXS55LCBtdWx0aV9wb2x5Z29uc1ttXS5wb2x5Z29uc1tuXS5wb3NpdGlvbnNbcl0uel0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaChwb3NpdGlvbnMyKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmZWF0dXJlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIFwiaWRcIjogbXVsdGlfcG9seWdvbnNbbV0uYXR0ci5pZCxcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcclxuICAgICAgICAgICAgICAgIFwiZ2VvbWV0cnlcIjoge1xyXG4gICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJNdWx0aVBvbHlnb25cIixcclxuICAgICAgICAgICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbcG9zaXRpb25zXSxcclxuICAgICAgICAgICAgICAgICAgXCJyYW5nZVwiOiBtdWx0aV9wb2x5Z29uc1ttXS5yYW5nZSxcclxuICAgICAgICAgICAgICAgICAgXCJwb3NpdGlvbnNcIjogcG9zaXRpb25zeHl6XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IG11bHRpX3BvbHlnb25zW21dLmF0dHIgPyB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLm11bHRpX3BvbHlnb25zW21dLmF0dHJcclxuICAgICAgICAgICAgICAgIH0gOiB7fVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGZvcm1hdEZlYXR1cmVzKGRhdGEuY2hpbGRyZW5baV0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmVhdHVyZXMuc29ydCgoYSwgYikgPT4gTnVtYmVyKGEucHJvcGVydGllcy5maWQpIC0gTnVtYmVyKGIucHJvcGVydGllcy5maWQpKTtcclxuICAgIC8vIGZvcihsZXQgaT0wO2k8NTtpKyspIHtcclxuICAgIC8vICAgZmVhdHVyZXMgPSBbLi4uZmVhdHVyZXMsIC4uLmZlYXR1cmVzXVxyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5nZW9qc29uID0ge1xyXG4gICAgICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxyXG4gICAgICBcImZlYXR1cmVzXCI6IGZlYXR1cmVzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsZU5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbGVOYW1lXHJcbiAgfVxyXG4gIHNldCBmaWxlTmFtZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZmlsZU5hbWUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmZpbGVOYW1lICYmICh0aGlzLl9lbG1zLmZpbGVOYW1lLnZhbHVlID0gdilcclxuICB9XHJcblxyXG4gIGdldCBmaWVsZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmllbGRcclxuICB9XHJcbiAgc2V0IGZpZWxkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5maWVsZCA9IHZcclxuICAgIHRoaXMuX2VsbXMuZmllbGQgJiYgKHRoaXMuX2VsbXMuZmllbGQudmFsdWUgPSB2KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG9uQ2xpY2soKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGlja0NhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBzZXQgb25DbGljayh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd2YWw6JywgdmFsLCAn5LiN5piv5LiA5LiqZnVuY3Rpb24nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlja0NhbGxCYWNrID0gdmFsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaW1nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbWdcclxuICB9XHJcblxyXG4gIHNldCBpbWcodikge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XHJcbiAgICAgIHYgPSBbdl1cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5pbWcgPSB2XHJcbiAgICBTaHAuY3JlYXRlSW1hZ2UodGhpcylcclxuICB9XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICB9XHJcblxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2XHJcbiAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXMuZm9yRWFjaChlbmV0aXR5ID0+IHtcclxuICAgICAgaWYgKGVuZXRpdHkuYmlsbGJvYXJkKSB7XHJcbiAgICAgICAgZW5ldGl0eS5iaWxsYm9hcmQuY29sb3IgPSB2XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVuZXRpdHkucG9seWdvbikge1xyXG4gICAgICAgIGVuZXRpdHkucG9seWdvbi5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodilcclxuICAgICAgfVxyXG4gICAgICBpZiAoZW5ldGl0eS5wb2x5bGluZSkge1xyXG4gICAgICAgIGVuZXRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHYpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsZWZ0Q2xpY2tDQihtbywgaWQsIHAsIHRoYXQpIHtcclxuICAgIGlmICh0aGF0LmNsaWNrQ2FsbEJhY2sgJiYgdHlwZW9mIHRoYXQuY2xpY2tDYWxsQmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aGF0LmNsaWNrQ2FsbEJhY2sobW8sIGlkLCBwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICAvLyB0aGF0LmVudGl0eSA9IG5ldyBDZXNpdW0uUHJpbWl0aXZlQ29sbGVjdGlvbigpO1xyXG4gICAgLy8gdGhhdC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGhhdC5lbnRpdHkpXHJcbiAgICAvLyBTaHAuY2FsY3VsYXRpb25TY29wZSh0aGF0LCB0aGF0LmRhdGEpXHJcbiAgICAvLyBTaHAuY3JlYXRlUG9pbnRzKHRoYXQsIHRoYXQuZGF0YS5wb2ludHMpXHJcbiAgICAvLyBTaHAuY3JlYXRlUG9seWxpbmVzKHRoYXQsIHRoYXQuZGF0YS5wb2x5bGluZXMpXHJcbiAgICAvLyBTaHAuY3JlYXRlUG9seWdvbnModGhhdCwgdGhhdC5kYXRhLnBvbHlnb25zKVxyXG4gICAgbGV0IGJib3ggPSB0dXJmLmJib3godGhhdC5nZW9qc29uKTtcclxuICAgIHRoYXQucmFuZ2UgPSB7XHJcbiAgICAgIG1heF94OiBiYm94WzJdLFxyXG4gICAgICBtYXhfeTogYmJveFszXSxcclxuICAgICAgbWluX3g6IGJib3hbMF0sXHJcbiAgICAgIG1pbl95OiBiYm94WzFdLFxyXG4gICAgfVxyXG4gICAgdGhhdC5vcHRpb25zLmltZyAmJiBTaHAuY3JlYXRlSW1hZ2UodGhhdClcclxuICAgIGNvbnN0IGdldENvbG9yID0gKGxldmVsKSA9PiB7XHJcbiAgICAgIGxldCBjb2xvciA9IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICBpZiAobGV2ZWwpIHtcclxuICAgICAgICBzd2l0Y2ggKGxldmVsLl92YWx1ZSkge1xyXG4gICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBjb2xvciA9ICdyZ2JhKDI1NSwwLDAsMSknXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGNvbG9yID0gJ3JnYmEoMjU1LDEyNiwwLDEpJ1xyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICBjb2xvciA9ICdyZ2JhKDI1NSwyNTAsMCwxKSdcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgY29sb3IgPSAncmdiYSgwLDEwMiwyNTUsMSknXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICAgIGNvbG9yID0gJ3JnYmEoMCwyNTUsMCwxKSdcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvbG9yXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbG9yXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGdlb0pzb25EYXRhU291cmNlID0gbmV3IENlc2l1bS5HZW9Kc29uRGF0YVNvdXJjZSgpO1xyXG4gICAgbGV0IHByb21pc2UgPSBnZW9Kc29uRGF0YVNvdXJjZS5sb2FkKHRoYXQuZ2VvanNvbiwge1xyXG4gICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgSW5zdGFuY2VzID0gW11cclxuICAgIHJldHVybiBwcm9taXNlLnRoZW4oZGF0YXNvdXJjZSA9PiB7XHJcbiAgICAgIHRoYXQuZW50aXR5ID0gZGF0YXNvdXJjZVxyXG4gICAgICB0aGF0LnZpZXdlci5kYXRhU291cmNlcy5hZGQoZGF0YXNvdXJjZSk7XHJcbiAgICAgIGRhdGFzb3VyY2UuZW50aXRpZXMudmFsdWVzLmZvckVhY2goZW5ldGl0eSA9PiB7XHJcbiAgICAgICAgZW5ldGl0eS5zaG93ID0gdGhhdC5vcHRpb25zLnNob3dcclxuICAgICAgICAvLyB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKGVuZXRpdHkpXHJcbiAgICAgICAgaWYgKGVuZXRpdHkuYmlsbGJvYXJkKSB7XHJcbiAgICAgICAgICAvLyBlbmV0aXR5LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIGVuZXRpdHkuYmlsbGJvYXJkLmhlaWdodFJlZmVyZW5jZSA9IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5EXHJcbiAgICAgICAgICBlbmV0aXR5LnBvaW50ID0gbmV3IENlc2l1bS5Qb2ludEdyYXBoaWNzKHtcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhlbmV0aXR5LnBvc2l0aW9uLl92YWx1ZS54LCBlbmV0aXR5LnBvc2l0aW9uLl92YWx1ZS55LCBlbmV0aXR5LnBvc2l0aW9uLl92YWx1ZS56KSwgLy8g54K555qE5L2N572uXHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGdldENvbG9yKGVuZXRpdHkucHJvcGVydGllcy5sZXZlbCkpLCAvLyDngrnnmoTpopzoibJcclxuICAgICAgICAgICAgcGl4ZWxTaXplOiAxMCwgLy8g54K555qE5aSn5bCPXHJcbiAgICAgICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkQsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZICAvLyDkuI3lupTnlKjmt7HluqbmtYvor5VcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmV0aXR5LnBvbHlnb24pIHtcclxuICAgICAgICAgIGVuZXRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9IGZhbHNlXHJcbiAgICAgICAgICBlbmV0aXR5LnBvbHlnb24ubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGdldENvbG9yKGVuZXRpdHkucHJvcGVydGllcy5sZXZlbCkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmV0aXR5LnBvbHlsaW5lKSB7XHJcbiAgICAgICAgICBsZXQgY29sb3IgPSB0aGF0Lm9wdGlvbnMuY29sb3JcclxuICAgICAgICAgIGVuZXRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGdldENvbG9yKGVuZXRpdHkucHJvcGVydGllcy5sZXZlbCkpXHJcblxyXG4gICAgICAgICAgLy8gbGV0IHBvbHlsaW5lID0gbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgIC8vICAgcG9zaXRpb25zOiBlbmV0aXR5LnBvbHlsaW5lLnBvc2l0aW9ucy5fdmFsdWUsXHJcbiAgICAgICAgICAvLyAgIHdpZHRoOiAyXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIC8vIEluc3RhbmNlcy5wdXNoKG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICAvLyAgIGdlb21ldHJ5OiBwb2x5bGluZSxcclxuICAgICAgICAgIC8vICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgLy8gICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgIC8vICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJ3JnYmEoMCwyNTUsMTg0LDAuNSknKVxyXG4gICAgICAgICAgLy8gICAgIClcclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gfSkpXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlbmV0aXR5LnBvbHlsaW5lKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLy8gbGV0IHByaW1pdGl2ZSA9IG5ldyBDZXNpdW0uR3JvdW5kUG9seWxpbmVQcmltaXRpdmUoe1xyXG4gICAgICAvLyAgIGdlb21ldHJ5SW5zdGFuY2VzOiBJbnN0YW5jZXMsXHJcbiAgICAgIC8vICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZUNvbG9yQXBwZWFyYW5jZSgpXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICAvLyB0aGF0LnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChwcmltaXRpdmUpO1xyXG4gICAgICAvLyB0aGF0LnZpZXdlci56b29tVG8oZGF0YXNvdXJjZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlSW1hZ2UodGhhdCkgey8vKHByaW1pdGl2ZeaXoOazlei0tOWcsD8pXHJcbiAgICB0aGF0LnJlbW92ZUltYWdlKClcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLmltZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgICAgcmVjdGFuZ2xlOiB7XHJcbiAgICAgICAgICBjb29yZGluYXRlczogQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyh0aGF0LnJhbmdlLm1pbl94LCB0aGF0LnJhbmdlLm1pbl95LCB0aGF0LnJhbmdlLm1heF94LCB0aGF0LnJhbmdlLm1heF95KSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkltYWdlTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGltYWdlOiB0aGF0Lm9wdGlvbnMuaW1nW2ldLFxyXG4gICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LmltZ0VudGl0eS5wdXNoKGVudGl0eSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDorqHnrpdzaHDojIPlm7RcclxuICAgKi9cclxuICBzdGF0aWMgY2FsY3VsYXRpb25TY29wZSh0aGF0LCBkYXRhKSB7XHJcbiAgICBsZXQgcG9pbnRzID0gW11cclxuICAgIGlmIChkYXRhLnBvaW50cykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEucG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcG9pbnRzLnB1c2godHVyZi5wb2ludChbZGF0YS5wb2ludHNbaV0ucG9zaXRpb24ueCwgZGF0YS5wb2ludHNbaV0ucG9zaXRpb24ueV0pKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YS5wb2x5bGluZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBvbHlsaW5lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhLnBvbHlsaW5lc1tpXS5wb3NpdGlvbnMpXHJcbiAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGRhdGEucG9seWxpbmVzW2ldLnBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICBwb2ludHMucHVzaCh0dXJmLnBvaW50KFtkYXRhLnBvbHlsaW5lc1tpXS5wb3NpdGlvbnNbbV0ueCwgZGF0YS5wb2x5bGluZXNbaV0ucG9zaXRpb25zW21dLnldKSlcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEucG9seWdvbnMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBvbHlnb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGEucG9seWdvbnNbaV0ucG9zaXRpb25zKVxyXG4gICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBkYXRhLnBvbHlnb25zW2ldLnBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICBwb2ludHMucHVzaCh0dXJmLnBvaW50KFtkYXRhLnBvbHlnb25zW2ldLnBvc2l0aW9uc1ttXS54LCBkYXRhLnBvbHlnb25zW2ldLnBvc2l0aW9uc1ttXS55XSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmVhdHVyZXMgPSB0dXJmLmZlYXR1cmVDb2xsZWN0aW9uKHBvaW50cyk7XHJcbiAgICAgIGxldCBlbnZlbG9wZWQgPSB0dXJmLmVudmVsb3BlKGZlYXR1cmVzKTtcclxuICAgICAgaWYgKGVudmVsb3BlZCAmJiBlbnZlbG9wZWQuYmJveCAmJiBlbnZlbG9wZWQuYmJveC5sZW5ndGggPT0gNCkge1xyXG4gICAgICAgIHRoYXQucmFuZ2UgPSB7XHJcbiAgICAgICAgICBtYXhfeDogZW52ZWxvcGVkLmJib3hbMl0sXHJcbiAgICAgICAgICBtYXhfeTogZW52ZWxvcGVkLmJib3hbM10sXHJcbiAgICAgICAgICBtaW5feDogZW52ZWxvcGVkLmJib3hbMF0sXHJcbiAgICAgICAgICBtaW5feTogZW52ZWxvcGVkLmJib3hbMV0sXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlUG9pbnRzKHRoYXQsIGRhdGEpIHtcclxuICAgIGlmICghZGF0YSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBwb2ludHMgPSBuZXcgQ2VzaXVtLlBvaW50UHJpbWl0aXZlQ29sbGVjdGlvbih7XHJcbiAgICAgIHNjZW5lOiB0aGF0LnZpZXdlci5zY2VuZSAvLyDmjIflrprlnLrmma9cclxuICAgIH0pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRhdGFbaV0uYXR0ci5pZCB8fCAoZGF0YVtpXS5hdHRyLmlkID0gdGhhdC5yYW5kb21TdHJpbmcoKSlcclxuICAgICAgcG9pbnRzLmFkZCh7XHJcbiAgICAgICAgaWQ6IGRhdGFbaV0uYXR0ci5pZCxcclxuICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoZGF0YVtpXS54LCBkYXRhW2ldLnksIGRhdGFbaV0ueiksIC8vIOeCueeahOS9jee9rlxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuUkVELCAvLyDngrnnmoTpopzoibJcclxuICAgICAgICBwaXhlbFNpemU6IDEwLCAvLyDngrnnmoTlpKflsI9cclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAgLy8g5LiN5bqU55So5rex5bqm5rWL6K+VXHJcbiAgICAgIH0pXHJcbiAgICAgIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGRhdGFbaV0uYXR0ci5pZCwgdGhhdC5sZWZ0Q2xpY2tDQiwgdGhhdClcclxuICAgIH1cclxuICAgIHRoYXQuZW50aXR5LmFkZChwb2ludHMpXHJcbiAgfVxyXG4gIHN0YXRpYyBjcmVhdGVQb2x5bGluZXModGhhdCwgZGF0YSkge1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvbHlsaW5lSW5zdGFuY2UgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRhdGFbaV0uYXR0ci5pZCB8fCAoZGF0YVtpXS5hdHRyLmlkID0gdGhhdC5yYW5kb21TdHJpbmcoKSlcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IGRhdGFbaV0ucG9zaXRpb25zXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLngsIHBvc2l0aW9uc1ttXS55LCBwb3NpdGlvbnNbbV0ueilcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWxpbmUgPSBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSksXHJcbiAgICAgICAgd2lkdGg6IDRcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBpbnN0YW5jZSA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgaWQ6IGRhdGFbaV0uYXR0ci5pZCxcclxuICAgICAgICBnZW9tZXRyeTogcG9seWxpbmUsXHJcbiAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgICAgICBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGRhdGFbaV0uQ09MT1IgfHwgJ3JnYmEoMCwyNTUsMTg0LDAuNSknKVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHNob3c6IG5ldyBDZXNpdW0uU2hvd0dlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUodHJ1ZSksIC8v5pi+56S65oiW6ICF6ZqQ6JePXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHBvbHlsaW5lSW5zdGFuY2UucHVzaChpbnN0YW5jZSlcclxuICAgICAgcmVnTGVmdENsaWNrQ2FsbGJhY2soZGF0YVtpXS5hdHRyLmlkLCB0aGF0LmxlZnRDbGlja0NCLCB0aGF0KVxyXG4gICAgfVxyXG4gICAgaWYgKHBvbHlsaW5lSW5zdGFuY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGF0LmVudGl0eS5hZGQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZVByaW1pdGl2ZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogcG9seWxpbmVJbnN0YW5jZSxcclxuICAgICAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uUG9seWxpbmVDb2xvckFwcGVhcmFuY2UoKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBjcmVhdGVQb2x5Z29ucyh0aGF0LCBkYXRhKSB7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcG9seWdvbkluc3RhbmNlID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBkYXRhW2ldLmF0dHIuaWQgfHwgKGRhdGFbaV0uYXR0ci5pZCA9IHRoYXQucmFuZG9tU3RyaW5nKCkpXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBkYXRhW2ldLnBvc2l0aW9uc1xyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgcG9zaXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1ttXS54LCBwb3NpdGlvbnNbbV0ueSwgcG9zaXRpb25zW21dLnopXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvbHlnb24gPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeSh7XHJcbiAgICAgICAgcG9seWdvbkhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpKSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBpbnN0YW5jZSA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgaWQ6IGRhdGFbaV0uYXR0ci5pZCxcclxuICAgICAgICBnZW9tZXRyeTogcG9seWdvbixcclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoZGF0YVtpXS5DT0xPUiB8fCAncmdiYSgwLDI1NSwxODQsMC41KScpXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgc2hvdzogbmV3IENlc2l1bS5TaG93R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZSh0cnVlKSwgLy/mmL7npLrmiJbogIXpmpDol49cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgcG9seWdvbkluc3RhbmNlLnB1c2goaW5zdGFuY2UpXHJcbiAgICAgIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGRhdGFbaV0uYXR0ci5pZCwgdGhhdC5sZWZ0Q2xpY2tDQiwgdGhhdClcclxuICAgIH1cclxuICAgIGlmIChwb2x5Z29uSW5zdGFuY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgcHJpbWl0aXZlID0gbmV3IENlc2l1bS5Hcm91bmRQcmltaXRpdmUoe1xyXG4gICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBwb2x5Z29uSW5zdGFuY2UsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5QZXJJbnN0YW5jZUNvbG9yQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSwgLy9mYWxzZeaXtumAj+aYjuW6puaXoOaViFxyXG4gICAgICAgICAgY2xvc2VkOiBmYWxzZSxcclxuICAgICAgICB9KSxcclxuICAgICAgfSlcclxuICAgICAgdGhhdC5lbnRpdHkuYWRkKHByaW1pdGl2ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0KHN0YXR1cyA9IGZhbHNlLCBEaWFsb2dFdmVudCA9IHt9KSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+e8lui+keWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5maWxlTmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5maWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbGVOYW1lID0gdGhpcy5maWxlTmFtZVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmllbGQgPSB0aGlzLmZpZWxkXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgRGlhbG9nRXZlbnQuY29uZmlybUNhbGxCYWNrICYmIERpYWxvZ0V2ZW50LmNvbmZpcm1DYWxsQmFjayh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLm9yaWdpbmFsT3B0aW9ucy5maWxlTmFtZSxcclxuICAgICAgICAgICAgZmllbGQ6IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpZWxkXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICBEaWFsb2dFdmVudC5jbG9zZUNhbGxCYWNrICYmIERpYWxvZ0V2ZW50LmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBodG1sID0gYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5paH5Lu25ZCN56ew77yaPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGZsaWUtbmFtZVwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensOWtl+autemAieaLqe+8mjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQgaW5wdXQtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgYFxyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgICAgbGV0IG5hbWVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZsaWUtbmFtZScpWzBdXHJcbiAgICAgIG5hbWVFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMuZmlsZU5hbWVcclxuICAgICAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZU5hbWUgPSBuYW1lRWxtLnZhbHVlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgc2VsZWN0RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1zZWxlY3QnKVswXVxyXG4gICAgICBsZXQgb3B0aW9uID0gJydcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgbGV0IG8gPSBgPG9wdGlvbiB2YWx1ZT1cIiR7a2V5fVwiPiR7a2V5fTwvb3B0aW9uPmBcclxuICAgICAgICBvcHRpb24gPSBvcHRpb24gKyBvXHJcbiAgICAgIH1cclxuICAgICAgc2VsZWN0RWxtLmlubmVySFRNTCA9IG9wdGlvblxyXG4gICAgICBzZWxlY3RFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMuZmllbGRcclxuICAgICAgc2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWVsZCA9IHNlbGVjdEVsbS52YWx1ZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5fZWxtcy5maWxlTmFtZSA9IG5hbWVFbG1cclxuICAgICAgdGhpcy5fZWxtcy5maWVsZCA9IHNlbGVjdEVsbVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGVkaXRCeUlkKHN0YXR1cyA9IGZhbHNlLCBub2RlSWQsIERpYWxvZ0V2ZW50ID0ge30pIHtcclxuICAgIC8vIG5vZGVJZCA9IHRoaXMuZGF0YUFycmF5WzBdLmF0dHIuaWRcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGxldCBjYW1lcmFOYW1lID0gJydcclxuICAgIGxldCBpbmRleFxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHt9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLmlkID09PSBub2RlSWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uY29udGVudCkge1xyXG4gICAgICAgICAgICBvcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uY29udGVudClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGluZGV4ID0gaVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgb3B0aW9ucy5pZCA9IG9wdGlvbnMuaWQgfHwgbm9kZUlkXHJcbiAgICAgIG9wdGlvbnMubGluayB8fCAob3B0aW9ucy5saW5rID0ge30pXHJcbiAgICAgIG9wdGlvbnMubGluay5jb250ZW50IHx8IChvcHRpb25zLmxpbmsuY29udGVudCA9IFtdKVxyXG4gICAgICBvcHRpb25zLmNhbWVyYSB8fCAob3B0aW9ucy5jYW1lcmEgPSBbXSlcclxuICAgICAgb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgKG9wdGlvbnMucmljaFRleHRDb250ZW50ID0gJycpXHJcbiAgICAgIG9wdGlvbnMuYXR0cmlidXRlVHlwZSA9IG9wdGlvbnMuYXR0cmlidXRlVHlwZSB8fCAncmljaFRleHQnXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIG9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+e8lui+keWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaW5kZXhdLmNvbnRlbnQgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUpXHJcbiAgICAgICAgICBEaWFsb2dFdmVudC5jb25maXJtQ2FsbEJhY2sgJiYgRGlhbG9nRXZlbnQuY29uZmlybUNhbGxCYWNrKHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIERpYWxvZ0V2ZW50LmNsb3NlQ2FsbEJhY2sgJiYgRGlhbG9nRXZlbnQuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmV2ZW50ID0gRGlhbG9nRXZlbnRcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZSA9IHRoaXMuZGVlcENvcHlPYmoob3B0aW9ucylcclxuICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5YaF5a6557G75Z6L77yaPC9zcGFuPlxyXG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQgaW5wdXQtc2VsZWN0IGF0dHJpYnV0ZS1zZWxlY3RcIiBzdHlsZT1cIndpZHRoOiAxMjBweDtcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmljaFRleHRcIj7lr4zmlofmnKw8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8IS0tPG9wdGlvbiB2YWx1ZT1cImxpbmtcIj7pk77mjqU8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2FtZXJhXCI+5pGE5YOP5aS0PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlbnNvclwiPuS8oOaEn+WZqDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ2clwiPuWFqOaZr+Wbvjwvb3B0aW9uPi0tPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1saW5rXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGxpbmtfYWRkXCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibGlua19hZGRfYnRuXCI+KzwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1yaWNoVGV4dFwiPlxyXG4gICAgICAgICAgPHNwYW4+57yW6L6R5YaF5a6577yaPGJ1dHRvbiBjbGFzcz1cIm9wZW4tcmljaFRleHQtYnRuXCI+5omT5byA5paH5pys57yW6L6R5ZmoPC9idXR0b24+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1saW5rXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuWQjeensDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6ZO+5o6lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7mk43kvZw8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZW1wdHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPHA+5pqC5peg5pWw5o2uPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1jYW1lcmFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nvJbovpHlhoXlrrnvvJo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGNhbWVyYS1uYW1lXCIgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbGVjdCBidG4gY2FtZXJhLXNlbGVjdFwiPuaQnOe0ojwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBjYW1lcmEtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuaTjeS9nDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuiuvuWkh+WQjeensDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDgwcHg7IGZsZXg6IDAgODBweDttaW4td2lkdGg6IDgwcHg7XCI+6K6+5aSH57G75Z6LPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTI2cHg7IGZsZXg6IDAgMTI2cHg7bWluLXdpZHRoOiAxMjZweDtcIj7orr7lpIdJUDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDgwcHg7IGZsZXg6IDAgODBweDttaW4td2lkdGg6IDgwcHg7XCI+6K6+5aSH56uv5Y+jPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogODBweDsgZmxleDogMCA4MHB4O21pbi13aWR0aDogODBweDtcIj7nlKjmiLflkI08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7lr4bnoIE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+57uR5a6aPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPuiuvuWkh+WQjeensDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPuiuvuWkh+exu+WeizwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPuiuvuWkh0lQPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+6K6+5aSH56uv5Y+jPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+55So5oi35ZCNPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+5a+G56CBPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1lbXB0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWltZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+5pqC5peg5pWw5o2uPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwicm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb25cIj48L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICBgXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LnN0eWxlLndpZHRoID0gJzYwMHB4J1xyXG5cclxuICAgICAgbGV0IGF0dHJpYnV0ZVNlbGVjdEVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdXHJcbiAgICAgIGxldCBsaW5rQWRkQnRuRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rX2FkZF9idG4nKVswXVxyXG4gICAgICBsZXQgb3BlblJpY2hUZXh0QnRuRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvcGVuLXJpY2hUZXh0LWJ0bicpWzBdXHJcblxyXG4gICAgICBsZXQgYXR0cmlidXRlQ29udGVudCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50JylcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUNvbnRlbnRbaV0uY2xhc3NOYW1lLmluZGV4T2YoJ2F0dHJpYnV0ZS1jb250ZW50LScgKyB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmF0dHJpYnV0ZVR5cGUpID4gLTEpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZUNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYXR0cmlidXRlQ29udGVudFtpXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmF0dHJpYnV0ZVR5cGUgPSBhdHRyaWJ1dGVTZWxlY3RFbG0udmFsdWVcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGVDb250ZW50W2ldLmNsYXNzTmFtZS5pbmRleE9mKCdhdHRyaWJ1dGUtY29udGVudC0nICsgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5hdHRyaWJ1dGVUeXBlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZUNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYXR0cmlidXRlQ29udGVudFtpXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxpbmtBZGRCdG5FbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0udmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50LnB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICAgICAgdXJsOiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rX2FkZCcpWzBdLnZhbHVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXS52YWx1ZSA9ICcnXHJcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgRGlhbG9nRXZlbnQuY2xpY2tBZGRMaW5rICYmIERpYWxvZ0V2ZW50LmNsaWNrQWRkTGluayhub2RlSWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgb3BlblJpY2hUZXh0QnRuRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHJpY2hUZXh0Lm9wZW4obm9kZUlkLCBub2RlSWQsIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUucmljaFRleHRDb250ZW50KVxyXG4gICAgICAgIHJpY2hUZXh0LnByaW1hcnlDYWxsQmFjayA9IChjb250ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgY2FtZXJhTmFtZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2FtZXJhLW5hbWUnKVswXVxyXG4gICAgICBsZXQgY2FtZXJhU2VsZWN0RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjYW1lcmEtc2VsZWN0JylbMF1cclxuICAgICAgY2FtZXJhTmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICBjYW1lcmFOYW1lID0gY2FtZXJhTmFtZUVsbS52YWx1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdChjYW1lcmFOYW1lKVxyXG4gICAgICBjYW1lcmFTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoY2FtZXJhTmFtZSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIGxldCBuYW1lRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbGllLW5hbWUnKVswXVxyXG4gICAgICAvLyBuYW1lRWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLmZpbGVOYW1lXHJcbiAgICAgIC8vIG5hbWVFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKT0+e1xyXG4gICAgICAvLyAgIHRoaXMub3B0aW9ucy5maWxlTmFtZSA9IG5hbWVFbG0udmFsdWVcclxuICAgICAgLy8gfSlcclxuXHJcbiAgICAgIC8vIGxldCBzZWxlY3RFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdCcpWzBdXHJcbiAgICAgIC8vIGxldCBvcHRpb24gPSAnJ1xyXG4gICAgICAvLyBmb3IobGV0IGtleSBpbiB0aGlzLmRhdGFBcnJheVswXS5hdHRyKSB7XHJcbiAgICAgIC8vICAgbGV0IG8gPSBgPG9wdGlvbiB2YWx1ZT1cIiR7a2V5fVwiPiR7a2V5fTwvb3B0aW9uPmBcclxuICAgICAgLy8gICBvcHRpb24gPSBvcHRpb24gKyBvXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gc2VsZWN0RWxtLmlubmVySFRNTCA9IG9wdGlvblxyXG4gICAgICAvLyBzZWxlY3RFbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMuZmllbGRcclxuICAgICAgLy8gc2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCk9PntcclxuICAgICAgLy8gICB0aGlzLm9wdGlvbnMuZmllbGQgPSBzZWxlY3RFbG0udmFsdWVcclxuICAgICAgLy8gfSlcclxuXHJcbiAgICAgIC8vIHRoaXMuX2VsbXMuZmlsZU5hbWUgPSBuYW1lRWxtXHJcbiAgICAgIC8vIHRoaXMuX2VsbXMuZmllbGQgPSBzZWxlY3RFbG1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0Q29udGVudEJ5SWQobm9kZUlkLCBjb250ZW50KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5nZW9qc29uLmZlYXR1cmVzW2ldLnByb3BlcnRpZXMuaWQgPT09IG5vZGVJZCkge1xyXG4gICAgICAgIHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5jb250ZW50ID0gY29udGVudFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbGVOYW1lXHJcbiAgICB0aGlzLmZpZWxkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmllbGRcclxuICB9XHJcblxyXG4gIGFkZEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgbGluaywgaSkge1xyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlICYmIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUuaWQgPT0gbm9kZUlkKSB7XHJcbiAgICAgIGlmIChpIHx8IGkgPT09IDApIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1saW5rJylbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVtpICsgMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZS1zZWxlY3QnKVswXS52YWx1ZSA9IGxpbmtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudC5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6ICfpk77mjqUnLFxyXG4gICAgICAgICAgdXJsOiBsaW5rXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgZGF0YSkge1xyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlICYmIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUuaWQgPT0gbm9kZUlkKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gZGF0YVxyXG4gICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1saW5rJylbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUnKVswXVxyXG4gICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdHIgPSBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS5uYW1lICsgYDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0udXJsICsgYDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibGlua0VkaXRcIj7nvJbovpE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibGlua0RlbGV0ZVwiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5gXHJcbiAgICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgbGV0IGZ1biA9IHtcclxuICAgICAgICBsaW5rRWRpdDogYXN5bmMgKGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQpXHJcbiAgICAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1saW5rJylbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUnKVswXVxyXG4gICAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gICAgICAgICAgICAgIGxldCBodG1sID0gYFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGZpbGUtc2VsZWN0XCIgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAyMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJmaWxlU2VsZWN0XCI+Li4uPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgICAgICAgICAgICAgaXRlbVtpXS5pbm5lckhUTUwgPSBodG1sXHJcbiAgICAgICAgICAgICAgbGV0IHRkID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZCcpXHJcbiAgICAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgICAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG0ubmFtZSA9PT0gJ0BjbGljaycpIHtcclxuICAgICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnVuW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oeyBuYW1lOiB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlLCB1cmw6IHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgfSwgaSlcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBidG5bbl0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGlua0RlbGV0ZTogKGkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50LnNwbGljZShpLCAxKVxyXG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVMaW5rQnlJZChub2RlSWQsIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50KVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNvbmZpcm1FZGl0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldID0gdmFsdWVcclxuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlTGlua0J5SWQobm9kZUlkLCB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlTGlua0J5SWQobm9kZUlkLCB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmV2ZW50ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5ldmVudC5jbGlja0FkZExpbmsgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmV2ZW50LmNsaWNrQWRkTGluayhub2RlSWQsIGkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICBpZiAoIWJ0bltuXSB8fCFidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBjb250aW51ZTsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YUFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGFBcnJheVtpXS5hdHRyLmlkID09PSBub2RlSWQpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhQXJyYXlbaV0uY29udGVudCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRfRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgPSB2XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFsbE5vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhXHJcbiAgfVxyXG5cclxuICBvcGVuQWxsTm9kZUxpc3QoKSB7XHJcbiAgICBPcGVuQWxsTm9kZUxpc3QodGhpcylcclxuICB9XHJcbiAgb3Blbk5vZGVMaXN0QnlJZChpZCkge1xyXG4gICAgT3Blbk5vZGVMaXN0QnlJZCh0aGlzLCBpZClcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY3JlYXRlVGFibGVDb250ZW50KHRoYXQpIHtcclxuICAgIGxldCB0cnNFbG0gPSAnJ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0LmN1cnJlbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ckVsbSA9ICc8dHIgY2xhc3M9XCJlbC10YWJsZV9fcm93XCI+J1xyXG4gICAgICBsZXQgdGRFbG0gPSAnJ1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhhdC5jdXJyZW50RGF0YVtpXS5hdHRyKSB7XHJcbiAgICAgICAgdGRFbG0gPSB0ZEVsbSArIGA8dGQgcm93c3Bhbj1cIjFcIiBjb2xzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke3RoYXQuY3VycmVudERhdGFbaV0uYXR0cltrZXldfTwvZGl2PjwvdGQ+YFxyXG4gICAgICB9XHJcbiAgICAgIHRyRWxtID0gdHJFbG0gKyB0ZEVsbSArICc8L3RyPidcclxuICAgICAgdHJzRWxtID0gdHJzRWxtICsgdHJFbG1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnNFbG1cclxuICB9XHJcblxyXG4gIGZseVRvKGlkLCBvcHRpb25zID0ge30pIHtcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0ucHJvcGVydGllcy5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIGxldCByYW5nZSA9IHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeS5yYW5nZVxyXG4gICAgICAgICAgaWYgKHJhbmdlKSB7XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgICAgICAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICBjbG9zZVZpZXdGb2xsb3codGhpcy5zZGspXHJcblxyXG4gICAgICAgICAgICB0aGlzLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5SZWN0YW5nbGUuZnJvbURlZ3JlZXMocmFuZ2UubWluX3gsIHJhbmdlLm1pbl95LCByYW5nZS5tYXhfeCwgcmFuZ2UubWF4X3kpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnJhbmdlKSB7XHJcbiAgICAgICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICAgICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgICAgICB0aGlzLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5SZWN0YW5nbGUuZnJvbURlZ3JlZXModGhpcy5yYW5nZS5taW5feCwgdGhpcy5yYW5nZS5taW5feSwgdGhpcy5yYW5nZS5tYXhfeCwgdGhpcy5yYW5nZS5tYXhfeSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2hvdyhzdGF0dXMsIGlkKSB7XHJcbiAgICAvLyBsZXQgZW5ldGl0eSA9IHRoaXMuZW50aXR5LmVudGl0aWVzLmdldEJ5SWQoaWQpXHJcbiAgICAvLyBpZihlbmV0aXR5KSB7XHJcbiAgICAvLyAgIGVuZXRpdHkuc2hvdyA9IHN0YXR1c1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSB7XHJcblxyXG4gICAgLy8gfVxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5pZCAmJiB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQuc3RhcnRzV2l0aChpZCkpIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gc3RhdHVzXHJcbiAgICAgICAgICAvLyB0aGlzLmVudGl0eS5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc3RhdHVzXHJcbiAgICAgIC8vIHRoaXMuZW50aXR5LnNob3cgPSBzdGF0dXNcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHN0YXR1c1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTaG93SW1nKHN0YXR1cywgaW5kZXgpIHtcclxuICAgIGlmIChpbmRleCB8fCBpbmRleCA9PT0gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW1nRW50aXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHtcclxuICAgICAgICAgIHRoaXMuaW1nRW50aXR5W2ldLnNob3cgPSBzdGF0dXNcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmltZ0VudGl0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuaW1nRW50aXR5W2ldLnNob3cgPSBzdGF0dXNcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgLy8gdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmZvckVhY2goZW5ldGl0eSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUoZW5ldGl0eSlcclxuICAgIC8vIH0pXHJcbiAgICB0aGlzLnZpZXdlci5kYXRhU291cmNlcy5yZW1vdmUodGhpcy5lbnRpdHksIHRydWUpXHJcbiAgICB0aGlzLnJlbW92ZUltYWdlKClcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgdGhpcy5nZW9qc29uID0ge31cclxuICAgIHRoaXMuZGF0YSA9IHt9XHJcbiAgfVxyXG5cclxuICByZW1vdmVJbWFnZSgpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbWdFbnRpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmltZ0VudGl0eVtpXSlcclxuICAgIH1cclxuICAgIHRoaXMuaW1nRW50aXR5ID0gW11cclxuICB9XHJcblxyXG4gIGNhbWVyYVNlbGVjdChjYW1lcmFOYW1lLCBwYWdlKSB7XHJcbiAgICBjb25zdCB0eXBlID0ge1xyXG4gICAgICAnMSc6ICfmtbflurcnLFxyXG4gICAgICAnMic6ICflpKfljY4nXHJcbiAgICB9XHJcbiAgICBsZXQgaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0XHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hdGlvbkVsbSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2luYXRpb24nKVswXVxyXG4gICAgICBsZXQgYXR0cmlidXRlQ2FtZXJhRWxtID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtY2FtZXJhJylbMF1cclxuICAgICAgaWYgKCFwYWdpbmF0aW9uRWxtKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFhdHRyaWJ1dGVDYW1lcmFFbG0pIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgMSwgMTAsIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHVybCA9IFwiXCJcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgY2FtZXJhTmFtZTogY2FtZXJhTmFtZSxcclxuICAgICAgcGFnZTogIXBhZ2UgfHwgdHlwZW9mIHBhZ2UgPT09ICdvYmplY3QnID8gMSA6IHBhZ2UsXHJcbiAgICAgIHBhZ2VTaXplOiA1XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcclxuICAgIGlmIChob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSlcclxuICAgICAgdXJsID0gYCR7aG9zdH0vYXBpL3YxL2NhbWVyYURhdGEvbGlzdD8ke3F1ZXJ5U3RyaW5nfWBcclxuICAgIGVsc2VcclxuICAgICAgdXJsID0gYCR7aG9zdH0veWplYXJ0aDQuMC9hcGkvdjEvY2FtZXJhRGF0YS9saXN0PyR7cXVlcnlTdHJpbmd9YFxyXG4gICAgLy8gdXJsID0gdGhpcy5vcHRpb25zLnBhdGhcclxuICAgIGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgZ2V0VG9rZW4oKSxcclxuICAgICAgfVxyXG4gICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhLmNvZGUgPT09IDIwMCB8fCBkYXRhLmNvZGUgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9EaWFsb2dPYmplY3QgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fCAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcGFnaW5hdGlvbkVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2luYXRpb24nKVswXVxyXG4gICAgICAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjYW1lcmEtdGFibGUnKVswXVxyXG4gICAgICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5saXN0ICYmIGRhdGEuZGF0YS5saXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCBkYXRhLmRhdGEudG90YWwsIDEwLCAxLCAocGFnZUluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FtZXJhU2VsZWN0ICYmIHRoaXMuY2FtZXJhU2VsZWN0KGNhbWVyYU5hbWUsIHBhZ2VJbmRleClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgICAgICB0YWJsZUNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtZmxleCdcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5kYXRhLmxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHRyID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIiR7ZGF0YS5kYXRhLmxpc3RbaV0uSUR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPue7keWumjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+JHtkYXRhLmRhdGEubGlzdFtpXS5jYW1lcmFOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgc3R5bGU9XCJ3aWR0aDogODBweDsgZmxleDogMCA4MHB4OyBtaW4td2lkdGg6IDgwcHg7XCI+JHt0eXBlW2RhdGEuZGF0YS5saXN0W2ldLnR5cGVdfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgc3R5bGU9XCJ3aWR0aDogMTI2cHg7IGZsZXg6IDAgMTI2cHg7bWluLXdpZHRoOiAxMjZweDtcIj4ke2RhdGEuZGF0YS5saXN0W2ldLmlwfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgc3R5bGU9XCJ3aWR0aDogODBweDsgZmxleDogMCA4MHB4O21pbi13aWR0aDogODBweDtcIj4ke2RhdGEuZGF0YS5saXN0W2ldLnBvcnR9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiBzdHlsZT1cIndpZHRoOiA4MHB4OyBmbGV4OiAwIDgwcHg7bWluLXdpZHRoOiA4MHB4O1wiPiR7ZGF0YS5kYXRhLmxpc3RbaV0udXNlck5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj4ke2RhdGEuZGF0YS5saXN0W2ldLnBhc3NXb3JkfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjaGVja2JveCA9IHRyRWxtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tib3guY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5jYW1lcmEucHVzaChkYXRhLmRhdGEubGlzdFtpXSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3QXJyYXkgPSB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmNhbWVyYS5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uSUQgIT09IGRhdGEuZGF0YS5saXN0W2ldLklEXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5jYW1lcmEgPSBuZXdBcnJheVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG5cclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmNhbWVyYS5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmNhbWVyYVttXS5JRCA9PT0gZGF0YS5kYXRhLmxpc3RbaV0uSUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIGRhdGEuZGF0YS50b3RhbCwgMTAsIDEsIChwYWdlSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYW1lcmFTZWxlY3QgJiYgdGhpcy5jYW1lcmFTZWxlY3QoY2FtZXJhTmFtZSwgcGFnZUluZGV4KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCAxLCAxMCwgMSk7XHJcbiAgICAgICAgICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgICAgICAgICAgdGFibGVDb250ZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRhLm1lc3NhZ2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7fVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFNocFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQVBBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQXRFQTtBQUFBO0FBQUE7QUFBQTtBQXdFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6SUE7QUFDQTtBQUNBO0FBeUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFwSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1SkE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNlBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFwQkE7QUFxQkE7QUFlQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBMUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBWEE7QUFZQTtBQUNBO0FBQ0E7QUFxRkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdk5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBME5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFyQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdDQTtBQTdDQTtBQUFBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFWQTtBQUFBO0FBUUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQWo2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBd2NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUF3TkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/Shp/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Shp/openAllNodeList.js": -/*!*********************************************!*\ - !*** ./src/Obj/Base/Shp/openAllNodeList.js ***! - \*********************************************/ -/*! exports provided: openAllNodeList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openAllNodeList\", function() { return openAllNodeList; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _BaseDialog_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../BaseDialog/index */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Element_Pagination__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Element/Pagination */ \"./src/Obj/Element/Pagination.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\nvar _DialogObject;\nvar openAllNodeList = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(that) {\n var total, page, pageSize, currentData, createTableContent, dataArrayFilter, trsElm, box, searchElm, talbeElm, headerElm, hcolgroupElm, theadElm, bodyElm, bcolgroupElm, i, key, tbodyElm, emptyElm, emptyNode, headerWrapper, bodyWrapper, paginationElm, search;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n total = 0;\n page = 1;\n pageSize = 20;\n currentData = [];\n if (_DialogObject && !_DialogObject.isDestroy) {\n _DialogObject.close();\n _DialogObject = null;\n }\n createTableContent = function createTableContent() {\n var trsElm = '';\n for (var _i = 0; _i < currentData.length; _i++) {\n var trElm = '';\n var tdElm = '';\n if ('fid' in currentData[_i].properties) {\n tdElm = \"
    \").concat(currentData[_i].properties.fid, \"
    \");\n }\n for (var key in currentData[_i].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n tdElm = tdElm + \"
    \").concat(currentData[_i].properties[key], \"
    \");\n }\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n };\n _context.next = 8;\n return new _BaseDialog_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"](that.viewer._container, {\n title: '',\n left: '17%',\n top: '100px'\n });\n case 8:\n _DialogObject = _context.sent;\n _context.next = 11;\n return _DialogObject.init();\n case 11:\n dataArrayFilter = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(that.geojson.features);\n total = dataArrayFilter.length;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n trsElm = createTableContent();\n box = document.createElement('div');\n box.style.height = '100%';\n searchElm = '
    ';\n talbeElm = '
    ';\n headerElm = '
    ';\n hcolgroupElm = '';\n theadElm = '';\n bodyElm = '
    ';\n bcolgroupElm = '';\n i = 1; // thead\n if ('fid' in that.geojson.features[0].properties) {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n for (key in that.geojson.features[0].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n }\n //tbody\n tbodyElm = '';\n tbodyElm = tbodyElm + trsElm + '';\n //empty\n emptyElm = '
    暂无数据
    ';\n hcolgroupElm = hcolgroupElm + '';\n bcolgroupElm = bcolgroupElm + '';\n theadElm = theadElm + '';\n headerElm = headerElm + hcolgroupElm + theadElm + '
    fid
    \").concat(key, \"
    ';\n bodyElm = bodyElm + bcolgroupElm + tbodyElm + '' + emptyElm + '
    ';\n talbeElm = talbeElm + headerElm + bodyElm + '';\n box.innerHTML = searchElm + talbeElm + '
    ';\n emptyNode = box.getElementsByClassName('el-table__empty-block')[0];\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n // this.viewer._container.appendChild(box)\n _DialogObject.contentAppChild(box);\n headerWrapper = box.getElementsByClassName('el-table__header-wrapper')[0];\n bodyWrapper = box.getElementsByClassName('el-table__body-wrapper')[0];\n bodyWrapper.addEventListener('scroll', function (e) {\n headerWrapper.scrollLeft = e.target.scrollLeft;\n });\n _DialogObject._element.title.style.height = '40px';\n _DialogObject._element.body.style.width = '65%';\n _DialogObject._element.body.style.height = '80%';\n _DialogObject._element.content.style.height = 'calc(100% - 40px)';\n _DialogObject._element.content.style.overflow = 'hidden';\n _DialogObject._element.foot.style.display = 'none';\n bodyWrapper.style.height = \"calc(100% - \".concat(headerWrapper.offsetHeight, \"px)\");\n paginationElm = box.getElementsByClassName('pagination')[0];\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_5__[\"generatePagination\"])(paginationElm, total, pageSize, page, function (pageIndex) {\n page = pageIndex;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n });\n search = function search() {\n var input = box.getElementsByClassName('search-box')[0].getElementsByTagName('input')[0];\n var array = [];\n for (var _i2 = 0; _i2 < that.geojson.features.length; _i2++) {\n for (var _key in that.geojson.features[_i2].properties) {\n var str = that.geojson.features[_i2].properties[_key] + '';\n if (str.indexOf(input.value) != -1) {\n array.push(that.geojson.features[_i2]);\n break;\n }\n }\n }\n dataArrayFilter = array;\n total = dataArrayFilter.length;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_5__[\"generatePagination\"])(paginationElm, total, pageSize, page, function (pageIndex) {\n page = pageIndex;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n });\n };\n box.getElementsByClassName('search')[0].addEventListener('click', function () {\n pageSize = 20;\n page = 1;\n search();\n });\n box.getElementsByClassName('export')[0].addEventListener('click', function () {\n var data = [];\n for (var _i3 = 0; _i3 < that.geojson.features.length; _i3++) {\n data.push(_objectSpread(_objectSpread({}, that.geojson.features[_i3].properties), {}, {\n 'positions': JSON.stringify(that.geojson.features[_i3].geometry.positions)\n }));\n }\n that.exportExcel(data);\n });\n case 55:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function openAllNodeList(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU2hwL29wZW5BbGxOb2RlTGlzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9TaHAvb3BlbkFsbE5vZGVMaXN0LmpzP2UyZDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpYWxvZyBmcm9tIFwiLi4vLi4vLi4vQmFzZURpYWxvZy9pbmRleFwiO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVBhZ2luYXRpb24gfSBmcm9tIFwiLi4vLi4vRWxlbWVudC9QYWdpbmF0aW9uXCI7XHJcblxyXG5sZXQgX0RpYWxvZ09iamVjdFxyXG5cclxuY29uc3Qgb3BlbkFsbE5vZGVMaXN0ID0gYXN5bmMgKHRoYXQpID0+IHtcclxuICBsZXQgdG90YWwgPSAwXHJcbiAgbGV0IHBhZ2UgPSAxXHJcbiAgbGV0IHBhZ2VTaXplID0gMjBcclxuICBsZXQgY3VycmVudERhdGEgPSBbXVxyXG5cclxuICBpZiAoX0RpYWxvZ09iamVjdCAmJiAhX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgIF9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IGNyZWF0ZVRhYmxlQ29udGVudCA9ICgpID0+IHtcclxuICAgIGxldCB0cnNFbG0gPSAnJ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdHJFbG0gPSAnPHRyIGNsYXNzPVwiZWwtdGFibGVfX3Jvd1wiPidcclxuICAgICAgbGV0IHRkRWxtID0gJydcclxuICAgICAgaWYgKCdmaWQnIGluIGN1cnJlbnREYXRhW2ldLnByb3BlcnRpZXMpIHtcclxuICAgICAgICB0ZEVsbSA9IGA8dGQgcm93c3Bhbj1cIjFcIiBjb2xzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2N1cnJlbnREYXRhW2ldLnByb3BlcnRpZXMuZmlkfTwvZGl2PjwvdGQ+YFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ2lkJyAmJiBrZXkgIT09ICdJRCcgJiYga2V5ICE9PSAnZmlkJykge1xyXG4gICAgICAgICAgdGRFbG0gPSB0ZEVsbSArIGA8dGQgcm93c3Bhbj1cIjFcIiBjb2xzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2N1cnJlbnREYXRhW2ldLnByb3BlcnRpZXNba2V5XX08L2Rpdj48L3RkPmBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdHJFbG0gPSB0ckVsbSArIHRkRWxtICsgJzwvdHI+J1xyXG4gICAgICB0cnNFbG0gPSB0cnNFbG0gKyB0ckVsbVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyc0VsbVxyXG4gIH1cclxuXHJcbiAgX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgdGl0bGU6ICcnLCBsZWZ0OiAnMTclJywgdG9wOiAnMTAwcHgnXHJcbiAgfSlcclxuICBhd2FpdCBfRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIGxldCBkYXRhQXJyYXlGaWx0ZXIgPSBbLi4udGhhdC5nZW9qc29uLmZlYXR1cmVzXVxyXG4gIHRvdGFsID0gZGF0YUFycmF5RmlsdGVyLmxlbmd0aFxyXG4gIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG5cclxuICBsZXQgdHJzRWxtID0gY3JlYXRlVGFibGVDb250ZW50KClcclxuXHJcbiAgbGV0IGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgYm94LnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIGxldCBzZWFyY2hFbG0gPSAnPGRpdiBjbGFzcz1cInNlYXJjaC1ib3hcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7bWFyZ2luLWJvdHRvbTogMTBweDtcIj48aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCLovpPlhaXlhbPplK7lrZfmkJzntKJcIiBzdHlsZT1cIndpZHRoOiAxODBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4O1wiPjxidXR0b24gY2xhc3M9XCJidG4gc2VhcmNoXCI+5pCc57SiPC9idXR0b24+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7cmlnaHQ6MjBweDtcIiBjbGFzcz1cImVsLWJ1dHRvbiBlbC1idXR0b24tLXByaW1hcnkgaXMtcGxhaW4gZXhwb3J0XCI+PHNwYW4+5a+85Ye6PC9zcGFuPjwvYnV0dG9uPjwvZGl2PidcclxuICBsZXQgdGFsYmVFbG0gPSAnPGRpdiBjbGFzcz1cImVsLXRhYmxlIGVsLXRhYmxlLS1maXQgZWwtdGFibGUtLWJvcmRlciBlbC10YWJsZS0tc2Nyb2xsYWJsZS14IGVsLXRhYmxlLS1zY3JvbGxhYmxlLXkgZWwtdGFibGUtLWVuYWJsZS1yb3ctaG92ZXIgZWwtdGFibGUtLWVuYWJsZS1yb3ctdHJhbnNpdGlvblwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygxMDAlIC0gMTAwcHgpO1wiPidcclxuICBsZXQgaGVhZGVyRWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9faGVhZGVyLXdyYXBwZXJcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2hlYWRlclwiIHN0eWxlPVwid2lkdGg6IDEyMTNweDtcIj4nXHJcbiAgbGV0IGhjb2xncm91cEVsbSA9ICc8Y29sZ3JvdXA+J1xyXG4gIGxldCB0aGVhZEVsbSA9ICc8dGhlYWQgY2xhc3M9XCJoYXMtZ3V0dGVyXCI+PHRyPidcclxuICBsZXQgYm9keUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGVfX2JvZHktd3JhcHBlciBpcy1zY3JvbGxpbmctbm9uZVwiIHN0eWxlPVwiaGVpZ2h0OiA2MjBweDtcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2JvZHlcIiBzdHlsZT1cIndpZHRoOiAxMTg2cHg7XCI+J1xyXG4gIGxldCBiY29sZ3JvdXBFbG0gPSAnPGNvbGdyb3VwPidcclxuXHJcbiAgbGV0IGkgPSAxXHJcbiAgLy8gdGhlYWRcclxuICBpZiAoJ2ZpZCcgaW4gdGhhdC5nZW9qc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMpIHtcclxuICAgIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICBiY29sZ3JvdXBFbG0gPSBiY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgdGhlYWRFbG0gPSB0aGVhZEVsbSArIGA8dGggY29sc3Bhbj1cIjFcIiByb3dzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgICAgaXMtbGVhZiBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+ZmlkPC9kaXY+PC90aD5gXHJcbiAgICBpKytcclxuICB9XHJcbiAgZm9yIChsZXQga2V5IGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoa2V5ICE9PSAnaWQnICYmIGtleSAhPT0gJ0lEJyAmJiBrZXkgIT09ICdmaWQnKSB7XHJcbiAgICAgIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICAgIGJjb2xncm91cEVsbSA9IGJjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICAgIHRoZWFkRWxtID0gdGhlYWRFbG0gKyBgPHRoIGNvbHNwYW49XCIxXCIgcm93c3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICAgIGlzLWxlYWYgZWwtdGFibGVfX2NlbGxcIj48ZGl2IGNsYXNzPVwiY2VsbFwiPiR7a2V5fTwvZGl2PjwvdGg+YFxyXG4gICAgICBpKytcclxuICAgIH1cclxuICB9XHJcbiAgLy90Ym9keVxyXG4gIGxldCB0Ym9keUVsbSA9ICc8dGJvZHk+J1xyXG4gIHRib2R5RWxtID0gdGJvZHlFbG0gKyB0cnNFbG0gKyAnPC90Ym9keT4nXHJcbiAgLy9lbXB0eVxyXG4gIGxldCBlbXB0eUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGVfX2VtcHR5LWJsb2NrXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+PHNwYW4gY2xhc3M9XCJlbC10YWJsZV9fZW1wdHktdGV4dFwiPuaaguaXoOaVsOaNrjwvc3Bhbj48L2Rpdj4nXHJcblxyXG4gIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArICc8Y29sIG5hbWU9XCJndXR0ZXJcIiB3aWR0aD1cIjE3XCI+PC9jb2xncm91cD4nXHJcbiAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgJzwvY29sZ3JvdXA+J1xyXG4gIHRoZWFkRWxtID0gdGhlYWRFbG0gKyAnPC90cj48L3RoZWFkPidcclxuICBoZWFkZXJFbG0gPSBoZWFkZXJFbG0gKyBoY29sZ3JvdXBFbG0gKyB0aGVhZEVsbSArICc8L3RhYmxlPjwvZGl2PidcclxuICBib2R5RWxtID0gYm9keUVsbSArIGJjb2xncm91cEVsbSArIHRib2R5RWxtICsgJzwvdGFibGU+JyArIGVtcHR5RWxtICsgJzwvZGl2PidcclxuICB0YWxiZUVsbSA9IHRhbGJlRWxtICsgaGVhZGVyRWxtICsgYm9keUVsbSArICc8L2Rpdj4nXHJcblxyXG5cclxuICBib3guaW5uZXJIVE1MID0gc2VhcmNoRWxtICsgdGFsYmVFbG0gKyAnPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj48L2Rpdj4nXHJcbiAgbGV0IGVtcHR5Tm9kZSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdlbC10YWJsZV9fZW1wdHktYmxvY2snKVswXVxyXG4gIGlmIChjdXJyZW50RGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBlbXB0eU5vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gIH1cclxuICAvLyB0aGlzLnZpZXdlci5fY29udGFpbmVyLmFwcGVuZENoaWxkKGJveClcclxuICBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChib3gpXHJcbiAgbGV0IGhlYWRlcldyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2hlYWRlci13cmFwcGVyJylbMF1cclxuICBsZXQgYm9keVdyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2JvZHktd3JhcHBlcicpWzBdXHJcbiAgYm9keVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIGhlYWRlcldyYXBwZXIuc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnRcclxuICB9KTtcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LnRpdGxlLnN0eWxlLmhlaWdodCA9ICc0MHB4J1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICc2NSUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICc4MCUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnN0eWxlLmhlaWdodCA9ICdjYWxjKDEwMCUgLSA0MHB4KSdcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuZm9vdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcblxyXG4gIGJvZHlXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAke2hlYWRlcldyYXBwZXIub2Zmc2V0SGVpZ2h0fXB4KWBcclxuICBsZXQgcGFnaW5hdGlvbkVsbSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdpbmF0aW9uJylbMF1cclxuICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgdG90YWwsIHBhZ2VTaXplLCBwYWdlLCAocGFnZUluZGV4KSA9PiB7XHJcbiAgICBwYWdlID0gcGFnZUluZGV4XHJcbiAgICBjdXJyZW50RGF0YSA9IGRhdGFBcnJheUZpbHRlci5zbGljZShwYWdlU2l6ZSAqIChwYWdlIC0gMSksIHBhZ2VTaXplICogcGFnZSlcclxuICAgIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQoKVxyXG4gICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgaWYgKGN1cnJlbnREYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICB9KTtcclxuICBjb25zdCBzZWFyY2ggPSAoKSA9PiB7XHJcbiAgICBsZXQgaW5wdXQgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VhcmNoLWJveCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgbGV0IHN0ciA9IHRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzW2tleV0gKyAnJ1xyXG4gICAgICAgIGlmIChzdHIuaW5kZXhPZihpbnB1dC52YWx1ZSkgIT0gLTEpIHtcclxuICAgICAgICAgIGFycmF5LnB1c2godGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRhdGFBcnJheUZpbHRlciA9IGFycmF5XHJcbiAgICB0b3RhbCA9IGRhdGFBcnJheUZpbHRlci5sZW5ndGhcclxuICAgIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG4gICAgaWYgKGN1cnJlbnREYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICAgIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQoKVxyXG4gICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIHRvdGFsLCBwYWdlU2l6ZSwgcGFnZSwgKHBhZ2VJbmRleCkgPT4ge1xyXG4gICAgICBwYWdlID0gcGFnZUluZGV4XHJcbiAgICAgIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG4gICAgICBsZXQgdHJzRWxtID0gY3JlYXRlVGFibGVDb250ZW50KClcclxuICAgICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgICBpZiAoY3VycmVudERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICBlbXB0eU5vZGUuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VhcmNoJylbMF0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICBwYWdlU2l6ZSA9IDIwXHJcbiAgICBwYWdlID0gMVxyXG4gICAgc2VhcmNoKClcclxuICB9KVxyXG4gIGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdleHBvcnQnKVswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGxldCBkYXRhID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRhdGEucHVzaCh7IC4uLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLCAncG9zaXRpb25zJzogSlNPTi5zdHJpbmdpZnkodGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmdlb21ldHJ5LnBvc2l0aW9ucykgfSlcclxuICAgIH1cclxuICAgIHRoYXQuZXhwb3J0RXhjZWwoZGF0YSlcclxuICB9KVxyXG59XHJcblxyXG5leHBvcnQgeyBvcGVuQWxsTm9kZUxpc3QgfSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXBLQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Shp/openAllNodeList.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Shp/openNodeListById.js": -/*!**********************************************!*\ - !*** ./src/Obj/Base/Shp/openNodeListById.js ***! - \**********************************************/ -/*! exports provided: openNodeListById */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openNodeListById\", function() { return openNodeListById; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _BaseDialog_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../BaseDialog/index */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n\n\n\n\nvar _DialogObject;\nvar openNodeListById = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(that, id) {\n var currentData, createTableContent, flag, _i2, trsElm, box, talbeElm, headerElm, hcolgroupElm, theadElm, bodyElm, bcolgroupElm, i, key, tbodyElm, tabsElm, tabPaneElm, _i3, url, _tabPaneElm, tabsNode, tabContentPane, _i4, headerWrapper, bodyWrapper;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_DialogObject && !_DialogObject.isDestroy) {\n _DialogObject.close();\n _DialogObject = null;\n }\n currentData = [];\n createTableContent = function createTableContent() {\n var trsElm = '';\n for (var _i = 0; _i < currentData.length; _i++) {\n var trElm = '';\n var tdElm = '';\n if ('fid' in currentData[_i].properties) {\n tdElm = \"
    \").concat(currentData[_i].properties.fid, \"
    \");\n }\n for (var key in currentData[_i].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n tdElm = tdElm + \"
    \").concat(currentData[_i].properties[key], \"
    \");\n }\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n };\n flag = false;\n _i2 = 0;\n case 5:\n if (!(_i2 < that.geojson.features.length)) {\n _context.next = 13;\n break;\n }\n if (!(that.geojson.features[_i2].properties.id && that.geojson.features[_i2].properties.id == id)) {\n _context.next = 10;\n break;\n }\n currentData = [that.geojson.features[_i2]];\n flag = true;\n return _context.abrupt(\"break\", 13);\n case 10:\n _i2++;\n _context.next = 5;\n break;\n case 13:\n if (flag) {\n _context.next = 16;\n break;\n }\n window.ELEMENT && window.ELEMENT.Message({\n message: '数据不存在!',\n type: 'warning',\n duration: 1500\n });\n return _context.abrupt(\"return\");\n case 16:\n _context.next = 18;\n return new _BaseDialog_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"](that.viewer._container, {\n title: id,\n left: '17%',\n top: '100px'\n });\n case 18:\n _DialogObject = _context.sent;\n _context.next = 21;\n return _DialogObject.init();\n case 21:\n trsElm = createTableContent(that);\n box = document.createElement('div');\n box.style.height = '100%';\n talbeElm = '
    ';\n headerElm = '
    ';\n hcolgroupElm = '';\n theadElm = '';\n bodyElm = '
    ';\n bcolgroupElm = '';\n i = 1; // thead\n if ('fid' in that.geojson.features[0].properties) {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n for (key in that.geojson.features[0].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n }\n //tbody\n tbodyElm = '';\n tbodyElm = tbodyElm + trsElm + '';\n hcolgroupElm = hcolgroupElm + '';\n bcolgroupElm = bcolgroupElm + '';\n theadElm = theadElm + '';\n headerElm = headerElm + hcolgroupElm + theadElm + '
    fid
    \").concat(key, \"
    ';\n bodyElm = bodyElm + bcolgroupElm + tbodyElm + '
    ';\n talbeElm = talbeElm + headerElm + bodyElm + '';\n tabsElm = \"\\n \\n \\n \".concat(talbeElm + '
    ', \"\\n
    \\n \");\n if (currentData[0].content && currentData[0].content.richTextContent) {\n tabPaneElm = \"\\n \\n \".concat(currentData[0].content.richTextContent, \"\\n \\n \");\n tabsElm = tabsElm + tabPaneElm;\n }\n if (currentData[0].content && currentData[0].content.link && currentData[0].content.link.content && currentData[0].content.link.content.length > 0) {\n for (_i3 = 0; _i3 < currentData[0].content.link.content.length; _i3++) {\n url = currentData[0].content.link.content[_i3].url;\n _tabPaneElm = \"\\n \\n \\n \\n \");\n tabsElm = tabsElm + _tabPaneElm;\n }\n }\n tabsElm = tabsElm + '
    ';\n box.innerHTML = tabsElm;\n // that.viewer._container.appendChild(box)\n _DialogObject.contentAppChild(box);\n new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('shp-list-id-tabs');\n tabsNode = box.getElementsByClassName('DIV-cy-tabs')[0];\n tabsNode.style.height = '100%';\n tabsNode.style.display = 'flex';\n tabsNode.style.flexDirection = 'column';\n tabsNode.getElementsByClassName('DIV-cy-tab-content')[0].style.flex = '1';\n tabContentPane = tabsNode.getElementsByClassName('DIV-cy-tab-content-pane');\n for (_i4 = 0; _i4 < tabContentPane.length; _i4++) {\n tabContentPane[_i4].style.height = '100%';\n }\n headerWrapper = box.getElementsByClassName('el-table__header-wrapper')[0];\n bodyWrapper = box.getElementsByClassName('el-table__body-wrapper')[0];\n bodyWrapper.addEventListener('scroll', function (e) {\n headerWrapper.scrollLeft = e.target.scrollLeft;\n });\n _DialogObject._element.title.style.height = '40px';\n _DialogObject._element.body.style.width = '65%';\n _DialogObject._element.body.style.height = '80%';\n _DialogObject._element.content.style.height = 'calc(100% - 40px)';\n _DialogObject._element.foot.style.display = 'none';\n bodyWrapper.style.height = \"calc(100% - \".concat(headerWrapper.offsetHeight, \"px)\");\n case 64:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function openNodeListById(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU2hwL29wZW5Ob2RlTGlzdEJ5SWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvU2hwL29wZW5Ob2RlTGlzdEJ5SWQuanM/ZjNkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9CYXNlRGlhbG9nL2luZGV4XCI7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5cclxubGV0IF9EaWFsb2dPYmplY3RcclxuXHJcbmNvbnN0IG9wZW5Ob2RlTGlzdEJ5SWQgPSBhc3luYyAodGhhdCwgaWQpID0+IHtcclxuICBpZiAoX0RpYWxvZ09iamVjdCAmJiAhX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgIF9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICB9XHJcbiAgbGV0IGN1cnJlbnREYXRhID0gW11cclxuICBjb25zdCBjcmVhdGVUYWJsZUNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICBsZXQgdHJzRWxtID0gJydcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRyRWxtID0gJzx0ciBjbGFzcz1cImVsLXRhYmxlX19yb3dcIj4nXHJcbiAgICAgIGxldCB0ZEVsbSA9ICcnXHJcbiAgICAgIGlmICgnZmlkJyBpbiBjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgdGRFbG0gPSBgPHRkIHJvd3NwYW49XCIxXCIgY29sc3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+JHtjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzLmZpZH08L2Rpdj48L3RkPmBcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gY3VycmVudERhdGFbaV0ucHJvcGVydGllcykge1xyXG4gICAgICAgIGlmIChrZXkgIT09ICdpZCcgJiYga2V5ICE9PSAnSUQnICYmIGtleSAhPT0gJ2ZpZCcpIHtcclxuICAgICAgICAgIHRkRWxtID0gdGRFbG0gKyBgPHRkIHJvd3NwYW49XCIxXCIgY29sc3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+JHtjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzW2tleV19PC9kaXY+PC90ZD5gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRyRWxtID0gdHJFbG0gKyB0ZEVsbSArICc8L3RyPidcclxuICAgICAgdHJzRWxtID0gdHJzRWxtICsgdHJFbG1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnNFbG1cclxuICB9XHJcbiAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAodGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLnByb3BlcnRpZXMuaWQgJiYgdGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLnByb3BlcnRpZXMuaWQgPT0gaWQpIHtcclxuICAgICAgY3VycmVudERhdGEgPSBbdGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldXVxyXG4gICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoIWZsYWcpIHtcclxuICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICBtZXNzYWdlOiAn5pWw5o2u5LiN5a2Y5Zyo77yBJyxcclxuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgdGl0bGU6IGlkLCBsZWZ0OiAnMTclJywgdG9wOiAnMTAwcHgnXHJcbiAgfSlcclxuICBhd2FpdCBfRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQodGhhdClcclxuXHJcbiAgbGV0IGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgYm94LnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIGxldCB0YWxiZUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGUgZWwtdGFibGUtLWZpdCBlbC10YWJsZS0tYm9yZGVyIGVsLXRhYmxlLS1zY3JvbGxhYmxlLXggZWwtdGFibGUtLXNjcm9sbGFibGUteSBlbC10YWJsZS0tZW5hYmxlLXJvdy1ob3ZlciBlbC10YWJsZS0tZW5hYmxlLXJvdy10cmFuc2l0aW9uXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPidcclxuICBsZXQgaGVhZGVyRWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9faGVhZGVyLXdyYXBwZXJcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2hlYWRlclwiIHN0eWxlPVwid2lkdGg6IDkzMHB4O1wiPidcclxuICBsZXQgaGNvbGdyb3VwRWxtID0gJzxjb2xncm91cD4nXHJcbiAgbGV0IHRoZWFkRWxtID0gJzx0aGVhZCBjbGFzcz1cImhhcy1ndXR0ZXJcIj48dHI+J1xyXG4gIGxldCBib2R5RWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9fYm9keS13cmFwcGVyIGlzLXNjcm9sbGluZy1ub25lXCIgc3R5bGU9XCJoZWlnaHQ6IDYyMHB4O1wiPjx0YWJsZSBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIiBib3JkZXI9XCIwXCIgY2xhc3M9XCJlbC10YWJsZV9fYm9keVwiIHN0eWxlPVwid2lkdGg6IDkxM3B4O1wiPidcclxuICBsZXQgYmNvbGdyb3VwRWxtID0gJzxjb2xncm91cD4nXHJcblxyXG4gIGxldCBpID0gMVxyXG4gIC8vIHRoZWFkXHJcbiAgaWYgKCdmaWQnIGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICBoY29sZ3JvdXBFbG0gPSBoY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgYDxjb2wgbmFtZT1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX1cIiB3aWR0aD1cIjE1MFwiPmBcclxuICAgIHRoZWFkRWxtID0gdGhlYWRFbG0gKyBgPHRoIGNvbHNwYW49XCIxXCIgcm93c3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICAgIGlzLWxlYWYgZWwtdGFibGVfX2NlbGxcIj48ZGl2IGNsYXNzPVwiY2VsbFwiPmZpZDwvZGl2PjwvdGg+YFxyXG4gICAgaSsrXHJcbiAgfVxyXG4gIGZvciAobGV0IGtleSBpbiB0aGF0Lmdlb2pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcykge1xyXG4gICAgaWYgKGtleSAhPT0gJ2lkJyAmJiBrZXkgIT09ICdJRCcgJiYga2V5ICE9PSAnZmlkJykge1xyXG4gICAgICBoY29sZ3JvdXBFbG0gPSBoY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgICBiY29sZ3JvdXBFbG0gPSBiY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgICB0aGVhZEVsbSA9IHRoZWFkRWxtICsgYDx0aCBjb2xzcGFuPVwiMVwiIHJvd3NwYW49XCIxXCIgY2xhc3M9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9ICAgICBpcy1sZWFmIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2tleX08L2Rpdj48L3RoPmBcclxuICAgICAgaSsrXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vdGJvZHlcclxuICBsZXQgdGJvZHlFbG0gPSAnPHRib2R5PidcclxuICB0Ym9keUVsbSA9IHRib2R5RWxtICsgdHJzRWxtICsgJzwvdGJvZHk+J1xyXG4gIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArICc8Y29sIG5hbWU9XCJndXR0ZXJcIiB3aWR0aD1cIjE3XCI+PC9jb2xncm91cD4nXHJcbiAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgJzwvY29sZ3JvdXA+J1xyXG4gIHRoZWFkRWxtID0gdGhlYWRFbG0gKyAnPC90cj48L3RoZWFkPidcclxuICBoZWFkZXJFbG0gPSBoZWFkZXJFbG0gKyBoY29sZ3JvdXBFbG0gKyB0aGVhZEVsbSArICc8L3RhYmxlPjwvZGl2PidcclxuICBib2R5RWxtID0gYm9keUVsbSArIGJjb2xncm91cEVsbSArIHRib2R5RWxtICsgJzwvdGFibGU+PC9kaXY+J1xyXG4gIHRhbGJlRWxtID0gdGFsYmVFbG0gKyBoZWFkZXJFbG0gKyBib2R5RWxtICsgJzwvZGl2PidcclxuXHJcbiAgbGV0IHRhYnNFbG0gPSBgXHJcbiAgICA8RElWLWN5LXRhYnMgaWQ9XCJzaHAtbGlzdC1pZC10YWJzXCI+XHJcbiAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5YiX6KGoXCI+XHJcbiAgICAgICR7dGFsYmVFbG0gKyAnPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj48L2Rpdj4nfVxyXG4gICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgYFxyXG4gIGlmIChjdXJyZW50RGF0YVswXS5jb250ZW50ICYmIGN1cnJlbnREYXRhWzBdLmNvbnRlbnQucmljaFRleHRDb250ZW50KSB7XHJcbiAgICBsZXQgdGFiUGFuZUVsbSA9IGBcclxuICAgICAgPERJVi1jeS10YWItcGFuZSBjbGFzcz1cImVkaXRvci1jb250ZW50LXZpZXdcIiBsYWJlbD1cIuWvjOaWh+acrOS/oeaBr1wiPlxyXG4gICAgICAke2N1cnJlbnREYXRhWzBdLmNvbnRlbnQucmljaFRleHRDb250ZW50fVxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIGBcclxuICAgIHRhYnNFbG0gPSB0YWJzRWxtICsgdGFiUGFuZUVsbVxyXG4gIH1cclxuICBpZiAoY3VycmVudERhdGFbMF0uY29udGVudCAmJiBjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsgJiYgY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnQgJiYgY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsuY29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdXJsID0gY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnRbaV0udXJsXHJcbiAgICAgIGxldCB0YWJQYW5lRWxtID0gYFxyXG4gICAgICA8RElWLWN5LXRhYi1wYW5lIGNsYXNzPVwiZWRpdG9yLWNvbnRlbnQtdmlld1wiIGxhYmVsPVwiJHtjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsuY29udGVudFtpXS5uYW1lfVwiPlxyXG4gICAgICA8aWZyYW1lIHNyYz1cIiR7dXJsfVwiPjwvaWZyYW1lPlxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIGBcclxuICAgICAgdGFic0VsbSA9IHRhYnNFbG0gKyB0YWJQYW5lRWxtXHJcbiAgICB9XHJcbiAgfVxyXG4gIHRhYnNFbG0gPSB0YWJzRWxtICsgJzwvRElWLWN5LXRhYnM+J1xyXG4gIGJveC5pbm5lckhUTUwgPSB0YWJzRWxtXHJcbiAgLy8gdGhhdC52aWV3ZXIuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChib3gpXHJcbiAgX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoYm94KVxyXG4gIG5ldyBjeV90YWJzKCdzaHAtbGlzdC1pZC10YWJzJylcclxuICBsZXQgdGFic05vZGUgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnRElWLWN5LXRhYnMnKVswXVxyXG4gIHRhYnNOb2RlLnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIHRhYnNOb2RlLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICB0YWJzTm9kZS5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7XHJcbiAgdGFic05vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnRElWLWN5LXRhYi1jb250ZW50JylbMF0uc3R5bGUuZmxleCA9ICcxJ1xyXG4gIGxldCB0YWJDb250ZW50UGFuZSA9IHRhYnNOb2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ0RJVi1jeS10YWItY29udGVudC1wYW5lJylcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkNvbnRlbnRQYW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB0YWJDb250ZW50UGFuZVtpXS5zdHlsZS5oZWlnaHQgPSAnMTAwJSdcclxuICB9XHJcbiAgbGV0IGhlYWRlcldyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2hlYWRlci13cmFwcGVyJylbMF1cclxuICBsZXQgYm9keVdyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2JvZHktd3JhcHBlcicpWzBdXHJcbiAgYm9keVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIGhlYWRlcldyYXBwZXIuc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnRcclxuICB9KTtcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LnRpdGxlLnN0eWxlLmhlaWdodCA9ICc0MHB4J1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICc2NSUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICc4MCUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnN0eWxlLmhlaWdodCA9ICdjYWxjKDEwMCUgLSA0MHB4KSdcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmZvb3Quc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG5cclxuICBib2R5V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBgY2FsYygxMDAlIC0gJHtoZWFkZXJXcmFwcGVyLm9mZnNldEhlaWdodH1weClgXHJcbn1cclxuXHJcbmV4cG9ydCB7IG9wZW5Ob2RlTGlzdEJ5SWQgfSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXBJQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Shp/openNodeListById.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/StraightArrowObject/_element.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/StraightArrowObject/_element.js ***! - \******************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n
    \\n
    \\n \\u6295\\u5F71\\u9762\\u79EF:\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u52A8\\u753B\\u65F6\\u957F\\n
    \\n \\n ms\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u52A8\\u753B\\n \\n
    \\n
    \\n \\u52A8\\u753B\\u91CD\\u590D\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n
    \\n
    \\n \\u9AD8\\u5EA6\\u6A21\\u5F0F\\n
    \\n
    \\n
    \\n Z\\u503C\\u7EDF\\u4E00\\u589E\\u52A0\\n
    \\n \\n m\\n \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\u7ECF\\u5EA6\\uFF08X\\uFF09
    \\n
    \\u7EAC\\u5EA6\\uFF08Y\\uFF09
    \\n
    \\u9AD8\\u5EA6\\uFF08Z\\uFF09
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n \\u9762\\u989C\\u8272\\n
    \\n
    \\n
    \\n \\u8FB9\\u7EBF\\u989C\\u8272\\n
    \\n
    \\n
    \\n \\u8FB9\\u7EBF\\u5BBD\\u5EA6\\n
    \\n \\n px\\n \\n
    \\n
    \\n
    \\n
    \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n
    \\n
    \\n
    \\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU3RyYWlnaHRBcnJvd09iamVjdC9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9TdHJhaWdodEFycm93T2JqZWN0L19lbGVtZW50LmpzPzgyNjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDYwJTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC11bml0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDBweDtcIj7mipXlvbHpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbnB1dC10ZXh0XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwiYXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VsZWN0LXVuaXRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqjnlLvml7bplb88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBibHVyXCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiNTAwXCIgbWF4PVwiOTk5OTk5OVwiIEBtb2RlbD1cInNwcmVhZFRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgNjAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWKqOeUuzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cInNwcmVhZFN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Yqo55S76YeN5aSNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibG9vcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxESVYtY3ktdGFicyBpZD1cImFzc2VtYmxlLW9iamVjdC1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLlsZ7mgKfkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuepuumXtOS/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBoZWlnaHQtbW9kZS1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPumrmOW6puaooeW8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWlnaHQtbW9kZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlrlgLznu5/kuIDlop7liqA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGhlaWdodFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlybSBoZWlnaHQtY29uZmlybVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDtcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUgc3BhdGlhbC1pbmZvLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+57uP5bqm77yIWO+8iTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7nuqzluqbvvIhZ77yJPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPumrmOW6pu+8iFrvvIk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIumdoumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumdouminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui+uee6v+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovrnnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTJcIiBzdHlsZT1cIndpZHRoOiA4MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5XCIgQG1vZGVsPVwibGluZVdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+azqOmjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTEoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+etvumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTIoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQTZHQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/StraightArrowObject/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/StraightArrowObject/index.js": -/*!***************************************************!*\ - !*** ./src/Obj/Base/StraightArrowObject/index.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/StraightArrowObject/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 直线箭头\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import EditParticle from \"../../ModelController/EditParticle\";\nvar StraightArrowObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 直线箭头\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.name {string} 名称\r\n * @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色\r\n * @param options.height {number} 高度\r\n * @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)\r\n * @param options.areaUnit='平方米' {string} 面积单位\r\n * @param options.line {object} 边框\r\n * @param options.line.width=2 {string} 边框宽\r\n * @param options.line.color=\"rgba(155, 155, 124, 0.89)\" {string} 边框颜色\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.spreadState=false {boolean} 动画\r\n * @param options.loop=false {loop} 动画重复\r\n * @param options.spreadTime=3000 {number} 动画持续时长(毫秒)\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param options.attribute.link={} {object} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function StraightArrowObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, StraightArrowObject);\n _this2 = _callSuper(this, StraightArrowObject, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"#ff000080\";\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.heightMode = options.heightMode || options.heightMode == 0 ? options.heightMode : 2;\n _this2.options.positions = options.positions || [];\n _this2.options.line = options.line || {};\n _this2.options.line.width = _this2.options.line.width || _this2.options.line.width === 0 ? _this2.options.line.width : 3;\n _this2.options.line.color = _this2.options.line.color || 'rgba(255, 0, 0, 1)';\n _this2.options['area-unit'] = options['area-unit'] || '平方米';\n _this2.entity;\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](_this2.sdk);\n _this2.operate = {};\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n _this2.options.loop = options.loop || false;\n _this2.options.spreadState = options.spreadState || false;\n _this2.spreadTime = options.spreadTime;\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n _this2.options.attribute.camera = _this2.options.attribute.camera || {};\n _this2.options.attribute.camera.content = _this2.options.attribute.camera.content || [];\n _this2.options.attribute.vr = _this2.options.attribute.vr || {};\n _this2.options.attribute.vr.content = _this2.options.attribute.vr.content || [];\n _this2.options.attribute.goods = _this2.options.attribute.goods || {};\n _this2.options.attribute.goods.content = _this2.options.attribute.goods.content || [];\n _this2.options.attributeType = options.attributeType || 'richText';\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.nodePoints = [];\n if (!_this2.options.positions || _this2.options.positions.length < 2) {\n _this2._error = '直线箭头需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n if (!_this2.options.height && _this2.options.height !== 0) {\n var height = _this2.options.positions[0].alt;\n for (var i = 1; i < _this2.options.positions.length; i++) {\n if (height < _this2.options.positions[i].alt) {\n height = _this2.options.positions[i].alt;\n }\n }\n _this2.options.height = height;\n }\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n StraightArrowObject.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(StraightArrowObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(StraightArrowObject, [{\n key: \"type\",\n get: function get() {\n return 'StraightArrowObject';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || 'rgba(255, 0, 0, 0.5)';\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {\n return;\n }\n var material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n this.entity.polygon.material = material;\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"heightMode\",\n get: function get() {\n return this.options.heightMode ? this.options.heightMode : 0;\n },\n set: function set(v) {\n var _this4 = this;\n this.entity.polygon.hierarchy = [];\n setTimeout(function () {\n _this4.options.heightMode = v || v == 0 ? v : 2;\n _this4.positionEditing = false;\n if (!_this4.entity) {\n return;\n }\n var heightModeName = '';\n StraightArrowObject.closeNodeEdit(_this4);\n var ground = false;\n var disabled = false;\n _this4.renewPositions();\n _this4.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this4.positionsH), [_this4.positionsH[0], _this4.positionsH[1]]);\n _this4.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this4.positionsH);\n switch (_this4.options.heightMode) {\n case '0':\n case 0:\n heightModeName = '海拔高度';\n break;\n case '1':\n case 1:\n heightModeName = '相对地表';\n break;\n case '2':\n case 2:\n ground = true;\n disabled = true;\n heightModeName = '依附模型';\n break;\n }\n _this4.label.ground = ground;\n _this4.entity.polyline.clampToGround = ground;\n _this4.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC, _this4.entity.polygon.perPositionHeight = !ground ? true : false;\n _this4._elms.heightMode && (_this4._elms.heightMode.value = heightModeName);\n _this4._elms.heightModeObject && _this4._elms.heightModeObject.legp_searchActive(heightModeName);\n if (disabled) {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.setAttribute('disabled', 'disabled');\n } else {\n _this4._elms.heightBox && (_this4._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n _this4._elms.heightConfirm && _this4._elms.heightConfirm.removeAttribute('disabled');\n }\n }, 50);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this5 = this;\n if (!v || isNaN(Number(v))) {\n this.options.height = 0;\n } else {\n this.options.height = Number(Number(v).toFixed(2));\n }\n var ground;\n if (this.heightMode == 2) {\n ground = true;\n } else {\n ground = false;\n }\n this.renewPositions();\n setTimeout(function () {\n _this5.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(_this5.positionsH);\n _this5.entity.polygon.perPositionHeight = !ground ? true : false;\n _this5.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this5.positionsH), [_this5.positionsH[0], _this5.positionsH[1]]);\n _this5.entity.polyline.clampToGround = !ground ? false : true;\n _this5.entity.polyline.arcType = !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC;\n }, 0);\n this._elms.alt && this._elms.alt.forEach(function (item) {\n item.innerHTML = _this5.options.height;\n });\n }\n }, {\n key: \"lineColor\",\n get: function get() {\n return this.options.line.color;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.line.color = v;\n if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {\n return;\n }\n this.entity.polyline.material = Cesium.Color.fromCssColorString(v);\n if (this._elms.lineColor) {\n this._elms.lineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this6.lineColor = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.lineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"lineWidth\",\n get: function get() {\n return this.options.line.width;\n },\n set: function set(v) {\n this.options.line.width = v;\n this.entity.polyline.width = v;\n this._elms.lineColor && this._elms.lineColor.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"area\",\n get: function get() {\n return this.options.area;\n },\n set: function set(v) {\n this.options.area = v;\n this._elms.area && this._elms.area.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"areaUnit\",\n get: function get() {\n return this.options['area-unit'];\n },\n set: function set(v) {\n this.options['area-unit'] = v;\n this._elms.areaUnit && this._elms.areaUnit.forEach(function (item) {\n item.value = v;\n });\n if (this.options.areaByMeter || this.options.areaByMeter == 0) {\n switch (v) {\n case '平方米':\n this.area = this.options.areaByMeter;\n break;\n case '平方千米':\n this.area = Number((this.options.areaByMeter / 1000000).toFixed(8));\n break;\n case '亩':\n this.area = Number((this.options.areaByMeter / 666.6666667).toFixed(4));\n break;\n case '公顷':\n this.area = Number((this.options.areaByMeter / 10000).toFixed(6));\n break;\n default:\n this.area = this.options.areaByMeter;\n }\n }\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this10 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this10.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this10.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this10.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this10._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"attributeType\",\n get: function get() {\n return this.options.attributeType;\n },\n set: function set(v) {\n this.options.attributeType = v;\n this._elms.attributeType && this._elms.attributeType.forEach(function (item) {\n item.value = v;\n });\n var attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content');\n for (var i = 0; i < attributeContent.length; i++) {\n if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) {\n attributeContent[i].style.display = 'block';\n } else {\n attributeContent[i].style.display = 'none';\n }\n }\n }\n }, {\n key: \"attributeLink\",\n get: function get() {\n return this.options.attribute.link.content;\n },\n set: function set(v) {\n var _this11 = this;\n this.options.attribute.link.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.link.content.length; i++) {\n var tr = \"\\n
    \\n
    \" + this.options.attribute.link.content[i].name + \"
    \\n
    \" + this.options.attribute.link.content[i].url + \"
    \\n
    \\n \\n \\n
    \\n
    \";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(index) {\n var table, tableContent, item, _loop, _i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this11.options.attribute.link.content;\n case 2:\n _this11.attributeLink = _context3.sent;\n table = _this11._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop(_i) {\n var height, _html, textareaElm, td, btn, n, _iterator, _step, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(index === _i)) {\n _context2.next = 36;\n break;\n }\n height = item[_i].offsetHeight;\n _html = \"\\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n \\n \\n
    \";\n item[_i].innerHTML = _html;\n textareaElm = item[_i].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this11.options.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this11.options.attribute.link.content[index].url;\n btn = item[_i].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context2.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context2.next = 14;\n break;\n }\n return _context2.abrupt(\"continue\", 32);\n case 14:\n _iterator = _createForOfIteratorHelper(btn[n].attributes);\n _context2.prev = 15;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop2$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n m = _step.value;\n if (!(m.name === '@click')) {\n _context.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _loop2);\n });\n _iterator.s();\n case 18:\n if ((_step = _iterator.n()).done) {\n _context2.next = 24;\n break;\n }\n return _context2.delegateYield(_loop2(), \"t0\", 20);\n case 20:\n if (!_context2.t0) {\n _context2.next = 22;\n break;\n }\n return _context2.abrupt(\"break\", 24);\n case 22:\n _context2.next = 18;\n break;\n case 24:\n _context2.next = 29;\n break;\n case 26:\n _context2.prev = 26;\n _context2.t1 = _context2[\"catch\"](15);\n _iterator.e(_context2.t1);\n case 29:\n _context2.prev = 29;\n _iterator.f();\n return _context2.finish(29);\n case 32:\n n++;\n _context2.next = 11;\n break;\n case 35:\n return _context2.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context2.stop();\n }\n }, _loop, null, [[15, 26, 29, 32]]);\n });\n _i = 0;\n case 8:\n if (!(_i < item.length)) {\n _context3.next = 15;\n break;\n }\n return _context3.delegateYield(_loop(_i), \"t0\", 10);\n case 10:\n if (!_context3.t0) {\n _context3.next = 12;\n break;\n }\n return _context3.abrupt(\"break\", 15);\n case 12:\n _i++;\n _context3.next = 8;\n break;\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee);\n }));\n function linkEdit(_x) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this11.options.attribute.link.content.splice(i, 1);\n _this11.attributeLink = _this11.options.attribute.link.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, \"\");\n var url = value.url && value.url.replace(/\\s/g, \"\");\n if (name && url) {\n _this11.options.attribute.link.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this11.attributeLink = _this11.options.attribute.link.content;\n },\n cancelEdit: function cancelEdit() {\n _this11.attributeLink = _this11.options.attribute.link.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect);\n fileElm.addEventListener('change', _fileSelect);\n }\n };\n var _fileSelect = function _fileSelect(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop3 = function _loop3(_i2) {\n var btn = item[_i2].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator2 = _createForOfIteratorHelper(btn[n].attributes),\n _step2;\n try {\n var _loop4 = function _loop4() {\n var m = _step2.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i2);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n for (var _i2 = 0; _i2 < item.length; _i2++) {\n _loop3(_i2);\n }\n }\n }, {\n key: \"attributeCamera\",\n get: function get() {\n return this.options.attribute.camera.content;\n },\n set: function set(v) {\n this.options.attribute.camera.content = v;\n }\n }, {\n key: \"attributeVr\",\n get: function get() {\n return this.options.attribute.vr.content;\n },\n set: function set(v) {\n var _this12 = this;\n this.options.attribute.vr.content = v;\n if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) {\n return;\n }\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this.options.attribute.vr.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this.options.attribute.vr.content.length; i++) {\n var tr = \"\\n
    \\n
    \" + this.options.attribute.vr.content[i].name + \"
    \\n
    \" + this.options.attribute.vr.content[i].url + \"
    \\n
    \\n \\n \\n
    \\n
    \";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n vrEdit: function () {\n var _vrEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(index) {\n var table, tableContent, item, _loop5, _i3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this12.options.attribute.vr.content;\n case 2:\n _this12.attributeVr = _context6.sent;\n table = _this12._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop5 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop5(_i3) {\n var height, _html2, textareaElm, td, btn, n, _iterator3, _step3, _loop6;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (!(index === _i3)) {\n _context5.next = 36;\n break;\n }\n height = item[_i3].offsetHeight;\n _html2 = \"\\n
    \\n \\n
    \\n
    \\n \\n
    \\n
    \\n \\n \\n
    \";\n item[_i3].innerHTML = _html2;\n textareaElm = item[_i3].getElementsByClassName('link-edit')[0];\n textareaElm.style.height = height - 10 + 'px';\n td = item[_i3].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this12.options.attribute.vr.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this12.options.attribute.vr.content[index].url;\n btn = item[_i3].getElementsByTagName('button');\n n = 0;\n case 11:\n if (!(n < btn.length)) {\n _context5.next = 35;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context5.next = 14;\n break;\n }\n return _context5.abrupt(\"continue\", 32);\n case 14:\n _iterator3 = _createForOfIteratorHelper(btn[n].attributes);\n _context5.prev = 15;\n _loop6 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _loop6() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _loop6$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n m = _step3.value;\n if (!(m.name === '@click')) {\n _context4.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i3);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context4.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _loop6);\n });\n _iterator3.s();\n case 18:\n if ((_step3 = _iterator3.n()).done) {\n _context5.next = 24;\n break;\n }\n return _context5.delegateYield(_loop6(), \"t0\", 20);\n case 20:\n if (!_context5.t0) {\n _context5.next = 22;\n break;\n }\n return _context5.abrupt(\"break\", 24);\n case 22:\n _context5.next = 18;\n break;\n case 24:\n _context5.next = 29;\n break;\n case 26:\n _context5.prev = 26;\n _context5.t1 = _context5[\"catch\"](15);\n _iterator3.e(_context5.t1);\n case 29:\n _context5.prev = 29;\n _iterator3.f();\n return _context5.finish(29);\n case 32:\n n++;\n _context5.next = 11;\n break;\n case 35:\n return _context5.abrupt(\"return\", 1);\n case 36:\n case \"end\":\n return _context5.stop();\n }\n }, _loop5, null, [[15, 26, 29, 32]]);\n });\n _i3 = 0;\n case 8:\n if (!(_i3 < item.length)) {\n _context6.next = 15;\n break;\n }\n return _context6.delegateYield(_loop5(_i3), \"t0\", 10);\n case 10:\n if (!_context6.t0) {\n _context6.next = 12;\n break;\n }\n return _context6.abrupt(\"break\", 15);\n case 12:\n _i3++;\n _context6.next = 8;\n break;\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee2);\n }));\n function vrEdit(_x2) {\n return _vrEdit.apply(this, arguments);\n }\n return vrEdit;\n }(),\n vrDelete: function vrDelete(i) {\n _this12.options.attribute.vr.content.splice(i, 1);\n _this12.attributeVr = _this12.options.attribute.vr.content;\n },\n confirmEdit: function confirmEdit(value, i) {\n var name = value.name && value.name.replace(/\\s/g, \"\");\n var url = value.url && value.url.replace(/\\s/g, \"\");\n if (name && url) {\n _this12.options.attribute.vr.content[i] = value;\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: '名称或链接不能为空!',\n type: 'warning',\n duration: 1500\n });\n }\n _this12.attributeVr = _this12.options.attribute.vr.content;\n },\n cancelEdit: function cancelEdit() {\n _this12.attributeVr = _this12.options.attribute.vr.content;\n },\n fileSelect: function fileSelect(value, i) {\n var fileElm = item[i].getElementsByClassName('file-select')[0];\n fileElm.click();\n fileElm.removeEventListener('change', _fileSelect2);\n fileElm.addEventListener('change', _fileSelect2);\n }\n };\n var _fileSelect2 = function _fileSelect2(event) {\n if (event.target.value) {\n var td = item[event.target.getAttribute('index')].getElementsByClassName('td');\n td[1].getElementsByClassName('input')[0].value = event.target.value;\n event.target.value = null;\n }\n };\n var _loop7 = function _loop7(_i4) {\n var btn = item[_i4].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator4 = _createForOfIteratorHelper(btn[n].attributes),\n _step4;\n try {\n var _loop8 = function _loop8() {\n var m = _step4.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i4);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n if (_loop8()) break;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n };\n for (var _i4 = 0; _i4 < item.length; _i4++) {\n _loop7(_i4);\n }\n }\n }, {\n key: \"attributeGoods\",\n get: function get() {\n return this.options.attribute.goods.content;\n },\n set: function set(v) {\n this.options.attribute.goods.content = v;\n }\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(state) {\n var _this13 = this;\n var _this, createSpatialInfoTableContent, contentElm, tabsElm, colorPicker, linecolorPicker, labelColorPicker, labellineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm, heightBoxElm, heightElm, heightConfirmElm, heightModeData, heightModeObject, heightModeDataLegpElm, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (!this._error) {\n _context7.next = 2;\n break;\n }\n return _context7.abrupt(\"return\");\n case 2:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context7.next = 61;\n break;\n }\n createSpatialInfoTableContent = function createSpatialInfoTableContent() {\n var tableElm = contentElm.getElementsByClassName('spatial-info-table')[0];\n var tBodyElm = tableElm.getElementsByClassName('table-body')[0];\n tBodyElm.innerHTML = '';\n _this._elms.lng = [];\n _this._elms.lngInput = [];\n _this._elms.lat = [];\n _this._elms.latInput = [];\n _this._elms.alt = [];\n _this._elms.altInput = [];\n var _loop9 = function _loop9(i) {\n var tr = document.createElement('div');\n tr.className = 'tr';\n tr.innerHTML = \"\\n
    \".concat(i + 1, \"
    \\n
    \\n
    \\n
    \\n \");\n var lngBox = tr.getElementsByClassName('lng')[0];\n var lng = document.createElement('span');\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n lngBox.appendChild(lng);\n var lngInput = document.createElement('input');\n lngInput.className = 'input';\n lngInput.type = 'number';\n lngInput.title = '';\n lngInput.min = -180;\n lngInput.max = 180;\n lngInput.value = _this.options.positions[i].lng.toFixed(8);\n var latBox = tr.getElementsByClassName('lat')[0];\n var lat = document.createElement('span');\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n latBox.appendChild(lat);\n var latInput = document.createElement('input');\n latInput.className = 'input';\n latInput.type = 'number';\n latInput.title = '';\n latInput.min = -90;\n latInput.max = 90;\n latInput.value = _this.options.positions[i].lat.toFixed(8);\n var altBox = tr.getElementsByClassName('alt')[0];\n var alt = document.createElement('span');\n alt.innerHTML = _this.height.toFixed(2);\n altBox.appendChild(alt);\n var altInput = document.createElement('input');\n altInput.className = 'input';\n altInput.type = 'number';\n altInput.title = '';\n altInput.min = -9999999;\n altInput.max = 999999999;\n altInput.value = _this.height.toFixed(2);\n lngBox.addEventListener('dblclick', function () {\n lngBox.innerHTML = '';\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.appendChild(lngInput);\n lngInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n StraightArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n lngInput.addEventListener('blur', function () {\n lngInput.value = Number(_this.options.positions[i].lng.toFixed(8));\n lngBox.innerHTML = '';\n lngBox.appendChild(lng);\n });\n lngInput.addEventListener('input', function () {\n _this.options.positions[i].lng = Number(Number(lngInput.value).toFixed(8));\n lng.innerHTML = _this.options.positions[i].lng.toFixed(8);\n _this.height = _this.height;\n });\n latBox.addEventListener('dblclick', function () {\n latBox.innerHTML = '';\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.appendChild(latInput);\n latInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n StraightArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n latInput.addEventListener('blur', function () {\n latInput.value = Number(_this.options.positions[i].lat.toFixed(8));\n latBox.innerHTML = '';\n latBox.appendChild(lat);\n });\n latInput.addEventListener('input', function () {\n _this.options.positions[i].lat = Number(Number(latInput.value).toFixed(8));\n lat.innerHTML = _this.options.positions[i].lat.toFixed(8);\n _this.height = _this.height;\n });\n altBox.addEventListener('dblclick', function () {\n if (_this.heightMode == 2) {\n return;\n }\n altBox.innerHTML = '';\n altInput.value = Number(_this.height.toFixed(2));\n altBox.appendChild(altInput);\n altInput.focus();\n if (_this.operate.positionEditing) {\n _this.positionEditing = false;\n }\n StraightArrowObject.closeNodeEdit(_this);\n _this.heightMode = _this.heightMode;\n });\n altInput.addEventListener('blur', function () {\n altInput.value = Number(_this.height.toFixed(2));\n altBox.innerHTML = '';\n altBox.appendChild(alt);\n });\n altInput.addEventListener('input', function () {\n _this.height = Number(Number(altInput.value).toFixed(2));\n alt.innerHTML = Number(_this.height.toFixed(2));\n });\n _this._elms.lng.push(lng);\n _this._elms.lngInput.push(lngInput);\n _this._elms.lat.push(lat);\n _this._elms.latInput.push(latInput);\n _this._elms.alt.push(alt);\n _this._elms.altInput.push(altInput);\n tBodyElm.appendChild(tr);\n };\n for (var i = 0; i < _this.options.positions.length; i++) {\n _loop9(i);\n }\n };\n _context7.next = 9;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.options, {\n title: '直线箭头属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this13.name = _this13.name.trim();\n if (!_this13.name) {\n _this13.name = '未命名对象';\n }\n _this13.options.label.position = {\n lng: _this13.label.position[0],\n lat: _this13.label.position[1],\n alt: _this13.label.position[2]\n };\n _this13.originalOptions = _this13.deepCopyObj(_this13.options);\n _this13._DialogObject.close();\n _this13.Dialog.confirmCallBack && _this13.Dialog.confirmCallBack(_this13.originalOptions);\n },\n resetCallBack: function resetCallBack() {\n _this13.reset();\n _this13.Dialog.resetCallBack && _this13.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this13.Dialog.removeCallBack && _this13.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n var spreadState = _this13.options.spreadState;\n _this13.positionEditing = false;\n setTimeout(function () {\n _this13.options.spreadState = spreadState;\n _this13.reset();\n }, 10);\n _this13.Dialog.closeCallBack && _this13.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this13.options.show = show;\n _this13.originalOptions.show = show;\n _this13.show = show;\n _this13.Dialog.showCallBack && _this13.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this13.positionEditing = !_this13.positionEditing;\n },\n // 二次编辑回调\n secondaryEditCallBack: function secondaryEditCallBack() {\n StraightArrowObject.nodeEdit(_this13, function () {\n createSpatialInfoTableContent();\n });\n }\n });\n case 9:\n this._DialogObject = _context7.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' assemble';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('assemble-object-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n linecolorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"lineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.lineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.lineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.lineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labellineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this13.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this13.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this13.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this13.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n StraightArrowObject.EventBinding(this, all_elm);\n this._elms.color = [colorPicker];\n this._elms.lineColor = [linecolorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [labellineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n heightElm = heightBoxElm.getElementsByClassName('height')[0];\n heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0];\n heightElm.value = 10;\n if (this.heightMode == 2) {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box disabled');\n heightConfirmElm && heightConfirmElm.setAttribute('disabled', 'disabled');\n } else {\n heightBoxElm && (heightBoxElm.className = 'input-number input-number-unit-1 height-box');\n heightConfirmElm && heightConfirmElm.removeAttribute('disabled');\n }\n heightModeData = [{\n name: '海拔高度',\n value: '海拔高度',\n key: '0'\n }, {\n name: '相对地表',\n value: '相对地表',\n key: '1'\n }, {\n name: '依附模型',\n value: '依附模型',\n key: '2'\n }];\n heightModeObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(this._DialogObject._element.content.getElementsByClassName('height-mode-box')[0], '.height-mode');\n if (!heightModeObject) {\n _context7.next = 58;\n break;\n }\n heightModeObject.legp_search(heightModeData);\n heightModeDataLegpElm = this._DialogObject._element.content.getElementsByClassName('height-mode')[0].getElementsByTagName('input')[0];\n i = 0;\n case 42:\n if (!(i < heightModeData.length)) {\n _context7.next = 50;\n break;\n }\n if (!(heightModeData[i].key == this.heightMode)) {\n _context7.next = 47;\n break;\n }\n heightModeDataLegpElm.value = heightModeData[i].value;\n heightModeObject.legp_searchActive(heightModeData[i].value);\n return _context7.abrupt(\"break\", 50);\n case 47:\n i++;\n _context7.next = 42;\n break;\n case 50:\n heightModeDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < heightModeData.length; _i5++) {\n if (heightModeData[_i5].value === heightModeDataLegpElm.value) {\n _this13.heightMode = heightModeData[_i5].key;\n break;\n }\n }\n });\n heightElm.addEventListener('input', function () {\n switch (_this13.heightMode) {\n case 0:\n case '0':\n break;\n case 1:\n case '1':\n break;\n case 2:\n case '2':\n break;\n }\n });\n this._elms.height = heightElm;\n this._elms.heightBox = heightBoxElm;\n this._elms.heightMode = heightModeDataLegpElm;\n this._elms.heightConfirm = heightConfirmElm;\n this._elms.heightModeObject = heightModeObject;\n heightConfirmElm.addEventListener('click', function () {\n if (_this13.operate.positionEditing) {\n _this13.positionEditing = false;\n _this13.height = _this13.height + Number(heightElm.value);\n } else {\n StraightArrowObject.closeNodeEdit(_this13);\n _this13.heightMode = _this13.heightMode;\n setTimeout(function () {\n _this13.height = _this13.height + Number(heightElm.value);\n }, 100);\n }\n });\n case 58:\n setTimeout(function () {\n _this13.attributeLink = _this13.options.attribute.link.content;\n _this13.attributeVr = _this13.options.attribute.vr.content;\n _this13.cameraSelect && _this13.cameraSelect();\n _this13.goodsSelect && _this13.goodsSelect();\n var tagData = _this13.attributeSelect;\n var attributeElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0];\n if (attributeElm) {\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(attributeElm, \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeSelectElm = _this13._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i6 = 0; _i6 < tagData.length; _i6++) {\n if (tagData[_i6].key === _this13.options.attributeType) {\n attributeSelectElm.value = tagData[_i6].value;\n legpObject.legp_searchActive(tagData[_i6].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i7 = 0; _i7 < tagData.length; _i7++) {\n if (tagData[_i7].value === attributeSelectElm.value) {\n _this13.attributeType = tagData[_i7].key;\n break;\n }\n }\n });\n }\n createSpatialInfoTableContent();\n var unitData = [{\n name: '平方米',\n value: '平方米'\n }, {\n name: '平方千米',\n value: '平方千米'\n }, {\n name: '亩',\n value: '亩'\n }, {\n name: '公顷',\n value: '公顷'\n }];\n var unitDataLegpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('input-select-unit-box')[0], \".input-select-unit\");\n if (unitDataLegpObject) {\n unitDataLegpObject.legp_search(unitData);\n var unitDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('input-select-unit')[0].getElementsByTagName('input')[0];\n unitDataLegpElm.value = _this13.options['area-unit'];\n for (var _i8 = 0; _i8 < unitData.length; _i8++) {\n if (unitData[_i8].value === unitDataLegpElm.value) {\n unitDataLegpObject.legp_searchActive(unitData[_i8].value);\n break;\n }\n }\n unitDataLegpElm.addEventListener('input', function () {\n for (var _i9 = 0; _i9 < unitData.length; _i9++) {\n if (unitData[_i9].value === unitDataLegpElm.value) {\n _this13.areaUnit = unitData[_i9].value;\n break;\n }\n }\n });\n }\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this13._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this13._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this13.labelFontFamily].value;\n for (var _i10 = 0; _i10 < fontData.length; _i10++) {\n if (fontData[_i10].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i10].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i11 = 0; _i11 < fontData.length; _i11++) {\n if (fontData[_i11].value === fontDataLegpElm.value) {\n _this13.labelFontFamily = fontData[_i11].key;\n break;\n }\n }\n });\n _this13._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context7.next = 62;\n break;\n case 61:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 62:\n case \"end\":\n return _context7.stop();\n }\n }, _callee3, this);\n }));\n function edit(_x3) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this14 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.lineColor = this.originalOptions.line.color;\n this.lineWidth = this.originalOptions.line.width;\n this.area = this.originalOptions.area;\n this.areaUnit = this.originalOptions['area-unit'];\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.attributeLink = this.options.attribute.link.content;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeVr = this.options.attribute.vr.content;\n this.attributeGoods = this.options.attribute.goods.content;\n this.cameraSelect && this.cameraSelect();\n this.goodsSelect && this.goodsSelect();\n for (var i = 0; i < this.options.positions.length; i++) {\n if (this._elms.lng && this._elms.lng[i]) {\n this._elms.lng[i].innerHTML = this.options.positions[i].lng.toFixed(8);\n }\n if (this._elms.lat && this._elms.lat[i]) {\n this._elms.lat[i].innerHTML = this.options.positions[i].lat.toFixed(8);\n }\n if (this._elms.alt && this._elms.alt[i]) {\n this._elms.alt[i].innerHTML = Number(this.options.height.toFixed(2));\n }\n }\n this.heightMode = this.heightMode;\n for (var _i12 = 0; _i12 < this.nodePoints.length; _i12++) {\n this.sdk.viewer.entities.remove(this.nodePoints[_i12]);\n }\n this.previous = null;\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n var spreadState = this.options.spreadState;\n this.removeAnimate();\n setTimeout(function () {\n _this14.loop = _this14.options.loop;\n _this14.spreadState = spreadState;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(_this14.sdk, _this14.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(_this14.sdk, _this14.options.id);\n }, 200);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n this.removeAnimate();\n this.sdk.viewer.entities.remove(this.entity);\n this.label && this.label.remove();\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context8.next = 9;\n return this.sdk.removeIncetance(this.options.id);\n case 9:\n _context8.next = 11;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 11:\n case \"end\":\n return _context8.stop();\n }\n }, _callee4, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"_addLink\",\n value: function _addLink() {\n // document.getElementsByClassName\n if (this._DialogObject._element.content.getElementsByClassName('link_add')[0] && this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '';\n this.attributeLink = this.options.attribute.link.content;\n } else {\n this.Dialog.clickAddLink && this.Dialog.clickAddLink();\n }\n }\n }, {\n key: \"addAttributeLink\",\n value: function addAttributeLink(link) {\n this.options.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.attributeLink = this.options.attribute.link.content;\n }\n }, {\n key: \"_addRr\",\n value: function _addRr() {\n if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value\n });\n this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = '';\n this.attributeVr = this.options.attribute.vr.content;\n } else {\n this.Dialog.clickAddVr && this.Dialog.clickAddVr();\n }\n }\n }, {\n key: \"addAttributeRr\",\n value: function addAttributeRr(vr) {\n this.options.attribute.vr.content.push({\n name: '全景图',\n url: vr\n });\n this.attributeVr = this.options.attribute.vr.content;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n ground,\n i,\n height,\n a,\n _i13,\n BoundingSphere,\n _args9 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n options = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {};\n if (!this._error) {\n _context9.next = 3;\n break;\n }\n return _context9.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_21__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context9.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context9.next = 18;\n break;\n }\n _context9.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context9.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context9.next = 51;\n break;\n case 25:\n positionArray = [];\n _context9.t0 = this.heightMode;\n _context9.next = _context9.t0 === 0 ? 29 : _context9.t0 === '0' ? 29 : _context9.t0 === 1 ? 31 : _context9.t0 === '1' ? 31 : _context9.t0 === 2 ? 33 : _context9.t0 === '2' ? 33 : 35;\n break;\n case 29:\n ground = false;\n return _context9.abrupt(\"break\", 35);\n case 31:\n ground = false;\n return _context9.abrupt(\"break\", 35);\n case 33:\n ground = true;\n return _context9.abrupt(\"break\", 35);\n case 35:\n if (!ground) {\n _context9.next = 48;\n break;\n }\n i = 0;\n case 37:\n if (!(i < this.options.positions.length)) {\n _context9.next = 46;\n break;\n }\n _context9.next = 40;\n return this.getClampToHeight(this.options.positions[i]);\n case 40:\n height = _context9.sent;\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 43:\n i++;\n _context9.next = 37;\n break;\n case 46:\n _context9.next = 49;\n break;\n case 48:\n if (this.positionsH) {\n for (_i13 = 0; _i13 < this.positionsH.length; _i13++) {\n positionArray.push(this.positionsH[_i13].x, this.positionsH[_i13].y, this.positionsH[_i13].z);\n }\n }\n case 49:\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 51:\n case \"end\":\n return _context9.stop();\n }\n }, _callee5, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 打开富文本框\r\n */\n )\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this15 = this;\n // var ue = UE.getEditor('app');\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this15.options.richTextContent = content;\n };\n }\n\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this.operate.positionEditing;\n },\n set: function set(status) {\n var _this16 = this;\n if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this.removeAnimate();\n var _this = this;\n this.event && this.event.destroy();\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.operate.positionEditing = status;\n if (status === true) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.label && (this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.9)\"));\n this.picking = false;\n var array = [];\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var center = Cesium.Cartesian3.fromDegrees((array[0][0] + array[1][0]) / 2, (array[0][1] + array[1][1]) / 2);\n for (var _i14 = 0; _i14 < positions.length; _i14++) {\n center.x - positions[_i14].x;\n disparity.push({\n x: center.x - positions[_i14].x,\n y: center.y - positions[_i14].y,\n z: center.z - positions[_i14].z\n });\n }\n var newpositions = [];\n this.event.mouse_move(function (movement, cartesian) {\n var position84 = _this16.cartesian3Towgs84(cartesian, _this16.sdk.viewer);\n newpositions = [];\n for (var _i15 = 0; _i15 < disparity.length; _i15++) {\n newpositions.push({\n x: cartesian.x - disparity[_i15].x,\n y: cartesian.y - disparity[_i15].y,\n z: cartesian.z - disparity[_i15].z\n });\n }\n // this.label.position = [position84.lng, position84.lat, position84.alt]\n _this16.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i16 = 0; _i16 < disparity.length; _i16++) {\n var pos3 = {\n x: cartesian.x - disparity[_i16].x,\n y: cartesian.y - disparity[_i16].y,\n z: cartesian.z - disparity[_i16].z\n };\n newpositions.push(pos3);\n _this16.options.positions[_i16] = _this16.cartesian3Towgs84(pos3, _this16.sdk.viewer);\n if (_this16._elms.lng && _this16._elms.lng[_i16]) {\n _this16._elms.lng[_i16].innerHTML = _this16.options.positions[_i16].lng.toFixed(8);\n }\n if (_this16._elms.lat && _this16._elms.lat[_i16]) {\n _this16._elms.lat[_i16].innerHTML = _this16.options.positions[_i16].lat.toFixed(8);\n }\n }\n _this16.positions = newpositions;\n _this16.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.positions)\n };\n _this16.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this16.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this16.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this16.positionEditing = false;\n } else {\n _this16.event.mouse_move(function () {});\n _this16.event.mouse_left(function () {});\n _this16.event.mouse_right(function () {});\n _this16.event.gesture_pinck_start(function () {});\n newpositions = [];\n for (var _i17 = 0; _i17 < disparity.length; _i17++) {\n var pos3 = {\n x: cartesian.x - disparity[_i17].x,\n y: cartesian.y - disparity[_i17].y,\n z: cartesian.z - disparity[_i17].z\n };\n newpositions.push(pos3);\n _this16.options.positions[_i17] = _this16.cartesian3Towgs84(pos3, _this16.sdk.viewer);\n if (_this16._elms.lng && _this16._elms.lng[_i17]) {\n _this16._elms.lng[_i17].innerHTML = _this16.options.positions[_i17].lng.toFixed(8);\n }\n if (_this16._elms.lat && _this16._elms.lat[_i17]) {\n _this16._elms.lat[_i17].innerHTML = _this16.options.positions[_i17].lat.toFixed(8);\n }\n }\n _this16.positions = newpositions;\n _this16.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this16.positions)\n };\n _this16.positionEditing = false;\n }\n });\n });\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var position84 = [];\n if (newpositions.length > 0) {\n for (var _i18 = 0; _i18 < newpositions.length; _i18++) {\n position84.push(_this.cartesian3Towgs84(newpositions[_i18], _this.sdk.viewer));\n }\n } else {\n for (var _i19 = 0; _i19 < positions.length; _i19++) {\n position84.push(_this.cartesian3Towgs84(positions[_i19], _this.sdk.viewer));\n }\n }\n _this.renewPositions(position84);\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, false);\n } else {\n if (this.label && this.label.entity && this.label.entity.billboard) {\n this.label.entity.billboard.color = Cesium.Color.fromCssColorString(\"rgba(255,255,255,1)\");\n }\n this.picking = true;\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.destroy();\n }\n this.tip && this.tip.destroy();\n if (!this.previous) {\n this.previous = {\n positions: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions)\n };\n } else {\n this.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.previous.positions);\n }\n var position84 = [];\n for (var _i20 = 0; _i20 < this.positions.length; _i20++) {\n position84.push(_this.cartesian3Towgs84(this.positions[_i20], _this.sdk.viewer));\n }\n this.renewPositions(position84);\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(_this.positionsH);\n }, true);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this.positionsH), [_this.positionsH[0], _this.positionsH[1]]);\n }, true);\n }\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(v) {\n var _Cesium$Cartesian;\n var cartesian = Cesium.Cartesian3.fromDegrees(v.position.lng, v.position.lat, v.position.alt);\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positions);\n var array = [];\n var disparity = [];\n for (var i = 0; i < positions.length; i++) {\n var position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n array.push([position.lng, position.lat]);\n }\n var firstposition = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n array.push([firstposition.lng, firstposition.lat]);\n var polygon = turf.polygon([array]);\n var centroid = turf.centroid(polygon);\n var center = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(centroid.geometry.coordinates));\n for (var _i21 = 0; _i21 < positions.length; _i21++) {\n disparity.push({\n x: center.x - positions[_i21].x,\n y: center.y - positions[_i21].y,\n z: center.z - positions[_i21].z\n });\n }\n var newpositions = [];\n for (var _i22 = 0; _i22 < disparity.length; _i22++) {\n newpositions.push({\n x: cartesian.x - disparity[_i22].x,\n y: cartesian.y - disparity[_i22].y,\n z: cartesian.z - disparity[_i22].z\n });\n }\n this.label.position = [v.position.lng, v.position.lat, v.position.alt];\n var positions84 = [];\n if (newpositions.length > 0) {\n for (var _i23 = 0; _i23 < newpositions.length; _i23++) {\n positions84.push(this.cartesian3Towgs84(newpositions[_i23], this.sdk.viewer));\n }\n }\n var arr = this.computeStraightArrow(positions84);\n if (arr.length == 0) {\n return;\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _this17 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var positions = this.computeStraightArrow(this.options.positions);\n if (positions.length == 0) {\n return;\n }\n var points = [[]];\n for (var i = 0; i < positions.length; i++) {\n var _position = this.cartesian3Towgs84(positions[i], this.sdk.viewer);\n points[0].push([_position.lng, _position.lat]);\n }\n var position = this.cartesian3Towgs84(positions[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = Cesium.Cartesian3.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1]);\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this17.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }, {\n key: \"spreadTime\",\n get: function get() {\n return this.options.spreadTime;\n },\n set: function set(v) {\n var spreadTime = Number(v);\n if (isNaN(spreadTime)) {\n spreadTime = 3000;\n } else if (spreadTime < 500) {\n spreadTime = 500;\n } else if (spreadTime > 9999999) {\n spreadTime = 9999999;\n }\n this.options.spreadTime = spreadTime;\n if (this.spreadState) {\n this.setSpreadProgressByTime();\n }\n this._elms.spreadTime && this._elms.spreadTime.forEach(function (item) {\n item.value = spreadTime;\n });\n }\n }, {\n key: \"loop\",\n get: function get() {\n return this.options.loop;\n },\n set: function set(v) {\n this.options.loop = v;\n if (this.TweenAnimate) {\n if (v) {\n this.TweenAnimate.repeat(Infinity);\n } else {\n this.TweenAnimate.repeat();\n }\n }\n this._elms.loop && this._elms.loop.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"spreadState\",\n get: function get() {\n return this.options.spreadState;\n },\n set: function set(v) {\n this.options.spreadState = v;\n if (this.TweenAnimate) {\n if (v) {\n this.lineEdit = false;\n this.setSpreadProgressByTime(this.TweenAnimate._object.distance / this.TweenAnimate._valuesEnd.distance * this.spreadTime);\n } else {\n this.TweenAnimate.pause();\n }\n } else {\n if (v) {\n this.setSpreadProgressByTime();\n }\n }\n this._elms.spreadState && this._elms.spreadState.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"setSpreadProgressByTime\",\n value: function setSpreadProgressByTime() {\n var _this18 = this;\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (!this.entity) {\n return;\n }\n var that = this;\n for (var i = 0; i < this.nodePoints.length; i++) {\n this.sdk.viewer.entities.remove(this.nodePoints[i]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n }\n var _getSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"getSdk\"])(),\n sdkP = _getSdk.sdkP,\n sdkD = _getSdk.sdkD;\n var thatP;\n if (sdkD && sdkP) {\n if (this.sdk === sdkD) {\n thatP = sdkP.entityMap.get(this.options.id);\n if (thatP && thatP.entity && thatP.entity.polygon && thatP.positionsH) {\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(thatP.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(thatP.positionsH), [thatP.positionsH[0], thatP.positionsH[1]]);\n }, false);\n }\n return;\n }\n }\n\n // this.entity.polygon.hierarchy = arr\n // this.entity.polyline.positions = lineArr\n\n var linePos84 = [];\n for (var _i24 = 0; _i24 < that.options.positions.length; _i24++) {\n linePos84.push([that.options.positions[_i24].lng, that.options.positions[_i24].lat]);\n }\n var line = turf.lineString(linePos84);\n var distanceArray = [];\n for (var _i25 = 1; _i25 < linePos84.length; _i25++) {\n var from = turf.point(linePos84[_i25]);\n var to = turf.point(linePos84[_i25 - 1]);\n var d = turf.distance(from, to, {\n units: 'kilometers'\n });\n var od = distanceArray[distanceArray.length - 1] || 0;\n distanceArray.push(od + d);\n }\n var distance = turf.length(line, {\n units: 'kilometers'\n });\n var timeRatio = time / this.spreadTime;\n var m = 0;\n this.TweenAnimate = new TWEEN.Tween({\n distance: distance * timeRatio\n }).to({\n distance: distance\n }, this.spreadTime - time).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop ? Infinity : 0).onRepeat(function () {\n if (time) {\n _this18.setSpreadProgressByTime();\n } else {}\n }).onUpdate(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n if (!(_this18.TweenAnimate._duration == Infinity)) {\n _context10.next = 2;\n break;\n }\n return _context10.abrupt(\"return\");\n case 2:\n m++;\n if (_this18.sdk.viewer) {\n _context10.next = 6;\n break;\n }\n _this18.removeAnimate();\n return _context10.abrupt(\"return\");\n case 6:\n setSpread(r);\n case 7:\n case \"end\":\n return _context10.stop();\n }\n }, _callee6);\n }));\n return function (_x4, _x5) {\n return _ref.apply(this, arguments);\n };\n }()).onStart(function () {\n _this18.options.spreadState = true;\n _this18._elms.spreadState && _this18._elms.spreadState.forEach(function (item) {\n item.checked = true;\n });\n }).onComplete(function (d) {\n _this18.removeAnimate();\n });\n if (this.spreadState) {\n this.TweenAnimate.start();\n } else {\n setSpread({\n distance: distance * timeRatio\n });\n }\n function setSpread(_x6) {\n return _setSpread.apply(this, arguments);\n }\n function _setSpread() {\n _setSpread = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee7(v) {\n var index, _i26, positions, _i27, sliced, coordinates;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee7$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n if (that.show) {\n _context11.next = 2;\n break;\n }\n return _context11.abrupt(\"return\");\n case 2:\n index = 2;\n _i26 = distanceArray.length - 2;\n case 4:\n if (!(_i26 >= 0)) {\n _context11.next = 12;\n break;\n }\n if (!(v.distance >= distanceArray[_i26])) {\n _context11.next = 9;\n break;\n }\n index = index + _i26 + 1;\n if (index > that.options.positions.length - 1) {\n index = that.options.positions.length - 1;\n }\n return _context11.abrupt(\"break\", 12);\n case 9:\n _i26--;\n _context11.next = 4;\n break;\n case 12:\n positions = [];\n for (_i27 = 0; _i27 < index; _i27++) {\n positions[_i27] = _objectSpread({}, that.options.positions[_i27]);\n }\n if (v.distance) {\n _context11.next = 18;\n break;\n }\n positions[index] = {\n lng: positions[1].lng,\n lat: positions[1].lat\n };\n _context11.next = 24;\n break;\n case 18:\n _context11.next = 20;\n return turf.lineSliceAlong(line, 0, v.distance, {\n units: 'kilometers'\n });\n case 20:\n sliced = _context11.sent;\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]);\n positions[1].lng = coordinates[0];\n positions[1].lat = coordinates[1];\n case 24:\n // console.log('positions', positions)\n that.renewPositions(positions);\n case 25:\n case \"end\":\n return _context11.stop();\n }\n }, _callee7);\n }));\n return _setSpread.apply(this, arguments);\n }\n this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(that.positionsH);\n }, false);\n this.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]);\n }, false);\n }\n\n // 移除动画\n }, {\n key: \"removeAnimate\",\n value: function removeAnimate() {\n this.spreadState = false;\n if (this.TweenAnimate) {\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n this.renewPositions();\n this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positionsH);\n this.entity.polyline.positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.positionsH), [this.positionsH[0], this.positionsH[1]]);\n }\n }\n\n // 更新坐标\n }, {\n key: \"renewPositions\",\n value: function renewPositions(position84) {\n var _this19 = this;\n if (this._error || !this.sdk.viewer) {\n return;\n }\n var ground = false;\n var array = [];\n var positions = this.options.positions;\n if (position84) {\n positions = position84;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n this.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = this.computeStraightArrow(positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n var pos84 = [];\n for (var _i28 = 0; _i28 < positionsA.length; _i28++) {\n var _position2 = this.cartesian3Towgs84(positionsA[_i28], this.sdk.viewer);\n pos84.push(_position2);\n points[0].push([_position2.lng, _position2.lat]);\n }\n var position = this.cartesian3Towgs84(positionsA[0], this.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var height = 0;\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n switch (this.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n var fromDegreesArray2 = [];\n if (!ground && this.nodePoints.length == 0) {\n for (var _i29 = 0; _i29 < points[0].length; _i29++) {\n fromDegreesArray2.push(points[0][_i29][0], points[0][_i29][1], this.height + height);\n }\n this.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n this.label && (this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.height + height]);\n } else {\n this.positionsH = positionsA;\n setTimeout(function () {\n if (!_this19.sdk.viewer) {\n return;\n }\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this19.sdk.viewer.entities.values);\n _this19.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n _this19.label && (_this19.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height]);\n });\n }, 100);\n }\n\n // 计算投影面积\n if (!this.spreadState) {\n this.options.areaByMeter = this.computeArea(pos84);\n this.areaUnit = this.areaUnit;\n }\n return fromDegreesArray;\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n var positionsA = that.computeStraightArrow(that.options.positions);\n if (positionsA.length == 0) {\n return;\n }\n var points = [[]];\n for (var _i30 = 0; _i30 < positionsA.length; _i30++) {\n var _position3 = that.cartesian3Towgs84(positionsA[_i30], that.sdk.viewer);\n points[0].push([_position3.lng, _position3.lat]);\n }\n var position = that.cartesian3Towgs84(positionsA[0], that.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n // let centroid = turf.centroid(polygon);\n var centroid = turf.pointOnFeature(polygon);\n var ground;\n var height = 0;\n switch (that.options.heightMode) {\n case '0':\n case 0:\n ground = false;\n break;\n case '1':\n case 1:\n height = that.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(centroid.geometry.coordinates[0], centroid.geometry.coordinates[1])) || 0;\n ground = false;\n break;\n case '2':\n case 2:\n ground = true;\n break;\n }\n if (!that.options.label.position) {\n that.options.label.position = {\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1],\n alt: that.height + height\n };\n }\n var fromDegreesArray2 = [];\n for (var _i31 = 0; _i31 < points[0].length; _i31++) {\n fromDegreesArray2.push(points[0][_i31][0], points[0][_i31][1], that.height + height);\n }\n var material = Cesium.Color.fromCssColorString(that.options.color);\n if (that.sdk.viewer.scene.mode === 2) {\n ground = false;\n material = new Cesium.CustomColorMaterialSource({\n color: that.options.color\n });\n }\n that.options.label.ground = ground;\n that.positionsH = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2);\n that.entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n id: that.options.id,\n polygon: {\n hierarchy: !ground ? new Cesium.PolygonHierarchy(that.positionsH) : new Cesium.PolygonHierarchy(positionsA),\n perPositionHeight: !ground ? true : false,\n material: material,\n zIndex: that.sdk._entityZIndex\n },\n polyline: {\n positions: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.positionsH), [that.positionsH[0], that.positionsH[1]]),\n width: that.options.line.width,\n material: Cesium.Color.fromCssColorString(that.options.line.color),\n clampToGround: !ground ? false : true,\n arcType: !ground ? Cesium.ArcType.NONE : Cesium.ArcType.GEODESIC,\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n StraightArrowObject.createLabel(that);\n var pos84 = [];\n for (var _i32 = 0; _i32 < positionsA.length; _i32++) {\n pos84.push(that.cartesian3Towgs84(positionsA[_i32], that.sdk.viewer));\n }\n that.options.areaByMeter = that.computeArea(pos84);\n switch (that.options['area-unit']) {\n case '平方米':\n that.options.area = that.options.areaByMeter;\n break;\n case '平方千米':\n that.options.area = Number((that.options.areaByMeter / 1000000).toFixed(8));\n break;\n case '亩':\n that.options.area = Number((that.options.areaByMeter / 666.6666667).toFixed(4));\n break;\n case '公顷':\n that.options.area = Number((that.options.areaByMeter / 10000).toFixed(6));\n break;\n default:\n that.options.area = that.options.areaByMeter;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n that.spreadState = that.options.spreadState;\n }\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee8(that) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee8$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.label.position.lng, that.options.label.position.lat, that.options.label.position.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far,\n ground: that.options.label.ground\n });\n case 1:\n case \"end\":\n return _context12.stop();\n }\n }, _callee8);\n }));\n function createLabel(_x7) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }()\n }, {\n key: \"EventBinding\",\n value: function EventBinding(that, elements) {\n var _loop10 = function _loop10() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator5 = _createForOfIteratorHelper(elements[i].attributes),\n _step5;\n try {\n var _loop11 = function _loop11() {\n var m = _step5.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (that._elms[m.value]) {\n that._elms[m.value].push(elements[i]);\n } else {\n that._elms[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n _loop11();\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop10()) continue;\n }\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit(that) {\n var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n that.positionEditing = false;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createNodePoints = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee9() {\n var objectsToExclude, _i34, height, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee9$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.sdk.viewer.entities.values);\n _i34 = 0;\n case 2:\n if (!(_i34 < that.options.positions.length)) {\n _context13.next = 11;\n break;\n }\n _context13.next = 5;\n return that.getClampToHeight(that.options.positions[_i34], objectsToExclude);\n case 5:\n height = _context13.sent;\n entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i34,\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[_i34].lng, that.options.positions[_i34].lat, height),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.push(entity);\n case 8:\n _i34++;\n _context13.next = 2;\n break;\n case 11:\n case \"end\":\n return _context13.stop();\n }\n }, _callee9);\n }));\n return function createNodePoints() {\n return _ref2.apply(this, arguments);\n };\n }(); // for (let i = 0; i < that.options.positions.length; i++) {\n // let entity = that.sdk.viewer.entities.add({\n // name: 'node-secondary-edit-point',\n // index: i,\n // position: Cesium.Cartesian3.fromDegrees(that.options.positions[i].lng, that.options.positions[i].lat),\n // billboard: {\n // image: that.getSourceRootPath() + '/img/point.png',\n // width: 15,\n // height: 15,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // },\n // })\n // nodePoints.push(entity)\n // }\n that.removeAnimate();\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', that.sdk);\n that.event = new _Event_index__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var fromDegreesArray = [];\n for (var i = 0; i < that.options.positions.length; i++) {\n fromDegreesArray.push(that.options.positions[i].lng, that.options.positions[i].lat);\n }\n var moveEvent = function moveEvent(movement, cartesian) {\n if (selectPoint) {\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n if (that._elms.lng && that._elms.lng[selectPoint.index]) {\n that._elms.lng[selectPoint.index].innerHTML = that.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (that._elms.lat && that._elms.lat[selectPoint.index]) {\n that._elms.lat[selectPoint.index].innerHTML = that.options.positions[selectPoint.index].lat.toFixed(8);\n }\n that.renewPositions();\n }\n that.tip.setPosition(cartesian, movement.position ? movement.position.x : movement.endPosition.x, movement.position ? movement.position.y : movement.endPosition.y);\n };\n var leftEvent = function leftEvent(movement, cartesian) {\n moveEvent(movement, cartesian);\n var position84 = that.cartesian3Towgs84(cartesian, that.sdk.viewer);\n if (selectPoint) {\n var index = selectPoint.index;\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: index,\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[selectPoint.index].lng, that.options.positions[selectPoint.index].lat, position84.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.splice(selectPoint.index, 0, entity);\n selectPoint = null;\n that.tip.set_text('请选择一个顶点,右键取消');\n } else {\n var position = movement.position;\n if (!position) {\n position = {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n };\n }\n var pick = that.sdk.viewer.scene.pick(position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n originalPosition = that.cartesian3Towgs84(pick.id.position.getValue(), that.sdk.viewer);\n that.nodePoints.splice(pick.id.index, 1);\n that.sdk.viewer.entities.remove(pick.id);\n that.tip.set_text('左键确认,右键取消');\n }\n }\n that.renewPositions();\n };\n var rightEvent = function rightEvent() {\n that.event.mouse_move(function () {});\n that.event.mouse_left(function () {});\n that.event.mouse_right(function () {});\n that.event.gesture_pinck_start(function () {});\n if (selectPoint) {\n if (!originalPosition) {\n that.options.positions.pop();\n } else {\n that.options.positions[selectPoint.index] = originalPosition;\n }\n if (that._elms.lng && that._elms.lng[selectPoint.index]) {\n that._elms.lng[selectPoint.index].innerHTML = that.options.positions[selectPoint.index].lng.toFixed(8);\n }\n if (that._elms.lat && that._elms.lat[selectPoint.index]) {\n that._elms.lat[selectPoint.index].innerHTML = that.options.positions[selectPoint.index].lat.toFixed(8);\n }\n }\n that.heightMode = that.heightMode;\n that.previous = null;\n };\n that.entity.polyline.clampToGround = true;\n that.entity.polyline.arcType = Cesium.ArcType.GEODESIC;\n that.entity.polygon.perPositionHeight = false;\n that.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {\n var arr = that.computeStraightArrow(that.options.positions);\n return new Cesium.PolygonHierarchy(arr);\n }, false);\n that.entity.polyline.positions = new Cesium.CallbackProperty(function () {\n var arr = that.computeStraightArrow(that.options.positions);\n if (arr.length >= 3) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr), [arr[0], arr[1]]);\n } else {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(arr);\n }\n }, false);\n setTimeout(function () {\n that.event.mouse_left(leftEvent);\n that.event.mouse_right(rightEvent);\n that.event.mouse_move(moveEvent);\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n if (endTime - startTime >= 500) {\n rightEvent();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n var points = [[]];\n var pos84 = [];\n for (var _i33 = 0; _i33 < that.positionsH.length; _i33++) {\n var _position4 = that.cartesian3Towgs84(that.positionsH[_i33], that.sdk.viewer);\n pos84.push(_position4);\n points[0].push([_position4.lng, _position4.lat]);\n }\n var position = that.cartesian3Towgs84(that.positionsH[0], that.sdk.viewer);\n points[0].push([position.lng, position.lat]);\n var polygon = turf.polygon(points);\n var centroid = turf.pointOnFeature(polygon);\n var objectsToExclude = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(that.sdk.viewer.entities.values);\n setTimeout(function () {\n that.getClampToHeight({\n lng: centroid.geometry.coordinates[0],\n lat: centroid.geometry.coordinates[1]\n }, objectsToExclude).then(function (height) {\n that.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], height];\n });\n }, 200);\n createNodePoints();\n }, 200);\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit(that) {\n YJ.Measure.SetMeasureStatus(false);\n that.event && that.event.destroy();\n that.tip && that.tip.destroy();\n that.tip = null;\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n that.picking = true;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (StraightArrowObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvU3RyYWlnaHRBcnJvd09iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9TdHJhaWdodEFycm93T2JqZWN0L2luZGV4LmpzPzBhNGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOebtOe6v+eureWktFxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSBcIi4uLy4uL0VsZW1lbnQvcmljaFRleHRcIjtcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgTGFiZWxPYmplY3QgZnJvbSAnLi4vTGFiZWxPYmplY3QnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIGdldFNkaywgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbi8vIGltcG9ydCBFZGl0UGFydGljbGUgZnJvbSBcIi4uLy4uL01vZGVsQ29udHJvbGxlci9FZGl0UGFydGljbGVcIjtcclxuXHJcbmNsYXNzIFN0cmFpZ2h0QXJyb3dPYmplY3QgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOebtOe6v+eureWktFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+56S6L+makOiXj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9J3JnYmEoMjU1LCAwLCAwLCAwLjUpJyB7c3RyaW5nfSDpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuaGVpZ2h0TW9kZT0ye251bWJlcn0g6auY5bqm5qih5byP77yIMO+8mua1t+aLlOmrmOW6pu+8mzHvvJrnm7jlr7nlnLDooajvvJsy77ya5L6d6ZmE5qih5byP77yJXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXJlYVVuaXQ9J+W5s+aWueexsycge3N0cmluZ30g6Z2i56ev5Y2V5L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZSB7b2JqZWN0fSDovrnmoYZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5saW5lLndpZHRoPTIge3N0cmluZ30g6L655qGG5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGluZS5jb2xvcj1cInJnYmEoMTU1LCAxNTUsIDEyNCwgMC44OSlcIiB7c3RyaW5nfSDovrnmoYbpopzoibJcclxuICAgKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBvcHRpb25zLnBvc2l0aW9ucyDlv4XloavvvIznu4/nuqzluqblkozpq5jluqbnmoTliJfooajvvIzlgLzkuqTmm78gW3tsb24sbGF0LGFsdH0sLi4uXVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNwcmVhZFN0YXRlPWZhbHNlIHtib29sZWFufSDliqjnlLtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sb29wPWZhbHNlIHtsb29wfSDliqjnlLvph43lpI1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zcHJlYWRUaW1lPTMwMDAge251bWJlcn0g5Yqo55S75oyB57ut5pe26ZW/KOavq+enkilcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30ge29iamVjdH0g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCBcIiNmZjAwMDA4MFwiXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA9IChvcHRpb25zLmhlaWdodE1vZGUgfHwgb3B0aW9ucy5oZWlnaHRNb2RlID09IDApID8gb3B0aW9ucy5oZWlnaHRNb2RlIDogMlxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUud2lkdGggPSAoKHRoaXMub3B0aW9ucy5saW5lLndpZHRoIHx8IHRoaXMub3B0aW9ucy5saW5lLndpZHRoID09PSAwKSA/IHRoaXMub3B0aW9ucy5saW5lLndpZHRoIDogMylcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yID0gdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgfHwgJ3JnYmEoMjU1LCAwLCAwLCAxKSdcclxuICAgIHRoaXMub3B0aW9uc1snYXJlYS11bml0J10gPSBvcHRpb25zWydhcmVhLXVuaXQnXSB8fCAn5bmz5pa557GzJ1xyXG4gICAgdGhpcy5lbnRpdHlcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMub3BlcmF0ZSA9IHt9XHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMub3B0aW9ucy5sb29wID0gb3B0aW9ucy5sb29wIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSBvcHRpb25zLnNwcmVhZFN0YXRlIHx8IGZhbHNlXHJcbiAgICB0aGlzLnNwcmVhZFRpbWUgPSBvcHRpb25zLnNwcmVhZFRpbWVcclxuICAgIG9wdGlvbnMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwgPSB7XHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICBzaG93OiBvcHRpb25zLmxhYmVsLnNob3cgfHwgZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnQgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ciB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcyB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50IHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSA9IG9wdGlvbnMuYXR0cmlidXRlVHlwZSB8fCAncmljaFRleHQnXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IG9wdGlvbnMucmljaFRleHRDb250ZW50IHx8ICcnXHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucG9zaXRpb25zIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICfnm7Tnur/nrq3lpLTpnIDopoHkuKTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5fZXJyb3IsXHJcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmhlaWdodCAmJiB0aGlzLm9wdGlvbnMuaGVpZ2h0ICE9PSAwKSB7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaGVpZ2h0IDwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICAgIFN0cmFpZ2h0QXJyb3dPYmplY3QuY3JlYXRlKHRoaXMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnU3RyYWlnaHRBcnJvd09iamVjdCdcclxuICB9XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICB9XHJcbiAgc2V0IGNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHYgfHwgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJ1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSB8fCAhdGhpcy5lbnRpdHkucG9seWdvbikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21Db2xvck1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gbWF0ZXJpYWxcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodE1vZGUgPyB0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSA6IDBcclxuICB9XHJcbiAgc2V0IGhlaWdodE1vZGUodikge1xyXG4gICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBbXVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHRNb2RlID0gKHYgfHwgdiA9PSAwKSA/IHYgOiAyXHJcbiAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHRNb2RlTmFtZSA9ICcnXHJcbiAgICAgIFN0cmFpZ2h0QXJyb3dPYmplY3QuY2xvc2VOb2RlRWRpdCh0aGlzKVxyXG4gICAgICBsZXQgZ3JvdW5kID0gZmFsc2VcclxuICAgICAgbGV0IGRpc2FibGVkID0gZmFsc2VcclxuICAgICAgdGhpcy5yZW5ld1Bvc2l0aW9ucygpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFtcclxuICAgICAgICAuLi50aGlzLnBvc2l0aW9uc0gsXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNIWzBdLFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFsxXVxyXG4gICAgICBdXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zSFxyXG4gICAgICApXHJcbiAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfmtbfmi5Tpq5jluqYnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGhlaWdodE1vZGVOYW1lID0gJ+ebuOWvueWcsOihqCdcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICBoZWlnaHRNb2RlTmFtZSA9ICfkvp3pmYTmqKHlnosnXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFiZWwuZ3JvdW5kID0gZ3JvdW5kXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBncm91bmRcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9ICFncm91bmQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlICYmICh0aGlzLl9lbG1zLmhlaWdodE1vZGUudmFsdWUgPSBoZWlnaHRNb2RlTmFtZSlcclxuICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlT2JqZWN0ICYmICh0aGlzLl9lbG1zLmhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgaGVpZ2h0TW9kZU5hbWVcclxuICAgICAgKSlcclxuICAgICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggJiYgKHRoaXMuX2VsbXMuaGVpZ2h0Qm94LmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94IGRpc2FibGVkJyk7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtICYmIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggJiYgKHRoaXMuX2VsbXMuaGVpZ2h0Qm94LmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94Jyk7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtICYmIHRoaXMuX2VsbXMuaGVpZ2h0Q29uZmlybS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gIH1cclxuXHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICBpZiAoIXYgfHwgaXNOYU4oTnVtYmVyKHYpKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSBOdW1iZXIoTnVtYmVyKHYpLnRvRml4ZWQoMikpXHJcbiAgICB9XHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBpZiAodGhpcy5oZWlnaHRNb2RlID09IDIpIHtcclxuICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdW5kID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoaXMucG9zaXRpb25zSClcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9ICFncm91bmQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gW1xyXG4gICAgICAgIC4uLnRoaXMucG9zaXRpb25zSCxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uc0hbMF0sXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnNIWzFdXHJcbiAgICAgIF1cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9ICFncm91bmQgPyBmYWxzZSA6IHRydWVcclxuICAgICAgdGhpcy5lbnRpdHkucG9seWxpbmUuYXJjVHlwZSA9ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUNcclxuICAgIH0sIDApO1xyXG5cclxuICAgIHRoaXMuX2VsbXMuYWx0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuYWx0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGluZUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUuY29sb3IgPSB2XHJcbiAgICBpZiAoIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5IHx8ICF0aGlzLmVudGl0eS5wb2x5bGluZSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGluZUNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saW5lQ29sb3IgPSBjXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxpbmUud2lkdGhcclxuICB9XHJcbiAgc2V0IGxpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS53aWR0aCA9IHZcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLndpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgJiYgdGhpcy5fZWxtcy5saW5lQ29sb3IuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBhcmVhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hcmVhXHJcbiAgfVxyXG5cclxuICBzZXQgYXJlYSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXJlYSA9IHZcclxuICAgIHRoaXMuX2VsbXMuYXJlYSAmJiB0aGlzLl9lbG1zLmFyZWEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBhcmVhVW5pdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbJ2FyZWEtdW5pdCddXHJcbiAgfVxyXG4gIHNldCBhcmVhVW5pdCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnNbJ2FyZWEtdW5pdCddID0gdlxyXG4gICAgdGhpcy5fZWxtcy5hcmVhVW5pdCAmJiB0aGlzLl9lbG1zLmFyZWFVbml0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmFyZWFCeU1ldGVyIHx8IHRoaXMub3B0aW9ucy5hcmVhQnlNZXRlciA9PSAwKSB7XHJcbiAgICAgIHN3aXRjaCAodikge1xyXG4gICAgICAgIGNhc2UgJ+W5s+aWueexsyc6XHJcbiAgICAgICAgICB0aGlzLmFyZWEgPSB0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXJcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ+W5s+aWueWNg+exsyc6XHJcbiAgICAgICAgICB0aGlzLmFyZWEgPSBOdW1iZXIoKHRoaXMub3B0aW9ucy5hcmVhQnlNZXRlciAvIDEwMDAwMDApLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICfkuqknOlxyXG4gICAgICAgICAgdGhpcy5hcmVhID0gTnVtYmVyKCh0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXIgLyA2NjYuNjY2NjY2NykudG9GaXhlZCg0KSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ+WFrOmhtyc6XHJcbiAgICAgICAgICB0aGlzLmFyZWEgPSBOdW1iZXIoKHRoaXMub3B0aW9ucy5hcmVhQnlNZXRlciAvIDEwMDAwKS50b0ZpeGVkKDYpKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuYXJlYSA9IHRoaXMub3B0aW9ucy5hcmVhQnlNZXRlclxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBsYWJlbFNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGFiZWxTaG93ICYmIHRoaXMuX2VsbXMubGFiZWxTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRGYW1pbHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICB9XHJcblxyXG4gIHNldCBsYWJlbEZvbnRGYW1pbHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkgPSB2IHx8IDBcclxuICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuZm9udEZhbWlseSA9IHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5KVxyXG5cclxuICAgIGxldCBuYW1lID0gZ2V0Rm9udEZhbWlseU5hbWUodGhpcy5sYWJlbEZvbnRGYW1pbHkpIHx8ICcnXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSBuYW1lXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5jb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplICYmIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICB9XHJcbiAgc2V0IGxhYmVsU2NhbGVCeURpc3RhbmNlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgJiYgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxOZWFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbE5lYXIodikge1xyXG4gICAgbGV0IG5lYXIgPSB2XHJcbiAgICBpZiAobmVhciA+IHRoaXMubGFiZWxGYXIpIHtcclxuICAgICAgbmVhciA9IHRoaXMubGFiZWxGYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5sYWJlbC5uZWFyID0gbmVhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZhciAmJiB0aGlzLl9lbG1zLmxhYmVsRmFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IGZhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbExpbmVXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVXaWR0aCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoICYmIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFBpeGVsT2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gIH1cclxuICBzZXQgbGFiZWxQaXhlbE9mZnNldCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0ICYmIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgbGFiZWxMaW5lQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lQ29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpbmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSAncmdiYSgwLDI1NSwyNTUsMC41KSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3JbaV0gPSBsaW5lQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3YsIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0W2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXSA9IHZcclxuICAgIHRoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yID0gW3RoaXMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdLCB2XVxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZVxyXG4gIH1cclxuXHJcbiAgc2V0IGF0dHJpYnV0ZVR5cGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmF0dHJpYnV0ZVR5cGUgJiYgdGhpcy5fZWxtcy5hdHRyaWJ1dGVUeXBlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgICBsZXQgYXR0cmlidXRlQ29udGVudCA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50JylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlQ29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXR0cmlidXRlQ29udGVudFtpXS5jbGFzc05hbWUuaW5kZXhPZignYXR0cmlidXRlLWNvbnRlbnQtJyArIHYpID4gLTEpIHtcclxuICAgICAgICBhdHRyaWJ1dGVDb250ZW50W2ldLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGF0dHJpYnV0ZUNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZUxpbmsoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVMaW5rKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdlxyXG4gICAgaWYgKCF0aGlzLl9EaWFsb2dPYmplY3QgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCB8fCAhdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQgfHwgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ciA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0ubmFtZSArIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS51cmwgKyBgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImxpbmtFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+YFxyXG4gICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gICAgfVxyXG4gICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgbGV0IGZ1biA9IHtcclxuICAgICAgbGlua0VkaXQ6IGFzeW5jIChpbmRleCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpdGVtW2ldLm9mZnNldEhlaWdodFxyXG4gICAgICAgICAgICBsZXQgaHRtbCA9IGBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0IGxpbmstZWRpdFwiIHR5cGU9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgICAgICAgICAgIGl0ZW1baV0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgICAgICAgICBsZXQgdGV4dGFyZWFFbG0gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmstZWRpdCcpWzBdXHJcbiAgICAgICAgICAgIHRleHRhcmVhRWxtLnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSAxMCkgKyAncHgnXHJcbiAgICAgICAgICAgIGxldCB0ZCA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgICAgICB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaW5kZXhdLm5hbWVcclxuICAgICAgICAgICAgdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXSh7IG5hbWU6IHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUsIHVybDogdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSB9LCBpKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBsaW5rRGVsZXRlOiAoaSkgPT4ge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50LnNwbGljZShpLCAxKVxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBjb25maXJtRWRpdDogKHZhbHVlLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IG5hbWUgPSB2YWx1ZS5uYW1lICYmIHZhbHVlLm5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpXHJcbiAgICAgICAgbGV0IHVybCA9IHZhbHVlLnVybCAmJiB2YWx1ZS51cmwucmVwbGFjZSgvXFxzL2csIFwiXCIpXHJcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DmiJbpk77mjqXkuI3og73kuLrnqbrvvIEnLFxyXG4gICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgfSxcclxuICAgICAgY2FuY2VsRWRpdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVTZWxlY3QgPSAoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIGxldCB0ZCA9IGl0ZW1bZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnVuW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBnZXQgYXR0cmlidXRlQ2FtZXJhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICB9XHJcbiAgc2V0IGF0dHJpYnV0ZUNhbWVyYSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50ID0gdlxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZVZyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gIH1cclxuXHJcbiAgc2V0IGF0dHJpYnV0ZVZyKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudCA9IHZcclxuICAgIGlmICghdGhpcy5fRGlhbG9nT2JqZWN0IHx8ICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50IHx8IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LXZyJykubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC12cicpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRyID0gYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaV0ubmFtZSArIGA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRbaV0udXJsICsgYDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJ2ckVkaXRcIj7nvJbovpE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInZyRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+YFxyXG4gICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gICAgfVxyXG4gICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgbGV0IGZ1biA9IHtcclxuICAgICAgdnJFZGl0OiBhc3luYyAoaW5kZXgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gYXdhaXQgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtdnInKVsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgIGxldCBpdGVtID0gdGFibGVDb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChpbmRleCA9PT0gaSkge1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gaXRlbVtpXS5vZmZzZXRIZWlnaHRcclxuICAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dCBsaW5rLWVkaXRcIiB0eXBlPVwidGV4dFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29uZmlybUVkaXRcIj7noa7orqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJjYW5jZWxFZGl0XCI+5Y+W5raIPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICAgICAgbGV0IHRleHRhcmVhRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rLWVkaXQnKVswXVxyXG4gICAgICAgICAgICB0ZXh0YXJlYUVsbS5zdHlsZS5oZWlnaHQgPSAoaGVpZ2h0IC0gMTApICsgJ3B4J1xyXG4gICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFtpbmRleF0ubmFtZVxyXG4gICAgICAgICAgICB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgbGV0IGJ0biA9IGl0ZW1baV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXSh7IG5hbWU6IHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUsIHVybDogdGRbMV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSB9LCBpKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB2ckRlbGV0ZTogKGkpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgY29uZmlybUVkaXQ6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUubmFtZSAmJiB2YWx1ZS5uYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGxldCB1cmwgPSB2YWx1ZS51cmwgJiYgdmFsdWUudXJsLnJlcGxhY2UoL1xccy9nLCBcIlwiKVxyXG4gICAgICAgIGlmIChuYW1lICYmIHVybCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50W2ldID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgbWVzc2FnZTogJ+WQjeensOaIlumTvuaOpeS4jeiDveS4uuepuu+8gScsXHJcbiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICAgIH0sXHJcbiAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVTZWxlY3QgPSAoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIGxldCB0ZCA9IGl0ZW1bZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnVuW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKGkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhdHRyaWJ1dGVHb29kcygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIHNldCBhdHRyaWJ1dGVHb29kcyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmdvb2RzLmNvbnRlbnQgPSB2XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgIH1cclxuICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgbGV0IHBvc2l0aW9uc0EgPSB0aGF0LmNvbXB1dGVTdHJhaWdodEFycm93KHRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICBpZiAocG9zaXRpb25zQS5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBsZXQgcG9pbnRzID0gW1tdXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnNBLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVtpXSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgfVxyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBWzBdLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICBwb2ludHNbMF0ucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKTtcclxuICAgIC8vIGxldCBjZW50cm9pZCA9IHR1cmYuY2VudHJvaWQocG9seWdvbik7XHJcbiAgICBsZXQgY2VudHJvaWQgPSB0dXJmLnBvaW50T25GZWF0dXJlKHBvbHlnb24pO1xyXG5cclxuXHJcbiAgICBsZXQgZ3JvdW5kXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG5cclxuICAgIHN3aXRjaCAodGhhdC5vcHRpb25zLmhlaWdodE1vZGUpIHtcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgaGVpZ2h0ID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSkpIHx8IDBcclxuICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgZ3JvdW5kID0gdHJ1ZVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24pIHtcclxuICAgICAgdGhhdC5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBsYXQ6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLCBhbHQ6IHRoYXQuaGVpZ2h0ICsgaGVpZ2h0IH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHNbMF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChcclxuICAgICAgICBwb2ludHNbMF1baV1bMF0sXHJcbiAgICAgICAgcG9pbnRzWzBdW2ldWzFdLFxyXG4gICAgICAgIHRoYXQuaGVpZ2h0ICsgaGVpZ2h0XHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvcilcclxuICAgIGlmICh0aGF0LnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5jb2xvclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCA9IGdyb3VuZFxyXG4gICAgdGhhdC5wb3NpdGlvbnNIID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpXHJcblxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHBvbHlnb246IHtcclxuICAgICAgICBoaWVyYXJjaHk6ICFncm91bmQgPyBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnNIKSA6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShwb3NpdGlvbnNBKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogIWdyb3VuZCA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBtYXRlcmlhbDogbWF0ZXJpYWwsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhhdC5wb3NpdGlvbnNILCB0aGF0LnBvc2l0aW9uc0hbMF0sIHRoYXQucG9zaXRpb25zSFsxXV0sXHJcbiAgICAgICAgd2lkdGg6IHRoYXQub3B0aW9ucy5saW5lLndpZHRoLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5saW5lLmNvbG9yKSxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiAhZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIGFyY1R5cGU6ICFncm91bmQgPyBDZXNpdW0uQXJjVHlwZS5OT05FIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhhdC5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICBTdHJhaWdodEFycm93T2JqZWN0LmNyZWF0ZUxhYmVsKHRoYXQpXHJcblxyXG4gICAgbGV0IHBvczg0ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb3M4NC5wdXNoKHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zQVtpXSwgdGhhdC5zZGsudmlld2VyKSlcclxuICAgIH1cclxuICAgIHRoYXQub3B0aW9ucy5hcmVhQnlNZXRlciA9IHRoYXQuY29tcHV0ZUFyZWEocG9zODQpO1xyXG4gICAgc3dpdGNoICh0aGF0Lm9wdGlvbnNbJ2FyZWEtdW5pdCddKSB7XHJcbiAgICAgIGNhc2UgJ+W5s+aWueexsyc6XHJcbiAgICAgICAgdGhhdC5vcHRpb25zLmFyZWEgPSB0aGF0Lm9wdGlvbnMuYXJlYUJ5TWV0ZXJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5bmz5pa55Y2D57GzJzpcclxuICAgICAgICB0aGF0Lm9wdGlvbnMuYXJlYSA9IE51bWJlcigodGhhdC5vcHRpb25zLmFyZWFCeU1ldGVyIC8gMTAwMDAwMCkudG9GaXhlZCg4KSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5LqpJzpcclxuICAgICAgICB0aGF0Lm9wdGlvbnMuYXJlYSA9IE51bWJlcigodGhhdC5vcHRpb25zLmFyZWFCeU1ldGVyIC8gNjY2LjY2NjY2NjcpLnRvRml4ZWQoNCkpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ+WFrOmhtyc6XHJcbiAgICAgICAgdGhhdC5vcHRpb25zLmFyZWEgPSBOdW1iZXIoKHRoYXQub3B0aW9ucy5hcmVhQnlNZXRlciAvIDEwMDAwKS50b0ZpeGVkKDYpKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoYXQub3B0aW9ucy5hcmVhID0gdGhhdC5vcHRpb25zLmFyZWFCeU1ldGVyXHJcbiAgICB9XHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuXHJcbiAgICB0aGF0LnNwcmVhZFN0YXRlID0gdGhhdC5vcHRpb25zLnNwcmVhZFN0YXRlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGF0Lm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXIsXHJcbiAgICAgIGdyb3VuZDogdGhhdC5vcHRpb25zLmxhYmVsLmdyb3VuZCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVTcGF0aWFsSW5mb1RhYmxlQ29udGVudCgpIHtcclxuICAgICAgICBsZXQgdGFibGVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NwYXRpYWwtaW5mby10YWJsZScpWzBdXHJcbiAgICAgICAgbGV0IHRCb2R5RWxtID0gdGFibGVFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgdEJvZHlFbG0uaW5uZXJIVE1MID0gJydcclxuICAgICAgICBfdGhpcy5fZWxtcy5sbmcgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxuZ0lucHV0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5sYXQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmxhdElucHV0ID0gW11cclxuICAgICAgICBfdGhpcy5fZWxtcy5hbHQgPSBbXVxyXG4gICAgICAgIF90aGlzLl9lbG1zLmFsdElucHV0ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF90aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgICAgdHIuY2xhc3NOYW1lID0gJ3RyJ1xyXG4gICAgICAgICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+JHtpICsgMX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBsbmcgYWxpZ24tY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgbGF0IGFsaWduLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGFsdCBhbGlnbi1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICBgXHJcbiAgICAgICAgICBsZXQgbG5nQm94ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG5nJylbMF1cclxuICAgICAgICAgIGxldCBsbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcclxuICAgICAgICAgIGxuZy5pbm5lckhUTUwgPSAoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpXHJcbiAgICAgICAgICBsbmdCb3guYXBwZW5kQ2hpbGQobG5nKVxyXG4gICAgICAgICAgbGV0IGxuZ0lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxyXG4gICAgICAgICAgbG5nSW5wdXQuY2xhc3NOYW1lID0gJ2lucHV0J1xyXG4gICAgICAgICAgbG5nSW5wdXQudHlwZSA9ICdudW1iZXInXHJcbiAgICAgICAgICBsbmdJbnB1dC50aXRsZSA9ICcnXHJcbiAgICAgICAgICBsbmdJbnB1dC5taW4gPSAtMTgwXHJcbiAgICAgICAgICBsbmdJbnB1dC5tYXggPSAxODBcclxuICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZykudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBsYXRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsYXQnKVswXVxyXG4gICAgICAgICAgbGV0IGxhdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgbGF0LmlubmVySFRNTCA9IChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLnRvRml4ZWQoOClcclxuICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICBsZXQgbGF0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBsYXRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBsYXRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGxhdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGxhdElucHV0Lm1pbiA9IC05MFxyXG4gICAgICAgICAgbGF0SW5wdXQubWF4ID0gOTBcclxuICAgICAgICAgIGxhdElucHV0LnZhbHVlID0gKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KVxyXG5cclxuICAgICAgICAgIGxldCBhbHRCb3ggPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbHQnKVswXVxyXG4gICAgICAgICAgbGV0IGFsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxyXG4gICAgICAgICAgYWx0LmlubmVySFRNTCA9IChfdGhpcy5oZWlnaHQpLnRvRml4ZWQoMilcclxuICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgICBsZXQgYWx0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXHJcbiAgICAgICAgICBhbHRJbnB1dC5jbGFzc05hbWUgPSAnaW5wdXQnXHJcbiAgICAgICAgICBhbHRJbnB1dC50eXBlID0gJ251bWJlcidcclxuICAgICAgICAgIGFsdElucHV0LnRpdGxlID0gJydcclxuICAgICAgICAgIGFsdElucHV0Lm1pbiA9IC05OTk5OTk5XHJcbiAgICAgICAgICBhbHRJbnB1dC5tYXggPSA5OTk5OTk5OTlcclxuICAgICAgICAgIGFsdElucHV0LnZhbHVlID0gKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKVxyXG5cclxuICAgICAgICAgIGxuZ0JveC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbG5nQm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxuZ0lucHV0LnZhbHVlID0gTnVtYmVyKChfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxuZ0JveC5hcHBlbmRDaGlsZChsbmdJbnB1dClcclxuICAgICAgICAgICAgbG5nSW5wdXQuZm9jdXMoKVxyXG4gICAgICAgICAgICBpZiAoX3RoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFN0cmFpZ2h0QXJyb3dPYmplY3QuY2xvc2VOb2RlRWRpdChfdGhpcylcclxuICAgICAgICAgICAgX3RoaXMuaGVpZ2h0TW9kZSA9IF90aGlzLmhlaWdodE1vZGVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsbmdJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nKS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsbmdCb3guaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgbG5nQm94LmFwcGVuZENoaWxkKGxuZylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsbmdJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nID0gTnVtYmVyKE51bWJlcihsbmdJbnB1dC52YWx1ZSkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbG5nLmlubmVySFRNTCA9IF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IF90aGlzLmhlaWdodFxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBsYXRCb3guYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxhdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBsYXRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0KS50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgICBsYXRCb3guYXBwZW5kQ2hpbGQobGF0SW5wdXQpXHJcbiAgICAgICAgICAgIGxhdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBTdHJhaWdodEFycm93T2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgbGF0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCkudG9GaXhlZCg4KSlcclxuICAgICAgICAgICAgbGF0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGxhdEJveC5hcHBlbmRDaGlsZChsYXQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGF0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCA9IE51bWJlcihOdW1iZXIobGF0SW5wdXQudmFsdWUpLnRvRml4ZWQoOCkpXHJcbiAgICAgICAgICAgIGxhdC5pbm5lckhUTUwgPSBfdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBfdGhpcy5oZWlnaHRcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgYWx0Qm94LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuaGVpZ2h0TW9kZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsdEJveC5pbm5lckhUTUwgPSAnJ1xyXG4gICAgICAgICAgICBhbHRJbnB1dC52YWx1ZSA9IE51bWJlcigoX3RoaXMuaGVpZ2h0KS50b0ZpeGVkKDIpKVxyXG4gICAgICAgICAgICBhbHRCb3guYXBwZW5kQ2hpbGQoYWx0SW5wdXQpXHJcbiAgICAgICAgICAgIGFsdElucHV0LmZvY3VzKClcclxuICAgICAgICAgICAgaWYgKF90aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBTdHJhaWdodEFycm93T2JqZWN0LmNsb3NlTm9kZUVkaXQoX3RoaXMpXHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodE1vZGUgPSBfdGhpcy5oZWlnaHRNb2RlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgYWx0SW5wdXQudmFsdWUgPSBOdW1iZXIoKF90aGlzLmhlaWdodCkudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgYWx0Qm94LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGFsdEJveC5hcHBlbmRDaGlsZChhbHQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmhlaWdodCA9IE51bWJlcihOdW1iZXIoYWx0SW5wdXQudmFsdWUpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIGFsdC5pbm5lckhUTUwgPSBOdW1iZXIoX3RoaXMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sbmcucHVzaChsbmcpXHJcbiAgICAgICAgICBfdGhpcy5fZWxtcy5sbmdJbnB1dC5wdXNoKGxuZ0lucHV0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubGF0LnB1c2gobGF0KVxyXG4gICAgICAgICAgX3RoaXMuX2VsbXMubGF0SW5wdXQucHVzaChsYXRJbnB1dClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmFsdC5wdXNoKGFsdClcclxuICAgICAgICAgIF90aGlzLl9lbG1zLmFsdElucHV0LnB1c2goYWx0SW5wdXQpXHJcbiAgICAgICAgICB0Qm9keUVsbS5hcHBlbmRDaGlsZCh0cilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn55u057q/566t5aS05bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24gPSB7IGxuZzogdGhpcy5sYWJlbC5wb3NpdGlvblswXSwgbGF0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzFdLCBhbHQ6IHRoaXMubGFiZWwucG9zaXRpb25bMl0gfVxyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIGxldCBzcHJlYWRTdGF0ZSA9IHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZSA9IHNwcmVhZFN0YXRlXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgfSwgMTApO1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJhbnNsYXRpb25hbENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9ICF0aGlzLnBvc2l0aW9uRWRpdGluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8g5LqM5qyh57yW6L6R5Zue6LCDXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBTdHJhaWdodEFycm93T2JqZWN0Lm5vZGVFZGl0KHRoaXMsICgpID0+IHtcclxuICAgICAgICAgICAgY3JlYXRlU3BhdGlhbEluZm9UYWJsZUNvbnRlbnQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgYXNzZW1ibGUnXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlQ2FtZXJhID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmEuY29udGVudFxyXG5cclxuICAgICAgLy8g5Yib5bu65qCH562+6aG1XHJcbiAgICAgIGxldCB0YWJzRWxtID0gbmV3IGN5X3RhYnMoJ2Fzc2VtYmxlLW9iamVjdC1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxpbmVjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbExpbmVDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLFxyXG4gICAgICAgIGFscGhhOiB0cnVlLFxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLFxyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgU3RyYWlnaHRBcnJvd09iamVjdC5FdmVudEJpbmRpbmcodGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFtjb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5saW5lQ29sb3IgPSBbbGluZWNvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsYWJlbGxpbmVDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gW2xhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSBbbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJdXHJcblxyXG4gICAgICBsZXQgaGVpZ2h0Qm94RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LWJveCcpWzBdXHJcbiAgICAgIGxldCBoZWlnaHRFbG0gPSBoZWlnaHRCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0JylbMF1cclxuICAgICAgbGV0IGhlaWdodENvbmZpcm1FbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWlnaHQtY29uZmlybScpWzBdXHJcbiAgICAgIGhlaWdodEVsbS52YWx1ZSA9IDEwXHJcbiAgICAgIGlmICh0aGlzLmhlaWdodE1vZGUgPT0gMikge1xyXG4gICAgICAgIGhlaWdodEJveEVsbSAmJiAoaGVpZ2h0Qm94RWxtLmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94IGRpc2FibGVkJyk7XHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbSAmJiBoZWlnaHRDb25maXJtRWxtLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBoZWlnaHRCb3hFbG0gJiYgKGhlaWdodEJveEVsbS5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgICAgIGhlaWdodENvbmZpcm1FbG0gJiYgaGVpZ2h0Q29uZmlybUVsbS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGhlaWdodE1vZGVEYXRhID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAgdmFsdWU6ICfmtbfmi5Tpq5jluqYnLFxyXG4gICAgICAgICAga2V5OiAnMCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIHZhbHVlOiAn55u45a+55Zyw6KGoJyxcclxuICAgICAgICAgIGtleTogJzEnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S+nemZhOaooeWeiycsXHJcbiAgICAgICAgICBrZXk6ICcyJyxcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgICAgbGV0IGhlaWdodE1vZGVPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnaGVpZ2h0LW1vZGUtYm94J1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgJy5oZWlnaHQtbW9kZSdcclxuICAgICAgKVxyXG4gICAgICBpZiAoaGVpZ2h0TW9kZU9iamVjdCkge1xyXG4gICAgICAgIGhlaWdodE1vZGVPYmplY3QubGVncF9zZWFyY2goaGVpZ2h0TW9kZURhdGEpXHJcbiAgICAgICAgbGV0IGhlaWdodE1vZGVEYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVpZ2h0LW1vZGUnKVswXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHRNb2RlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLmtleSA9PSB0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZURhdGFMZWdwRWxtLnZhbHVlID0gaGVpZ2h0TW9kZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgaGVpZ2h0TW9kZU9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShcclxuICAgICAgICAgICAgICBoZWlnaHRNb2RlRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhlaWdodE1vZGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0TW9kZURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGhlaWdodE1vZGVEYXRhW2ldLnZhbHVlID09PSBoZWlnaHRNb2RlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlaWdodE1vZGUgPSBoZWlnaHRNb2RlRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaGVpZ2h0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICBjYXNlICcxJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCA9IGhlaWdodEVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ID0gaGVpZ2h0Qm94RWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRNb2RlID0gaGVpZ2h0TW9kZURhdGFMZWdwRWxtXHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRDb25maXJtID0gaGVpZ2h0Q29uZmlybUVsbVxyXG4gICAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0TW9kZU9iamVjdCA9IGhlaWdodE1vZGVPYmplY3RcclxuXHJcbiAgICAgICAgaGVpZ2h0Q29uZmlybUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCArIE51bWJlcihoZWlnaHRFbG0udmFsdWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgU3RyYWlnaHRBcnJvd09iamVjdC5jbG9zZU5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0TW9kZSA9IHRoaXMuaGVpZ2h0TW9kZVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgTnVtYmVyKGhlaWdodEVsbS52YWx1ZSlcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICBsZXQgdGFnRGF0YSA9IHRoaXMuYXR0cmlidXRlU2VsZWN0XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZUVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1zZWxlY3QtYm94JylbMF1cclxuICAgICAgICBpZiAoYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AoYXR0cmlidXRlRWxtLCBcIi5hdHRyaWJ1dGUtc2VsZWN0XCIpXHJcbiAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0ua2V5ID09PSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZSkge1xyXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0YWdEYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNyZWF0ZVNwYXRpYWxJbmZvVGFibGVDb250ZW50KClcclxuXHJcbiAgICAgICAgbGV0IHVuaXREYXRhID0gW3tcclxuICAgICAgICAgIG5hbWU6ICflubPmlrnnsbMnLFxyXG4gICAgICAgICAgdmFsdWU6ICflubPmlrnnsbMnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5bmz5pa55Y2D57GzJyxcclxuICAgICAgICAgIHZhbHVlOiAn5bmz5pa55Y2D57GzJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+S6qScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S6qSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICflhazpobcnLFxyXG4gICAgICAgICAgdmFsdWU6ICflhazpobcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgICAgbGV0IHVuaXREYXRhTGVncE9iamVjdCA9IGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtc2VsZWN0LXVuaXQtYm94JylbMF0sIFwiLmlucHV0LXNlbGVjdC11bml0XCIpXHJcbiAgICAgICAgaWYgKHVuaXREYXRhTGVncE9iamVjdCkge1xyXG4gICAgICAgICAgdW5pdERhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHVuaXREYXRhKVxyXG4gICAgICAgICAgbGV0IHVuaXREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdC11bml0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIHVuaXREYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMub3B0aW9uc1snYXJlYS11bml0J11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pdERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICB1bml0RGF0YUxlZ3BPYmplY3QubGVncF9zZWFyY2hBY3RpdmUodW5pdERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdW5pdERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHVuaXREYXRhW2ldLnZhbHVlID09PSB1bml0RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXJlYVVuaXQgPSB1bml0RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9udERhdGEgPSBnZXRGb250TGlzdCgpXHJcbiAgICAgICAgbGV0IGZvbnRPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICAgJ2ZvbnQtc2VsZWN0LWJveCdcclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAnLmZvbnQtc2VsZWN0J1xyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoZm9udE9iamVjdCkge1xyXG4gICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaChmb250RGF0YSlcclxuICAgICAgICAgIGxldCBmb250RGF0YUxlZ3BFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9udC1zZWxlY3QnKVswXVxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS52YWx1ZSA9IGZvbnREYXRhW3RoaXMubGFiZWxGb250RmFtaWx5XS52YWx1ZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZm9udE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZShmb250RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoZm9udERhdGFbaV0udmFsdWUgPT09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSBmb250RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgPSBbZm9udERhdGFMZWdwRWxtXVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZVxyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmNvbG9yXHJcbiAgICB0aGlzLmxpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuY29sb3JcclxuICAgIHRoaXMubGluZVdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGluZS53aWR0aFxyXG4gICAgdGhpcy5hcmVhID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuYXJlYVxyXG4gICAgdGhpcy5hcmVhVW5pdCA9IHRoaXMub3JpZ2luYWxPcHRpb25zWydhcmVhLXVuaXQnXVxyXG4gICAgdGhpcy5sYWJlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zaG93XHJcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gICAgdGhpcy5sYWJlbEZvbnRTaXplID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gICAgdGhpcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gICAgdGhpcy5sYWJlbE5lYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5uZWFyXHJcbiAgICB0aGlzLmxhYmVsRmFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICB0aGlzLmxhYmVsTGluZVdpZHRoID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZVdpZHRoXHJcbiAgICB0aGlzLmxhYmVsUGl4ZWxPZmZzZXQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldFxyXG4gICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVDb2xvclxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgdGhpcy5hdHRyaWJ1dGVDYW1lcmEgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmNhbWVyYS5jb250ZW50XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgICB0aGlzLmF0dHJpYnV0ZUdvb2RzID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kcy5jb250ZW50XHJcbiAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICB0aGlzLmdvb2RzU2VsZWN0ICYmIHRoaXMuZ29vZHNTZWxlY3QoKVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5fZWxtcy5sbmcgJiYgdGhpcy5fZWxtcy5sbmdbaV0pIHtcclxuICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0W2ldKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9lbG1zLmFsdCAmJiB0aGlzLl9lbG1zLmFsdFtpXSkge1xyXG4gICAgICAgIHRoaXMuX2VsbXMuYWx0W2ldLmlubmVySFRNTCA9IE51bWJlcih0aGlzLm9wdGlvbnMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhlaWdodE1vZGUgPSB0aGlzLmhlaWdodE1vZGVcclxuXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzID0gbnVsbFxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgIGxldCBzcHJlYWRTdGF0ZSA9IHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZVxyXG4gICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvb3AgPSB0aGlzLm9wdGlvbnMubG9vcFxyXG4gICAgICB0aGlzLnNwcmVhZFN0YXRlID0gc3ByZWFkU3RhdGVcclxuICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMucmVtb3ZlQW5pbWF0ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIF9hZGRMaW5rKCkge1xyXG4gICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0gJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXS52YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudC5wdXNoKHtcclxuICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICB1cmw6IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmtfYWRkJylbMF0udmFsdWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGlua19hZGQnKVswXS52YWx1ZSA9ICcnXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5EaWFsb2cuY2xpY2tBZGRMaW5rICYmIHRoaXMuRGlhbG9nLmNsaWNrQWRkTGluaygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBdHRyaWJ1dGVMaW5rKGxpbmspIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50LnB1c2goe1xyXG4gICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgdXJsOiBsaW5rXHJcbiAgICB9KVxyXG4gICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICB9XHJcblxyXG4gIF9hZGRScigpIHtcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2cl9hZGQnKVswXS52YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgICAgbmFtZTogJ+WFqOaZr+WbvicsXHJcbiAgICAgICAgdXJsOiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2cl9hZGQnKVswXS52YWx1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2cl9hZGQnKVswXS52YWx1ZSA9ICcnXHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVnIgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyLmNvbnRlbnRcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLkRpYWxvZy5jbGlja0FkZFZyICYmIHRoaXMuRGlhbG9nLmNsaWNrQWRkVnIoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXR0cmlidXRlUnIodnIpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudC5wdXNoKHtcclxuICAgICAgbmFtZTogJ+WFqOaZr+WbvicsXHJcbiAgICAgIHVybDogdnJcclxuICAgIH0pXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVZyID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52ci5jb250ZW50XHJcbiAgfVxyXG5cclxuICAvKipcclxuICog6aOe5YiwXHJcbiovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAodGhpcy5fZXJyb3IpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGxldCBncm91bmRcclxuICAgICAgc3dpdGNoICh0aGlzLmhlaWdodE1vZGUpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChncm91bmQpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBoZWlnaHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSlcclxuICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zSCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uc0gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcG9zaXRpb25BcnJheS5wdXNoKHRoaXMucG9zaXRpb25zSFtpXS54LCB0aGlzLnBvc2l0aW9uc0hbaV0ueSwgdGhpcy5wb3NpdGlvbnNIW2ldLnopXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMocG9zaXRpb25BcnJheSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICAvLyB2YXIgdWUgPSBVRS5nZXRFZGl0b3IoJ2FwcCcpO1xyXG4gICAgcmljaFRleHQub3Blbih0aGlzLm9wdGlvbnMuaWQsIHRoaXMub3B0aW9ucy5uYW1lLCB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50KVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gKGNvbnRlbnQpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkBkZXNjIOaJk+W8gOW5s+enu+WKn+iDvVxyXG4gICAqXHJcbiAgICogQG1lbWJlck9mIFNvdXJjZVxyXG4gICAqIEBwYXJhbSBzdGF0dXMge2Jvb2xlYW59XHJcbiAgICpcclxuICAgKiAqL1xyXG4gIHNldCBwb3NpdGlvbkVkaXRpbmcoc3RhdHVzKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkgfHwgIXRoaXMuc2RrIHx8ICF0aGlzLnNkay52aWV3ZXIgfHwgIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMub3BlcmF0ZS5wb3NpdGlvbkVkaXRpbmcgPSBzdGF0dXNcclxuXHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXMgPSB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjkpYCkpXHJcbiAgICAgIHRoaXMucGlja2luZyA9IGZhbHNlXHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNdXHJcbiAgICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY2VudGVyID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoKGFycmF5WzBdWzBdICsgYXJyYXlbMV1bMF0pIC8gMiwgKGFycmF5WzBdWzFdICsgYXJyYXlbMV1bMV0pIC8gMilcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54XHJcbiAgICAgICAgZGlzcGFyaXR5LnB1c2goe1xyXG4gICAgICAgICAgeDogY2VudGVyLnggLSBwb3NpdGlvbnNbaV0ueCxcclxuICAgICAgICAgIHk6IGNlbnRlci55IC0gcG9zaXRpb25zW2ldLnksXHJcbiAgICAgICAgICB6OiBjZW50ZXIueiAtIHBvc2l0aW9uc1tpXS56LFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbjg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzcGFyaXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgIHo6IGNhcnRlc2lhbi56IC0gZGlzcGFyaXR5W2ldLnosXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3Bvc2l0aW9uODQubG5nLCBwb3NpdGlvbjg0LmxhdCwgcG9zaXRpb244NC5hbHRdXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3Bhcml0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHBvczMgPSB7XHJcbiAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgIHk6IGNhcnRlc2lhbi55IC0gZGlzcGFyaXR5W2ldLnksXHJcbiAgICAgICAgICAgIHo6IGNhcnRlc2lhbi56IC0gZGlzcGFyaXR5W2ldLnosXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuZXdwb3NpdGlvbnMucHVzaChwb3MzKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zMywgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VsbXMubG5nW2ldLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbG1zLmxhdFtpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdC50b0ZpeGVkKDgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gbmV3cG9zaXRpb25zXHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgbmV3cG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zMyA9IHtcclxuICAgICAgICAgICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgICAgICAgICB5OiBjYXJ0ZXNpYW4ueSAtIGRpc3Bhcml0eVtpXS55LFxyXG4gICAgICAgICAgICAgICAgejogY2FydGVzaWFuLnogLSBkaXNwYXJpdHlbaV0ueixcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbmV3cG9zaXRpb25zLnB1c2gocG9zMylcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3MzLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nW2ldKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmxuZ1tpXS5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9lbG1zLmxhdCAmJiB0aGlzLl9lbG1zLmxhdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxtcy5sYXRbaV0uaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ld3Bvc2l0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzID0ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbjg0ID0gW11cclxuICAgICAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3cG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChuZXdwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uODQucHVzaChfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy5yZW5ld1Bvc2l0aW9ucyhwb3NpdGlvbjg0KVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoX3RoaXMucG9zaXRpb25zSClcclxuICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLmVudGl0eSAmJiB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsLmVudGl0eS5iaWxsYm9hcmQuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDEpYClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgaWYgKCF0aGlzLnByZXZpb3VzKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFsuLi50aGlzLnByZXZpb3VzLnBvc2l0aW9uc11cclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zaXRpb244NCA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbjg0LnB1c2goX3RoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5wb3NpdGlvbnNbaV0sIF90aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlbmV3UG9zaXRpb25zKHBvc2l0aW9uODQpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KF90aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIH0sIHRydWUpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5fdGhpcy5wb3NpdGlvbnNILCBfdGhpcy5wb3NpdGlvbnNIWzBdLCBfdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgICB9LCB0cnVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGUucG9zaXRpb25FZGl0aW5nXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgRXZlbnRCaW5kaW5nKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBpZiAoIWVsZW1lbnRzW2ldIHx8ICFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHsgdGhhdFttLnZhbHVlXSA9IGUudGFyZ2V0LmNoZWNrZWQgfSlcclxuICAgICAgICAgICAgICBlbGVtZW50c1tpXS5jaGVja2VkID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0Ll9lbG1zW20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhhdC5fZWxtc1ttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoYXQuX2VsbXNbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2hhbmdlJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudHlwZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJlbW92ZU5hbWUubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGxldCB2ZW50VHlwZSA9ICdpbnB1dCdcclxuICAgICAgICBpZiAoZWxlbWVudHNbaV0udGFnTmFtZSAhPSAnSU5QVVQnIHx8IGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgdmVudFR5cGUgPSAnY2hhbmdlJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKHZlbnRUeXBlLCAoZSkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBFdmVudC5sZW5ndGg7IHQrKykge1xyXG4gICAgICAgICAgICBFdmVudFt0XShlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbm9kZUVkaXQodGhhdCwgY2IgPSAoKSA9PiB7IH0pIHtcclxuICAgIHRoYXQucG9zaXRpb25FZGl0aW5nID0gZmFsc2VcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoYXQucmVtb3ZlQW5pbWF0ZSgpXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGF0LnRpcCA9IG5ldyBNb3VzZVRpcCgn6K+36YCJ5oup5LiA5Liq6aG254K577yM5Y+z6ZSu5Y+W5raIJywgdGhhdC5zZGspXHJcbiAgICAgIHRoYXQuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGF0LnNkaylcclxuICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgIGxldCBvcmlnaW5hbFBvc2l0aW9uXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG1vdmVFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAodGhhdC5fZWxtcy5sbmcgJiYgdGhhdC5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHRoYXQuX2VsbXMubG5nW3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXQuX2VsbXMubGF0ICYmIHRoYXQuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XSkge1xyXG4gICAgICAgICAgICB0aGF0Ll9lbG1zLmxhdFtzZWxlY3RQb2ludC5pbmRleF0uaW5uZXJIVE1MID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LnRvRml4ZWQoOClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoYXQucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0LnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uID8gbW92ZW1lbnQucG9zaXRpb24ueCA6IG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbiA/IG1vdmVtZW50LnBvc2l0aW9uLnkgOiBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBtb3ZlRXZlbnQobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgICBsZXQgcG9zaXRpb244NCA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICBsZXQgaW5kZXggPSBzZWxlY3RQb2ludC5pbmRleFxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0ubGF0LCBwb3NpdGlvbjg0LmFsdCksXHJcbiAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgZW50aXR5KVxyXG4gICAgICAgICAgc2VsZWN0UG9pbnQgPSBudWxsXHJcblxyXG4gICAgICAgICAgdGhhdC50aXAuc2V0X3RleHQoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gbW92ZW1lbnQucG9zaXRpb25cclxuICAgICAgICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBwaWNrID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLnBpY2socG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBwaWNrLmlkXHJcbiAgICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBpY2suaWQucG9zaXRpb24uZ2V0VmFsdWUoKSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUocGljay5pZClcclxuICAgICAgICAgICAgdGhhdC50aXAuc2V0X3RleHQoJ+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHRoYXQuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhhdC5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IG9yaWdpbmFsUG9zaXRpb25cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0Ll9lbG1zLmxuZyAmJiB0aGF0Ll9lbG1zLmxuZ1tzZWxlY3RQb2ludC5pbmRleF0pIHtcclxuICAgICAgICAgICAgdGhhdC5fZWxtcy5sbmdbc2VsZWN0UG9pbnQuaW5kZXhdLmlubmVySFRNTCA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZy50b0ZpeGVkKDgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdC5fZWxtcy5sYXQgJiYgdGhhdC5fZWxtcy5sYXRbc2VsZWN0UG9pbnQuaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHRoYXQuX2VsbXMubGF0W3NlbGVjdFBvaW50LmluZGV4XS5pbm5lckhUTUwgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQudG9GaXhlZCg4KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0LmhlaWdodE1vZGUgPSB0aGF0LmhlaWdodE1vZGVcclxuICAgICAgICB0aGF0LnByZXZpb3VzID0gbnVsbFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5jbGFtcFRvR3JvdW5kID0gdHJ1ZVxyXG4gICAgICB0aGF0LmVudGl0eS5wb2x5bGluZS5hcmNUeXBlID0gQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUNcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWdvbi5wZXJQb3NpdGlvbkhlaWdodCA9IGZhbHNlXHJcbiAgICAgIHRoYXQuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgYXJyID0gdGhhdC5jb21wdXRlU3RyYWlnaHRBcnJvdyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoYXJyKVxyXG4gICAgICB9LCBmYWxzZSlcclxuICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgYXJyID0gdGhhdC5jb21wdXRlU3RyYWlnaHRBcnJvdyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIGlmIChhcnIubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgIHJldHVybiBbLi4uYXJyLCBhcnJbMF0sIGFyclsxXV1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLmFycl1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIGZhbHNlKVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhhdC5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuXHJcbiAgICAgICAgdGhhdC5ldmVudC5tb3VzZV9yaWdodChyaWdodEV2ZW50KVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUobW92ZUV2ZW50KVxyXG5cclxuICAgICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAgIHJpZ2h0RXZlbnQoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgICAgICBsZXQgcG9zODQgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5wb3NpdGlvbnNILmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHRoYXQucG9zaXRpb25zSFtpXSwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgcG9zODQucHVzaChwb3NpdGlvbilcclxuICAgICAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQodGhhdC5wb3NpdGlvbnNIWzBdLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgICAgICBsZXQgcG9seWdvbiA9IHR1cmYucG9seWdvbihwb2ludHMpXHJcbiAgICAgICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKVxyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGF0XHJcbiAgICAgICAgICAgIC5nZXRDbGFtcFRvSGVpZ2h0KHtcclxuICAgICAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICAgIGxhdDogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgfSwgb2JqZWN0c1RvRXhjbHVkZSlcclxuICAgICAgICAgICAgLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAgY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgIGNyZWF0ZU5vZGVQb2ludHMoKVxyXG4gICAgICB9LCAyMDApO1xyXG4gICAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGVOb2RlUG9pbnRzKCkge1xyXG4gICAgICAgIGxldCBvYmplY3RzVG9FeGNsdWRlID0gWy4uLnRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy52YWx1ZXNdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0sIG9iamVjdHNUb0V4Y2x1ZGUpXHJcbiAgICAgICAgICBsZXQgZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQsIGhlaWdodCksXHJcbiAgICAgICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBsZXQgZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIC8vICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgIC8vICAgICBpbmRleDogaSxcclxuICAgICAgLy8gICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXQpLFxyXG4gICAgICAvLyAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgIC8vICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAvLyAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgIC8vICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgIC8vICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAvLyAgICAgfSxcclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyAgIG5vZGVQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjbG9zZU5vZGVFZGl0KHRoYXQpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoYXQuZXZlbnQgJiYgdGhhdC5ldmVudC5kZXN0cm95KClcclxuICAgIHRoYXQudGlwICYmIHRoYXQudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhhdC50aXAgPSBudWxsXHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0Lm5vZGVQb2ludHNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhhdC5waWNraW5nID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24odikge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHYucG9zaXRpb24ubG5nLCB2LnBvc2l0aW9uLmxhdCwgdi5wb3NpdGlvbi5hbHQpXHJcbiAgICBsZXQgcG9zaXRpb25zID0gWy4uLnRoaXMucG9zaXRpb25zXVxyXG4gICAgbGV0IGFycmF5ID0gW11cclxuICAgIGxldCBkaXNwYXJpdHkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbaV0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgYXJyYXkucHVzaChbcG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXRdKVxyXG4gICAgfVxyXG4gICAgbGV0IGZpcnN0cG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgYXJyYXkucHVzaChbZmlyc3Rwb3NpdGlvbi5sbmcsIGZpcnN0cG9zaXRpb24ubGF0XSlcclxuICAgIHZhciBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKFthcnJheV0pO1xyXG4gICAgdmFyIGNlbnRyb2lkID0gdHVyZi5jZW50cm9pZChwb2x5Z29uKTtcclxuICAgIGxldCBjZW50ZXIgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5jZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRpc3Bhcml0eS5wdXNoKHtcclxuICAgICAgICB4OiBjZW50ZXIueCAtIHBvc2l0aW9uc1tpXS54LFxyXG4gICAgICAgIHk6IGNlbnRlci55IC0gcG9zaXRpb25zW2ldLnksXHJcbiAgICAgICAgejogY2VudGVyLnogLSBwb3NpdGlvbnNbaV0ueixcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGxldCBuZXdwb3NpdGlvbnMgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXNwYXJpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbmV3cG9zaXRpb25zLnB1c2goe1xyXG4gICAgICAgIHg6IGNhcnRlc2lhbi54IC0gZGlzcGFyaXR5W2ldLngsXHJcbiAgICAgICAgeTogY2FydGVzaWFuLnkgLSBkaXNwYXJpdHlbaV0ueSxcclxuICAgICAgICB6OiBjYXJ0ZXNpYW4ueiAtIGRpc3Bhcml0eVtpXS56LFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt2LnBvc2l0aW9uLmxuZywgdi5wb3NpdGlvbi5sYXQsIHYucG9zaXRpb24uYWx0XVxyXG5cclxuICAgIGxldCBwb3NpdGlvbnM4NCA9IFtdXHJcbiAgICBpZiAobmV3cG9zaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbnM4NC5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQobmV3cG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYXJyID0gdGhpcy5jb21wdXRlU3RyYWlnaHRBcnJvdyhwb3NpdGlvbnM4NClcclxuICAgIGlmIChhcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoYXJyKVxyXG4gICAgfSwgZmFsc2UpXHJcbiAgICB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAoYXJyLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5hcnIsIGFyclswXSwgYXJyWzFdXVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBbLi4uYXJyXVxyXG4gICAgICB9XHJcbiAgICB9LCBmYWxzZSlcclxuICB9XHJcblxyXG4gIHNldERJVihvcHRpb25zID0geyBkb21pZDogXCJcIiwgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IChvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwKSA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSAob3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCkgPyBvcHRpb25zLnkgOiAxMFxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNvbXB1dGVTdHJhaWdodEFycm93KHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgcG9pbnRzWzBdLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0XSlcclxuICAgIGxldCBwb2x5Z29uID0gdHVyZi5wb2x5Z29uKHBvaW50cyk7XHJcbiAgICAvLyBsZXQgY2VudHJvaWQgPSB0dXJmLmNlbnRyb2lkKHBvbHlnb24pO1xyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKTtcclxuICAgIGxldCBzaXRlSW5mb0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuZG9taWQpXHJcbiAgICBsZXQgc2l0ZUluZm9Qb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLCBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSlcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKChwZXJjZW50YWdlKSA9PiB7XHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8IHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICcnKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHNpdGVJbmZvUG9zaXRpb24pO1xyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNwcmVhZFRpbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwcmVhZFRpbWVcclxuICB9XHJcblxyXG4gIHNldCBzcHJlYWRUaW1lKHYpIHtcclxuICAgIGxldCBzcHJlYWRUaW1lID0gTnVtYmVyKHYpXHJcbiAgICBpZiAoaXNOYU4oc3ByZWFkVGltZSkpIHtcclxuICAgICAgc3ByZWFkVGltZSA9IDMwMDBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNwcmVhZFRpbWUgPCA1MDApIHtcclxuICAgICAgc3ByZWFkVGltZSA9IDUwMFxyXG4gICAgfSBlbHNlIGlmIChzcHJlYWRUaW1lID4gOTk5OTk5OSkge1xyXG4gICAgICBzcHJlYWRUaW1lID0gOTk5OTk5OVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnNwcmVhZFRpbWUgPSBzcHJlYWRUaW1lXHJcbiAgICBpZiAodGhpcy5zcHJlYWRTdGF0ZSkge1xyXG4gICAgICB0aGlzLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKClcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuc3ByZWFkVGltZSAmJiB0aGlzLl9lbG1zLnNwcmVhZFRpbWUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gc3ByZWFkVGltZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsb29wKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sb29wXHJcbiAgfVxyXG4gIHNldCBsb29wKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sb29wID0gdlxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUucmVwZWF0KEluZmluaXR5KVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnJlcGVhdCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubG9vcCAmJiB0aGlzLl9lbG1zLmxvb3AuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNwcmVhZFN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zcHJlYWRTdGF0ZVxyXG4gIH1cclxuICBzZXQgc3ByZWFkU3RhdGUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNwcmVhZFN0YXRlID0gdlxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgdGhpcy5saW5lRWRpdCA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aGlzLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlIC8gdGhpcy5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIHRoaXMuc3ByZWFkVGltZSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5wYXVzZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnNwcmVhZFN0YXRlICYmIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGltZSA9IDApIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG5cclxuICAgIGlmICh0aGlzLlR3ZWVuQW5pbWF0ZSkge1xyXG4gICAgICBUV0VFTi5yZW1vdmUodGhpcy5Ud2VlbkFuaW1hdGUpXHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGxldCB7IHNka1AsIHNka0QgfSA9IGdldFNkaygpXHJcbiAgICBsZXQgdGhhdFBcclxuICAgIGlmIChzZGtEICYmIHNka1ApIHtcclxuICAgICAgaWYgKHRoaXMuc2RrID09PSBzZGtEKSB7XHJcbiAgICAgICAgdGhhdFAgPSBzZGtQLmVudGl0eU1hcC5nZXQodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIGlmICh0aGF0UCAmJiB0aGF0UC5lbnRpdHkgJiYgdGhhdFAuZW50aXR5LnBvbHlnb24gJiYgdGhhdFAucG9zaXRpb25zSCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXRQLnBvc2l0aW9uc0gpXHJcbiAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4udGhhdFAucG9zaXRpb25zSCwgdGhhdFAucG9zaXRpb25zSFswXSwgdGhhdFAucG9zaXRpb25zSFsxXV1cclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gYXJyXHJcbiAgICAvLyB0aGlzLmVudGl0eS5wb2x5bGluZS5wb3NpdGlvbnMgPSBsaW5lQXJyXHJcblxyXG4gICAgbGV0IGxpbmVQb3M4NCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGluZVBvczg0LnB1c2goW3RoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcobGluZVBvczg0KTtcclxuXHJcbiAgICBsZXQgZGlzdGFuY2VBcnJheSA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVQb3M4NC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQobGluZVBvczg0W2ldKTtcclxuICAgICAgbGV0IHRvID0gdHVyZi5wb2ludChsaW5lUG9zODRbaSAtIDFdKTtcclxuICAgICAgbGV0IGQgPSB0dXJmLmRpc3RhbmNlKGZyb20sIHRvLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIGxldCBvZCA9IGRpc3RhbmNlQXJyYXlbZGlzdGFuY2VBcnJheS5sZW5ndGggLSAxXSB8fCAwXHJcbiAgICAgIGRpc3RhbmNlQXJyYXkucHVzaChvZCArIGQpXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRpc3RhbmNlID0gdHVyZi5sZW5ndGgobGluZSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgbGV0IHRpbWVSYXRpbyA9IHRpbWUgLyB0aGlzLnNwcmVhZFRpbWVcclxuICAgIGxldCBtID0gMFxyXG4gICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBuZXcgVFdFRU4uVHdlZW4oeyBkaXN0YW5jZTogZGlzdGFuY2UgKiB0aW1lUmF0aW8gfSkudG8oeyBkaXN0YW5jZTogZGlzdGFuY2UgfSwgdGhpcy5zcHJlYWRUaW1lIC0gdGltZSkuZWFzaW5nKFRXRUVOLkVhc2luZy5MaW5lYXIuTm9uZSkucmVwZWF0KHRoaXMub3B0aW9ucy5sb29wID8gSW5maW5pdHkgOiAwKS5vblJlcGVhdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aW1lKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSgpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuX2R1cmF0aW9uID09IEluZmluaXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbSsrXHJcbiAgICAgIGlmICghdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbmltYXRlKClcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBzZXRTcHJlYWQocilcclxuICAgIH0pLm9uU3RhcnQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc3ByZWFkU3RhdGUgPSB0cnVlXHJcbiAgICAgIHRoaXMuX2VsbXMuc3ByZWFkU3RhdGUgJiYgdGhpcy5fZWxtcy5zcHJlYWRTdGF0ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSkub25Db21wbGV0ZSgoZCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZUFuaW1hdGUoKVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnNwcmVhZFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnN0YXJ0KClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXRTcHJlYWQoeyBkaXN0YW5jZTogZGlzdGFuY2UgKiB0aW1lUmF0aW8gfSlcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBzZXRTcHJlYWQodikge1xyXG4gICAgICBpZiAoIXRoYXQuc2hvdykge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBpbmRleCA9IDJcclxuICAgICAgZm9yIChsZXQgaSA9IGRpc3RhbmNlQXJyYXkubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAodi5kaXN0YW5jZSA+PSBkaXN0YW5jZUFycmF5W2ldKSB7XHJcbiAgICAgICAgICBpbmRleCA9IGluZGV4ICsgaSArIDFcclxuICAgICAgICAgIGlmIChpbmRleCA+IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBpbmRleCA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xyXG4gICAgICAgIHBvc2l0aW9uc1tpXSA9IHsgLi4udGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXSB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF2LmRpc3RhbmNlKSB7XHJcbiAgICAgICAgcG9zaXRpb25zW2luZGV4XSA9IHtcclxuICAgICAgICAgIGxuZzogcG9zaXRpb25zWzFdLmxuZyxcclxuICAgICAgICAgIGxhdDogcG9zaXRpb25zWzFdLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgc2xpY2VkID0gYXdhaXQgdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lLCAwLCB2LmRpc3RhbmNlLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVzID0gWy4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1dXHJcbiAgICAgICAgcG9zaXRpb25zWzFdLmxuZyA9IGNvb3JkaW5hdGVzWzBdXHJcbiAgICAgICAgcG9zaXRpb25zWzFdLmxhdCA9IGNvb3JkaW5hdGVzWzFdXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdwb3NpdGlvbnMnLCBwb3NpdGlvbnMpXHJcbiAgICAgIHRoYXQucmVuZXdQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW50aXR5LnBvbHlnb24uaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9uc0gpXHJcbiAgICB9LCBmYWxzZSlcclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBbLi4udGhhdC5wb3NpdGlvbnNILCB0aGF0LnBvc2l0aW9uc0hbMF0sIHRoYXQucG9zaXRpb25zSFsxXV1cclxuICAgIH0sIGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgLy8g56e76Zmk5Yqo55S7XHJcbiAgcmVtb3ZlQW5pbWF0ZSgpIHtcclxuICAgIHRoaXMuc3ByZWFkU3RhdGUgPSBmYWxzZVxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBudWxsXHJcbiAgICAgIHRoaXMucmVuZXdQb3NpdGlvbnMoKVxyXG4gICAgICB0aGlzLmVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGlzLnBvc2l0aW9uc0gpXHJcbiAgICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lLnBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc0gsIHRoaXMucG9zaXRpb25zSFswXSwgdGhpcy5wb3NpdGlvbnNIWzFdXVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5pu05paw5Z2Q5qCHXHJcbiAgcmVuZXdQb3NpdGlvbnMocG9zaXRpb244NCkge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yIHx8ICF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgZ3JvdW5kID0gZmFsc2VcclxuXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGlmIChwb3NpdGlvbjg0KSB7XHJcbiAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9uODRcclxuICAgIH1cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgbGV0IHBvc2l0aW9uc0EgPSB0aGlzLmNvbXB1dGVTdHJhaWdodEFycm93KHBvc2l0aW9ucylcclxuICAgIGlmIChwb3NpdGlvbnNBLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHBvaW50cyA9IFtbXV1cclxuICAgIGxldCBwb3M4NCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNBW2ldLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgIHBvczg0LnB1c2gocG9zaXRpb24pXHJcbiAgICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc0FbMF0sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIHBvaW50c1swXS5wdXNoKFtwb3NpdGlvbi5sbmcsIHBvc2l0aW9uLmxhdF0pXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IHBvbHlnb24gPSB0dXJmLnBvbHlnb24ocG9pbnRzKVxyXG4gICAgbGV0IGNlbnRyb2lkID0gdHVyZi5wb2ludE9uRmVhdHVyZShwb2x5Z29uKVxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuaGVpZ2h0TW9kZSkge1xyXG4gICAgICBjYXNlICcwJzpcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMSc6XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKSkgfHwgMFxyXG4gICAgICAgIGdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBncm91bmQgPSB0cnVlXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheTIgPSBbXVxyXG4gICAgaWYgKCFncm91bmQgJiYgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChcclxuICAgICAgICAgIHBvaW50c1swXVtpXVswXSxcclxuICAgICAgICAgIHBvaW50c1swXVtpXVsxXSxcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ICsgaGVpZ2h0XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucG9zaXRpb25zSCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkyKVxyXG5cclxuICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICB0aGlzLmhlaWdodCArIGhlaWdodFxyXG4gICAgICBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnNIID0gcG9zaXRpb25zQVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgb2JqZWN0c1RvRXhjbHVkZSA9IFsuLi50aGlzLnNkay52aWV3ZXIuZW50aXRpZXMudmFsdWVzXVxyXG4gICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICBsbmc6IGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgbGF0OiBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgIH0sIG9iamVjdHNUb0V4Y2x1ZGUpLnRoZW4oaGVpZ2h0ID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwucG9zaXRpb24gPSBbXHJcbiAgICAgICAgICAgIGNlbnRyb2lkLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgICBjZW50cm9pZC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sIDEwMClcclxuICAgIH1cclxuXHJcbiAgICAvLyDorqHnrpfmipXlvbHpnaLnp69cclxuICAgIGlmICghdGhpcy5zcHJlYWRTdGF0ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuYXJlYUJ5TWV0ZXIgPSB0aGlzLmNvbXB1dGVBcmVhKHBvczg0KVxyXG4gICAgICB0aGlzLmFyZWFVbml0ID0gdGhpcy5hcmVhVW5pdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb21EZWdyZWVzQXJyYXlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFN0cmFpZ2h0QXJyb3dPYmplY3RcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBckJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3Q0E7QUE3Q0E7QUFBQTtBQUFBO0FBQUE7QUE4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVZBO0FBQUE7QUFRQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQXVCQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0NBO0FBN0NBO0FBQUE7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFWQTtBQUFBO0FBUUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFtQkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMklBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6SEE7QUFBQTtBQUFBO0FBMEhBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEzQ0E7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF6ZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFFQTtBQVVBO0FBQUE7QUFQQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFLQTtBQUFBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFwR0E7QUFBQTtBQUFBO0FBQUE7QUFzR0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBd0xBO0FBQ0E7QUFBQTtBQW5MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUxBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWh1REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0NkJBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckVBO0FBQUE7QUFBQTtBQXFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUZBO0FBQUE7QUFLQTtBQXdGQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXVLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkE7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBa0NBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUEwWUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/StraightArrowObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TextBox/index.js": -/*!***************************************!*\ - !*** ./src/Obj/Base/TextBox/index.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * 文本框\r\n */\n\n\n\nvar TextBox = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 文本框\r\n * @param options {object} 属性\r\n * @param options.id=id\r\n * @param options.position=[]位置\r\n * @param options.text=文本框内容\r\n * @param options.show=true {boolean}是否显示\r\n * @param callback=方法回调\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function TextBox(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, TextBox);\n // this.sdk = { ...sdk }\n // this.options = { ...options }\n _this = _callSuper(this, TextBox, [sdk, options]);\n _this.options.position = options.position || [];\n _this.options.text = options.text || '';\n _this.options.show = options.show || options.show === false ? options.show : true;\n _this.clickTextDom = undefined;\n _this.handler = undefined;\n _this.textDom = undefined;\n _this.create(_this);\n _this.sdk.addIncetance(_this.options.id, _this);\n _this.callback = callback;\n\n // syncData(this.sdk, this.options.id)\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(TextBox, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(TextBox, [{\n key: \"type\",\n get: function get() {\n return 'TextBox';\n }\n }, {\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(that) {\n var viewer, dom, textarea, posi;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n viewer = that.sdk.viewer; // 创建div元素\n dom = document.createElement('span');\n dom.id = that.options.id;\n dom.className = 'popup-textarea';\n dom.style.zIndex = 1;\n // 创建textarea元素\n textarea = document.createElement('textarea');\n textarea.className = 'textarea';\n textarea.value = that.options.text;\n // 设置textarea的属性,例如行数和列数\n textarea.rows = 6;\n textarea.style.resize = 'none';\n // 将textarea添加到div中\n dom.appendChild(textarea);\n !that.options.show && (dom.style.display = 'none');\n // 将div添加到body中\n // document.body.appendChild(dom);\n\n // 配置CSS样式和内容结构\n viewer.cesiumWidget.container.appendChild(dom);\n posi = Cesium.Cartesian3.fromDegrees(that.options.position.lng, that.options.position.lat, that.options.position.alt);\n that.handler = function () {\n var position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, posi);\n if (position) {\n var width = dom.clientWidth * 1;\n var height = dom.clientHeight * 1;\n dom.style.left = \"\".concat(position.x - width / 2, \"px\");\n dom.style.top = \"\".concat(position.y - height, \"px\");\n }\n };\n viewer.scene.postRender.addEventListener(that.handler);\n that.textDom = dom;\n case 17:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function create(_x) {\n return _create.apply(this, arguments);\n }\n return create;\n }()\n }, {\n key: \"isClick\",\n value: function () {\n var _isClick = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2(posi, id) {\n var params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n params = [{\n position: posi\n }, id, null];\n this.clickCallBack({\n position: posi\n }, id, null);\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function isClick(_x2, _x3) {\n return _isClick.apply(this, arguments);\n }\n return isClick;\n }()\n }, {\n key: \"setHandeler\",\n value: function () {\n var _setHandeler = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3(data) {\n var that, cartesian, ray, cartographic, longitude, latitude, height, posi;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n that = this;\n cartesian = this.sdk.viewer.scene.pickPosition(new Cesium.Cartesian2(data.x, data.y)); //屏幕坐标转为笛卡尔空间坐标\n // if (!cartesian) return;\n // let c = Cesium.Cartographic.fromCartesian(position);\n if (!cartesian) {\n ray = this.sdk.viewer.camera.getPickRay(new Cesium.Cartesian2(data.x, data.y));\n cartesian = this.sdk.viewer.scene.globe.pick(ray, this.sdk.viewer.scene);\n }\n if (!Cesium.defined(cartesian)) {\n _context3.next = 15;\n break;\n }\n that.sdk.viewer.scene.postRender.removeEventListener(that.handler);\n cartographic = Cesium.Cartographic.fromCartesian(cartesian);\n longitude = Cesium.Math.toDegrees(cartographic.longitude);\n latitude = Cesium.Math.toDegrees(cartographic.latitude);\n _context3.next = 10;\n return that.getClampToHeight({\n lng: longitude,\n lat: latitude\n });\n case 10:\n height = _context3.sent;\n that.position = {\n lng: longitude,\n lat: latitude,\n alt: cartographic.height\n // alt: height\n };\n posi = Cesium.Cartesian3.fromDegrees(longitude, latitude, cartographic.height);\n that.handler = function () {\n var position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(that.sdk.viewer.scene, posi);\n if (position) {\n var width = that.textDom.clientWidth * 1;\n var _height = that.textDom.clientHeight * 1;\n that.textDom.style.left = \"\".concat(position.x - width / 2, \"px\");\n that.textDom.style.top = \"\".concat(position.y - _height, \"px\");\n }\n };\n that.sdk.viewer.scene.postRender.addEventListener(that.handler);\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function setHandeler(_x4) {\n return _setHandeler.apply(this, arguments);\n }\n return setHandeler;\n }()\n }, {\n key: \"getwords\",\n value: function () {\n var _getwords = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee4(words) {\n var _getSdk, sdkP;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n this.options.text = words;\n this.callback(this.options);\n _getSdk = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__[\"getSdk\"])(), sdkP = _getSdk.sdkP;\n if (this.sdk === sdkP && sdkP) {\n //三维\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__[\"syncData\"])(this.sdk, this.options.id);\n } else if (sdkP) {\n //二维\n sdkP.entityMap.get(this.options.id).text = words;\n sdkP.entityMap.get(this.options.id).twoToThree(this.options.position);\n } else if (!sdkP) {\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__[\"syncData\"])(this.sdk, this.options.id);\n }\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function getwords(_x5) {\n return _getwords.apply(this, arguments);\n }\n return getwords;\n }()\n }, {\n key: \"twoToThree\",\n value: function () {\n var _twoToThree = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee5(position) {\n var that, posi;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n that = this;\n that.sdk.viewer.scene.postRender.removeEventListener(that.handler);\n posi = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt);\n that.handler = function () {\n var position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(that.sdk.viewer.scene, posi);\n if (position) {\n var width = that.textDom.clientWidth * 1;\n var height = that.textDom.clientHeight * 1;\n that.textDom.style.left = \"\".concat(position.x - width / 2, \"px\");\n that.textDom.style.top = \"\".concat(position.y - height, \"px\");\n }\n };\n that.sdk.viewer.scene.postRender.addEventListener(that.handler);\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function twoToThree(_x6) {\n return _twoToThree.apply(this, arguments);\n }\n return twoToThree;\n }()\n }, {\n key: \"returnFun\",\n value: function () {\n var _returnFun = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt(\"return\", this.handler);\n case 1:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function returnFun() {\n return _returnFun.apply(this, arguments);\n }\n return returnFun;\n }()\n }, {\n key: \"text\",\n get: function get() {\n return this.options.text;\n },\n set: function set(val) {\n this.options.text = val;\n this.textDom.querySelector('textarea').value = val;\n this.callback(this.options);\n }\n }, {\n key: \"onClick\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n this.textDom && (this.textDom.style.display = v ? 'block' : 'none');\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_9__[\"syncData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"position\",\n get: function get() {\n return this.options.position;\n },\n set: function set(v) {\n this.options.position = v;\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee7() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n positionArray,\n a,\n BoundingSphere,\n _args7 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n options = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeViewFollow\"])(this.sdk);\n if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.position) {\n position = _objectSpread({}, this.options.position[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n // if (!position.hasOwnProperty('alt')) {\n // position.alt = await this.getClampToHeight(position)\n // }\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n } else {\n positionArray = [];\n a = Cesium.Cartesian3.fromDegrees(this.position.lng, this.position.lat, this.position.alt);\n positionArray.push(a.x, a.y, a.z);\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-20.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n case 5:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee8() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (this.handler) {\n this.sdk.viewer.scene.postRender.removeEventListener(this.handler);\n this.handler = undefined;\n }\n if (this.textDom && this.textDom.parentNode) {\n this.sdk.viewer.cesiumWidget.container.removeChild(this.textDom);\n }\n _context8.next = 4;\n return this.sdk.removeIncetance(this.options.id);\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (TextBox);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVGV4dEJveC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9UZXh0Qm94L2luZGV4LmpzPzk4ZjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOaWh+acrOahhlxyXG4gKi9cclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHN5bmNEYXRhLCBnZXRTZGsgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbmNsYXNzIFRleHRCb3ggZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOaWh+acrOahhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkPWlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb249W13kvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy50ZXh0PeaWh+acrOahhuWGheWuuVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn3mmK/lkKbmmL7npLpcclxuICAgKiBAcGFyYW0gY2FsbGJhY2s95pa55rOV5Zue6LCDXHJcbiAgICogQHBhcmFtIERpYWxvZyB7b2JqZWN0fSDlvLnmoYblr7nosaFcclxuICAgKiBAcGFyYW0gRGlhbG9nLmNvbmZpcm1DYWxsQmFjayB7ZnVuY3Rpb259IOW8ueahhuehruiupOaXtueahOWbnuiwg1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIGNhbGxiYWNrID0gbnVsbCkge1xyXG4gICAgLy8gdGhpcy5zZGsgPSB7IC4uLnNkayB9XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gb3B0aW9ucy5wb3NpdGlvbiB8fCBbXVxyXG4gICAgdGhpcy5vcHRpb25zLnRleHQgPSBvcHRpb25zLnRleHQgfHwgJydcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuY2xpY2tUZXh0RG9tID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmhhbmRsZXIgPSB1bmRlZmluZWRcclxuICAgIHRoaXMudGV4dERvbSA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5jcmVhdGUodGhpcylcclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcblxyXG4gICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrXHJcblxyXG4gICAgLy8gc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnVGV4dEJveCdcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICBsZXQgdmlld2VyID0gdGhhdC5zZGsudmlld2VyXHJcbiAgICAvLyDliJvlu7pkaXblhYPntKBcclxuICAgIGxldCBkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBkb20uaWQgPSB0aGF0Lm9wdGlvbnMuaWRcclxuICAgIGRvbS5jbGFzc05hbWUgPSAncG9wdXAtdGV4dGFyZWEnXHJcbiAgICBkb20uc3R5bGUuekluZGV4ID0gMVxyXG4gICAgLy8g5Yib5bu6dGV4dGFyZWHlhYPntKBcclxuICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICB0ZXh0YXJlYS5jbGFzc05hbWUgPSAndGV4dGFyZWEnXHJcbiAgICB0ZXh0YXJlYS52YWx1ZSA9IHRoYXQub3B0aW9ucy50ZXh0O1xyXG4gICAgLy8g6K6+572udGV4dGFyZWHnmoTlsZ7mgKfvvIzkvovlpoLooYzmlbDlkozliJfmlbBcclxuICAgIHRleHRhcmVhLnJvd3MgPSA2O1xyXG4gICAgdGV4dGFyZWEuc3R5bGUucmVzaXplID0gJ25vbmUnXHJcbiAgICAvLyDlsIZ0ZXh0YXJlYea3u+WKoOWIsGRpduS4rVxyXG4gICAgZG9tLmFwcGVuZENoaWxkKHRleHRhcmVhKTtcclxuICAgICghdGhhdC5vcHRpb25zLnNob3cpICYmIChkb20uc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgIC8vIOWwhmRpdua3u+WKoOWIsGJvZHnkuK1cclxuICAgIC8vIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tKTtcclxuXHJcbiAgICAvLyDphY3nva5DU1PmoLflvI/lkozlhoXlrrnnu5PmnoRcclxuICAgIHZpZXdlci5jZXNpdW1XaWRnZXQuY29udGFpbmVyLmFwcGVuZENoaWxkKGRvbSk7XHJcbiAgICBsZXQgcG9zaSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQub3B0aW9ucy5wb3NpdGlvbi5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbi5sYXQsIHRoYXQub3B0aW9ucy5wb3NpdGlvbi5hbHQpXHJcbiAgICB0aGF0LmhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXMoXHJcbiAgICAgICAgdmlld2VyLnNjZW5lLCBwb3NpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwb3NpdGlvbikge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IGRvbS5jbGllbnRXaWR0aCAqIDFcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gZG9tLmNsaWVudEhlaWdodCAqIDFcclxuICAgICAgICBkb20uc3R5bGUubGVmdCA9IGAke3Bvc2l0aW9uLnggLSB3aWR0aCAvIDJ9cHhgO1xyXG4gICAgICAgIGRvbS5zdHlsZS50b3AgPSBgJHtwb3NpdGlvbi55IC0gaGVpZ2h0fXB4YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmlld2VyLnNjZW5lLnBvc3RSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGF0LmhhbmRsZXIpO1xyXG4gICAgdGhhdC50ZXh0RG9tID0gZG9tO1xyXG5cclxuICB9XHJcbiAgYXN5bmMgaXNDbGljayhwb3NpLCBpZCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpXHJcbiAgICAgIH0sXHJcbiAgICAgIGlkLFxyXG4gICAgICBudWxsXHJcbiAgICBdXHJcblxyXG4gICAgdGhpcy5jbGlja0NhbGxCYWNrKHsgcG9zaXRpb246IHBvc2kgfSwgaWQsIG51bGwpXHJcbiAgfVxyXG4gIGFzeW5jIHNldEhhbmRlbGVyKGRhdGEpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG5cclxuICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG5ldyBDZXNpdW0uQ2FydGVzaWFuMihkYXRhLngsIGRhdGEueSkpOyAvL+Wxj+W5leWdkOagh+i9rOS4uuesm+WNoeWwlOepuumXtOWdkOagh1xyXG4gICAgLy8gaWYgKCFjYXJ0ZXNpYW4pIHJldHVybjtcclxuXHJcbiAgICAvLyBsZXQgYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihwb3NpdGlvbik7XHJcbiAgICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgICBjb25zdCByYXkgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmdldFBpY2tSYXkobmV3IENlc2l1bS5DYXJ0ZXNpYW4yKGRhdGEueCwgZGF0YS55KSk7XHJcbiAgICAgIGNhcnRlc2lhbiA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5waWNrKHJheSwgdGhpcy5zZGsudmlld2VyLnNjZW5lKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQ2VzaXVtLmRlZmluZWQoY2FydGVzaWFuKSkge1xyXG4gICAgICB0aGF0LnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKHRoYXQuaGFuZGxlcik7XHJcblxyXG4gICAgICB2YXIgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKGNhcnRlc2lhbik7XHJcbiAgICAgIHZhciBsb25naXR1ZGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSk7XHJcbiAgICAgIHZhciBsYXRpdHVkZSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpO1xyXG5cclxuICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogbG9uZ2l0dWRlLCBsYXQ6IGxhdGl0dWRlIH0pXHJcbiAgICAgIHRoYXQucG9zaXRpb24gPSB7XHJcbiAgICAgICAgbG5nOiBsb25naXR1ZGUsXHJcbiAgICAgICAgbGF0OiBsYXRpdHVkZSxcclxuICAgICAgICBhbHQ6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgICAgICAvLyBhbHQ6IGhlaWdodFxyXG4gICAgICB9XHJcbiAgICAgIGxldCBwb3NpID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG9uZ2l0dWRlLCBsYXRpdHVkZSwgY2FydG9ncmFwaGljLmhlaWdodClcclxuICAgICAgdGhhdC5oYW5kbGVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXMoXHJcbiAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuc2NlbmUsIHBvc2lcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwb3NpdGlvbikge1xyXG4gICAgICAgICAgbGV0IHdpZHRoID0gdGhhdC50ZXh0RG9tLmNsaWVudFdpZHRoICogMVxyXG4gICAgICAgICAgbGV0IGhlaWdodCA9IHRoYXQudGV4dERvbS5jbGllbnRIZWlnaHQgKiAxXHJcbiAgICAgICAgICB0aGF0LnRleHREb20uc3R5bGUubGVmdCA9IGAke3Bvc2l0aW9uLnggLSB3aWR0aCAvIDJ9cHhgO1xyXG4gICAgICAgICAgdGhhdC50ZXh0RG9tLnN0eWxlLnRvcCA9IGAke3Bvc2l0aW9uLnkgLSBoZWlnaHR9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGF0LnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKHRoYXQuaGFuZGxlcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGdldHdvcmRzKHdvcmRzKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHdvcmRzXHJcbiAgICB0aGlzLmNhbGxiYWNrKHRoaXMub3B0aW9ucylcclxuICAgIGxldCB7IHNka1AgfSA9IGdldFNkaygpXHJcbiAgICBpZiAodGhpcy5zZGsgPT09IHNka1AgJiYgc2RrUCkgey8v5LiJ57u0XHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZGtQKSB7Ly/kuoznu7RcclxuICAgICAgc2RrUC5lbnRpdHlNYXAuZ2V0KHRoaXMub3B0aW9ucy5pZCkudGV4dCA9IHdvcmRzXHJcbiAgICAgIHNka1AuZW50aXR5TWFwLmdldCh0aGlzLm9wdGlvbnMuaWQpLnR3b1RvVGhyZWUodGhpcy5vcHRpb25zLnBvc2l0aW9uKVxyXG4gICAgfSBlbHNlIGlmICghc2RrUCkge1xyXG4gICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyB0d29Ub1RocmVlKHBvc2l0aW9uKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIHRoYXQuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhhdC5oYW5kbGVyKTtcclxuICAgIGxldCBwb3NpID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHBvc2l0aW9uLmFsdClcclxuICAgIHRoYXQuaGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBDZXNpdW0uU2NlbmVUcmFuc2Zvcm1zLndnczg0VG9XaW5kb3dDb29yZGluYXRlcyhcclxuICAgICAgICB0aGF0LnNkay52aWV3ZXIuc2NlbmUsIHBvc2lcclxuICAgICAgKTtcclxuICAgICAgaWYgKHBvc2l0aW9uKSB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gdGhhdC50ZXh0RG9tLmNsaWVudFdpZHRoICogMVxyXG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGF0LnRleHREb20uY2xpZW50SGVpZ2h0ICogMVxyXG4gICAgICAgIHRoYXQudGV4dERvbS5zdHlsZS5sZWZ0ID0gYCR7cG9zaXRpb24ueCAtIHdpZHRoIC8gMn1weGA7XHJcbiAgICAgICAgdGhhdC50ZXh0RG9tLnN0eWxlLnRvcCA9IGAke3Bvc2l0aW9uLnkgLSBoZWlnaHR9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGF0LnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKHRoYXQuaGFuZGxlcik7XHJcbiAgfVxyXG4gIGFzeW5jIHJldHVybkZ1bigpIHtcclxuICAgIHJldHVybiB0aGlzLmhhbmRsZXJcclxuICB9XHJcbiAgZ2V0IHRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRleHRcclxuICB9XHJcbiAgc2V0IHRleHQodmFsKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHZhbFxyXG4gICAgdGhpcy50ZXh0RG9tLnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJykudmFsdWUgPSB2YWxcclxuICAgIHRoaXMuY2FsbGJhY2sodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICBnZXQgb25DbGljaygpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWNrQ2FsbEJhY2tcclxuICB9XHJcbiAgc2V0IG9uQ2xpY2sodmFsKSB7XHJcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc29sZS5lcnJvcigndmFsOicsIHZhbCwgJ+S4jeaYr+S4gOS4qmZ1bmN0aW9uJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjayA9IHZhbFxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHZcclxuICAgIHRoaXMudGV4dERvbSAmJiAodGhpcy50ZXh0RG9tLnN0eWxlLmRpc3BsYXkgPSB2ID8gJ2Jsb2NrJyA6ICdub25lJyk7XHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuICBnZXQgcG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgfVxyXG4gIHNldCBwb3NpdGlvbih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSB2XHJcbiAgfVxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25bMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbG5nJykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxuZyA9IHRoaXMub3B0aW9ucy5sbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbGF0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmxhdCA9IHRoaXMub3B0aW9ucy5sYXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICAgIHBvc2l0aW9uLmFsdCA9IHRoaXMub3B0aW9ucy5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6auY5bqm5YC877yM5YiZ6I635Y+W57Sn6LS06auY5bqm6K6h566XXHJcbiAgICAgIC8vIGlmICghcG9zaXRpb24uaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgIC8vICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgIGxhdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0ICsgcG9zaXRpb24ubGF0XHJcbiAgICAgIGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0ICsgcG9zaXRpb24uYWx0XHJcbiAgICAgIGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICB0aGlzLnBvc2l0aW9uLmxuZyxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uLmxhdCxcclxuICAgICAgICB0aGlzLnBvc2l0aW9uLmFsdFxyXG4gICAgICApXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG5cclxuICAgICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgICB0aGlzLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0yMC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIGlmICh0aGlzLmhhbmRsZXIpIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnBvc3RSZW5kZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmhhbmRsZXIpO1xyXG4gICAgICB0aGlzLmhhbmRsZXIgPSB1bmRlZmluZWRcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRleHREb20gJiYgdGhpcy50ZXh0RG9tLnBhcmVudE5vZGUpIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmNlc2l1bVdpZGdldC5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy50ZXh0RG9tKTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBmbGlja2VyKCkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFRleHRCb3hcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFiQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/TextBox/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TextObject/GroundText/_element.js": -/*!********************************************************!*\ - !*** ./src/Obj/Base/TextObject/GroundText/_element.js ***! - \********************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n \\u989C\\u8272\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u7ECF\\u5EA6\\n \\n
    \\n
    \\n \\u7EAC\\u5EA6\\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u65CB\\u8F6C\\u89D2\\u5EA6\\n \\n
    \\n \\n \\xB0\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u8C03\\u6574\\u5927\\u5C0F\\n \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u6EDA\\u52A8\\u901F\\u5EA6\\n \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9Hcm91bmRUZXh0L19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1RleHRPYmplY3QvR3JvdW5kVGV4dC9fZWxlbWVudC5qcz80NWRiIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBAbW9kZWw9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nu4/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi0xODBcIiBtYXg9XCIxODBcIiBAbW9kZWw9XCJsbmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nuqzluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05MFwiIG1heD1cIjkwXCIgQG1vZGVsPVwibGF0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5peL6L2s6KeS5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1heD1cIjM2MFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImFuZ2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0XCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7ZmxleDogMCAwIDEwMHB4O21hcmdpbi1sZWZ0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjM2MFwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwiYW5nbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj7CsDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuiwg+aVtOWkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtYXg9XCIxMDAwMDBcIiBtaW49XCIwXCIgc3RlcD1cIjAuMDFcIiBAbW9kZWw9XCJzY2FsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlclwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O2ZsZXg6IDAgMCAxMDBweDttYXJnaW4tbGVmdDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCIxMDAwMDBcIiBzdGVwPVwiMC4wMVwiIEBtb2RlbD1cInNjYWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mu5rliqjpgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTAwXCIgbWluPVwiMFwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwic3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXJcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtmbGV4OiAwIDAgMTAwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBK0RBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/TextObject/GroundText/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TextObject/GroundText/index.js": -/*!*****************************************************!*\ - !*** ./src/Obj/Base/TextObject/GroundText/index.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/TextObject/GroundText/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\n\n\nvar GroundText = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 贴地文字\r\n * @param options {object} 属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显示/隐藏\r\n * @param options.text {string} 文字\r\n * @param options.color=#FFC107 {string} 颜色\r\n * @param options.angle=0 {number} 旋转角度\r\n * @param options.scale=1 {number} 缩放比例\r\n * @param options.speed=1 {number} 文字滚动速度\r\n * @param {object} options.position 位置\r\n * @param {number} options.position.lng 经度\r\n * @param {number} options.position.lat 纬度\r\n * @param {object} options.positions 坐标集[{lon,lat}]仅在未定义 position 时有效\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function GroundText(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, GroundText);\n _this2 = _callSuper(this, GroundText, [sdk, options]);\n _this2.options.text = options.text || '未命名对象';\n var textArray = _this2.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n }\n _this2.options.text = textArray.join('\\n');\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.angle = options.angle || 0;\n _this2.options.scale = options.scale || options.scale === 0 ? options.scale : 1;\n // this.options.fontSize = options.fontSize || 20\n // this.options.duration =\n // options.duration || options.duration === 0 ? options.duration : 50000\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 1;\n _this2.options.color = options.color || '#FFC107';\n _this2.options.position = options.position;\n delete _this2.options.name;\n if (!_this2.options.position && _this2.options.positions) {\n // 计算两点与x轴正方向的夹角(弧度)\n var calculateAngle = function calculateAngle(pointA, pointB) {\n var dx = pointB[0] - pointA[0];\n var dy = pointB[1] - pointA[1];\n return Math.atan2(dy, dx);\n };\n _this2.options.position = {\n lng: (_this2.options.positions[0].lng + _this2.options.positions[1].lng) / 2,\n lat: (_this2.options.positions[0].lat + _this2.options.positions[1].lat) / 2\n };\n var point1 = turf.point([_this2.options.positions[0].lng, _this2.options.positions[0].lat]);\n var point2 = turf.point([_this2.options.positions[1].lng, _this2.options.positions[1].lat]);\n var _options = {\n units: 'miles'\n };\n var distance1 = turf.rhumbDistance(point1, point2, _options);\n var angleRadians = calculateAngle([_this2.options.positions[0].lng, _this2.options.positions[0].lat], [_this2.options.positions[1].lng, _this2.options.positions[1].lat]);\n _this2.options.angle = (360 + Cesium.Math.toDegrees(angleRadians)) % 360;\n var gap = Math.abs(Math.cos(Math.PI / 180 * _this2.options.position.lat)) * 0.0001;\n var canvas = _this2.getcanvas();\n var ratio = canvas.height / canvas.width;\n var lng1 = _this2.options.position.lng - 0.0001 / ratio;\n var lat1 = _this2.options.position.lat - gap;\n var lng2 = _this2.options.position.lng + 0.0001 / ratio;\n var lat2 = _this2.options.position.lat + gap;\n var lng = (lng1 + lng2) / 2;\n var lat = (lat1 + lat2) / 2;\n var from = turf.point([lng1, lat]);\n var to = turf.point([lng2, lat]);\n var distance2 = turf.rhumbDistance(from, to, _options);\n var latRadians = Cesium.Math.toRadians(_this2.options.position.lat);\n distance2 = distance2 * (1 + Math.abs(Math.sin(angleRadians) * Math.tan(latRadians) * Math.sin(latRadians) * Math.sin(latRadians)));\n _this2.options.scale = distance1 / distance2;\n }\n _this2.duration = 50000;\n _this2.entity;\n _this2._positionEditing = false;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this2._elms = {};\n _this2.previous = {\n position: _objectSpread({}, _this2.options.position)\n };\n _this2.event = new _Event_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.create();\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(GroundText, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(GroundText, [{\n key: \"lng\",\n get: function get() {\n return this.options.position.lng;\n },\n set: function set(v) {\n this.options.position.lng = v;\n this._elms.lng && this._elms.lng.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"lat\",\n get: function get() {\n return this.options.position.lat;\n },\n set: function set(v) {\n this.options.position.lat = v;\n this._elms.lat && this._elms.lat.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"name\",\n get: function get() {\n return;\n }\n }, {\n key: \"text\",\n get: function get() {\n return this.options.text;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.text = v;\n var textArray = this.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n var _error = '行超过80个字符,请按回车(Enter)后,继续输入';\n window.ELEMENT && window.ELEMENT.Message({\n message: _error,\n type: 'warning',\n duration: 1000\n });\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n var _error2 = '超过最大输入字符';\n window.ELEMENT && window.ELEMENT.Message({\n message: _error2,\n type: 'warning',\n duration: 1000\n });\n }\n this.options.text = textArray.join('\\n');\n if (this.entity) {\n var canvas = this.getcanvas();\n var ratio = canvas.height / canvas.width;\n this.entity.rectangle.material = new Cesium.CustomMaterialSource({\n image: canvas.toDataURL('image/png'),\n color: this.options.color,\n repeat: new Cesium.Cartesian2(1.0, 1.0),\n duration: this.duration / this.options.speed,\n fltr: false,\n is2D: this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE2D ? true : false\n });\n this.entity.rectangle.coordinates = new Cesium.CallbackProperty(function () {\n var _Cesium$Rectangle;\n var gap = Math.abs(Math.cos(Math.PI / 180 * _this3.options.position.lat)) * (0.0001 * _this3.options.scale);\n var fromDegreesArray = [_this3.options.position.lng - 0.0001 * _this3.options.scale / ratio, _this3.options.position.lat - gap, _this3.options.position.lng + 0.0001 * _this3.options.scale / ratio, _this3.options.position.lat + gap];\n return (_Cesium$Rectangle = Cesium.Rectangle).fromDegrees.apply(_Cesium$Rectangle, fromDegreesArray);\n }, false);\n }\n this._elms.text && this._elms.text.forEach(function (item) {\n item.value = _this3.options.text;\n });\n }\n }, {\n key: \"angle\",\n get: function get() {\n return this.options.angle;\n },\n set: function set(v) {\n this.options.angle = Number(v);\n this._elms.angle && this._elms.angle.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.options.scale;\n },\n set: function set(v) {\n this.options.scale = Number(v);\n this._elms.scale && this._elms.scale.forEach(function (item) {\n item.value = v;\n });\n }\n\n // get duration() {\n // return this.options.duration\n // }\n\n // set duration(v) {\n // this.options.duration = v\n // let canvas = this.getcanvas()\n // this.entity.rectangle.material = new Cesium.CustomMaterialSource({\n // image: canvas.toDataURL('image/png'),\n // color: this.options.color,\n // repeat: new Cesium.Cartesian2(1.0, 1.0),\n // duration: this.options.duration / this.options.speed,\n // fltr: false,\n // is2D: this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE2D ? true : false\n // })\n // this._elms.duration &&\n // this._elms.duration.forEach(item => {\n // item.value = v\n // })\n // }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = Number(v);\n var canvas = this.getcanvas();\n this.entity.rectangle.material = new Cesium.CustomMaterialSource({\n image: canvas.toDataURL('image/png'),\n color: this.options.color,\n repeat: new Cesium.Cartesian2(1.0, 1.0),\n duration: this.duration / this.options.speed,\n fltr: false,\n is2D: this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE2D ? true : false\n });\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.color = v;\n var canvas = this.getcanvas();\n this.entity.rectangle.material = new Cesium.CustomMaterialSource({\n image: canvas.toDataURL('image/png'),\n color: this.options.color,\n repeat: new Cesium.Cartesian2(1.0, 1.0),\n duration: this.duration / this.options.speed,\n fltr: false,\n is2D: this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE2D ? true : false\n });\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this4.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"create\",\n value: function create() {\n var _this5 = this;\n // let gap = Math.abs(Math.cos(Math.PI/180 * this.options.position.lat)) * (0.0001*this.options.scale)\n // let fromDegreesArray = [\n // this.options.position.lng - 0.05, this.options.position.lat - 0.05,\n // this.options.position.lng + 0.05, this.options.position.lat - 0.05,\n // this.options.position.lng + 0.05, this.options.position.lat + 0.05,\n // this.options.position.lng - 0.05, this.options.position.lat + 0.05,\n // ]\n var canvas = this.getcanvas();\n var ratio = canvas.height / canvas.width;\n this.entity = this.sdk.viewer.entities.add({\n id: this.options.id,\n show: this.options.show,\n rectangle: {\n coordinates: new Cesium.CallbackProperty(function () {\n var _Cesium$Rectangle2;\n var gap = Math.abs(Math.cos(Math.PI / 180 * _this5.options.position.lat)) * (0.0001 * _this5.options.scale);\n var fromDegreesArray = [_this5.options.position.lng - 0.0001 * _this5.options.scale / ratio, _this5.options.position.lat - gap,\n // this.options.position.lng + 0.05, this.options.position.lat - 0.05,\n _this5.options.position.lng + 0.0001 * _this5.options.scale / ratio, _this5.options.position.lat + gap\n // this.options.position.lng - 0.05, this.options.position.lat + 0.05,\n ];\n return (_Cesium$Rectangle2 = Cesium.Rectangle).fromDegrees.apply(_Cesium$Rectangle2, fromDegreesArray);\n }, false),\n material: new Cesium.CustomMaterialSource({\n image: canvas.toDataURL('image/png'),\n color: this.options.color,\n repeat: new Cesium.Cartesian2(1.0, 1.0),\n duration: this.duration / this.options.speed,\n fltr: false,\n is2D: this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE2D ? true : false\n }),\n rotation: new Cesium.CallbackProperty(function () {\n return Cesium.Math.toRadians(_this5.options.angle);\n }, false),\n stRotation: new Cesium.CallbackProperty(function () {\n return Cesium.Math.toRadians(_this5.options.angle);\n }, false)\n }\n });\n if (this.sdk.viewer._element.className === 'cesium-viewer 2d') {\n this.entity.rectangle.height = 10;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n if (this.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"setSplitDirection\"])(0, this.options.id);\n }\n }\n\n // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(state) {\n var _this6 = this;\n var _this, contentElm, all_elm, colorPicker;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 18;\n break;\n }\n _context.next = 6;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.sdk, this.originalOptions, {\n title: '贴地文字属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this6.text = _this6.text.trim();\n if (!_this6.text) {\n _this6.text = '未命名对象';\n }\n _this6.originalOptions = _this6.deepCopyObj(_this6.options);\n _this6._DialogObject.close();\n _this6.Dialog.confirmCallBack && _this6.Dialog.confirmCallBack(_this6.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(_this6.sdk, _this6.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(_this6.sdk, _this6.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this6.reset();\n _this6.Dialog.resetCallBack && _this6.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this6.Dialog.removeCallBack && _this6.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this6.reset();\n _this6.positionEditing = false;\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this6.Dialog.closeCallBack && _this6.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this6.show = show;\n _this6.Dialog.showCallBack && _this6.Dialog.showCallBack();\n },\n translationalCallBack: function translationalCallBack() {\n _this6.positionEditing = !_this6.positionEditing;\n }\n }, true);\n case 6:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' ground-text';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n all_elm = contentElm.getElementsByTagName('*');\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n\n // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n this._elms.color = [colorPicker];\n _context.next = 19;\n break;\n case 18:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n /**@desc 打开平移功能\r\n *\r\n * @memberOf Source\r\n * @param status {boolean}\r\n *\r\n * */\n }, {\n key: \"positionEditing\",\n get: function get() {\n return this._positionEditing;\n },\n set: function set(status) {\n var _this7 = this;\n if (!this.sdk || !this.sdk.viewer || !this.entity) {\n return;\n }\n this._positionEditing = status;\n this.previous = {\n position: _objectSpread({}, this.options.position)\n };\n if (status === true) {\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_15__[\"default\"]('点击鼠标左键确认,右键取消', this.sdk);\n this.event.mouse_move(function (movement, cartesian) {\n var position = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.lng = position.lng;\n _this7.lat = position.lat;\n _this7.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_left(function (movement, cartesian) {\n var position = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.lng = position.lng;\n _this7.lat = position.lat;\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this7.lng = _this7.previous.position.lng;\n _this7.lat = _this7.previous.position.lat;\n _this7.positionEditing = false;\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this7.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this7.lng = _this7.previous.position.lng;\n _this7.lat = _this7.previous.position.lat;\n _this7.positionEditing = false;\n } else {\n var position = _this7.cartesian3Towgs84(cartesian, _this7.sdk.viewer);\n _this7.lng = position.lng;\n _this7.lat = position.lat;\n _this7.event.mouse_move(function () {});\n _this7.event.mouse_left(function () {});\n _this7.event.mouse_right(function () {});\n _this7.event.gesture_pinck_start(function () {});\n _this7.event.gesture_pinck_end(function () {});\n _this7.positionEditing = false;\n }\n });\n });\n } else {\n if (this._positionEditingCallback) {\n this._positionEditingCallback();\n this._positionEditingCallback = null;\n }\n if (this.event) {\n this.event.mouse_move(function () {});\n this.event.mouse_left(function () {});\n this.event.mouse_right(function () {});\n this.event.gesture_pinck_start(function () {});\n this.event.gesture_pinck_end(function () {});\n }\n this.tip && this.tip.destroy();\n }\n }\n }, {\n key: \"openPositionEditing\",\n value: function openPositionEditing(cd) {\n this.positionEditing = true;\n this._positionEditingCallback = cd;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2() {\n var options,\n canvas,\n ratio,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n gap,\n fromDegreesArray,\n height,\n positionArray,\n i,\n _Cesium$Cartesian,\n a,\n BoundingSphere,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n canvas = this.getcanvas();\n ratio = canvas.height / canvas.width;\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_17__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 34;\n break;\n case 25:\n gap = Math.abs(Math.cos(Math.PI / 180 * this.options.position.lat)) * (0.0001 * this.options.scale);\n fromDegreesArray = [[this.options.position.lng - 0.0001 * this.options.scale / ratio, this.options.position.lat - gap], [this.options.position.lng + 0.0001 * this.options.scale / ratio, this.options.position.lat + gap]];\n _context2.next = 29;\n return this.getClampToHeight(this.options.position);\n case 29:\n height = _context2.sent;\n positionArray = [];\n for (i = 0; i < fromDegreesArray.length; i++) {\n a = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(fromDegreesArray[i]).concat([height]));\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 34:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.text = this.originalOptions.text;\n this.angle = this.originalOptions.angle;\n this.scale = this.originalOptions.scale;\n this.color = this.originalOptions.color;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_16__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 7;\n return this.sdk.removeIncetance(this.options.id);\n case 7:\n _context3.next = 9;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"getcanvas\",\n value: function getcanvas() {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var textArray = this.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n }\n this.options.text = textArray.join('\\n');\n var maxWidth = 0;\n for (var _i = 0; _i < textArray.length; _i++) {\n ctx.font = 200 + 'px serif';\n var width = ctx.measureText(textArray[_i]).width;\n if (maxWidth < width) {\n maxWidth = width;\n }\n }\n canvas.width = maxWidth;\n canvas.height = 220 * textArray.length;\n for (var _i2 = 0; _i2 < textArray.length; _i2++) {\n ctx.font = 200 + 'px serif';\n ctx.fillStyle = 'rgba(255, 255, 255, 0)';\n ctx.fillRect(0, 0, maxWidth + 30, 210);\n ctx.fillStyle = 'rgba(255, 255, 255, 1)';\n ctx.font = '200px serif';\n ctx.fillText(textArray[_i2], 0, 210 * (_i2 + 1));\n }\n return canvas;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (GroundText);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9Hcm91bmRUZXh0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1RleHRPYmplY3QvR3JvdW5kVGV4dC9pbmRleC5qcz8xY2E2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnLi9fZWxlbWVudCdcclxuaW1wb3J0IEJhc2UgZnJvbSAnLi4vLi4vaW5kZXgnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBHcm91bmRUZXh0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDotLTlnLDmloflrZdcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvuekui/pmpDol49cclxuICAgKiBAcGFyYW0gb3B0aW9ucy50ZXh0IHtzdHJpbmd9IOaWh+Wtl1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPSNGRkMxMDcge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYW5nbGU9MCB7bnVtYmVyfSDml4vovazop5LluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY2FsZT0xIHtudW1iZXJ9IOe8qeaUvuavlOS+i1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNwZWVkPTEge251bWJlcn0g5paH5a2X5rua5Yqo6YCf5bqmXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMucG9zaXRpb24g5L2N572uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucG9zaXRpb24ubG5nIOe7j+W6plxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBvc2l0aW9uLmxhdCDnuqzluqZcclxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wb3NpdGlvbnMg5Z2Q5qCH6ZuGW3tsb24sbGF0fV3ku4XlnKjmnKrlrprkuYkgcG9zaXRpb24g5pe25pyJ5pWIXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gb3B0aW9ucy50ZXh0IHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICBsZXQgdGV4dEFycmF5ID0gdGhpcy5vcHRpb25zLnRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGV4dEFycmF5W2ldLmxlbmd0aCA+IDgwKSB7XHJcbiAgICAgICAgdGV4dEFycmF5W2ldID0gdGV4dEFycmF5W2ldLnNsaWNlKDAsIDgwIC0gdGV4dEFycmF5W2ldLmxlbmd0aClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRleHRBcnJheS5sZW5ndGggPiA3MCkge1xyXG4gICAgICB0ZXh0QXJyYXkuc3BsaWNlKDcwIC0gdGV4dEFycmF5Lmxlbmd0aClcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdGV4dEFycmF5LmpvaW4oJ1xcbicpXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9XHJcbiAgICAgIG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmFuZ2xlID0gb3B0aW9ucy5hbmdsZSB8fCAwXHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGUgPVxyXG4gICAgICBvcHRpb25zLnNjYWxlIHx8IG9wdGlvbnMuc2NhbGUgPT09IDAgPyBvcHRpb25zLnNjYWxlIDogMVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmZvbnRTaXplID0gb3B0aW9ucy5mb250U2l6ZSB8fCAyMFxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmR1cmF0aW9uID1cclxuICAgIC8vICAgb3B0aW9ucy5kdXJhdGlvbiB8fCBvcHRpb25zLmR1cmF0aW9uID09PSAwID8gb3B0aW9ucy5kdXJhdGlvbiA6IDUwMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPVxyXG4gICAgICBvcHRpb25zLnNwZWVkIHx8IG9wdGlvbnMuc3BlZWQgPT09IDAgPyBvcHRpb25zLnNwZWVkIDogMVxyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCAnI0ZGQzEwNydcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb25cclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLm5hbWVcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbiA9IHsgbG5nOiAodGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcgKyB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZykgLyAyLCBsYXQ6ICh0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCArIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMV0ubGF0KSAvIDIgfVxyXG4gICAgICBsZXQgcG9pbnQxID0gdHVyZi5wb2ludChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XSk7XHJcbiAgICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1sxXS5sYXRdKTtcclxuXHJcbiAgICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ21pbGVzJyB9O1xyXG4gICAgICBsZXQgZGlzdGFuY2UxID0gdHVyZi5yaHVtYkRpc3RhbmNlKHBvaW50MSwgcG9pbnQyLCBvcHRpb25zKTtcclxuXHJcblxyXG4gICAgICAvLyDorqHnrpfkuKTngrnkuI546L205q2j5pa55ZCR55qE5aS56KeS77yI5byn5bqm77yJXHJcbiAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUFuZ2xlKHBvaW50QSwgcG9pbnRCKSB7XHJcbiAgICAgICAgbGV0IGR4ID0gcG9pbnRCWzBdIC0gcG9pbnRBWzBdO1xyXG4gICAgICAgIGxldCBkeSA9IHBvaW50QlsxXSAtIHBvaW50QVsxXTtcclxuICAgICAgICByZXR1cm4gTWF0aC5hdGFuMihkeSwgZHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYW5nbGVSYWRpYW5zID0gY2FsY3VsYXRlQW5nbGUoW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdF0sIFt0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1sxXS5sYXRdKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmFuZ2xlID0gKDM2MCArIENlc2l1bS5NYXRoLnRvRGVncmVlcyhhbmdsZVJhZGlhbnMpKSAlIDM2MFxyXG5cclxuICAgICAgbGV0IGdhcCA9XHJcbiAgICAgICAgTWF0aC5hYnMoTWF0aC5jb3MoKE1hdGguUEkgLyAxODApICogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCkpICpcclxuICAgICAgICAwLjAwMDFcclxuICAgICAgbGV0IGNhbnZhcyA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAgICAgbGV0IHJhdGlvID0gY2FudmFzLmhlaWdodCAvIGNhbnZhcy53aWR0aFxyXG4gICAgICBsZXQgbG5nMSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgLSAwLjAwMDEgLyByYXRpb1xyXG4gICAgICBsZXQgbGF0MSA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSBnYXBcclxuICAgICAgbGV0IGxuZzIgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgMC4wMDAxIC8gcmF0aW9cclxuICAgICAgbGV0IGxhdDIgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ICsgZ2FwXHJcbiAgICAgIGxldCBsbmcgPSAobG5nMSArIGxuZzIpIC8gMlxyXG4gICAgICBsZXQgbGF0ID0gKGxhdDEgKyBsYXQyKSAvIDJcclxuXHJcbiAgICAgIGxldCBmcm9tID0gdHVyZi5wb2ludChbbG5nMSwgbGF0XSk7XHJcbiAgICAgIGxldCB0byA9IHR1cmYucG9pbnQoW2xuZzIsIGxhdF0pO1xyXG4gICAgICBsZXQgZGlzdGFuY2UyID0gdHVyZi5yaHVtYkRpc3RhbmNlKGZyb20sIHRvLCBvcHRpb25zKTtcclxuICAgICAgbGV0IGxhdFJhZGlhbnMgPSBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdClcclxuICAgICAgZGlzdGFuY2UyID0gZGlzdGFuY2UyICogKDEgKyAoTWF0aC5hYnMoTWF0aC5zaW4oYW5nbGVSYWRpYW5zKSAqIE1hdGgudGFuKGxhdFJhZGlhbnMpICogTWF0aC5zaW4obGF0UmFkaWFucykgKiBNYXRoLnNpbihsYXRSYWRpYW5zKSkpKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2NhbGUgPSBkaXN0YW5jZTEgLyBkaXN0YW5jZTJcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmR1cmF0aW9uID0gNTAwMDBcclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIHRoaXMuX2VsbXMgPSB7fVxyXG4gICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICB0aGlzLmNyZWF0ZSgpXHJcbiAgfVxyXG5cclxuICBnZXQgbG5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmdcclxuICB9XHJcblxyXG4gIHNldCBsbmcodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyA9IHZcclxuICAgIHRoaXMuX2VsbXMubG5nICYmIHRoaXMuX2VsbXMubG5nLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXRcclxuICB9XHJcblxyXG4gIHNldCBsYXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGF0ICYmIHRoaXMuX2VsbXMubGF0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBnZXQgdGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudGV4dFxyXG4gIH1cclxuXHJcbiAgc2V0IHRleHQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnRleHQgPSB2XHJcbiAgICBsZXQgdGV4dEFycmF5ID0gdGhpcy5vcHRpb25zLnRleHQuc3BsaXQoJ1xcbicpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGV4dEFycmF5W2ldLmxlbmd0aCA+IDgwKSB7XHJcbiAgICAgICAgbGV0IF9lcnJvciA9ICfooYzotoXov4c4MOS4quWtl+espizor7fmjInlm57ovabvvIhFbnRlcu+8ieWQju+8jOe7p+e7rei+k+WFpSdcclxuICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IF9lcnJvcixcclxuICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgIGR1cmF0aW9uOiAxMDAwXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGV4dEFycmF5W2ldID0gdGV4dEFycmF5W2ldLnNsaWNlKDAsIDgwIC0gdGV4dEFycmF5W2ldLmxlbmd0aClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRleHRBcnJheS5sZW5ndGggPiA3MCkge1xyXG4gICAgICB0ZXh0QXJyYXkuc3BsaWNlKDcwIC0gdGV4dEFycmF5Lmxlbmd0aClcclxuICAgICAgbGV0IF9lcnJvciA9ICfotoXov4fmnIDlpKfovpPlhaXlrZfnrKYnXHJcbiAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgIG1lc3NhZ2U6IF9lcnJvcixcclxuICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHRleHRBcnJheS5qb2luKCdcXG4nKVxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGxldCBjYW52YXMgPSB0aGlzLmdldGNhbnZhcygpXHJcbiAgICAgIGxldCByYXRpbyA9IGNhbnZhcy5oZWlnaHQgLyBjYW52YXMud2lkdGhcclxuICAgICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLm1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgaW1hZ2U6IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpLFxyXG4gICAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgcmVwZWF0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMS4wLCAxLjApLFxyXG4gICAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uIC8gdGhpcy5vcHRpb25zLnNwZWVkLFxyXG4gICAgICAgIGZsdHI6IGZhbHNlLFxyXG4gICAgICAgIGlzMkQ6IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLmNvb3JkaW5hdGVzID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICBsZXQgZ2FwID1cclxuICAgICAgICAgIE1hdGguYWJzKE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQpKSAqXHJcbiAgICAgICAgICAoMC4wMDAxICogdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyAtICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpIC8gcmF0aW8sXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0IC0gZ2FwLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyArICgwLjAwMDEgKiB0aGlzLm9wdGlvbnMuc2NhbGUpIC8gcmF0aW8sXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ICsgZ2FwXHJcbiAgICAgICAgXVxyXG4gICAgICAgIHJldHVybiBDZXNpdW0uUmVjdGFuZ2xlLmZyb21EZWdyZWVzKC4uLmZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgIH0sIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy50ZXh0ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMudGV4dC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMudGV4dFxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFuZ2xlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbmdsZVxyXG4gIH1cclxuXHJcbiAgc2V0IGFuZ2xlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbmdsZSA9IE51bWJlcih2KVxyXG4gICAgdGhpcy5fZWxtcy5hbmdsZSAmJlxyXG4gICAgICB0aGlzLl9lbG1zLmFuZ2xlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2NhbGVcclxuICB9XHJcblxyXG4gIHNldCBzY2FsZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc2NhbGUgPSBOdW1iZXIodilcclxuICAgIHRoaXMuX2VsbXMuc2NhbGUgJiZcclxuICAgICAgdGhpcy5fZWxtcy5zY2FsZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBnZXQgZHVyYXRpb24oKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uXHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXQgZHVyYXRpb24odikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLmR1cmF0aW9uID0gdlxyXG4gIC8vICAgbGV0IGNhbnZhcyA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAvLyAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5tYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gIC8vICAgICBpbWFnZTogY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyksXHJcbiAgLy8gICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgLy8gICAgIHJlcGVhdDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDEuMCwgMS4wKSxcclxuICAvLyAgICAgZHVyYXRpb246IHRoaXMub3B0aW9ucy5kdXJhdGlvbiAvIHRoaXMub3B0aW9ucy5zcGVlZCxcclxuICAvLyAgICAgZmx0cjogZmFsc2UsXHJcbiAgLy8gICAgIGlzMkQ6IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkQgPyB0cnVlIDogZmFsc2VcclxuICAvLyAgIH0pXHJcbiAgLy8gICB0aGlzLl9lbG1zLmR1cmF0aW9uICYmXHJcbiAgLy8gICAgIHRoaXMuX2VsbXMuZHVyYXRpb24uZm9yRWFjaChpdGVtID0+IHtcclxuICAvLyAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gIC8vICAgICB9KVxyXG4gIC8vIH1cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG5cclxuICBzZXQgc3BlZWQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gTnVtYmVyKHYpXHJcbiAgICBsZXQgY2FudmFzID0gdGhpcy5nZXRjYW52YXMoKVxyXG4gICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLm1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgIGltYWdlOiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSxcclxuICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvcixcclxuICAgICAgcmVwZWF0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMS4wLCAxLjApLFxyXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbiAvIHRoaXMub3B0aW9ucy5zcGVlZCxcclxuICAgICAgZmx0cjogZmFsc2UsXHJcbiAgICAgIGlzMkQ6IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkQgPyB0cnVlIDogZmFsc2VcclxuICAgIH0pXHJcbiAgICB0aGlzLl9lbG1zLnNwZWVkICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgbGV0IGNhbnZhcyA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5tYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICBpbWFnZTogY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyksXHJcbiAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgIHJlcGVhdDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDEuMCwgMS4wKSxcclxuICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24gLyB0aGlzLm9wdGlvbnMuc3BlZWQsXHJcbiAgICAgIGZsdHI6IGZhbHNlLFxyXG4gICAgICBpczJEOiB0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gQ2VzaXVtLlNjZW5lTW9kZS5TQ0VORTJEID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsIC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IGMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwgLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0gLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgLy8gbGV0IGdhcCA9IE1hdGguYWJzKE1hdGguY29zKE1hdGguUEkvMTgwICogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCkpICogKDAuMDAwMSp0aGlzLm9wdGlvbnMuc2NhbGUpXHJcbiAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyAtIDAuMDUsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSAwLjA1LFxyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgMC4wNSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIDAuMDUsXHJcbiAgICAvLyAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgKyAwLjA1LCB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ICsgMC4wNSxcclxuICAgIC8vICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyAtIDAuMDUsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgKyAwLjA1LFxyXG4gICAgLy8gXVxyXG4gICAgbGV0IGNhbnZhcyA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAgIGxldCByYXRpbyA9IGNhbnZhcy5oZWlnaHQgLyBjYW52YXMud2lkdGhcclxuXHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgcmVjdGFuZ2xlOiB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZ2FwID1cclxuICAgICAgICAgICAgTWF0aC5hYnMoTWF0aC5jb3MoKE1hdGguUEkgLyAxODApICogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCkpICpcclxuICAgICAgICAgICAgKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSlcclxuICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSkgLyByYXRpbyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCAtIGdhcCxcclxuICAgICAgICAgICAgLy8gdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxuZyArIDAuMDUsIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSAwLjA1LFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nICsgKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSkgLyByYXRpbyxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIGdhcFxyXG4gICAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gMC4wNSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIDAuMDUsXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyguLi5mcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgICBpbWFnZTogY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyksXHJcbiAgICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgcmVwZWF0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMS4wLCAxLjApLFxyXG4gICAgICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24gLyB0aGlzLm9wdGlvbnMuc3BlZWQsXHJcbiAgICAgICAgICBmbHRyOiBmYWxzZSxcclxuICAgICAgICAgIGlzMkQ6IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkQgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICB9KSxcclxuICAgICAgICByb3RhdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmFuZ2xlKVxyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBzdFJvdGF0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuYW5nbGUpXHJcbiAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5zZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2Nlc2l1bS12aWV3ZXIgMmQnKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5LnJlY3RhbmdsZS5oZWlnaHQgPSAxMFxyXG4gICAgfVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvdykge1xyXG5cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG5cclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyhcclxuICAgICAgICB0aGlzLnNkayxcclxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogJ+i0tOWcsOaWh+Wtl+WxnuaApycsXHJcbiAgICAgICAgICBsZWZ0OiAnMTgwcHgnLFxyXG4gICAgICAgICAgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgICAgY29uZmlybUNhbGxCYWNrOiBvcHRpb25zID0+IHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy50ZXh0LnRyaW0oKVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMudGV4dCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGV4dCA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgICAgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrKClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAvLyB0aGlzLmVudGl0eS5zdHlsZSA9IG5ldyBDZXNpdW0uQ2VzaXVtM0RUaWxlU3R5bGUoe1xyXG4gICAgICAgICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvd0NhbGxCYWNrOiBzaG93ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbmFsQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSAhdGhpcy5wb3NpdGlvbkVkaXRpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGdyb3VuZC10ZXh0J1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJylcclxuICAgICAgdGhpcy5fRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSB0aGlzLl9FdmVudEJpbmRpbmcuZWxlbWVudFxyXG5cclxuICAgICAgLy8g6aKc6Imy57uE5Lu2XHJcbiAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb2xvcicpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywgLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLCAvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiBjb2xvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipAZGVzYyDmiZPlvIDlubPnp7vlip/og71cclxuICAgKlxyXG4gICAqIEBtZW1iZXJPZiBTb3VyY2VcclxuICAgKiBAcGFyYW0gc3RhdHVzIHtib29sZWFufVxyXG4gICAqXHJcbiAgICogKi9cclxuICBzZXQgcG9zaXRpb25FZGl0aW5nKHN0YXR1cykge1xyXG4gICAgaWYgKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyIHx8ICF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZyA9IHN0YXR1c1xyXG4gICAgdGhpcy5wcmV2aW91cyA9IHtcclxuICAgICAgcG9zaXRpb246IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfngrnlh7vpvKDmoIflt6bplK7noa7orqTvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb24ubGF0XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICB0aGlzLmxuZyA9IHBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gcG9zaXRpb24ubGF0XHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVkaXRpbmcgPSBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sbmcgPSB0aGlzLnByZXZpb3VzLnBvc2l0aW9uLmxuZ1xyXG4gICAgICAgIHRoaXMubGF0ID0gdGhpcy5wcmV2aW91cy5wb3NpdGlvbi5sYXRcclxuICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMubG5nID0gdGhpcy5wcmV2aW91cy5wb3NpdGlvbi5sbmdcclxuICAgICAgICAgICAgdGhpcy5sYXQgPSB0aGlzLnByZXZpb3VzLnBvc2l0aW9uLmxhdFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5sbmcgPSBwb3NpdGlvbi5sbmdcclxuICAgICAgICAgICAgdGhpcy5sYXQgPSBwb3NpdGlvbi5sYXRcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgoKSA9PiB7IH0pXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uRWRpdGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjaykge1xyXG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uRWRpdGluZ0NhbGxiYWNrKClcclxuICAgICAgICB0aGlzLl9wb3NpdGlvbkVkaXRpbmdDYWxsYmFjayA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ldmVudCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgoKSA9PiB7IH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KCgpID0+IHsgfSlcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKCkgPT4geyB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4geyB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbkVkaXRpbmdcclxuICB9XHJcblxyXG4gIG9wZW5Qb3NpdGlvbkVkaXRpbmcoY2QpIHtcclxuICAgIHRoaXMucG9zaXRpb25FZGl0aW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5fcG9zaXRpb25FZGl0aW5nQ2FsbGJhY2sgPSBjZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5YiwXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBsZXQgY2FudmFzID0gdGhpcy5nZXRjYW52YXMoKVxyXG4gICAgbGV0IHJhdGlvID0gY2FudmFzLmhlaWdodCAvIGNhbnZhcy53aWR0aFxyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb24gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmNlbnRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuY2VudGVyIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc3RhcnQpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnN0YXJ0IH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsbmcnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubG5nID0gdGhpcy5vcHRpb25zLmxuZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdsYXQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24ubGF0ID0gdGhpcy5vcHRpb25zLmxhdFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gdGhpcy5vcHRpb25zLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpq5jluqblgLzvvIzliJnojrflj5bntKfotLTpq5jluqborqHnrpdcclxuICAgICAgaWYgKCFwb3NpdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYWx0JykpIHtcclxuICAgICAgICBwb3NpdGlvbi5hbHQgPSBhd2FpdCB0aGlzLmdldENsYW1wVG9IZWlnaHQocG9zaXRpb24pXHJcbiAgICAgIH1cclxuICAgICAgbG5nID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sbmcgKyBwb3NpdGlvbi5sbmdcclxuICAgICAgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQgKyBwb3NpdGlvbi5hbHRcclxuICAgICAgZGVzdGluYXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIGxhdCwgYWx0KVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGdhcCA9XHJcbiAgICAgICAgTWF0aC5hYnMoTWF0aC5jb3MoKE1hdGguUEkgLyAxODApICogdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCkpICpcclxuICAgICAgICAoMC4wMDAxICogdGhpcy5vcHRpb25zLnNjYWxlKVxyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubG5nIC0gKDAuMDAwMSAqIHRoaXMub3B0aW9ucy5zY2FsZSkgLyByYXRpbyxcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sYXQgLSBnYXBcclxuICAgICAgICBdLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgKyAoMC4wMDAxICogdGhpcy5vcHRpb25zLnNjYWxlKSAvIHJhdGlvLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdCArIGdhcFxyXG4gICAgICAgIF1cclxuICAgICAgXVxyXG4gICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHRoaXMub3B0aW9ucy5wb3NpdGlvbilcclxuICAgICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21EZWdyZWVzQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmZyb21EZWdyZWVzQXJyYXlbaV0sIGhlaWdodClcclxuICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgfVxyXG4gICAgICBsZXQgQm91bmRpbmdTcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKHBvc2l0aW9uQXJyYXkpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy50ZXh0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMudGV4dFxyXG4gICAgdGhpcy5hbmdsZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmFuZ2xlXHJcbiAgICB0aGlzLnNjYWxlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2NhbGVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGdldGNhbnZhcygpIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXHJcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIGxldCB0ZXh0QXJyYXkgPSB0aGlzLm9wdGlvbnMudGV4dC5zcGxpdCgnXFxuJylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0ZXh0QXJyYXlbaV0ubGVuZ3RoID4gODApIHtcclxuICAgICAgICB0ZXh0QXJyYXlbaV0gPSB0ZXh0QXJyYXlbaV0uc2xpY2UoMCwgODAgLSB0ZXh0QXJyYXlbaV0ubGVuZ3RoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGV4dEFycmF5Lmxlbmd0aCA+IDcwKSB7XHJcbiAgICAgIHRleHRBcnJheS5zcGxpY2UoNzAgLSB0ZXh0QXJyYXkubGVuZ3RoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnRleHQgPSB0ZXh0QXJyYXkuam9pbignXFxuJylcclxuICAgIGxldCBtYXhXaWR0aCA9IDBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGN0eC5mb250ID0gMjAwICsgJ3B4IHNlcmlmJ1xyXG4gICAgICBjb25zdCB3aWR0aCA9IGN0eC5tZWFzdXJlVGV4dCh0ZXh0QXJyYXlbaV0pLndpZHRoXHJcbiAgICAgIGlmIChtYXhXaWR0aCA8IHdpZHRoKSB7XHJcbiAgICAgICAgbWF4V2lkdGggPSB3aWR0aFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYW52YXMud2lkdGggPSBtYXhXaWR0aFxyXG4gICAgY2FudmFzLmhlaWdodCA9IDIyMCAqIHRleHRBcnJheS5sZW5ndGhcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGN0eC5mb250ID0gMjAwICsgJ3B4IHNlcmlmJ1xyXG4gICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknXHJcbiAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBtYXhXaWR0aCArIDMwLCAyMTApXHJcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgyNTUsIDI1NSwgMjU1LCAxKSdcclxuICAgICAgY3R4LmZvbnQgPSAnMjAwcHggc2VyaWYnXHJcbiAgICAgIGN0eC5maWxsVGV4dCh0ZXh0QXJyYXlbaV0sIDAsIDIxMCAqIChpICsgMSkpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhbnZhc1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgR3JvdW5kVGV4dFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBU0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFVQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUE1Q0E7QUE2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFwRkE7QUFBQTtBQUFBO0FBQUE7QUFzRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBb0ZBO0FBQ0E7QUFBQTtBQS9FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUdBO0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBckZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/TextObject/GroundText/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TextObject/StandText/_element.js": -/*!*******************************************************!*\ - !*** ./src/Obj/Base/TextObject/StandText/_element.js ***! - \*******************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html(that) {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n \\u989C\\u8272\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u6EDA\\u52A8\\u901F\\u5EA6\\n \\n \\n
    \\n
    \\n
    \\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9TdGFuZFRleHQvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9TdGFuZFRleHQvX2VsZW1lbnQuanM/NWU2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBAbW9kZWw9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mu5rliqjpgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTAwXCIgbWluPVwiMFwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwic3BlZWRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDt3aWR0aDogMTAwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjEwMFwiIEBtb2RlbD1cInNwZWVkXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBCQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/TextObject/StandText/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TextObject/StandText/index.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/TextObject/StandText/index.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/TextObject/StandText/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\n\n\n\n\nvar StandText = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 立体文字\r\n * @param options {object}\r\n * @param options.id {string} 唯一标识\r\n * @param options.text {string} 文字\r\n * @param options.color=\"#FFC107\" {string} 颜色\r\n * @param options.speed=1 {number} 文字移动速度\r\n * @param {Array.} positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function StandText(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, StandText);\n _this2 = _callSuper(this, StandText, [sdk, options]);\n _this2.options.text = options.text || \"未命名对象\";\n var textArray = _this2.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n }\n _this2.options.text = textArray.join('\\n');\n _this2.options.color = options.color || \"#FFC107\";\n // this.options.cornerType = options.cornerType || 'MITERED'\n _this2.options.positions = options.positions;\n // this.options.material = Number(options.material) || 0\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 1;\n // this.options.duration = (options.duration || options.duration === 0) ? options.duration : 50000\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.nodePoints = [];\n _this2.entity;\n delete _this2.options.name;\n _this2.extrudedHeight;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_9__[\"default\"]();\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n StandText.create(_this2);\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(StandText, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(StandText, [{\n key: \"name\",\n get: function get() {\n return;\n }\n }, {\n key: \"text\",\n get: function get() {\n return this.options.text;\n },\n set: function set(v) {\n this.options.text = v;\n var textArray = this.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n var _error = '行超过80个字符,请按回车(Enter)后,继续输入';\n window.ELEMENT && window.ELEMENT.Message({\n message: _error,\n type: 'warning',\n duration: 1000\n });\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n var _error2 = '超过最大输入字符';\n window.ELEMENT && window.ELEMENT.Message({\n message: _error2,\n type: 'warning',\n duration: 1000\n });\n }\n this.options.text = textArray.join('\\n');\n if (this.entity) {\n var positions = this.options.positions;\n var fromDegreesArray = [];\n var minimumHeights = [];\n var maximumHeights = [];\n var material = this.getMaterial();\n var width = this.computeDistance2(positions);\n var extrudedHeight = this.aspectRatio ? width / this.aspectRatio : 0;\n for (var _i = 0; _i < positions.length; _i++) {\n fromDegreesArray.push(positions[_i].lng, positions[_i].lat);\n minimumHeights.push(positions[_i].alt);\n maximumHeights.push(positions[_i].alt + extrudedHeight);\n }\n this.entity.wall.material = material;\n this.entity.wall.maximumHeights = maximumHeights;\n this.entity.wall.minimumHeights = minimumHeights;\n }\n this._elms.text && this._elms.text.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v;\n this.entity.wall.material = this.getMaterial();\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n\n // get material() {\n // return this.options.material\n // }\n // set material(v) {\n // this.options.material = Number(v)\n // this.entity.wall.material = this.getMaterial()\n // this._elms.material && this._elms.material.forEach((item) => {\n // item.value = v\n // })\n // }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = Number(v);\n this.entity.wall.material = this.getMaterial();\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n }\n\n // get attributeLink() {\n // return this.options.attribute.link.content\n // }\n\n // set attributeLink(v) {\n // this.options.attribute.link.content = v\n // if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content) {\n // return\n // }\n // let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // tableContent.innerHTML = ''\n // if (this.options.attribute.link.content.length > 0) {\n // table.getElementsByClassName('table-empty')[0].style.display = 'none'\n // }\n // else {\n // table.getElementsByClassName('table-empty')[0].style.display = 'flex'\n // }\n // for (let i = 0; i < this.options.attribute.link.content.length; i++) {\n // let tr = `\n //
    \n //
    ` + this.options.attribute.link.content[i].name + `
    \n //
    ` + this.options.attribute.link.content[i].url + `
    \n //
    \n // \n // \n //
    \n //
    `\n // let trElm = document.createRange().createContextualFragment(tr)\n // tableContent.appendChild(trElm)\n // }\n // let item = tableContent.getElementsByClassName('tr')\n // let fun = {\n // linkEdit: async (index) => {\n // this.attributeLink = await this.options.attribute.link.content\n // let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0]\n // let tableContent = table.getElementsByClassName('table-body')[0]\n // let item = tableContent.getElementsByClassName('tr')\n // for (let i = 0; i < item.length; i++) {\n // if (index === i) {\n // let html = `\n //
    \n // \n //
    \n //
    \n //
    \n // \n // \n // \n //
    \n //
    \n //
    \n // \n // \n //
    `\n // item[i].innerHTML = html\n // let td = item[i].getElementsByClassName('td')\n // td[0].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].name\n // td[1].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].url\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', (e) => {\n // if (typeof (fun[m.value]) === 'function') {\n // fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i)\n // }\n // });\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // break\n // }\n // }\n // },\n // linkDelete: (i) => {\n // this.options.attribute.link.content.splice(i, 1)\n // this.attributeLink = this.options.attribute.link.content\n // },\n\n // confirmEdit: (value, i) => {\n // this.options.attribute.link.content[i] = value\n // this.attributeLink = this.options.attribute.link.content\n // },\n // cancelEdit: () => {\n // this.attributeLink = this.options.attribute.link.content\n // },\n // fileSelect: (value, i) => {\n // let fileElm = item[i].getElementsByClassName('file-select')[0]\n // fileElm.click()\n // fileElm.removeEventListener('change', fileSelect)\n // fileElm.addEventListener('change', fileSelect)\n // }\n // }\n // let fileSelect = (event) => {\n // if (event.target.value) {\n // let td = item[event.target.getAttribute('index')].getElementsByClassName('td')\n // td[1].getElementsByClassName('input')[0].value = event.target.value\n // event.target.value = null\n // }\n // }\n // for (let i = 0; i < item.length; i++) {\n // let btn = item[i].getElementsByTagName('button')\n // for (let n = 0; n < btn.length; n++) {\n // for (let m of btn[n].attributes) {\n // if (m.name === '@click') {\n // btn[n].addEventListener('click', (e) => {\n // if (typeof (fun[m.value]) === 'function') {\n // fun[m.value](i)\n // }\n // });\n // btn[n].attributes.removeNamedItem(m.name)\n // break\n // }\n // }\n // }\n // }\n\n // }\n\n //创建\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(state) {\n var _this4 = this;\n var _this, contentElm, colorPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 18;\n break;\n }\n _context.next = 6;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk, this.options, {\n title: '立体文字属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this4.text = _this4.text.trim();\n if (!_this4.text) {\n _this4.text = '未命名对象';\n }\n _this4.originalOptions = _this4.deepCopyObj(_this4.options);\n _this4._DialogObject.close();\n _this4.Dialog.confirmCallBack && _this4.Dialog.confirmCallBack(_this4.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(_this4.sdk, _this4.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_18__[\"syncSplitData\"])(_this4.sdk, _this4.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this4.reset();\n _this4.Dialog.resetCallBack && _this4.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this4.Dialog.removeCallBack && _this4.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this4.reset();\n _this4.Dialog.closeCallBack && _this4.Dialog.closeCallBack();\n for (var i = 0; i < _this4.nodePoints.length; i++) {\n _this4.sdk.viewer.entities.remove(_this4.nodePoints[i]);\n }\n _this4.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n _this4.event && _this4.event.destroy();\n _this4.tip && _this4.tip.destroy();\n },\n showCallBack: function showCallBack(show) {\n _this4.options.show = show;\n _this4.originalOptions.show = show;\n _this4.show = show;\n _this4.Dialog.showCallBack && _this4.Dialog.showCallBack();\n },\n secondaryEditCallBack: function secondaryEditCallBack() {\n _this4.nodeEdit();\n }\n });\n case 6:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' stand-text';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n // setTimeout(() => {\n // this.attributeLink = this.options.attribute.link.content\n // this.cameraSelect()\n // }, 500);\n\n // 创建标签页\n // let tabsElm = new cy_tabs('radar-scan-edit-tabs')\n // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this4.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [colorPicker];\n _context.next = 19;\n break;\n case 18:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.text = this.originalOptions.text;\n this.color = this.originalOptions.color;\n this.speed = this.originalOptions.speed;\n var positions = this.options.positions;\n var fromDegreesArray = [];\n var minimumHeights = [];\n var maximumHeights = [];\n var width = this.computeDistance2(positions);\n var extrudedHeight = this.aspectRatio ? width / this.aspectRatio : 0;\n // aspectRatio\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n minimumHeights.push(positions[i].alt);\n maximumHeights.push(positions[i].alt + extrudedHeight);\n }\n this.entity.wall.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_18__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 7;\n return this.sdk.removeIncetance(this.options.id);\n case 7:\n _context2.next = 9;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"getMaterial\",\n value: function getMaterial() {\n var material;\n var canvas = this.getcanvas();\n material = new Cesium.CustomMaterialSource({\n image: canvas.toDataURL(\"image/png\"),\n color: this.options.color,\n repeat: new Cesium.Cartesian2(1, 1.0),\n duration: 50000 / this.options.speed,\n fltr: false\n });\n return material;\n }\n }, {\n key: \"getcanvas\",\n value: function getcanvas() {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var textArray = this.options.text.split('\\n');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].length > 80) {\n textArray[i] = textArray[i].slice(0, 80 - textArray[i].length);\n }\n }\n if (textArray.length > 70) {\n textArray.splice(70 - textArray.length);\n }\n this.options.text = textArray.join('\\n');\n var maxWidth = 0;\n for (var _i2 = 0; _i2 < textArray.length; _i2++) {\n ctx.font = 200 + \"px serif\";\n var width = ctx.measureText(textArray[_i2]).width;\n if (maxWidth < width) {\n maxWidth = width;\n }\n }\n canvas.width = maxWidth;\n canvas.height = 220 * textArray.length;\n for (var _i3 = 0; _i3 < textArray.length; _i3++) {\n ctx.font = 200 + \"px serif\";\n ctx.fillStyle = 'rgba(255, 255, 255, 0)';\n ctx.fillRect(0, 0, maxWidth + 30, 210);\n ctx.fillStyle = 'rgba(255, 255, 255, 1)';\n ctx.font = \"200px serif\";\n ctx.fillText(textArray[_i3], 0, 210 * (_i3 + 1));\n }\n this.aspectRatio = this.options.text ? canvas.width / canvas.height : 0;\n return canvas;\n }\n\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this5 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.text, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this5.options.richTextContent = content;\n };\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var _this6 = this;\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n YJ.Measure.SetMeasureStatus(true);\n this._nodeEditCallback = cb;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk);\n this.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var positions = this.options.positions;\n var fromDegreesArray = [];\n var minimumHeights = [];\n var maximumHeights = [];\n var width = this.computeDistance2(positions);\n var extrudedHeight = this.aspectRatio ? width / this.aspectRatio : 0;\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n minimumHeights.push(positions[i].alt);\n maximumHeights.push(positions[i].alt + extrudedHeight);\n }\n var isAdd = false;\n var leftEvent = function leftEvent(movement, cartesian) {\n if (selectPoint) {\n isAdd = true;\n var pos3 = _this6.sdk.viewer.scene.clampToHeight(cartesian, [_this6.entity]);\n _this6.options.positions[selectPoint.index] = _this6.cartesian3Towgs84(pos3, _this6.sdk.viewer);\n originalPosition = _this6.options.positions[selectPoint.index];\n var entity = _this6.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(_this6.options.positions[selectPoint.index].lng, _this6.options.positions[selectPoint.index].lat, _this6.options.positions[selectPoint.index].alt),\n billboard: {\n image: _this6.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n _this6.nodePoints.splice(selectPoint.index, 0, entity);\n _this6.options.positions.splice(selectPoint.index, 0, _this6.options.positions[selectPoint.index]);\n var _positions = _this6.options.positions;\n fromDegreesArray = [];\n minimumHeights = [];\n maximumHeights = [];\n width = _this6.computeDistance2(_positions);\n extrudedHeight = _this6.aspectRatio ? width / _this6.aspectRatio : 0;\n for (var _i4 = 0; _i4 < _positions.length; _i4++) {\n fromDegreesArray.push(_positions[_i4].lng, _positions[_i4].lat);\n minimumHeights.push(_positions[_i4].alt);\n maximumHeights.push(_positions[_i4].alt + extrudedHeight);\n }\n _this6.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n } else {\n var pick = _this6.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n _this6.nodePoints.splice(pick.id.index, 1);\n _this6.sdk.viewer.entities.remove(pick.id);\n _this6.tip.set_text('左键单击确认顶点位置,右键单击结束,CTRL+右键撤销');\n originalPosition = _this6.cartesian3Towgs84(cartesian, _this6.sdk.viewer);\n _this6.entity.wall.positions = new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n }, false);\n _this6.entity.wall.maximumHeights = new Cesium.CallbackProperty(function () {\n return maximumHeights;\n }, false);\n _this6.entity.wall.minimumHeights = new Cesium.CallbackProperty(function () {\n return minimumHeights;\n }, false);\n }\n }\n };\n var rightEvent = function rightEvent(movement, cartesian) {\n if (selectPoint) {\n _this6.options.positions[selectPoint.index] = originalPosition;\n if (isAdd) {\n _this6.options.positions.splice(selectPoint.index, 1);\n }\n if (!_this6.options.positions || _this6.options.positions.length < 2) {\n console.warn('最少需要两个坐标!');\n window.ELEMENT && window.ELEMENT.Message({\n message: '最少需要两个坐标!',\n type: 'warning',\n duration: 1500\n });\n _this6.options.positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(previous);\n }\n cb(null, _this6.options.positions);\n }\n var positions = _this6.options.positions;\n fromDegreesArray = [];\n minimumHeights = [];\n maximumHeights = [];\n width = _this6.computeDistance2(positions);\n extrudedHeight = _this6.aspectRatio ? width / _this6.aspectRatio : 0;\n for (var _i5 = 0; _i5 < positions.length; _i5++) {\n fromDegreesArray.push(positions[_i5].lng, positions[_i5].lat);\n minimumHeights.push(positions[_i5].alt);\n maximumHeights.push(positions[_i5].alt + extrudedHeight);\n }\n _this6.entity.wall.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n for (var _i6 = 0; _i6 < _this6.nodePoints.length; _i6++) {\n _this6.sdk.viewer.entities.remove(_this6.nodePoints[_i6]);\n }\n _this6.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n _this6.event.destroy();\n _this6.tip.destroy();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(rightEvent);\n this.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n var pos3 = _this6.sdk.viewer.scene.clampToHeight(cartesian, [_this6.entity]);\n _this6.options.positions[selectPoint.index] = _this6.cartesian3Towgs84(pos3, _this6.sdk.viewer);\n var _positions2 = _this6.options.positions;\n fromDegreesArray = [];\n minimumHeights = [];\n maximumHeights = [];\n width = _this6.computeDistance2(_positions2);\n extrudedHeight = _this6.aspectRatio ? width / _this6.aspectRatio : 0;\n for (var _i7 = 0; _i7 < _positions2.length; _i7++) {\n fromDegreesArray.push(_positions2[_i7].lng, _positions2[_i7].lat);\n minimumHeights.push(_positions2[_i7].alt);\n maximumHeights.push(_positions2[_i7].alt + extrudedHeight);\n }\n }\n _this6.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n _this6.options.positions.pop();\n _this6.sdk.viewer.entities.remove(_this6.nodePoints[_this6.nodePoints.length - 1]);\n _this6.nodePoints.pop();\n if (selectPoint.index === _this6.options.positions.length) {\n if (_this6.nodePoints[selectPoint.index - 1]) {\n selectPoint = _this6.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = 0;\n }\n }\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this6.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n for (var _i8 = 0; _i8 < this.options.positions.length; _i8++) {\n var entity = this.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i8,\n position: Cesium.Cartesian3.fromDegrees(this.options.positions[_i8].lng, this.options.positions[_i8].lat, this.options.positions[_i8].alt),\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n this.nodePoints.push(entity);\n }\n }\n }\n }], [{\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3(that) {\n var positions, fromDegreesArray, minimumHeights, maximumHeights, material, width, extrudedHeight, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n // console.log(new Cesium.CustomMaterialSource(), new Cesium.PolylineTrailLinkMaterialProperty())\n positions = that.options.positions;\n fromDegreesArray = [];\n minimumHeights = [];\n maximumHeights = [];\n material = that.getMaterial();\n width = that.computeDistance2(positions);\n extrudedHeight = that.aspectRatio ? width / that.aspectRatio : 0; // aspectRatio\n for (i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n minimumHeights.push(positions[i].alt);\n maximumHeights.push(positions[i].alt + extrudedHeight);\n }\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n wall: {\n positions: Cesium.Cartesian3.fromDegreesArray(fromDegreesArray),\n cornerType: Cesium.CornerType.MITERED,\n maximumHeights: maximumHeights,\n minimumHeights: minimumHeights,\n material: material\n }\n // wall: {\n // positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n // maximumHeights: maximumHeights,\n // minimumHeights: minimumHeights,\n // material: new Cesium.PolylineTrailLinkMaterialProperty({duration: 1500}),\n // outline: true,\n // outlineColor: Cesium.Color.BLACK,\n // }\n });\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_18__[\"setSplitDirection\"])(0, that.options.id);\n }\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function create(_x2) {\n return _create.apply(this, arguments);\n }\n return create;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (StandText);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9TdGFuZFRleHQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvVGV4dE9iamVjdC9TdGFuZFRleHQvaW5kZXguanM/ZDk1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgY3lfdGFicyBmcm9tIFwiLi4vLi4vLi4vRWxlbWVudC9jeV9odG1sX3RhYnNcIjtcclxuaW1wb3J0IHJpY2hUZXh0IGZyb20gXCIuLi8uLi8uLi9FbGVtZW50L3JpY2hUZXh0XCI7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcclxuaW1wb3J0IExhYmVsT2JqZWN0IGZyb20gJy4uLy4uL0xhYmVsT2JqZWN0J1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi8uLi9FdmVudCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgeyBzeW5jRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5cclxuY2xhc3MgU3RhbmRUZXh0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDnq4vkvZPmloflrZdcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnRleHQge3N0cmluZ30g5paH5a2XXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9XCIjRkZDMTA3XCIge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MSB7bnVtYmVyfSDmloflrZfnp7vliqjpgJ/luqZcclxuICAgKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBwb3NpdGlvbnMg57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucywgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLnRleHQgPSBvcHRpb25zLnRleHQgfHwgXCLmnKrlkb3lkI3lr7nosaFcIlxyXG4gICAgbGV0IHRleHRBcnJheSA9IHRoaXMub3B0aW9ucy50ZXh0LnNwbGl0KCdcXG4nKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRleHRBcnJheVtpXS5sZW5ndGggPiA4MCkge1xyXG4gICAgICAgIHRleHRBcnJheVtpXSA9IHRleHRBcnJheVtpXS5zbGljZSgwLCA4MC10ZXh0QXJyYXlbaV0ubGVuZ3RoKVxyXG4gICAgICB9IFxyXG4gICAgfVxyXG4gICAgaWYgKHRleHRBcnJheS5sZW5ndGggPiA3MCkge1xyXG4gICAgICB0ZXh0QXJyYXkuc3BsaWNlKDcwIC0gdGV4dEFycmF5Lmxlbmd0aClcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdGV4dEFycmF5LmpvaW4oJ1xcbicpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8IFwiI0ZGQzEwN1wiXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuY29ybmVyVHlwZSA9IG9wdGlvbnMuY29ybmVyVHlwZSB8fCAnTUlURVJFRCdcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBvcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgLy8gdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gTnVtYmVyKG9wdGlvbnMubWF0ZXJpYWwpIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IChvcHRpb25zLnNwZWVkIHx8IG9wdGlvbnMuc3BlZWQgPT09IDApID8gb3B0aW9ucy5zcGVlZCA6IDFcclxuICAgIC8vIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA9IChvcHRpb25zLmR1cmF0aW9uIHx8IG9wdGlvbnMuZHVyYXRpb24gPT09IDApID8gb3B0aW9ucy5kdXJhdGlvbiA6IDUwMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgdGhpcy5lbnRpdHlcclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLm5hbWVcclxuXHJcbiAgICB0aGlzLmV4dHJ1ZGVkSGVpZ2h0XHJcbiAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICAgIFN0YW5kVGV4dC5jcmVhdGUodGhpcylcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGdldCB0ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50ZXh0XHJcbiAgfVxyXG5cclxuICBzZXQgdGV4dCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGV4dCA9IHZcclxuICAgIGxldCB0ZXh0QXJyYXkgPSB0aGlzLm9wdGlvbnMudGV4dC5zcGxpdCgnXFxuJylcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0ZXh0QXJyYXlbaV0ubGVuZ3RoID4gODApIHtcclxuICAgICAgICBsZXQgX2Vycm9yID0gJ+ihjOi2hei/hzgw5Liq5a2X56ymLOivt+aMieWbnui9pu+8iEVudGVy77yJ5ZCO77yM57un57ut6L6T5YWlJ1xyXG4gICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgbWVzc2FnZTogX2Vycm9yLFxyXG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgICB9KTtcclxuICAgICAgICB0ZXh0QXJyYXlbaV0gPSB0ZXh0QXJyYXlbaV0uc2xpY2UoMCwgODAtdGV4dEFycmF5W2ldLmxlbmd0aClcclxuICAgICAgfSBcclxuICAgIH1cclxuICAgIGlmICh0ZXh0QXJyYXkubGVuZ3RoID4gNzApIHtcclxuICAgICAgdGV4dEFycmF5LnNwbGljZSg3MCAtIHRleHRBcnJheS5sZW5ndGgpXHJcbiAgICAgIGxldCBfZXJyb3IgPSAn6LaF6L+H5pyA5aSn6L6T5YWl5a2X56ymJ1xyXG4gICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgbWVzc2FnZTogX2Vycm9yLFxyXG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdGV4dEFycmF5LmpvaW4oJ1xcbicpXHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgbWluaW11bUhlaWdodHMgPSBbXVxyXG4gICAgICBsZXQgbWF4aW11bUhlaWdodHMgPSBbXVxyXG4gICAgICBsZXQgbWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKClcclxuICAgICAgbGV0IHdpZHRoID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKHBvc2l0aW9ucylcclxuICAgICAgbGV0IGV4dHJ1ZGVkSGVpZ2h0ID0gdGhpcy5hc3BlY3RSYXRpbyA/ICh3aWR0aCAvIHRoaXMuYXNwZWN0UmF0aW8pIDogMFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICAgIG1pbmltdW1IZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgICBtYXhpbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQgKyBleHRydWRlZEhlaWdodClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVudGl0eS53YWxsLm1hdGVyaWFsID0gbWF0ZXJpYWxcclxuICAgICAgdGhpcy5lbnRpdHkud2FsbC5tYXhpbXVtSGVpZ2h0cyA9IG1heGltdW1IZWlnaHRzXHJcbiAgICAgIHRoaXMuZW50aXR5LndhbGwubWluaW11bUhlaWdodHMgPSBtaW5pbXVtSGVpZ2h0c1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy50ZXh0ICYmIHRoaXMuX2VsbXMudGV4dC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgdGhpcy5lbnRpdHkud2FsbC5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoKVxyXG4gICAgaWYgKHRoaXMuX2VsbXMuY29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IG1hdGVyaWFsKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXRlcmlhbFxyXG4gIC8vIH1cclxuICAvLyBzZXQgbWF0ZXJpYWwodikge1xyXG4gIC8vICAgdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gTnVtYmVyKHYpXHJcbiAgLy8gICB0aGlzLmVudGl0eS53YWxsLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbCgpXHJcbiAgLy8gICB0aGlzLl9lbG1zLm1hdGVyaWFsICYmIHRoaXMuX2VsbXMubWF0ZXJpYWwuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gIC8vICAgICBpdGVtLnZhbHVlID0gdlxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIGdldCBzcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3BlZWRcclxuICB9XHJcblxyXG4gIHNldCBzcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPSBOdW1iZXIodilcclxuICAgIHRoaXMuZW50aXR5LndhbGwubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKClcclxuICAgIHRoaXMuX2VsbXMuc3BlZWQgJiYgdGhpcy5fZWxtcy5zcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldCBhdHRyaWJ1dGVMaW5rKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXQgYXR0cmlidXRlTGluayh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHZcclxuICAvLyAgIGlmICghdGhpcy5fRGlhbG9nT2JqZWN0IHx8ICF0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgfHwgIXRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgLy8gICAgIHJldHVyblxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAvLyAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAvLyAgIHRhYmxlQ29udGVudC5pbm5lckhUTUwgPSAnJ1xyXG4gIC8vICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgLy8gICB9XHJcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgIGxldCB0ciA9IGBcclxuICAvLyAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgLy8gICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICsgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRbaV0ubmFtZSArIGA8L2Rpdj5cclxuICAvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPmAgKyB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXS51cmwgKyBgPC9kaXY+XHJcbiAgLy8gICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAvLyAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGV4dFwiIEBjbGljaz1cImxpbmtFZGl0XCI+57yW6L6RPC9idXR0b24+XHJcbiAgLy8gICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRleHRcIiBAY2xpY2s9XCJsaW5rRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgLy8gICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgPC9kaXY+YFxyXG4gIC8vICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAvLyAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gIC8vICAgbGV0IGZ1biA9IHtcclxuICAvLyAgICAgbGlua0VkaXQ6IGFzeW5jIChpbmRleCkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IGF3YWl0IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgLy8gICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAvLyAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgLy8gICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gIC8vICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgLy8gICAgICAgICAgIGxldCBodG1sID0gYFxyXG4gIC8vICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxyXG4gIC8vICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgLy8gICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxNDBweDtcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLm1wNCwgLnBkZlwiIGNsYXNzPVwiZmlsZS1zZWxlY3RcIiBpbmRleD1cImArIGkgKyBgXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJmaWxlU2VsZWN0XCI+Li4uPC9idXR0b24+XHJcbiAgLy8gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRleHRcIiBAY2xpY2s9XCJjb25maXJtRWRpdFwiPuehruiupDwvYnV0dG9uPlxyXG4gIC8vICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGV4dFwiIEBjbGljaz1cImNhbmNlbEVkaXRcIj7lj5bmtog8L2J1dHRvbj5cclxuICAvLyAgICAgICAgICAgICA8L2Rpdj5gXHJcbiAgLy8gICAgICAgICAgIGl0ZW1baV0uaW5uZXJIVE1MID0gaHRtbFxyXG4gIC8vICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAvLyAgICAgICAgICAgdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS5uYW1lXHJcbiAgLy8gICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpbmRleF0udXJsXHJcbiAgLy8gICAgICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gIC8vICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gIC8vICAgICAgICAgICAgIGZvciAobGV0IG0gb2YgYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAvLyAgICAgICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoZnVuW20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKHsgbmFtZTogdGRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQnKVswXS52YWx1ZSwgdXJsOiB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlIH0sIGkpXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgICAgICAgICAgYnRuW25dLmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJdGVtKG0ubmFtZSlcclxuICAvLyAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgYnJlYWtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGxpbmtEZWxldGU6IChpKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQuc3BsaWNlKGksIDEpXHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAvLyAgICAgfSxcclxuXHJcbiAgLy8gICAgIGNvbmZpcm1FZGl0OiAodmFsdWUsIGkpID0+IHtcclxuICAvLyAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtpXSA9IHZhbHVlXHJcbiAgLy8gICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgY2FuY2VsRWRpdDogKCkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuYXR0cmlidXRlTGluayA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gIC8vICAgICAgIGxldCBmaWxlRWxtID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlLXNlbGVjdCcpWzBdXHJcbiAgLy8gICAgICAgZmlsZUVsbS5jbGljaygpXHJcbiAgLy8gICAgICAgZmlsZUVsbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmaWxlU2VsZWN0KVxyXG4gIC8vICAgICAgIGZpbGVFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZmlsZVNlbGVjdClcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgbGV0IGZpbGVTZWxlY3QgPSAoZXZlbnQpID0+IHtcclxuICAvLyAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gIC8vICAgICAgIGxldCB0ZCA9IGl0ZW1bZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaW5kZXgnKV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGQnKVxyXG4gIC8vICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF0udmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcclxuICAvLyAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAvLyAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBidG4ubGVuZ3RoOyBuKyspIHtcclxuICAvLyAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgLy8gICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gIC8vICAgICAgICAgICBidG5bbl0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIGlmICh0eXBlb2YgKGZ1blttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAvLyAgICAgICAgICAgICAgIGZ1blttLnZhbHVlXShpKVxyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgLy8gICAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vIH1cclxuXHJcbiAgLy/liJvlu7pcclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlKHRoYXQpIHtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhuZXcgQ2VzaXVtLkN1c3RvbU1hdGVyaWFsU291cmNlKCksIG5ldyBDZXNpdW0uUG9seWxpbmVUcmFpbExpbmtNYXRlcmlhbFByb3BlcnR5KCkpXHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgbGV0IG1pbmltdW1IZWlnaHRzID0gW11cclxuICAgIGxldCBtYXhpbXVtSGVpZ2h0cyA9IFtdXHJcbiAgICBsZXQgbWF0ZXJpYWwgPSB0aGF0LmdldE1hdGVyaWFsKClcclxuICAgIGxldCB3aWR0aCA9IHRoYXQuY29tcHV0ZURpc3RhbmNlMihwb3NpdGlvbnMpXHJcbiAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSB0aGF0LmFzcGVjdFJhdGlvID8gKHdpZHRoIC8gdGhhdC5hc3BlY3RSYXRpbykgOiAwXHJcbiAgICAvLyBhc3BlY3RSYXRpb1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgIG1pbmltdW1IZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgbWF4aW11bUhlaWdodHMucHVzaChwb3NpdGlvbnNbaV0uYWx0ICsgZXh0cnVkZWRIZWlnaHQpXHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHdhbGw6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSksXHJcbiAgICAgICAgY29ybmVyVHlwZTogQ2VzaXVtLkNvcm5lclR5cGUuTUlURVJFRCxcclxuICAgICAgICBtYXhpbXVtSGVpZ2h0czogbWF4aW11bUhlaWdodHMsXHJcbiAgICAgICAgbWluaW11bUhlaWdodHM6IG1pbmltdW1IZWlnaHRzLFxyXG4gICAgICAgIG1hdGVyaWFsOiBtYXRlcmlhbCxcclxuICAgICAgfSxcclxuICAgICAgLy8gd2FsbDoge1xyXG4gICAgICAvLyAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSksXHJcbiAgICAgIC8vICAgbWF4aW11bUhlaWdodHM6IG1heGltdW1IZWlnaHRzLFxyXG4gICAgICAvLyAgIG1pbmltdW1IZWlnaHRzOiBtaW5pbXVtSGVpZ2h0cyxcclxuICAgICAgLy8gICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZVRyYWlsTGlua01hdGVyaWFsUHJvcGVydHkoe2R1cmF0aW9uOiAxNTAwfSksXHJcbiAgICAgIC8vICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgLy8gICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5CTEFDSyxcclxuICAgICAgLy8gfVxyXG4gICAgfSlcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZih0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG4gICAgICAgXHJcbiAgICAgIHNldFNwbGl0RGlyZWN0aW9uKDAsIHRoYXQub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOe8lui+keahhlxyXG4gIGFzeW5jIGVkaXQoc3RhdGUpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGssIHRoaXMub3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn56uL5L2T5paH5a2X5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMudGV4dC50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBzaG93XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZWNvbmRhcnlFZGl0Q2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubm9kZUVkaXQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBzdGFuZC10ZXh0J1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwodGhpcylcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gICB0aGlzLmF0dHJpYnV0ZUxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAvLyAgIHRoaXMuY2FtZXJhU2VsZWN0KClcclxuICAgICAgLy8gfSwgNTAwKTtcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICAvLyBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdyYWRhci1zY2FuLWVkaXQtdGFicycpXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IgPSBbY29sb3JQaWNrZXJdXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLnRleHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50ZXh0XHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMuc3BlZWQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zcGVlZFxyXG5cclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICBsZXQgbWluaW11bUhlaWdodHMgPSBbXVxyXG4gICAgbGV0IG1heGltdW1IZWlnaHRzID0gW11cclxuICAgIGxldCB3aWR0aCA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihwb3NpdGlvbnMpXHJcbiAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSB0aGlzLmFzcGVjdFJhdGlvID8gKHdpZHRoIC8gdGhpcy5hc3BlY3RSYXRpbykgOiAwXHJcbiAgICAvLyBhc3BlY3RSYXRpb1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgIG1pbmltdW1IZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgbWF4aW11bUhlaWdodHMucHVzaChwb3NpdGlvbnNbaV0uYWx0ICsgZXh0cnVkZWRIZWlnaHQpXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS53YWxsLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5lbnRpdHkpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuICBnZXRNYXRlcmlhbCgpIHtcclxuICAgIGxldCBtYXRlcmlhbFxyXG4gICAgbGV0IGNhbnZhcyA9IHRoaXMuZ2V0Y2FudmFzKClcclxuICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgIGltYWdlOiBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpLFxyXG4gICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICByZXBlYXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxLCAxLjApLFxyXG4gICAgICBkdXJhdGlvbjogNTAwMDAgLyB0aGlzLm9wdGlvbnMuc3BlZWQsXHJcbiAgICAgIGZsdHI6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIG1hdGVyaWFsXHJcbiAgfVxyXG5cclxuICBnZXRjYW52YXMoKSB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgbGV0IHRleHRBcnJheSA9IHRoaXMub3B0aW9ucy50ZXh0LnNwbGl0KCdcXG4nKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRleHRBcnJheVtpXS5sZW5ndGggPiA4MCkge1xyXG4gICAgICAgIHRleHRBcnJheVtpXSA9IHRleHRBcnJheVtpXS5zbGljZSgwLCA4MC10ZXh0QXJyYXlbaV0ubGVuZ3RoKVxyXG4gICAgICB9IFxyXG4gICAgfVxyXG4gICAgaWYgKHRleHRBcnJheS5sZW5ndGggPiA3MCkge1xyXG4gICAgICB0ZXh0QXJyYXkuc3BsaWNlKDcwIC0gdGV4dEFycmF5Lmxlbmd0aClcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gdGV4dEFycmF5LmpvaW4oJ1xcbicpXHJcbiAgICBsZXQgbWF4V2lkdGggPSAwXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjdHguZm9udCA9IDIwMCArIFwicHggc2VyaWZcIjtcclxuICAgICAgY29uc3Qgd2lkdGggPSBjdHgubWVhc3VyZVRleHQodGV4dEFycmF5W2ldKS53aWR0aDtcclxuICAgICAgaWYobWF4V2lkdGg8d2lkdGgpIHtcclxuICAgICAgICBtYXhXaWR0aCA9IHdpZHRoXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhbnZhcy53aWR0aCA9IG1heFdpZHRoXHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gMjIwICogdGV4dEFycmF5Lmxlbmd0aFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY3R4LmZvbnQgPSAyMDAgKyBcInB4IHNlcmlmXCI7XHJcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgyNTUsIDI1NSwgMjU1LCAwKSdcclxuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIG1heFdpZHRoICsgMzAsIDIxMClcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDEpJztcclxuICAgICAgY3R4LmZvbnQgPSBcIjIwMHB4IHNlcmlmXCI7XHJcbiAgICAgIGN0eC5maWxsVGV4dCh0ZXh0QXJyYXlbaV0sIDAsIDIxMCAqIChpKzEpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFzcGVjdFJhdGlvID0gdGhpcy5vcHRpb25zLnRleHQgPyAoY2FudmFzLndpZHRoIC8gY2FudmFzLmhlaWdodCkgOiAwXHJcbiAgICByZXR1cm4gY2FudmFzXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiZPlvIDlr4zmlofmnKzmoYZcclxuICAgKi9cclxuICBvcGVuUmljaFRleHRFZGl0b3IoZSkge1xyXG4gICAgcmljaFRleHQub3Blbih0aGlzLm9wdGlvbnMuaWQsIHRoaXMub3B0aW9ucy50ZXh0LCB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50KVxyXG4gICAgcmljaFRleHQucHJpbWFyeUNhbGxCYWNrID0gKGNvbnRlbnQpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudCA9IGNvbnRlbnRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5vZGVFZGl0KGNiID0gKCkgPT4geyB9KSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy5fbm9kZUVkaXRDYWxsYmFjayA9IGNiXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb25cclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgbGV0IG1pbmltdW1IZWlnaHRzID0gW11cclxuICAgICAgbGV0IG1heGltdW1IZWlnaHRzID0gW11cclxuICAgICAgbGV0IHdpZHRoID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKHBvc2l0aW9ucylcclxuICAgICAgbGV0IGV4dHJ1ZGVkSGVpZ2h0ID0gdGhpcy5hc3BlY3RSYXRpbyA/ICh3aWR0aCAvIHRoaXMuYXNwZWN0UmF0aW8pIDogMFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICAgIG1pbmltdW1IZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgICBtYXhpbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQgKyBleHRydWRlZEhlaWdodClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGlzQWRkID0gZmFsc2VcclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICBpc0FkZCA9IHRydWVcclxuICAgICAgICAgIGxldCBwb3MzID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoY2FydGVzaWFuLCBbdGhpcy5lbnRpdHldKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0KSxcclxuICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMuc3BsaWNlKHNlbGVjdFBvaW50LmluZGV4LCAwLCBlbnRpdHkpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0pXHJcblxyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgICAgbWluaW11bUhlaWdodHMgPSBbXVxyXG4gICAgICAgICAgbWF4aW11bUhlaWdodHMgPSBbXVxyXG4gICAgICAgICAgd2lkdGggPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIocG9zaXRpb25zKVxyXG4gICAgICAgICAgZXh0cnVkZWRIZWlnaHQgPSB0aGlzLmFzcGVjdFJhdGlvID8gKHdpZHRoIC8gdGhpcy5hc3BlY3RSYXRpbykgOiAwXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgICAgICAgbWluaW11bUhlaWdodHMucHVzaChwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgICAgICAgICBtYXhpbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQgKyBleHRydWRlZEhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLngsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB2YXIgcGljayA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKTtcclxuICAgICAgICAgIGlmIChwaWNrICYmIHBpY2suaWQgJiYgcGljay5pZC5uYW1lICYmIHBpY2suaWQubmFtZSA9PT0gJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgICB0aGlzLm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUocGljay5pZClcclxuICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruiupOmhtueCueS9jee9ru+8jOWPs+mUruWNleWHu+e7k+adn++8jENUUkwr5Y+z6ZSu5pKk6ZSAJylcclxuICAgICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMuZW50aXR5LndhbGwucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgICAgdGhpcy5lbnRpdHkud2FsbC5tYXhpbXVtSGVpZ2h0cyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG1heGltdW1IZWlnaHRzXHJcbiAgICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgICB0aGlzLmVudGl0eS53YWxsLm1pbmltdW1IZWlnaHRzID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbWluaW11bUhlaWdodHNcclxuICAgICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdID0gb3JpZ2luYWxQb3NpdGlvblxyXG4gICAgICAgICAgaWYoaXNBZGQpIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5zcGxpY2Uoc2VsZWN0UG9pbnQuaW5kZXgsIDEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5wb3NpdGlvbnMgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybign5pyA5bCR6ZyA6KaB5Lik5Liq5Z2Q5qCH77yBJylcclxuICAgICAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ+acgOWwkemcgOimgeS4pOS4quWdkOagh++8gScsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gWy4uLnByZXZpb3VzXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2IobnVsbCwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBtaW5pbXVtSGVpZ2h0cyA9IFtdXHJcbiAgICAgICAgbWF4aW11bUhlaWdodHMgPSBbXVxyXG4gICAgICAgIHdpZHRoID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKHBvc2l0aW9ucylcclxuICAgICAgICBleHRydWRlZEhlaWdodCA9IHRoaXMuYXNwZWN0UmF0aW8gPyAod2lkdGggLyB0aGlzLmFzcGVjdFJhdGlvKSA6IDBcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgICAgICBtaW5pbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgICAgICBtYXhpbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQgKyBleHRydWRlZEhlaWdodClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbnRpdHkud2FsbC5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMubm9kZVBvaW50c1tpXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgbGV0IHBvczMgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChjYXJ0ZXNpYW4sIFt0aGlzLmVudGl0eV0pXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zMywgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgICAgbWluaW11bUhlaWdodHMgPSBbXVxyXG4gICAgICAgICAgbWF4aW11bUhlaWdodHMgPSBbXVxyXG4gICAgICAgICAgd2lkdGggPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIocG9zaXRpb25zKVxyXG4gICAgICAgICAgZXh0cnVkZWRIZWlnaHQgPSB0aGlzLmFzcGVjdFJhdGlvID8gKHdpZHRoIC8gdGhpcy5hc3BlY3RSYXRpbykgOiAwXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgICAgICAgbWluaW11bUhlaWdodHMucHVzaChwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgICAgICAgICBtYXhpbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQgKyBleHRydWRlZEhlaWdodClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbdGhpcy5ub2RlUG9pbnRzLmxlbmd0aCAtIDFdKVxyXG4gICAgICAgICAgdGhpcy5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGVQb2ludHNbc2VsZWN0UG9pbnQuaW5kZXggLSAxXSkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhpcy5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludC5pbmRleCA9IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpLFxyXG4gICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3RhbmRUZXh0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE0Q0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXhDQTtBQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXZGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaGJBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbWJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/TextObject/StandText/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TrajectoryMotion/_element.js": -/*!***************************************************!*\ - !*** ./src/Obj/Base/TrajectoryMotion/_element.js ***! - \***************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u8D77\\u59CB\\u70B9\\u9AD8\\u5EA6\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n \\u6A21\\u578B\\u500D\\u6570\\n
    \\n \\n \\u500D\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u8FD0\\u884C\\u901F\\u5EA6\\n
    \\n \\n m/s\\n \\n
    \\n
    \\n
    \\n \\u5EF6\\u8FDF\\u8FD0\\u52A8\\n
    \\n \\n ms\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u66F4\\u6362\\u6A21\\u578B\\n \\n
    \\n
    \\n \\u6A21\\u578B\\u65B9\\u5411\\n \\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u8DEF\\u5F84\\u663E\\u9690\\n \\n
    \\n
    \\n \\u6A21\\u578B\\u663E\\u9690\\n \\n
    \\n
    \\n \\u5B9E\\u65F6\\u8DEF\\u5F84\\n \\n
    \\n
    \\n
    \\n
    \\n \\u7F16\\u8F91\\n \\n
    \\n
    \\n \\u8DEF\\u5F84\\u5706\\u6ED1\\n \\n
    \\n
    \\n \\u73AF\\u7EBF\\n \\n
    \\n
    \\n
    \\n
    \\n \\u8F68\\u8FF9\\u8D34\\u5730\\n \\n
    \\n
    \\n \\u8F68\\u8FF9\\u5FAA\\u73AF\\n \\n
    \\n
    \\n \\u8F68\\u8FF9\\u52A8\\u753B\\n \\n
    \\n
    \\n
    \\n
    \\n \\u8DEF\\u5F84\\u65B9\\u5411\\n \\n
    \\n
    \\n \\u89C6\\u89D2\\u8DDF\\u968F\\n \\n
    \\n
    \\n \\u6A21\\u578B\\u52A8\\u753B\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u6587\\u5B57\\u5F00\\u5173\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u5B57\\u4F53\\u989C\\u8272\\n
    \\n
    \\n
    \\n \\u5B57\\u4F53\\u9009\\u62E9\\n
    \\n
    \\n
    \\n \\u5B57\\u4F53\\u5927\\u5C0F\\n
    \\n \\n px\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
    \\n
    \\n \\u6700\\u8FD1\\u8DDD\\u79BB\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n \\u6700\\u8FDC\\u8DDD\\u79BB\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u6CB9\\u8017\\n
    \\n \\n L/100km\\n \\n
    \\n
    \\n
    \\n \\u603B\\u6CB9\\u8017\\n \\n
    \\n
    \\n
    \\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVHJhamVjdG9yeU1vdGlvbi9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9UcmFqZWN0b3J5TW90aW9uL19lbGVtZW50LmpzPzE2YWYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaHRtbCgpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNzBweDtcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIG1heGxlbmd0aD1cIjQwXCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJuYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDcwcHg7XCI+6LW35aeL54K56auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xIGhlaWdodC1ib3hcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5OVwiIG1heD1cIjk5OTk5OTk5OVwiIEBtb2RlbD1cImhlaWdodFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaooeWei+WAjeaVsDwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OVwiIHN0ZXA9XCIxXCIgQG1vZGVsPVwic2NhbGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+5YCNPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDcwcHg7XCI+6L+Q6KGM6YCf5bqmPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OTk5XCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJzcGVlZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tL3M8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5bu26L+f6L+Q5YqoPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0zXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OTlcIiBAbW9kZWw9XCJkZWxheVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tczwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA3MHB4O1wiPuabtOaNouaooeWeizwvc3Bhbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBAY2xpY2s9XCJjbGlja0NoYW5nZU1vZGVsXCI+6YCJ5oupPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaooeWei+aWueWQkTwvc3Bhbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbW9kZWwtcm90YXRlLWJ0blwiIEBjbGljaz1cIm1vZGVsUm90YXRlXCI+5byA5aeL6LCD5pW0PC9idXR0b24+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiaWNvbi1ydWJyaWNcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1ydWJyaWNcIj48L3VzZT48L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogNXB4IDAgMCA1cHg7XCIgbmFtZT1cImZpcnN0UGVyc29uXCJcclxuICAgICAgICAgICAgICBkYXRhLXN0YXRlPVwidHJ1ZVwiPjxzcGFuPuesrOS4gOinhuinkjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMCA1cHggNXB4IDA7XCIgbmFtZT1cImZpcnN0UGVyc29uXCJcclxuICAgICAgICAgICAgICBkYXRhLXN0YXRlPVwiZmFsc2VcIj48c3Bhbj7nrKzkuInop4bop5I8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbSBkaXYtaXRlbS1zd2l0Y2hcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ot6/lvoTmmL7pmpA8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibGluZVNob3dcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5qih5Z6L5pi+6ZqQPC9zcGFuPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cIm1vZGVsU2hvd1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lrp7ml7bot6/lvoQ8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwicmVhbFRpbWVSb3V0ZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nvJbovpE8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibGluZUVkaXRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Lev5b6E5ZyG5ruRPC9zcGFuPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cInNtb290aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7njq/nur88L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibm9zZVRvVGFpbFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ovajov7notLTlnLA8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwiZ3JvdW5kXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui9qOi/ueW+queOrzwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJsb29wXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPui9qOi/ueWKqOeUuzwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzdGF0ZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7ot6/lvoTmlrnlkJE8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwicm91dGVEaXJlY3Rpb25cIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDMzcHg7XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6KeG6KeS6Lef6ZqPPC9zcGFuPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cInZpZXdGb2xsb3dcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW46IDBweDtcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mqKHlnovliqjnlLs8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQgaW5wdXQtc2VsZWN0IG1vZGVsLWFuaW1hdGUtc2VsZWN0XCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5paH5a2X5byA5YWzPC9zcGFuPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cImxhYmVsU2hvd1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5a2X5L2T6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGZvbnQtc2VsZWN0LWJveFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogbm9uZTtcIj7lrZfkvZPpgInmi6k8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQgaW5wdXQtc2VsZWN0IGZvbnQtc2VsZWN0XCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWtl+S9k+Wkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiIHN0eWxlPVwid2lkdGg6IDgycHg7XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5XCIgQG1vZGVsPVwibGFiZWxGb250U2l6ZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7op4bph47nvKnmlL48L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibGFiZWxTY2FsZUJ5RGlzdGFuY2VcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pyA6L+R6Led56a7PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCIgc3R5bGU9XCJ3aWR0aDogODJweDtcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5OTk5OTlcIiBAbW9kZWw9XCJsYWJlbE5lYXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnIDov5zot53nprs8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIiBzdHlsZT1cIndpZHRoOiA4MnB4O1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCI5OTk5OTk5OVwiIEBtb2RlbD1cImxhYmVsRmFyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7msrnogJc8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTZcIiBzdHlsZT1cIndpZHRoOiAxNzBweDtcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5OTk5OTlcIiBAbW9kZWw9XCJ1bml0RnVlbENvbnN1bXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPkwvMTAwa208L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMDtcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mgLvmsrnogJc8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwiZnVlbFNob3dcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBeU1BOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/TrajectoryMotion/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TrajectoryMotion/index.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/TrajectoryMotion/index.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/TrajectoryMotion/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _ModelController_EditGltf__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../ModelController/EditGltf */ \"./src/Obj/ModelController/EditGltf.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../Obj/Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _timeoutEventObject = /*#__PURE__*/new WeakMap();\nvar TrajectoryMotion = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 轨迹运动\r\n * @param sdk\r\n * @param options {object}\r\n * @param options.id {string} 唯一标识\r\n * @param options.name {string} 名称\r\n * @param options.speed=1 {number} 运行速度\r\n * @param options.delay=0 {number} 运动延迟时间(毫秒)\r\n * @param options.loop=true {boolean} 循环\r\n * @param options.height {number} 起始点高度\r\n * @param options.ground=false {boolean} 贴地\r\n * @param options.state=true {boolean} 模型运动\r\n * @param options.routeDirection=true {boolean} 路径方向\r\n * @param options.viewFollow=false {boolean} 视角跟随\r\n * @param options.realTimeRoute=false {boolean} 实时路径\r\n * @param options.model {object} 模型参数\r\n * @param options.model.show=true {boolean} 模型显隐\r\n * @param options.model.url {string} 模型地址\r\n * @param options.model.pixelSize=70 {number} 模型像素大小\r\n * @param options.model.heading=0 {number} 模型航向角\r\n * @param options.model.pitch=0 {number} 模型俯仰角\r\n * @param options.model.roll=0 {number} 模型翻滚角\r\n * @param options.model.scale=1 {number} 模型比例\r\n * @param options.model.animate {string} 模型动画\r\n * @param options.line {object} 路径参数\r\n * @param options.line.show=true {boolean} 路径显隐\r\n * @param options.line.smooth=false {boolean} 路径圆滑\r\n * @param options.line.noseToTail=false {boolean} 路径首尾相联\r\n * @param {Array.} options.line.positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * */\n function TrajectoryMotion(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, TrajectoryMotion);\n _this2 = _callSuper(this, TrajectoryMotion, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _timeoutEventObject, null);\n _this2.options.name = options.name || '';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 1;\n if (_this2.options.speed <= 0) {\n _this2.options.speed = 0.01;\n }\n _this2.options.delay = options.delay || 0;\n _this2.options.loop = options.loop || options.loop === false ? options.loop : true;\n _this2.options.model = options.model = options.model || {};\n _this2.options.line = options.line = options.line || {};\n _this2.options.line.positions = options.line.positions || [];\n // this.options.height = (options.height || options.height === 0) ? options.height : (this.options.line.positions[0] ? this.options.line.positions[0].alt : 0)\n _this2.options.height = _this2.options.line.positions[0] ? _this2.options.line.positions[0].alt : 0;\n _this2.options.height = Number(_this2.options.height.toFixed(2));\n _this2.options.line.show = options.line.show || options.line.show === false ? options.line.show : true;\n _this2.options.model.show = options.model.show || options.model.show === false ? options.model.show : true;\n _this2.options.model.url = options.model.url || '';\n _this2.options.model.pixelSize = options.model.pixelSize || 70;\n _this2.options.model.heading = options.model.heading || 0;\n _this2.options.model.pitch = options.model.pitch || 0;\n _this2.options.model.roll = options.model.roll || 0;\n _this2.options.model.scale = options.model.scale || options.model.scale === 0 ? options.model.scale : 1;\n _this2.options.model.animate = options.model.animate || '无';\n _this2.options.line.smooth = options.line.smooth ? options.line.smooth : false;\n _this2.options.line.noseToTail = options.line.noseToTail ? options.line.noseToTail : false;\n _this2.positions_smooth = [];\n _this2.options.ground = options.ground || false;\n _this2.options.reverse = options.reverse || false;\n _this2.options.state = options.state || options.state === false ? options.state : true;\n _this2.options.routeDirection = options.routeDirection || options.routeDirection === false ? options.routeDirection : true;\n _this2.keyPoints = [];\n _this2.realTimePositions = [];\n _this2._lineEdit = false;\n _this2._keyPoint = false;\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n _this2.realTimeRouteArray = [];\n // this.options.firstPerson = false\n _this2.distance;\n // this.addModel()\n\n options.label = options.label || {};\n _this2.options.label = {\n show: options.label.show || false,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n if (_this2.options.line.positions.length < 2) {\n _this2._error = '最少需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_16__[\"default\"](_this2.sdk);\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_11__[\"default\"]();\n _this2.options.viewFollow = false;\n _this2.options.firstPersonView = false;\n TrajectoryMotion.addLine(_this2);\n _this2.firstPersonView = false;\n\n // this.options.viewFollowOrientation = options.viewFollowOrientation\n }\n\n // animateUpdate()\n // function animateUpdate() {\n // requestAnimationFrame(animateUpdate);\n // TWEEN.update();\n // }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(TrajectoryMotion, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(TrajectoryMotion, [{\n key: \"type\",\n get: function get() {\n return 'TrajectoryMotion';\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n if (this.originalOptions) {\n this.originalOptions.show = v;\n }\n }\n if (this.options.show) {\n if (this.firstPersonView) {\n this.model.show = false;\n } else {\n this.model.show = !this.showView || this.showView == 3 || !sdkD ? this.modelShow : false;\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n this.line.polyline.material = this.lineShow ? new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff'),\n dashLength: 20\n }) : new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff00'),\n dashLength: 20\n });\n } else {\n this.line.polyline.material = new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff00'),\n dashLength: 20\n });\n }\n for (var i = 0; i < this.keyPoints.length; i++) {\n this.keyPoints[i].show = !this.showView || this.showView == 3 || !sdkD ? this.keyPointShow : false;\n }\n if (this.realTimeRoute) {\n this.realTimeLine && (this.realTimeLine.show = !this.showView || this.showView == 3 || !sdkD ? true : false);\n }\n this.label && (this.label.show = !this.showView || this.showView == 3 ? this.options.label.show : false);\n } else {\n this.model.show = !this.showView || this.showView == 3 || !sdkD ? this.options.show : false;\n var show = this.options.show;\n if (!this.showView || this.showView == 3 || !sdkD) {\n show = this.options.show;\n } else {\n show = false;\n }\n this.realTimeLine && (this.realTimeLine.show = false);\n this.line.polyline.material = show ? new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff'),\n dashLength: 20\n }) : new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff00'),\n dashLength: 20\n });\n for (var _i = 0; _i < this.keyPoints.length; _i++) {\n this.keyPoints[_i].show = !this.showView || this.showView == 3 ? show : false;\n }\n this.label && (this.label.show = false);\n this.viewFollow = false;\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this3 = this;\n if (this.ground) {\n return;\n }\n var difference = this.options.height - Number(v.toFixed(2));\n this.options.height = Number(v.toFixed(2));\n if (this.line) {\n if (this.ground) {} else {\n var dvalue = this.options.height - this.options.line.positions[0].alt;\n this.line.polyline.clampToGround = false;\n for (var i = 0; i < this.keyPoints.length; i++) {\n this.options.line.positions[i].alt += dvalue;\n this.keyPoints[i].position = Cesium.Cartesian3.fromDegrees(this.options.line.positions[i].lng, this.options.line.positions[i].lat, this.options.line.positions[i].alt);\n }\n }\n }\n if (this.model && this.model.position) {\n var heading = this.model.heading;\n var pitch = this.model.pitch;\n var roll = this.model.roll;\n if (isNaN(heading) || isNaN(pitch) || isNaN(roll)) {\n return;\n }\n var matrix = Cesium.Transforms.eastNorthUpToFixedFrame(this.model.position);\n Cesium.Matrix4.multiplyByTranslation(matrix, new Cesium.Cartesian3(0, 0, -difference), matrix);\n Cesium.Matrix4.getTranslation(matrix, this.model.position);\n Cesium.Matrix4.multiplyByMatrix3(matrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(heading, pitch, roll)), this.entity.modelMatrix);\n\n // Cesium.Matrix4.multiplyByTranslation(this.model.modelMatrix, new Cesium.Cartesian3(0, 0, -difference), this.model.modelMatrix)\n // Cesium.Matrix4.getTranslation(this.model.modelMatrix, this.model.position)\n this.label && (this.label.show = this.label.show);\n if (this.options.label.position) {\n setTimeout(function () {\n if (_this3.options.label.position.alt) {\n _this3.label && (_this3.label.position = [_this3.options.label.position.lng, _this3.options.label.position.lat, _this3.options.label.position.alt]);\n } else {\n _this3.getClampToHeight({\n lng: _this3.options.label.position.lng,\n lat: _this3.options.label.position.lat\n }).then(function (height) {\n _this3.label && (_this3.label.position = [_this3.options.label.position.lng, _this3.options.label.position.lat, height]);\n });\n }\n }, 0);\n }\n }\n var positions_smooth = this.renewLinePositions(this.options.line.positions);\n this.line.polyline.positions = positions_smooth;\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = Number(v.toFixed(2));\n });\n }\n }, {\n key: \"ground\",\n get: function get() {\n return this.options.ground;\n },\n set: function set(v) {\n var _this4 = this;\n this.lineEdit = false;\n this.options.ground = v;\n this.realTimeLine.polyline.clampToGround = v;\n this.height = this.options.height;\n if (this.line) {\n if (v) {\n this.line.polyline.clampToGround = true;\n var _loop = function _loop(i) {\n _this4.sdk.viewer.scene.clampToHeightMostDetailed([new Cesium.Cartesian3.fromDegrees(_this4.options.line.positions[i].lng, _this4.options.line.positions[i].lat)]).then(function (result) {\n _this4.keyPoints[i].position = result[0];\n });\n };\n for (var i = 0; i < this.keyPoints.length; i++) {\n _loop(i);\n }\n }\n }\n setTimeout(function () {\n if (_this4.TweenAnimate && _this4.TweenAnimate._isPlaying) {\n _this4.setMovePositionByDistance(_this4.TweenAnimate._object.distance);\n } else {\n _this4.setMovePositionByDistance(0);\n }\n }, 200);\n\n // let _this = this\n\n // let positions = this.renewLinePositions(this.options.line.positions)\n // let startDistance = this.TweenAnimate._object.distance\n // let lineString = []\n // for (let i = 0; i < positions.length; i++) {\n // let position = this.cartesian3Towgs84(positions[i], _this.sdk.viewer)\n // lineString.push([position.lng, position.lat, position.alt])\n // }\n // let line = turf.lineString(lineString);\n // this.distance = turf.length(line, { units: 'kilometers' });\n // setPosition(startDistance)\n\n // async function setPosition(distance) {\n // let start = 0;\n // let stop = distance;\n // let coordinates\n // let sliced = line\n // if (stop) {\n // sliced = await turf.lineSliceAlong(line, start, stop, { units: 'kilometers' });\n // // _this.realTimeRouteArray = sliced+\n // coordinates = [...sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]]\n // }\n // else {\n // coordinates = [...line.geometry.coordinates[0]]\n // }\n // let position\n // let positionCamera\n\n // if (_this.ground) {\n // // if (viewer.terrainProvider.availability) {\n // // let result = await new Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(coordinates[0], coordinates[1])]);\n // // position = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], result[0].height)\n // // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], result[0].height + 1)\n // // }\n // // else {\n // // position = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1])\n // // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], 1)\n // // }\n // let filterEntitys = []\n // // for (let [key, value] of _this.sdk.entityMap) {\n // // if (!value.type || (value.type !== 'glb' && value.type!== 'bim' && value.type!== 'tileset' && value.type!== 'TrajectoryMotion' && value.entity)) {\n // // console.log(value.entity)\n // // filterEntitys.push(value.entity.id)\n // // }\n // // }\n // // console.log('8888888888',_this.model, ...filterEntitys)\n\n // let result\n // let sdk2D = get2DView()\n // if (sdk2D && _this.sdk == sdk2D) {\n // result = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1])\n // position = result\n // }\n // else {\n // result = await _this.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]), [_this.model, ...filterEntitys])\n // position = result\n // }\n // if (!result) {\n // position = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1])\n // }\n // let pos3 = _this.cartesian3Towgs84(position, _this.sdk.viewer);\n // let height2 = 0\n // try {\n // let position2 = await Cesium.sampleTerrainMostDetailed(\n // _this.sdk.viewer.scene.terrainProvider,\n // [Cesium.Cartographic.fromDegrees(pos3.lng, pos3.lat)]\n // )\n // height2 = position2[0].height\n // } catch (error) {\n // height2 = 0\n // }\n // if (pos3.alt < height2) {\n // pos3.alt = height2\n // }\n // pos3.alt = Number(pos3.alt.toFixed(1))\n // position = Cesium.Cartesian3.fromDegrees(pos3.lng, pos3.lat, pos3.alt)\n // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], _this.cartesian3Towgs84(position, _this.sdk.viewer).alt + 1.8)\n // let fromDegreesArray = []\n\n // for (let i = 0; i < sliced.geometry.coordinates.length; i++) {\n // fromDegreesArray.push(sliced.geometry.coordinates[i][0], sliced.geometry.coordinates[i][1])\n // }\n // _this.realTimePositions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)\n // // _this.realTimeLine.polyline.positions = \n // }\n // else {\n // let cartesian3 = _this.spline.evaluate(distance / _this.distance)\n // if (!cartesian3) {\n // return\n // }\n // coordinates = _this.cartesian3Towgs84(cartesian3, _this.sdk.viewer);\n // position = cartesian3\n // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates.lng, coordinates.lat, coordinates.alt + 1.8)\n // let positions_smooth = []\n // for (let i = 0; i <= 1000; i++) {\n // if ((i / 1000) > (distance / _this.distance)) {\n // break\n // }\n // let cartesian3 = _this.spline.evaluate(i / 1000);\n // positions_smooth.push(cartesian3);\n // }\n // positions_smooth.push(cartesian3)\n // _this.realTimePositions = positions_smooth\n // }\n\n // HeadingPitchRoll = getHeadingPitchRoll(_this.model.position, position)\n // if (previous && previous.position) {\n // HeadingPitchRoll2 = getHeadingPitchRoll(previous.position, position)\n // HeadingPitchRoll.pitch = HeadingPitchRoll2.pitch\n // }\n // previous.position = _this.model.position\n // let modeHeadingPitchRoll = Cesium.HeadingPitchRoll.fromDegrees(_this.options.model.heading, _this.options.model.pitch, _this.options.model.roll)\n // let heading = 0\n // let pitch = 0\n // let roll = 0\n\n // let matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position)\n // if (_this.options.routeDirection && !_this.lineEdit) {\n // heading = (HeadingPitchRoll.heading) * (180 / Math.PI) - 90 - _this.options.model.heading\n // pitch = (HeadingPitchRoll.pitch) * (180 / Math.PI) - _this.options.model.pitch\n // roll = _this.options.model.roll\n // if (isNaN(heading) || isNaN(pitch) || isNaN(roll)) {\n // return\n // }\n // _this.model.modelMatrix = Cesium.Matrix4.multiplyByMatrix3(matrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(heading, pitch, roll)), _this.model.modelMatrix)\n // }\n // else {\n // if (_this.entity) {\n // heading = _this.options.model.heading\n // pitch = _this.options.model.pitch\n // roll = _this.options.model.roll\n // if (isNaN(heading) || isNaN(pitch) || isNaN(roll)) {\n // return\n // }\n // // 旋转\n // let mx = Cesium.Matrix3.fromRotationX(\n // Cesium.Math.toRadians(roll)\n // )\n // let my = Cesium.Matrix3.fromRotationY(\n // Cesium.Math.toRadians(pitch)\n // )\n // let mz = Cesium.Matrix3.fromRotationZ(\n // Cesium.Math.toRadians(heading)\n // )\n // let rotationX = Cesium.Matrix4.fromRotationTranslation(mx)\n // let rotationY = Cesium.Matrix4.fromRotationTranslation(my)\n // let rotationZ = Cesium.Matrix4.fromRotationTranslation(mz)\n // let originalMatrix = new Cesium.Matrix4()\n // Cesium.Matrix4.multiply(matrix, rotationX, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix)\n // Cesium.Matrix4.multiply(originalMatrix, rotationZ, _this.entity.modelMatrix)\n // }\n // }\n // // console.log((HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI))\n\n // _this.model.position = position\n // if (!position) {\n // return\n // }\n // let labelPosition = _this.cartesian3Towgs84(position, _this.sdk.viewer)\n // _this.label.position = [labelPosition.lng, labelPosition.lat, labelPosition.alt]\n // lastDistance = distance\n // // console.log(position)\n // _this.realTimeRouteArray.push(position)\n // if (_this.viewFollow) {\n // // console.log(Cesium.Math.toDegrees(_this.sdk.viewer.camera.pitch))\n // if (_this.options.firstPersonView) {\n // _this.sdk.viewer.camera.setView({\n // destination: positionCamera,\n // orientation: {\n // heading: Cesium.Math.toRadians(heading + 90 + _this.firstPersonHeadingPitch.heading),\n // pitch: Cesium.Math.toRadians(_this.firstPersonHeadingPitch.pitch),\n // roll: 0\n // }\n // })\n // }\n // else {\n // if (_this.sdk.viewer.scene.mode === 3) {\n // if (_this.sdk.viewer.trackedEntity) {\n // _this.sdk.viewer.trackedEntity.position = position\n // // _this.sdk.viewer.camera.position = position\n // }\n // }\n // else {\n // if (_this.sdk.viewer.trackedEntity) {\n // _this.sdk.viewer.camera.setView({\n // destination: Cesium.Cartesian3.fromDegrees(coordinates.lng, coordinates.lat, _this.sdk.viewer.camera.positionCartographic.height),\n // orientation: {\n // heading: Cesium.Math.toRadians(-90),\n // pitch: 0,\n // roll: 0\n // }\n // })\n // }\n // }\n // }\n // }\n // }\n\n if (v) {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n } else {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n }\n this._elms.ground && this._elms.ground.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"modelPixelSize\",\n get: function get() {\n return this.options.model.pixelSize;\n },\n set: function set(v) {\n this.options.model.pixelSize = v;\n if (this.model) {\n this.model.minimumPixelSize = v;\n }\n this._elms.modelPixelSize && this._elms.modelPixelSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"scale\",\n get: function get() {\n return this.options.model.scale;\n },\n set: function set(v) {\n this.options.model.scale = Number(v);\n if (this.model) {\n this.model.scale = v;\n this.model.customScale = {\n x: this.options.model.scale,\n y: this.options.model.scale,\n z: this.options.model.scale\n };\n }\n this._elms.scale && this._elms.scale.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n if (v <= 0) {\n v = 0.01;\n }\n this.options.speed = v;\n if (this.state && this.TweenAnimate && this.TweenAnimate._isPlaying) {\n this.setMovePositionByDistance(this.TweenAnimate._object.distance);\n }\n\n // let totalTime = (this.distance * 1000) / this.options.speed * 1000\n // // this.TweenAnimate._object.distance/this.TweenAnimate._valuesEnd.distance\n // this.TweenAnimate._duration = totalTime\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"smooth\",\n get: function get() {\n return this.options.line.smooth;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.line.smooth = v;\n var positions = this.renewLinePositions(this.options.line.positions);\n this.line.polyline.positions = positions;\n this.model.position = positions[0];\n this.modelMove(positions);\n this._elms.smooth && this._elms.smooth.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"delay\",\n get: function get() {\n return this.options.delay;\n },\n set: function set(v) {\n this.options.delay = v;\n if (this.TweenAnimate && this.TweenAnimate._isPlaying) {\n this.TweenAnimate.delay(this.delay * 1000);\n }\n this._elms.delay && this._elms.delay.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"reverse\",\n get: function get() {\n return this.options.reverse;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.reverse = v;\n this.smooth = this.smooth;\n }\n }, {\n key: \"state\",\n get: function get() {\n return this.options.state;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.state = v;\n cancelAnimationFrame(this._requestAnimationFrameEventId);\n if (this.options.state && this.editObj) {\n this.editObj.destroy();\n this.editObj = null;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '开始调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn';\n }\n }\n if (this.TweenAnimate && this.TweenAnimate._isPlaying) {\n clearTimeout(this.TweenAnimate.timeout);\n if (v) {\n this.lineEdit = false;\n if (this.TweenAnimate.isPlaying()) {\n this.TweenAnimate.timeout = setTimeout(function () {\n _this5.TweenAnimate.resume();\n }, this.options.delay * 1000);\n } else {\n this.TweenAnimate.delay(this.delay * 1000).start();\n }\n this.speed = this.speed;\n } else {\n var positionCamera = _objectSpread({}, this.sdk.viewer.camera._position);\n var _this = this;\n this._requestAnimationFrameEventId = requestAnimationFrame(function fn() {\n if (_this.firstPersonView) {\n _this.sdk.viewer.camera.setView({\n destination: _objectSpread({}, positionCamera),\n orientation: {\n heading: _this.sdk.viewer.camera.heading,\n pitch: _this.sdk.viewer.camera.pitch,\n roll: _this.sdk.viewer.camera.roll\n }\n });\n }\n _this._requestAnimationFrameEventId = requestAnimationFrame(fn);\n });\n this.TweenAnimate.pause();\n setTimeout(function () {\n _this.model && (_this.model.isMove = false);\n }, 200);\n }\n } else {\n if (v) {\n var positions = this.renewLinePositions(this.options.line.positions);\n this.modelMove(positions);\n }\n }\n this._elms.state && this._elms.state.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"modelShow\",\n get: function get() {\n return this.options.model.show;\n },\n set: function set(v) {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n this.options.model.show = v;\n var show = v;\n if (this.show && (!this.showView || this.showView == 3 || !sdkD)) {\n show = v;\n } else {\n show = false;\n }\n if (this.model && this.show) {\n this.model.show = show;\n }\n this._elms.modelShow && this._elms.modelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"modelAnimate\",\n get: function get() {\n return this.options.model.animate;\n },\n set: function set(v) {\n this.options.model.animate = v;\n if (!this.model || !this.model.loader.components) {\n return;\n }\n var animations = this.model.loader.components.animations;\n this.model.activeAnimations.removeAll();\n if (animations && animations.length > 0) {\n for (var i = 0; i < animations.length; i++) {\n if (animations[i].name == v) {\n this.model.activeAnimations.add({\n index: i,\n loop: Cesium.ModelAnimationLoop.REPEAT,\n speedup: 1,\n reverse: false\n });\n break;\n }\n }\n }\n this._elms.modelAnimate && this._elms.modelAnimate.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.line.noseToTail;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.line.noseToTail = v;\n var fromDegreesArrayHeights = [];\n for (var i = 0; i < this.options.line.positions.length; i++) {\n fromDegreesArrayHeights.push(this.options.line.positions[i].lng, this.options.line.positions[i].lat, this.options.line.positions[i].alt);\n }\n var nosmooth = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights);\n if (this.line) {\n var positions_smooth = this.renewLinePositions(this.options.line.positions);\n this.line.polyline.positions = positions_smooth;\n this.model.position = positions_smooth[0];\n this.modelMove(positions_smooth);\n }\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"lineShow\",\n get: function get() {\n return this.options.line.show;\n },\n set: function set(v) {\n if (v) {\n this.realTimeRoute = false;\n }\n this.options.line.show = v;\n var show = v;\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n if (!this.showView || this.showView == 3 || !sdkD) {\n show = v;\n } else {\n show = false;\n }\n if (this.line && this.show) {\n this.line.polyline.material = show ? new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff'),\n dashLength: 20 //短划线长度\n }) : new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff00'),\n dashLength: 20 //短划线长度\n });\n }\n this._elms.lineShow && this._elms.lineShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"realTimeRoute\",\n get: function get() {\n return this.options.realTimeRoute;\n },\n set: function set(v) {\n if (v) {\n this.lineShow = false;\n this.keyPointShow = false;\n }\n this.options.realTimeRoute = v;\n if (this.realTimeLine && this.show) {\n this.realTimeLine.show = v;\n }\n this._elms.realTimeRoute && this._elms.realTimeRoute.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"keyPointShow\",\n get: function get() {\n return this._keyPoint;\n },\n set: function set(v) {\n this._keyPoint = v;\n for (var i = 0; i < this.keyPoints.length; i++) {\n if (this.show) {\n this.keyPoints[i].show = v;\n }\n }\n this._elms.keyPointShow && this._elms.keyPointShow.forEach(function (item) {\n item.checked = v;\n });\n if (!v && this.lineEdit) {\n // 关闭线编辑\n this._lineEdit = v;\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.ControllerObject && this.ControllerObject.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n this._elms.lineEdit && this._elms.lineEdit.forEach(function (item) {\n item.checked = v;\n });\n }\n }\n }, {\n key: \"lineEdit\",\n get: function get() {\n return this._lineEdit;\n },\n set: function set(v) {\n var _this6 = this;\n var linePositions = [];\n var computePositionsSmooth = function computePositionsSmooth(positions) {\n linePositions = _this6.renewLinePositions(positions);\n _this6.model.position = linePositions[0];\n _this6.modelMove(linePositions);\n };\n if (v) {\n this.viewFollow = false;\n if (YJ.Measure.GetMeasureStatus()) {\n console.warn('上一次测量未结束');\n this.lineEdit = false;\n return;\n } else {\n this.ground = false;\n this.smooth = false;\n this.state = false;\n YJ.Measure.SetMeasureStatus(true);\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](this.sdk);\n var selectPoint;\n computePositionsSmooth(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(this.options.line.positions));\n var leftEvent = function leftEvent(movement, cartesian) {\n var pick = _this6.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n for (var i = 0; i < _this6.keyPoints.length; i++) {\n if (_this6.keyPoints[i].id === pick.id.id) {\n // this.keyPoints[i].show = false\n selectPoint = pick.id;\n _this6.ControllerObject.position = _this6.options.line.positions[selectPoint.index];\n _this6.ControllerObject.editTranslational();\n _this6.tip && _this6.tip.destroy();\n _this6.tip = null;\n _this6.ControllerObject.controllerCallBack = function (params) {\n // console.log('params', params)\n _this6.options.line.positions[selectPoint.index] = params.position;\n if (selectPoint.index === 0) {\n _this6.options.height = _this6.options.line.positions[selectPoint.index].alt;\n _this6._elms.height && _this6._elms.height.forEach(function (item) {\n item.value = Number(_this6.options.height.toFixed(2));\n });\n }\n selectPoint.position = Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt);\n computePositionsSmooth(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(_this6.options.line.positions));\n };\n break;\n }\n }\n // originalPosition = this.cartesian3Towgs84(cartesian, this.sdk.viewer)\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this6.keyPointShow = false;\n YJ.Measure.SetMeasureStatus(false);\n _this6.event.destroy();\n _this6.tip && _this6.tip.destroy();\n _this6.tip = null;\n _this6.ControllerObject.destroy();\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this6.tip && _this6.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this6.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this6.keyPointShow = false;\n YJ.Measure.SetMeasureStatus(false);\n _this6.event.destroy();\n _this6.tip && _this6.tip.destroy();\n _this6.tip = null;\n _this6.ControllerObject.destroy();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n this.line.polyline.positions = new Cesium.CallbackProperty(function () {\n return linePositions;\n }, false);\n }\n // 显示关键点\n this.keyPointShow = v;\n } else {\n if (this.lineEdit) {\n YJ.Measure.SetMeasureStatus(false);\n this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n }\n // 隐藏关键点\n this.keyPointShow = v;\n this.ControllerObject.destroy();\n }\n this._lineEdit = v;\n this._elms.lineEdit && this._elms.lineEdit.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"routeDirection\",\n get: function get() {\n return this.options.routeDirection;\n },\n set: function set(v) {\n this.options.routeDirection = v;\n this._elms.routeDirection && this._elms.routeDirection.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"loop\",\n get: function get() {\n return this.options.loop;\n },\n set: function set(v) {\n this.options.loop = v;\n if (this.TweenAnimate && this.TweenAnimate._isPlaying) {\n if (v) {\n this.TweenAnimate.repeat(Infinity);\n } else {\n this.TweenAnimate.repeat();\n }\n }\n this._elms.loop && this._elms.loop.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"firstPersonView\",\n get: function get() {\n return this.options.firstPersonView;\n },\n set: function set(v) {\n var _this7 = this;\n // this.state = true\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n var splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n if (Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])() || splitSdk.sdkD || !this.show) {\n v = false;\n }\n cancelAnimationFrame(this._requestAnimationFrameEventId);\n this._firstPersonViewEvent && this._firstPersonViewEvent.destroy();\n this.sdk.viewer._firstPersonView = v;\n this.options.firstPersonView = v;\n if (this.options.firstPersonView) {\n this.viewFollow = true;\n this.firstPersonHeadingPitch = {\n heading: 0,\n pitch: -10\n };\n this.state = true;\n this.model && (this.model.show = false);\n if (this._DialogObject && this._DialogObject._element.content) {\n var e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n e_firstPerson[0].className = 'btn is-active';\n e_firstPerson[1].className = 'btn';\n }\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"CameraController\"])(this.sdk, false);\n var _splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n var targetSdk;\n if (this.sdk === _splitSdk.sdkP) {\n targetSdk = _splitSdk.sdkD;\n } else {\n targetSdk = _splitSdk.sdkP;\n }\n var targetEntity = targetSdk ? targetSdk.entityMap.get(this.options.id) : undefined;\n if (this.sdk) this._firstPersonViewEvent = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](this.sdk);\n this._firstPersonViewEvent.mouse_right_down(function (movement, cartesian) {\n var startPosition = _objectSpread({}, movement.position);\n _this7._firstPersonViewEvent.mouse_move(function (movement2, cartesian2) {\n _this7.firstPersonHeadingPitch.heading = _this7.firstPersonHeadingPitch.heading + (movement2.endPosition.x - startPosition.x) / 20;\n _this7.firstPersonHeadingPitch.pitch = _this7.firstPersonHeadingPitch.pitch + (startPosition.y - movement2.endPosition.y) / 10;\n targetEntity && (targetEntity.firstPersonHeadingPitch = _objectSpread({}, _this7.firstPersonHeadingPitch));\n startPosition = _objectSpread({}, movement2.endPosition);\n }, true);\n }, true);\n this._firstPersonViewEvent.mouse_right_up(function (movement, cartesian) {\n _this7._firstPersonViewEvent.mouse_move(function () {});\n }, true);\n } else {\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"CameraController\"])(this.sdk, true);\n if (this.model && this.modelShow && this.show) {\n var show = true;\n if (this.show && (!this.showView || this.showView == 3 || !sdkD)) {\n show = true;\n } else {\n show = false;\n }\n this.model.show = show;\n }\n if (this._DialogObject && this._DialogObject._element.content) {\n var _e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n if (_e_firstPerson[0] && _e_firstPerson[1]) {\n _e_firstPerson[0].className = 'btn';\n _e_firstPerson[1].className = 'btn is-active';\n }\n }\n if (this.viewFollow && this.show) {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n }\n if (this.sdk.viewer.scene.mode === 3) {\n var pointEntity = this.sdk.viewer.entities.add({\n // show: false,\n position: this.positions_smooth[0],\n // position of the point\n point: {\n color: Cesium.Color.RED.withAlpha(0),\n // color of the point\n pixelSize: 0\n }\n });\n this.sdk.viewer.trackedEntity = pointEntity;\n }\n this.viewFollow = this.viewFollow;\n }\n }\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"viewFollow\",\n get: function get() {\n return this.options.viewFollow;\n },\n set: function set(v) {\n var splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n // if (sdk2D || splitSdk.sdkD) {\n // v = false\n // }\n if (!this.show) {\n v = false;\n }\n this.options.viewFollow = v;\n if (!this.options.viewFollow) {\n this.firstPersonView = false;\n } else {\n if (this.editObj) {\n this.editObj.destroy();\n this.editObj = null;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '开始调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn';\n }\n }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"closeRotateAround\"])(this.sdk);\n this.lineEdit = false;\n }\n if (this.options.firstPersonView) {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n if (this._DialogObject && this._DialogObject._element.content) {\n var e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n if (e_firstPerson[0] && e_firstPerson[1]) {\n e_firstPerson[0].className = 'btn';\n e_firstPerson[1].className = 'btn is-active';\n }\n }\n } else {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n if (v && this.show && this.model) {\n var pointEntity = this.sdk.viewer.entities.add({\n // show: false,\n position: this.model.position,\n // position of the point\n point: {\n color: Cesium.Color.RED.withAlpha(0),\n // color of the point\n pixelSize: 0\n }\n });\n this.sdk.viewer.trackedEntity = pointEntity;\n }\n }\n var sdk3D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get3DView\"])();\n if (sdk3D) {\n if (this.sdk != sdk3D) {\n var that3D = sdk3D.entityMap.get(this.options.id);\n if (that3D && that3D.viewFollow != v) {\n that3D.viewFollow = v;\n }\n } else {\n if (sdk2D) {\n var that2D = sdk2D.entityMap.get(this.options.id);\n if (that2D && that2D.viewFollow != v) {\n that2D.viewFollow = v;\n if (this.TweenAnimate && this.TweenAnimate._isPlaying) {\n that2D.setMovePositionByDistance(this.TweenAnimate._object.distance);\n }\n }\n }\n }\n }\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(this.sdk, this.options.id);\n this._elms.viewFollow && this._elms.viewFollow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.show = v;\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n var show = v;\n if (this.show && (!this.showView || this.showView == 3 || !sdkD)) {\n show = v;\n } else {\n show = false;\n }\n if (this.show) {\n if (this.label) {\n this.label.show = show;\n this.label.pixelOffset = this.options.label.pixelOffset;\n if (this.options.label.position) {\n setTimeout(function () {\n if (_this8.options.label.position.alt) {\n _this8.label && (_this8.label.position = [_this8.options.label.position.lng, _this8.options.label.position.lat, _this8.options.label.position.alt]);\n } else {\n _this8.getClampToHeight({\n lng: _this8.options.label.position.lng,\n lat: _this8.options.label.position.lat\n }).then(function (height) {\n _this8.label && (_this8.label.position = [_this8.options.label.position.lng, _this8.options.label.position.lat, height]);\n });\n }\n }, 0);\n }\n }\n } else {\n this.label && (this.label.show = false);\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_22__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this9 = this;\n this.options.label.color = v;\n this.label && (this.label.color = v);\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this9.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this9._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label && (this.label.fontSize = v);\n this.label.pixelOffset = this.options.label.pixelOffset;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label && (this.label.scaleByDistance = v);\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label && (this.label.near = near);\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label && (this.label.far = far);\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n\n // 创建路径\n }, {\n key: \"modelMove\",\n value: // 模型移动\n function () {\n var _modelMove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3(positions) {\n var _this10 = this;\n var option,\n _this,\n time,\n startDistance,\n viewer,\n lineString,\n i,\n position,\n line,\n totalTime,\n lastDistance,\n motionArray,\n HeadingPitchRoll,\n HeadingPitchRoll2,\n previous,\n m,\n _animateUpdate,\n setPosition,\n _setPosition,\n getHeadingPitchRoll,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n getHeadingPitchRoll = function _getHeadingPitchRoll(pointA, pointB) {\n // console.log(distance, _this.cartesian3Towgs84(pointA, viewer), _this.cartesian3Towgs84(pointB, viewer))\n //建立以点A为原点,X轴为east,Y轴为north,Z轴朝上的坐标系\n var transform = Cesium.Transforms.eastNorthUpToFixedFrame(pointA);\n //向量AB\n if (!pointB) {\n return;\n }\n var positionvector = Cesium.Cartesian3.subtract(pointB, pointA, new Cesium.Cartesian3());\n //因transform是将A为原点的eastNorthUp坐标系中的点转换到世界坐标系的矩阵\n //AB为世界坐标中的向量\n //因此将AB向量转换为A原点坐标系中的向量,需乘以transform的逆矩阵。\n var vector = Cesium.Matrix4.multiplyByPointAsVector(Cesium.Matrix4.inverse(transform, new Cesium.Matrix4()), positionvector, new Cesium.Cartesian3());\n //归一化\n var direction = Cesium.Cartesian3.normalize(vector, new Cesium.Cartesian3());\n // console.log(direction)\n //heading\n var heading = Math.atan2(direction.y, direction.x) - Cesium.Math.PI_OVER_TWO;\n var pitch = Cesium.Math.PI_OVER_TWO - Cesium.Math.acosClamped(direction.z);\n // console.log(pitch * (180 / Math.PI))\n var roll = Cesium.Math.fastApproximateAtan2(direction.x, direction.z);\n // console.log({heading: heading * (180 / Math.PI), pitch: pitch * (180 / Math.PI), roll: roll * (180 / Math.PI)})\n return {\n heading: Cesium.Math.TWO_PI - Cesium.Math.zeroToTwoPi(heading),\n pitch: pitch,\n roll: roll\n };\n };\n _setPosition = function _setPosition3() {\n _setPosition = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(distance) {\n var sdk2D, splitSdk, start, stop, coordinates, sliced, position, positionCamera, filterEntitys, _iterator, _step, _step$value, key, value, result, _sdk2D, pos3, height2, position2, fromDegreesArray, _i2, cartesian3, pos84, positions_smooth, _i3, _cartesian, modeHeadingPitchRoll, heading, pitch, roll, matrix, that3D, mx, my, mz, rotationX, rotationY, rotationZ, originalMatrix, labelPosition, targetHeading;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.model.isMove = true;\n sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n if (!(!_this.sdk.viewer || !_this.sdk.viewer.scene)) {\n _context2.next = 6;\n break;\n }\n _this.removeModelAnimate();\n return _context2.abrupt(\"return\");\n case 6:\n start = 0;\n stop = distance;\n sliced = line;\n if (!stop) {\n _context2.next = 16;\n break;\n }\n _context2.next = 12;\n return turf.lineSliceAlong(line, start, stop, {\n units: 'kilometers'\n });\n case 12:\n sliced = _context2.sent;\n // _this.realTimeRouteArray = sliced+\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]);\n _context2.next = 17;\n break;\n case 16:\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(line.geometry.coordinates[0]);\n case 17:\n if (!_this.ground) {\n _context2.next = 57;\n break;\n }\n // if (viewer.terrainProvider.availability) {\n // let result = await new Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(coordinates[0], coordinates[1])]);\n // position = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], result[0].height)\n // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], result[0].height + 1)\n // }\n // else {\n // position = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1])\n // positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], 1)\n // }\n filterEntitys = [];\n _iterator = _createForOfIteratorHelper(_this.sdk.entityMap);\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2), key = _step$value[0], value = _step$value[1];\n if (!value.type || value.type !== 'glb' && value.type !== 'bim' && value.type !== 'tileset' && value.type !== 'TrajectoryMotion' && value.type !== 'ParticleEffects' && value.entity) {\n // if(value.type === 'ParticleEffects') {\n // for (let i = 0; i < value.entity._particles.length; i++) {\n // filterEntitys.push(value.entity._particles[i]._billboard)\n // }\n // }\n filterEntitys.push(value.entity);\n if (value.label && value.label.entity) {\n filterEntitys.push(value.label.entity);\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (_this.label && _this.label.entity) {\n filterEntitys.push(_this.label.entity);\n }\n\n // let point1 = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], -10000);\n // let point2 = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], 10000000000);\n // let direction = Cesium.Cartesian3.subtract(point2, point1, new Cesium.Cartesian3());\n // let c = Cesium.Cartesian3.normalize(direction, direction);\n // console.log('射线方向:', c);\n // let ray = new Cesium.Ray(point1, c);\n // let pickedObjects = this.sdk.viewer.scene.pickFromRay(ray);\n // console.log('pickedObjects', pickedObjects)\n // console.log('height', Cesium.Cartographic.fromCartesian(pickedObjects.position).height)\n _sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n if (!(_sdk2D && _this.sdk == _sdk2D)) {\n _context2.next = 28;\n break;\n }\n result = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]);\n position = result;\n _context2.next = 32;\n break;\n case 28:\n _context2.next = 30;\n return _this.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]), [_this.model].concat(filterEntitys));\n case 30:\n result = _context2.sent;\n position = result;\n case 32:\n if (!result) {\n position = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]);\n }\n pos3 = _this.cartesian3Towgs84(position, viewer);\n height2 = 0;\n _context2.prev = 35;\n _context2.next = 38;\n return Cesium.sampleTerrainMostDetailed(_this.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(pos3.lng, pos3.lat)]);\n case 38:\n position2 = _context2.sent;\n height2 = position2[0].height;\n _context2.next = 45;\n break;\n case 42:\n _context2.prev = 42;\n _context2.t0 = _context2[\"catch\"](35);\n height2 = 0;\n case 45:\n if (pos3.alt < height2) {\n pos3.alt = height2;\n }\n pos3.alt = Number(pos3.alt.toFixed(1));\n position = Cesium.Cartesian3.fromDegrees(pos3.lng, pos3.lat, pos3.alt);\n if (!(!_this.sdk.viewer || !_this.sdk.viewer.scene)) {\n _context2.next = 51;\n break;\n }\n _this.removeModelAnimate();\n return _context2.abrupt(\"return\");\n case 51:\n positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], _this.cartesian3Towgs84(position, _this.sdk.viewer).alt + 1.8);\n fromDegreesArray = [];\n for (_i2 = 0; _i2 < sliced.geometry.coordinates.length; _i2++) {\n fromDegreesArray.push(sliced.geometry.coordinates[_i2][0], sliced.geometry.coordinates[_i2][1]);\n }\n _this.realTimePositions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n // _this.realTimeLine.polyline.positions = \n _context2.next = 76;\n break;\n case 57:\n cartesian3 = _this.spline.evaluate(distance / _this.distance);\n if (cartesian3) {\n _context2.next = 60;\n break;\n }\n return _context2.abrupt(\"return\");\n case 60:\n pos84 = _this.cartesian3Towgs84(cartesian3, viewer);\n coordinates = [pos84.lng, pos84.lat, pos84.alt + 1.8];\n position = cartesian3;\n positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], coordinates[2]);\n positions_smooth = [];\n _i3 = 0;\n case 66:\n if (!(_i3 <= 1000)) {\n _context2.next = 74;\n break;\n }\n if (!(_i3 / 1000 > distance / _this.distance)) {\n _context2.next = 69;\n break;\n }\n return _context2.abrupt(\"break\", 74);\n case 69:\n _cartesian = _this.spline.evaluate(_i3 / 1000);\n positions_smooth.push(_cartesian);\n case 71:\n _i3++;\n _context2.next = 66;\n break;\n case 74:\n positions_smooth.push(cartesian3);\n _this.realTimePositions = positions_smooth;\n case 76:\n HeadingPitchRoll = getHeadingPitchRoll(_this.model.position, position);\n if (previous && previous.position) {\n HeadingPitchRoll2 = getHeadingPitchRoll(previous.position, position);\n HeadingPitchRoll.pitch = HeadingPitchRoll2.pitch;\n }\n previous.position = _this.model.position;\n modeHeadingPitchRoll = Cesium.HeadingPitchRoll.fromDegrees(_this.options.model.heading, _this.options.model.pitch, _this.options.model.roll);\n heading = 0;\n pitch = 0;\n roll = 0;\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);\n if (!(_this.options.routeDirection && !_this.lineEdit)) {\n _context2.next = 96;\n break;\n }\n heading = HeadingPitchRoll.heading * (180 / Math.PI) - 90 - _this.options.model.heading;\n pitch = HeadingPitchRoll.pitch * (180 / Math.PI) - _this.options.model.pitch;\n roll = _this.options.model.roll;\n if (Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get3DView\"])()) {\n that3D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get3DView\"])().entityMap.get(_this.options.id);\n } else {\n that3D = splitSdk.sdkP && splitSdk.sdkP.entityMap.get(_this.options.id);\n }\n if (!_this.state) {\n if (that3D && (sdk2D && sdk2D === _this.sdk || splitSdk.sdkD && splitSdk.sdkD === _this.sdk)) {\n heading = that3D.model.heading;\n pitch = that3D.model.pitch;\n roll = that3D.model.roll;\n }\n }\n if (!(isNaN(heading) || isNaN(pitch) || isNaN(roll))) {\n _context2.next = 92;\n break;\n }\n return _context2.abrupt(\"return\");\n case 92:\n if (!_this.state) {\n if (that3D && (sdk2D && sdk2D === _this.sdk || splitSdk.sdkD && splitSdk.sdkD === _this.sdk)) {\n heading = that3D.model.heading;\n pitch = that3D.model.pitch;\n roll = that3D.model.roll;\n } else {\n heading = _this.model.heading || _this.model.heading === 0 ? _this.model.heading : _this.options.model.heading;\n pitch = _this.model.pitch || _this.model.pitch === 0 ? _this.model.pitch : _this.options.model.pitch;\n roll = _this.model.roll || _this.model.roll === 0 ? _this.model.roll : _this.options.model.roll;\n }\n }\n _this.model.modelMatrix = Cesium.Matrix4.multiplyByMatrix3(matrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(heading, pitch, roll)), _this.model.modelMatrix);\n _context2.next = 112;\n break;\n case 96:\n if (!_this.entity) {\n _context2.next = 112;\n break;\n }\n heading = _this.options.model.heading;\n pitch = _this.options.model.pitch;\n roll = _this.options.model.roll;\n if (!(isNaN(heading) || isNaN(pitch) || isNaN(roll))) {\n _context2.next = 102;\n break;\n }\n return _context2.abrupt(\"return\");\n case 102:\n // 旋转\n mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(roll));\n my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(pitch));\n mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading));\n rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.multiply(matrix, rotationX, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationZ, _this.entity.modelMatrix);\n case 112:\n // console.log((HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI))\n\n _this.model.position = position;\n _this.model.roll = roll;\n _this.model.pitch = pitch;\n _this.model.heading = heading;\n if (position) {\n _context2.next = 118;\n break;\n }\n return _context2.abrupt(\"return\");\n case 118:\n labelPosition = _this.cartesian3Towgs84(position, _this.sdk.viewer);\n _this.label.position = [labelPosition.lng, labelPosition.lat, labelPosition.alt];\n lastDistance = distance;\n // console.log(position)\n _this.realTimeRouteArray.push(position);\n if (_this.viewFollow) {\n // console.log(Cesium.Math.toDegrees(_this.sdk.viewer.camera.pitch))\n if (_this.options.firstPersonView) {\n targetHeading = heading + 90 + _this.firstPersonHeadingPitch.heading;\n if (!_this.routeDirection) {\n targetHeading = 180 - targetHeading;\n }\n _this.sdk.viewer.camera.setView({\n destination: positionCamera,\n orientation: {\n heading: Cesium.Math.toRadians(targetHeading),\n pitch: Cesium.Math.toRadians(_this.firstPersonHeadingPitch.pitch),\n roll: 0\n }\n });\n } else {\n if (_this.sdk.viewer.scene.mode === 3) {\n if (_this.sdk.viewer.trackedEntity) {\n _this.sdk.viewer.trackedEntity.position = position;\n // _this.sdk.viewer.camera.position = position\n }\n } else {\n if (_this.sdk.viewer.trackedEntity) {\n _this.sdk.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], _this.sdk.viewer.camera.positionCartographic.height),\n orientation: {\n heading: Cesium.Math.toRadians(-90),\n pitch: 0,\n roll: 0\n }\n });\n }\n }\n }\n }\n case 123:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[35, 42]]);\n }));\n return _setPosition.apply(this, arguments);\n };\n setPosition = function _setPosition2(_x4) {\n return _setPosition.apply(this, arguments);\n };\n option = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {\n time: 0\n };\n cancelAnimationFrame(this._requestAnimationFrameEventId);\n _this = this;\n time = option.time || 0;\n startDistance = option.distance;\n viewer = this.sdk.viewer;\n if (!(!this.model || !this.sdk || !this.sdk.viewer)) {\n _context3.next = 11;\n break;\n }\n return _context3.abrupt(\"return\");\n case 11:\n this.removeModelAnimate();\n lineString = [];\n for (i = 0; i < positions.length; i++) {\n position = this.cartesian3Towgs84(positions[i], viewer);\n lineString.push([position.lng, position.lat, position.alt]);\n }\n // console.log(lineString)\n line = turf.lineString(lineString);\n this.distance = turf.length(line, {\n units: 'kilometers'\n });\n totalTime = this.distance * 1000 / this.options.speed; // 总耗时(秒)\n if (!startDistance && startDistance !== 0) {\n startDistance = 0.000001;\n if (time) {\n if (time > totalTime) {\n time = totalTime;\n }\n startDistance = time / totalTime * this.distance;\n }\n } else {\n if (startDistance > this.distance) {\n startDistance = this.distance;\n }\n time = startDistance / this.distance * totalTime;\n }\n // console.log(totalTime)\n lastDistance = 0;\n motionArray = [];\n previous = {};\n m = 0;\n this.TweenAnimate = new TWEEN.Tween({\n distance: startDistance\n }).to({\n distance: this.distance\n }, (totalTime - time) * 1000).delay(this.delay * 1000).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop ? Infinity : 0).onRepeat(function () {\n if (time || startDistance) {\n _this10.modelMove(positions);\n }\n }).onUpdate(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(_this10.TweenAnimate._duration == Infinity)) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n m++;\n if (_this10.sdk.viewer) {\n _context.next = 6;\n break;\n }\n _this10.removeModelAnimate();\n return _context.abrupt(\"return\");\n case 6:\n if (!isNaN(r.distance)) {\n setPosition(r.distance);\n }\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }()).onEveryStart(function () {\n _this10.realTimeRouteArray = [];\n }).onComplete(function (d) {\n _this10.state = false;\n // this.removeModelAnimate()\n // let runtimeAnimation = this.model._activeAnimations._runtimeAnimations\n // // let animations = await this.model.readyPromise\n // for (let i = runtimeAnimation.length - 1; i >= 0; i--) {\n // switch (runtimeAnimation[i].name) {\n // case '跑':\n // this.model.activeAnimations.remove(runtimeAnimation[i])\n // break;\n // default:\n // }\n // }\n });\n if (this.state) {\n this.TweenAnimate.start();\n } else {\n _animateUpdate = function animateUpdate() {\n _this._requestAnimationFrameEventId2 = requestAnimationFrame(_animateUpdate);\n if (_this.options.firstPersonView) {\n var targetHeading = _this.model.heading + 90 + _this.firstPersonHeadingPitch.heading;\n if (!_this.routeDirection) {\n targetHeading = 180 - targetHeading;\n }\n var positionCamera = _objectSpread({}, _this.sdk.viewer.camera._position);\n _this.sdk.viewer.camera.setView({\n destination: positionCamera,\n orientation: {\n heading: Cesium.Math.toRadians(targetHeading),\n pitch: Cesium.Math.toRadians(_this.firstPersonHeadingPitch.pitch),\n roll: 0\n }\n });\n }\n };\n setPosition(startDistance);\n setTimeout(function () {\n _this.model.isMove = false;\n }, 1000);\n _animateUpdate();\n }\n\n // function executeAnimate() {\n // }\n // setTimeout(() => {\n // let i = 0\n // function animate() {\n // if (i < motionArray.length) {\n // let result = motionArray[i].result;\n // console.log(result)\n // result.then((res) => {\n // let position = Cesium.Cartesian3.fromDegrees(motionArray[i].lng, motionArray[i].lat, res[0].height)\n\n // let HeadingPitchRoll = getHeadingPitchRoll(_this.model.position, position)\n // let modeHeadingPitchRoll = Cesium.HeadingPitchRoll.fromDegrees(_this.options.model.heading, _this.options.model.pitch, _this.options.model.roll)\n // let heading = 0\n // let pitch = 0\n // let roll = 0\n // if (_this.options.routeDirection) {\n // heading = (HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI) - 90\n // pitch = (HeadingPitchRoll.pitch - modeHeadingPitchRoll.pitch) * (180 / Math.PI)\n // }\n // else {\n // heading = - _this.options.model.heading\n // pitch = - _this.options.model.pitch\n // }\n // roll = - _this.options.model.roll\n // // console.log(heading)\n // let matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position)\n // _this.model.modelMatrix = Cesium.Matrix4.multiplyByMatrix3(matrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(heading, pitch, roll)), _this.model.modelMatrix)\n // _this.model.position = position\n // if (_this.sdk.viewer.trackedEntity) {\n // _this.sdk.viewer.trackedEntity.position = position\n // }\n // i++\n // requestAnimationFrame(animate);\n // })\n\n // }\n\n // }\n // animate();\n // }, 2000);\n\n // 根据两个坐标点,获取Heading(朝向)\n case 24:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function modelMove(_x) {\n return _modelMove.apply(this, arguments);\n }\n return modelMove;\n }()\n }, {\n key: \"setMovePositionByDistance\",\n value: function setMovePositionByDistance(distance) {\n var positions_smooth = this.renewLinePositions(this.options.line.positions);\n this.modelMove(positions_smooth, {\n distance: distance\n });\n }\n }, {\n key: \"setMovePositionByTime\",\n value: function setMovePositionByTime(time) {\n var positions_smooth = this.renewLinePositions(this.options.line.positions);\n this.modelMove(positions_smooth, {\n time: time\n });\n }\n\n // 编辑框\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4(state) {\n var _this11 = this;\n var _this, contentElm, labelColorPicker, heightBoxElm, all_elm, getAnimationsList, e_firstPerson, rubricElm, iconRubric;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\");\n case 3:\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context4.next = 46;\n break;\n }\n _context4.next = 9;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk, this.options, {\n title: '轨迹运动属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this11.name = _this11.name.trim();\n if (!_this11.name) {\n _this11.name = '未命名对象';\n }\n _this11.originalOptions = _this11.deepCopyObj(_this11.options);\n // this.options.viewFollowOrientation = {}\n // this.options.viewFollowOrientation.heading = Cesium.Math.toDegrees(this.sdk.viewer.camera.heading)\n // this.options.viewFollowOrientation.pitch = Cesium.Math.toDegrees(this.sdk.viewer.camera.pitch)\n // this.options.viewFollowOrientation.roll = Cesium.Math.toDegrees(this.sdk.viewer.camera.roll)\n // this.options.viewFollowOrientation.direction = this.sdk.viewer.camera.direction\n _this11._DialogObject.close();\n var cdoptions = _this11.deepCopyObj(_this11.options);\n cdoptions.host = '';\n _this11.Dialog.confirmCallBack && _this11.Dialog.confirmCallBack(cdoptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"syncData\"])(_this11.sdk, _this11.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(_this11.sdk, _this11.options.id);\n },\n removeCallBack: function removeCallBack() {\n if (_this11.sdk.viewer.trackedEntity) {\n _this11.sdk.viewer.entities.remove(_this11.sdk.viewer.trackedEntity);\n _this11.sdk.viewer.trackedEntity = null;\n }\n _this11.Dialog.removeCallBack && _this11.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this11._DialogObject = null;\n _this11.reset();\n _this11.Dialog.closeCallBack && _this11.Dialog.closeCallBack();\n if (_this11.editObj) {\n _this11.editObj.destroy();\n _this11.editObj = null;\n }\n _this11.keyPointShow = false;\n _this11.event && _this11.event.destroy();\n _this11.tip && _this11.tip.destroy();\n _this11.tip = null;\n _this11.ControllerObject.destroy();\n if (_this11.firstPersonView !== _this11.originalOptions.firstPersonView) {\n _this11.firstPersonView = _this11.originalOptions.firstPersonView;\n }\n if (_this11.firstPersonView && _this11.modelShow) {\n _this11.model && (_this11.model.show = false);\n }\n },\n showCallBack: function showCallBack(show) {\n _this11.show = show;\n _this11.Dialog.showCallBack && _this11.Dialog.showCallBack();\n // this.options.show = show\n // this.model && (this.model.show = show)\n // this.line && (this.line.show = show)\n }\n });\n case 9:\n this._DialogObject = _context4.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' trajectory-motion';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n if (this.editObj) {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '结束调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn is-active';\n } else {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '开始调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn';\n }\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this11.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this11.labelColor = '';\n } //点击清空按钮事件回调\n });\n heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0];\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.heightBox = heightBoxElm;\n this._elms.labelColor = [labelColorPicker];\n if (this.model) {\n getAnimationsList = function getAnimationsList() {\n var animations = _this11.model.loader.components.animations;\n if (_this11._DialogObject) {\n if (animations) {\n var tagData = [{\n name: '无',\n value: '无'\n }];\n for (var i = 0; i < animations.length; i++) {\n tagData.push({\n name: animations[i].name,\n value: animations[i].name\n });\n }\n Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_21__[\"legp\"])(_this11._DialogObject._element.content, \".model-animate-select\").legp_search(tagData);\n }\n var selectElm = contentElm.getElementsByClassName('model-animate-select')[0].getElementsByTagName('input')[0];\n selectElm.value = _this11.modelAnimate;\n selectElm.addEventListener('input', function (e, c) {\n _this11.modelAnimate = selectElm.value;\n });\n }\n };\n if (Number(Cesium.VERSION.split('.')[1]) >= 107) {\n if (this.model.ready) {\n getAnimationsList();\n } else {\n this.model.readyEvent.addEventListener(function () {\n getAnimationsList();\n });\n }\n } else {\n this.model.readyPromise.then(function (entity) {\n getAnimationsList();\n });\n }\n }\n if (this.ground) {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box disabled');\n } else {\n this._elms.heightBox && (this._elms.heightBox.className = 'input-number input-number-unit-1 height-box');\n }\n e_firstPerson = contentElm.querySelectorAll(\"button[name='firstPerson']\");\n e_firstPerson[0].addEventListener('click', function (e) {\n var splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n if (!Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])() && !splitSdk.sdkD) {\n if (!_this11.firstPersonView) {\n _this11.viewFollow = true;\n }\n _this11.firstPersonView = true;\n }\n });\n e_firstPerson[1].addEventListener('click', function (e) {\n if (_this11.firstPersonView) {\n _this11.viewFollow = true;\n }\n _this11.firstPersonView = false;\n });\n if (this.options.firstPersonView) {\n e_firstPerson[0].className = 'btn is-active';\n e_firstPerson[1].className = 'btn';\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n } else {\n e_firstPerson[0].className = 'btn';\n e_firstPerson[1].className = 'btn is-active';\n }\n rubricElm = document.createElement('div');\n rubricElm.className = 'custom-rubric-box';\n rubricElm.style.transformOrigin = 'center bottom';\n rubricElm.style.position = 'absolute';\n rubricElm.style.top = '180px';\n rubricElm.style.right = '3px';\n rubricElm.style.padding = '5px 10px';\n rubricElm.style.backgroundColor = '#3e4249';\n rubricElm.style.borderRadius = '5px';\n rubricElm.style.fontSize = '12px';\n rubricElm.style.color = '#ff5733';\n rubricElm.style.display = 'none';\n rubricElm.innerHTML = \"\\u573A\\u666F\\u6B63\\u4E1C\\u65B9\\u5411\\u4E3A\\u8F68\\u8FF9\\u524D\\u8FDB\\u6B63\\u65B9\\u5411
    \";\n iconRubric = contentElm.getElementsByClassName('icon-rubric')[0];\n iconRubric.addEventListener('mouseenter', function (e) {\n rubricElm.style.display = 'block';\n });\n document.addEventListener('mousemove', function (event) {\n // 检查点击的元素是否在模态框内容区域之外\n if (!iconRubric.contains(event.target)) {\n rubricElm.style.display = 'none';\n }\n });\n this._DialogObject._element.content.appendChild(rubricElm);\n setTimeout(function () {\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_22__[\"getFontList\"])();\n var fontObject = Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_21__[\"legp\"])(_this11._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this11._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this11.labelFontFamily].value;\n for (var i = 0; i < fontData.length; i++) {\n if (fontData[i].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[i].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i4 = 0; _i4 < fontData.length; _i4++) {\n if (fontData[_i4].value === fontDataLegpElm.value) {\n _this11.labelFontFamily = fontData[_i4].key;\n break;\n }\n }\n });\n _this11._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n case 46:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function edit(_x5) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_19__[\"closeRotateAround\"])(this.sdk);\n if (this.options.customView && this.options.customView.position && this.options.customView.orientation) {\n this.sdk.viewer.camera.flyTo({\n destination: this.options.customView.position,\n orientation: this.options.customView.orientation\n });\n } else {\n this.line && this.sdk.viewer.flyTo(this.line, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee5() {\n var i, sdk2D;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.scene.primitives.remove(this.model);\n this.sdk.viewer.entities.remove(this.line);\n this.sdk.viewer.entities.remove(this.realTimeLine);\n this.label && this.label.remove();\n for (i = 0; i < this.keyPointShow.length; i++) {\n this.sdk.viewer.entities.remove(this.keyPointShow[i]);\n }\n this.line = null;\n this.realTimeLine = null;\n this.model = null;\n this.label = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (this._mouseRightevent) {\n this._mouseRightevent.destroy();\n }\n this.removeModelAnimate();\n sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"get2DView\"])();\n if (!sdk2D || sdk2D !== this.sdk) {\n this.viewFollow = false;\n }\n cancelAnimationFrame(this._requestAnimationFrameEventId);\n _context5.next = 19;\n return this.sdk.removeIncetance(this.options.id);\n case 19:\n _context5.next = 21;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"syncData\"])(this.sdk, this.options.id);\n case 21:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"reset\",\n value: function () {\n var _reset = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee6() {\n var _this12 = this;\n var positions;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n this.options.model.url !== this.originalOptions.model.url && this.changeModelUrl(this.originalOptions.model.url);\n this.name = this.originalOptions.name;\n if (JSON.stringify(this.options.line.positions) !== JSON.stringify(this.originalOptions.line.positions)) {\n this.options.line.positions = this.deepCopyObj(this.originalOptions.line.positions);\n positions = this.renewLinePositions(this.options.line.positions);\n this.line.polyline.positions = positions;\n setTimeout(function () {\n _this12.model.position = positions[0];\n _this12.modelMove(positions);\n }, 0);\n }\n this.modelShow = this.originalOptions.model.show;\n this.noseToTail !== this.originalOptions.line.noseToTail && (this.noseToTail = this.originalOptions.line.noseToTail);\n this.height !== this.originalOptions.height && (this.height = this.originalOptions.height);\n this.lineShow !== this.originalOptions.line.show && (this.lineShow = this.originalOptions.line.show);\n this.keyPointShow = false;\n this.routeDirection = this.originalOptions.routeDirection;\n this.scale = this.originalOptions.model.scale;\n this.loop !== this.originalOptions.loop && (this.loop = this.originalOptions.loop);\n this.viewFollow = this.originalOptions.viewFollow;\n this.state = this.originalOptions.state;\n this.speed = this.originalOptions.speed;\n this.smooth !== this.originalOptions.line.smooth && (this.smooth = this.originalOptions.line.smooth);\n this.realTimeRoute = this.originalOptions.realTimeRoute;\n this.modelAnimate = this.originalOptions.model.animate;\n this.delay = this.originalOptions.delay;\n this.ground !== this.originalOptions.ground && (this.ground = this.originalOptions.ground);\n if (this.firstPersonView !== this.originalOptions.firstPersonView) {\n this.firstPersonView = this.originalOptions.firstPersonView;\n }\n if (this.firstPersonView && this.modelShow) {\n this.model && (this.model.show = false);\n }\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.options = this.deepCopyObj(this.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 36:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function reset() {\n return _reset.apply(this, arguments);\n }\n return reset;\n }() // viewFollow(e) {\n // if (e.target.checked) {\n // var pointEntity = this.sdk.viewer.entities.add({\n // // show: false,\n // position: this.positions_smooth[0], // position of the point\n // point: {\n // color: Cesium.Color.RED.withAlpha(0), // color of the point\n // pixelSize: 0\n // }\n // });\n // this.sdk.viewer.trackedEntity = pointEntity;\n // }\n // else {\n // this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity)\n // this.sdk.viewer.trackedEntity = null\n // }\n // }\n }, {\n key: \"modelRotate\",\n value: function modelRotate() {\n if (this.editObj) {\n this.editObj.destroy();\n this.editObj = null;\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '开始调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn';\n }\n return false;\n } else {\n if (this.viewFollow) {\n if (window.ELEMENT) {\n window.ELEMENT.Message.closeAll();\n window.ELEMENT.Message({\n message: '关闭视角跟随后可调整模型方向!',\n type: 'warning',\n duration: 1500\n });\n console.warn('关闭视角跟随后可调整模型方向!');\n }\n } else {\n if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) {\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].innerHTML = '结束调整';\n this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn is-active';\n }\n this.state = false;\n this.editObj = new _ModelController_EditGltf__WEBPACK_IMPORTED_MODULE_15__[\"default\"](this.sdk, this.model);\n this.editObj.editRtation();\n this.editObj.transformCallBack = this.rotationEditingCallBack;\n this.routeDirection = false;\n var heading = this.options.model.heading;\n var pitch = this.options.model.pitch;\n var roll = this.options.model.roll;\n if (isNaN(heading) || isNaN(pitch) || isNaN(roll)) {\n return;\n }\n var matrix = Cesium.Transforms.eastNorthUpToFixedFrame(this.model.position);\n // 旋转\n var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(roll));\n var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(pitch));\n var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading));\n var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);\n var rotationY = Cesium.Matrix4.fromRotationTranslation(my);\n var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);\n var originalMatrix = new Cesium.Matrix4();\n Cesium.Matrix4.multiply(matrix, rotationX, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationY, originalMatrix);\n Cesium.Matrix4.multiply(originalMatrix, rotationZ, this.entity.modelMatrix);\n }\n return true;\n }\n }\n }, {\n key: \"clickChangeModel\",\n value: function clickChangeModel() {\n this.Dialog.changeModelCallBack && this.Dialog.changeModelCallBack();\n }\n\n //旋转时,坐标信息变化的回调\n }, {\n key: \"rotationEditingCallBack\",\n get: function get() {\n var _this13 = this;\n return function (params) {\n _this13.options.model.heading = params.rz;\n _this13.options.model.pitch = params.ry;\n _this13.options.model.roll = params.rx;\n _this13._rotationEditingCallBack && _this13._rotationEditingCallBack(_this13.editObj._params);\n _this13.entity && (_this13.entity.isMove = true);\n clearTimeout(_classPrivateFieldGet(_timeoutEventObject, _this13));\n _classPrivateFieldSet(_timeoutEventObject, _this13, setTimeout(function () {\n _this13.entity && (_this13.entity.isMove = false);\n }, 500));\n };\n },\n set: function set(callback) {\n this._rotationEditingCallBack = callback;\n }\n }, {\n key: \"changeModelUrl\",\n value: function () {\n var _changeModelUrl = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee7(url) {\n var _this14 = this;\n var matrix, position, options, getAnimationsList;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n this.sdk.viewer.scene.primitives.remove(this.model);\n this.options.model.url = this.replaceHost(url, this.options.host);\n matrix = this.model.modelMatrix;\n position = this.model.position;\n options = {\n id: this.options.id,\n url: this.options.model.url,\n show: this.options.model.show,\n scale: this.options.model.scale\n // minimumPixelSize: this.options.model.pixelSize,\n // maximumScale: 100000,\n };\n getAnimationsList = function getAnimationsList() {\n if (_this14.originalOptions && _this14.options.model.url === _this14.originalOptions.model.url) {\n _this14.modelAnimate = _this14.originalOptions.model.animate;\n } else {\n _this14.options.model.animate = '无';\n }\n var animations = _this14.model.loader.components.animations;\n if (_this14._DialogObject) {\n if (animations) {\n var tagData = [{\n name: '无',\n value: '无'\n }];\n for (var i = 0; i < animations.length; i++) {\n tagData.push({\n name: animations[i].name,\n value: animations[i].name\n });\n }\n Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_21__[\"legp\"])(_this14._DialogObject._element.content, \".model-animate-select\").legp_search(tagData);\n }\n var selectElm = _this14._DialogObject._element.content.getElementsByClassName('model-animate-select')[0].getElementsByTagName('input')[0];\n selectElm.value = _this14.modelAnimate;\n selectElm.addEventListener('input', function (e, c) {\n _this14.modelAnimate = selectElm.value;\n });\n }\n };\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context7.next = 15;\n break;\n }\n _context7.next = 9;\n return Cesium.Model.fromGltfAsync(options);\n case 9:\n this.model = _context7.sent;\n this.model.position = position;\n this.sdk.viewer.scene.primitives.add(this.model);\n this.model.readyEvent.addEventListener(function () {\n getAnimationsList();\n _this14.model.modelMatrix = matrix;\n });\n _context7.next = 18;\n break;\n case 15:\n this.model = this.sdk.viewer.scene.primitives.add(Cesium.Model.fromGltf(options));\n this.model.position = position;\n this.model.readyPromise.then(function (entity) {\n getAnimationsList();\n _this14.model.modelMatrix = matrix;\n });\n case 18:\n this.model.imageBasedLighting.luminanceAtZenith = 0.6;\n case 19:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this);\n }));\n function changeModelUrl(_x6) {\n return _changeModelUrl.apply(this, arguments);\n }\n return changeModelUrl;\n }() // 移除动画\n }, {\n key: \"removeModelAnimate\",\n value: function removeModelAnimate() {\n if (this.TweenAnimate) {\n clearTimeout(this.TweenAnimate.timeout);\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n }\n // if (modelPrimitive && modelPrimitive._activeAnimations && modelPrimitive._activeAnimations._runtimeAnimations) {\n // let runtimeAnimation = modelPrimitive._activeAnimations._runtimeAnimations\n // for (let i = runtimeAnimation.length - 1; i >= 0; i--) {\n // switch (runtimeAnimation[i].name) {\n // case '跑':\n // modelPrimitive.activeAnimations.remove(runtimeAnimation[i])\n // break;\n // default:\n // }\n // }\n // }\n }\n }, {\n key: \"controllerCallBack\",\n get: function get() {\n return function (params) {};\n }\n\n // 更新坐标\n ,\n set: function set(callback) {\n this._controllerCallBack = callback;\n }\n }, {\n key: \"renewLinePositions\",\n value: function renewLinePositions(pos) {\n var positions = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pos);\n if (this.noseToTail) {\n positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pos), [pos[0]]);\n }\n if (this.reverse) {\n positions.reverse();\n }\n var fromDegreesArrayHeights = [];\n var time = [];\n var positions_smooth = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n time.push(i / (positions.length - 1));\n }\n if (this.smooth) {\n this.spline = new Cesium.CatmullRomSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n } else {\n this.spline = new Cesium.LinearSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n }\n for (var _i5 = 0; _i5 <= 1000; _i5++) {\n var cartesian3 = this.spline.evaluate(_i5 / 1000);\n positions_smooth.push(cartesian3);\n }\n this.positions_smooth = positions_smooth;\n return positions_smooth;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"addLine\",\n value: function addLine(that) {\n var positions_smooth = that.renewLinePositions(that.options.line.positions);\n var show;\n if (that.options.show) {\n show = that.options.line.show;\n } else {\n show = false;\n }\n that.sdk.viewer.entities.removeById(that.options.id + '-2');\n that.sdk.viewer.entities.removeById(that.options.id + '-3');\n that.line = that.sdk.viewer.entities.add({\n id: that.options.id + '-2',\n polyline: {\n positions: positions_smooth,\n width: 2,\n clampToGround: that.ground,\n material: show ? new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff'),\n dashLength: 20 //短划线长度\n }) : new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString('#00ffff00'),\n dashLength: 20 //短划线长度\n }),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.realTimeLine = that.sdk.viewer.entities.add({\n id: that.options.id + '-3',\n show: that.options.realTimeRoute ? that.options.realTimeRoute : false,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.realTimePositions;\n }, false),\n width: 2,\n clampToGround: that.ground,\n material: Cesium.Color.fromCssColorString('#ff0000'),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.sdk._entityZIndex++;\n if (that._mouseRightevent) {\n that._mouseRightevent.destroy();\n }\n that._mouseRightevent = new _Event_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk);\n that._mouseRightevent.mouse_right(function (movement, cartesian) {\n var splitSdk = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"getSdk\"])();\n var targetSdk;\n if (that.sdk === splitSdk.sdkP) {\n targetSdk = splitSdk.sdkD;\n } else {\n targetSdk = splitSdk.sdkP;\n }\n var targetEntity = targetSdk ? targetSdk.entityMap.get(that.options.id) : undefined;\n targetEntity && (targetEntity.viewFollow = false);\n that.viewFollow = false;\n }, true);\n TrajectoryMotion.addModel(that);\n TrajectoryMotion.addKeyPoint(that);\n that.noseToTail = that.options.line.noseToTail;\n that.smooth = that.options.line.smooth;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_20__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n // 创建模型\n }, {\n key: \"addModel\",\n value: function () {\n var _addModel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee8(that) {\n var url, options, matrix, positions, fromDegreesArrayHeights, i, pos;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n url = that.replaceHost(that.options.model.url, that.options.host);\n options = {\n id: that.options.id,\n url: url,\n show: that.options.show ? that.options.model.show : false,\n scale: that.options.model.scale\n // minimumPixelSize: that.options.model.pixelSize,\n // maximumScale: 100000,\n // allowPicking: false\n };\n if (!(Number(Cesium.VERSION.split('.')[1]) >= 107)) {\n _context8.next = 11;\n break;\n }\n _context8.next = 5;\n return Cesium.Model.fromGltfAsync(options);\n case 5:\n that.model = _context8.sent;\n that.model.originalBoundingSphereRadius = 0;\n that.sdk.viewer.scene.primitives.add(that.model);\n that.model.readyEvent.addEventListener(function () {\n that.model.originalBoundingSphereRadius = that.model.boundingSphere.radius;\n that.modelAnimate = that.options.model.animate;\n });\n _context8.next = 14;\n break;\n case 11:\n that.model = that.sdk.viewer.scene.primitives.add(Cesium.Model.fromGltf(options));\n that.model.originalBoundingSphereRadius = 0;\n that.model.readyPromise.then(function () {\n that.model.originalBoundingSphereRadius = that.model.boundingSphere.radius;\n that.modelAnimate = that.options.model.animate;\n });\n case 14:\n that.model.imageBasedLighting.luminanceAtZenith = 0.6;\n // 设置模型的旋转角度,使其水平放置于地面\n matrix = Cesium.Transforms.eastNorthUpToFixedFrame(that.positions_smooth[0]);\n that.model.modelMatrix = matrix;\n that.model.position = that.positions_smooth[0];\n that.model.customScale = {\n x: that.options.model.scale,\n y: that.options.model.scale,\n z: that.options.model.scale\n };\n // 模型大小比例\n // Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(0.1, 0.1, 0.1), this.entity.modelMatrix)\n positions = that.options.line.positions;\n fromDegreesArrayHeights = [];\n for (i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n pos = that.smooth ? that.positions_smooth : Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights);\n TrajectoryMotion.createLabel(that);\n that.modelMove(pos);\n that.entity = that.model;\n case 26:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8);\n }));\n function addModel(_x7) {\n return _addModel.apply(this, arguments);\n }\n return addModel;\n }()\n }, {\n key: \"createLabel\",\n value: function () {\n var _createLabel = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee9(that) {\n var labelPosition;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n labelPosition = that.cartesian3Towgs84(that.model.position, that.sdk.viewer);\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_18__[\"default\"](that.sdk, {\n show: that.options.show ? that.options.label.show ? true : false : false,\n position: [labelPosition.lng, labelPosition.lat, labelPosition.alt],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n }, that.model);\n case 2:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9);\n }));\n function createLabel(_x8) {\n return _createLabel.apply(this, arguments);\n }\n return createLabel;\n }() // 创建关键点\n }, {\n key: \"addKeyPoint\",\n value: function () {\n var _addKeyPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee10(that) {\n var i, height, result, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n i = 0;\n case 1:\n if (!(i < that.options.line.positions.length)) {\n _context10.next = 13;\n break;\n }\n _context10.next = 4;\n return that.getClampToHeight(that.options.line.positions[i]);\n case 4:\n height = _context10.sent;\n _context10.next = 7;\n return Cesium.Cartesian3.fromDegrees(that.options.line.positions[i].lng, that.options.line.positions[i].lat, height);\n case 7:\n result = _context10.sent;\n entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n show: that._keyPoint || false,\n position: that.ground ? result : Cesium.Cartesian3.fromDegrees(that.options.line.positions[i].lng, that.options.line.positions[i].lat, that.options.line.positions[i].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.keyPoints.push(entity);\n case 10:\n i++;\n _context10.next = 1;\n break;\n case 13:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10);\n }));\n function addKeyPoint(_x9) {\n return _addKeyPoint.apply(this, arguments);\n }\n return addKeyPoint;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (TrajectoryMotion);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVHJhamVjdG9yeU1vdGlvbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9UcmFqZWN0b3J5TW90aW9uL2luZGV4LmpzP2Y3YWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IEVkaXRHbHRmIGZyb20gXCIuLi8uLi9Nb2RlbENvbnRyb2xsZXIvRWRpdEdsdGZcIjtcclxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xsZXIvaW5kZXhcIjtcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTGFiZWxPYmplY3QgZnJvbSAnLi4vTGFiZWxPYmplY3QnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgQ2FtZXJhQ29udHJvbGxlciwgY2xvc2VSb3RhdGVBcm91bmQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBzeW5jRGF0YSwgZ2V0MkRWaWV3LCBnZXQzRFZpZXcgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi8uLi9PYmovRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkLCBnZXRTZGsgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcblxyXG5jbGFzcyBUcmFqZWN0b3J5TW90aW9uIGV4dGVuZHMgQmFzZSB7XHJcbiAgI3RpbWVvdXRFdmVudE9iamVjdCA9IG51bGxcclxuICAvKipcclxuICogQGNvbnN0cnVjdG9yXHJcbiAqIEBkZXNjcmlwdGlvbiDovajov7nov5DliqhcclxuICogQHBhcmFtIHNka1xyXG4gKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MSB7bnVtYmVyfSDov5DooYzpgJ/luqZcclxuICogQHBhcmFtIG9wdGlvbnMuZGVsYXk9MCB7bnVtYmVyfSDov5Dliqjlu7bov5/ml7bpl7Qo5q+r56eSKVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sb29wPXRydWUge2Jvb2xlYW59IOW+queOr1xyXG4gKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQge251bWJlcn0g6LW35aeL54K56auY5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLmdyb3VuZD1mYWxzZSB7Ym9vbGVhbn0g6LS05ZywXHJcbiAqIEBwYXJhbSBvcHRpb25zLnN0YXRlPXRydWUge2Jvb2xlYW59IOaooeWei+i/kOWKqFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5yb3V0ZURpcmVjdGlvbj10cnVlIHtib29sZWFufSDot6/lvoTmlrnlkJFcclxuICogQHBhcmFtIG9wdGlvbnMudmlld0ZvbGxvdz1mYWxzZSB7Ym9vbGVhbn0g6KeG6KeS6Lef6ZqPXHJcbiAqIEBwYXJhbSBvcHRpb25zLnJlYWxUaW1lUm91dGU9ZmFsc2Uge2Jvb2xlYW59IOWunuaXtui3r+W+hFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5tb2RlbCB7b2JqZWN0fSDmqKHlnovlj4LmlbBcclxuICogQHBhcmFtIG9wdGlvbnMubW9kZWwuc2hvdz10cnVlIHtib29sZWFufSDmqKHlnovmmL7pmpBcclxuICogQHBhcmFtIG9wdGlvbnMubW9kZWwudXJsIHtzdHJpbmd9IOaooeWei+WcsOWdgFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5tb2RlbC5waXhlbFNpemU9NzAge251bWJlcn0g5qih5Z6L5YOP57Sg5aSn5bCPXHJcbiAqIEBwYXJhbSBvcHRpb25zLm1vZGVsLmhlYWRpbmc9MCB7bnVtYmVyfSDmqKHlnovoiKrlkJHop5JcclxuICogQHBhcmFtIG9wdGlvbnMubW9kZWwucGl0Y2g9MCB7bnVtYmVyfSDmqKHlnovkv6/ku7Dop5JcclxuICogQHBhcmFtIG9wdGlvbnMubW9kZWwucm9sbD0wIHtudW1iZXJ9IOaooeWei+e/u+a7muinklxyXG4gKiBAcGFyYW0gb3B0aW9ucy5tb2RlbC5zY2FsZT0xIHtudW1iZXJ9IOaooeWei+avlOS+i1xyXG4gKiBAcGFyYW0gb3B0aW9ucy5tb2RlbC5hbmltYXRlIHtzdHJpbmd9IOaooeWei+WKqOeUu1xyXG4gKiBAcGFyYW0gb3B0aW9ucy5saW5lIHtvYmplY3R9IOi3r+W+hOWPguaVsFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5saW5lLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g6Lev5b6E5pi+6ZqQXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxpbmUuc21vb3RoPWZhbHNlIHtib29sZWFufSDot6/lvoTlnIbmu5FcclxuICogQHBhcmFtIG9wdGlvbnMubGluZS5ub3NlVG9UYWlsPWZhbHNlIHtib29sZWFufSDot6/lvoTpppblsL7nm7jogZRcclxuICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5saW5lLnBvc2l0aW9ucyDnu4/nuqzluqblkozpq5jluqbnmoTliJfooajvvIzlgLzkuqTmm78gW3tsb24sbGF0LGFsdH0sLi4uXVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2hvdyB7c3RyaW5nfSDmoIfnrb7mmL7pmpBcclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcge251bWJlcn0g57uP5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mb250U2l6ZT0yMCB7bnVtYmVyfSDlrZfkvZPlpKflsI9cclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aD00IHtudW1iZXJ9IOW8lee6v+WuvVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3I9WycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10ge2FycmF5fSDog4zmma/popzoibJcclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5mYXI9MTAwMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/nOi3neemu1xyXG4gKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAnJ1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gKG9wdGlvbnMuc3BlZWQgfHwgb3B0aW9ucy5zcGVlZCA9PT0gMCkgPyBvcHRpb25zLnNwZWVkIDogMVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zcGVlZCA8PSAwKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IDAuMDFcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5kZWxheSA9IG9wdGlvbnMuZGVsYXkgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLmxvb3AgPSBvcHRpb25zLmxvb3AgfHwgb3B0aW9ucy5sb29wID09PSBmYWxzZSA/IG9wdGlvbnMubG9vcCA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbCA9IG9wdGlvbnMubW9kZWwgPSBvcHRpb25zLm1vZGVsIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSA9IG9wdGlvbnMubGluZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zID0gb3B0aW9ucy5saW5lLnBvc2l0aW9ucyB8fCBbXVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmhlaWdodCA9IChvcHRpb25zLmhlaWdodCB8fCBvcHRpb25zLmhlaWdodCA9PT0gMCkgPyBvcHRpb25zLmhlaWdodCA6ICh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0gPyB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0uYWx0IDogMClcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0gPyB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0uYWx0IDogMFxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IE51bWJlcih0aGlzLm9wdGlvbnMuaGVpZ2h0LnRvRml4ZWQoMikpXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5zaG93ID0gb3B0aW9ucy5saW5lLnNob3cgfHwgb3B0aW9ucy5saW5lLnNob3cgPT09IGZhbHNlID8gb3B0aW9ucy5saW5lLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMubW9kZWwuc2hvdyA9IG9wdGlvbnMubW9kZWwuc2hvdyB8fCBvcHRpb25zLm1vZGVsLnNob3cgPT09IGZhbHNlID8gb3B0aW9ucy5tb2RlbC5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGVsLnVybCA9IG9wdGlvbnMubW9kZWwudXJsIHx8ICcnXHJcbiAgICB0aGlzLm9wdGlvbnMubW9kZWwucGl4ZWxTaXplID0gb3B0aW9ucy5tb2RlbC5waXhlbFNpemUgfHwgNzBcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC5oZWFkaW5nID0gb3B0aW9ucy5tb2RlbC5oZWFkaW5nIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC5waXRjaCA9IG9wdGlvbnMubW9kZWwucGl0Y2ggfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGVsLnJvbGwgPSBvcHRpb25zLm1vZGVsLnJvbGwgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGVsLnNjYWxlID0gKG9wdGlvbnMubW9kZWwuc2NhbGUgfHwgb3B0aW9ucy5tb2RlbC5zY2FsZSA9PT0gMCkgPyBvcHRpb25zLm1vZGVsLnNjYWxlIDogMVxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGVsLmFuaW1hdGUgPSBvcHRpb25zLm1vZGVsLmFuaW1hdGUgfHwgJ+aXoCdcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLnNtb290aCA9IG9wdGlvbnMubGluZS5zbW9vdGggPyBvcHRpb25zLmxpbmUuc21vb3RoIDogZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLm5vc2VUb1RhaWwgPSBvcHRpb25zLmxpbmUubm9zZVRvVGFpbCA/IG9wdGlvbnMubGluZS5ub3NlVG9UYWlsIDogZmFsc2VcclxuICAgIHRoaXMucG9zaXRpb25zX3Ntb290aCA9IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuZ3JvdW5kID0gb3B0aW9ucy5ncm91bmQgfHwgZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5yZXZlcnNlID0gb3B0aW9ucy5yZXZlcnNlIHx8IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuc3RhdGUgPSAob3B0aW9ucy5zdGF0ZSB8fCBvcHRpb25zLnN0YXRlID09PSBmYWxzZSkgPyBvcHRpb25zLnN0YXRlIDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnJvdXRlRGlyZWN0aW9uID0gKG9wdGlvbnMucm91dGVEaXJlY3Rpb24gfHwgb3B0aW9ucy5yb3V0ZURpcmVjdGlvbiA9PT0gZmFsc2UpID8gb3B0aW9ucy5yb3V0ZURpcmVjdGlvbiA6IHRydWVcclxuICAgIHRoaXMua2V5UG9pbnRzID0gW11cclxuICAgIHRoaXMucmVhbFRpbWVQb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5fbGluZUVkaXQgPSBmYWxzZVxyXG4gICAgdGhpcy5fa2V5UG9pbnQgPSBmYWxzZVxyXG4gICAgdGhpcy5fZWxtcyA9IHt9O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcbiAgICB0aGlzLnJlYWxUaW1lUm91dGVBcnJheSA9IFtdXHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuZmlyc3RQZXJzb24gPSBmYWxzZVxyXG4gICAgdGhpcy5kaXN0YW5jZVxyXG4gICAgLy8gdGhpcy5hZGRNb2RlbCgpXHJcblxyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IHtcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICfmnIDlsJHpnIDopoHkuKTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5fZXJyb3IsXHJcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCA9IG5ldyBDb250cm9sbGVyKHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdGb2xsb3cgPSBmYWxzZVxyXG4gICAgICB0aGlzLm9wdGlvbnMuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgVHJhamVjdG9yeU1vdGlvbi5hZGRMaW5lKHRoaXMpXHJcbiAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuXHJcbiAgICAgIC8vIHRoaXMub3B0aW9ucy52aWV3Rm9sbG93T3JpZW50YXRpb24gPSBvcHRpb25zLnZpZXdGb2xsb3dPcmllbnRhdGlvblxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFuaW1hdGVVcGRhdGUoKVxyXG4gICAgLy8gZnVuY3Rpb24gYW5pbWF0ZVVwZGF0ZSgpIHtcclxuICAgIC8vICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVVcGRhdGUpO1xyXG4gICAgLy8gICBUV0VFTi51cGRhdGUoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuICdUcmFqZWN0b3J5TW90aW9uJ1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgbGV0IHNka0QgPSBnZXQyRFZpZXcoKVxyXG4gICAgICBpZiAoIXRoaXMuaXNTaG93VmlldyB8fCAhc2RrRCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdlxyXG4gICAgICAgIGlmICh0aGlzLm9yaWdpbmFsT3B0aW9ucykge1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHZcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwuc2hvdyA9ICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpID8gdGhpcy5tb2RlbFNob3cgOiBmYWxzZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpKSB7XHJcbiAgICAgICAgICB0aGlzLmxpbmUucG9seWxpbmUubWF0ZXJpYWwgPSB0aGlzLmxpbmVTaG93ID8gbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZmZmJyksXHJcbiAgICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLFxyXG4gICAgICAgICAgfSkgOiBuZXcgQ2VzaXVtLlBvbHlsaW5lRGFzaE1hdGVyaWFsUHJvcGVydHkoe1xyXG4gICAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmZmYwMCcpLFxyXG4gICAgICAgICAgICBkYXNoTGVuZ3RoOiAyMCxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5saW5lLnBvbHlsaW5lLm1hdGVyaWFsID0gbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZmZmMDAnKSxcclxuICAgICAgICAgICAgZGFzaExlbmd0aDogMjAsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMua2V5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLmtleVBvaW50c1tpXS5zaG93ID0gKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkgPyB0aGlzLmtleVBvaW50U2hvdyA6IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgIHRoaXMucmVhbFRpbWVMaW5lICYmICh0aGlzLnJlYWxUaW1lTGluZS5zaG93ID0gKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkgPyB0cnVlIDogZmFsc2UpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9ICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpID8gdGhpcy5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vZGVsLnNob3cgPSAoIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzIHx8ICFzZGtEKSA/IHRoaXMub3B0aW9ucy5zaG93IDogZmFsc2VcclxuICAgICAgICBsZXQgc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICAgICAgaWYgKCghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpKSB7XHJcbiAgICAgICAgICBzaG93ID0gdGhpcy5vcHRpb25zLnNob3dcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWFsVGltZUxpbmUgJiYgKHRoaXMucmVhbFRpbWVMaW5lLnNob3cgPSBmYWxzZSlcclxuICAgICAgICB0aGlzLmxpbmUucG9seWxpbmUubWF0ZXJpYWwgPSBzaG93ID8gbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmZmZicpLFxyXG4gICAgICAgICAgZGFzaExlbmd0aDogMjAsXHJcbiAgICAgICAgfSkgOiBuZXcgQ2VzaXVtLlBvbHlsaW5lRGFzaE1hdGVyaWFsUHJvcGVydHkoe1xyXG4gICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZmZmMDAnKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5rZXlQb2ludHNbaV0uc2hvdyA9ICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpID8gc2hvdyA6IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgIHRoaXMudmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgdGhpcy5pc1Nob3dWaWV3ID0gZmFsc2VcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLlj4LmlbDlv4XpobvkuLpib29sZWFuXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICB9XHJcbiAgc2V0IGhlaWdodCh2KSB7XHJcbiAgICBpZiAodGhpcy5ncm91bmQpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgZGlmZmVyZW5jZSA9IHRoaXMub3B0aW9ucy5oZWlnaHQgLSBOdW1iZXIodi50b0ZpeGVkKDIpKVxyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IE51bWJlcih2LnRvRml4ZWQoMikpXHJcbiAgICBpZiAodGhpcy5saW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VuZCkge1xyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgZHZhbHVlID0gdGhpcy5vcHRpb25zLmhlaWdodCAtIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1swXS5hbHRcclxuICAgICAgICB0aGlzLmxpbmUucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmFsdCArPSBkdmFsdWVcclxuICAgICAgICAgIHRoaXMua2V5UG9pbnRzW2ldLnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxuZywgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwucG9zaXRpb24pIHtcclxuICAgICAgbGV0IGhlYWRpbmcgPSB0aGlzLm1vZGVsLmhlYWRpbmdcclxuICAgICAgbGV0IHBpdGNoID0gdGhpcy5tb2RlbC5waXRjaFxyXG4gICAgICBsZXQgcm9sbCA9IHRoaXMubW9kZWwucm9sbFxyXG4gICAgICBpZiAoaXNOYU4oaGVhZGluZykgfHwgaXNOYU4ocGl0Y2gpIHx8IGlzTmFOKHJvbGwpKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHRoaXMubW9kZWwucG9zaXRpb24pXHJcblxyXG4gICAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5VHJhbnNsYXRpb24obWF0cml4LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMCwgMCwgLWRpZmZlcmVuY2UpLCBtYXRyaXgpXHJcbiAgICAgIENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKG1hdHJpeCwgdGhpcy5tb2RlbC5wb3NpdGlvbilcclxuXHJcbiAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlNYXRyaXgzKG1hdHJpeCwgQ2VzaXVtLk1hdHJpeDMuZnJvbUhlYWRpbmdQaXRjaFJvbGwoQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXMoaGVhZGluZywgcGl0Y2gsIHJvbGwpKSwgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcblxyXG5cclxuICAgICAgLy8gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVRyYW5zbGF0aW9uKHRoaXMubW9kZWwubW9kZWxNYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLCAwLCAtZGlmZmVyZW5jZSksIHRoaXMubW9kZWwubW9kZWxNYXRyaXgpXHJcbiAgICAgIC8vIENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKHRoaXMubW9kZWwubW9kZWxNYXRyaXgsIHRoaXMubW9kZWwucG9zaXRpb24pXHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IHRoaXMubGFiZWwuc2hvdylcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbikge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQpIHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0XSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcsIGxhdDogdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB9KS50aGVuKChoZWlnaHQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQsIGhlaWdodF0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMClcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gdGhpcy5yZW5ld0xpbmVQb3NpdGlvbnModGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zKVxyXG4gICAgdGhpcy5saW5lLnBvbHlsaW5lLnBvc2l0aW9ucyA9IHBvc2l0aW9uc19zbW9vdGhcclxuICAgIHRoaXMuX2VsbXMuaGVpZ2h0ICYmIHRoaXMuX2VsbXMuaGVpZ2h0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IE51bWJlcih2LnRvRml4ZWQoMikpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ3JvdW5kXHJcbiAgfVxyXG4gIHNldCBncm91bmQodikge1xyXG4gICAgdGhpcy5saW5lRWRpdCA9IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMuZ3JvdW5kID0gdlxyXG4gICAgdGhpcy5yZWFsVGltZUxpbmUucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHZcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG5cclxuICAgIGlmICh0aGlzLmxpbmUpIHtcclxuICAgICAgaWYgKHYpIHtcclxuICAgICAgICB0aGlzLmxpbmUucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWVcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMua2V5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodE1vc3REZXRhaWxlZChbbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sYXQpXSkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMua2V5UG9pbnRzW2ldLnBvc2l0aW9uID0gcmVzdWx0WzBdXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUgJiYgdGhpcy5Ud2VlbkFuaW1hdGUuX2lzUGxheWluZykge1xyXG4gICAgICAgIHRoaXMuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSh0aGlzLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSgwKVxyXG4gICAgICB9XHJcbiAgICB9LCAyMDApO1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gbGV0IF90aGlzID0gdGhpc1xyXG5cclxuICAgIC8vIGxldCBwb3NpdGlvbnMgPSB0aGlzLnJlbmV3TGluZVBvc2l0aW9ucyh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICAvLyBsZXQgc3RhcnREaXN0YW5jZSA9IHRoaXMuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2VcclxuICAgIC8vIGxldCBsaW5lU3RyaW5nID0gW11cclxuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW2ldLCBfdGhpcy5zZGsudmlld2VyKVxyXG4gICAgLy8gICBsaW5lU3RyaW5nLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0LCBwb3NpdGlvbi5hbHRdKVxyXG4gICAgLy8gfVxyXG4gICAgLy8gbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcobGluZVN0cmluZyk7XHJcbiAgICAvLyB0aGlzLmRpc3RhbmNlID0gdHVyZi5sZW5ndGgobGluZSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgLy8gc2V0UG9zaXRpb24oc3RhcnREaXN0YW5jZSlcclxuXHJcbiAgICAvLyBhc3luYyBmdW5jdGlvbiBzZXRQb3NpdGlvbihkaXN0YW5jZSkge1xyXG4gICAgLy8gICBsZXQgc3RhcnQgPSAwO1xyXG4gICAgLy8gICBsZXQgc3RvcCA9IGRpc3RhbmNlO1xyXG4gICAgLy8gICBsZXQgY29vcmRpbmF0ZXNcclxuICAgIC8vICAgbGV0IHNsaWNlZCA9IGxpbmVcclxuICAgIC8vICAgaWYgKHN0b3ApIHtcclxuICAgIC8vICAgICBzbGljZWQgPSBhd2FpdCB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUsIHN0YXJ0LCBzdG9wLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAvLyAgICAgLy8gX3RoaXMucmVhbFRpbWVSb3V0ZUFycmF5ID0gc2xpY2VkK1xyXG4gICAgLy8gICAgIGNvb3JkaW5hdGVzID0gWy4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1dXHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgZWxzZSB7XHJcbiAgICAvLyAgICAgY29vcmRpbmF0ZXMgPSBbLi4ubGluZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXV1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBsZXQgcG9zaXRpb25cclxuICAgIC8vICAgbGV0IHBvc2l0aW9uQ2FtZXJhXHJcblxyXG4gICAgLy8gICBpZiAoX3RoaXMuZ3JvdW5kKSB7XHJcbiAgICAvLyAgICAgLy8gaWYgKHZpZXdlci50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAvLyAgICAgLy8gICBsZXQgcmVzdWx0ID0gYXdhaXQgbmV3IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKHZpZXdlci50ZXJyYWluUHJvdmlkZXIsIFtDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSldKTtcclxuICAgIC8vICAgICAvLyAgIHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCByZXN1bHRbMF0uaGVpZ2h0KVxyXG4gICAgLy8gICAgIC8vICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIHJlc3VsdFswXS5oZWlnaHQgKyAxKVxyXG4gICAgLy8gICAgIC8vIH1cclxuICAgIC8vICAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgICAvLyAgIHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdKVxyXG4gICAgLy8gICAgIC8vICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIDEpXHJcbiAgICAvLyAgICAgLy8gfVxyXG4gICAgLy8gICAgIGxldCBmaWx0ZXJFbnRpdHlzID0gW11cclxuICAgIC8vICAgICAvLyBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgX3RoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgLy8gICAgIC8vICAgaWYgKCF2YWx1ZS50eXBlIHx8ICh2YWx1ZS50eXBlICE9PSAnZ2xiJyAmJiB2YWx1ZS50eXBlIT09ICdiaW0nICYmIHZhbHVlLnR5cGUhPT0gJ3RpbGVzZXQnICYmIHZhbHVlLnR5cGUhPT0gJ1RyYWplY3RvcnlNb3Rpb24nICYmIHZhbHVlLmVudGl0eSkpIHtcclxuICAgIC8vICAgICAvLyAgICAgY29uc29sZS5sb2codmFsdWUuZW50aXR5KVxyXG4gICAgLy8gICAgIC8vICAgICBmaWx0ZXJFbnRpdHlzLnB1c2godmFsdWUuZW50aXR5LmlkKVxyXG4gICAgLy8gICAgIC8vICAgfVxyXG4gICAgLy8gICAgIC8vIH1cclxuICAgIC8vICAgICAvLyBjb25zb2xlLmxvZygnODg4ODg4ODg4OCcsX3RoaXMubW9kZWwsIC4uLmZpbHRlckVudGl0eXMpXHJcblxyXG4gICAgLy8gICAgIGxldCByZXN1bHRcclxuICAgIC8vICAgICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gICAgLy8gICAgIGlmIChzZGsyRCAmJiBfdGhpcy5zZGsgPT0gc2RrMkQpIHtcclxuICAgIC8vICAgICAgIHJlc3VsdCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pXHJcbiAgICAvLyAgICAgICBwb3NpdGlvbiA9IHJlc3VsdFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHJlc3VsdCA9IGF3YWl0IF90aGlzLnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdKSwgW190aGlzLm1vZGVsLCAuLi5maWx0ZXJFbnRpdHlzXSlcclxuICAgIC8vICAgICAgIHBvc2l0aW9uID0gcmVzdWx0XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAvLyAgICAgICBwb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGxldCBwb3MzID0gX3RoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb24sIF90aGlzLnNkay52aWV3ZXIpO1xyXG4gICAgLy8gICAgIGxldCBoZWlnaHQyID0gMFxyXG4gICAgLy8gICAgIHRyeSB7XHJcbiAgICAvLyAgICAgICBsZXQgcG9zaXRpb24yID0gYXdhaXQgQ2VzaXVtLnNhbXBsZVRlcnJhaW5Nb3N0RGV0YWlsZWQoXHJcbiAgICAvLyAgICAgICAgIF90aGlzLnNkay52aWV3ZXIuc2NlbmUudGVycmFpblByb3ZpZGVyLFxyXG4gICAgLy8gICAgICAgICBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3MzLmxuZywgcG9zMy5sYXQpXVxyXG4gICAgLy8gICAgICAgKVxyXG4gICAgLy8gICAgICAgaGVpZ2h0MiA9IHBvc2l0aW9uMlswXS5oZWlnaHRcclxuICAgIC8vICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8gICAgICAgaGVpZ2h0MiA9IDBcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYgKHBvczMuYWx0IDwgaGVpZ2h0Mikge1xyXG4gICAgLy8gICAgICAgcG9zMy5hbHQgPSBoZWlnaHQyXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHBvczMuYWx0ID0gTnVtYmVyKHBvczMuYWx0LnRvRml4ZWQoMSkpXHJcbiAgICAvLyAgICAgcG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3MzLmxuZywgcG9zMy5sYXQsIHBvczMuYWx0KVxyXG4gICAgLy8gICAgIHBvc2l0aW9uQ2FtZXJhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbiwgX3RoaXMuc2RrLnZpZXdlcikuYWx0ICsgMS44KVxyXG4gICAgLy8gICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuXHJcbiAgICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bMF0sIHNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVsxXSlcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgX3RoaXMucmVhbFRpbWVQb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAvLyAgICAgLy8gX3RoaXMucmVhbFRpbWVMaW5lLnBvbHlsaW5lLnBvc2l0aW9ucyA9IFxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2Uge1xyXG4gICAgLy8gICAgIGxldCBjYXJ0ZXNpYW4zID0gX3RoaXMuc3BsaW5lLmV2YWx1YXRlKGRpc3RhbmNlIC8gX3RoaXMuZGlzdGFuY2UpXHJcbiAgICAvLyAgICAgaWYgKCFjYXJ0ZXNpYW4zKSB7XHJcbiAgICAvLyAgICAgICByZXR1cm5cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29vcmRpbmF0ZXMgPSBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4zLCBfdGhpcy5zZGsudmlld2VyKTtcclxuICAgIC8vICAgICBwb3NpdGlvbiA9IGNhcnRlc2lhbjNcclxuICAgIC8vICAgICBwb3NpdGlvbkNhbWVyYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzLmxuZywgY29vcmRpbmF0ZXMubGF0LCBjb29yZGluYXRlcy5hbHQgKyAxLjgpXHJcbiAgICAvLyAgICAgbGV0IHBvc2l0aW9uc19zbW9vdGggPSBbXVxyXG4gICAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDEwMDA7IGkrKykge1xyXG4gICAgLy8gICAgICAgaWYgKChpIC8gMTAwMCkgPiAoZGlzdGFuY2UgLyBfdGhpcy5kaXN0YW5jZSkpIHtcclxuICAgIC8vICAgICAgICAgYnJlYWtcclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGxldCBjYXJ0ZXNpYW4zID0gX3RoaXMuc3BsaW5lLmV2YWx1YXRlKGkgLyAxMDAwKTtcclxuICAgIC8vICAgICAgIHBvc2l0aW9uc19zbW9vdGgucHVzaChjYXJ0ZXNpYW4zKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcG9zaXRpb25zX3Ntb290aC5wdXNoKGNhcnRlc2lhbjMpXHJcbiAgICAvLyAgICAgX3RoaXMucmVhbFRpbWVQb3NpdGlvbnMgPSBwb3NpdGlvbnNfc21vb3RoXHJcbiAgICAvLyAgIH1cclxuXHJcbiAgICAvLyAgIEhlYWRpbmdQaXRjaFJvbGwgPSBnZXRIZWFkaW5nUGl0Y2hSb2xsKF90aGlzLm1vZGVsLnBvc2l0aW9uLCBwb3NpdGlvbilcclxuICAgIC8vICAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzLnBvc2l0aW9uKSB7XHJcbiAgICAvLyAgICAgSGVhZGluZ1BpdGNoUm9sbDIgPSBnZXRIZWFkaW5nUGl0Y2hSb2xsKHByZXZpb3VzLnBvc2l0aW9uLCBwb3NpdGlvbilcclxuICAgIC8vICAgICBIZWFkaW5nUGl0Y2hSb2xsLnBpdGNoID0gSGVhZGluZ1BpdGNoUm9sbDIucGl0Y2hcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBwcmV2aW91cy5wb3NpdGlvbiA9IF90aGlzLm1vZGVsLnBvc2l0aW9uXHJcbiAgICAvLyAgIGxldCBtb2RlSGVhZGluZ1BpdGNoUm9sbCA9IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsLmZyb21EZWdyZWVzKF90aGlzLm9wdGlvbnMubW9kZWwuaGVhZGluZywgX3RoaXMub3B0aW9ucy5tb2RlbC5waXRjaCwgX3RoaXMub3B0aW9ucy5tb2RlbC5yb2xsKVxyXG4gICAgLy8gICBsZXQgaGVhZGluZyA9IDBcclxuICAgIC8vICAgbGV0IHBpdGNoID0gMFxyXG4gICAgLy8gICBsZXQgcm9sbCA9IDBcclxuXHJcbiAgICAvLyAgIGxldCBtYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShwb3NpdGlvbilcclxuICAgIC8vICAgaWYgKF90aGlzLm9wdGlvbnMucm91dGVEaXJlY3Rpb24gJiYgIV90aGlzLmxpbmVFZGl0KSB7XHJcbiAgICAvLyAgICAgaGVhZGluZyA9IChIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcpICogKDE4MCAvIE1hdGguUEkpIC0gOTAgLSBfdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmdcclxuICAgIC8vICAgICBwaXRjaCA9IChIZWFkaW5nUGl0Y2hSb2xsLnBpdGNoKSAqICgxODAgLyBNYXRoLlBJKSAtIF90aGlzLm9wdGlvbnMubW9kZWwucGl0Y2hcclxuICAgIC8vICAgICByb2xsID0gX3RoaXMub3B0aW9ucy5tb2RlbC5yb2xsXHJcbiAgICAvLyAgICAgaWYgKGlzTmFOKGhlYWRpbmcpIHx8IGlzTmFOKHBpdGNoKSB8fCBpc05hTihyb2xsKSkge1xyXG4gICAgLy8gICAgICAgcmV0dXJuXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIF90aGlzLm1vZGVsLm1vZGVsTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeU1hdHJpeDMobWF0cml4LCBDZXNpdW0uTWF0cml4My5mcm9tSGVhZGluZ1BpdGNoUm9sbChDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcyhoZWFkaW5nLCBwaXRjaCwgcm9sbCkpLCBfdGhpcy5tb2RlbC5tb2RlbE1hdHJpeClcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIHtcclxuICAgIC8vICAgICBpZiAoX3RoaXMuZW50aXR5KSB7XHJcbiAgICAvLyAgICAgICBoZWFkaW5nID0gX3RoaXMub3B0aW9ucy5tb2RlbC5oZWFkaW5nXHJcbiAgICAvLyAgICAgICBwaXRjaCA9IF90aGlzLm9wdGlvbnMubW9kZWwucGl0Y2hcclxuICAgIC8vICAgICAgIHJvbGwgPSBfdGhpcy5vcHRpb25zLm1vZGVsLnJvbGxcclxuICAgIC8vICAgICAgIGlmIChpc05hTihoZWFkaW5nKSB8fCBpc05hTihwaXRjaCkgfHwgaXNOYU4ocm9sbCkpIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICAvLyDml4vovaxcclxuICAgIC8vICAgICAgIGxldCBteCA9IENlc2l1bS5NYXRyaXgzLmZyb21Sb3RhdGlvblgoXHJcbiAgICAvLyAgICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhyb2xsKVxyXG4gICAgLy8gICAgICAgKVxyXG4gICAgLy8gICAgICAgbGV0IG15ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWShcclxuICAgIC8vICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHBpdGNoKVxyXG4gICAgLy8gICAgICAgKVxyXG4gICAgLy8gICAgICAgbGV0IG16ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWihcclxuICAgIC8vICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGhlYWRpbmcpXHJcbiAgICAvLyAgICAgICApXHJcbiAgICAvLyAgICAgICBsZXQgcm90YXRpb25YID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obXgpXHJcbiAgICAvLyAgICAgICBsZXQgcm90YXRpb25ZID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obXkpXHJcbiAgICAvLyAgICAgICBsZXQgcm90YXRpb25aID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obXopXHJcbiAgICAvLyAgICAgICBsZXQgb3JpZ2luYWxNYXRyaXggPSBuZXcgQ2VzaXVtLk1hdHJpeDQoKVxyXG4gICAgLy8gICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkobWF0cml4LCByb3RhdGlvblgsIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgLy8gICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkob3JpZ2luYWxNYXRyaXgsIHJvdGF0aW9uWSwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICAvLyAgICAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25aLCBfdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIC8vIGNvbnNvbGUubG9nKChIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcgLSBtb2RlSGVhZGluZ1BpdGNoUm9sbC5oZWFkaW5nKSAqICgxODAgLyBNYXRoLlBJKSlcclxuXHJcblxyXG5cclxuICAgIC8vICAgX3RoaXMubW9kZWwucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgLy8gICBpZiAoIXBvc2l0aW9uKSB7XHJcbiAgICAvLyAgICAgcmV0dXJuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgbGV0IGxhYmVsUG9zaXRpb24gPSBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbiwgX3RoaXMuc2RrLnZpZXdlcilcclxuICAgIC8vICAgX3RoaXMubGFiZWwucG9zaXRpb24gPSBbbGFiZWxQb3NpdGlvbi5sbmcsIGxhYmVsUG9zaXRpb24ubGF0LCBsYWJlbFBvc2l0aW9uLmFsdF1cclxuICAgIC8vICAgbGFzdERpc3RhbmNlID0gZGlzdGFuY2VcclxuICAgIC8vICAgLy8gY29uc29sZS5sb2cocG9zaXRpb24pXHJcbiAgICAvLyAgIF90aGlzLnJlYWxUaW1lUm91dGVBcnJheS5wdXNoKHBvc2l0aW9uKVxyXG4gICAgLy8gICBpZiAoX3RoaXMudmlld0ZvbGxvdykge1xyXG4gICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5waXRjaCkpXHJcbiAgICAvLyAgICAgaWYgKF90aGlzLm9wdGlvbnMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAvLyAgICAgICBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAgIC8vICAgICAgICAgZGVzdGluYXRpb246IHBvc2l0aW9uQ2FtZXJhLFxyXG4gICAgLy8gICAgICAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgLy8gICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyhoZWFkaW5nICsgOTAgKyBfdGhpcy5maXJzdFBlcnNvbkhlYWRpbmdQaXRjaC5oZWFkaW5nKSxcclxuICAgIC8vICAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF90aGlzLmZpcnN0UGVyc29uSGVhZGluZ1BpdGNoLnBpdGNoKSxcclxuICAgIC8vICAgICAgICAgICByb2xsOiAwXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH0pXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgaWYgKF90aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMykge1xyXG4gICAgLy8gICAgICAgICBpZiAoX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAvLyAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5LnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgIC8vICAgICAgICAgICAvLyBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBpZiAoX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAvLyAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAvLyAgICAgICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXMubG5nLCBjb29yZGluYXRlcy5sYXQsIF90aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodCksXHJcbiAgICAvLyAgICAgICAgICAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgLy8gICAgICAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwKSxcclxuICAgIC8vICAgICAgICAgICAgICAgcGl0Y2g6IDAsXHJcbiAgICAvLyAgICAgICAgICAgICAgIHJvbGw6IDBcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICB9KVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCBkaXNhYmxlZCcpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ICYmICh0aGlzLl9lbG1zLmhlaWdodEJveC5jbGFzc05hbWUgPSAnaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTEgaGVpZ2h0LWJveCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5ncm91bmQgJiYgdGhpcy5fZWxtcy5ncm91bmQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1vZGVsUGl4ZWxTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tb2RlbC5waXhlbFNpemVcclxuICB9XHJcbiAgc2V0IG1vZGVsUGl4ZWxTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC5waXhlbFNpemUgPSB2XHJcbiAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsLm1pbmltdW1QaXhlbFNpemUgPSB2XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLm1vZGVsUGl4ZWxTaXplICYmIHRoaXMuX2VsbXMubW9kZWxQaXhlbFNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubW9kZWwuc2NhbGVcclxuICB9XHJcbiAgc2V0IHNjYWxlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC5zY2FsZSA9IE51bWJlcih2KVxyXG4gICAgaWYgKHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbC5zY2FsZSA9IHZcclxuICAgICAgdGhpcy5tb2RlbC5jdXN0b21TY2FsZSA9IHsgeDogdGhpcy5vcHRpb25zLm1vZGVsLnNjYWxlLCB5OiB0aGlzLm9wdGlvbnMubW9kZWwuc2NhbGUsIHo6IHRoaXMub3B0aW9ucy5tb2RlbC5zY2FsZSB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5zY2FsZSAmJiB0aGlzLl9lbG1zLnNjYWxlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG4gIHNldCBzcGVlZCh2KSB7XHJcbiAgICBpZiAodiA8PSAwKSB7XHJcbiAgICAgIHYgPSAwLjAxXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPSB2XHJcbiAgICBpZiAodGhpcy5zdGF0ZSAmJiB0aGlzLlR3ZWVuQW5pbWF0ZSAmJiB0aGlzLlR3ZWVuQW5pbWF0ZS5faXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSh0aGlzLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGxldCB0b3RhbFRpbWUgPSAodGhpcy5kaXN0YW5jZSAqIDEwMDApIC8gdGhpcy5vcHRpb25zLnNwZWVkICogMTAwMFxyXG4gICAgLy8gLy8gdGhpcy5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS90aGlzLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlXHJcbiAgICAvLyB0aGlzLlR3ZWVuQW5pbWF0ZS5fZHVyYXRpb24gPSB0b3RhbFRpbWVcclxuICAgIHRoaXMuX2VsbXMuc3BlZWQgJiYgdGhpcy5fZWxtcy5zcGVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNtb290aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5zbW9vdGhcclxuICB9XHJcbiAgc2V0IHNtb290aCh2KSB7XHJcbiAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLnNtb290aCA9IHZcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLnJlbmV3TGluZVBvc2l0aW9ucyh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcblxyXG4gICAgdGhpcy5saW5lLnBvbHlsaW5lLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xyXG4gICAgdGhpcy5tb2RlbC5wb3NpdGlvbiA9IHBvc2l0aW9uc1swXVxyXG4gICAgdGhpcy5tb2RlbE1vdmUocG9zaXRpb25zKVxyXG4gICAgdGhpcy5fZWxtcy5zbW9vdGggJiYgdGhpcy5fZWxtcy5zbW9vdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGRlbGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kZWxheVxyXG4gIH1cclxuICBzZXQgZGVsYXkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmRlbGF5ID0gdlxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlICYmIHRoaXMuVHdlZW5BbmltYXRlLl9pc1BsYXlpbmcpIHtcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUuZGVsYXkodGhpcy5kZWxheSoxMDAwKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5kZWxheSAmJiB0aGlzLl9lbG1zLmRlbGF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcmV2ZXJzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmV2ZXJzZVxyXG4gIH1cclxuXHJcbiAgc2V0IHJldmVyc2Uodikge1xyXG4gICAgdGhpcy5saW5lRWRpdCA9IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMucmV2ZXJzZSA9IHZcclxuICAgIHRoaXMuc21vb3RoID0gdGhpcy5zbW9vdGhcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhdGVcclxuICB9XHJcbiAgc2V0IHN0YXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGF0ZSA9IHZcclxuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnN0YXRlICYmIHRoaXMuZWRpdE9iaikge1xyXG4gICAgICB0aGlzLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICAgIHRoaXMuZWRpdE9iaiA9IG51bGxcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uaW5uZXJIVE1MID0gJ+W8gOWni+iwg+aVtCdcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uY2xhc3NOYW1lID0gJ2J0biBtb2RlbC1yb3RhdGUtYnRuJ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUgJiYgdGhpcy5Ud2VlbkFuaW1hdGUuX2lzUGxheWluZykge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5Ud2VlbkFuaW1hdGUudGltZW91dClcclxuICAgICAgaWYgKHYpIHtcclxuICAgICAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuaXNQbGF5aW5nKCkpIHtcclxuICAgICAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUucmVzdW1lKClcclxuICAgICAgICAgIH0sIHRoaXMub3B0aW9ucy5kZWxheSoxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5kZWxheSh0aGlzLmRlbGF5KjEwMDApLnN0YXJ0KClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHRoaXMuc3BlZWRcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgcG9zaXRpb25DYW1lcmEgPSB7IC4uLnRoaXMuc2RrLnZpZXdlci5jYW1lcmEuX3Bvc2l0aW9uIH1cclxuXHJcbiAgICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gZm4oKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNkay52aWV3ZXIuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiB7IC4uLnBvc2l0aW9uQ2FtZXJhIH0sXHJcbiAgICAgICAgICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICAgICAgICAgIGhlYWRpbmc6IF90aGlzLnNkay52aWV3ZXIuY2FtZXJhLmhlYWRpbmcsXHJcbiAgICAgICAgICAgICAgICBwaXRjaDogX3RoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgICAgICAgICAgICByb2xsOiBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgX3RoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5wYXVzZSgpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5tb2RlbCAmJiAoX3RoaXMubW9kZWwuaXNNb3ZlID0gZmFsc2UpXHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMucmVuZXdMaW5lUG9zaXRpb25zKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucylcclxuICAgICAgICB0aGlzLm1vZGVsTW92ZShwb3NpdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuc3RhdGUgJiYgdGhpcy5fZWxtcy5zdGF0ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbW9kZWxTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tb2RlbC5zaG93XHJcbiAgfVxyXG4gIHNldCBtb2RlbFNob3codikge1xyXG4gICAgbGV0IHNka0QgPSBnZXQyRFZpZXcoKVxyXG4gICAgdGhpcy5vcHRpb25zLm1vZGVsLnNob3cgPSB2XHJcbiAgICBsZXQgc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkpIHtcclxuICAgICAgc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGVsICYmIHRoaXMuc2hvdykge1xyXG4gICAgICB0aGlzLm1vZGVsLnNob3cgPSBzaG93XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLm1vZGVsU2hvdyAmJiB0aGlzLl9lbG1zLm1vZGVsU2hvdy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbW9kZWxBbmltYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tb2RlbC5hbmltYXRlXHJcbiAgfVxyXG5cclxuICBzZXQgbW9kZWxBbmltYXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC5hbmltYXRlID0gdlxyXG4gICAgaWYgKCF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLmxvYWRlci5jb21wb25lbnRzKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLm1vZGVsLmxvYWRlci5jb21wb25lbnRzLmFuaW1hdGlvbnNcclxuICAgIHRoaXMubW9kZWwuYWN0aXZlQW5pbWF0aW9ucy5yZW1vdmVBbGwoKVxyXG4gICAgaWYgKGFuaW1hdGlvbnMgJiYgYW5pbWF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYW5pbWF0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhbmltYXRpb25zW2ldLm5hbWUgPT0gdikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5hY3RpdmVBbmltYXRpb25zLmFkZCh7XHJcbiAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICBsb29wOiBDZXNpdW0uTW9kZWxBbmltYXRpb25Mb29wLlJFUEVBVCxcclxuICAgICAgICAgICAgc3BlZWR1cDogMSxcclxuICAgICAgICAgICAgcmV2ZXJzZTogZmFsc2VcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5tb2RlbEFuaW1hdGUgJiYgdGhpcy5fZWxtcy5tb2RlbEFuaW1hdGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBub3NlVG9UYWlsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLm5vc2VUb1RhaWxcclxuICB9XHJcbiAgc2V0IG5vc2VUb1RhaWwodikge1xyXG4gICAgdGhpcy5saW5lRWRpdCA9IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5ub3NlVG9UYWlsID0gdlxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2godGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxuZywgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmFsdClcclxuICAgIH1cclxuICAgIGxldCBub3Ntb290aCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgaWYgKHRoaXMubGluZSkge1xyXG4gICAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoaXMucmVuZXdMaW5lUG9zaXRpb25zKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucylcclxuICAgICAgdGhpcy5saW5lLnBvbHlsaW5lLnBvc2l0aW9ucyA9IHBvc2l0aW9uc19zbW9vdGhcclxuICAgICAgdGhpcy5tb2RlbC5wb3NpdGlvbiA9IHBvc2l0aW9uc19zbW9vdGhbMF1cclxuICAgICAgdGhpcy5tb2RlbE1vdmUocG9zaXRpb25zX3Ntb290aClcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubm9zZVRvVGFpbCAmJiB0aGlzLl9lbG1zLm5vc2VUb1RhaWwuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmVTaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLnNob3dcclxuICB9XHJcbiAgc2V0IGxpbmVTaG93KHYpIHtcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMucmVhbFRpbWVSb3V0ZSA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5zaG93ID0gdlxyXG4gICAgbGV0IHNob3cgPSB2XHJcbiAgICBsZXQgc2RrRCA9IGdldDJEVmlldygpXHJcbiAgICBpZiAoKCF0aGlzLnNob3dWaWV3IHx8IHRoaXMuc2hvd1ZpZXcgPT0gMyB8fCAhc2RrRCkpIHtcclxuICAgICAgc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxpbmUgJiYgdGhpcy5zaG93KSB7XHJcbiAgICAgIHRoaXMubGluZS5wb2x5bGluZS5tYXRlcmlhbCA9IHNob3cgPyBuZXcgQ2VzaXVtLlBvbHlsaW5lRGFzaE1hdGVyaWFsUHJvcGVydHkoe1xyXG4gICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmZmZicpLFxyXG4gICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICB9KSA6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDBmZmZmMDAnKSxcclxuICAgICAgICBkYXNoTGVuZ3RoOiAyMCwgLy/nn63liJLnur/plb/luqZcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubGluZVNob3cgJiYgdGhpcy5fZWxtcy5saW5lU2hvdy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcmVhbFRpbWVSb3V0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmVhbFRpbWVSb3V0ZVxyXG4gIH1cclxuICBzZXQgcmVhbFRpbWVSb3V0ZSh2KSB7XHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLmxpbmVTaG93ID0gZmFsc2VcclxuICAgICAgdGhpcy5rZXlQb2ludFNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnJlYWxUaW1lUm91dGUgPSB2XHJcbiAgICBpZiAodGhpcy5yZWFsVGltZUxpbmUgJiYgdGhpcy5zaG93KSB7XHJcbiAgICAgIHRoaXMucmVhbFRpbWVMaW5lLnNob3cgPSB2XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnJlYWxUaW1lUm91dGUgJiYgdGhpcy5fZWxtcy5yZWFsVGltZVJvdXRlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBrZXlQb2ludFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fa2V5UG9pbnRcclxuICB9XHJcbiAgc2V0IGtleVBvaW50U2hvdyh2KSB7XHJcbiAgICB0aGlzLl9rZXlQb2ludCA9IHZcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5rZXlQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuc2hvdykge1xyXG4gICAgICAgIHRoaXMua2V5UG9pbnRzW2ldLnNob3cgPSB2XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMua2V5UG9pbnRTaG93ICYmIHRoaXMuX2VsbXMua2V5UG9pbnRTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICAgIGlmICghdiAmJiB0aGlzLmxpbmVFZGl0KSB7XHJcbiAgICAgIC8vIOWFs+mXree6v+e8lui+kVxyXG4gICAgICB0aGlzLl9saW5lRWRpdCA9IHZcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCAmJiB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgICAgdGhpcy5fZWxtcy5saW5lRWRpdCAmJiB0aGlzLl9lbG1zLmxpbmVFZGl0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZUVkaXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGluZUVkaXRcclxuICB9XHJcblxyXG4gIHNldCBsaW5lRWRpdCh2KSB7XHJcbiAgICBsZXQgbGluZVBvc2l0aW9ucyA9IFtdXHJcbiAgICBsZXQgY29tcHV0ZVBvc2l0aW9uc1Ntb290aCA9IChwb3NpdGlvbnMpID0+IHtcclxuICAgICAgbGluZVBvc2l0aW9ucyA9IHRoaXMucmVuZXdMaW5lUG9zaXRpb25zKHBvc2l0aW9ucylcclxuICAgICAgdGhpcy5tb2RlbC5wb3NpdGlvbiA9IGxpbmVQb3NpdGlvbnNbMF1cclxuICAgICAgdGhpcy5tb2RlbE1vdmUobGluZVBvc2l0aW9ucylcclxuICAgIH1cclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMudmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2Fybign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgICAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5zbW9vdGggPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG5cclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcsIHRoaXMuc2RrKVxyXG4gICAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAgICAgICBjb21wdXRlUG9zaXRpb25zU21vb3RoKFsuLi50aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNdKVxyXG5cclxuICAgICAgICBsZXQgbGVmdEV2ZW50ID0gKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGxldCBwaWNrID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmtleVBvaW50c1tpXS5pZCA9PT0gcGljay5pZC5pZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5rZXlQb2ludHNbaV0uc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF1cclxuICAgICAgICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmNvbnRyb2xsZXJDYWxsQmFjayA9IChwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3BhcmFtcycsIHBhcmFtcylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHBhcmFtcy5wb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5hbHRcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbG1zLmhlaWdodCAmJiB0aGlzLl9lbG1zLmhlaWdodC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gTnVtYmVyKHRoaXMub3B0aW9ucy5oZWlnaHQudG9GaXhlZCgyKSlcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdFBvaW50LnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocGFyYW1zLnBvc2l0aW9uLmxuZywgcGFyYW1zLnBvc2l0aW9uLmxhdCwgcGFyYW1zLnBvc2l0aW9uLmFsdClcclxuICAgICAgICAgICAgICAgICAgY29tcHV0ZVBvc2l0aW9uc1Ntb290aChbLi4udGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zXSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIHRoaXMua2V5UG9pbnRTaG93ID0gZmFsc2VcclxuICAgICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgICB0aGlzLmtleVBvaW50U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAgPSBudWxsXHJcbiAgICAgICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmxpbmUucG9seWxpbmUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiBsaW5lUG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgIH1cclxuICAgICAgLy8g5pi+56S65YWz6ZSu54K5XHJcbiAgICAgIHRoaXMua2V5UG9pbnRTaG93ID0gdlxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmxpbmVFZGl0KSB7XHJcbiAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy50aXAgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgLy8g6ZqQ6JeP5YWz6ZSu54K5XHJcbiAgICAgIHRoaXMua2V5UG9pbnRTaG93ID0gdlxyXG4gICAgICB0aGlzLkNvbnRyb2xsZXJPYmplY3QuZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9saW5lRWRpdCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGluZUVkaXQgJiYgdGhpcy5fZWxtcy5saW5lRWRpdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgcm91dGVEaXJlY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJvdXRlRGlyZWN0aW9uXHJcbiAgfVxyXG4gIHNldCByb3V0ZURpcmVjdGlvbih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucm91dGVEaXJlY3Rpb24gPSB2XHJcbiAgICB0aGlzLl9lbG1zLnJvdXRlRGlyZWN0aW9uICYmIHRoaXMuX2VsbXMucm91dGVEaXJlY3Rpb24uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxvb3AoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxvb3BcclxuICB9XHJcbiAgc2V0IGxvb3Aodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxvb3AgPSB2XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUgJiYgdGhpcy5Ud2VlbkFuaW1hdGUuX2lzUGxheWluZykge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnJlcGVhdChJbmZpbml0eSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5yZXBlYXQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxvb3AgJiYgdGhpcy5fZWxtcy5sb29wLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdFBlcnNvblZpZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpcnN0UGVyc29uVmlld1xyXG4gIH1cclxuXHJcbiAgc2V0IGZpcnN0UGVyc29uVmlldyh2KSB7XHJcbiAgICAvLyB0aGlzLnN0YXRlID0gdHJ1ZVxyXG4gICAgbGV0IHNka0QgPSBnZXQyRFZpZXcoKVxyXG4gICAgbGV0IHNwbGl0U2RrID0gZ2V0U2RrKClcclxuICAgIGlmIChnZXQyRFZpZXcoKSB8fCBzcGxpdFNkay5zZGtEIHx8ICF0aGlzLnNob3cpIHtcclxuICAgICAgdiA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudElkKVxyXG4gICAgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQgJiYgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuX2ZpcnN0UGVyc29uVmlldyA9IHZcclxuICAgIHRoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXcgPSB2XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICB0aGlzLnZpZXdGb2xsb3cgPSB0cnVlXHJcbiAgICAgIHRoaXMuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2ggPSB7XHJcbiAgICAgICAgaGVhZGluZzogMCxcclxuICAgICAgICBwaXRjaDogLTEwXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGF0ZSA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbCAmJiAodGhpcy5tb2RlbC5zaG93ID0gZmFsc2UpXHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgICBsZXQgZV9maXJzdFBlcnNvbiA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJidXR0b25bbmFtZT0nZmlyc3RQZXJzb24nXVwiKVxyXG4gICAgICAgIGVfZmlyc3RQZXJzb25bMF0uY2xhc3NOYW1lID0gJ2J0biBpcy1hY3RpdmUnXHJcbiAgICAgICAgZV9maXJzdFBlcnNvblsxXS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgQ2FtZXJhQ29udHJvbGxlcih0aGlzLnNkaywgZmFsc2UpXHJcbiAgICAgIGxldCBzcGxpdFNkayA9IGdldFNkaygpXHJcbiAgICAgIGxldCB0YXJnZXRTZGtcclxuICAgICAgaWYgKHRoaXMuc2RrID09PSBzcGxpdFNkay5zZGtQKSB7XHJcbiAgICAgICAgdGFyZ2V0U2RrID0gc3BsaXRTZGsuc2RrRFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRhcmdldFNkayA9IHNwbGl0U2RrLnNka1BcclxuICAgICAgfVxyXG4gICAgICBsZXQgdGFyZ2V0RW50aXR5ID0gdGFyZ2V0U2RrID8gdGFyZ2V0U2RrLmVudGl0eU1hcC5nZXQodGhpcy5vcHRpb25zLmlkKSA6IHVuZGVmaW5lZFxyXG4gICAgICBpZiAodGhpcy5zZGspXHJcbiAgICAgICAgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQubW91c2VfcmlnaHRfZG93bigobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFBvc2l0aW9uID0geyAuLi5tb3ZlbWVudC5wb3NpdGlvbiB9XHJcbiAgICAgICAgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQyLCBjYXJ0ZXNpYW4yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpcnN0UGVyc29uSGVhZGluZ1BpdGNoLmhlYWRpbmcgPSB0aGlzLmZpcnN0UGVyc29uSGVhZGluZ1BpdGNoLmhlYWRpbmcgKyAoKG1vdmVtZW50Mi5lbmRQb3NpdGlvbi54IC0gc3RhcnRQb3NpdGlvbi54KSAvIDIwKVxyXG4gICAgICAgICAgdGhpcy5maXJzdFBlcnNvbkhlYWRpbmdQaXRjaC5waXRjaCA9IHRoaXMuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2gucGl0Y2ggKyAoKHN0YXJ0UG9zaXRpb24ueSAtIG1vdmVtZW50Mi5lbmRQb3NpdGlvbi55KSAvIDEwKVxyXG4gICAgICAgICAgdGFyZ2V0RW50aXR5ICYmICh0YXJnZXRFbnRpdHkuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2ggPSB7IC4uLnRoaXMuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2ggfSlcclxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSB7IC4uLm1vdmVtZW50Mi5lbmRQb3NpdGlvbiB9XHJcbiAgICAgICAgfSwgdHJ1ZSlcclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fZmlyc3RQZXJzb25WaWV3RXZlbnQubW91c2VfcmlnaHRfdXAoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLl9maXJzdFBlcnNvblZpZXdFdmVudC5tb3VzZV9tb3ZlKCgpID0+IHsgfSlcclxuICAgICAgfSwgdHJ1ZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBDYW1lcmFDb250cm9sbGVyKHRoaXMuc2RrLCB0cnVlKVxyXG4gICAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsU2hvdyAmJiB0aGlzLnNob3cpIHtcclxuICAgICAgICBsZXQgc2hvdyA9IHRydWVcclxuICAgICAgICBpZiAodGhpcy5zaG93ICYmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpKSB7XHJcbiAgICAgICAgICBzaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vZGVsLnNob3cgPSBzaG93XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICAgIGxldCBlX2ZpcnN0UGVyc29uID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbChcImJ1dHRvbltuYW1lPSdmaXJzdFBlcnNvbiddXCIpXHJcbiAgICAgICAgaWYgKGVfZmlyc3RQZXJzb25bMF0gJiYgZV9maXJzdFBlcnNvblsxXSkge1xyXG4gICAgICAgICAgZV9maXJzdFBlcnNvblswXS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICAgICAgZV9maXJzdFBlcnNvblsxXS5jbGFzc05hbWUgPSAnYnRuIGlzLWFjdGl2ZSdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXdGb2xsb3cgJiYgdGhpcy5zaG93KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLnNjZW5lLm1vZGUgPT09IDMpIHtcclxuICAgICAgICAgIGxldCBwb2ludEVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAvLyBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb25zX3Ntb290aFswXSwgLy8gcG9zaXRpb24gb2YgdGhlIHBvaW50XHJcbiAgICAgICAgICAgIHBvaW50OiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDApLCAvLyBjb2xvciBvZiB0aGUgcG9pbnRcclxuICAgICAgICAgICAgICBwaXhlbFNpemU6IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IHBvaW50RW50aXR5O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZpZXdGb2xsb3cgPSB0aGlzLnZpZXdGb2xsb3dcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZpZXdGb2xsb3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnZpZXdGb2xsb3dcclxuICB9XHJcbiAgc2V0IHZpZXdGb2xsb3codikge1xyXG4gICAgbGV0IHNwbGl0U2RrID0gZ2V0U2RrKClcclxuICAgIGxldCBzZGsyRCA9IGdldDJEVmlldygpXHJcbiAgICAvLyBpZiAoc2RrMkQgfHwgc3BsaXRTZGsuc2RrRCkge1xyXG4gICAgLy8gICB2ID0gZmFsc2VcclxuICAgIC8vIH1cclxuICAgIGlmICghdGhpcy5zaG93KSB7XHJcbiAgICAgIHYgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZpZXdGb2xsb3cgPSB2XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3Rm9sbG93KSB7XHJcbiAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5lZGl0T2JqKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0T2JqLmRlc3Ryb3koKVxyXG4gICAgICAgIHRoaXMuZWRpdE9iaiA9IG51bGxcclxuICAgICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZWwtcm90YXRlLWJ0bicpWzBdLmlubmVySFRNTCA9ICflvIDlp4vosIPmlbQnXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uY2xhc3NOYW1lID0gJ2J0biBtb2RlbC1yb3RhdGUtYnRuJ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuXHJcbiAgICAgIHRoaXMubGluZUVkaXQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgICAgbGV0IGVfZmlyc3RQZXJzb24gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uW25hbWU9J2ZpcnN0UGVyc29uJ11cIilcclxuICAgICAgICBpZiAoZV9maXJzdFBlcnNvblswXSAmJiBlX2ZpcnN0UGVyc29uWzFdKSB7XHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzBdLmNsYXNzTmFtZSA9ICdidG4nXHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzFdLmNsYXNzTmFtZSA9ICdidG4gaXMtYWN0aXZlJ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHYgJiYgdGhpcy5zaG93ICYmIHRoaXMubW9kZWwpIHtcclxuICAgICAgICBsZXQgcG9pbnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIC8vIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgcG9zaXRpb246IHRoaXMubW9kZWwucG9zaXRpb24sIC8vIHBvc2l0aW9uIG9mIHRoZSBwb2ludFxyXG4gICAgICAgICAgcG9pbnQ6IHtcclxuICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDApLCAvLyBjb2xvciBvZiB0aGUgcG9pbnRcclxuICAgICAgICAgICAgcGl4ZWxTaXplOiAwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBwb2ludEVudGl0eTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZGszRCA9IGdldDNEVmlldygpXHJcbiAgICBpZiAoc2RrM0QpIHtcclxuICAgICAgaWYgKHRoaXMuc2RrICE9IHNkazNEKSB7XHJcbiAgICAgICAgbGV0IHRoYXQzRCA9IHNkazNELmVudGl0eU1hcC5nZXQodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIGlmICh0aGF0M0QgJiYgdGhhdDNELnZpZXdGb2xsb3cgIT0gdikge1xyXG4gICAgICAgICAgdGhhdDNELnZpZXdGb2xsb3cgPSB2XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChzZGsyRCkge1xyXG4gICAgICAgICAgbGV0IHRoYXQyRCA9IHNkazJELmVudGl0eU1hcC5nZXQodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgaWYgKHRoYXQyRCAmJiB0aGF0MkQudmlld0ZvbGxvdyAhPSB2KSB7XHJcbiAgICAgICAgICAgIHRoYXQyRC52aWV3Rm9sbG93ID0gdlxyXG4gICAgICAgICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUgJiYgdGhpcy5Ud2VlbkFuaW1hdGUuX2lzUGxheWluZykge1xyXG4gICAgICAgICAgICAgIHRoYXQyRC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKHRoaXMuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHRoaXMuX2VsbXMudmlld0ZvbGxvdyAmJiB0aGlzLl9lbG1zLnZpZXdGb2xsb3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuICBzZXQgbGFiZWxTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgbGV0IHNka0QgPSBnZXQyRFZpZXcoKVxyXG4gICAgbGV0IHNob3cgPSB2XHJcbiAgICBpZiAodGhpcy5zaG93ICYmICghdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMgfHwgIXNka0QpKSB7XHJcbiAgICAgIHNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zaG93KSB7XHJcbiAgICAgIGlmICh0aGlzLmxhYmVsKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbC5zaG93ID0gc2hvd1xyXG4gICAgICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sbmcsIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQsIHRoaXMub3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHRdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZywgbGF0OiB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0IH0pLnRoZW4oKGhlaWdodCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5wb3NpdGlvbiA9IFt0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nLCB0aGlzLm9wdGlvbnMubGFiZWwucG9zaXRpb24ubGF0LCBoZWlnaHRdKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udEZhbWlseSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsRm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5mb250RmFtaWx5ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmNvbG9yID0gdilcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQ29sb3IpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvcltpXSA9IGxhYmVsQ29sb3JQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZvbnRTaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gIH1cclxuICBzZXQgbGFiZWxGb250U2l6ZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZvbnRTaXplID0gdilcclxuICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZSAmJiB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2KVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLm5lYXIgPSBuZWFyKVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbE5lYXIgJiYgdGhpcy5fZWxtcy5sYWJlbE5lYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gbmVhclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbEZhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZhcih2KSB7XHJcbiAgICBsZXQgZmFyID0gdlxyXG4gICAgaWYgKGZhciA8IHRoaXMubGFiZWxOZWFyKSB7XHJcbiAgICAgIGZhciA9IHRoaXMubGFiZWxOZWFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZhciA9IGZhcilcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDliJvlu7rot6/lvoRcclxuICBzdGF0aWMgYWRkTGluZSh0aGF0KSB7XHJcbiAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoYXQucmVuZXdMaW5lUG9zaXRpb25zKHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9ucylcclxuICAgIGxldCBzaG93XHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2hvdyA9IHRoYXQub3B0aW9ucy5saW5lLnNob3dcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzaG93ID0gZmFsc2VcclxuICAgIH1cclxuICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmVCeUlkKHRoYXQub3B0aW9ucy5pZCArICctMicpXHJcbiAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlQnlJZCh0aGF0Lm9wdGlvbnMuaWQgKyAnLTMnKVxyXG4gICAgdGhhdC5saW5lID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQgKyAnLTInLFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogcG9zaXRpb25zX3Ntb290aCxcclxuICAgICAgICB3aWR0aDogMixcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiB0aGF0Lmdyb3VuZCxcclxuICAgICAgICBtYXRlcmlhbDogc2hvdyA/IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMGZmZmYnKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICAgIH0pIDogbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmZmZjAwJyksXHJcbiAgICAgICAgICBkYXNoTGVuZ3RoOiAyMCwgLy/nn63liJLnur/plb/luqZcclxuICAgICAgICB9KSxcclxuICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICB0aGF0LnJlYWxUaW1lTGluZSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkICsgJy0zJyxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnJlYWxUaW1lUm91dGUgPyB0aGF0Lm9wdGlvbnMucmVhbFRpbWVSb3V0ZSA6IGZhbHNlLFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnJlYWxUaW1lUG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRoYXQuZ3JvdW5kLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmYwMDAwJyksXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgdGhhdC5zZGsuX2VudGl0eVpJbmRleCsrXHJcbiAgICBpZiAodGhhdC5fbW91c2VSaWdodGV2ZW50KSB7XHJcbiAgICAgIHRoYXQuX21vdXNlUmlnaHRldmVudC5kZXN0cm95KClcclxuICAgIH1cclxuICAgIHRoYXQuX21vdXNlUmlnaHRldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgdGhhdC5fbW91c2VSaWdodGV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgIGxldCBzcGxpdFNkayA9IGdldFNkaygpXHJcbiAgICAgIGxldCB0YXJnZXRTZGtcclxuICAgICAgaWYgKHRoYXQuc2RrID09PSBzcGxpdFNkay5zZGtQKSB7XHJcbiAgICAgICAgdGFyZ2V0U2RrID0gc3BsaXRTZGsuc2RrRFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRhcmdldFNkayA9IHNwbGl0U2RrLnNka1BcclxuICAgICAgfVxyXG4gICAgICBsZXQgdGFyZ2V0RW50aXR5ID0gdGFyZ2V0U2RrID8gdGFyZ2V0U2RrLmVudGl0eU1hcC5nZXQodGhhdC5vcHRpb25zLmlkKSA6IHVuZGVmaW5lZFxyXG4gICAgICB0YXJnZXRFbnRpdHkgJiYgKHRhcmdldEVudGl0eS52aWV3Rm9sbG93ID0gZmFsc2UpXHJcbiAgICAgIHRoYXQudmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICB9LCB0cnVlKVxyXG4gICAgVHJhamVjdG9yeU1vdGlvbi5hZGRNb2RlbCh0aGF0KVxyXG4gICAgVHJhamVjdG9yeU1vdGlvbi5hZGRLZXlQb2ludCh0aGF0KVxyXG4gICAgdGhhdC5ub3NlVG9UYWlsID0gdGhhdC5vcHRpb25zLmxpbmUubm9zZVRvVGFpbFxyXG4gICAgdGhhdC5zbW9vdGggPSB0aGF0Lm9wdGlvbnMubGluZS5zbW9vdGhcclxuXHJcbiAgICBzeW5jRGF0YSh0aGF0LnNkaywgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5zaG93KSB7XHJcblxyXG4gICAgICBzZXRTcGxpdERpcmVjdGlvbigwLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWIm+W7uuaooeWei1xyXG4gIHN0YXRpYyBhc3luYyBhZGRNb2RlbCh0aGF0KSB7XHJcbiAgICBsZXQgdXJsID0gdGhhdC5yZXBsYWNlSG9zdCh0aGF0Lm9wdGlvbnMubW9kZWwudXJsLCB0aGF0Lm9wdGlvbnMuaG9zdClcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICB1cmw6IHVybCxcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3cgPyB0aGF0Lm9wdGlvbnMubW9kZWwuc2hvdyA6IGZhbHNlLFxyXG4gICAgICBzY2FsZTogdGhhdC5vcHRpb25zLm1vZGVsLnNjYWxlLFxyXG4gICAgICAvLyBtaW5pbXVtUGl4ZWxTaXplOiB0aGF0Lm9wdGlvbnMubW9kZWwucGl4ZWxTaXplLFxyXG4gICAgICAvLyBtYXhpbXVtU2NhbGU6IDEwMDAwMCxcclxuICAgICAgLy8gYWxsb3dQaWNraW5nOiBmYWxzZVxyXG4gICAgfVxyXG4gICAgaWYgKE51bWJlcihDZXNpdW0uVkVSU0lPTi5zcGxpdCgnLicpWzFdKSA+PSAxMDcpIHtcclxuICAgICAgdGhhdC5tb2RlbCA9IGF3YWl0IENlc2l1bS5Nb2RlbC5mcm9tR2x0ZkFzeW5jKG9wdGlvbnMpXHJcbiAgICAgIHRoYXQubW9kZWwub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyA9IDBcclxuICAgICAgdGhhdC5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoYXQubW9kZWwpXHJcbiAgICAgIHRoYXQubW9kZWwucmVhZHlFdmVudC5hZGRFdmVudExpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICB0aGF0Lm1vZGVsLm9yaWdpbmFsQm91bmRpbmdTcGhlcmVSYWRpdXMgPSB0aGF0Lm1vZGVsLmJvdW5kaW5nU3BoZXJlLnJhZGl1c1xyXG4gICAgICAgIHRoYXQubW9kZWxBbmltYXRlID0gdGhhdC5vcHRpb25zLm1vZGVsLmFuaW1hdGVcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGF0Lm1vZGVsID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIENlc2l1bS5Nb2RlbC5mcm9tR2x0ZihvcHRpb25zKVxyXG4gICAgICApO1xyXG4gICAgICB0aGF0Lm1vZGVsLm9yaWdpbmFsQm91bmRpbmdTcGhlcmVSYWRpdXMgPSAwXHJcbiAgICAgIHRoYXQubW9kZWwucmVhZHlQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoYXQubW9kZWwub3JpZ2luYWxCb3VuZGluZ1NwaGVyZVJhZGl1cyA9IHRoYXQubW9kZWwuYm91bmRpbmdTcGhlcmUucmFkaXVzXHJcbiAgICAgICAgdGhhdC5tb2RlbEFuaW1hdGUgPSB0aGF0Lm9wdGlvbnMubW9kZWwuYW5pbWF0ZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoYXQubW9kZWwuaW1hZ2VCYXNlZExpZ2h0aW5nLmx1bWluYW5jZUF0WmVuaXRoID0gMC42XHJcbiAgICAvLyDorr7nva7mqKHlnovnmoTml4vovazop5LluqbvvIzkvb/lhbbmsLTlubPmlL7nva7kuo7lnLDpnaJcclxuICAgIGxldCBtYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0aGF0LnBvc2l0aW9uc19zbW9vdGhbMF0pXHJcbiAgICB0aGF0Lm1vZGVsLm1vZGVsTWF0cml4ID0gbWF0cml4XHJcbiAgICB0aGF0Lm1vZGVsLnBvc2l0aW9uID0gdGhhdC5wb3NpdGlvbnNfc21vb3RoWzBdXHJcbiAgICB0aGF0Lm1vZGVsLmN1c3RvbVNjYWxlID0geyB4OiB0aGF0Lm9wdGlvbnMubW9kZWwuc2NhbGUsIHk6IHRoYXQub3B0aW9ucy5tb2RlbC5zY2FsZSwgejogdGhhdC5vcHRpb25zLm1vZGVsLnNjYWxlIH07XHJcbiAgICAvLyDmqKHlnovlpKflsI/mr5TkvotcclxuICAgIC8vIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlTY2FsZShtYXRyaXgsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygwLjEsIDAuMSwgMC4xKSwgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXgpXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgcG9zaXRpb25zW2ldLmFsdClcclxuICAgIH1cclxuICAgIGxldCBwb3MgPSB0aGF0LnNtb290aCA/IHRoYXQucG9zaXRpb25zX3Ntb290aCA6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgVHJhamVjdG9yeU1vdGlvbi5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgdGhhdC5tb2RlbE1vdmUocG9zKVxyXG5cclxuXHJcbiAgICB0aGF0LmVudGl0eSA9IHRoYXQubW9kZWxcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVMYWJlbCh0aGF0KSB7XHJcbiAgICBsZXQgbGFiZWxQb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQodGhhdC5tb2RlbC5wb3NpdGlvbiwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/ICh0aGF0Lm9wdGlvbnMubGFiZWwuc2hvdyA/IHRydWUgOiBmYWxzZSkgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFtsYWJlbFBvc2l0aW9uLmxuZywgbGFiZWxQb3NpdGlvbi5sYXQsIGxhYmVsUG9zaXRpb24uYWx0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIH0sIHRoYXQubW9kZWwpXHJcbiAgfVxyXG5cclxuICAvLyDliJvlu7rlhbPplK7ngrlcclxuICBzdGF0aWMgYXN5bmMgYWRkS2V5UG9pbnQodGhhdCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0pXHJcbiAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubG5nLCB0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubGF0LCBoZWlnaHQpXHJcbiAgICAgIGxldCBlbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgc2hvdzogdGhhdC5fa2V5UG9pbnQgfHwgZmFsc2UsXHJcbiAgICAgICAgcG9zaXRpb246IHRoYXQuZ3JvdW5kID8gcmVzdWx0IDogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxuZywgdGhhdC5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmFsdCksXHJcbiAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgdGhhdC5rZXlQb2ludHMucHVzaChlbnRpdHkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmqKHlnovnp7vliqhcclxuICBhc3luYyBtb2RlbE1vdmUocG9zaXRpb25zLCBvcHRpb24gPSB7IHRpbWU6IDAgfSkge1xyXG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGxldCB0aW1lID0gb3B0aW9uLnRpbWUgfHwgMFxyXG4gICAgbGV0IHN0YXJ0RGlzdGFuY2UgPSBvcHRpb24uZGlzdGFuY2VcclxuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnNkay52aWV3ZXJcclxuICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5zZGsgfHwgIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlTW9kZWxBbmltYXRlKClcclxuXHJcbiAgICBsZXQgbGluZVN0cmluZyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgdmlld2VyKVxyXG4gICAgICBsaW5lU3RyaW5nLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0LCBwb3NpdGlvbi5hbHRdKVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2cobGluZVN0cmluZylcclxuICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKGxpbmVTdHJpbmcpO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IHR1cmYubGVuZ3RoKGxpbmUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgIGxldCB0b3RhbFRpbWUgPSAodGhpcy5kaXN0YW5jZSAqIDEwMDApIC8gdGhpcy5vcHRpb25zLnNwZWVkICAvLyDmgLvogJfml7bvvIjnp5LvvIlcclxuICAgIGlmICghc3RhcnREaXN0YW5jZSAmJiBzdGFydERpc3RhbmNlICE9PSAwKSB7XHJcbiAgICAgIHN0YXJ0RGlzdGFuY2UgPSAwLjAwMDAwMVxyXG4gICAgICBpZiAodGltZSkge1xyXG4gICAgICAgIGlmICh0aW1lID4gdG90YWxUaW1lKSB7XHJcbiAgICAgICAgICB0aW1lID0gdG90YWxUaW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXJ0RGlzdGFuY2UgPSAodGltZSAvIHRvdGFsVGltZSkgKiB0aGlzLmRpc3RhbmNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoc3RhcnREaXN0YW5jZSA+IHRoaXMuZGlzdGFuY2UpIHtcclxuICAgICAgICBzdGFydERpc3RhbmNlID0gdGhpcy5kaXN0YW5jZVxyXG4gICAgICB9XHJcbiAgICAgIHRpbWUgPSAoc3RhcnREaXN0YW5jZSAvIHRoaXMuZGlzdGFuY2UpICogdG90YWxUaW1lXHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0b3RhbFRpbWUpXHJcbiAgICBsZXQgbGFzdERpc3RhbmNlID0gMFxyXG4gICAgbGV0IG1vdGlvbkFycmF5ID0gW11cclxuICAgIGxldCBIZWFkaW5nUGl0Y2hSb2xsXHJcbiAgICBsZXQgSGVhZGluZ1BpdGNoUm9sbDJcclxuICAgIGxldCBwcmV2aW91cyA9IHt9XHJcbiAgICBsZXQgbSA9IDBcclxuICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbmV3IFRXRUVOLlR3ZWVuKHsgZGlzdGFuY2U6IHN0YXJ0RGlzdGFuY2UgfSkudG8oeyBkaXN0YW5jZTogdGhpcy5kaXN0YW5jZSB9LCAodG90YWxUaW1lIC0gdGltZSkgKiAxMDAwKS5kZWxheSh0aGlzLmRlbGF5KjEwMDApLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLnJlcGVhdCh0aGlzLm9wdGlvbnMubG9vcCA/IEluZmluaXR5IDogMCkub25SZXBlYXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGltZSB8fCBzdGFydERpc3RhbmNlKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbE1vdmUocG9zaXRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuX2R1cmF0aW9uID09IEluZmluaXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbSsrXHJcbiAgICAgIGlmICghdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVNb2RlbEFuaW1hdGUoKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWlzTmFOKHIuZGlzdGFuY2UpKSB7XHJcbiAgICAgICAgc2V0UG9zaXRpb24oci5kaXN0YW5jZSlcclxuICAgICAgfVxyXG4gICAgfSkub25FdmVyeVN0YXJ0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWFsVGltZVJvdXRlQXJyYXkgPSBbXVxyXG4gICAgfSkub25Db21wbGV0ZSgoZCkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlID0gZmFsc2VcclxuICAgICAgLy8gdGhpcy5yZW1vdmVNb2RlbEFuaW1hdGUoKVxyXG4gICAgICAvLyBsZXQgcnVudGltZUFuaW1hdGlvbiA9IHRoaXMubW9kZWwuX2FjdGl2ZUFuaW1hdGlvbnMuX3J1bnRpbWVBbmltYXRpb25zXHJcbiAgICAgIC8vIC8vIGxldCBhbmltYXRpb25zID0gYXdhaXQgdGhpcy5tb2RlbC5yZWFkeVByb21pc2VcclxuICAgICAgLy8gZm9yIChsZXQgaSA9IHJ1bnRpbWVBbmltYXRpb24ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgLy8gICBzd2l0Y2ggKHJ1bnRpbWVBbmltYXRpb25baV0ubmFtZSkge1xyXG4gICAgICAvLyAgICAgY2FzZSAn6LeRJzpcclxuICAgICAgLy8gICAgICAgdGhpcy5tb2RlbC5hY3RpdmVBbmltYXRpb25zLnJlbW92ZShydW50aW1lQW5pbWF0aW9uW2ldKVxyXG4gICAgICAvLyAgICAgICBicmVhaztcclxuICAgICAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnN0YXJ0KClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXRQb3NpdGlvbihzdGFydERpc3RhbmNlKVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBfdGhpcy5tb2RlbC5pc01vdmUgPSBmYWxzZVxyXG4gICAgICB9LCAxMDAwKTtcclxuXHJcblxyXG4gICAgICBhbmltYXRlVXBkYXRlKClcclxuICAgICAgZnVuY3Rpb24gYW5pbWF0ZVVwZGF0ZSgpIHtcclxuICAgICAgICBfdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZDIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoXHJcbiAgICAgICAgICBhbmltYXRlVXBkYXRlXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgbGV0IHRhcmdldEhlYWRpbmcgPSBfdGhpcy5tb2RlbC5oZWFkaW5nICsgOTAgKyBfdGhpcy5maXJzdFBlcnNvbkhlYWRpbmdQaXRjaC5oZWFkaW5nXHJcbiAgICAgICAgICBpZighX3RoaXMucm91dGVEaXJlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGFyZ2V0SGVhZGluZyA9IDE4MCAtIHRhcmdldEhlYWRpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwb3NpdGlvbkNhbWVyYSA9IHsgLi4uX3RoaXMuc2RrLnZpZXdlci5jYW1lcmEuX3Bvc2l0aW9uIH1cclxuICAgICAgICAgIF90aGlzLnNkay52aWV3ZXIuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogcG9zaXRpb25DYW1lcmEsXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRhcmdldEhlYWRpbmcpLFxyXG4gICAgICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoX3RoaXMuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2gucGl0Y2gpLFxyXG4gICAgICAgICAgICAgIHJvbGw6IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBzZXRQb3NpdGlvbihkaXN0YW5jZSkge1xyXG4gICAgICBfdGhpcy5tb2RlbC5pc01vdmUgPSB0cnVlXHJcbiAgICAgIGxldCBzZGsyRCA9IGdldDJEVmlldygpXHJcbiAgICAgIGxldCBzcGxpdFNkayA9IGdldFNkaygpXHJcbiAgICAgIGlmICghX3RoaXMuc2RrLnZpZXdlciB8fCAhX3RoaXMuc2RrLnZpZXdlci5zY2VuZSkge1xyXG4gICAgICAgIF90aGlzLnJlbW92ZU1vZGVsQW5pbWF0ZSgpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN0YXJ0ID0gMDtcclxuICAgICAgbGV0IHN0b3AgPSBkaXN0YW5jZTtcclxuICAgICAgbGV0IGNvb3JkaW5hdGVzXHJcbiAgICAgIGxldCBzbGljZWQgPSBsaW5lXHJcbiAgICAgIGlmIChzdG9wKSB7XHJcbiAgICAgICAgc2xpY2VkID0gYXdhaXQgdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lLCBzdGFydCwgc3RvcCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAgIC8vIF90aGlzLnJlYWxUaW1lUm91dGVBcnJheSA9IHNsaWNlZCtcclxuICAgICAgICBjb29yZGluYXRlcyA9IFsuLi5zbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdXVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLmxpbmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1dXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9uXHJcbiAgICAgIGxldCBwb3NpdGlvbkNhbWVyYVxyXG5cclxuICAgICAgaWYgKF90aGlzLmdyb3VuZCkge1xyXG4gICAgICAgIC8vIGlmICh2aWV3ZXIudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgIC8vICAgbGV0IHJlc3VsdCA9IGF3YWl0IG5ldyBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZCh2aWV3ZXIudGVycmFpblByb3ZpZGVyLCBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pXSk7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSwgcmVzdWx0WzBdLmhlaWdodClcclxuICAgICAgICAvLyAgIHBvc2l0aW9uQ2FtZXJhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCByZXN1bHRbMF0uaGVpZ2h0ICsgMSlcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSlcclxuICAgICAgICAvLyAgIHBvc2l0aW9uQ2FtZXJhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCAxKVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBsZXQgZmlsdGVyRW50aXR5cyA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF90aGlzLnNkay5lbnRpdHlNYXApIHtcclxuICAgICAgICAgIGlmICghdmFsdWUudHlwZSB8fCAodmFsdWUudHlwZSAhPT0gJ2dsYicgJiYgdmFsdWUudHlwZSAhPT0gJ2JpbScgJiYgdmFsdWUudHlwZSAhPT0gJ3RpbGVzZXQnICYmIHZhbHVlLnR5cGUgIT09ICdUcmFqZWN0b3J5TW90aW9uJyAmJiB2YWx1ZS50eXBlICE9PSAnUGFydGljbGVFZmZlY3RzJyAmJiB2YWx1ZS5lbnRpdHkpKSB7XHJcbiAgICAgICAgICAgIC8vIGlmKHZhbHVlLnR5cGUgPT09ICdQYXJ0aWNsZUVmZmVjdHMnKSB7XHJcbiAgICAgICAgICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5lbnRpdHkuX3BhcnRpY2xlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAvLyAgICAgZmlsdGVyRW50aXR5cy5wdXNoKHZhbHVlLmVudGl0eS5fcGFydGljbGVzW2ldLl9iaWxsYm9hcmQpXHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGZpbHRlckVudGl0eXMucHVzaCh2YWx1ZS5lbnRpdHkpXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sYWJlbCAmJiB2YWx1ZS5sYWJlbC5lbnRpdHkpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJFbnRpdHlzLnB1c2godmFsdWUubGFiZWwuZW50aXR5KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChfdGhpcy5sYWJlbCAmJiBfdGhpcy5sYWJlbC5lbnRpdHkpIHtcclxuICAgICAgICAgIGZpbHRlckVudGl0eXMucHVzaChfdGhpcy5sYWJlbC5lbnRpdHkpXHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8vIGxldCBwb2ludDEgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCAtMTAwMDApO1xyXG4gICAgICAgIC8vIGxldCBwb2ludDIgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCAxMDAwMDAwMDAwMCk7XHJcbiAgICAgICAgLy8gbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KHBvaW50MiwgcG9pbnQxLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgICAgLy8gbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUoZGlyZWN0aW9uLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCflsITnur/mlrnlkJE6JywgYyk7XHJcbiAgICAgICAgLy8gbGV0IHJheSA9IG5ldyBDZXNpdW0uUmF5KHBvaW50MSwgYyk7XHJcbiAgICAgICAgLy8gbGV0IHBpY2tlZE9iamVjdHMgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja0Zyb21SYXkocmF5KTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncGlja2VkT2JqZWN0cycsIHBpY2tlZE9iamVjdHMpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2hlaWdodCcsIENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihwaWNrZWRPYmplY3RzLnBvc2l0aW9uKS5oZWlnaHQpXHJcblxyXG5cclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdFxyXG4gICAgICAgIGxldCBzZGsyRCA9IGdldDJEVmlldygpXHJcbiAgICAgICAgaWYgKHNkazJEICYmIF90aGlzLnNkayA9PSBzZGsyRCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSlcclxuICAgICAgICAgIHBvc2l0aW9uID0gcmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgX3RoaXMuc2RrLnZpZXdlci5zY2VuZS5jbGFtcFRvSGVpZ2h0KG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pLCBbX3RoaXMubW9kZWwsIC4uLmZpbHRlckVudGl0eXNdKVxyXG4gICAgICAgICAgcG9zaXRpb24gPSByZXN1bHRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgIHBvc2l0aW9uID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvczMgPSBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbiwgdmlld2VyKTtcclxuICAgICAgICBsZXQgaGVpZ2h0MiA9IDBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uMiA9IGF3YWl0IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKFxyXG4gICAgICAgICAgICBfdGhpcy5zZGsudmlld2VyLnNjZW5lLnRlcnJhaW5Qcm92aWRlcixcclxuICAgICAgICAgICAgW0Nlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMocG9zMy5sbmcsIHBvczMubGF0KV1cclxuICAgICAgICAgIClcclxuICAgICAgICAgIGhlaWdodDIgPSBwb3NpdGlvbjJbMF0uaGVpZ2h0XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGhlaWdodDIgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb3MzLmFsdCA8IGhlaWdodDIpIHtcclxuICAgICAgICAgIHBvczMuYWx0ID0gaGVpZ2h0MlxyXG4gICAgICAgIH1cclxuICAgICAgICBwb3MzLmFsdCA9IE51bWJlcihwb3MzLmFsdC50b0ZpeGVkKDEpKVxyXG4gICAgICAgIHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zMy5sbmcsIHBvczMubGF0LCBwb3MzLmFsdClcclxuICAgICAgICBpZiAoIV90aGlzLnNkay52aWV3ZXIgfHwgIV90aGlzLnNkay52aWV3ZXIuc2NlbmUpIHtcclxuICAgICAgICAgIF90aGlzLnJlbW92ZU1vZGVsQW5pbWF0ZSgpXHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uLCBfdGhpcy5zZGsudmlld2VyKS5hbHQgKyAxLjgpXHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVswXSwgc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy5yZWFsVGltZVBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAvLyBfdGhpcy5yZWFsVGltZUxpbmUucG9seWxpbmUucG9zaXRpb25zID0gXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGNhcnRlc2lhbjMgPSBfdGhpcy5zcGxpbmUuZXZhbHVhdGUoZGlzdGFuY2UgLyBfdGhpcy5kaXN0YW5jZSlcclxuICAgICAgICBpZiAoIWNhcnRlc2lhbjMpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcG9zODQgPSBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4zLCB2aWV3ZXIpO1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gW3Bvczg0LmxuZywgcG9zODQubGF0LCBwb3M4NC5hbHQgKyAxLjhdXHJcbiAgICAgICAgcG9zaXRpb24gPSBjYXJ0ZXNpYW4zXHJcbiAgICAgICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIGNvb3JkaW5hdGVzWzJdKVxyXG4gICAgICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAxMDAwOyBpKyspIHtcclxuICAgICAgICAgIGlmICgoaSAvIDEwMDApID4gKGRpc3RhbmNlIC8gX3RoaXMuZGlzdGFuY2UpKSB7XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY2FydGVzaWFuMyA9IF90aGlzLnNwbGluZS5ldmFsdWF0ZShpIC8gMTAwMCk7XHJcbiAgICAgICAgICBwb3NpdGlvbnNfc21vb3RoLnB1c2goY2FydGVzaWFuMyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvc2l0aW9uc19zbW9vdGgucHVzaChjYXJ0ZXNpYW4zKVxyXG4gICAgICAgIF90aGlzLnJlYWxUaW1lUG9zaXRpb25zID0gcG9zaXRpb25zX3Ntb290aFxyXG4gICAgICB9XHJcblxyXG4gICAgICBIZWFkaW5nUGl0Y2hSb2xsID0gZ2V0SGVhZGluZ1BpdGNoUm9sbChfdGhpcy5tb2RlbC5wb3NpdGlvbiwgcG9zaXRpb24pXHJcbiAgICAgIGlmIChwcmV2aW91cyAmJiBwcmV2aW91cy5wb3NpdGlvbikge1xyXG4gICAgICAgIEhlYWRpbmdQaXRjaFJvbGwyID0gZ2V0SGVhZGluZ1BpdGNoUm9sbChwcmV2aW91cy5wb3NpdGlvbiwgcG9zaXRpb24pXHJcbiAgICAgICAgSGVhZGluZ1BpdGNoUm9sbC5waXRjaCA9IEhlYWRpbmdQaXRjaFJvbGwyLnBpdGNoXHJcbiAgICAgIH1cclxuICAgICAgcHJldmlvdXMucG9zaXRpb24gPSBfdGhpcy5tb2RlbC5wb3NpdGlvblxyXG4gICAgICBsZXQgbW9kZUhlYWRpbmdQaXRjaFJvbGwgPSBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcyhfdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmcsIF90aGlzLm9wdGlvbnMubW9kZWwucGl0Y2gsIF90aGlzLm9wdGlvbnMubW9kZWwucm9sbClcclxuICAgICAgbGV0IGhlYWRpbmcgPSAwXHJcbiAgICAgIGxldCBwaXRjaCA9IDBcclxuICAgICAgbGV0IHJvbGwgPSAwXHJcblxyXG4gICAgICBsZXQgbWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICAgIGlmIChfdGhpcy5vcHRpb25zLnJvdXRlRGlyZWN0aW9uICYmICFfdGhpcy5saW5lRWRpdCkge1xyXG4gICAgICAgIGhlYWRpbmcgPSAoSGVhZGluZ1BpdGNoUm9sbC5oZWFkaW5nKSAqICgxODAgLyBNYXRoLlBJKSAtIDkwIC0gX3RoaXMub3B0aW9ucy5tb2RlbC5oZWFkaW5nXHJcbiAgICAgICAgcGl0Y2ggPSAoSGVhZGluZ1BpdGNoUm9sbC5waXRjaCkgKiAoMTgwIC8gTWF0aC5QSSkgLSBfdGhpcy5vcHRpb25zLm1vZGVsLnBpdGNoXHJcbiAgICAgICAgcm9sbCA9IF90aGlzLm9wdGlvbnMubW9kZWwucm9sbFxyXG4gICAgICAgIGxldCB0aGF0M0RcclxuICAgICAgICBpZiAoZ2V0M0RWaWV3KCkpIHtcclxuICAgICAgICAgIHRoYXQzRCA9IGdldDNEVmlldygpLmVudGl0eU1hcC5nZXQoX3RoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGF0M0QgPSAoc3BsaXRTZGsuc2RrUCAmJiBzcGxpdFNkay5zZGtQLmVudGl0eU1hcC5nZXQoX3RoaXMub3B0aW9ucy5pZCkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghX3RoaXMuc3RhdGUpIHtcclxuICAgICAgICAgIGlmICh0aGF0M0QgJiYgKChzZGsyRCAmJiBzZGsyRCA9PT0gX3RoaXMuc2RrKSB8fCAoc3BsaXRTZGsuc2RrRCAmJiBzcGxpdFNkay5zZGtEID09PSBfdGhpcy5zZGspKSkge1xyXG4gICAgICAgICAgICBoZWFkaW5nID0gdGhhdDNELm1vZGVsLmhlYWRpbmdcclxuICAgICAgICAgICAgcGl0Y2ggPSB0aGF0M0QubW9kZWwucGl0Y2hcclxuICAgICAgICAgICAgcm9sbCA9IHRoYXQzRC5tb2RlbC5yb2xsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc05hTihoZWFkaW5nKSB8fCBpc05hTihwaXRjaCkgfHwgaXNOYU4ocm9sbCkpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIV90aGlzLnN0YXRlKSB7XHJcbiAgICAgICAgICBpZiAodGhhdDNEICYmICgoc2RrMkQgJiYgc2RrMkQgPT09IF90aGlzLnNkaykgfHwgKHNwbGl0U2RrLnNka0QgJiYgc3BsaXRTZGsuc2RrRCA9PT0gX3RoaXMuc2RrKSkpIHtcclxuICAgICAgICAgICAgaGVhZGluZyA9IHRoYXQzRC5tb2RlbC5oZWFkaW5nXHJcbiAgICAgICAgICAgIHBpdGNoID0gdGhhdDNELm1vZGVsLnBpdGNoXHJcbiAgICAgICAgICAgIHJvbGwgPSB0aGF0M0QubW9kZWwucm9sbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhlYWRpbmcgPSAoX3RoaXMubW9kZWwuaGVhZGluZyB8fCBfdGhpcy5tb2RlbC5oZWFkaW5nID09PSAwKSA/IF90aGlzLm1vZGVsLmhlYWRpbmcgOiBfdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmdcclxuICAgICAgICAgICAgcGl0Y2ggPSAoX3RoaXMubW9kZWwucGl0Y2ggfHwgX3RoaXMubW9kZWwucGl0Y2ggPT09IDApID8gX3RoaXMubW9kZWwucGl0Y2ggOiBfdGhpcy5vcHRpb25zLm1vZGVsLnBpdGNoXHJcbiAgICAgICAgICAgIHJvbGwgPSAoX3RoaXMubW9kZWwucm9sbCB8fCBfdGhpcy5tb2RlbC5yb2xsID09PSAwKSA/IF90aGlzLm1vZGVsLnJvbGwgOiBfdGhpcy5vcHRpb25zLm1vZGVsLnJvbGxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMubW9kZWwubW9kZWxNYXRyaXggPSBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5TWF0cml4MyhtYXRyaXgsIENlc2l1bS5NYXRyaXgzLmZyb21IZWFkaW5nUGl0Y2hSb2xsKENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsLmZyb21EZWdyZWVzKGhlYWRpbmcsIHBpdGNoLCByb2xsKSksIF90aGlzLm1vZGVsLm1vZGVsTWF0cml4KVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChfdGhpcy5lbnRpdHkpIHtcclxuICAgICAgICAgIGhlYWRpbmcgPSBfdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmdcclxuICAgICAgICAgIHBpdGNoID0gX3RoaXMub3B0aW9ucy5tb2RlbC5waXRjaFxyXG4gICAgICAgICAgcm9sbCA9IF90aGlzLm9wdGlvbnMubW9kZWwucm9sbFxyXG4gICAgICAgICAgaWYgKGlzTmFOKGhlYWRpbmcpIHx8IGlzTmFOKHBpdGNoKSB8fCBpc05hTihyb2xsKSkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIOaXi+i9rFxyXG4gICAgICAgICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHJvbGwpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBsZXQgbXkgPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25ZKFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMocGl0Y2gpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgICAgICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoaGVhZGluZylcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGxldCByb3RhdGlvblggPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteClcclxuICAgICAgICAgIGxldCByb3RhdGlvblkgPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteSlcclxuICAgICAgICAgIGxldCByb3RhdGlvblogPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteilcclxuICAgICAgICAgIGxldCBvcmlnaW5hbE1hdHJpeCA9IG5ldyBDZXNpdW0uTWF0cml4NCgpXHJcbiAgICAgICAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShtYXRyaXgsIHJvdGF0aW9uWCwgb3JpZ2luYWxNYXRyaXgpXHJcbiAgICAgICAgICBDZXNpdW0uTWF0cml4NC5tdWx0aXBseShvcmlnaW5hbE1hdHJpeCwgcm90YXRpb25ZLCBvcmlnaW5hbE1hdHJpeClcclxuICAgICAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIF90aGlzLmVudGl0eS5tb2RlbE1hdHJpeClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gY29uc29sZS5sb2coKEhlYWRpbmdQaXRjaFJvbGwuaGVhZGluZyAtIG1vZGVIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcpICogKDE4MCAvIE1hdGguUEkpKVxyXG5cclxuICAgICAgX3RoaXMubW9kZWwucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICBfdGhpcy5tb2RlbC5yb2xsID0gcm9sbFxyXG4gICAgICBfdGhpcy5tb2RlbC5waXRjaCA9IHBpdGNoXHJcbiAgICAgIF90aGlzLm1vZGVsLmhlYWRpbmcgPSBoZWFkaW5nXHJcbiAgICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgbGFiZWxQb3NpdGlvbiA9IF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uLCBfdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICBfdGhpcy5sYWJlbC5wb3NpdGlvbiA9IFtsYWJlbFBvc2l0aW9uLmxuZywgbGFiZWxQb3NpdGlvbi5sYXQsIGxhYmVsUG9zaXRpb24uYWx0XVxyXG4gICAgICBsYXN0RGlzdGFuY2UgPSBkaXN0YW5jZVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhwb3NpdGlvbilcclxuICAgICAgX3RoaXMucmVhbFRpbWVSb3V0ZUFycmF5LnB1c2gocG9zaXRpb24pXHJcbiAgICAgIGlmIChfdGhpcy52aWV3Rm9sbG93KSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coQ2VzaXVtLk1hdGgudG9EZWdyZWVzKF90aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBpdGNoKSlcclxuICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgIGxldCB0YXJnZXRIZWFkaW5nID0gaGVhZGluZyArIDkwICsgX3RoaXMuZmlyc3RQZXJzb25IZWFkaW5nUGl0Y2guaGVhZGluZ1xyXG4gICAgICAgICAgaWYoIV90aGlzLnJvdXRlRGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRhcmdldEhlYWRpbmcgPSAxODAgLSB0YXJnZXRIZWFkaW5nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAgICAgICAgICAgZGVzdGluYXRpb246IHBvc2l0aW9uQ2FtZXJhLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0YXJnZXRIZWFkaW5nKSxcclxuICAgICAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKF90aGlzLmZpcnN0UGVyc29uSGVhZGluZ1BpdGNoLnBpdGNoKSxcclxuICAgICAgICAgICAgICByb2xsOiAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKF90aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMykge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5LnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgICAgICAgICAgICAvLyBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQpLFxyXG4gICAgICAgICAgICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MCksXHJcbiAgICAgICAgICAgICAgICAgIHBpdGNoOiAwLFxyXG4gICAgICAgICAgICAgICAgICByb2xsOiAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGZ1bmN0aW9uIGV4ZWN1dGVBbmltYXRlKCkge1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIGxldCBpID0gMFxyXG4gICAgLy8gICBmdW5jdGlvbiBhbmltYXRlKCkge1xyXG4gICAgLy8gICAgIGlmIChpIDwgbW90aW9uQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICBsZXQgcmVzdWx0ID0gbW90aW9uQXJyYXlbaV0ucmVzdWx0O1xyXG4gICAgLy8gICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgLy8gICAgICAgcmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgLy8gICAgICAgICBsZXQgcG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhtb3Rpb25BcnJheVtpXS5sbmcsIG1vdGlvbkFycmF5W2ldLmxhdCwgcmVzWzBdLmhlaWdodClcclxuXHJcbiAgICAvLyAgICAgICAgIGxldCBIZWFkaW5nUGl0Y2hSb2xsID0gZ2V0SGVhZGluZ1BpdGNoUm9sbChfdGhpcy5tb2RlbC5wb3NpdGlvbiwgcG9zaXRpb24pXHJcbiAgICAvLyAgICAgICAgIGxldCBtb2RlSGVhZGluZ1BpdGNoUm9sbCA9IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsLmZyb21EZWdyZWVzKF90aGlzLm9wdGlvbnMubW9kZWwuaGVhZGluZywgX3RoaXMub3B0aW9ucy5tb2RlbC5waXRjaCwgX3RoaXMub3B0aW9ucy5tb2RlbC5yb2xsKVxyXG4gICAgLy8gICAgICAgICBsZXQgaGVhZGluZyA9IDBcclxuICAgIC8vICAgICAgICAgbGV0IHBpdGNoID0gMFxyXG4gICAgLy8gICAgICAgICBsZXQgcm9sbCA9IDBcclxuICAgIC8vICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMucm91dGVEaXJlY3Rpb24pIHtcclxuICAgIC8vICAgICAgICAgICBoZWFkaW5nID0gKEhlYWRpbmdQaXRjaFJvbGwuaGVhZGluZyAtIG1vZGVIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcpICogKDE4MCAvIE1hdGguUEkpIC0gOTBcclxuICAgIC8vICAgICAgICAgICBwaXRjaCA9IChIZWFkaW5nUGl0Y2hSb2xsLnBpdGNoIC0gbW9kZUhlYWRpbmdQaXRjaFJvbGwucGl0Y2gpICogKDE4MCAvIE1hdGguUEkpXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgZWxzZSB7XHJcbiAgICAvLyAgICAgICAgICAgaGVhZGluZyA9IC0gX3RoaXMub3B0aW9ucy5tb2RlbC5oZWFkaW5nXHJcbiAgICAvLyAgICAgICAgICAgcGl0Y2ggPSAtIF90aGlzLm9wdGlvbnMubW9kZWwucGl0Y2hcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICByb2xsID0gLSBfdGhpcy5vcHRpb25zLm1vZGVsLnJvbGxcclxuICAgIC8vICAgICAgICAgLy8gY29uc29sZS5sb2coaGVhZGluZylcclxuICAgIC8vICAgICAgICAgbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvc2l0aW9uKVxyXG4gICAgLy8gICAgICAgICBfdGhpcy5tb2RlbC5tb2RlbE1hdHJpeCA9IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlNYXRyaXgzKG1hdHJpeCwgQ2VzaXVtLk1hdHJpeDMuZnJvbUhlYWRpbmdQaXRjaFJvbGwoQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXMoaGVhZGluZywgcGl0Y2gsIHJvbGwpKSwgX3RoaXMubW9kZWwubW9kZWxNYXRyaXgpXHJcbiAgICAvLyAgICAgICAgIF90aGlzLm1vZGVsLnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgIC8vICAgICAgICAgaWYgKF90aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgLy8gICAgICAgICAgIF90aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eS5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgaSsrXHJcbiAgICAvLyAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcclxuICAgIC8vICAgICAgIH0pXHJcblxyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgYW5pbWF0ZSgpO1xyXG4gICAgLy8gfSwgMjAwMCk7XHJcblxyXG4gICAgLy8g5qC55o2u5Lik5Liq5Z2Q5qCH54K5LOiOt+WPlkhlYWRpbmco5pyd5ZCRKVxyXG4gICAgZnVuY3Rpb24gZ2V0SGVhZGluZ1BpdGNoUm9sbChwb2ludEEsIHBvaW50Qikge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhkaXN0YW5jZSwgX3RoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9pbnRBLCB2aWV3ZXIpLCBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb2ludEIsIHZpZXdlcikpXHJcbiAgICAgIC8v5bu656uL5Lul54K5QeS4uuWOn+eCue+8jFjovbTkuLplYXN0LFnovbTkuLpub3J0aCxa6L205pyd5LiK55qE5Z2Q5qCH57O7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHBvaW50QSk7XHJcbiAgICAgIC8v5ZCR6YePQUJcclxuICAgICAgaWYgKCFwb2ludEIpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwb3NpdGlvbnZlY3RvciA9IENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KHBvaW50QiwgcG9pbnRBLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIC8v5ZugdHJhbnNmb3Jt5piv5bCGQeS4uuWOn+eCueeahGVhc3ROb3J0aFVw5Z2Q5qCH57O75Lit55qE54K56L2s5o2i5Yiw5LiW55WM5Z2Q5qCH57O755qE55+p6Zi1XHJcbiAgICAgIC8vQULkuLrkuJbnlYzlnZDmoIfkuK3nmoTlkJHph49cclxuICAgICAgLy/lm6DmraTlsIZBQuWQkemHj+i9rOaNouS4ukHljp/ngrnlnZDmoIfns7vkuK3nmoTlkJHph4/vvIzpnIDkuZjku6V0cmFuc2Zvcm3nmoTpgIbnn6npmLXjgIJcclxuICAgICAgY29uc3QgdmVjdG9yID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IoXHJcbiAgICAgICAgQ2VzaXVtLk1hdHJpeDQuaW52ZXJzZSh0cmFuc2Zvcm0sIG5ldyBDZXNpdW0uTWF0cml4NCgpKSxcclxuICAgICAgICBwb3NpdGlvbnZlY3RvcixcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApO1xyXG4gICAgICAvL+W9kuS4gOWMllxyXG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5ub3JtYWxpemUodmVjdG9yLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGRpcmVjdGlvbilcclxuICAgICAgLy9oZWFkaW5nXHJcbiAgICAgIGNvbnN0IGhlYWRpbmcgPSBNYXRoLmF0YW4yKGRpcmVjdGlvbi55LCBkaXJlY3Rpb24ueCkgLSBDZXNpdW0uTWF0aC5QSV9PVkVSX1RXTztcclxuICAgICAgY29uc3QgcGl0Y2ggPSBDZXNpdW0uTWF0aC5QSV9PVkVSX1RXTyAtIENlc2l1bS5NYXRoLmFjb3NDbGFtcGVkKGRpcmVjdGlvbi56KTtcclxuICAgICAgLy8gY29uc29sZS5sb2cocGl0Y2ggKiAoMTgwIC8gTWF0aC5QSSkpXHJcbiAgICAgIGNvbnN0IHJvbGwgPSBDZXNpdW0uTWF0aC5mYXN0QXBwcm94aW1hdGVBdGFuMihkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnopO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh7aGVhZGluZzogaGVhZGluZyAqICgxODAgLyBNYXRoLlBJKSwgcGl0Y2g6IHBpdGNoICogKDE4MCAvIE1hdGguUEkpLCByb2xsOiByb2xsICogKDE4MCAvIE1hdGguUEkpfSlcclxuICAgICAgcmV0dXJuIHsgaGVhZGluZzogQ2VzaXVtLk1hdGguVFdPX1BJIC0gQ2VzaXVtLk1hdGguemVyb1RvVHdvUGkoaGVhZGluZyksIHBpdGNoOiBwaXRjaCwgcm9sbDogcm9sbCB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZShkaXN0YW5jZSkge1xyXG4gICAgbGV0IHBvc2l0aW9uc19zbW9vdGggPSB0aGlzLnJlbmV3TGluZVBvc2l0aW9ucyh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLm1vZGVsTW92ZShwb3NpdGlvbnNfc21vb3RoLCB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9KVxyXG4gIH1cclxuXHJcbiAgc2V0TW92ZVBvc2l0aW9uQnlUaW1lKHRpbWUpIHtcclxuICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gdGhpcy5yZW5ld0xpbmVQb3NpdGlvbnModGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zKVxyXG4gICAgdGhpcy5tb2RlbE1vdmUocG9zaXRpb25zX3Ntb290aCwgeyB0aW1lOiB0aW1lIH0pXHJcbiAgfVxyXG5cclxuICAvLyDnvJbovpHmoYZcclxuICBhc3luYyBlZGl0KHN0YXRlKSB7XHJcbiAgICByZXR1cm5cclxuICAgIGlmICh0aGlzLl9lcnJvcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgICAgdGl0bGU6ICfovajov7nov5DliqjlsZ7mgKcnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lLnRyaW0oKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ+acquWRveWQjeWvueixoSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMudmlld0ZvbGxvd09yaWVudGF0aW9uID0ge31cclxuICAgICAgICAgIC8vIHRoaXMub3B0aW9ucy52aWV3Rm9sbG93T3JpZW50YXRpb24uaGVhZGluZyA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyh0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmhlYWRpbmcpXHJcbiAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMudmlld0ZvbGxvd09yaWVudGF0aW9uLnBpdGNoID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gpXHJcbiAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMudmlld0ZvbGxvd09yaWVudGF0aW9uLnJvbGwgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXModGhpcy5zZGsudmlld2VyLmNhbWVyYS5yb2xsKVxyXG4gICAgICAgICAgLy8gdGhpcy5vcHRpb25zLnZpZXdGb2xsb3dPcmllbnRhdGlvbi5kaXJlY3Rpb24gPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmRpcmVjdGlvblxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIGxldCBjZG9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgICAgIGNkb3B0aW9ucy5ob3N0ID0gJydcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2soY2RvcHRpb25zKVxyXG4gICAgICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgICBpZiAodGhpcy5lZGl0T2JqKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE9iai5kZXN0cm95KClcclxuICAgICAgICAgICAgdGhpcy5lZGl0T2JqID0gbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5rZXlQb2ludFNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgICAgICAgIGlmICh0aGlzLmZpcnN0UGVyc29uVmlldyAhPT0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmlyc3RQZXJzb25WaWV3O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3RQZXJzb25WaWV3ICYmIHRoaXMubW9kZWxTaG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgJiYgKHRoaXMubW9kZWwuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0NhbGxCYWNrOiAoc2hvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjaygpXHJcbiAgICAgICAgICAvLyB0aGlzLm9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIC8vIHRoaXMubW9kZWwgJiYgKHRoaXMubW9kZWwuc2hvdyA9IHNob3cpXHJcbiAgICAgICAgICAvLyB0aGlzLmxpbmUgJiYgKHRoaXMubGluZS5zaG93ID0gc2hvdylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgdHJhamVjdG9yeS1tb3Rpb24nXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIGlmICh0aGlzLmVkaXRPYmopIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uaW5uZXJIVE1MID0gJ+e7k+adn+iwg+aVtCdcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uY2xhc3NOYW1lID0gJ2J0biBtb2RlbC1yb3RhdGUtYnRuIGlzLWFjdGl2ZSdcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uaW5uZXJIVE1MID0gJ+W8gOWni+iwg+aVtCdcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uY2xhc3NOYW1lID0gJ2J0biBtb2RlbC1yb3RhdGUtYnRuJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbGFiZWxDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxDb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICcnXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGhlaWdodEJveEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlaWdodC1ib3gnKVswXVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuaGVpZ2h0Qm94ID0gaGVpZ2h0Qm94RWxtXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvciA9IFtsYWJlbENvbG9yUGlja2VyXVxyXG4gICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgIGNvbnN0IGdldEFuaW1hdGlvbnNMaXN0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLm1vZGVsLmxvYWRlci5jb21wb25lbnRzLmFuaW1hdGlvbnNcclxuICAgICAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QpIHtcclxuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbnMpIHtcclxuICAgICAgICAgICAgICBsZXQgdGFnRGF0YSA9IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogJ+aXoCcsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAn5pegJyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbmltYXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0YWdEYXRhLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhbmltYXRpb25zW2ldLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFuaW1hdGlvbnNbaV0ubmFtZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQsIFwiLm1vZGVsLWFuaW1hdGUtc2VsZWN0XCIpLmxlZ3Bfc2VhcmNoKHRhZ0RhdGEpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHNlbGVjdEVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZWwtYW5pbWF0ZS1zZWxlY3QnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgICBzZWxlY3RFbG0udmFsdWUgPSB0aGlzLm1vZGVsQW5pbWF0ZVxyXG4gICAgICAgICAgICBzZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSwgYykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWxBbmltYXRlID0gc2VsZWN0RWxtLnZhbHVlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChOdW1iZXIoQ2VzaXVtLlZFUlNJT04uc3BsaXQoJy4nKVsxXSkgPj0gMTA3KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb2RlbC5yZWFkeSkge1xyXG4gICAgICAgICAgICBnZXRBbmltYXRpb25zTGlzdCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5yZWFkeUV2ZW50LmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGdldEFuaW1hdGlvbnNMaXN0KClcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5yZWFkeVByb21pc2UudGhlbigoZW50aXR5KSA9PiB7XHJcbiAgICAgICAgICAgIGdldEFuaW1hdGlvbnNMaXN0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZ3JvdW5kKSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggJiYgKHRoaXMuX2VsbXMuaGVpZ2h0Qm94LmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94IGRpc2FibGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZWxtcy5oZWlnaHRCb3ggJiYgKHRoaXMuX2VsbXMuaGVpZ2h0Qm94LmNsYXNzTmFtZSA9ICdpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMSBoZWlnaHQtYm94Jyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBlX2ZpcnN0UGVyc29uID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uW25hbWU9J2ZpcnN0UGVyc29uJ11cIilcclxuICAgICAgZV9maXJzdFBlcnNvblswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgbGV0IHNwbGl0U2RrID0gZ2V0U2RrKClcclxuICAgICAgICBpZiAoIWdldDJEVmlldygpICYmICFzcGxpdFNkay5zZGtEKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0ZvbGxvdyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgZV9maXJzdFBlcnNvblsxXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdGb2xsb3cgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICBlX2ZpcnN0UGVyc29uWzBdLmNsYXNzTmFtZSA9ICdidG4gaXMtYWN0aXZlJ1xyXG4gICAgICAgIGVfZmlyc3RQZXJzb25bMV0uY2xhc3NOYW1lID0gJ2J0bidcclxuICAgICAgICBpZiAodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpIHtcclxuICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZV9maXJzdFBlcnNvblswXS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICAgIGVfZmlyc3RQZXJzb25bMV0uY2xhc3NOYW1lID0gJ2J0biBpcy1hY3RpdmUnXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBsZXQgcnVicmljRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgICAgcnVicmljRWxtLmNsYXNzTmFtZSA9ICdjdXN0b20tcnVicmljLWJveCdcclxuICAgICAgcnVicmljRWxtLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9ICdjZW50ZXIgYm90dG9tJ1xyXG4gICAgICBydWJyaWNFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICBydWJyaWNFbG0uc3R5bGUudG9wID0gJzE4MHB4JztcclxuICAgICAgcnVicmljRWxtLnN0eWxlLnJpZ2h0ID0gJzNweCc7XHJcbiAgICAgIHJ1YnJpY0VsbS5zdHlsZS5wYWRkaW5nID0gJzVweCAxMHB4JztcclxuICAgICAgcnVicmljRWxtLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjM2U0MjQ5JztcclxuICAgICAgcnVicmljRWxtLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBydWJyaWNFbG0uc3R5bGUuZm9udFNpemUgPSAnMTJweCc7XHJcbiAgICAgIHJ1YnJpY0VsbS5zdHlsZS5jb2xvciA9ICcjZmY1NzMzJztcclxuICAgICAgcnVicmljRWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuXHJcbiAgICAgIHJ1YnJpY0VsbS5pbm5lckhUTUwgPSBg5Zy65pmv5q2j5Lic5pa55ZCR5Li66L2o6L+55YmN6L+b5q2j5pa55ZCRPGRpdiB4LWFycm93PVwiXCIgY2xhc3M9XCJjdXN0b21fX3BvcHBlcl9fYXJyb3dcIiBzdHlsZT1cImxlZnQ6IDU5cHg7XCI+PC9kaXY+YFxyXG4gICAgICBsZXQgaWNvblJ1YnJpYyA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWNvbi1ydWJyaWMnKVswXVxyXG4gICAgICBpY29uUnVicmljLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoZSkgPT4ge1xyXG4gICAgICAgIHJ1YnJpY0VsbS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xyXG4gICAgICB9KVxyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAvLyDmo4Dmn6Xngrnlh7vnmoTlhYPntKDmmK/lkKblnKjmqKHmgIHmoYblhoXlrrnljLrln5/kuYvlpJZcclxuICAgICAgICBpZiAoIWljb25SdWJyaWMuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgcnVicmljRWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuYXBwZW5kQ2hpbGQocnVicmljRWxtKVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGZvbnREYXRhID0gZ2V0Rm9udExpc3QoKVxyXG4gICAgICAgIGxldCBmb250T2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdmb250LXNlbGVjdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5mb250LXNlbGVjdCdcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKGZvbnRPYmplY3QpIHtcclxuICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2goZm9udERhdGEpXHJcbiAgICAgICAgICBsZXQgZm9udERhdGFMZWdwRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvbnQtc2VsZWN0JylbMF1cclxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgICBmb250RGF0YUxlZ3BFbG0udmFsdWUgPSBmb250RGF0YVt0aGlzLmxhYmVsRm9udEZhbWlseV0udmFsdWVcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9udERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09IGZvbnREYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGZvbnRPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoZm9udERhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZvbnREYXRhW2ldLnZhbHVlID09PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxGb250RmFtaWx5ID0gZm9udERhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ID0gW2ZvbnREYXRhTGVncEVsbV1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmbHlUbyhvcHRpb25zID0ge30pIHtcclxuICAgIHNldEFjdGl2ZVZpZXdlcigwKVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQodGhpcy5zZGspXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5wb3NpdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxpbmUgJiYgdGhpcy5zZGsudmlld2VyLmZseVRvKHRoaXMubGluZSwge1xyXG4gICAgICAgIG9mZnNldDogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTYwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmUoKSB7XHJcbiAgICB0aGlzLmV2ZW50ICYmIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLm1vZGVsKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmxpbmUpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMucmVhbFRpbWVMaW5lKVxyXG4gICAgdGhpcy5sYWJlbCAmJiB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMua2V5UG9pbnRTaG93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5rZXlQb2ludFNob3dbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmxpbmUgPSBudWxsXHJcbiAgICB0aGlzLnJlYWxUaW1lTGluZSA9IG51bGxcclxuICAgIHRoaXMubW9kZWwgPSBudWxsXHJcbiAgICB0aGlzLmxhYmVsID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fbW91c2VSaWdodGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuX21vdXNlUmlnaHRldmVudC5kZXN0cm95KClcclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlTW9kZWxBbmltYXRlKClcclxuICAgIGxldCBzZGsyRCA9IGdldDJEVmlldygpXHJcbiAgICBpZiAoIXNkazJEIHx8IHNkazJEICE9PSB0aGlzLnNkaykge1xyXG4gICAgICB0aGlzLnZpZXdGb2xsb3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIHJlc2V0KCkge1xyXG4gICAgKHRoaXMub3B0aW9ucy5tb2RlbC51cmwgIT09IHRoaXMub3JpZ2luYWxPcHRpb25zLm1vZGVsLnVybCkgJiYgdGhpcy5jaGFuZ2VNb2RlbFVybCh0aGlzLm9yaWdpbmFsT3B0aW9ucy5tb2RlbC51cmwpO1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubmFtZTtcclxuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLnBvc2l0aW9ucykpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLnBvc2l0aW9ucyk7XHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLnJlbmV3TGluZVBvc2l0aW9ucyh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICAgIHRoaXMubGluZS5wb2x5bGluZS5wb3NpdGlvbnMgPSBwb3NpdGlvbnNcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5wb3NpdGlvbiA9IHBvc2l0aW9uc1swXTtcclxuICAgICAgICB0aGlzLm1vZGVsTW92ZShwb3NpdGlvbnMpXHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbFNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tb2RlbC5zaG93O1xyXG4gICAgKHRoaXMubm9zZVRvVGFpbCAhPT0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGluZS5ub3NlVG9UYWlsKSAmJiAodGhpcy5ub3NlVG9UYWlsID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGluZS5ub3NlVG9UYWlsKTtcclxuICAgICh0aGlzLmhlaWdodCAhPT0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuaGVpZ2h0KSAmJiAodGhpcy5oZWlnaHQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5oZWlnaHQpO1xyXG4gICAgKHRoaXMubGluZVNob3cgIT09IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuc2hvdykgJiYgKHRoaXMubGluZVNob3cgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLnNob3cpO1xyXG4gICAgdGhpcy5rZXlQb2ludFNob3cgPSBmYWxzZTtcclxuICAgIHRoaXMucm91dGVEaXJlY3Rpb24gPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5yb3V0ZURpcmVjdGlvbjtcclxuICAgIHRoaXMuc2NhbGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tb2RlbC5zY2FsZTtcclxuICAgICh0aGlzLmxvb3AgIT09IHRoaXMub3JpZ2luYWxPcHRpb25zLmxvb3ApICYmICh0aGlzLmxvb3AgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sb29wKTtcclxuICAgIHRoaXMudmlld0ZvbGxvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLnZpZXdGb2xsb3c7XHJcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3RhdGU7XHJcbiAgICB0aGlzLnNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3BlZWQ7XHJcbiAgICAodGhpcy5zbW9vdGggIT09IHRoaXMub3JpZ2luYWxPcHRpb25zLmxpbmUuc21vb3RoKSAmJiAodGhpcy5zbW9vdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5saW5lLnNtb290aCk7XHJcbiAgICB0aGlzLnJlYWxUaW1lUm91dGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5yZWFsVGltZVJvdXRlO1xyXG4gICAgdGhpcy5tb2RlbEFuaW1hdGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tb2RlbC5hbmltYXRlO1xyXG4gICAgdGhpcy5kZWxheSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmRlbGF5O1xyXG4gICAgKHRoaXMuZ3JvdW5kICE9PSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5ncm91bmQpICYmICh0aGlzLmdyb3VuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmdyb3VuZCk7XHJcbiAgICBpZiAodGhpcy5maXJzdFBlcnNvblZpZXcgIT09IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICB0aGlzLmZpcnN0UGVyc29uVmlldyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpcnN0UGVyc29uVmlldztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpcnN0UGVyc29uVmlldyAmJiB0aGlzLm1vZGVsU2hvdykge1xyXG4gICAgICB0aGlzLm1vZGVsICYmICh0aGlzLm1vZGVsLnNob3cgPSBmYWxzZSlcclxuICAgIH1cclxuICAgIHRoaXMubGFiZWxTaG93ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2hvd1xyXG4gICAgdGhpcy5sYWJlbENvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuY29sb3JcclxuICAgIHRoaXMubGFiZWxGb250U2l6ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZvbnRGYW1pbHlcclxuICAgIHRoaXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2VcclxuICAgIHRoaXMubGFiZWxOZWFyID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubmVhclxyXG4gICAgdGhpcy5sYWJlbEZhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmZhclxyXG4gICAgdGhpcy5sYWJlbExpbmVXaWR0aCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gICAgdGhpcy5sYWJlbFBpeGVsT2Zmc2V0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucyk7XHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgLy8gdmlld0ZvbGxvdyhlKSB7XHJcbiAgLy8gICBpZiAoZS50YXJnZXQuY2hlY2tlZCkge1xyXG4gIC8vICAgICB2YXIgcG9pbnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAvLyAgICAgICAvLyBzaG93OiBmYWxzZSxcclxuICAvLyAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbnNfc21vb3RoWzBdLCAvLyBwb3NpdGlvbiBvZiB0aGUgcG9pbnRcclxuICAvLyAgICAgICBwb2ludDoge1xyXG4gIC8vICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDApLCAvLyBjb2xvciBvZiB0aGUgcG9pbnRcclxuICAvLyAgICAgICAgIHBpeGVsU2l6ZTogMFxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICAgIHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5ID0gcG9pbnRFbnRpdHk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAvLyAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBtb2RlbFJvdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRPYmopIHtcclxuICAgICAgdGhpcy5lZGl0T2JqLmRlc3Ryb3koKVxyXG4gICAgICB0aGlzLmVkaXRPYmogPSBudWxsXHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZWwtcm90YXRlLWJ0bicpWzBdLmlubmVySFRNTCA9ICflvIDlp4vosIPmlbQnXHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZWwtcm90YXRlLWJ0bicpWzBdLmNsYXNzTmFtZSA9ICdidG4gbW9kZWwtcm90YXRlLWJ0bidcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aWV3Rm9sbG93KSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5FTEVNRU5UKSB7XHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlLmNsb3NlQWxsKCk7XHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgbWVzc2FnZTogJ+WFs+mXreinhuinkui3n+maj+WQjuWPr+iwg+aVtOaooeWei+aWueWQkSEnLFxyXG4gICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnNvbGUud2Fybign5YWz6Zet6KeG6KeS6Lef6ZqP5ZCO5Y+v6LCD5pW05qih5Z6L5pa55ZCRIScpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RlbC1yb3RhdGUtYnRuJylbMF0uaW5uZXJIVE1MID0gJ+e7k+adn+iwg+aVtCdcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZGVsLXJvdGF0ZS1idG4nKVswXS5jbGFzc05hbWUgPSAnYnRuIG1vZGVsLXJvdGF0ZS1idG4gaXMtYWN0aXZlJ1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXRlID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVkaXRPYmogPSBuZXcgRWRpdEdsdGYodGhpcy5zZGssIHRoaXMubW9kZWwpXHJcbiAgICAgICAgdGhpcy5lZGl0T2JqLmVkaXRSdGF0aW9uKClcclxuICAgICAgICB0aGlzLmVkaXRPYmoudHJhbnNmb3JtQ2FsbEJhY2sgPSB0aGlzLnJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrXHJcbiAgICAgICAgdGhpcy5yb3V0ZURpcmVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgbGV0IGhlYWRpbmcgPSB0aGlzLm9wdGlvbnMubW9kZWwuaGVhZGluZ1xyXG4gICAgICAgIGxldCBwaXRjaCA9IHRoaXMub3B0aW9ucy5tb2RlbC5waXRjaFxyXG4gICAgICAgIGxldCByb2xsID0gdGhpcy5vcHRpb25zLm1vZGVsLnJvbGxcclxuICAgICAgICBpZiAoaXNOYU4oaGVhZGluZykgfHwgaXNOYU4ocGl0Y2gpIHx8IGlzTmFOKHJvbGwpKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHRoaXMubW9kZWwucG9zaXRpb24pXHJcbiAgICAgICAgLy8g5peL6L2sXHJcbiAgICAgICAgbGV0IG14ID0gQ2VzaXVtLk1hdHJpeDMuZnJvbVJvdGF0aW9uWChcclxuICAgICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhyb2xsKVxyXG4gICAgICAgIClcclxuICAgICAgICBsZXQgbXkgPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25ZKFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHBpdGNoKVxyXG4gICAgICAgIClcclxuICAgICAgICBsZXQgbXogPSBDZXNpdW0uTWF0cml4My5mcm9tUm90YXRpb25aKFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGhlYWRpbmcpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGxldCByb3RhdGlvblggPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihteClcclxuICAgICAgICBsZXQgcm90YXRpb25ZID0gQ2VzaXVtLk1hdHJpeDQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obXkpXHJcbiAgICAgICAgbGV0IHJvdGF0aW9uWiA9IENlc2l1bS5NYXRyaXg0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG16KVxyXG4gICAgICAgIGxldCBvcmlnaW5hbE1hdHJpeCA9IG5ldyBDZXNpdW0uTWF0cml4NCgpXHJcbiAgICAgICAgQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkobWF0cml4LCByb3RhdGlvblgsIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblksIG9yaWdpbmFsTWF0cml4KVxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5KG9yaWdpbmFsTWF0cml4LCByb3RhdGlvblosIHRoaXMuZW50aXR5Lm1vZGVsTWF0cml4KVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xpY2tDaGFuZ2VNb2RlbCgpIHtcclxuICAgIHRoaXMuRGlhbG9nLmNoYW5nZU1vZGVsQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2hhbmdlTW9kZWxDYWxsQmFjaygpXHJcbiAgfVxyXG5cclxuICAvL+aXi+i9rOaXtu+8jOWdkOagh+S/oeaBr+WPmOWMlueahOWbnuiwg1xyXG4gIHNldCByb3RhdGlvbkVkaXRpbmdDYWxsQmFjayhjYWxsYmFjaykge1xyXG4gICAgdGhpcy5fcm90YXRpb25FZGl0aW5nQ2FsbEJhY2sgPSBjYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIChwYXJhbXMpID0+IHtcclxuICAgICAgdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmcgPSBwYXJhbXMucnpcclxuICAgICAgdGhpcy5vcHRpb25zLm1vZGVsLnBpdGNoID0gcGFyYW1zLnJ5XHJcbiAgICAgIHRoaXMub3B0aW9ucy5tb2RlbC5yb2xsID0gcGFyYW1zLnJ4XHJcbiAgICAgIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrICYmIHRoaXMuX3JvdGF0aW9uRWRpdGluZ0NhbGxCYWNrKHRoaXMuZWRpdE9iai5fcGFyYW1zKVxyXG4gICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuaXNNb3ZlID0gdHJ1ZSlcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuI3RpbWVvdXRFdmVudE9iamVjdClcclxuICAgICAgdGhpcy4jdGltZW91dEV2ZW50T2JqZWN0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LmlzTW92ZSA9IGZhbHNlKVxyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2hhbmdlTW9kZWxVcmwodXJsKSB7XHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5tb2RlbClcclxuICAgIHRoaXMub3B0aW9ucy5tb2RlbC51cmwgPSB0aGlzLnJlcGxhY2VIb3N0KHVybCwgdGhpcy5vcHRpb25zLmhvc3QpXHJcbiAgICBsZXQgbWF0cml4ID0gdGhpcy5tb2RlbC5tb2RlbE1hdHJpeFxyXG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy5tb2RlbC5wb3NpdGlvblxyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGlkOiB0aGlzLm9wdGlvbnMuaWQsXHJcbiAgICAgIHVybDogdGhpcy5vcHRpb25zLm1vZGVsLnVybCxcclxuICAgICAgc2hvdzogdGhpcy5vcHRpb25zLm1vZGVsLnNob3csXHJcbiAgICAgIHNjYWxlOiB0aGlzLm9wdGlvbnMubW9kZWwuc2NhbGUsXHJcbiAgICAgIC8vIG1pbmltdW1QaXhlbFNpemU6IHRoaXMub3B0aW9ucy5tb2RlbC5waXhlbFNpemUsXHJcbiAgICAgIC8vIG1heGltdW1TY2FsZTogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0QW5pbWF0aW9uc0xpc3QgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9yaWdpbmFsT3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubW9kZWwudXJsID09PSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tb2RlbC51cmwpIHtcclxuICAgICAgICB0aGlzLm1vZGVsQW5pbWF0ZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1vZGVsLmFuaW1hdGVcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubW9kZWwuYW5pbWF0ZSA9ICfml6AnXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLm1vZGVsLmxvYWRlci5jb21wb25lbnRzLmFuaW1hdGlvbnNcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCkge1xyXG4gICAgICAgIGlmIChhbmltYXRpb25zKSB7XHJcbiAgICAgICAgICBsZXQgdGFnRGF0YSA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG5hbWU6ICfml6AnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAn5pegJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbmltYXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRhZ0RhdGEucHVzaChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBhbmltYXRpb25zW2ldLm5hbWUsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYW5pbWF0aW9uc1tpXS5uYW1lXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZWdwKHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LCBcIi5tb2RlbC1hbmltYXRlLXNlbGVjdFwiKS5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kZWwtYW5pbWF0ZS1zZWxlY3QnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgIHNlbGVjdEVsbS52YWx1ZSA9IHRoaXMubW9kZWxBbmltYXRlXHJcbiAgICAgICAgc2VsZWN0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUsIGMpID0+IHtcclxuICAgICAgICAgIHRoaXMubW9kZWxBbmltYXRlID0gc2VsZWN0RWxtLnZhbHVlXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKE51bWJlcihDZXNpdW0uVkVSU0lPTi5zcGxpdCgnLicpWzFdKSA+PSAxMDcpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGF3YWl0IENlc2l1bS5Nb2RlbC5mcm9tR2x0ZkFzeW5jKG9wdGlvbnMpXHJcbiAgICAgIHRoaXMubW9kZWwucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGhpcy5tb2RlbClcclxuICAgICAgdGhpcy5tb2RlbC5yZWFkeUV2ZW50LmFkZEV2ZW50TGlzdGVuZXIoKCkgPT4ge1xyXG4gICAgICAgIGdldEFuaW1hdGlvbnNMaXN0KClcclxuICAgICAgICB0aGlzLm1vZGVsLm1vZGVsTWF0cml4ID0gbWF0cml4XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBDZXNpdW0uTW9kZWwuZnJvbUdsdGYob3B0aW9ucylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5tb2RlbC5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAgIHRoaXMubW9kZWwucmVhZHlQcm9taXNlLnRoZW4oKGVudGl0eSkgPT4ge1xyXG4gICAgICAgIGdldEFuaW1hdGlvbnNMaXN0KClcclxuICAgICAgICB0aGlzLm1vZGVsLm1vZGVsTWF0cml4ID0gbWF0cml4XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGVsLmltYWdlQmFzZWRMaWdodGluZy5sdW1pbmFuY2VBdFplbml0aCA9IDAuNlxyXG4gIH1cclxuXHJcbiAgLy8g56e76Zmk5Yqo55S7XHJcbiAgcmVtb3ZlTW9kZWxBbmltYXRlKCkge1xyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLlR3ZWVuQW5pbWF0ZS50aW1lb3V0KVxyXG4gICAgICBUV0VFTi5yZW1vdmUodGhpcy5Ud2VlbkFuaW1hdGUpXHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbnVsbFxyXG4gICAgfVxyXG4gICAgLy8gaWYgKG1vZGVsUHJpbWl0aXZlICYmIG1vZGVsUHJpbWl0aXZlLl9hY3RpdmVBbmltYXRpb25zICYmIG1vZGVsUHJpbWl0aXZlLl9hY3RpdmVBbmltYXRpb25zLl9ydW50aW1lQW5pbWF0aW9ucykge1xyXG4gICAgLy8gICBsZXQgcnVudGltZUFuaW1hdGlvbiA9IG1vZGVsUHJpbWl0aXZlLl9hY3RpdmVBbmltYXRpb25zLl9ydW50aW1lQW5pbWF0aW9uc1xyXG4gICAgLy8gICBmb3IgKGxldCBpID0gcnVudGltZUFuaW1hdGlvbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICAgIHN3aXRjaCAocnVudGltZUFuaW1hdGlvbltpXS5uYW1lKSB7XHJcbiAgICAvLyAgICAgICBjYXNlICfot5EnOlxyXG4gICAgLy8gICAgICAgICBtb2RlbFByaW1pdGl2ZS5hY3RpdmVBbmltYXRpb25zLnJlbW92ZShydW50aW1lQW5pbWF0aW9uW2ldKVxyXG4gICAgLy8gICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgIGRlZmF1bHQ6XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBzZXQgY29udHJvbGxlckNhbGxCYWNrKGNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLl9jb250cm9sbGVyQ2FsbEJhY2sgPSBjYWxsYmFja1xyXG4gIH1cclxuICBnZXQgY29udHJvbGxlckNhbGxCYWNrKCkge1xyXG4gICAgcmV0dXJuIChwYXJhbXMpID0+IHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOabtOaWsOWdkOagh1xyXG4gIHJlbmV3TGluZVBvc2l0aW9ucyhwb3MpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbLi4ucG9zXVxyXG4gICAgaWYgKHRoaXMubm9zZVRvVGFpbCkge1xyXG4gICAgICBwb3NpdGlvbnMgPSBbLi4ucG9zLCBwb3NbMF1dXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnJldmVyc2UpIHtcclxuICAgICAgcG9zaXRpb25zLnJldmVyc2UoKVxyXG4gICAgfVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGxldCB0aW1lID0gW11cclxuICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgcG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgdGltZS5wdXNoKGkgLyAocG9zaXRpb25zLmxlbmd0aCAtIDEpKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21vb3RoKSB7XHJcbiAgICAgIHRoaXMuc3BsaW5lID0gbmV3IENlc2l1bS5DYXRtdWxsUm9tU3BsaW5lKHtcclxuICAgICAgICB0aW1lczogdGltZSxcclxuICAgICAgICBwb2ludHM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNwbGluZSA9IG5ldyBDZXNpdW0uTGluZWFyU3BsaW5lKHtcclxuICAgICAgICB0aW1lczogdGltZSxcclxuICAgICAgICBwb2ludHM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDEwMDA7IGkrKykge1xyXG4gICAgICBsZXQgY2FydGVzaWFuMyA9IHRoaXMuc3BsaW5lLmV2YWx1YXRlKGkgLyAxMDAwKTtcclxuICAgICAgcG9zaXRpb25zX3Ntb290aC5wdXNoKGNhcnRlc2lhbjMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnNfc21vb3RoID0gcG9zaXRpb25zX3Ntb290aFxyXG4gICAgcmV0dXJuIHBvc2l0aW9uc19zbW9vdGhcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgVHJhamVjdG9yeU1vdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFyREE7QUFzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXFLQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEdBO0FBQUE7QUEwU0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQXJVQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBSEE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBN1BBO0FBQUE7QUFBQTtBQTVHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBcUJBO0FBQ0E7QUFnUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkE7QUFsYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxYkE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXREQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBclBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdVBBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBOUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBakRBO0FBQUE7QUFBQTtBQUFBO0FBb0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBZkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFsRUE7QUFBQTtBQUFBO0FBQUE7QUFvRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQVBBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBN3FDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFqQkE7QUFBQTtBQUFBO0FBQUE7QUFtQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBO0FBbkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtpQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/TrajectoryMotion/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/TrajectoryMotionObject/index.js": -/*!******************************************************!*\ - !*** ./src/Obj/Base/TrajectoryMotionObject/index.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Controller_index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Controller/index */ \"./src/Controller/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\n\n\nvar _lineEdit = /*#__PURE__*/new WeakMap();\nvar TrajectoryMotionObject = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 轨迹运动\r\n * @param options {object}\r\n * @param options.name {string} 名称\r\n * @param options.speed=1 {number} 运行速度(米/每秒)\r\n * @param options.delay=0 {number} 运动延迟时间(毫秒)\r\n * @param options.loop=true {boolean} 循环\r\n * @param options.height {number} 起始点高度\r\n * @param options.ground=false {boolean} 贴地\r\n * @param options.state=true {boolean} 模型运动\r\n * @param options.routeDirection=true {boolean} 路径方向\r\n * @param options.viewFollow=false {boolean} 视角跟随\r\n * @param options.line {object} 路径参数\r\n * @param options.line.show=true {boolean} 路径显隐\r\n * @param options.line.smooth=false {boolean} 路径圆滑\r\n * @param options.line.noseToTail=false {boolean} 路径收尾相联\r\n * @param {Array.} options.line.positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param _Dialog {object} 弹框事件\r\n * @param _Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function TrajectoryMotionObject(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, TrajectoryMotionObject);\n _this2 = _callSuper(this, TrajectoryMotionObject, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _lineEdit, false);\n _this2.options.name = options.name || '';\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.speed = options.speed || options.speed === 0 ? options.speed : 1;\n _this2.options.totalTime = options.totalTime;\n if (options.totalTime || options.totalTime === 0) {\n _this2.totalTime = options.totalTime;\n }\n _this2.options.delay = options.delay || 0;\n _this2.options.loop = options.loop || options.loop === false ? options.loop : true;\n _this2.options.line = options.line = options.line || {};\n _this2.options.line.positions = options.line.positions || [];\n _this2.options.height = options.height || options.height === 0 ? options.height : _this2.options.line.positions[0] ? _this2.options.line.positions[0].alt : 0;\n _this2.options.line.show = options.line.show || options.line.show === false ? options.line.show : true;\n _this2.options.line.smooth = options.line.smooth ? options.line.smooth : false;\n _this2.options.line.noseToTail = options.line.noseToTail ? options.line.noseToTail : false;\n _this2.positions_smooth = [];\n _this2.options.ground = options.ground || false;\n _this2.options.state = options.state || options.state === false ? options.state : true;\n _this2.options.routeDirection = options.routeDirection || options.routeDirection === false ? options.routeDirection : true;\n _this2.keyPoints = [];\n _this2.realTimePositions = [];\n _this2._elms = {};\n _this2.Dialog = _Dialog;\n _this2.realTimeRouteArray = [];\n // this._initial = {}\n _this2._current = {\n heading: 0,\n pitch: 0,\n roll: 0\n };\n // this.options.firstPerson = false\n _this2.distance;\n // this.addModel()\n\n if (_this2.options.line.positions.length < 2) {\n _this2._error = '最少需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n _this2.ControllerObject = new _Controller_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this2.sdk);\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n TrajectoryMotionObject.addLine(_this2);\n _this2.firstPersonView = false;\n _this2.options.viewFollow = false;\n }\n\n // animateUpdate()\n // function animateUpdate() {\n // requestAnimationFrame(animateUpdate);\n // TWEEN.update();\n // }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_8___default()(TrajectoryMotionObject, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(TrajectoryMotionObject, [{\n key: \"type\",\n get: function get() {\n return 'TrajectoryMotionObject';\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n this.options.show = v;\n if (v) {\n this.line.show = this.lineShow;\n for (var i = 0; i < this.keyPoints.length; i++) {\n this.keyPoints[i].show = this.keyPointShow;\n }\n } else {\n this.line.show = v;\n for (var _i = 0; _i < this.keyPoints.length; _i++) {\n this.keyPoints[_i].show = v;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = v;\n }\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.height = v;\n if (this.line) {\n if (this.ground) {\n this.line.polyline.clampToGround = true;\n var _loop = function _loop(i) {\n _this3.sdk.viewer.scene.clampToHeightMostDetailed([new Cesium.Cartesian3.fromDegrees(_this3.options.line.positions[i].lng, _this3.options.line.positions[i].lat)]).then(function (result) {\n _this3.keyPoints[i].position = result[0];\n });\n };\n for (var i = 0; i < this.keyPoints.length; i++) {\n _loop(i);\n }\n } else {\n var dvalue = this.options.height - this.options.line.positions[0].alt;\n this.line.polyline.clampToGround = false;\n for (var _i2 = 0; _i2 < this.keyPoints.length; _i2++) {\n this.options.line.positions[_i2].alt += dvalue;\n this.keyPoints[_i2].position = Cesium.Cartesian3.fromDegrees(this.options.line.positions[_i2].lng, this.options.line.positions[_i2].lat, this.options.line.positions[_i2].alt);\n }\n }\n }\n var positions_smooth = this._renewLine(this.options.line.positions);\n this.line.polyline.positions = positions_smooth;\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"ground\",\n get: function get() {\n return this.options.ground;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.ground = v;\n this.realTimeLine.polyline.clampToGround = v;\n this.height = this.options.height;\n this._elms.ground && this._elms.ground.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n var _this4 = this;\n if (v <= 0) {\n v = 0.01;\n }\n this.options.speed = v;\n if (this.distance || this.distance === 0) {\n this.options.totalTime = this.distance * 1000 / this.options.speed;\n // this.TweenAnimate._object.distance/this.TweenAnimate._valuesEnd.distance\n if (this.TweenAnimate && this.state) {\n this.TweenAnimate && this.setMovePositionByDistance(this.TweenAnimate._object.distance);\n }\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n this._elms.totalTime && this._elms.totalTime.forEach(function (item) {\n item.value = _this4.options.totalTime;\n });\n }\n }\n }, {\n key: \"totalTime\",\n get: function get() {\n return this.options.totalTime;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.totalTime = v;\n if (this.distance || this.distance === 0) {\n this.options.speed = this.distance * 1000 / this.options.totalTime;\n this.TweenAnimate && this.setMovePositionByDistance(this.TweenAnimate._object.distance);\n this._elms.totalTime && this._elms.totalTime.forEach(function (item) {\n item.value = v;\n });\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = _this5.options.speed;\n });\n }\n }\n }, {\n key: \"smooth\",\n get: function get() {\n return this.options.line.smooth;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.line.smooth = v;\n var positions = this._renewLine(this.options.line.positions);\n this.line.polyline.positions = positions;\n this.modelMove(positions);\n this._elms.smooth && this._elms.smooth.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"delay\",\n get: function get() {\n return this.options.delay;\n },\n set: function set(v) {\n this.options.delay = v;\n if (this.TweenAnimate) {\n this.TweenAnimate.delay(this.delay);\n }\n this._elms.delay && this._elms.delay.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"state\",\n get: function get() {\n return this.options.state;\n },\n set: function set(v) {\n this.options.state = v;\n if (this.editObj) {\n this.editObj.destroy();\n this.editObj = null;\n }\n if (this.TweenAnimate) {\n if (v) {\n this.speed = this.speed;\n } else {\n this.TweenAnimate.pause();\n }\n } else {\n if (v) {\n var positions = this._renewLine(this.options.line.positions);\n this.modelMove(positions);\n }\n }\n this._elms.state && this._elms.state.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.line.noseToTail;\n },\n set: function set(v) {\n this.lineEdit = false;\n this.options.line.noseToTail = v;\n var fromDegreesArrayHeights = [];\n for (var i = 0; i < this.options.line.positions.length; i++) {\n fromDegreesArrayHeights.push(this.options.line.positions[i].lng, this.options.line.positions[i].lat, this.options.line.positions[i].alt);\n }\n var nosmooth = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights);\n if (this.line) {\n var positions_smooth = this._renewLine(this.options.line.positions);\n this.line.polyline.positions = positions_smooth;\n this.modelMove(positions_smooth);\n }\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"lineShow\",\n get: function get() {\n return this.options.line.show;\n },\n set: function set(v) {\n if (v) {\n this.realTimeRoute = false;\n }\n this.options.line.show = v;\n if (this.line && this.show) {\n this.line.show = v;\n }\n this._elms.lineShow && this._elms.lineShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"realTimeRoute\",\n get: function get() {\n return this.options.realTimeRoute;\n },\n set: function set(v) {\n if (v) {\n this.lineShow = false;\n this.keyPointShow = false;\n }\n this.options.realTimeRoute = v;\n if (this.realTimeLine && this.show) {\n this.realTimeLine.show = v;\n }\n this._elms.realTimeRoute && this._elms.realTimeRoute.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"keyPointShow\",\n get: function get() {\n return this.options.line.keyPoint;\n },\n set: function set(v) {\n this.options.line.keyPoint = v;\n for (var i = 0; i < this.keyPoints.length; i++) {\n if (this.show) {\n this.keyPoints[i].show = v;\n }\n }\n this._elms.keyPointShow && this._elms.keyPointShow.forEach(function (item) {\n item.checked = v;\n });\n if (!v && this.lineEdit) {\n // 关闭线编辑\n _classPrivateFieldSet(_lineEdit, this, v);\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.ControllerObject && this.ControllerObject.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n this._elms.lineEdit && this._elms.lineEdit.forEach(function (item) {\n item.checked = v;\n });\n }\n }\n }, {\n key: \"lineEdit\",\n get: function get() {\n return _classPrivateFieldGet(_lineEdit, this);\n },\n set: function set(v) {\n var _this6 = this;\n var linePositions = [];\n var computePositionsSmooth = function computePositionsSmooth(positions) {\n linePositions = _this6._renewLine(positions);\n _this6.modelMove(linePositions);\n };\n if (v) {\n this.viewFollow = false;\n if (YJ.Measure.GetMeasureStatus()) {\n console.warn('上一次测量未结束');\n this.lineEdit = false;\n return;\n } else {\n this.ground = false;\n this.smooth = false;\n this.state = false;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_14__[\"default\"]('请选择一个顶点,右键取消', this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.sdk);\n var selectPoint;\n computePositionsSmooth(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(this.options.line.positions));\n this.event.mouse_left(function (movement, cartesian) {\n var pick = _this6.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n for (var i = 0; i < _this6.keyPoints.length; i++) {\n if (_this6.keyPoints[i].id === pick.id.id) {\n // this.keyPoints[i].show = false\n selectPoint = pick.id;\n _this6.ControllerObject.position = _this6.options.line.positions[selectPoint.index];\n _this6.ControllerObject.editTranslational();\n _this6.tip && _this6.tip.destroy();\n _this6.tip = null;\n _this6.ControllerObject.controllerCallBack = function (params) {\n // console.log('params', params)\n _this6.options.line.positions[selectPoint.index] = params.position;\n selectPoint.position = Cesium.Cartesian3.fromDegrees(params.position.lng, params.position.lat, params.position.alt);\n computePositionsSmooth(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(_this6.options.line.positions));\n };\n break;\n }\n }\n // originalPosition = this.cartesian3Towgs84(cartesian, this.sdk.viewer)\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n // if (selectPoint) {\n // let positions = [...this.options.line.positions]\n // selectPoint.position = Cesium.Cartesian3.fromDegrees(positions[selectPoint.index].lng, positions[selectPoint.index].lat, positions[selectPoint.index].alt)\n // computePositionsSmooth(positions)\n // }\n _this6.keyPointShow = false;\n YJ.Measure.SetMeasureStatus(false);\n _this6.event.destroy();\n _this6.tip && _this6.tip.destroy();\n _this6.tip = null;\n _this6.ControllerObject.destroy();\n });\n this.event.mouse_move(function (movement, cartesian) {\n // if (selectPoint) {\n // let positions = [...this.options.line.positions]\n // positions[selectPoint.index] = this.cartesian3Towgs84(cartesian, this.sdk.viewer)\n // selectPoint.position = cartesian\n // computePositionsSmooth(positions)\n // // that.options.positions[selectPoint.index] = that.cartesian3Towgs84(cartesian, that.sdk.viewer)\n // // let positions = that.options.positions\n // // let fromDegreesArray = []\n // // for (let i = 0; i < positions.length; i++) {\n // // fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt)\n // // }\n // // newpositions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n // // if (that.options.positions.length === 1) {\n // // that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.height]\n // // }\n // }\n _this6.tip && _this6.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.line.polyline.positions = new Cesium.CallbackProperty(function () {\n return linePositions;\n }, false);\n }\n // 显示关键点\n this.keyPointShow = v;\n } else {\n if (this.lineEdit) {\n YJ.Measure.SetMeasureStatus(false);\n this.event.destroy();\n this.tip && this.tip.destroy();\n this.tip = null;\n }\n // 隐藏关键点\n this.keyPointShow = v;\n this.ControllerObject.destroy();\n }\n _classPrivateFieldSet(_lineEdit, this, v);\n this._elms.lineEdit && this._elms.lineEdit.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"routeDirection\",\n get: function get() {\n return this.options.routeDirection;\n },\n set: function set(v) {\n this.options.routeDirection = v;\n this._elms.routeDirection && this._elms.routeDirection.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"loop\",\n get: function get() {\n return this.options.loop;\n },\n set: function set(v) {\n this.options.loop = v;\n if (v) {\n this.TweenAnimate.repeat(Infinity);\n } else {\n this.TweenAnimate.repeat();\n }\n this._elms.loop && this._elms.loop.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"firstPersonView\",\n get: function get() {\n return this.options.firstPersonView;\n },\n set: function set(v) {\n // this.state = true\n this.sdk.viewer._firstPersonView = v;\n this.options.firstPersonView = v;\n if (this.options.firstPersonView) {\n if (this._DialogObject && this._DialogObject._element.content) {\n var e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n e_firstPerson[0].className = 'btn is-active';\n e_firstPerson[1].className = 'btn';\n }\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n } else {\n if (this._DialogObject && this._DialogObject._element.content) {\n var _e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n if (_e_firstPerson[0] && _e_firstPerson[1]) {\n _e_firstPerson[0].className = 'btn';\n _e_firstPerson[1].className = 'btn is-active';\n }\n }\n if (this.viewFollow) {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n }\n var pointEntity = this.sdk.viewer.entities.add({\n // show: false,\n position: this.positions_smooth[0],\n // position of the point\n point: {\n color: Cesium.Color.RED.withAlpha(0),\n // color of the point\n pixelSize: 0\n }\n });\n this.sdk.viewer.trackedEntity = pointEntity;\n }\n }\n }\n }, {\n key: \"viewFollow\",\n get: function get() {\n return this.options.viewFollow;\n },\n set: function set(v) {\n this.options.viewFollow = v;\n if (!this.options.viewFollow) {\n this.firstPersonView = false;\n } else {\n this.lineEdit = false;\n }\n if (this.options.firstPersonView) {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n if (this._DialogObject && this._DialogObject._element.content) {\n var e_firstPerson = this._DialogObject._element.content.querySelectorAll(\"button[name='firstPerson']\");\n if (e_firstPerson[0] && e_firstPerson[1]) {\n e_firstPerson[0].className = 'btn';\n e_firstPerson[1].className = 'btn is-active';\n }\n }\n } else {\n if (this.sdk.viewer.trackedEntity) {\n this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity);\n this.sdk.viewer.trackedEntity = null;\n }\n if (v) {\n var pointEntity = this.sdk.viewer.entities.add({\n // show: false,\n position: this.current.position,\n // position of the point\n point: {\n color: Cesium.Color.RED.withAlpha(0),\n // color of the point\n pixelSize: 0\n }\n });\n this.sdk.viewer.trackedEntity = pointEntity;\n }\n }\n this._elms.viewFollow && this._elms.viewFollow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"moveCallBack\",\n value: function moveCallBack(that) {\n // if((that.lng || that.lng == 0) && (that.lat || that.lat == 0) && (that.alt || that.lat == 0)) {\n // this._initial.position = {\n // lng: that.lng,\n // lat: that.lat,\n // alt: that.alt,\n // }\n // }\n // if(that.rotateX || that.rotateX == 0 ) {\n // this._initial.pitch = that.rotateX\n // }\n // if(that.rotateY || that.rotateY == 0) {\n // this._initial.roll = that.rotateY\n // }\n // if(that.rotateZ || that.rotateZ == 0) {\n // this._initial.heading = that.rotateZ\n // }\n this.setPosition = that.setPosition.bind(that);\n }\n\n // get moveCallBack() {\n // return this.options.moveCallBack\n // }\n\n // set moveCallBack(v) {\n // this.options.moveCallBack = v\n // }\n }, {\n key: \"current\",\n get: function get() {\n return this._current;\n },\n set: function set(v) {\n this._current = v;\n var pos = this.cartesian3Towgs84(this._current.position, this.sdk.viewer);\n this.setPosition && this.setPosition(_objectSpread(_objectSpread({}, this._current), {}, {\n position: _objectSpread({}, pos)\n }));\n }\n\n // 创建路径\n }, {\n key: \"modelMove\",\n value: // 模型移动\n function () {\n var _modelMove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee3(positions) {\n var _this7 = this;\n var option,\n _this,\n time,\n startDistance,\n viewer,\n lineString,\n i,\n position,\n line,\n totalTime,\n lastDistance,\n motionArray,\n HeadingPitchRoll,\n HeadingPitchRoll2,\n previous,\n m,\n modelArray,\n _iterator,\n _step,\n _step$value,\n key,\n value,\n first,\n setPosition,\n _setPosition,\n getHeadingPitchRoll,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n getHeadingPitchRoll = function _getHeadingPitchRoll(pointA, pointB) {\n // console.log(distance, _this.cartesian3Towgs84(pointA, viewer), _this.cartesian3Towgs84(pointB, viewer))\n //建立以点A为原点,X轴为east,Y轴为north,Z轴朝上的坐标系\n var transform = Cesium.Transforms.eastNorthUpToFixedFrame(pointA);\n //向量AB\n if (!pointB) {\n return;\n }\n var positionvector = Cesium.Cartesian3.subtract(pointB, pointA, new Cesium.Cartesian3());\n //因transform是将A为原点的eastNorthUp坐标系中的点转换到世界坐标系的矩阵\n //AB为世界坐标中的向量\n //因此将AB向量转换为A原点坐标系中的向量,需乘以transform的逆矩阵。\n var vector = Cesium.Matrix4.multiplyByPointAsVector(Cesium.Matrix4.inverse(transform, new Cesium.Matrix4()), positionvector, new Cesium.Cartesian3());\n //归一化\n var direction = Cesium.Cartesian3.normalize(vector, new Cesium.Cartesian3());\n //heading\n var heading = Math.atan2(direction.y, direction.x) - Cesium.Math.PI_OVER_TWO;\n var pitch = Cesium.Math.PI_OVER_TWO - Cesium.Math.acosClamped(direction.z);\n var a = pitch * (180 / Math.PI);\n if (a < 0) {\n // a = (-a)\n }\n pitch = a * (Math.PI / 180);\n var roll = Cesium.Math.fastApproximateAtan2(direction.x, direction.z);\n // console.log({heading: heading * (180 / Math.PI), pitch: pitch * (180 / Math.PI), roll: roll * (180 / Math.PI)})\n return {\n heading: Cesium.Math.TWO_PI - Cesium.Math.zeroToTwoPi(heading),\n pitch: pitch,\n roll: roll\n };\n };\n _setPosition = function _setPosition3() {\n _setPosition = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee2(distance) {\n var start, stop, coordinates, sliced, _sliced, position, positionCamera, result, pos3, height2, position2, fromDegreesArray, _i3, cartesian3, positions_smooth, _i4, _cartesian, modeHeadingPitchRoll, heading, pitch, roll;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n start = 0;\n stop = distance;\n sliced = line;\n if (!stop) {\n _context2.next = 10;\n break;\n }\n _context2.next = 6;\n return turf.lineSliceAlong(line, start, stop, {\n units: 'kilometers'\n });\n case 6:\n _sliced = _context2.sent;\n // _this.realTimeRouteArray = sliced+\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(_sliced.geometry.coordinates[_sliced.geometry.coordinates.length - 1]);\n _context2.next = 11;\n break;\n case 10:\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(line.geometry.coordinates[0]);\n case 11:\n if (!_this.ground) {\n _context2.next = 38;\n break;\n }\n _context2.next = 14;\n return _this.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]), modelArray);\n case 14:\n result = _context2.sent;\n position = result;\n if (!position) {\n position = new Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1]);\n }\n pos3 = _this.cartesian3Towgs84(position, viewer);\n height2 = 0;\n _context2.prev = 19;\n _context2.next = 22;\n return Cesium.sampleTerrainMostDetailed(_this.sdk.viewer.scene.terrainProvider, [Cesium.Cartographic.fromDegrees(pos3.lng, pos3.lat)]);\n case 22:\n position2 = _context2.sent;\n height2 = position2[0].height;\n _context2.next = 29;\n break;\n case 26:\n _context2.prev = 26;\n _context2.t0 = _context2[\"catch\"](19);\n height2 = 0;\n case 29:\n if (pos3.alt < height2) {\n pos3.alt = height2;\n }\n pos3.alt = Number(pos3.alt.toFixed(1));\n position = Cesium.Cartesian3.fromDegrees(pos3.lng, pos3.lat, pos3.alt);\n positionCamera = Cesium.Cartesian3.fromDegrees(coordinates[0], coordinates[1], _this.cartesian3Towgs84(position, _this.sdk.viewer).alt + 1);\n fromDegreesArray = [];\n for (_i3 = 0; _i3 < sliced.geometry.coordinates.length; _i3++) {\n fromDegreesArray.push(sliced.geometry.coordinates[_i3][0], sliced.geometry.coordinates[_i3][1]);\n }\n _this.realTimePositions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray);\n // _this.realTimeLine.polyline.positions = \n _context2.next = 54;\n break;\n case 38:\n cartesian3 = _this.spline.evaluate(distance / _this.distance);\n coordinates = _this.cartesian3Towgs84(cartesian3, viewer);\n position = Cesium.Cartesian3.fromDegrees(coordinates.lng, coordinates.lat, coordinates.alt);\n positionCamera = Cesium.Cartesian3.fromDegrees(coordinates.lng, coordinates.lat, coordinates.alt + 1);\n positions_smooth = [];\n _i4 = 0;\n case 44:\n if (!(_i4 <= 100)) {\n _context2.next = 52;\n break;\n }\n if (!(_i4 / 100 > distance / _this.distance)) {\n _context2.next = 47;\n break;\n }\n return _context2.abrupt(\"break\", 52);\n case 47:\n _cartesian = _this.spline.evaluate(_i4 / 100);\n positions_smooth.push(_cartesian);\n case 49:\n _i4++;\n _context2.next = 44;\n break;\n case 52:\n positions_smooth.push(cartesian3);\n _this.realTimePositions = positions_smooth;\n case 54:\n HeadingPitchRoll = getHeadingPitchRoll(_this.current.position, position);\n if (previous && previous.position) {\n HeadingPitchRoll2 = getHeadingPitchRoll(previous.position, position);\n HeadingPitchRoll.pitch = HeadingPitchRoll2.pitch;\n }\n previous.position = _this.current.position;\n modeHeadingPitchRoll = Cesium.HeadingPitchRoll.fromDegrees(_this.current.heading, _this.current.pitch, _this.current.roll);\n heading = 0;\n pitch = 0;\n roll = 0;\n if (_this.options.routeDirection) {\n heading = (HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI) - 90 + _this.current.heading;\n pitch = HeadingPitchRoll.pitch * (180 / Math.PI);\n } else {\n heading = _this.current.heading;\n pitch = _this.current.pitch;\n }\n roll = _this.current.roll;\n // console.log((HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI))\n if (!(isNaN(heading) || isNaN(pitch) || isNaN(roll))) {\n _context2.next = 65;\n break;\n }\n return _context2.abrupt(\"return\");\n case 65:\n if (heading < 0 || heading > 180) {\n pitch = -pitch;\n }\n _this.current = {\n position: position,\n heading: heading,\n pitch: pitch,\n roll: roll\n };\n if (first) {\n first = false;\n _this._first = {\n position: position,\n heading: heading,\n pitch: pitch,\n roll: roll\n };\n }\n lastDistance = distance;\n // console.log(position)\n _this.realTimeRouteArray.push(position);\n if (_this.viewFollow) {\n // console.log(heading)\n if (_this.options.firstPersonView) {\n _this.sdk.viewer.camera.setView({\n destination: positionCamera,\n orientation: {\n heading: _this.sdk.viewer.camera.heading,\n pitch: _this.sdk.viewer.camera.pitch,\n roll: _this.sdk.viewer.camera.roll\n }\n });\n } else {\n if (_this.sdk.viewer.trackedEntity) {\n _this.sdk.viewer.trackedEntity.position = position;\n // _this.sdk.viewer.camera.position = position\n }\n }\n }\n case 71:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[19, 26]]);\n }));\n return _setPosition.apply(this, arguments);\n };\n setPosition = function _setPosition2(_x4) {\n return _setPosition.apply(this, arguments);\n };\n option = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {\n time: 0\n };\n _this = this;\n time = option.time || 0;\n startDistance = option.distance || 0;\n viewer = this.sdk.viewer;\n this.removeModelAnimate();\n lineString = [];\n for (i = 0; i < positions.length; i++) {\n position = this.cartesian3Towgs84(positions[i], viewer);\n lineString.push([position.lng, position.lat, position.alt]);\n }\n // console.log(lineString)\n line = turf.lineString(lineString);\n this.distance = turf.length(line, {\n units: 'kilometers'\n });\n if (!this.totalTime) {\n this.totalTime = this.distance * 1000 / this.options.speed; // 总耗时(秒)\n }\n totalTime = this.totalTime;\n if (time) {\n if (time > totalTime) {\n time = totalTime;\n }\n startDistance = time / totalTime * this.distance;\n } else {\n // this._initial.position && (this._current.position = this.positions_smooth[0])\n // if(this._initial.pitch || this._initial.pitch === 0) {\n // this._current.pitch = this._initial.pitch\n // }\n // if(this._initial.roll || this._initial.roll === 0) {\n // this._current.roll = this._initial.roll\n // }\n // if(this._initial.heading || this._initial.heading === 0) {\n // this._current.heading = this._initial.heading\n // }\n }\n lastDistance = 0;\n motionArray = [];\n previous = {};\n m = 0;\n modelArray = [];\n _iterator = _createForOfIteratorHelper(this.sdk.entityMap);\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2), key = _step$value[0], value = _step$value[1];\n if (value.type && value.type === 'glb') {\n modelArray.push(value.entity);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n first = true;\n this.TweenAnimate = new TWEEN.Tween({\n distance: startDistance\n }).to({\n distance: this.distance\n }, (totalTime - time) * 1000).delay(this.delay).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop ? Infinity : 0).onRepeat(function () {\n if (time) {\n _this7.modelMove(positions);\n }\n }).onUpdate(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(_this7.TweenAnimate._duration == Infinity)) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n m++;\n if (_this7.sdk.viewer) {\n _context.next = 6;\n break;\n }\n _this7.removeModelAnimate();\n return _context.abrupt(\"return\");\n case 6:\n setPosition(r.distance);\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }()).onEveryStart(function () {\n _this7.realTimeRouteArray = [];\n }).onComplete(function (d) {\n _this7.state = false;\n _this7.removeModelAnimate();\n // let runtimeAnimation = this.model._activeAnimations._runtimeAnimations\n // // let animations = await this.model.readyPromise\n // for (let i = runtimeAnimation.length - 1; i >= 0; i--) {\n // switch (runtimeAnimation[i].name) {\n // case '跑':\n // this.model.activeAnimations.remove(runtimeAnimation[i])\n // break;\n // default:\n // }\n // }\n });\n if (this.state) {\n this.TweenAnimate.start();\n } else {\n setPosition(startDistance);\n }\n\n // function executeAnimate() {\n // }\n // setTimeout(() => {\n // let i = 0\n // function animate() {\n // if (i < motionArray.length) {\n // let result = motionArray[i].result;\n // console.log(result)\n // result.then((res) => {\n // let position = Cesium.Cartesian3.fromDegrees(motionArray[i].lng, motionArray[i].lat, res[0].height)\n\n // let HeadingPitchRoll = getHeadingPitchRoll(_this.model.position, position)\n // let modeHeadingPitchRoll = Cesium.HeadingPitchRoll.fromDegrees(_this.options.model.heading, _this.options.model.pitch, _this.options.model.roll)\n // let heading = 0\n // let pitch = 0\n // let roll = 0\n // if (_this.options.routeDirection) {\n // heading = (HeadingPitchRoll.heading - modeHeadingPitchRoll.heading) * (180 / Math.PI) - 90\n // pitch = (HeadingPitchRoll.pitch - modeHeadingPitchRoll.pitch) * (180 / Math.PI)\n // }\n // else {\n // heading = - _this.options.model.heading\n // pitch = - _this.options.model.pitch\n // }\n // roll = - _this.options.model.roll\n // // console.log(heading)\n // let matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position)\n // _this.model.modelMatrix = Cesium.Matrix4.multiplyByMatrix3(matrix, Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(heading, pitch, roll)), _this.model.modelMatrix)\n // _this.model.position = position\n // if (_this.sdk.viewer.trackedEntity) {\n // _this.sdk.viewer.trackedEntity.position = position\n // }\n // i++\n // requestAnimationFrame(animate);\n // })\n\n // }\n\n // }\n // animate();\n // }, 2000);\n\n // 根据两个坐标点,获取Heading(朝向)\n case 26:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function modelMove(_x) {\n return _modelMove.apply(this, arguments);\n }\n return modelMove;\n }()\n }, {\n key: \"setMovePositionByDistance\",\n value: function setMovePositionByDistance(distance) {\n var positions_smooth = this._renewLine(this.options.line.positions);\n this.modelMove(positions_smooth, {\n distance: distance\n });\n }\n }, {\n key: \"setMovePositionByTime\",\n value: function setMovePositionByTime(time) {\n var positions_smooth = this._renewLine(this.options.line.positions);\n this.modelMove(positions_smooth, {\n time: time\n });\n if (!this.state) {\n this.modelMove(positions_smooth, {\n time: time + 0.01\n });\n }\n }\n\n // 暂停\n }, {\n key: \"pause\",\n value: function pause() {\n this.state = false;\n }\n\n // 继续\n }, {\n key: \"resume\",\n value: function resume() {\n this.state = true;\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee4() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n options = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"closeRotateAround\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context4.next = 22;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n position = _objectSpread({}, this.options.line.positions[0]);\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context4.next = 15;\n break;\n }\n _context4.next = 14;\n return this.getClampToHeight(position);\n case 14:\n position.alt = _context4.sent;\n case 15:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context4.next = 23;\n break;\n case 22:\n this.line && this.sdk.viewer.flyTo(this.line, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 23:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"remove\",\n value: function remove() {\n // this.sdk.viewer.scene.primitives.remove(this.model)\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.sdk.viewer.entities.remove(this.line);\n this.line = null;\n this.removeModelAnimate();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.modelMove(this.line.polyline.positions._value);\n this.state = false;\n this.current = this._first;\n }\n\n // viewFollow(e) {\n // if (e.target.checked) {\n // var pointEntity = this.sdk.viewer.entities.add({\n // // show: false,\n // position: this.positions_smooth[0], // position of the point\n // point: {\n // color: Cesium.Color.RED.withAlpha(0), // color of the point\n // pixelSize: 0\n // }\n // });\n // this.sdk.viewer.trackedEntity = pointEntity;\n // }\n // else {\n // this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity)\n // this.sdk.viewer.trackedEntity = null\n // }\n // }\n\n // 移除动画\n }, {\n key: \"removeModelAnimate\",\n value: function removeModelAnimate() {\n if (this.TweenAnimate) {\n clearTimeout(this.TweenAnimate.timeout);\n TWEEN.remove(this.TweenAnimate);\n this.TweenAnimate = null;\n }\n // if (modelPrimitive && modelPrimitive._activeAnimations && modelPrimitive._activeAnimations._runtimeAnimations) {\n // let runtimeAnimation = modelPrimitive._activeAnimations._runtimeAnimations\n // for (let i = runtimeAnimation.length - 1; i >= 0; i--) {\n // switch (runtimeAnimation[i].name) {\n // case '跑':\n // modelPrimitive.activeAnimations.remove(runtimeAnimation[i])\n // break;\n // default:\n // }\n // }\n // }\n }\n }, {\n key: \"_renewLine\",\n value: function _renewLine(pos) {\n this.options.line.positions = pos;\n var positions = pos;\n if (this.noseToTail) {\n positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(pos), [pos[0]]);\n }\n var fromDegreesArrayHeights = [];\n var time = [];\n var positions_smooth = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n time.push(i / (positions.length - 1));\n }\n if (this.smooth) {\n this.spline = new Cesium.CatmullRomSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n } else {\n this.spline = new Cesium.LinearSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n }\n for (var _i5 = 0; _i5 <= 100; _i5++) {\n var cartesian3 = this.spline.evaluate(_i5 / 100);\n positions_smooth.push(cartesian3);\n }\n this.positions_smooth = positions_smooth;\n return positions_smooth;\n }\n // 更新坐标\n }, {\n key: \"renewLinePositions\",\n value: function renewLinePositions(pos) {\n this.options.line.positions = pos;\n var positions = pos;\n if (this.noseToTail) {\n positions = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default()(pos), [pos[0]]);\n }\n var fromDegreesArrayHeights = [];\n var time = [];\n var positions_smooth = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt);\n time.push(i / (positions.length - 1));\n }\n if (this.smooth) {\n this.spline = new Cesium.CatmullRomSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n } else {\n this.spline = new Cesium.LinearSpline({\n times: time,\n points: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n });\n }\n for (var _i6 = 0; _i6 <= 100; _i6++) {\n var cartesian3 = this.spline.evaluate(_i6 / 100);\n positions_smooth.push(cartesian3);\n }\n this.positions_smooth = positions_smooth;\n if (this.line && this.line.polyline) {\n this.line.polyline.positions = positions_smooth;\n }\n return positions_smooth;\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"addLine\",\n value: function addLine(that) {\n var positions_smooth = that._renewLine(that.options.line.positions);\n that.current.position = positions_smooth[0];\n that.line = that.sdk.viewer.entities.add({\n id: that.options.id + '-2',\n show: that.options.show ? that.options.line.show : false,\n polyline: {\n positions: positions_smooth,\n width: 2,\n clampToGround: that.ground,\n material: Cesium.Color.fromCssColorString('#ffffff'),\n zIndex: that.sdk._entityZIndex\n }\n });\n that.realTimeLine = that.sdk.viewer.entities.add({\n id: that.options.id + '-3',\n show: that.options.realTimeRoute ? that.options.realTimeRoute : false,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.realTimePositions;\n }, false),\n width: 2,\n clampToGround: that.ground,\n zIndex: that.sdk._entityZIndex,\n material: Cesium.Color.fromCssColorString('#ff0000')\n }\n });\n that.sdk._entityZIndex++;\n var event = new _Event_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"](that.sdk);\n event.mouse_right(function (movement, cartesian) {\n that.viewFollow = false;\n });\n TrajectoryMotionObject.addKeyPoint(that);\n that.noseToTail = that.options.line.noseToTail;\n that.smooth = that.options.line.smooth;\n }\n // 创建模型\n }, {\n key: \"addModel\",\n value: function addModel(that) {\n // that.model = that.sdk.viewer.scene.primitives.add(\n // Cesium.Model.fromGltf({\n // id: that.options.id,\n // url: that.options.model.url,\n // show: that.options.show ? that.options.model.show : false,\n // scale: that.options.model.scale,\n // // minimumPixelSize: that.options.model.pixelSize,\n // // maximumScale: 100000,\n // // allowPicking: false\n // })\n // );\n\n // let cartographic = Cesium.Cartographic.fromDegrees(103, 65, 100);\n // let position = that.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic);\n // // 设置模型的旋转角度,使其水平放置于地面\n // let matrix = Cesium.Transforms.eastNorthUpToFixedFrame(that.positions_smooth[0])\n // that.model.modelMatrix = matrix\n // that.model.position = that.positions_smooth[0]\n // // 模型大小比例\n // // Cesium.Matrix4.multiplyByScale(matrix, new Cesium.Cartesian3(0.1, 0.1, 0.1), this.entity.modelMatrix)\n\n // let positions = that.options.line.positions\n // let fromDegreesArrayHeights = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArrayHeights.push(positions[i].lng, positions[i].lat, positions[i].alt)\n // }\n // let pos = that.smooth ? that.positions_smooth : Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights)\n // that.modelMove(pos)\n\n // that.model.readyPromise.then(() => {\n // that.modelAnimate = that.options.model.animate\n // })\n // that.entity = that.model\n }\n\n // 创建关键点\n }, {\n key: \"addKeyPoint\",\n value: function () {\n var _addKeyPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.mark(function _callee5(that) {\n var i, height, result, entity;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n i = 0;\n case 1:\n if (!(i < that.options.line.positions.length)) {\n _context5.next = 13;\n break;\n }\n _context5.next = 4;\n return that.getClampToHeight(that.options.line.positions[i]);\n case 4:\n height = _context5.sent;\n _context5.next = 7;\n return Cesium.Cartesian3.fromDegrees(that.options.line.positions[i].lng, that.options.line.positions[i].lat, height);\n case 7:\n result = _context5.sent;\n entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n show: that.options.line.keyPoint || false,\n position: that.ground ? result : Cesium.Cartesian3.fromDegrees(that.options.line.positions[i].lng, that.options.line.positions[i].lat, that.options.line.positions[i].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.keyPoints.push(entity);\n case 10:\n i++;\n _context5.next = 1;\n break;\n case 13:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function addKeyPoint(_x5) {\n return _addKeyPoint.apply(this, arguments);\n }\n return addKeyPoint;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (TrajectoryMotionObject);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVHJhamVjdG9yeU1vdGlvbk9iamVjdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9UcmFqZWN0b3J5TW90aW9uT2JqZWN0L2luZGV4LmpzP2NmMjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZy9ldmVudEJpbmRpbmcnO1xyXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCIuLi8uLi8uLi9Db250cm9sbGVyL2luZGV4XCI7XHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBUcmFqZWN0b3J5TW90aW9uT2JqZWN0IGV4dGVuZHMgQmFzZSB7XHJcbiAgI2xpbmVFZGl0ID0gZmFsc2VcclxuICAvKipcclxuICogQGNvbnN0cnVjdG9yXHJcbiAqIEBkZXNjcmlwdGlvbiDovajov7nov5DliqhcclxuICogQHBhcmFtIG9wdGlvbnMge29iamVjdH1cclxuICogQHBhcmFtIG9wdGlvbnMubmFtZSB7c3RyaW5nfSDlkI3np7BcclxuICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MSB7bnVtYmVyfSDov5DooYzpgJ/luqYo57GzL+avj+enkilcclxuICogQHBhcmFtIG9wdGlvbnMuZGVsYXk9MCB7bnVtYmVyfSDov5Dliqjlu7bov5/ml7bpl7Qo5q+r56eSKVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5sb29wPXRydWUge2Jvb2xlYW59IOW+queOr1xyXG4gKiBAcGFyYW0gb3B0aW9ucy5oZWlnaHQge251bWJlcn0g6LW35aeL54K56auY5bqmXHJcbiAqIEBwYXJhbSBvcHRpb25zLmdyb3VuZD1mYWxzZSB7Ym9vbGVhbn0g6LS05ZywXHJcbiAqIEBwYXJhbSBvcHRpb25zLnN0YXRlPXRydWUge2Jvb2xlYW59IOaooeWei+i/kOWKqFxyXG4gKiBAcGFyYW0gb3B0aW9ucy5yb3V0ZURpcmVjdGlvbj10cnVlIHtib29sZWFufSDot6/lvoTmlrnlkJFcclxuICogQHBhcmFtIG9wdGlvbnMudmlld0ZvbGxvdz1mYWxzZSB7Ym9vbGVhbn0g6KeG6KeS6Lef6ZqPXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxpbmUge29iamVjdH0g6Lev5b6E5Y+C5pWwXHJcbiAqIEBwYXJhbSBvcHRpb25zLmxpbmUuc2hvdz10cnVlIHtib29sZWFufSDot6/lvoTmmL7pmpBcclxuICogQHBhcmFtIG9wdGlvbnMubGluZS5zbW9vdGg9ZmFsc2Uge2Jvb2xlYW59IOi3r+W+hOWchua7kVxyXG4gKiBAcGFyYW0gb3B0aW9ucy5saW5lLm5vc2VUb1RhaWw9ZmFsc2Uge2Jvb2xlYW59IOi3r+W+hOaUtuWwvuebuOiBlFxyXG4gKiBAcGFyYW0ge0FycmF5LjxvYmplY3Q+fSBvcHRpb25zLmxpbmUucG9zaXRpb25zIOe7j+e6rOW6puWSjOmrmOW6pueahOWIl+ihqO+8jOWAvOS6pOabvyBbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAqIEBwYXJhbSBfRGlhbG9nIHtvYmplY3R9IOW8ueahhuS6i+S7tlxyXG4gKiBAcGFyYW0gX0RpYWxvZy5jb25maXJtQ2FsbEJhY2sge2Z1bmN0aW9ufSDlvLnmoYbnoa7orqTml7bnmoTlm57osINcclxuICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgJydcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IChvcHRpb25zLnNwZWVkIHx8IG9wdGlvbnMuc3BlZWQgPT09IDApID8gb3B0aW9ucy5zcGVlZCA6IDFcclxuICAgIHRoaXMub3B0aW9ucy50b3RhbFRpbWUgPSBvcHRpb25zLnRvdGFsVGltZVxyXG4gICAgaWYob3B0aW9ucy50b3RhbFRpbWUgfHwgb3B0aW9ucy50b3RhbFRpbWU9PT0wKSB7XHJcbiAgICAgIHRoaXMudG90YWxUaW1lID0gb3B0aW9ucy50b3RhbFRpbWVcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5kZWxheSA9IG9wdGlvbnMuZGVsYXkgfHwgMFxyXG4gICAgdGhpcy5vcHRpb25zLmxvb3AgPSBvcHRpb25zLmxvb3AgfHwgb3B0aW9ucy5sb29wID09PSBmYWxzZSA/IG9wdGlvbnMubG9vcCA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5saW5lID0gb3B0aW9ucy5saW5lID0gb3B0aW9ucy5saW5lIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMgPSBvcHRpb25zLmxpbmUucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuaGVpZ2h0ID0gKG9wdGlvbnMuaGVpZ2h0IHx8IG9wdGlvbnMuaGVpZ2h0ID09PSAwKSA/IG9wdGlvbnMuaGVpZ2h0IDogKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1swXSA/IHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1swXS5hbHQgOiAwKVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUuc2hvdyA9IG9wdGlvbnMubGluZS5zaG93IHx8IG9wdGlvbnMubGluZS5zaG93ID09PSBmYWxzZSA/IG9wdGlvbnMubGluZS5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUuc21vb3RoID0gb3B0aW9ucy5saW5lLnNtb290aCA/IG9wdGlvbnMubGluZS5zbW9vdGggOiBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUubm9zZVRvVGFpbCA9IG9wdGlvbnMubGluZS5ub3NlVG9UYWlsID8gb3B0aW9ucy5saW5lLm5vc2VUb1RhaWwgOiBmYWxzZVxyXG4gICAgdGhpcy5wb3NpdGlvbnNfc21vb3RoID0gW11cclxuICAgIHRoaXMub3B0aW9ucy5ncm91bmQgPSBvcHRpb25zLmdyb3VuZCB8fCBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLnN0YXRlID0gKG9wdGlvbnMuc3RhdGUgfHwgb3B0aW9ucy5zdGF0ZSA9PT0gZmFsc2UpID8gb3B0aW9ucy5zdGF0ZSA6IHRydWVcclxuICAgIHRoaXMub3B0aW9ucy5yb3V0ZURpcmVjdGlvbiA9IChvcHRpb25zLnJvdXRlRGlyZWN0aW9uIHx8IG9wdGlvbnMucm91dGVEaXJlY3Rpb24gPT09IGZhbHNlKSA/IG9wdGlvbnMucm91dGVEaXJlY3Rpb24gOiB0cnVlXHJcbiAgICB0aGlzLmtleVBvaW50cyA9IFtdXHJcbiAgICB0aGlzLnJlYWxUaW1lUG9zaXRpb25zID0gW11cclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5yZWFsVGltZVJvdXRlQXJyYXkgPSBbXVxyXG4gICAgLy8gdGhpcy5faW5pdGlhbCA9IHt9XHJcbiAgICB0aGlzLl9jdXJyZW50ID0ge1xyXG4gICAgICBoZWFkaW5nOiAwLFxyXG4gICAgICBwaXRjaDogMCxcclxuICAgICAgcm9sbDogMFxyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmZpcnN0UGVyc29uID0gZmFsc2VcclxuICAgIHRoaXMuZGlzdGFuY2VcclxuICAgIC8vIHRoaXMuYWRkTW9kZWwoKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICfmnIDlsJHpnIDopoHkuKTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5fZXJyb3IsXHJcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdCA9IG5ldyBDb250cm9sbGVyKHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcgPSBuZXcgRXZlbnRCaW5kaW5nKClcclxuICAgICAgVHJhamVjdG9yeU1vdGlvbk9iamVjdC5hZGRMaW5lKHRoaXMpXHJcbiAgICAgIHRoaXMuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdGb2xsb3cgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFuaW1hdGVVcGRhdGUoKVxyXG4gICAgLy8gZnVuY3Rpb24gYW5pbWF0ZVVwZGF0ZSgpIHtcclxuICAgIC8vICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVVcGRhdGUpO1xyXG4gICAgLy8gICBUV0VFTi51cGRhdGUoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGdldCB0eXBlKCkge1xyXG4gICAgcmV0dXJuICdUcmFqZWN0b3J5TW90aW9uT2JqZWN0J1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcblxyXG4gIHNldCBzaG93KHYpIHtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgdGhpcy5saW5lLnNob3cgPSB0aGlzLmxpbmVTaG93XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5rZXlQb2ludHNbaV0uc2hvdyA9IHRoaXMua2V5UG9pbnRTaG93XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGluZS5zaG93ID0gdlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5rZXlQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMua2V5UG9pbnRzW2ldLnNob3cgPSB2XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnNob3dCdG4pIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bi5jaGVja2VkID0gdlxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG4gIHNldCBoZWlnaHQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IHZcclxuICAgIGlmICh0aGlzLmxpbmUpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdW5kKSB7XHJcbiAgICAgICAgdGhpcy5saW5lLnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSB0cnVlXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHRNb3N0RGV0YWlsZWQoW25ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubGF0KV0pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmtleVBvaW50c1tpXS5wb3NpdGlvbiA9IHJlc3VsdFswXVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGR2YWx1ZSA9IHRoaXMub3B0aW9ucy5oZWlnaHQgLSB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgICAgdGhpcy5saW5lLnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSBmYWxzZVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5rZXlQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5hbHQgKz0gZHZhbHVlXHJcbiAgICAgICAgICB0aGlzLmtleVBvaW50c1tpXS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sYXQsIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoaXMuX3JlbmV3TGluZSh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLmxpbmUucG9seWxpbmUucG9zaXRpb25zID0gcG9zaXRpb25zX3Ntb290aFxyXG4gICAgdGhpcy5fZWxtcy5oZWlnaHQgJiYgdGhpcy5fZWxtcy5oZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBncm91bmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdyb3VuZFxyXG4gIH1cclxuICBzZXQgZ3JvdW5kKHYpIHtcclxuICAgIHRoaXMubGluZUVkaXQgPSBmYWxzZVxyXG4gICAgdGhpcy5vcHRpb25zLmdyb3VuZCA9IHZcclxuICAgIHRoaXMucmVhbFRpbWVMaW5lLnBvbHlsaW5lLmNsYW1wVG9Hcm91bmQgPSB2XHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgIHRoaXMuX2VsbXMuZ3JvdW5kICYmIHRoaXMuX2VsbXMuZ3JvdW5kLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzcGVlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3BlZWRcclxuICB9XHJcbiAgc2V0IHNwZWVkKHYpIHtcclxuICAgIGlmICh2IDw9IDApIHtcclxuICAgICAgdiA9IDAuMDFcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9IHZcclxuICAgIGlmICh0aGlzLmRpc3RhbmNlIHx8IHRoaXMuZGlzdGFuY2UgPT09IDApIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnRvdGFsVGltZSA9ICh0aGlzLmRpc3RhbmNlKjEwMDApIC8gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgICAgIC8vIHRoaXMuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UvdGhpcy5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZVxyXG4gICAgICBpZih0aGlzLlR3ZWVuQW5pbWF0ZSAmJiB0aGlzLnN0YXRlKSB7XHJcbiAgICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUgJiYgKHRoaXMuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSh0aGlzLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9lbG1zLnNwZWVkICYmIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2VsbXMudG90YWxUaW1lICYmIHRoaXMuX2VsbXMudG90YWxUaW1lLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnRvdGFsVGltZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCB0b3RhbFRpbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRvdGFsVGltZVxyXG4gIH1cclxuICBzZXQgdG90YWxUaW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50b3RhbFRpbWUgPSB2XHJcbiAgICBpZiAodGhpcy5kaXN0YW5jZSB8fCB0aGlzLmRpc3RhbmNlID09PSAwKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zcGVlZCA9ICh0aGlzLmRpc3RhbmNlKjEwMDApIC8gdGhpcy5vcHRpb25zLnRvdGFsVGltZVxyXG4gICAgICB0aGlzLlR3ZWVuQW5pbWF0ZSAmJiAodGhpcy5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKHRoaXMuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpKVxyXG4gICAgICB0aGlzLl9lbG1zLnRvdGFsVGltZSAmJiB0aGlzLl9lbG1zLnRvdGFsVGltZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fZWxtcy5zcGVlZCAmJiB0aGlzLl9lbG1zLnNwZWVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHNtb290aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5zbW9vdGhcclxuICB9XHJcbiAgc2V0IHNtb290aCh2KSB7XHJcbiAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLnNtb290aCA9IHZcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLl9yZW5ld0xpbmUodGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zKVxyXG4gICAgdGhpcy5saW5lLnBvbHlsaW5lLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xyXG4gICAgdGhpcy5tb2RlbE1vdmUocG9zaXRpb25zKVxyXG4gICAgdGhpcy5fZWxtcy5zbW9vdGggJiYgdGhpcy5fZWxtcy5zbW9vdGguZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGRlbGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kZWxheVxyXG4gIH1cclxuICBzZXQgZGVsYXkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmRlbGF5ID0gdlxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLmRlbGF5KHRoaXMuZGVsYXkpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmRlbGF5ICYmIHRoaXMuX2VsbXMuZGVsYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc3RhdGVcclxuICB9XHJcbiAgc2V0IHN0YXRlKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zdGF0ZSA9IHZcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0T2JqKSB7XHJcbiAgICAgIHRoaXMuZWRpdE9iai5kZXN0cm95KClcclxuICAgICAgdGhpcy5lZGl0T2JqID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHRoaXMuc3BlZWRcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5wYXVzZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodikge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLl9yZW5ld0xpbmUodGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zKVxyXG4gICAgICAgIHRoaXMubW9kZWxNb3ZlKHBvc2l0aW9ucylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5zdGF0ZSAmJiB0aGlzLl9lbG1zLnN0YXRlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBub3NlVG9UYWlsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5saW5lLm5vc2VUb1RhaWxcclxuICB9XHJcbiAgc2V0IG5vc2VUb1RhaWwodikge1xyXG4gICAgdGhpcy5saW5lRWRpdCA9IGZhbHNlXHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5ub3NlVG9UYWlsID0gdlxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2godGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxuZywgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmxhdCwgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW2ldLmFsdClcclxuICAgIH1cclxuICAgIGxldCBub3Ntb290aCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgaWYgKHRoaXMubGluZSkge1xyXG4gICAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoaXMuX3JlbmV3TGluZSh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICAgIHRoaXMubGluZS5wb2x5bGluZS5wb3NpdGlvbnMgPSBwb3NpdGlvbnNfc21vb3RoXHJcbiAgICAgIHRoaXMubW9kZWxNb3ZlKHBvc2l0aW9uc19zbW9vdGgpXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLm5vc2VUb1RhaWwgJiYgdGhpcy5fZWxtcy5ub3NlVG9UYWlsLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsaW5lU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5zaG93XHJcbiAgfVxyXG4gIHNldCBsaW5lU2hvdyh2KSB7XHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLnJlYWxUaW1lUm91dGUgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLmxpbmUgJiYgdGhpcy5zaG93KSB7XHJcbiAgICAgIHRoaXMubGluZS5zaG93ID0gdlxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5saW5lU2hvdyAmJiB0aGlzLl9lbG1zLmxpbmVTaG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCByZWFsVGltZVJvdXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZWFsVGltZVJvdXRlXHJcbiAgfVxyXG4gIHNldCByZWFsVGltZVJvdXRlKHYpIHtcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMubGluZVNob3cgPSBmYWxzZVxyXG4gICAgICB0aGlzLmtleVBvaW50U2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMucmVhbFRpbWVSb3V0ZSA9IHZcclxuICAgIGlmICh0aGlzLnJlYWxUaW1lTGluZSAmJiB0aGlzLnNob3cpIHtcclxuICAgICAgdGhpcy5yZWFsVGltZUxpbmUuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMucmVhbFRpbWVSb3V0ZSAmJiB0aGlzLl9lbG1zLnJlYWxUaW1lUm91dGUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGtleVBvaW50U2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGluZS5rZXlQb2ludFxyXG4gIH1cclxuICBzZXQga2V5UG9pbnRTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5saW5lLmtleVBvaW50ID0gdlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5zaG93KSB7XHJcbiAgICAgICAgdGhpcy5rZXlQb2ludHNbaV0uc2hvdyA9IHZcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5rZXlQb2ludFNob3cgJiYgdGhpcy5fZWxtcy5rZXlQb2ludFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gICAgaWYgKCF2ICYmIHRoaXMubGluZUVkaXQpIHtcclxuICAgICAgLy8g5YWz6Zet57q/57yW6L6RXHJcbiAgICAgIHRoaXMuI2xpbmVFZGl0ID0gdlxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0ICYmIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgICB0aGlzLl9lbG1zLmxpbmVFZGl0ICYmIHRoaXMuX2VsbXMubGluZUVkaXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaW5lRWRpdCgpIHtcclxuICAgIHJldHVybiB0aGlzLiNsaW5lRWRpdFxyXG4gIH1cclxuXHJcbiAgc2V0IGxpbmVFZGl0KHYpIHtcclxuICAgIGxldCBsaW5lUG9zaXRpb25zID0gW11cclxuICAgIGxldCBjb21wdXRlUG9zaXRpb25zU21vb3RoID0gKHBvc2l0aW9ucykgPT4ge1xyXG4gICAgICBsaW5lUG9zaXRpb25zID0gdGhpcy5fcmVuZXdMaW5lKHBvc2l0aW9ucylcclxuICAgICAgdGhpcy5tb2RlbE1vdmUobGluZVBvc2l0aW9ucylcclxuICAgIH1cclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMudmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2Fybign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgICAgICB0aGlzLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5zbW9vdGggPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgICAgbGV0IHNlbGVjdFBvaW50XHJcbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uc1Ntb290aChbLi4udGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zXSlcclxuICAgICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGxldCBwaWNrID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmtleVBvaW50c1tpXS5pZCA9PT0gcGljay5pZC5pZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5rZXlQb2ludHNbaV0uc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHBpY2suaWRcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF1cclxuICAgICAgICAgICAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5lZGl0VHJhbnNsYXRpb25hbCgpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmNvbnRyb2xsZXJDYWxsQmFjayA9IChwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3BhcmFtcycsIHBhcmFtcylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHBhcmFtcy5wb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RQb2ludC5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBhcmFtcy5wb3NpdGlvbi5sbmcsIHBhcmFtcy5wb3NpdGlvbi5sYXQsIHBhcmFtcy5wb3NpdGlvbi5hbHQpXHJcbiAgICAgICAgICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnNTbW9vdGgoWy4uLnRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc10pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBvcmlnaW5hbFBvc2l0aW9uID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIC8vIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgLy8gICBsZXQgcG9zaXRpb25zID0gWy4uLnRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc11cclxuICAgICAgICAgIC8vICAgc2VsZWN0UG9pbnQucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxuZywgcG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sYXQsIHBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0KVxyXG4gICAgICAgICAgLy8gICBjb21wdXRlUG9zaXRpb25zU21vb3RoKHBvc2l0aW9ucylcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMua2V5UG9pbnRTaG93ID0gZmFsc2VcclxuICAgICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICAgIHRoaXMudGlwID0gbnVsbFxyXG4gICAgICAgICAgdGhpcy5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAvLyBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgIC8vICAgbGV0IHBvc2l0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNdXHJcbiAgICAgICAgICAvLyAgIHBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgICAgICAgLy8gICBzZWxlY3RQb2ludC5wb3NpdGlvbiA9IGNhcnRlc2lhblxyXG4gICAgICAgICAgLy8gICBjb21wdXRlUG9zaXRpb25zU21vb3RoKHBvc2l0aW9ucylcclxuICAgICAgICAgIC8vICAgLy8gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgLy8gICAvLyBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgICAgICAgLy8gICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAvLyAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAvLyAgIC8vICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgICAgICAvLyAgIC8vIH1cclxuICAgICAgICAgIC8vICAgLy8gbmV3cG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgIC8vICAgLy8gaWYgKHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAvLyAgIC8vICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoYXQub3B0aW9ucy5oZWlnaHRdXHJcbiAgICAgICAgICAvLyAgIC8vIH1cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMudGlwICYmIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubGluZS5wb2x5bGluZS5wb3NpdGlvbnMgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIGxpbmVQb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgfVxyXG4gICAgICAvLyDmmL7npLrlhbPplK7ngrlcclxuICAgICAgdGhpcy5rZXlQb2ludFNob3cgPSB2XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubGluZUVkaXQpIHtcclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICB0aGlzLnRpcCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICAvLyDpmpDol4/lhbPplK7ngrlcclxuICAgICAgdGhpcy5rZXlQb2ludFNob3cgPSB2XHJcbiAgICAgIHRoaXMuQ29udHJvbGxlck9iamVjdC5kZXN0cm95KClcclxuICAgIH1cclxuICAgIHRoaXMuI2xpbmVFZGl0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5saW5lRWRpdCAmJiB0aGlzLl9lbG1zLmxpbmVFZGl0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCByb3V0ZURpcmVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucm91dGVEaXJlY3Rpb25cclxuICB9XHJcbiAgc2V0IHJvdXRlRGlyZWN0aW9uKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5yb3V0ZURpcmVjdGlvbiA9IHZcclxuICAgIHRoaXMuX2VsbXMucm91dGVEaXJlY3Rpb24gJiYgdGhpcy5fZWxtcy5yb3V0ZURpcmVjdGlvbi5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbG9vcCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubG9vcFxyXG4gIH1cclxuICBzZXQgbG9vcCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubG9vcCA9IHZcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnJlcGVhdChJbmZpbml0eSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlR3ZWVuQW5pbWF0ZS5yZXBlYXQoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sb29wICYmIHRoaXMuX2VsbXMubG9vcC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3RQZXJzb25WaWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXdcclxuICB9XHJcblxyXG4gIHNldCBmaXJzdFBlcnNvblZpZXcodikge1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IHRydWVcclxuICAgIHRoaXMuc2RrLnZpZXdlci5fZmlyc3RQZXJzb25WaWV3ID0gdlxyXG4gICAgdGhpcy5vcHRpb25zLmZpcnN0UGVyc29uVmlldyA9IHZcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmlyc3RQZXJzb25WaWV3KSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgICBsZXQgZV9maXJzdFBlcnNvbiA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJidXR0b25bbmFtZT0nZmlyc3RQZXJzb24nXVwiKVxyXG4gICAgICAgIGVfZmlyc3RQZXJzb25bMF0uY2xhc3NOYW1lID0gJ2J0biBpcy1hY3RpdmUnXHJcbiAgICAgICAgZV9maXJzdFBlcnNvblsxXS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgICAgbGV0IGVfZmlyc3RQZXJzb24gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uW25hbWU9J2ZpcnN0UGVyc29uJ11cIilcclxuICAgICAgICBpZiAoZV9maXJzdFBlcnNvblswXSAmJiBlX2ZpcnN0UGVyc29uWzFdKSB7XHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzBdLmNsYXNzTmFtZSA9ICdidG4nXHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzFdLmNsYXNzTmFtZSA9ICdidG4gaXMtYWN0aXZlJ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52aWV3Rm9sbG93KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcG9pbnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIC8vIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb25zX3Ntb290aFswXSwgLy8gcG9zaXRpb24gb2YgdGhlIHBvaW50XHJcbiAgICAgICAgICBwb2ludDoge1xyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRC53aXRoQWxwaGEoMCksIC8vIGNvbG9yIG9mIHRoZSBwb2ludFxyXG4gICAgICAgICAgICBwaXhlbFNpemU6IDBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IHBvaW50RW50aXR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdmlld0ZvbGxvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudmlld0ZvbGxvd1xyXG4gIH1cclxuICBzZXQgdmlld0ZvbGxvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld0ZvbGxvdyA9IHZcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnZpZXdGb2xsb3cpIHtcclxuICAgICAgdGhpcy5maXJzdFBlcnNvblZpZXcgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubGluZUVkaXQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50KSB7XHJcbiAgICAgICAgbGV0IGVfZmlyc3RQZXJzb24gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uW25hbWU9J2ZpcnN0UGVyc29uJ11cIilcclxuICAgICAgICBpZiAoZV9maXJzdFBlcnNvblswXSAmJiBlX2ZpcnN0UGVyc29uWzFdKSB7XHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzBdLmNsYXNzTmFtZSA9ICdidG4nXHJcbiAgICAgICAgICBlX2ZpcnN0UGVyc29uWzFdLmNsYXNzTmFtZSA9ICdidG4gaXMtYWN0aXZlJ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHYpIHtcclxuICAgICAgICBsZXQgcG9pbnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIC8vIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgcG9zaXRpb246IHRoaXMuY3VycmVudC5wb3NpdGlvbiwgLy8gcG9zaXRpb24gb2YgdGhlIHBvaW50XHJcbiAgICAgICAgICBwb2ludDoge1xyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRC53aXRoQWxwaGEoMCksIC8vIGNvbG9yIG9mIHRoZSBwb2ludFxyXG4gICAgICAgICAgICBwaXhlbFNpemU6IDBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IHBvaW50RW50aXR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLnZpZXdGb2xsb3cgJiYgdGhpcy5fZWxtcy52aWV3Rm9sbG93LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG1vdmVDYWxsQmFjayh0aGF0KSB7XHJcbiAgICAvLyBpZigodGhhdC5sbmcgfHwgdGhhdC5sbmcgPT0gMCkgJiYgKHRoYXQubGF0IHx8IHRoYXQubGF0ID09IDApICYmICh0aGF0LmFsdCB8fCB0aGF0LmxhdCA9PSAwKSkge1xyXG4gICAgLy8gICB0aGlzLl9pbml0aWFsLnBvc2l0aW9uID0ge1xyXG4gICAgLy8gICAgIGxuZzogdGhhdC5sbmcsXHJcbiAgICAvLyAgICAgbGF0OiB0aGF0LmxhdCxcclxuICAgIC8vICAgICBhbHQ6IHRoYXQuYWx0LFxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZih0aGF0LnJvdGF0ZVggfHwgdGhhdC5yb3RhdGVYID09IDAgKSB7XHJcbiAgICAvLyAgIHRoaXMuX2luaXRpYWwucGl0Y2ggPSB0aGF0LnJvdGF0ZVhcclxuICAgIC8vIH1cclxuICAgIC8vIGlmKHRoYXQucm90YXRlWSB8fCB0aGF0LnJvdGF0ZVkgPT0gMCkge1xyXG4gICAgLy8gICB0aGlzLl9pbml0aWFsLnJvbGwgPSB0aGF0LnJvdGF0ZVlcclxuICAgIC8vIH1cclxuICAgIC8vIGlmKHRoYXQucm90YXRlWiB8fCB0aGF0LnJvdGF0ZVogPT0gMCkge1xyXG4gICAgLy8gICB0aGlzLl9pbml0aWFsLmhlYWRpbmcgPSB0aGF0LnJvdGF0ZVpcclxuICAgIC8vIH1cclxuICAgIHRoaXMuc2V0UG9zaXRpb24gPSB0aGF0LnNldFBvc2l0aW9uLmJpbmQodGhhdClcclxuICB9XHJcblxyXG4gIC8vIGdldCBtb3ZlQ2FsbEJhY2soKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRpb25zLm1vdmVDYWxsQmFja1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IG1vdmVDYWxsQmFjayh2KSB7XHJcbiAgLy8gICB0aGlzLm9wdGlvbnMubW92ZUNhbGxCYWNrID0gdlxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFxyXG4gIH1cclxuXHJcbiAgc2V0IGN1cnJlbnQodikge1xyXG4gICAgdGhpcy5fY3VycmVudCA9IHZcclxuICAgIGxldCBwb3MgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuX2N1cnJlbnQucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcilcclxuICAgIHRoaXMuc2V0UG9zaXRpb24gJiYgdGhpcy5zZXRQb3NpdGlvbih7IC4uLnRoaXMuX2N1cnJlbnQsIHBvc2l0aW9uOiB7IC4uLnBvcyB9IH0pXHJcbiAgfVxyXG5cclxuICAvLyDliJvlu7rot6/lvoRcclxuICBzdGF0aWMgYWRkTGluZSh0aGF0KSB7XHJcbiAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoYXQuX3JlbmV3TGluZSh0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICB0aGF0LmN1cnJlbnQucG9zaXRpb24gPSBwb3NpdGlvbnNfc21vb3RoWzBdXHJcbiAgICB0aGF0LmxpbmUgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCArICctMicsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxpbmUuc2hvdyA6IGZhbHNlLFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogcG9zaXRpb25zX3Ntb290aCxcclxuICAgICAgICB3aWR0aDogMixcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiB0aGF0Lmdyb3VuZCxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZmZmZicpLFxyXG4gICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIHRoYXQucmVhbFRpbWVMaW5lID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQgKyAnLTMnLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMucmVhbFRpbWVSb3V0ZSA/IHRoYXQub3B0aW9ucy5yZWFsVGltZVJvdXRlIDogZmFsc2UsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucmVhbFRpbWVQb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdGhhdC5ncm91bmQsXHJcbiAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4LFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmYwMDAwJylcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgIGxldCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgdGhhdC52aWV3Rm9sbG93ID0gZmFsc2VcclxuICAgIH0pXHJcbiAgICBUcmFqZWN0b3J5TW90aW9uT2JqZWN0LmFkZEtleVBvaW50KHRoYXQpXHJcbiAgICB0aGF0Lm5vc2VUb1RhaWwgPSB0aGF0Lm9wdGlvbnMubGluZS5ub3NlVG9UYWlsXHJcbiAgICB0aGF0LnNtb290aCA9IHRoYXQub3B0aW9ucy5saW5lLnNtb290aFxyXG4gIH1cclxuICAvLyDliJvlu7rmqKHlnotcclxuICBzdGF0aWMgYWRkTW9kZWwodGhhdCkge1xyXG4gICAgLy8gdGhhdC5tb2RlbCA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgIC8vICAgQ2VzaXVtLk1vZGVsLmZyb21HbHRmKHtcclxuICAgIC8vICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgLy8gICAgIHVybDogdGhhdC5vcHRpb25zLm1vZGVsLnVybCxcclxuICAgIC8vICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5tb2RlbC5zaG93IDogZmFsc2UsXHJcbiAgICAvLyAgICAgc2NhbGU6IHRoYXQub3B0aW9ucy5tb2RlbC5zY2FsZSxcclxuICAgIC8vICAgICAvLyBtaW5pbXVtUGl4ZWxTaXplOiB0aGF0Lm9wdGlvbnMubW9kZWwucGl4ZWxTaXplLFxyXG4gICAgLy8gICAgIC8vIG1heGltdW1TY2FsZTogMTAwMDAwLFxyXG4gICAgLy8gICAgIC8vIGFsbG93UGlja2luZzogZmFsc2VcclxuICAgIC8vICAgfSlcclxuICAgIC8vICk7XHJcblxyXG4gICAgLy8gbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbURlZ3JlZXMoMTAzLCA2NSwgMTAwKTtcclxuICAgIC8vIGxldCBwb3NpdGlvbiA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKTtcclxuICAgIC8vIC8vIOiuvue9ruaooeWei+eahOaXi+i9rOinkuW6pu+8jOS9v+WFtuawtOW5s+aUvue9ruS6juWcsOmdolxyXG4gICAgLy8gbGV0IG1hdHJpeCA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHRoYXQucG9zaXRpb25zX3Ntb290aFswXSlcclxuICAgIC8vIHRoYXQubW9kZWwubW9kZWxNYXRyaXggPSBtYXRyaXhcclxuICAgIC8vIHRoYXQubW9kZWwucG9zaXRpb24gPSB0aGF0LnBvc2l0aW9uc19zbW9vdGhbMF1cclxuICAgIC8vIC8vIOaooeWei+Wkp+Wwj+avlOS+i1xyXG4gICAgLy8gLy8gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVNjYWxlKG1hdHJpeCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKDAuMSwgMC4xLCAwLjEpLCB0aGlzLmVudGl0eS5tb2RlbE1hdHJpeClcclxuXHJcbiAgICAvLyBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLmxpbmUucG9zaXRpb25zXHJcbiAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheUhlaWdodHMgPSBbXVxyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgZnJvbURlZ3JlZXNBcnJheUhlaWdodHMucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gbGV0IHBvcyA9IHRoYXQuc21vb3RoID8gdGhhdC5wb3NpdGlvbnNfc21vb3RoIDogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheUhlaWdodHMpXHJcbiAgICAvLyB0aGF0Lm1vZGVsTW92ZShwb3MpXHJcblxyXG4gICAgLy8gdGhhdC5tb2RlbC5yZWFkeVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAvLyAgIHRoYXQubW9kZWxBbmltYXRlID0gdGhhdC5vcHRpb25zLm1vZGVsLmFuaW1hdGVcclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGF0LmVudGl0eSA9IHRoYXQubW9kZWxcclxuICB9XHJcblxyXG4gIC8vIOWIm+W7uuWFs+mUrueCuVxyXG4gIHN0YXRpYyBhc3luYyBhZGRLZXlQb2ludCh0aGF0KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXSlcclxuICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5saW5lLnBvc2l0aW9uc1tpXS5sYXQsIGhlaWdodClcclxuICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICBpbmRleDogaSxcclxuICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMubGluZS5rZXlQb2ludCB8fCBmYWxzZSxcclxuICAgICAgICBwb3NpdGlvbjogdGhhdC5ncm91bmQgPyByZXN1bHQgOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubG5nLCB0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0ubGF0LCB0aGF0Lm9wdGlvbnMubGluZS5wb3NpdGlvbnNbaV0uYWx0KSxcclxuICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LmtleVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOaooeWei+enu+WKqFxyXG4gIGFzeW5jIG1vZGVsTW92ZShwb3NpdGlvbnMsIG9wdGlvbiA9IHsgdGltZTogMCB9KSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICBsZXQgdGltZSA9IG9wdGlvbi50aW1lIHx8IDBcclxuICAgIGxldCBzdGFydERpc3RhbmNlID0gb3B0aW9uLmRpc3RhbmNlIHx8IDBcclxuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnNkay52aWV3ZXJcclxuICAgIHRoaXMucmVtb3ZlTW9kZWxBbmltYXRlKClcclxuXHJcbiAgICBsZXQgbGluZVN0cmluZyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1tpXSwgdmlld2VyKVxyXG4gICAgICBsaW5lU3RyaW5nLnB1c2goW3Bvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0LCBwb3NpdGlvbi5hbHRdKVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2cobGluZVN0cmluZylcclxuICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKGxpbmVTdHJpbmcpO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IHR1cmYubGVuZ3RoKGxpbmUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgIGlmKCF0aGlzLnRvdGFsVGltZSkge1xyXG4gICAgICB0aGlzLnRvdGFsVGltZSA9ICh0aGlzLmRpc3RhbmNlKjEwMDApIC8gdGhpcy5vcHRpb25zLnNwZWVkICAvLyDmgLvogJfml7bvvIjnp5LvvIlcclxuICAgIH1cclxuICAgIGxldCB0b3RhbFRpbWUgPSB0aGlzLnRvdGFsVGltZVxyXG4gICAgXHJcbiAgICBpZiAodGltZSkge1xyXG4gICAgICBpZiAodGltZSA+IHRvdGFsVGltZSkge1xyXG4gICAgICAgIHRpbWUgPSB0b3RhbFRpbWVcclxuICAgICAgfVxyXG4gICAgICBzdGFydERpc3RhbmNlID0gKHRpbWUgLyB0b3RhbFRpbWUpICogdGhpcy5kaXN0YW5jZVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuX2luaXRpYWwucG9zaXRpb24gJiYgKHRoaXMuX2N1cnJlbnQucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uc19zbW9vdGhbMF0pXHJcbiAgICAgIC8vIGlmKHRoaXMuX2luaXRpYWwucGl0Y2ggfHwgdGhpcy5faW5pdGlhbC5waXRjaCA9PT0gMCkge1xyXG4gICAgICAvLyAgIHRoaXMuX2N1cnJlbnQucGl0Y2ggPSB0aGlzLl9pbml0aWFsLnBpdGNoXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYodGhpcy5faW5pdGlhbC5yb2xsIHx8IHRoaXMuX2luaXRpYWwucm9sbCA9PT0gMCkge1xyXG4gICAgICAvLyAgIHRoaXMuX2N1cnJlbnQucm9sbCA9IHRoaXMuX2luaXRpYWwucm9sbFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmKHRoaXMuX2luaXRpYWwuaGVhZGluZyB8fCB0aGlzLl9pbml0aWFsLmhlYWRpbmcgPT09IDApIHtcclxuICAgICAgLy8gICB0aGlzLl9jdXJyZW50LmhlYWRpbmcgPSB0aGlzLl9pbml0aWFsLmhlYWRpbmdcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgbGV0IGxhc3REaXN0YW5jZSA9IDBcclxuICAgIGxldCBtb3Rpb25BcnJheSA9IFtdXHJcbiAgICBsZXQgSGVhZGluZ1BpdGNoUm9sbFxyXG4gICAgbGV0IEhlYWRpbmdQaXRjaFJvbGwyXHJcbiAgICBsZXQgcHJldmlvdXMgPSB7fVxyXG4gICAgbGV0IG0gPSAwXHJcblxyXG4gICAgbGV0IG1vZGVsQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuc2RrLmVudGl0eU1hcCkge1xyXG4gICAgICBpZiAodmFsdWUudHlwZSAmJiB2YWx1ZS50eXBlID09PSAnZ2xiJykge1xyXG4gICAgICAgIG1vZGVsQXJyYXkucHVzaCh2YWx1ZS5lbnRpdHkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaXJzdCA9IHRydWVcclxuICAgIHRoaXMuVHdlZW5BbmltYXRlID0gbmV3IFRXRUVOLlR3ZWVuKHsgZGlzdGFuY2U6IHN0YXJ0RGlzdGFuY2UgfSkudG8oeyBkaXN0YW5jZTogdGhpcy5kaXN0YW5jZSB9LCAodG90YWxUaW1lIC0gdGltZSkqMTAwMCkuXHJcbiAgICAgIGRlbGF5KHRoaXMuZGVsYXkpLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLnJlcGVhdCh0aGlzLm9wdGlvbnMubG9vcCA/IEluZmluaXR5IDogMCkub25SZXBlYXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aW1lKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsTW92ZShwb3NpdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUuX2R1cmF0aW9uID09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbSsrXHJcbiAgICAgICAgaWYgKCF0aGlzLnNkay52aWV3ZXIpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlTW9kZWxBbmltYXRlKClcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0UG9zaXRpb24oci5kaXN0YW5jZSlcclxuICAgICAgfSkub25FdmVyeVN0YXJ0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlYWxUaW1lUm91dGVBcnJheSA9IFtdXHJcbiAgICAgIH0pLm9uQ29tcGxldGUoKGQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXRlID0gZmFsc2VcclxuICAgICAgICB0aGlzLnJlbW92ZU1vZGVsQW5pbWF0ZSgpXHJcbiAgICAgICAgLy8gbGV0IHJ1bnRpbWVBbmltYXRpb24gPSB0aGlzLm1vZGVsLl9hY3RpdmVBbmltYXRpb25zLl9ydW50aW1lQW5pbWF0aW9uc1xyXG4gICAgICAgIC8vIC8vIGxldCBhbmltYXRpb25zID0gYXdhaXQgdGhpcy5tb2RlbC5yZWFkeVByb21pc2VcclxuICAgICAgICAvLyBmb3IgKGxldCBpID0gcnVudGltZUFuaW1hdGlvbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIC8vICAgc3dpdGNoIChydW50aW1lQW5pbWF0aW9uW2ldLm5hbWUpIHtcclxuICAgICAgICAvLyAgICAgY2FzZSAn6LeRJzpcclxuICAgICAgICAvLyAgICAgICB0aGlzLm1vZGVsLmFjdGl2ZUFuaW1hdGlvbnMucmVtb3ZlKHJ1bnRpbWVBbmltYXRpb25baV0pXHJcbiAgICAgICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMuVHdlZW5BbmltYXRlLnN0YXJ0KClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXRQb3NpdGlvbihzdGFydERpc3RhbmNlKVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHNldFBvc2l0aW9uKGRpc3RhbmNlKSB7XHJcbiAgICAgIGxldCBzdGFydCA9IDA7XHJcbiAgICAgIGxldCBzdG9wID0gZGlzdGFuY2U7XHJcbiAgICAgIGxldCBjb29yZGluYXRlc1xyXG4gICAgICBsZXQgc2xpY2VkID0gbGluZVxyXG4gICAgICBpZiAoc3RvcCkge1xyXG4gICAgICAgIGxldCBzbGljZWQgPSBhd2FpdCB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUsIHN0YXJ0LCBzdG9wLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgICAgLy8gX3RoaXMucmVhbFRpbWVSb3V0ZUFycmF5ID0gc2xpY2VkK1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1dXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBbLi4ubGluZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXV1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9zaXRpb25cclxuICAgICAgbGV0IHBvc2l0aW9uQ2FtZXJhXHJcblxyXG4gICAgICBpZiAoX3RoaXMuZ3JvdW5kKSB7XHJcbiAgICAgICAgLy8gaWYgKHZpZXdlci50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgICAgLy8gICBsZXQgcmVzdWx0ID0gYXdhaXQgbmV3IENlc2l1bS5zYW1wbGVUZXJyYWluTW9zdERldGFpbGVkKHZpZXdlci50ZXJyYWluUHJvdmlkZXIsIFtDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSldKTtcclxuICAgICAgICAvLyAgIHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCByZXN1bHRbMF0uaGVpZ2h0KVxyXG4gICAgICAgIC8vICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIHJlc3VsdFswXS5oZWlnaHQgKyAxKVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBlbHNlIHtcclxuICAgICAgICAvLyAgIHBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICAgIC8vICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIDEpXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBfdGhpcy5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQobmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSksIG1vZGVsQXJyYXkpXHJcbiAgICAgICAgcG9zaXRpb24gPSByZXN1bHRcclxuICAgICAgICBpZiAoIXBvc2l0aW9uKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3MzID0gX3RoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb24sIHZpZXdlcik7XHJcbiAgICAgICAgbGV0IGhlaWdodDIgPSAwXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbjIgPSBhd2FpdCBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci5zY2VuZS50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICAgIFtDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21EZWdyZWVzKHBvczMubG5nLCBwb3MzLmxhdCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBoZWlnaHQyID0gcG9zaXRpb24yWzBdLmhlaWdodFxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBoZWlnaHQyID0gMFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocG9zMy5hbHQgPCBoZWlnaHQyKSB7XHJcbiAgICAgICAgICBwb3MzLmFsdCA9IGhlaWdodDJcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zMy5hbHQgPSBOdW1iZXIocG9zMy5hbHQudG9GaXhlZCgxKSlcclxuICAgICAgICBwb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczMubG5nLCBwb3MzLmxhdCwgcG9zMy5hbHQpXHJcbiAgICAgICAgcG9zaXRpb25DYW1lcmEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uLCBfdGhpcy5zZGsudmlld2VyKS5hbHQgKyAxKVxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVswXSwgc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcy5yZWFsVGltZVBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAvLyBfdGhpcy5yZWFsVGltZUxpbmUucG9seWxpbmUucG9zaXRpb25zID0gXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGNhcnRlc2lhbjMgPSBfdGhpcy5zcGxpbmUuZXZhbHVhdGUoZGlzdGFuY2UgLyBfdGhpcy5kaXN0YW5jZSlcclxuICAgICAgICBjb29yZGluYXRlcyA9IF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbjMsIHZpZXdlcik7XHJcbiAgICAgICAgcG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjb29yZGluYXRlcy5sbmcsIGNvb3JkaW5hdGVzLmxhdCwgY29vcmRpbmF0ZXMuYWx0KVxyXG4gICAgICAgIHBvc2l0aW9uQ2FtZXJhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY29vcmRpbmF0ZXMubG5nLCBjb29yZGluYXRlcy5sYXQsIGNvb3JkaW5hdGVzLmFsdCArIDEpXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uc19zbW9vdGggPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDEwMDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoKGkgLyAxMDApID4gKGRpc3RhbmNlIC8gX3RoaXMuZGlzdGFuY2UpKSB7XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY2FydGVzaWFuMyA9IF90aGlzLnNwbGluZS5ldmFsdWF0ZShpIC8gMTAwKTtcclxuICAgICAgICAgIHBvc2l0aW9uc19zbW9vdGgucHVzaChjYXJ0ZXNpYW4zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zaXRpb25zX3Ntb290aC5wdXNoKGNhcnRlc2lhbjMpXHJcbiAgICAgICAgX3RoaXMucmVhbFRpbWVQb3NpdGlvbnMgPSBwb3NpdGlvbnNfc21vb3RoXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEhlYWRpbmdQaXRjaFJvbGwgPSBnZXRIZWFkaW5nUGl0Y2hSb2xsKF90aGlzLmN1cnJlbnQucG9zaXRpb24sIHBvc2l0aW9uKVxyXG4gICAgICBpZiAocHJldmlvdXMgJiYgcHJldmlvdXMucG9zaXRpb24pIHtcclxuICAgICAgICBIZWFkaW5nUGl0Y2hSb2xsMiA9IGdldEhlYWRpbmdQaXRjaFJvbGwocHJldmlvdXMucG9zaXRpb24sIHBvc2l0aW9uKVxyXG4gICAgICAgIEhlYWRpbmdQaXRjaFJvbGwucGl0Y2ggPSBIZWFkaW5nUGl0Y2hSb2xsMi5waXRjaFxyXG4gICAgICB9XHJcbiAgICAgIHByZXZpb3VzLnBvc2l0aW9uID0gX3RoaXMuY3VycmVudC5wb3NpdGlvblxyXG4gICAgICBsZXQgbW9kZUhlYWRpbmdQaXRjaFJvbGwgPSBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcyhfdGhpcy5jdXJyZW50LmhlYWRpbmcsIF90aGlzLmN1cnJlbnQucGl0Y2gsIF90aGlzLmN1cnJlbnQucm9sbClcclxuICAgICAgbGV0IGhlYWRpbmcgPSAwXHJcbiAgICAgIGxldCBwaXRjaCA9IDBcclxuICAgICAgbGV0IHJvbGwgPSAwXHJcbiAgICAgIGlmIChfdGhpcy5vcHRpb25zLnJvdXRlRGlyZWN0aW9uKSB7XHJcbiAgICAgICAgaGVhZGluZyA9IChIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcgLSBtb2RlSGVhZGluZ1BpdGNoUm9sbC5oZWFkaW5nKSAqICgxODAgLyBNYXRoLlBJKSAtIDkwICsgX3RoaXMuY3VycmVudC5oZWFkaW5nXHJcbiAgICAgICAgcGl0Y2ggPSBIZWFkaW5nUGl0Y2hSb2xsLnBpdGNoICogKDE4MCAvIE1hdGguUEkpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaGVhZGluZyA9IF90aGlzLmN1cnJlbnQuaGVhZGluZ1xyXG4gICAgICAgIHBpdGNoID0gX3RoaXMuY3VycmVudC5waXRjaFxyXG4gICAgICB9XHJcblxyXG4gICAgICByb2xsID0gX3RoaXMuY3VycmVudC5yb2xsXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKChIZWFkaW5nUGl0Y2hSb2xsLmhlYWRpbmcgLSBtb2RlSGVhZGluZ1BpdGNoUm9sbC5oZWFkaW5nKSAqICgxODAgLyBNYXRoLlBJKSlcclxuICAgICAgaWYgKGlzTmFOKGhlYWRpbmcpIHx8IGlzTmFOKHBpdGNoKSB8fCBpc05hTihyb2xsKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZWFkaW5nIDwgMCB8fCBoZWFkaW5nID4gMTgwKSB7XHJcbiAgICAgICAgcGl0Y2ggPSAtcGl0Y2hcclxuICAgICAgfVxyXG4gICAgICBfdGhpcy5jdXJyZW50ID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcclxuICAgICAgICBoZWFkaW5nOiBoZWFkaW5nLFxyXG4gICAgICAgIHBpdGNoOiBwaXRjaCxcclxuICAgICAgICByb2xsOiByb2xsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgZmlyc3QgPSBmYWxzZVxyXG4gICAgICAgIF90aGlzLl9maXJzdCA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcclxuICAgICAgICAgIGhlYWRpbmc6IGhlYWRpbmcsXHJcbiAgICAgICAgICBwaXRjaDogcGl0Y2gsXHJcbiAgICAgICAgICByb2xsOiByb2xsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxhc3REaXN0YW5jZSA9IGRpc3RhbmNlXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHBvc2l0aW9uKVxyXG4gICAgICBfdGhpcy5yZWFsVGltZVJvdXRlQXJyYXkucHVzaChwb3NpdGlvbilcclxuICAgICAgaWYgKF90aGlzLnZpZXdGb2xsb3cpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhoZWFkaW5nKVxyXG4gICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBwb3NpdGlvbkNhbWVyYSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246IHtcclxuICAgICAgICAgICAgICBoZWFkaW5nOiBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICAgICAgICAgIHBpdGNoOiBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAgICAgICAgICAgICByb2xsOiBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKF90aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgICAgICAvLyBfdGhpcy5zZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZnVuY3Rpb24gZXhlY3V0ZUFuaW1hdGUoKSB7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgbGV0IGkgPSAwXHJcbiAgICAvLyAgIGZ1bmN0aW9uIGFuaW1hdGUoKSB7XHJcbiAgICAvLyAgICAgaWYgKGkgPCBtb3Rpb25BcnJheS5sZW5ndGgpIHtcclxuICAgIC8vICAgICAgIGxldCByZXN1bHQgPSBtb3Rpb25BcnJheVtpXS5yZXN1bHQ7XHJcbiAgICAvLyAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgICAvLyAgICAgICByZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGxldCBwb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKG1vdGlvbkFycmF5W2ldLmxuZywgbW90aW9uQXJyYXlbaV0ubGF0LCByZXNbMF0uaGVpZ2h0KVxyXG5cclxuICAgIC8vICAgICAgICAgbGV0IEhlYWRpbmdQaXRjaFJvbGwgPSBnZXRIZWFkaW5nUGl0Y2hSb2xsKF90aGlzLm1vZGVsLnBvc2l0aW9uLCBwb3NpdGlvbilcclxuICAgIC8vICAgICAgICAgbGV0IG1vZGVIZWFkaW5nUGl0Y2hSb2xsID0gQ2VzaXVtLkhlYWRpbmdQaXRjaFJvbGwuZnJvbURlZ3JlZXMoX3RoaXMub3B0aW9ucy5tb2RlbC5oZWFkaW5nLCBfdGhpcy5vcHRpb25zLm1vZGVsLnBpdGNoLCBfdGhpcy5vcHRpb25zLm1vZGVsLnJvbGwpXHJcbiAgICAvLyAgICAgICAgIGxldCBoZWFkaW5nID0gMFxyXG4gICAgLy8gICAgICAgICBsZXQgcGl0Y2ggPSAwXHJcbiAgICAvLyAgICAgICAgIGxldCByb2xsID0gMFxyXG4gICAgLy8gICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5yb3V0ZURpcmVjdGlvbikge1xyXG4gICAgLy8gICAgICAgICAgIGhlYWRpbmcgPSAoSGVhZGluZ1BpdGNoUm9sbC5oZWFkaW5nIC0gbW9kZUhlYWRpbmdQaXRjaFJvbGwuaGVhZGluZykgKiAoMTgwIC8gTWF0aC5QSSkgLSA5MFxyXG4gICAgLy8gICAgICAgICAgIHBpdGNoID0gKEhlYWRpbmdQaXRjaFJvbGwucGl0Y2ggLSBtb2RlSGVhZGluZ1BpdGNoUm9sbC5waXRjaCkgKiAoMTgwIC8gTWF0aC5QSSlcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBoZWFkaW5nID0gLSBfdGhpcy5vcHRpb25zLm1vZGVsLmhlYWRpbmdcclxuICAgIC8vICAgICAgICAgICBwaXRjaCA9IC0gX3RoaXMub3B0aW9ucy5tb2RlbC5waXRjaFxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIHJvbGwgPSAtIF90aGlzLm9wdGlvbnMubW9kZWwucm9sbFxyXG4gICAgLy8gICAgICAgICAvLyBjb25zb2xlLmxvZyhoZWFkaW5nKVxyXG4gICAgLy8gICAgICAgICBsZXQgbWF0cml4ID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9zaXRpb24pXHJcbiAgICAvLyAgICAgICAgIF90aGlzLm1vZGVsLm1vZGVsTWF0cml4ID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeU1hdHJpeDMobWF0cml4LCBDZXNpdW0uTWF0cml4My5mcm9tSGVhZGluZ1BpdGNoUm9sbChDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tRGVncmVlcyhoZWFkaW5nLCBwaXRjaCwgcm9sbCkpLCBfdGhpcy5tb2RlbC5tb2RlbE1hdHJpeClcclxuICAgIC8vICAgICAgICAgX3RoaXMubW9kZWwucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgLy8gICAgICAgICBpZiAoX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAvLyAgICAgICAgICAgX3RoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5LnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBpKytcclxuICAgIC8vICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xyXG4gICAgLy8gICAgICAgfSlcclxuXHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBhbmltYXRlKCk7XHJcbiAgICAvLyB9LCAyMDAwKTtcclxuXHJcbiAgICAvLyDmoLnmja7kuKTkuKrlnZDmoIfngrks6I635Y+WSGVhZGluZyjmnJ3lkJEpXHJcbiAgICBmdW5jdGlvbiBnZXRIZWFkaW5nUGl0Y2hSb2xsKHBvaW50QSwgcG9pbnRCKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGRpc3RhbmNlLCBfdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb2ludEEsIHZpZXdlciksIF90aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50Qiwgdmlld2VyKSlcclxuICAgICAgLy/lu7rnq4vku6XngrlB5Li65Y6f54K577yMWOi9tOS4umVhc3QsWei9tOS4um5vcnRoLFrovbTmnJ3kuIrnmoTlnZDmoIfns7tcclxuICAgICAgY29uc3QgdHJhbnNmb3JtID0gQ2VzaXVtLlRyYW5zZm9ybXMuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocG9pbnRBKTtcclxuICAgICAgLy/lkJHph49BQlxyXG4gICAgICBpZiAoIXBvaW50Qikge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9udmVjdG9yID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QocG9pbnRCLCBwb2ludEEsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgLy/lm6B0cmFuc2Zvcm3mmK/lsIZB5Li65Y6f54K555qEZWFzdE5vcnRoVXDlnZDmoIfns7vkuK3nmoTngrnovazmjaLliLDkuJbnlYzlnZDmoIfns7vnmoTnn6npmLVcclxuICAgICAgLy9BQuS4uuS4lueVjOWdkOagh+S4reeahOWQkemHj1xyXG4gICAgICAvL+WboOatpOWwhkFC5ZCR6YeP6L2s5o2i5Li6QeWOn+eCueWdkOagh+ezu+S4reeahOWQkemHj++8jOmcgOS5mOS7pXRyYW5zZm9ybeeahOmAhuefqemYteOAglxyXG4gICAgICBjb25zdCB2ZWN0b3IgPSBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihcclxuICAgICAgICBDZXNpdW0uTWF0cml4NC5pbnZlcnNlKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXg0KCkpLFxyXG4gICAgICAgIHBvc2l0aW9udmVjdG9yLFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICk7XHJcbiAgICAgIC8v5b2S5LiA5YyWXHJcbiAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZSh2ZWN0b3IsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKTtcclxuICAgICAgLy9oZWFkaW5nXHJcbiAgICAgIGNvbnN0IGhlYWRpbmcgPSBNYXRoLmF0YW4yKGRpcmVjdGlvbi55LCBkaXJlY3Rpb24ueCkgLSBDZXNpdW0uTWF0aC5QSV9PVkVSX1RXTztcclxuICAgICAgbGV0IHBpdGNoID0gQ2VzaXVtLk1hdGguUElfT1ZFUl9UV08gLSBDZXNpdW0uTWF0aC5hY29zQ2xhbXBlZChkaXJlY3Rpb24ueik7XHJcbiAgICAgIGxldCBhID0gcGl0Y2ggKiAoMTgwIC8gTWF0aC5QSSlcclxuICAgICAgaWYgKGEgPCAwKSB7XHJcbiAgICAgICAgLy8gYSA9ICgtYSlcclxuICAgICAgfVxyXG4gICAgICBwaXRjaCA9IGEgKiAoTWF0aC5QSSAvIDE4MClcclxuICAgICAgY29uc3Qgcm9sbCA9IENlc2l1bS5NYXRoLmZhc3RBcHByb3hpbWF0ZUF0YW4yKGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueik7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHtoZWFkaW5nOiBoZWFkaW5nICogKDE4MCAvIE1hdGguUEkpLCBwaXRjaDogcGl0Y2ggKiAoMTgwIC8gTWF0aC5QSSksIHJvbGw6IHJvbGwgKiAoMTgwIC8gTWF0aC5QSSl9KVxyXG4gICAgICByZXR1cm4geyBoZWFkaW5nOiBDZXNpdW0uTWF0aC5UV09fUEkgLSBDZXNpdW0uTWF0aC56ZXJvVG9Ud29QaShoZWFkaW5nKSwgcGl0Y2g6IHBpdGNoLCByb2xsOiByb2xsIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKGRpc3RhbmNlKSB7XHJcbiAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IHRoaXMuX3JlbmV3TGluZSh0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICB0aGlzLm1vZGVsTW92ZShwb3NpdGlvbnNfc21vb3RoLCB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9KVxyXG4gIH1cclxuXHJcbiAgc2V0TW92ZVBvc2l0aW9uQnlUaW1lKHRpbWUpIHtcclxuICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gdGhpcy5fcmVuZXdMaW5lKHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucylcclxuICAgIHRoaXMubW9kZWxNb3ZlKHBvc2l0aW9uc19zbW9vdGgsIHsgdGltZTogdGltZSB9KVxyXG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XHJcbiAgICAgIHRoaXMubW9kZWxNb3ZlKHBvc2l0aW9uc19zbW9vdGgsIHsgdGltZTogdGltZSswLjAxIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmmoLlgZxcclxuICBwYXVzZSgpIHtcclxuICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLy8g57un57utXHJcbiAgcmVzdW1lKCkge1xyXG4gICAgdGhpcy5zdGF0ZSA9IHRydWVcclxuICB9XHJcblxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9uc1swXSB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxpbmUgJiYgdGhpcy5zZGsudmlld2VyLmZseVRvKHRoaXMubGluZSwge1xyXG4gICAgICAgIG9mZnNldDogb3B0aW9ucy5vcmllbnRhdGlvbiB8fCB7XHJcbiAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTYwLjApLFxyXG4gICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUoKSB7XHJcbiAgICAvLyB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5tb2RlbClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmxpbmUpXHJcbiAgICB0aGlzLmxpbmUgPSBudWxsXHJcbiAgICB0aGlzLnJlbW92ZU1vZGVsQW5pbWF0ZSgpXHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMubW9kZWxNb3ZlKHRoaXMubGluZS5wb2x5bGluZS5wb3NpdGlvbnMuX3ZhbHVlKVxyXG4gICAgdGhpcy5zdGF0ZSA9IGZhbHNlXHJcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLl9maXJzdFxyXG4gIH1cclxuXHJcbiAgLy8gdmlld0ZvbGxvdyhlKSB7XHJcbiAgLy8gICBpZiAoZS50YXJnZXQuY2hlY2tlZCkge1xyXG4gIC8vICAgICB2YXIgcG9pbnRFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAvLyAgICAgICAvLyBzaG93OiBmYWxzZSxcclxuICAvLyAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbnNfc21vb3RoWzBdLCAvLyBwb3NpdGlvbiBvZiB0aGUgcG9pbnRcclxuICAvLyAgICAgICBwb2ludDoge1xyXG4gIC8vICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDApLCAvLyBjb2xvciBvZiB0aGUgcG9pbnRcclxuICAvLyAgICAgICAgIHBpeGVsU2l6ZTogMFxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICAgIHRoaXMuc2RrLnZpZXdlci50cmFja2VkRW50aXR5ID0gcG9pbnRFbnRpdHk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBlbHNlIHtcclxuICAvLyAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnNkay52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAvLyAgICAgdGhpcy5zZGsudmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyDnp7vpmaTliqjnlLtcclxuICByZW1vdmVNb2RlbEFuaW1hdGUoKSB7XHJcbiAgICBpZiAodGhpcy5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuVHdlZW5BbmltYXRlLnRpbWVvdXQpXHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLlR3ZWVuQW5pbWF0ZSlcclxuICAgICAgdGhpcy5Ud2VlbkFuaW1hdGUgPSBudWxsXHJcbiAgICB9XHJcbiAgICAvLyBpZiAobW9kZWxQcmltaXRpdmUgJiYgbW9kZWxQcmltaXRpdmUuX2FjdGl2ZUFuaW1hdGlvbnMgJiYgbW9kZWxQcmltaXRpdmUuX2FjdGl2ZUFuaW1hdGlvbnMuX3J1bnRpbWVBbmltYXRpb25zKSB7XHJcbiAgICAvLyAgIGxldCBydW50aW1lQW5pbWF0aW9uID0gbW9kZWxQcmltaXRpdmUuX2FjdGl2ZUFuaW1hdGlvbnMuX3J1bnRpbWVBbmltYXRpb25zXHJcbiAgICAvLyAgIGZvciAobGV0IGkgPSBydW50aW1lQW5pbWF0aW9uLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgICAgc3dpdGNoIChydW50aW1lQW5pbWF0aW9uW2ldLm5hbWUpIHtcclxuICAgIC8vICAgICAgIGNhc2UgJ+i3kSc6XHJcbiAgICAvLyAgICAgICAgIG1vZGVsUHJpbWl0aXZlLmFjdGl2ZUFuaW1hdGlvbnMucmVtb3ZlKHJ1bnRpbWVBbmltYXRpb25baV0pXHJcbiAgICAvLyAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG5cclxuICBfcmVuZXdMaW5lKHBvcykge1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zID0gcG9zXHJcbiAgICBsZXQgcG9zaXRpb25zID0gcG9zXHJcbiAgICBpZiAodGhpcy5ub3NlVG9UYWlsKSB7XHJcbiAgICAgIHBvc2l0aW9ucyA9IFsuLi5wb3MsIHBvc1swXV1cclxuICAgIH1cclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5SGVpZ2h0cyA9IFtdXHJcbiAgICBsZXQgdGltZSA9IFtdXHJcbiAgICBsZXQgcG9zaXRpb25zX3Ntb290aCA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5SGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgIHRpbWUucHVzaChpIC8gKHBvc2l0aW9ucy5sZW5ndGggLSAxKSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtb290aCkge1xyXG4gICAgICB0aGlzLnNwbGluZSA9IG5ldyBDZXNpdW0uQ2F0bXVsbFJvbVNwbGluZSh7XHJcbiAgICAgICAgdGltZXM6IHRpbWUsXHJcbiAgICAgICAgcG9pbnRzOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5SGVpZ2h0cylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zcGxpbmUgPSBuZXcgQ2VzaXVtLkxpbmVhclNwbGluZSh7XHJcbiAgICAgICAgdGltZXM6IHRpbWUsXHJcbiAgICAgICAgcG9pbnRzOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5SGVpZ2h0cylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAxMDA7IGkrKykge1xyXG4gICAgICBsZXQgY2FydGVzaWFuMyA9IHRoaXMuc3BsaW5lLmV2YWx1YXRlKGkgLyAxMDApO1xyXG4gICAgICBwb3NpdGlvbnNfc21vb3RoLnB1c2goY2FydGVzaWFuMyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvc2l0aW9uc19zbW9vdGggPSBwb3NpdGlvbnNfc21vb3RoXHJcbiAgICByZXR1cm4gcG9zaXRpb25zX3Ntb290aFxyXG4gIH1cclxuICAvLyDmm7TmlrDlnZDmoIdcclxuICByZW5ld0xpbmVQb3NpdGlvbnMocG9zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMgPSBwb3NcclxuICAgIGxldCBwb3NpdGlvbnMgPSBwb3NcclxuICAgIGlmICh0aGlzLm5vc2VUb1RhaWwpIHtcclxuICAgICAgcG9zaXRpb25zID0gWy4uLnBvcywgcG9zWzBdXVxyXG4gICAgfVxyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzID0gW11cclxuICAgIGxldCB0aW1lID0gW11cclxuICAgIGxldCBwb3NpdGlvbnNfc21vb3RoID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgcG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgdGltZS5wdXNoKGkgLyAocG9zaXRpb25zLmxlbmd0aCAtIDEpKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21vb3RoKSB7XHJcbiAgICAgIHRoaXMuc3BsaW5lID0gbmV3IENlc2l1bS5DYXRtdWxsUm9tU3BsaW5lKHtcclxuICAgICAgICB0aW1lczogdGltZSxcclxuICAgICAgICBwb2ludHM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNwbGluZSA9IG5ldyBDZXNpdW0uTGluZWFyU3BsaW5lKHtcclxuICAgICAgICB0aW1lczogdGltZSxcclxuICAgICAgICBwb2ludHM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDEwMDsgaSsrKSB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4zID0gdGhpcy5zcGxpbmUuZXZhbHVhdGUoaSAvIDEwMCk7XHJcbiAgICAgIHBvc2l0aW9uc19zbW9vdGgucHVzaChjYXJ0ZXNpYW4zKTtcclxuICAgIH1cclxuICAgIHRoaXMucG9zaXRpb25zX3Ntb290aCA9IHBvc2l0aW9uc19zbW9vdGhcclxuICAgIGlmICh0aGlzLmxpbmUgJiYgdGhpcy5saW5lLnBvbHlsaW5lKSB7XHJcbiAgICAgIHRoaXMubGluZS5wb2x5bGluZS5wb3NpdGlvbnMgPSBwb3NpdGlvbnNfc21vb3RoXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9zaXRpb25zX3Ntb290aFxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBUcmFqZWN0b3J5TW90aW9uT2JqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXZCQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFnR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRGQTtBQUFBO0FBcUxBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFuTkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBSEE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUxBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBeElBO0FBQUE7QUFBQTtBQTVGQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUEySUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0E7QUFoVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtVEE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUE3a0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBaEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQTtBQW5CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Z0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/TrajectoryMotionObject/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Vector/color.json": -/*!****************************************!*\ - !*** ./src/Obj/Base/Vector/color.json ***! - \****************************************/ -/*! exports provided: 地震灾害, 洪水灾害, 干旱灾害, 雪灾灾害, 雷电、冰雹灾害, 高温灾害, 低温灾害, 台风灾害, 大风、沙尘暴灾害, 暴雨灾害, 自然灾害GDP综合风险图色彩样式, 自然灾害死亡人口综合风险图色彩样式, 自然灾害受灾人口综合风险图色彩样式, 自然灾害农作物综合风险图色彩样式, 自然灾害房屋综合风险图色彩样式, 自然灾害道路综合风险图色彩样式, 自然灾害减灾能力图色彩样式, 自然灾害综合防治区划图色彩样式, default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"{\\\"地震灾害\\\":{\\\"1\\\":{\\\"c\\\":30,\\\"m\\\":85,\\\"y\\\":65,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":0,\\\"m\\\":95,\\\"y\\\":40,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":5,\\\"m\\\":55,\\\"y\\\":40,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":2,\\\"m\\\":20,\\\"y\\\":20,\\\"k\\\":0}},\\\"洪水灾害\\\":{\\\"1\\\":{\\\"c\\\":100,\\\"m\\\":70,\\\"y\\\":40,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":70,\\\"m\\\":50,\\\"y\\\":10,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":55,\\\"m\\\":30,\\\"y\\\":10,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":20,\\\"m\\\":10,\\\"y\\\":5,\\\"k\\\":0}},\\\"干旱灾害\\\":{\\\"1\\\":{\\\"c\\\":10,\\\"m\\\":15,\\\"y\\\":100,\\\"k\\\":10},\\\"2\\\":{\\\"c\\\":0,\\\"m\\\":5,\\\"y\\\":55,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":2,\\\"y\\\":25,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":10,\\\"k\\\":0}},\\\"雪灾灾害\\\":{\\\"1\\\":{\\\"c\\\":100,\\\"m\\\":65,\\\"y\\\":40,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":100,\\\"m\\\":40,\\\"y\\\":15,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":65,\\\"m\\\":25,\\\"y\\\":10,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":18,\\\"m\\\":8,\\\"y\\\":8,\\\"k\\\":0}},\\\"雷电、冰雹灾害\\\":{\\\"1\\\":{\\\"c\\\":40,\\\"m\\\":45,\\\"y\\\":40,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":30,\\\"m\\\":30,\\\"y\\\":25,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":0,\\\"k\\\":16},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":0,\\\"k\\\":0}},\\\"高温灾害\\\":{\\\"1\\\":{\\\"c\\\":20,\\\"m\\\":90,\\\"y\\\":65,\\\"k\\\":20},\\\"2\\\":{\\\"c\\\":20,\\\"m\\\":85,\\\"y\\\":100,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":55,\\\"y\\\":80,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":30,\\\"y\\\":85,\\\"k\\\":0}},\\\"低温灾害\\\":{\\\"1\\\":{\\\"c\\\":70,\\\"m\\\":70,\\\"y\\\":50,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":60,\\\"m\\\":50,\\\"y\\\":30,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":40,\\\"m\\\":35,\\\"y\\\":20,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":10,\\\"m\\\":10,\\\"y\\\":5,\\\"k\\\":0}},\\\"台风灾害\\\":{\\\"1\\\":{\\\"c\\\":95,\\\"m\\\":75,\\\"y\\\":75,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":75,\\\"m\\\":60,\\\"y\\\":65,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":40,\\\"m\\\":25,\\\"y\\\":30,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":25,\\\"m\\\":10,\\\"y\\\":15,\\\"k\\\":0}},\\\"大风、沙尘暴灾害\\\":{\\\"1\\\":{\\\"c\\\":0,\\\"m\\\":40,\\\"y\\\":100,\\\"k\\\":45},\\\"2\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":100,\\\"k\\\":25},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":60,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":25,\\\"k\\\":0}},\\\"暴雨灾害\\\":{\\\"1\\\":{\\\"c\\\":100,\\\"m\\\":70,\\\"y\\\":40,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":70,\\\"m\\\":50,\\\"y\\\":10,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":55,\\\"m\\\":30,\\\"y\\\":10,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":20,\\\"m\\\":10,\\\"y\\\":5,\\\"k\\\":0}},\\\"自然灾害GDP综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":15,\\\"m\\\":100,\\\"y\\\":85,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":7,\\\"m\\\":50,\\\"y\\\":60,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":5,\\\"y\\\":55,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":2,\\\"y\\\":25,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":10,\\\"k\\\":0}},\\\"自然灾害死亡人口综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":0,\\\"m\\\":100,\\\"y\\\":100,\\\"k\\\":25},\\\"2\\\":{\\\"c\\\":15,\\\"m\\\":100,\\\"y\\\":85,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":5,\\\"m\\\":50,\\\"y\\\":60,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":5,\\\"m\\\":35,\\\"y\\\":40,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":0,\\\"m\\\":15,\\\"y\\\":15,\\\"k\\\":0}},\\\"自然灾害受灾人口综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":25,\\\"m\\\":58,\\\"y\\\":95,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":8,\\\"m\\\":45,\\\"y\\\":95,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":5,\\\"m\\\":30,\\\"y\\\":60,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":2,\\\"m\\\":20,\\\"y\\\":40,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":0,\\\"m\\\":10,\\\"y\\\":20,\\\"k\\\":0}},\\\"自然灾害农作物综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":0,\\\"m\\\":40,\\\"y\\\":100,\\\"k\\\":45},\\\"2\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":100,\\\"k\\\":45},\\\"3\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":100,\\\"k\\\":25},\\\"4\\\":{\\\"c\\\":0,\\\"m\\\":0,\\\"y\\\":60,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":10,\\\"m\\\":5,\\\"y\\\":15,\\\"k\\\":0}},\\\"自然灾害房屋综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":60,\\\"m\\\":90,\\\"y\\\":70,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":50,\\\"m\\\":90,\\\"y\\\":60,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":40,\\\"m\\\":80,\\\"y\\\":40,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":25,\\\"m\\\":45,\\\"y\\\":25,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":15,\\\"m\\\":25,\\\"y\\\":15,\\\"k\\\":0}},\\\"自然灾害道路综合风险图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":55,\\\"m\\\":65,\\\"y\\\":75,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":45,\\\"m\\\":50,\\\"y\\\":60,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":20,\\\"m\\\":30,\\\"y\\\":40,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":7,\\\"m\\\":15,\\\"y\\\":35,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":0,\\\"m\\\":10,\\\"y\\\":25,\\\"k\\\":0}},\\\"自然灾害减灾能力图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":90,\\\"m\\\":50,\\\"y\\\":95,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":70,\\\"m\\\":40,\\\"y\\\":80,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":50,\\\"m\\\":30,\\\"y\\\":65,\\\"k\\\":0},\\\"4\\\":{\\\"c\\\":35,\\\"m\\\":20,\\\"y\\\":50,\\\"k\\\":0},\\\"5\\\":{\\\"c\\\":10,\\\"m\\\":5,\\\"y\\\":35,\\\"k\\\":0}},\\\"自然灾害综合防治区划图色彩样式\\\":{\\\"1\\\":{\\\"c\\\":0,\\\"m\\\":90,\\\"y\\\":80,\\\"k\\\":0},\\\"2\\\":{\\\"c\\\":0,\\\"m\\\":50,\\\"y\\\":80,\\\"k\\\":0},\\\"3\\\":{\\\"c\\\":60,\\\"m\\\":0,\\\"y\\\":50,\\\"k\\\":25},\\\"4\\\":{\\\"c\\\":60,\\\"m\\\":0,\\\"y\\\":100,\\\"k\\\":0}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVmVjdG9yL2NvbG9yLmpzb24uanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/Vector/color.json\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Vector/index.js": -/*!**************************************!*\ - !*** ./src/Obj/Base/Vector/index.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Element_Pagination__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Element/Pagination */ \"./src/Obj/Element/Pagination.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _openAllNodeList__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./openAllNodeList */ \"./src/Obj/Base/Vector/openAllNodeList.js\");\n/* harmony import */ var _openNodeListById__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./openNodeListById */ \"./src/Obj/Base/Vector/openNodeListById.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../../Global/cluster/cluster */ \"./src/Global/cluster/cluster.js\");\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar colors = __webpack_require__(/*! ./color.json */ \"./src/Obj/Base/Vector/color.json\");\nvar _loadEvent = /*#__PURE__*/new WeakMap();\nvar _loaded = /*#__PURE__*/new WeakMap();\nvar _textEntity = /*#__PURE__*/new WeakMap();\nvar Vector = /*#__PURE__*/function (_Base) {\n function Vector(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default()(this, Vector);\n _this2 = _callSuper(this, Vector, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _loadEvent, void 0);\n _classPrivateFieldInitSpec(_this2, _loaded, false);\n _classPrivateFieldInitSpec(_this2, _textEntity, []);\n _this2.viewer = sdk.viewer;\n if (!_this2.options.path) {\n _this2.error = '未提供路径!';\n if (window.ELEMENT) {\n window.ELEMENT.Message.closeAll();\n window.ELEMENT.Message({\n message: _this2.error,\n type: 'warning',\n duration: 1500\n });\n }\n console.warn(_this2.error);\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(_this2);\n }\n _this2.colors = colors;\n _this2.options.headTables = options.headTables || [];\n _this2.options.name = options.name || '未命名对象';\n\n // if (!this.options.path.endsWith('.kml')) {\n // ; (this.options.color = options.color || 'rgba(0,255,184,0.5)'),\n // (this.options.opacity =\n // options.opacity || options.opacity === 0 ? options.opacity : 1)\n // }\n\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.total = 0;\n _this2.page = 1;\n _this2.pageSize = 20;\n _this2.currentData = [];\n _this2.data = [];\n _this2.list = [];\n _this2.imgEntity = [];\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n _this2.disaster_type_colors = colors[_this2.options.disaster_type] ? _objectSpread({}, colors[_this2.options.disaster_type]) : void 0;\n for (var key in _this2.disaster_type_colors) {\n _this2.disaster_type_colors[key] = _this2.cmykToRgb(_this2.disaster_type_colors[key]);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_9___default()(Vector, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default()(Vector, [{\n key: \"type\",\n get: function get() {\n return 'vector';\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.setShow(v);\n }\n }, {\n key: \"opacity\",\n get: function get() {\n return this.options.opacity;\n },\n set: function set(v) {\n this.options.opacity = v;\n if (this.entity) {\n this.entity.entities.values.forEach(function (enetity) {\n if (enetity.point) {\n enetity.point.color = enetity.point.color._value.withAlpha(v);\n }\n if (enetity.polygon) {\n enetity.polygon.material = enetity.polygon.material.color._value.withAlpha(v);\n }\n if (enetity.polyline) {\n enetity.polyline.material = enetity.polyline.material.color._value.withAlpha(v);\n }\n });\n }\n }\n }, {\n key: \"on\",\n value: function on() {\n if (!this.sdk || !this.viewer || !this.options.path) {\n return;\n }\n return this.init();\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee2() {\n var _this3 = this;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", new Promise(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee(resolve, reject) {\n var url, params, response, arrayBuffer, uint8Array, string;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = '';\n _this3.options.host = _this3.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getHost\"])();\n url = _this3.options.host + '/gdal/import';\n // url = 'json/shp.json'\n params = new FormData();\n params.append('path', _this3.options.path);\n _context.next = 7;\n return fetch(url, {\n method: 'post',\n headers: {\n Authorization: Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getToken\"])()\n },\n body: params\n });\n case 7:\n response = _context.sent;\n console.log('response', response);\n if (!(response.status === 200)) {\n _context.next = 21;\n break;\n }\n _context.next = 12;\n return response.arrayBuffer();\n case 12:\n arrayBuffer = _context.sent;\n uint8Array = new Uint8Array(arrayBuffer);\n string = _this3.decompressGzip(uint8Array);\n if (_this3.data.length === 0) {\n _this3.data = JSON.parse(string);\n }\n console.log('this.data', _this3.data);\n _context.next = 19;\n return _this3.formatData();\n case 19:\n Vector.create(_this3);\n resolve();\n case 21:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()));\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }() // 格式化数据\n }, {\n key: \"formatData\",\n value: function () {\n var _formatData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee3() {\n var features, _this, _posConvert, i, crs_src, crs_dst, _iterator, _step, _step$value, key, item, m, range;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n features = [];\n _this = this;\n _posConvert = function posConvert(data, src, dst) {\n if (data) {\n if (Array.isArray(data)) {\n var flag = false;\n for (var i = 0; i < data.length; i++) {\n if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(data[i]) === 'object') {\n _posConvert(data[i], src, dst);\n } else {\n flag = true;\n break;\n }\n }\n if (flag) {\n var x = Number(data[0]);\n var y = Number(data[1]);\n var res = proj4(src, dst, [x, y]);\n data[0] = Number(res[0].toFixed(10));\n data[1] = Number(res[1].toFixed(10));\n }\n } else {\n if (data instanceof Object) {\n _posConvert(data.coordinates, src, dst);\n _posConvert(data.geometries, src, dst);\n }\n }\n }\n };\n for (i = 0; i < this.data.list.length; i++) {\n crs_src = '';\n crs_dst = '';\n _iterator = _createForOfIteratorHelper(this.name_map);\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2), key = _step$value[0], item = _step$value[1];\n if (item.def === this.data.list[i].crs_src) {\n crs_src = item.epsg;\n }\n if (item.def === this.data.list[i].crs_dst) {\n crs_dst = item.epsg;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (m = 0; m < this.data.list[i].features.length; m++) {\n this.data.list[i].features[m].properties.id;\n if (!this.data.list[i].features[m].properties) {\n this.data.list[i].features[m].properties = {};\n }\n if (!this.data.list[i].features[m].properties.id) {\n this.data.list[i].features[m].properties.id = Cesium.createGuid();\n }\n this.data.list[i].features[m].id = this.data.list[i].features[m].properties.id;\n _posConvert(this.data.list[i].features[m].geometry, this.data.list[i].crs_src || '+proj=longlat +datum=WGS84 +no_defs', this.data.list[i].crs_dst || '+proj=longlat +datum=WGS84 +no_defs');\n this.data.list[i].features[m].geometry.geometries || (this.data.list[i].features[m].geometry.geometries = []);\n range = turf.bbox(this.data.list[i].features[m].geometry);\n if (range && range[0] && range[0] != Infinity) {\n this.data.list[i].features[m].geometry.range = turf.bbox(this.data.list[i].features[m]);\n }\n features.push(this.data.list[i].features[m]);\n }\n }\n this.geojson = {\n type: 'FeatureCollection',\n features: features\n };\n // console.log(this.geojson)\n\n // for (let i = 0; i < this.geojson.features.length; i++) {\n // this.geojson.features[i].id = this.geojson.features[i].properties.id\n // this.geojson.features[i].geometry.range = turf.bbox(this.geojson.features[i]);\n // }\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function formatData() {\n return _formatData.apply(this, arguments);\n }\n return formatData;\n }()\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this._elms.name && (this._elms.name.value = v);\n }\n }, {\n key: \"field\",\n get: function get() {\n return this.options.field;\n },\n set: function set(v) {\n this.options.field = v;\n // for (let i = 0; i < this.#textEntity.length; i++) {\n // const img = new Image();\n // img.src = Vector.getcanvas(this.#textEntity[i].properties[this.options.field] && this.#textEntity[i].properties[this.options.field]._value + '')\n // img.onload = async () => {\n // this.#textEntity[i].billboard.image = Vector.getcanvas(this.#textEntity[i].properties[this.options.field] && this.#textEntity[i].properties[this.options.field]._value + '')\n // }\n // }\n var label = v;\n for (var index = 0; index < this.options.headTables.length; index++) {\n if (this.options.headTables[index].key === v) {\n label = this.options.headTables[index].label;\n break;\n }\n }\n this._elms.field && (this._elms.field.value = label);\n }\n }, {\n key: \"img\",\n get: function get() {\n return this.options.img;\n },\n set: function set(v) {\n if (!Array.isArray(v)) {\n v = [v];\n }\n this.options.img = v;\n Vector.createImage(this);\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.color = v;\n if (!this.entity) {\n return;\n }\n this.entity.entities.values.forEach(function (enetity) {\n if (enetity.point) {\n enetity.point.color = Cesium.Color.fromCssColorString(v).withAlpha(_this4.opacity);\n }\n if (enetity.polygon) {\n enetity.polygon.material = Cesium.Color.fromCssColorString(v).withAlpha(_this4.opacity);\n }\n if (enetity.polyline) {\n enetity.polyline.material = Cesium.Color.fromCssColorString(v).withAlpha(_this4.opacity);\n }\n });\n }\n }, {\n key: \"onRightClick\",\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n if (this.rightClickCallBack == null && this.options && this.options.id) {\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_14__[\"regRightClickCallback\"])(this.options.id, this.rightClickCB, this);\n }\n this.rightClickCallBack = val;\n }\n }\n }, {\n key: \"leftClickCB\",\n value: function leftClickCB(mo, id, p, that) {\n if (that.clickCallBack && typeof that.clickCallBack === 'function') {\n that.clickCallBack(mo, id, p);\n }\n }\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee4() {\n var _this5 = this;\n var status,\n DialogEvent,\n html,\n contentElm,\n nameElm,\n keyData,\n key,\n label,\n index,\n keyObject,\n keyDataLegpElm,\n i,\n selectElm,\n option,\n _key,\n _label,\n _index,\n o,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n status = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : false;\n DialogEvent = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};\n this.originalOptions = this.deepCopyObj(this.options);\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!status) {\n _context4.next = 74;\n break;\n }\n _context4.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_16__[\"default\"](this.sdk, this.options, {\n title: '编辑属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this5.name = _this5.name.trim();\n if (!_this5.name) {\n _this5.name = '未命名对象';\n }\n _this5.originalOptions.name = _this5.name;\n _this5.originalOptions.field = _this5.field;\n _this5._DialogObject.close();\n DialogEvent.confirmCallBack && DialogEvent.confirmCallBack({\n id: _this5.options.id,\n name: _this5.originalOptions.name,\n field: _this5.originalOptions.field\n });\n },\n closeCallBack: function closeCallBack() {\n _this5.reset();\n DialogEvent.closeCallBack && DialogEvent.closeCallBack();\n }\n });\n case 7:\n this._DialogObject = _context4.sent;\n html = \"\\n
    \\n
    \\n \\u6587\\u4EF6\\u540D\\u79F0\\uFF1A\\n \\n
    \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\u5B57\\u6BB5\\u9009\\u62E9\\uFF1A\\n
    \\n
    \\n
    \\n \";\n contentElm = document.createElement('div');\n contentElm.innerHTML = html;\n this._DialogObject.contentAppChild(contentElm);\n nameElm = contentElm.getElementsByClassName('flie-name')[0];\n nameElm.value = this.options.name;\n nameElm.addEventListener('input', function () {\n _this5.options.name = nameElm.value;\n });\n keyData = [];\n _context4.t0 = _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.keys(this.geojson.features[0].properties);\n case 17:\n if ((_context4.t1 = _context4.t0()).done) {\n _context4.next = 31;\n break;\n }\n key = _context4.t1.value;\n label = key;\n index = 0;\n case 21:\n if (!(index < this.options.headTables.length)) {\n _context4.next = 28;\n break;\n }\n if (!(this.options.headTables[index].key === key)) {\n _context4.next = 25;\n break;\n }\n label = this.options.headTables[index].label;\n return _context4.abrupt(\"break\", 28);\n case 25:\n index++;\n _context4.next = 21;\n break;\n case 28:\n keyData.push({\n name: label,\n value: label,\n key: key\n });\n _context4.next = 17;\n break;\n case 31:\n keyObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_23__[\"legp\"])(contentElm.getElementsByClassName('key-box')[0], '.key');\n if (!keyObject) {\n _context4.next = 47;\n break;\n }\n keyObject.legp_search(keyData);\n keyDataLegpElm = contentElm.getElementsByClassName('key')[0].getElementsByTagName('input')[0];\n keyDataLegpElm.value = this.field;\n i = 0;\n case 37:\n if (!(i < keyData.length)) {\n _context4.next = 45;\n break;\n }\n if (!(keyData[i].key == this.field)) {\n _context4.next = 42;\n break;\n }\n keyDataLegpElm.value = keyData[i].value;\n keyObject.legp_searchActive(keyData[i].value);\n return _context4.abrupt(\"break\", 45);\n case 42:\n i++;\n _context4.next = 37;\n break;\n case 45:\n keyDataLegpElm.addEventListener('input', function () {\n for (var _i = 0; _i < keyData.length; _i++) {\n if (keyData[_i].value === keyDataLegpElm.value) {\n _this5.options.field = keyData[_i].key;\n break;\n }\n }\n });\n this._elms.field = keyDataLegpElm;\n case 47:\n this._elms.name = nameElm;\n return _context4.abrupt(\"return\");\n case 52:\n if ((_context4.t3 = _context4.t2()).done) {\n _context4.next = 67;\n break;\n }\n _key = _context4.t3.value;\n _label = _key;\n _index = 0;\n case 56:\n if (!(_index < this.options.headTables.length)) {\n _context4.next = 63;\n break;\n }\n if (!(this.options.headTables[_index].key === _key)) {\n _context4.next = 60;\n break;\n }\n _label = this.options.headTables[_index].label;\n return _context4.abrupt(\"break\", 63);\n case 60:\n _index++;\n _context4.next = 56;\n break;\n case 63:\n o = \"\");\n option = option + o;\n _context4.next = 52;\n break;\n case 67:\n selectElm.innerHTML = option;\n selectElm.value = this.options.field;\n selectElm.addEventListener('input', function () {\n _this5.options.field = selectElm.value;\n });\n this._elms.name = nameElm;\n this._elms.field = selectElm;\n _context4.next = 75;\n break;\n case 74:\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n case 75:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"editContentById\",\n value: function editContentById(nodeId, content) {\n for (var i = 0; i < this.geojson.features.length; i++) {\n if (this.geojson.features[i].id === nodeId) {\n this.geojson.features[i].content = content;\n break;\n }\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.name = this.originalOptions.name;\n this.field = this.originalOptions.field;\n }\n }, {\n key: \"addAttributeLinkById\",\n value: function addAttributeLinkById(nodeId, link, i) {\n if (this._DialogObject && this._DialogObject.attribute && this._DialogObject.attribute.id == nodeId) {\n if (i || i === 0) {\n this._DialogObject._element.body.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('tr')[i + 1].getElementsByClassName('file-select')[0].value = link;\n } else {\n this._DialogObject.attribute.link.content.push({\n name: '链接',\n url: link\n });\n this.setAttributeLinkById(nodeId, this._DialogObject.attribute.link.content);\n }\n }\n }\n }, {\n key: \"setAttributeLinkById\",\n value: function setAttributeLinkById(nodeId, data) {\n var _this6 = this;\n if (this._DialogObject && this._DialogObject.attribute && this._DialogObject.attribute.id == nodeId) {\n this._DialogObject.attribute.link.content = data;\n var table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (this._DialogObject.attribute.link.content.length > 0) {\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n }\n for (var i = 0; i < this._DialogObject.attribute.link.content.length; i++) {\n var tr = \"\\n
    \\n
    \" + this._DialogObject.attribute.link.content[i].name + \"
    \\n
    \" + this._DialogObject.attribute.link.content[i].url + \"
    \\n
    \\n \\n \\n
    \\n
    \";\n var trElm = document.createRange().createContextualFragment(tr);\n tableContent.appendChild(trElm);\n }\n var item = tableContent.getElementsByClassName('tr');\n var fun = {\n linkEdit: function () {\n var _linkEdit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee5(index) {\n var table, tableContent, item, _loop, _i2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee5$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this6.setAttributeLinkById(nodeId, _this6._DialogObject.attribute.link.content);\n case 2:\n table = _this6._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0];\n tableContent = table.getElementsByClassName('table-body')[0];\n item = tableContent.getElementsByClassName('tr');\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _loop(_i2) {\n var html, td, btn, n, _iterator2, _step2, _loop2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _loop$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (!(index === _i2)) {\n _context6.next = 33;\n break;\n }\n html = \"\\n
    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \";\n item[_i2].innerHTML = html;\n td = item[_i2].getElementsByClassName('td');\n td[0].getElementsByClassName('input')[0].value = _this6._DialogObject.attribute.link.content[index].name;\n td[1].getElementsByClassName('input')[0].value = _this6._DialogObject.attribute.link.content[index].url;\n btn = item[_i2].getElementsByTagName('button');\n n = 0;\n case 8:\n if (!(n < btn.length)) {\n _context6.next = 32;\n break;\n }\n if (!(!btn[n] || !btn[n].attributes)) {\n _context6.next = 11;\n break;\n }\n return _context6.abrupt(\"continue\", 29);\n case 11:\n _iterator2 = _createForOfIteratorHelper(btn[n].attributes);\n _context6.prev = 12;\n _loop2 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _loop2() {\n var m;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _loop2$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n m = _step2.value;\n if (!(m.name === '@click')) {\n _context5.next = 5;\n break;\n }\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value]({\n name: td[0].getElementsByClassName('input')[0].value,\n url: td[1].getElementsByClassName('input')[0].value\n }, _i2);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return _context5.abrupt(\"return\", 1);\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }, _loop2);\n });\n _iterator2.s();\n case 15:\n if ((_step2 = _iterator2.n()).done) {\n _context6.next = 21;\n break;\n }\n return _context6.delegateYield(_loop2(), \"t0\", 17);\n case 17:\n if (!_context6.t0) {\n _context6.next = 19;\n break;\n }\n return _context6.abrupt(\"break\", 21);\n case 19:\n _context6.next = 15;\n break;\n case 21:\n _context6.next = 26;\n break;\n case 23:\n _context6.prev = 23;\n _context6.t1 = _context6[\"catch\"](12);\n _iterator2.e(_context6.t1);\n case 26:\n _context6.prev = 26;\n _iterator2.f();\n return _context6.finish(26);\n case 29:\n n++;\n _context6.next = 8;\n break;\n case 32:\n return _context6.abrupt(\"return\", 1);\n case 33:\n case \"end\":\n return _context6.stop();\n }\n }, _loop, null, [[12, 23, 26, 29]]);\n });\n _i2 = 0;\n case 7:\n if (!(_i2 < item.length)) {\n _context7.next = 14;\n break;\n }\n return _context7.delegateYield(_loop(_i2), \"t0\", 9);\n case 9:\n if (!_context7.t0) {\n _context7.next = 11;\n break;\n }\n return _context7.abrupt(\"break\", 14);\n case 11:\n _i2++;\n _context7.next = 7;\n break;\n case 14:\n case \"end\":\n return _context7.stop();\n }\n }, _callee5);\n }));\n function linkEdit(_x3) {\n return _linkEdit.apply(this, arguments);\n }\n return linkEdit;\n }(),\n linkDelete: function linkDelete(i) {\n _this6._DialogObject.attribute.link.content.splice(i, 1);\n _this6.setAttributeLinkById(nodeId, _this6._DialogObject.attribute.link.content);\n },\n confirmEdit: function confirmEdit(value, i) {\n _this6._DialogObject.attribute.link.content[i] = value;\n _this6.setAttributeLinkById(nodeId, _this6._DialogObject.attribute.link.content);\n },\n cancelEdit: function cancelEdit() {\n _this6.setAttributeLinkById(nodeId, _this6._DialogObject.attribute.link.content);\n },\n fileSelect: function fileSelect(value, i) {\n _this6._DialogObject.event && _this6._DialogObject.event.clickAddLink && _this6._DialogObject.event.clickAddLink(nodeId, i);\n }\n };\n var _loop3 = function _loop3(_i3) {\n var btn = item[_i3].getElementsByTagName('button');\n for (var n = 0; n < btn.length; n++) {\n if (!btn[n] || !btn[n].attributes) {\n continue;\n }\n var _iterator3 = _createForOfIteratorHelper(btn[n].attributes),\n _step3;\n try {\n var _loop4 = function _loop4() {\n var m = _step3.value;\n if (m.name === '@click') {\n btn[n].addEventListener('click', function (e) {\n if (typeof fun[m.value] === 'function') {\n fun[m.value](_i3);\n }\n });\n btn[n].attributes.removeNamedItem(m.name);\n return 1; // break\n }\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n if (_loop4()) break;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n };\n for (var _i3 = 0; _i3 < item.length; _i3++) {\n _loop3(_i3);\n }\n }\n for (var _i4 = 0; _i4 < this.dataArray.length; _i4++) {\n if (this.dataArray[_i4].attr.id === nodeId) {\n if (this.dataArray[_i4].content) {\n this.opt_DialogObject.attribute.link.content = v;\n }\n break;\n }\n }\n }\n }, {\n key: \"getAllNode\",\n value: function getAllNode() {\n return this.data;\n }\n }, {\n key: \"openAllNodeList\",\n value: function openAllNodeList() {\n Object(_openAllNodeList__WEBPACK_IMPORTED_MODULE_17__[\"openAllNodeList\"])(this);\n }\n }, {\n key: \"openNodeListById\",\n value: function openNodeListById(id) {\n Object(_openNodeListById__WEBPACK_IMPORTED_MODULE_18__[\"openNodeListById\"])(this, id);\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee6(id) {\n var _this7 = this;\n var options,\n _loop5,\n i,\n orientation,\n position,\n lng,\n lat,\n alt,\n destination,\n array,\n _args9 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee6$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n options = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"closeViewFollow\"])(this.sdk);\n if (!id) {\n _context9.next = 14;\n break;\n }\n _loop5 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _loop5(i) {\n var range, array;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _loop5$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (_this7.geojson.features[i].id === id) {\n if (_this7.geojson.features[i].geometry.type === 'Point') {\n _this7.getClampToHeight({\n lng: _this7.geojson.features[i].geometry.coordinates[0],\n lat: _this7.geojson.features[i].geometry.coordinates[1]\n }).then(function (height) {\n _this7.sdk.viewer.camera.flyTo({\n orientation: options.orientation,\n destination: Cesium.Cartesian3.fromDegrees(_this7.geojson.features[i].geometry.coordinates[0], _this7.geojson.features[i].geometry.coordinates[1], height + (options.height || 500))\n });\n });\n } else {\n range = _this7.geojson.features[i].geometry.range;\n if (range) {\n array = [];\n _this7.getClampToHeight({\n lng: range[0],\n lat: range[1]\n }).then(function (h) {\n var a = Cesium.Cartesian3.fromDegrees(range[0], range[1], h);\n array.push(a.x, a.y, a.z);\n _this7.getClampToHeight({\n lng: range[2],\n lat: range[3]\n }).then(function (h2) {\n var a = Cesium.Cartesian3.fromDegrees(range[2], range[3], h2);\n array.push(a.x, a.y, a.z);\n var BoundingSphere = Cesium.BoundingSphere.fromVertices(array);\n _this7.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n });\n });\n }\n }\n }\n case 1:\n case \"end\":\n return _context8.stop();\n }\n }, _loop5);\n });\n i = 0;\n case 7:\n if (!(i < this.geojson.features.length)) {\n _context9.next = 12;\n break;\n }\n return _context9.delegateYield(_loop5(i), \"t0\", 9);\n case 9:\n i++;\n _context9.next = 7;\n break;\n case 12:\n _context9.next = 30;\n break;\n case 14:\n if (!this.range) {\n _context9.next = 30;\n break;\n }\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context9.next = 28;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n position = {\n lng: this.range[0],\n lat: this.range[1]\n };\n _context9.next = 20;\n return this.getClampToHeight(position);\n case 20:\n position.alt = _context9.sent;\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context9.next = 30;\n break;\n case 28:\n array = [];\n this.getClampToHeight({\n lng: this.range[0],\n lat: this.range[1]\n }).then(function (h) {\n var a = Cesium.Cartesian3.fromDegrees(_this7.range[0], _this7.range[1], h);\n array.push(a.x, a.y, a.z);\n _this7.getClampToHeight({\n lng: _this7.range[2],\n lat: _this7.range[3]\n }).then(function (h2) {\n var a = Cesium.Cartesian3.fromDegrees(_this7.range[2], _this7.range[3], h2);\n array.push(a.x, a.y, a.z);\n var BoundingSphere = Cesium.BoundingSphere.fromVertices(array);\n _this7.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n });\n });\n case 30:\n case \"end\":\n return _context9.stop();\n }\n }, _callee6, this);\n }));\n function flyTo(_x4) {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"setShow\",\n value: function setShow(status, id) {\n // let enetity = this.entity.entities.getById(id)\n // if(enetity) {\n // enetity.show = status\n // }\n // else {\n\n // }\n if (id) {\n if (!this.entity) {\n return;\n }\n for (var i = 0; i < this.entity.entities.values.length; i++) {\n if (this.entity.entities.values[i].id && this.entity.entities.values[i].id.startsWith(id)) {\n this.entity.entities.values[i].show = status;\n this.entity.entities.values[i]._customShow = status;\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id, this.entity.entities.values[i].id);\n // this.entity.entities.remove(this.entity.entities.values[i])\n break;\n }\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n } else {\n this.options.show = status;\n if (!this.entity) {\n return;\n }\n // this.entity.show = status\n for (var _i5 = 0; _i5 < this.entity.entities.values.length; _i5++) {\n this.entity.entities.values[_i5].show = status;\n this.entity.entities.values[_i5]._customShow = status;\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id, this.entity.entities.values[_i5].id);\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n }\n }\n }, {\n key: \"setShowImg\",\n value: function setShowImg(status, index) {\n if (index || index === 0) {\n for (var i = 0; i < this.imgEntity.length; i++) {\n if (i == index) {\n this.imgEntity[i].show = status;\n break;\n }\n }\n } else {\n for (var _i6 = 0; _i6 < this.imgEntity.length; _i6++) {\n this.imgEntity[_i6].show = status;\n }\n }\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.mark(function _callee7() {\n var _this8 = this;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default.a.wrap(function _callee7$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n if (this.entity) {\n this.entity.entities.values.forEach(function (enetity) {\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_25__[\"remove_entity_from_cluster\"])(_this8.sdk.viewer, enetity);\n });\n }\n _classPrivateFieldSet(_textEntity, this, []);\n // this.#textEntity = []\n // this.viewer.dataSources.remove(this.entity, true)\n this.removeImage();\n this.entity = null;\n this.geojson = {};\n this.data = {};\n _context10.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context10.next = 10;\n return Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 10:\n _context10.next = 12;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_19__[\"syncData\"])(this.sdk, this.options.id);\n case 12:\n case \"end\":\n return _context10.stop();\n }\n }, _callee7, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"removeImage\",\n value: function removeImage() {\n for (var i = 0; i < this.imgEntity.length; i++) {\n this.sdk.viewer.entities.remove(this.imgEntity[i]);\n }\n this.imgEntity = [];\n }\n }, {\n key: \"load\",\n value: function load(callback) {\n if (_classPrivateFieldGet(_loaded, this)) {\n callback();\n } else {\n _classPrivateFieldSet(_loadEvent, this, callback);\n }\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n // that.entity = new Cesium.PrimitiveCollection();\n // that.viewer.scene.primitives.add(that.entity)\n // Vector.calculationScope(that, that.data)\n // Vector.createPoints(that, that.data.points)\n // Vector.createPolylines(that, that.data.polylines)\n // Vector.createPolygons(that, that.data.polygons)\n var bbox = turf.bbox(that.geojson);\n if (bbox && bbox[0] && bbox[0] != Infinity) {\n that.range = bbox;\n }\n that.options.img && Vector.createImage(that);\n var getColor = function getColor(level) {\n // level = Number(level)\n var color = that.options.color;\n if (that.disaster_type_colors && that.disaster_type_colors.hasOwnProperty(level)) {\n color = that.disaster_type_colors[level];\n }\n return color;\n };\n if (that.options.path.endsWith('.kml') || that.options.path.endsWith('.kmz')) {\n var url = '';\n that.options.host = that.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getHost\"])();\n url = that.options.host + '/fileInfo/previewLocal';\n url += '?fileAbsolutePath=' + that.options.path;\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n token: Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getToken\"])(),\n Authorization: 'Bearer ' + Object(_on__WEBPACK_IMPORTED_MODULE_11__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.blob().then(function (data) {\n data.text().then(function (kml) {\n if (that.options.path.endsWith('.kmz')) {\n kml = url;\n } else {\n var parser = new DOMParser(); // new Parser\n kml = parser.parseFromString(kml, 'text/xml'); // Parse string\n var placemark = kml.getElementsByTagName('Placemark');\n for (var i = 0; i < placemark.length; i++) {\n placemark[i].id = that.geojson.features[i].id;\n }\n }\n Cesium.KmlDataSource.load(kml, {\n camera: that.viewer.scene.camera,\n canvas: that.viewer.scene.canvas,\n clampToGround: true\n }).then(function (datasource) {\n createEntity(datasource);\n });\n });\n });\n }\n });\n } else {\n var geoJsonDataSource = new Cesium.GeoJsonDataSource();\n var promise = geoJsonDataSource.load(that.geojson, {\n clampToGround: true\n });\n var Instances = [];\n return promise.then(function (datasource) {\n createEntity(datasource);\n });\n }\n function createEntity(datasource) {\n that.entity = datasource;\n // that.viewer.dataSources.add(datasource);\n datasource.entities.values.forEach(function (entity, index) {\n // if(!that.geojson.features[index]) {\n // return\n // }\n // that.data.list[i].features[index].id = that.data.list[i].features[index].properties.id = entity.id\n // that.geojson.features[index].id = that.geojson.features[index].properties.id = entity.id\n entity.show = that.options.show;\n entity.type = 'vector';\n entity.parentId = that.options.id;\n if (!entity.properties) {\n entity.properties = {};\n }\n\n // that.sdk.viewer.entities.add(entity)\n Object(_Global_cluster_cluster__WEBPACK_IMPORTED_MODULE_25__[\"addCluster\"])(that.sdk, entity);\n var color = getColor(entity.properties && entity.properties[that.options.fxdj] && entity.properties[that.options.fxdj]._value);\n if (entity.billboard) {\n // entity.billboard.show = false\n entity.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n entity.point = new Cesium.PointGraphics({\n show: true,\n // position: new Cesium.Cartesian3(entity.position._value.x, entity.position._value.y, entity.position._value.z), // 点的位置\n color: Cesium.Color.fromCssColorString(color || 'rgba(0,255,184,0.5)').withAlpha(that.opacity),\n // 点的颜色\n pixelSize: 10,\n // 点的大小\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false)\n });\n }\n if (entity.polyline) {\n var material = entity.polyline.material;\n if (color) {\n material = Cesium.Color.fromCssColorString(color).withAlpha(that.opacity);\n }\n entity.polyline = new Cesium.PolylineGraphics({\n positions: entity.polyline.positions._value,\n width: entity.polyline.width && entity.polyline.width.getValue(),\n clampToGround: true,\n material: material,\n zIndex: that.sdk._entityZIndex\n });\n\n // let polyline = new Cesium.GroundPolylineGeometry({\n // positions: entity.polyline.positions._value,\n // width: 2\n // });\n // Instances.push(new Cesium.GeometryInstance({\n // geometry: polyline,\n // attributes: {\n // color: Cesium.ColorGeometryInstanceAttribute.fromColor(\n // Cesium.Color.fromCssColorString('rgba(0,255,184,0.5)')\n // )\n // }\n // }))\n // console.log(entity.polyline)\n }\n if (entity.polygon && entity.polygon.material) {\n entity.polygon.perPositionHeight = false;\n entity.polygon.extrudedHeight = undefined;\n var _material = entity.polygon.material.color._value;\n if (color) {\n _material = Cesium.Color.fromCssColorString(color);\n }\n if (that.opacity || that.opacity === 0) {\n _material = _material.withAlpha(that.opacity);\n }\n var data = entity.kml || entity.kmz;\n if (data) {\n var img = data.extendedData && data.extendedData.BaseTexturePath && data.extendedData.BaseTexturePath.value ? data.extendedData.BaseTexturePath.value : undefined;\n if (img) {\n entity.polygon.material.image = img;\n entity.polygon.material.repeat = new Cesium.Cartesian2(1, 1);\n }\n entity.polygon.material = new Cesium.ImageMaterialProperty({\n image: img,\n // 贴图的URL\n repeat: new Cesium.Cartesian2(1, 1),\n color: _material\n });\n }\n entity.polygon.zIndex = that.sdk._entityZIndex;\n if (that.options.path.endsWith('.kml') || that.options.path.endsWith('.kmz')) {\n var _material2 = color ? Cesium.Color.fromCssColorString('#000000') : entity.polygon.outlineColor.getValue();\n if (that.opacity || that.opacity === 0) {\n _material2 = _material2.withAlpha(that.opacity);\n }\n if (entity.polygon.outlineWidth) {\n entity.polyline = new Cesium.PolylineGraphics({\n positions: entity.polygon.hierarchy._value.positions,\n width: entity.polygon.outlineWidth.getValue(),\n clampToGround: true,\n material: _material2,\n zIndex: that.sdk._entityZIndex\n });\n }\n } else {\n entity.polyline = new Cesium.PolylineGraphics({\n positions: entity.polygon.hierarchy._value.positions,\n width: 1,\n clampToGround: true,\n material: Cesium.Color.fromCssColorString('#000000').withAlpha(that.opacity),\n zIndex: that.sdk._entityZIndex\n });\n\n // 通过生成canvas创建billboard,增加贴地高度的加载速度\n // if (entity.billboard && entity.position && entity.position.getValue()) {\n // const img = new Image();\n // img.src = Vector.getcanvas(entity.properties[that.options.field] && entity.properties[that.options.field]._value + '')\n // img.onload = async function () {\n // let position = entity.position.getValue()\n // let entity2 = new Cesium.Entity({\n // show: that.options.show,\n // id: entity.id + '_text',\n // parentId: that.options.id,\n // position: new Cesium.Cartesian3(position.x, position.y, position.z), // 点的位置\n // billboard: {\n // image: img,\n // pixelOffset: new Cesium.Cartesian2(0, -15),\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n // disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n // return getGroundCover() ? undefined : 100000000\n // }, false)\n // }\n // })\n // entity2.properties = entity.properties\n // that.#textEntity.push(entity2)\n // that.sdk.viewer.entities.add(entity2)\n // }\n // }\n\n if (entity.point) {\n entity.label = new Cesium.LabelGraphics({\n text: new Cesium.CallbackProperty(function () {\n return entity.properties[that.options.field] && entity.properties[that.options.field]._value + '';\n }, false),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 10,\n font: '16px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffeb3b'),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n pixelOffset: new Cesium.Cartesian2(0, -15),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false)\n });\n }\n }\n that.sdk._entityZIndex++;\n }\n if (that.options.path.endsWith('.kml') || that.options.path.endsWith('.kmz')) {\n if (entity.label) {\n entity.label.font = '16px Microsoft YaHei';\n var feature = that.geojson.features[index];\n entity.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUND;\n entity.properties = feature ? feature.properties : {};\n if (!entity.properties.id && !entity.properties.Id && !entity.properties.ID) {\n entity.properties.addProperty('id', entity.id);\n }\n entity.label.text = new Cesium.CallbackProperty(function () {\n return entity.properties[that.options.field] && entity.properties[that.options.field]._value + '';\n }, false);\n }\n } else {\n if (entity.point) {\n entity.label = new Cesium.LabelGraphics({\n text: new Cesium.CallbackProperty(function () {\n return entity.properties[that.options.field] && entity.properties[that.options.field]._value + '';\n }, false),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 10,\n font: '16px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffeb3b'),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n pixelOffset: new Cesium.Cartesian2(0, -15),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n disableDepthTestDistance: new Cesium.CallbackProperty(function () {\n return Object(_Global_global__WEBPACK_IMPORTED_MODULE_24__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n }, false)\n });\n }\n }\n });\n if (!that.options.field) {\n var properties = ['name', 'Name', 'NAME'];\n var field = properties.find(function (prop) {\n return that.geojson.features[0].properties[prop] !== undefined;\n });\n if (field) {\n that.options.field = field;\n } else {\n var isChinese = function isChinese(str) {\n return /[\\u4e00-\\u9fa5]/.test(str);\n };\n var sortedKeys = Object.keys(that.geojson.features[0].properties || {}).sort(function (a, b) {\n var aIsCN = isChinese(a);\n var bIsCN = isChinese(b);\n if (!aIsCN && bIsCN) return -1;\n if (aIsCN && !bIsCN) return 1;\n\n // 非中文:纯字母序(不区分大小写);中文:拼音序\n return aIsCN ? a.localeCompare(b, 'zh-CN') : a.toUpperCase().localeCompare(b.toUpperCase());\n });\n that.options.field = sortedKeys[0];\n }\n }\n // for (let i = 0; i < that.#textEntity.length; i++) {\n // that.entity.entities.add(that.#textEntity[i])\n // }\n _classPrivateFieldSet(_loaded, that, true);\n if (_classPrivateFieldGet(_loadEvent, that)) {\n _classPrivateFieldGet(_loadEvent, that).call(that);\n }\n // let primitive = new Cesium.GroundPolylinePrimitive({\n // geometryInstances: Instances,\n // appearance: new Cesium.PolylineColorAppearance()\n // });\n // that.viewer.scene.primitives.add(primitive);\n // that.viewer.zoomTo(datasource)\n }\n }\n }, {\n key: \"createImage\",\n value: function createImage(that) {\n //(primitive无法贴地?)\n that.removeImage();\n if (!that.range) {\n return;\n }\n for (var i = 0; i < that.options.img.length; i++) {\n var _Cesium$Rectangle;\n var entity = that.sdk.viewer.entities.add({\n show: that.options.show,\n rectangle: {\n coordinates: (_Cesium$Rectangle = Cesium.Rectangle).fromDegrees.apply(_Cesium$Rectangle, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(that.range)),\n material: new Cesium.ImageMaterialProperty({\n image: that.options.img[i],\n transparent: true\n })\n }\n });\n that.imgEntity.push(entity);\n }\n }\n }, {\n key: \"getcanvas\",\n value: function getcanvas(text) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n ctx.font = '16px YaHei';\n var texts = text.split('\\n');\n var canvasWidth = 0;\n var canvasHeight = 0;\n for (var i = 0; i < texts.length; i++) {\n var t = texts[i];\n var width = ctx.measureText(t).width;\n if (width > canvasWidth) {\n canvasWidth = width;\n }\n canvasHeight += 16;\n }\n canvasHeight = canvasHeight + 10 + (texts.length - 1) * 5;\n canvasWidth = canvasWidth + 30;\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n var linearGradient = ctx.createLinearGradient(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = linearGradient;\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = '#ffffff';\n ctx.font = '16px YaHei';\n ctx.strokeStyle = '#000000';\n ctx.strokeText(texts, 15, 16 * texts.length + 10 * 10 / 16 + texts.length * 5);\n ctx.fillText(texts, 15, 16 * texts.length + 10 * 10 / 16 + texts.length - 1 * 5);\n ctx.moveTo(canvasWidth / 2, canvasHeight);\n ctx.stroke();\n ctx.closePath();\n return canvas.toDataURL();\n }\n }, {\n key: \"createTableContent\",\n value: function createTableContent(that) {\n var trsElm = '';\n for (var i = 0; i < that.currentData.length; i++) {\n var trElm = '';\n var tdElm = '';\n for (var key in that.currentData[i].attr) {\n tdElm = tdElm + \"
    \").concat(that.currentData[i].attr[key], \"
    \");\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVmVjdG9yL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1ZlY3Rvci9pbmRleC5qcz9kZWI5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEhvc3QsIGdldFRva2VuIH0gZnJvbSAnLi4vLi4vLi4vb24nXHJcbmltcG9ydCBCYXNlIGZyb20gJy4uL2luZGV4J1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi9FbGVtZW50L1BhZ2luYXRpb24nXHJcbmltcG9ydCB7XHJcbiAgcmVnTGVmdENsaWNrQ2FsbGJhY2ssXHJcbiAgcmVnUmlnaHRDbGlja0NhbGxiYWNrXHJcbn0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL0NsaWNrQ2FsbGJhY2snXHJcbmltcG9ydCByaWNoVGV4dCBmcm9tICcuLi8uLi9FbGVtZW50L3JpY2hUZXh0J1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJ1xyXG5pbXBvcnQgeyBvcGVuQWxsTm9kZUxpc3QgYXMgT3BlbkFsbE5vZGVMaXN0IH0gZnJvbSAnLi9vcGVuQWxsTm9kZUxpc3QnXHJcbmltcG9ydCB7IG9wZW5Ob2RlTGlzdEJ5SWQgYXMgT3Blbk5vZGVMaXN0QnlJZCB9IGZyb20gJy4vb3Blbk5vZGVMaXN0QnlJZCdcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHN5bmNTcGxpdERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IGF0dHJpYnV0ZUVsbSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcbmltcG9ydCB7IFByb2ogfSBmcm9tICcuLi8uLi8uLi9Ub29scy9wcm9qJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCdcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBnZXRHcm91bmRDb3ZlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcbmltcG9ydCB7XHJcbiAgYWRkQ2x1c3RlcixcclxuICByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3RlclxyXG59IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9jbHVzdGVyL2NsdXN0ZXInXHJcbmxldCBjb2xvcnMgPSByZXF1aXJlKCcuL2NvbG9yLmpzb24nKVxyXG5cclxuY2xhc3MgVmVjdG9yIGV4dGVuZHMgQmFzZSB7XHJcbiAgI2xvYWRFdmVudCA9IHZvaWQgMFxyXG4gICNsb2FkZWQgPSBmYWxzZVxyXG4gICN0ZXh0RW50aXR5ID0gW11cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBhdGgpIHtcclxuICAgICAgdGhpcy5lcnJvciA9ICfmnKrmj5Dkvpvot6/lvoQhJ1xyXG4gICAgICBpZiAod2luZG93LkVMRU1FTlQpIHtcclxuICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlLmNsb3NlQWxsKClcclxuICAgICAgICB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZXJyb3IsXHJcbiAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS53YXJuKHRoaXMuZXJyb3IpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5jb2xvcnMgPSBjb2xvcnNcclxuICAgIHRoaXMub3B0aW9ucy5oZWFkVGFibGVzID0gb3B0aW9ucy5oZWFkVGFibGVzIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5pyq5ZG95ZCN5a+56LGhJ1xyXG5cclxuICAgIC8vIGlmICghdGhpcy5vcHRpb25zLnBhdGguZW5kc1dpdGgoJy5rbWwnKSkge1xyXG4gICAgLy8gICA7ICh0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8ICdyZ2JhKDAsMjU1LDE4NCwwLjUpJyksXHJcbiAgICAvLyAgICAgKHRoaXMub3B0aW9ucy5vcGFjaXR5ID1cclxuICAgIC8vICAgICAgIG9wdGlvbnMub3BhY2l0eSB8fCBvcHRpb25zLm9wYWNpdHkgPT09IDAgPyBvcHRpb25zLm9wYWNpdHkgOiAxKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID1cclxuICAgICAgb3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcblxyXG4gICAgdGhpcy50b3RhbCA9IDBcclxuICAgIHRoaXMucGFnZSA9IDFcclxuICAgIHRoaXMucGFnZVNpemUgPSAyMFxyXG4gICAgdGhpcy5jdXJyZW50RGF0YSA9IFtdXHJcbiAgICB0aGlzLmRhdGEgPSBbXVxyXG4gICAgdGhpcy5saXN0ID0gW11cclxuICAgIHRoaXMuaW1nRW50aXR5ID0gW11cclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fZWxtcyA9IHt9XHJcblxyXG4gICAgdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuXHJcbiAgICB0aGlzLmRpc2FzdGVyX3R5cGVfY29sb3JzID0gY29sb3JzW3RoaXMub3B0aW9ucy5kaXNhc3Rlcl90eXBlXVxyXG4gICAgICA/IHsgLi4uY29sb3JzW3RoaXMub3B0aW9ucy5kaXNhc3Rlcl90eXBlXSB9XHJcbiAgICAgIDogdm9pZCAwXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRpc2FzdGVyX3R5cGVfY29sb3JzKSB7XHJcbiAgICAgIHRoaXMuZGlzYXN0ZXJfdHlwZV9jb2xvcnNba2V5XSA9IHRoaXMuY215a1RvUmdiKFxyXG4gICAgICAgIHRoaXMuZGlzYXN0ZXJfdHlwZV9jb2xvcnNba2V5XVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAndmVjdG9yJ1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dcclxuICB9XHJcbiAgc2V0IHNob3codikge1xyXG4gICAgdGhpcy5zZXRTaG93KHYpXHJcbiAgfVxyXG5cclxuICBnZXQgb3BhY2l0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eVxyXG4gIH1cclxuXHJcbiAgc2V0IG9wYWNpdHkodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm9wYWNpdHkgPSB2XHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmZvckVhY2goZW5ldGl0eSA9PiB7XHJcbiAgICAgICAgaWYgKGVuZXRpdHkucG9pbnQpIHtcclxuICAgICAgICAgIGVuZXRpdHkucG9pbnQuY29sb3IgPSBlbmV0aXR5LnBvaW50LmNvbG9yLl92YWx1ZS53aXRoQWxwaGEodilcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVuZXRpdHkucG9seWdvbikge1xyXG4gICAgICAgICAgZW5ldGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gZW5ldGl0eS5wb2x5Z29uLm1hdGVyaWFsLmNvbG9yLl92YWx1ZS53aXRoQWxwaGEoXHJcbiAgICAgICAgICAgIHZcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVuZXRpdHkucG9seWxpbmUpIHtcclxuICAgICAgICAgIGVuZXRpdHkucG9seWxpbmUubWF0ZXJpYWwgPSBlbmV0aXR5LnBvbHlsaW5lLm1hdGVyaWFsLmNvbG9yLl92YWx1ZS53aXRoQWxwaGEoXHJcbiAgICAgICAgICAgIHZcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbigpIHtcclxuICAgIGlmICghdGhpcy5zZGsgfHwgIXRoaXMudmlld2VyIHx8ICF0aGlzLm9wdGlvbnMucGF0aCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmluaXQoKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCB1cmwgPSAnJ1xyXG4gICAgICB0aGlzLm9wdGlvbnMuaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0IHx8IGdldEhvc3QoKVxyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcvZ2RhbC9pbXBvcnQnXHJcbiAgICAgIC8vIHVybCA9ICdqc29uL3NocC5qc29uJ1xyXG4gICAgICBsZXQgcGFyYW1zID0gbmV3IEZvcm1EYXRhKClcclxuICAgICAgcGFyYW1zLmFwcGVuZCgncGF0aCcsIHRoaXMub3B0aW9ucy5wYXRoKVxyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBnZXRUb2tlbigpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBib2R5OiBwYXJhbXNcclxuICAgICAgfSlcclxuICAgICAgY29uc29sZS5sb2coJ3Jlc3BvbnNlJywgcmVzcG9uc2UpXHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIGxldCBhcnJheUJ1ZmZlciA9IGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKClcclxuICAgICAgICBsZXQgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKVxyXG4gICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLmRlY29tcHJlc3NHemlwKHVpbnQ4QXJyYXkpXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2Uoc3RyaW5nKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhJywgdGhpcy5kYXRhKVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZm9ybWF0RGF0YSgpXHJcbiAgICAgICAgVmVjdG9yLmNyZWF0ZSh0aGlzKVxyXG4gICAgICAgIHJlc29sdmUoKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOagvOW8j+WMluaVsOaNrlxyXG4gIGFzeW5jIGZvcm1hdERhdGEoKSB7XHJcbiAgICBsZXQgZmVhdHVyZXMgPSBbXVxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG5cclxuICAgIGNvbnN0IHBvc0NvbnZlcnQgPSAoZGF0YSwgc3JjLCBkc3QpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICBwb3NDb252ZXJ0KGRhdGFbaV0sIHNyYywgZHN0KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgbGV0IHggPSBOdW1iZXIoZGF0YVswXSlcclxuICAgICAgICAgICAgbGV0IHkgPSBOdW1iZXIoZGF0YVsxXSlcclxuICAgICAgICAgICAgbGV0IHJlcyA9IHByb2o0KHNyYywgZHN0LCBbeCwgeV0pXHJcbiAgICAgICAgICAgIGRhdGFbMF0gPSBOdW1iZXIocmVzWzBdLnRvRml4ZWQoMTApKVxyXG4gICAgICAgICAgICBkYXRhWzFdID0gTnVtYmVyKHJlc1sxXS50b0ZpeGVkKDEwKSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgcG9zQ29udmVydChkYXRhLmNvb3JkaW5hdGVzLCBzcmMsIGRzdClcclxuICAgICAgICAgICAgcG9zQ29udmVydChkYXRhLmdlb21ldHJpZXMsIHNyYywgZHN0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3JzX3NyYyA9ICcnXHJcbiAgICAgIGxldCBjcnNfZHN0ID0gJydcclxuICAgICAgZm9yIChsZXQgW2tleSwgaXRlbV0gb2YgdGhpcy5uYW1lX21hcCkge1xyXG4gICAgICAgIGlmIChpdGVtLmRlZiA9PT0gdGhpcy5kYXRhLmxpc3RbaV0uY3JzX3NyYykge1xyXG4gICAgICAgICAgY3JzX3NyYyA9IGl0ZW0uZXBzZ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5kZWYgPT09IHRoaXMuZGF0YS5saXN0W2ldLmNyc19kc3QpIHtcclxuICAgICAgICAgIGNyc19kc3QgPSBpdGVtLmVwc2dcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aGlzLmRhdGEubGlzdFtpXS5mZWF0dXJlcy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLnByb3BlcnRpZXMuaWRcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLnByb3BlcnRpZXMpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLnByb3BlcnRpZXMgPSB7fVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLnByb3BlcnRpZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLnByb3BlcnRpZXMuaWQgPSBDZXNpdW0uY3JlYXRlR3VpZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLmlkID0gdGhpcy5kYXRhLmxpc3RbaV0uZmVhdHVyZXNbbV0ucHJvcGVydGllcy5pZFxyXG4gICAgICAgIHBvc0NvbnZlcnQoXHJcbiAgICAgICAgICB0aGlzLmRhdGEubGlzdFtpXS5mZWF0dXJlc1ttXS5nZW9tZXRyeSxcclxuICAgICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmNyc19zcmMgfHwgJytwcm9qPWxvbmdsYXQgK2RhdHVtPVdHUzg0ICtub19kZWZzJyxcclxuICAgICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmNyc19kc3QgfHwgJytwcm9qPWxvbmdsYXQgK2RhdHVtPVdHUzg0ICtub19kZWZzJ1xyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmRhdGEubGlzdFtpXS5mZWF0dXJlc1ttXS5nZW9tZXRyeS5nZW9tZXRyaWVzIHx8XHJcbiAgICAgICAgICAodGhpcy5kYXRhLmxpc3RbaV0uZmVhdHVyZXNbbV0uZ2VvbWV0cnkuZ2VvbWV0cmllcyA9IFtdKVxyXG4gICAgICAgIGxldCByYW5nZSA9IHR1cmYuYmJveCh0aGlzLmRhdGEubGlzdFtpXS5mZWF0dXJlc1ttXS5nZW9tZXRyeSlcclxuICAgICAgICBpZiAocmFuZ2UgJiYgcmFuZ2VbMF0gJiYgcmFuZ2VbMF0gIT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dLmdlb21ldHJ5LnJhbmdlID0gdHVyZi5iYm94KFxyXG4gICAgICAgICAgICB0aGlzLmRhdGEubGlzdFtpXS5mZWF0dXJlc1ttXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlcy5wdXNoKHRoaXMuZGF0YS5saXN0W2ldLmZlYXR1cmVzW21dKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZW9qc29uID0ge1xyXG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxyXG4gICAgICBmZWF0dXJlczogZmVhdHVyZXNcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZ2VvanNvbilcclxuXHJcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uaWQgPSB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0ucHJvcGVydGllcy5pZFxyXG4gICAgLy8gICB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uZ2VvbWV0cnkucmFuZ2UgPSB0dXJmLmJib3godGhpcy5nZW9qc29uLmZlYXR1cmVzW2ldKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5uYW1lXHJcbiAgfVxyXG4gIHNldCBuYW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gdlxyXG4gICAgdGhpcy5fZWxtcy5uYW1lICYmICh0aGlzLl9lbG1zLm5hbWUudmFsdWUgPSB2KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZpZWxkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWVsZFxyXG4gIH1cclxuICBzZXQgZmllbGQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmZpZWxkID0gdlxyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLiN0ZXh0RW50aXR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgLy8gICBpbWcuc3JjID0gVmVjdG9yLmdldGNhbnZhcyh0aGlzLiN0ZXh0RW50aXR5W2ldLnByb3BlcnRpZXNbdGhpcy5vcHRpb25zLmZpZWxkXSAmJiB0aGlzLiN0ZXh0RW50aXR5W2ldLnByb3BlcnRpZXNbdGhpcy5vcHRpb25zLmZpZWxkXS5fdmFsdWUgKyAnJylcclxuICAgIC8vICAgaW1nLm9ubG9hZCA9IGFzeW5jICgpID0+IHtcclxuICAgIC8vICAgICB0aGlzLiN0ZXh0RW50aXR5W2ldLmJpbGxib2FyZC5pbWFnZSA9IFZlY3Rvci5nZXRjYW52YXModGhpcy4jdGV4dEVudGl0eVtpXS5wcm9wZXJ0aWVzW3RoaXMub3B0aW9ucy5maWVsZF0gJiYgdGhpcy4jdGV4dEVudGl0eVtpXS5wcm9wZXJ0aWVzW3RoaXMub3B0aW9ucy5maWVsZF0uX3ZhbHVlICsgJycpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIGxldCBsYWJlbCA9IHZcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuaGVhZFRhYmxlcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWFkVGFibGVzW2luZGV4XS5rZXkgPT09IHYpIHtcclxuICAgICAgICBsYWJlbCA9IHRoaXMub3B0aW9ucy5oZWFkVGFibGVzW2luZGV4XS5sYWJlbFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMuZmllbGQgJiYgKHRoaXMuX2VsbXMuZmllbGQudmFsdWUgPSBsYWJlbClcclxuICB9XHJcblxyXG4gIGdldCBpbWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmltZ1xyXG4gIH1cclxuXHJcbiAgc2V0IGltZyh2KSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodikpIHtcclxuICAgICAgdiA9IFt2XVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmltZyA9IHZcclxuICAgIFZlY3Rvci5jcmVhdGVJbWFnZSh0aGlzKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHZcclxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXMuZm9yRWFjaChlbmV0aXR5ID0+IHtcclxuICAgICAgaWYgKGVuZXRpdHkucG9pbnQpIHtcclxuICAgICAgICBlbmV0aXR5LnBvaW50LmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KS53aXRoQWxwaGEoXHJcbiAgICAgICAgICB0aGlzLm9wYWNpdHlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVuZXRpdHkucG9seWdvbikge1xyXG4gICAgICAgIGVuZXRpdHkucG9seWdvbi5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodikud2l0aEFscGhhKFxyXG4gICAgICAgICAgdGhpcy5vcGFjaXR5XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmV0aXR5LnBvbHlsaW5lKSB7XHJcbiAgICAgICAgZW5ldGl0eS5wb2x5bGluZS5tYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoXHJcbiAgICAgICAgICB2XHJcbiAgICAgICAgKS53aXRoQWxwaGEodGhpcy5vcGFjaXR5KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0IG9uUmlnaHRDbGljayh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd2YWw6JywgdmFsLCAn5LiN5piv5LiA5LiqZnVuY3Rpb24nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucmlnaHRDbGlja0NhbGxCYWNrID09IG51bGwgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayh0aGlzLm9wdGlvbnMuaWQsIHRoaXMucmlnaHRDbGlja0NCLCB0aGlzKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmlnaHRDbGlja0NhbGxCYWNrID0gdmFsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsZWZ0Q2xpY2tDQihtbywgaWQsIHAsIHRoYXQpIHtcclxuICAgIGlmICh0aGF0LmNsaWNrQ2FsbEJhY2sgJiYgdHlwZW9mIHRoYXQuY2xpY2tDYWxsQmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aGF0LmNsaWNrQ2FsbEJhY2sobW8sIGlkLCBwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICAvLyB0aGF0LmVudGl0eSA9IG5ldyBDZXNpdW0uUHJpbWl0aXZlQ29sbGVjdGlvbigpO1xyXG4gICAgLy8gdGhhdC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQodGhhdC5lbnRpdHkpXHJcbiAgICAvLyBWZWN0b3IuY2FsY3VsYXRpb25TY29wZSh0aGF0LCB0aGF0LmRhdGEpXHJcbiAgICAvLyBWZWN0b3IuY3JlYXRlUG9pbnRzKHRoYXQsIHRoYXQuZGF0YS5wb2ludHMpXHJcbiAgICAvLyBWZWN0b3IuY3JlYXRlUG9seWxpbmVzKHRoYXQsIHRoYXQuZGF0YS5wb2x5bGluZXMpXHJcbiAgICAvLyBWZWN0b3IuY3JlYXRlUG9seWdvbnModGhhdCwgdGhhdC5kYXRhLnBvbHlnb25zKVxyXG4gICAgbGV0IGJib3ggPSB0dXJmLmJib3godGhhdC5nZW9qc29uKVxyXG4gICAgaWYgKGJib3ggJiYgYmJveFswXSAmJiBiYm94WzBdICE9IEluZmluaXR5KSB7XHJcbiAgICAgIHRoYXQucmFuZ2UgPSBiYm94XHJcbiAgICB9XHJcbiAgICB0aGF0Lm9wdGlvbnMuaW1nICYmIFZlY3Rvci5jcmVhdGVJbWFnZSh0aGF0KVxyXG4gICAgY29uc3QgZ2V0Q29sb3IgPSBsZXZlbCA9PiB7XHJcbiAgICAgIC8vIGxldmVsID0gTnVtYmVyKGxldmVsKVxyXG4gICAgICBsZXQgY29sb3IgPSB0aGF0Lm9wdGlvbnMuY29sb3JcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoYXQuZGlzYXN0ZXJfdHlwZV9jb2xvcnMgJiZcclxuICAgICAgICB0aGF0LmRpc2FzdGVyX3R5cGVfY29sb3JzLmhhc093blByb3BlcnR5KGxldmVsKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2xvciA9IHRoYXQuZGlzYXN0ZXJfdHlwZV9jb2xvcnNbbGV2ZWxdXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbG9yXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGF0Lm9wdGlvbnMucGF0aC5lbmRzV2l0aCgnLmttbCcpIHx8XHJcbiAgICAgIHRoYXQub3B0aW9ucy5wYXRoLmVuZHNXaXRoKCcua216JylcclxuICAgICkge1xyXG4gICAgICBsZXQgdXJsID0gJydcclxuICAgICAgdGhhdC5vcHRpb25zLmhvc3QgPSB0aGF0Lm9wdGlvbnMuaG9zdCB8fCBnZXRIb3N0KClcclxuICAgICAgdXJsID0gdGhhdC5vcHRpb25zLmhvc3QgKyAnL2ZpbGVJbmZvL3ByZXZpZXdMb2NhbCdcclxuICAgICAgdXJsICs9ICc/ZmlsZUFic29sdXRlUGF0aD0nICsgdGhhdC5vcHRpb25zLnBhdGhcclxuICAgICAgZmV0Y2godXJsLCB7XHJcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgdG9rZW46IGdldFRva2VuKCksXHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyBnZXRUb2tlbigpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgIHJlc3BvbnNlLmJsb2IoKS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkYXRhLnRleHQoKS50aGVuKGttbCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5wYXRoLmVuZHNXaXRoKCcua216JykpIHtcclxuICAgICAgICAgICAgICAgIGttbCA9IHVybFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCkgLy8gbmV3IFBhcnNlclxyXG4gICAgICAgICAgICAgICAga21sID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrbWwsICd0ZXh0L3htbCcpIC8vIFBhcnNlIHN0cmluZ1xyXG4gICAgICAgICAgICAgICAgbGV0IHBsYWNlbWFyayA9IGttbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnUGxhY2VtYXJrJylcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGxhY2VtYXJrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWFya1tpXS5pZCA9IHRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBDZXNpdW0uS21sRGF0YVNvdXJjZS5sb2FkKGttbCwge1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhOiB0aGF0LnZpZXdlci5zY2VuZS5jYW1lcmEsXHJcbiAgICAgICAgICAgICAgICBjYW52YXM6IHRoYXQudmlld2VyLnNjZW5lLmNhbnZhcyxcclxuICAgICAgICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWVcclxuICAgICAgICAgICAgICB9KS50aGVuKGRhdGFzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY3JlYXRlRW50aXR5KGRhdGFzb3VyY2UpXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZ2VvSnNvbkRhdGFTb3VyY2UgPSBuZXcgQ2VzaXVtLkdlb0pzb25EYXRhU291cmNlKClcclxuICAgICAgbGV0IHByb21pc2UgPSBnZW9Kc29uRGF0YVNvdXJjZS5sb2FkKHRoYXQuZ2VvanNvbiwge1xyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgbGV0IEluc3RhbmNlcyA9IFtdXHJcbiAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oZGF0YXNvdXJjZSA9PiB7XHJcbiAgICAgICAgY3JlYXRlRW50aXR5KGRhdGFzb3VyY2UpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY3JlYXRlRW50aXR5KGRhdGFzb3VyY2UpIHtcclxuICAgICAgdGhhdC5lbnRpdHkgPSBkYXRhc291cmNlXHJcbiAgICAgIC8vIHRoYXQudmlld2VyLmRhdGFTb3VyY2VzLmFkZChkYXRhc291cmNlKTtcclxuICAgICAgZGF0YXNvdXJjZS5lbnRpdGllcy52YWx1ZXMuZm9yRWFjaCgoZW50aXR5LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIC8vIGlmKCF0aGF0Lmdlb2pzb24uZmVhdHVyZXNbaW5kZXhdKSB7XHJcbiAgICAgICAgLy8gICByZXR1cm5cclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gdGhhdC5kYXRhLmxpc3RbaV0uZmVhdHVyZXNbaW5kZXhdLmlkID0gdGhhdC5kYXRhLmxpc3RbaV0uZmVhdHVyZXNbaW5kZXhdLnByb3BlcnRpZXMuaWQgPSBlbnRpdHkuaWRcclxuICAgICAgICAvLyB0aGF0Lmdlb2pzb24uZmVhdHVyZXNbaW5kZXhdLmlkID0gdGhhdC5nZW9qc29uLmZlYXR1cmVzW2luZGV4XS5wcm9wZXJ0aWVzLmlkID0gZW50aXR5LmlkXHJcbiAgICAgICAgZW50aXR5LnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvd1xyXG4gICAgICAgIGVudGl0eS50eXBlID0gJ3ZlY3RvcidcclxuICAgICAgICBlbnRpdHkucGFyZW50SWQgPSB0aGF0Lm9wdGlvbnMuaWRcclxuICAgICAgICBpZiAoIWVudGl0eS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllcyA9IHt9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKGVudGl0eSlcclxuICAgICAgICBhZGRDbHVzdGVyKHRoYXQuc2RrLCBlbnRpdHkpXHJcbiAgICAgICAgbGV0IGNvbG9yID0gZ2V0Q29sb3IoXHJcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgZW50aXR5LnByb3BlcnRpZXNbdGhhdC5vcHRpb25zLmZ4ZGpdICYmXHJcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllc1t0aGF0Lm9wdGlvbnMuZnhkal0uX3ZhbHVlXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChlbnRpdHkuYmlsbGJvYXJkKSB7XHJcbiAgICAgICAgICAvLyBlbnRpdHkuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgZW50aXR5LmJpbGxib2FyZC5oZWlnaHRSZWZlcmVuY2UgPVxyXG4gICAgICAgICAgICBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORFxyXG4gICAgICAgICAgZW50aXR5LnBvaW50ID0gbmV3IENlc2l1bS5Qb2ludEdyYXBoaWNzKHtcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhlbnRpdHkucG9zaXRpb24uX3ZhbHVlLngsIGVudGl0eS5wb3NpdGlvbi5fdmFsdWUueSwgZW50aXR5LnBvc2l0aW9uLl92YWx1ZS56KSwgLy8g54K555qE5L2N572uXHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKFxyXG4gICAgICAgICAgICAgIGNvbG9yIHx8ICdyZ2JhKDAsMjU1LDE4NCwwLjUpJ1xyXG4gICAgICAgICAgICApLndpdGhBbHBoYSh0aGF0Lm9wYWNpdHkpLCAvLyDngrnnmoTpopzoibJcclxuICAgICAgICAgICAgcGl4ZWxTaXplOiAxMCwgLy8g54K555qE5aSn5bCPXHJcbiAgICAgICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkQsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZ2V0R3JvdW5kQ292ZXIoKSA/IHVuZGVmaW5lZCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZW50aXR5LnBvbHlsaW5lKSB7XHJcbiAgICAgICAgICBsZXQgbWF0ZXJpYWwgPSBlbnRpdHkucG9seWxpbmUubWF0ZXJpYWxcclxuICAgICAgICAgIGlmIChjb2xvcikge1xyXG4gICAgICAgICAgICBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoY29sb3IpLndpdGhBbHBoYShcclxuICAgICAgICAgICAgICB0aGF0Lm9wYWNpdHlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZW50aXR5LnBvbHlsaW5lID0gbmV3IENlc2l1bS5Qb2x5bGluZUdyYXBoaWNzKHtcclxuICAgICAgICAgICAgcG9zaXRpb25zOiBlbnRpdHkucG9seWxpbmUucG9zaXRpb25zLl92YWx1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IGVudGl0eS5wb2x5bGluZS53aWR0aCAmJiBlbnRpdHkucG9seWxpbmUud2lkdGguZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsLFxyXG4gICAgICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgLy8gbGV0IHBvbHlsaW5lID0gbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgIC8vICAgcG9zaXRpb25zOiBlbnRpdHkucG9seWxpbmUucG9zaXRpb25zLl92YWx1ZSxcclxuICAgICAgICAgIC8vICAgd2lkdGg6IDJcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgLy8gSW5zdGFuY2VzLnB1c2gobmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgIC8vICAgZ2VvbWV0cnk6IHBvbHlsaW5lLFxyXG4gICAgICAgICAgLy8gICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAvLyAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgICAgLy8gICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygncmdiYSgwLDI1NSwxODQsMC41KScpXHJcbiAgICAgICAgICAvLyAgICAgKVxyXG4gICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAvLyB9KSlcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGVudGl0eS5wb2x5bGluZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHkucG9seWdvbiAmJiBlbnRpdHkucG9seWdvbi5tYXRlcmlhbCkge1xyXG4gICAgICAgICAgZW50aXR5LnBvbHlnb24ucGVyUG9zaXRpb25IZWlnaHQgPSBmYWxzZVxyXG4gICAgICAgICAgZW50aXR5LnBvbHlnb24uZXh0cnVkZWRIZWlnaHQgPSB1bmRlZmluZWRcclxuICAgICAgICAgIGxldCBtYXRlcmlhbCA9IGVudGl0eS5wb2x5Z29uLm1hdGVyaWFsLmNvbG9yLl92YWx1ZVxyXG4gICAgICAgICAgaWYgKGNvbG9yKSB7XHJcbiAgICAgICAgICAgIG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhjb2xvcilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0Lm9wYWNpdHkgfHwgdGhhdC5vcGFjaXR5ID09PSAwKSB7XHJcbiAgICAgICAgICAgIG1hdGVyaWFsID0gbWF0ZXJpYWwud2l0aEFscGhhKHRoYXQub3BhY2l0eSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBkYXRhID0gZW50aXR5LmttbCB8fCBlbnRpdHkua216XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBsZXQgaW1nID1cclxuICAgICAgICAgICAgICBkYXRhLmV4dGVuZGVkRGF0YSAmJlxyXG4gICAgICAgICAgICAgICAgZGF0YS5leHRlbmRlZERhdGEuQmFzZVRleHR1cmVQYXRoICYmXHJcbiAgICAgICAgICAgICAgICBkYXRhLmV4dGVuZGVkRGF0YS5CYXNlVGV4dHVyZVBhdGgudmFsdWVcclxuICAgICAgICAgICAgICAgID8gZGF0YS5leHRlbmRlZERhdGEuQmFzZVRleHR1cmVQYXRoLnZhbHVlXHJcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICBpZiAoaW1nKSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LnBvbHlnb24ubWF0ZXJpYWwuaW1hZ2UgPSBpbWdcclxuICAgICAgICAgICAgICBlbnRpdHkucG9seWdvbi5tYXRlcmlhbC5yZXBlYXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMSwgMSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IG5ldyBDZXNpdW0uSW1hZ2VNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgICBpbWFnZTogaW1nLCAvLyDotLTlm77nmoRVUkxcclxuICAgICAgICAgICAgICByZXBlYXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxLCAxKSxcclxuICAgICAgICAgICAgICBjb2xvcjogbWF0ZXJpYWxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVudGl0eS5wb2x5Z29uLnpJbmRleCA9IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wYXRoLmVuZHNXaXRoKCcua21sJykgfHxcclxuICAgICAgICAgICAgdGhhdC5vcHRpb25zLnBhdGguZW5kc1dpdGgoJy5rbXonKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRlcmlhbCA9IGNvbG9yXHJcbiAgICAgICAgICAgICAgPyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjMDAwMDAwJylcclxuICAgICAgICAgICAgICA6IGVudGl0eS5wb2x5Z29uLm91dGxpbmVDb2xvci5nZXRWYWx1ZSgpXHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm9wYWNpdHkgfHwgdGhhdC5vcGFjaXR5ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbWF0ZXJpYWwgPSBtYXRlcmlhbC53aXRoQWxwaGEodGhhdC5vcGFjaXR5KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbnRpdHkucG9seWdvbi5vdXRsaW5lV2lkdGgpIHtcclxuICAgICAgICAgICAgICBlbnRpdHkucG9seWxpbmUgPSBuZXcgQ2VzaXVtLlBvbHlsaW5lR3JhcGhpY3Moe1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiBlbnRpdHkucG9seWdvbi5oaWVyYXJjaHkuX3ZhbHVlLnBvc2l0aW9ucyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBlbnRpdHkucG9seWdvbi5vdXRsaW5lV2lkdGguZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtYXRlcmlhbDogbWF0ZXJpYWwsXHJcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHRoYXQuc2RrLl9lbnRpdHlaSW5kZXhcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZW50aXR5LnBvbHlsaW5lID0gbmV3IENlc2l1bS5Qb2x5bGluZUdyYXBoaWNzKHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IGVudGl0eS5wb2x5Z29uLmhpZXJhcmNoeS5fdmFsdWUucG9zaXRpb25zLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyMwMDAwMDAnKS53aXRoQWxwaGEoXHJcbiAgICAgICAgICAgICAgICB0aGF0Lm9wYWNpdHlcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHpJbmRleDogdGhhdC5zZGsuX2VudGl0eVpJbmRleFxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgLy8g6YCa6L+H55Sf5oiQY2FudmFz5Yib5bu6YmlsbGJvYXJk77yM5aKe5Yqg6LS05Zyw6auY5bqm55qE5Yqg6L296YCf5bqmXHJcbiAgICAgICAgICAgIC8vIGlmIChlbnRpdHkuYmlsbGJvYXJkICYmIGVudGl0eS5wb3NpdGlvbiAmJiBlbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKSkge1xyXG4gICAgICAgICAgICAvLyAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgICAgICAvLyAgIGltZy5zcmMgPSBWZWN0b3IuZ2V0Y2FudmFzKGVudGl0eS5wcm9wZXJ0aWVzW3RoYXQub3B0aW9ucy5maWVsZF0gJiYgZW50aXR5LnByb3BlcnRpZXNbdGhhdC5vcHRpb25zLmZpZWxkXS5fdmFsdWUgKyAnJylcclxuICAgICAgICAgICAgLy8gICBpbWcub25sb2FkID0gYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAvLyAgICAgbGV0IHBvc2l0aW9uID0gZW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgICAgLy8gICAgIGxldCBlbnRpdHkyID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgICAgICAvLyAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgICAgICAgLy8gICAgICAgaWQ6IGVudGl0eS5pZCArICdfdGV4dCcsXHJcbiAgICAgICAgICAgIC8vICAgICAgIHBhcmVudElkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgIC8vICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMocG9zaXRpb24ueCwgcG9zaXRpb24ueSwgcG9zaXRpb24ueiksIC8vIOeCueeahOS9jee9rlxyXG4gICAgICAgICAgICAvLyAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgLy8gICAgICAgICBpbWFnZTogaW1nLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTE1KSxcclxuICAgICAgICAgICAgLy8gICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgICAgLy8gICAgICAgICBoZWlnaHRSZWZlcmVuY2U6IENlc2l1bS5IZWlnaHRSZWZlcmVuY2UuQ0xBTVBfVE9fR1JPVU5ELFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgIHJldHVybiBnZXRHcm91bmRDb3ZlcigpID8gdW5kZWZpbmVkIDogMTAwMDAwMDAwXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgfSwgZmFsc2UpXHJcbiAgICAgICAgICAgIC8vICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgICAgIC8vICAgICBlbnRpdHkyLnByb3BlcnRpZXMgPSBlbnRpdHkucHJvcGVydGllc1xyXG4gICAgICAgICAgICAvLyAgICAgdGhhdC4jdGV4dEVudGl0eS5wdXNoKGVudGl0eTIpXHJcbiAgICAgICAgICAgIC8vICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKGVudGl0eTIpXHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZW50aXR5LnBvaW50KSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LmxhYmVsID0gbmV3IENlc2l1bS5MYWJlbEdyYXBoaWNzKHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BlcnRpZXNbdGhhdC5vcHRpb25zLmZpZWxkXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzW3RoYXQub3B0aW9ucy5maWVsZF0uX3ZhbHVlICsgJydcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lV2lkdGg6IDEwLFxyXG4gICAgICAgICAgICAgICAgZm9udDogJzE2cHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZWIzYicpLFxyXG4gICAgICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC0xNSksXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICAgICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkQsXHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRHcm91bmRDb3ZlcigpID8gdW5kZWZpbmVkIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBhdGguZW5kc1dpdGgoJy5rbWwnKSB8fFxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBhdGguZW5kc1dpdGgoJy5rbXonKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKGVudGl0eS5sYWJlbCkge1xyXG4gICAgICAgICAgICBlbnRpdHkubGFiZWwuZm9udCA9ICcxNnB4IE1pY3Jvc29mdCBZYUhlaSdcclxuICAgICAgICAgICAgbGV0IGZlYXR1cmUgPSB0aGF0Lmdlb2pzb24uZmVhdHVyZXNbaW5kZXhdXHJcbiAgICAgICAgICAgIGVudGl0eS5iaWxsYm9hcmQuaGVpZ2h0UmVmZXJlbmNlID0gQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkRcclxuICAgICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMgPSBmZWF0dXJlID8gZmVhdHVyZS5wcm9wZXJ0aWVzIDoge31cclxuICAgICAgICAgICAgaWYgKCFlbnRpdHkucHJvcGVydGllcy5pZCAmJiAhZW50aXR5LnByb3BlcnRpZXMuSWQgJiYgIWVudGl0eS5wcm9wZXJ0aWVzLklEKSB7XHJcbiAgICAgICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuYWRkUHJvcGVydHkoJ2lkJywgZW50aXR5LmlkKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbnRpdHkubGFiZWwudGV4dCA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS5wcm9wZXJ0aWVzW3RoYXQub3B0aW9ucy5maWVsZF0gJiYgZW50aXR5LnByb3BlcnRpZXNbdGhhdC5vcHRpb25zLmZpZWxkXS5fdmFsdWUgKyAnJ1xyXG4gICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5LnBvaW50KSB7XHJcbiAgICAgICAgICAgIGVudGl0eS5sYWJlbCA9IG5ldyBDZXNpdW0uTGFiZWxHcmFwaGljcyh7XHJcbiAgICAgICAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzW3RoYXQub3B0aW9ucy5maWVsZF0gJiZcclxuICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BlcnRpZXNbdGhhdC5vcHRpb25zLmZpZWxkXS5fdmFsdWUgKyAnJ1xyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5CTEFDSyxcclxuICAgICAgICAgICAgICBvdXRsaW5lV2lkdGg6IDEwLFxyXG4gICAgICAgICAgICAgIGZvbnQ6ICcxNnB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmZlYjNiJyksXHJcbiAgICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgICAgcGl4ZWxPZmZzZXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAtMTUpLFxyXG4gICAgICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5DTEFNUF9UT19HUk9VTkQsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghdGhhdC5vcHRpb25zLmZpZWxkKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnbmFtZScsICdOYW1lJywgJ05BTUUnXTtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHByb3BlcnRpZXMuZmluZChwcm9wID0+IHRoYXQuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzW3Byb3BdICE9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLmZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXNDaGluZXNlID0gKHN0cikgPT4gL1tcXHU0ZTAwLVxcdTlmYTVdLy50ZXN0KHN0cik7XHJcbiAgICAgICAgICBjb25zdCBzb3J0ZWRLZXlzID0gT2JqZWN0LmtleXModGhhdC5nZW9qc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMgfHwge30pLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYUlzQ04gPSBpc0NoaW5lc2UoYSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJJc0NOID0gaXNDaGluZXNlKGIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFhSXNDTiAmJiBiSXNDTikgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICBpZiAoYUlzQ04gJiYgIWJJc0NOKSByZXR1cm4gMTtcclxuXHJcbiAgICAgICAgICAgIC8vIOmdnuS4reaWh++8mue6r+Wtl+avjeW6j++8iOS4jeWMuuWIhuWkp+Wwj+WGme+8ie+8m+S4reaWh++8muaLvOmfs+W6j1xyXG4gICAgICAgICAgICByZXR1cm4gYUlzQ05cclxuICAgICAgICAgICAgICA/IGEubG9jYWxlQ29tcGFyZShiLCAnemgtQ04nKVxyXG4gICAgICAgICAgICAgIDogYS50b1VwcGVyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLmZpZWxkID0gc29ydGVkS2V5c1swXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQuI3RleHRFbnRpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICB0aGF0LmVudGl0eS5lbnRpdGllcy5hZGQodGhhdC4jdGV4dEVudGl0eVtpXSlcclxuICAgICAgLy8gfVxyXG4gICAgICB0aGF0LiNsb2FkZWQgPSB0cnVlXHJcbiAgICAgIGlmICh0aGF0LiNsb2FkRXZlbnQpIHtcclxuICAgICAgICB0aGF0LiNsb2FkRXZlbnQoKVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGxldCBwcmltaXRpdmUgPSBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgLy8gICBnZW9tZXRyeUluc3RhbmNlczogSW5zdGFuY2VzLFxyXG4gICAgICAvLyAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uUG9seWxpbmVDb2xvckFwcGVhcmFuY2UoKVxyXG4gICAgICAvLyB9KTtcclxuICAgICAgLy8gdGhhdC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQocHJpbWl0aXZlKTtcclxuICAgICAgLy8gdGhhdC52aWV3ZXIuem9vbVRvKGRhdGFzb3VyY2UpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlSW1hZ2UodGhhdCkge1xyXG4gICAgLy8ocHJpbWl0aXZl5peg5rOV6LS05ZywPylcclxuICAgIHRoYXQucmVtb3ZlSW1hZ2UoKVxyXG4gICAgaWYgKCF0aGF0LnJhbmdlKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMuaW1nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBlbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgICByZWN0YW5nbGU6IHtcclxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBDZXNpdW0uUmVjdGFuZ2xlLmZyb21EZWdyZWVzKC4uLnRoYXQucmFuZ2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uSW1hZ2VNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgaW1hZ2U6IHRoYXQub3B0aW9ucy5pbWdbaV0sXHJcbiAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhhdC5pbWdFbnRpdHkucHVzaChlbnRpdHkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Y2FudmFzKHRleHQpIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXHJcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIGN0eC5mb250ID0gJzE2cHggWWFIZWknXHJcbiAgICBsZXQgdGV4dHMgPSB0ZXh0LnNwbGl0KCdcXG4nKVxyXG4gICAgbGV0IGNhbnZhc1dpZHRoID0gMFxyXG4gICAgbGV0IGNhbnZhc0hlaWdodCA9IDBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdCA9IHRleHRzW2ldXHJcbiAgICAgIGNvbnN0IHdpZHRoID0gY3R4Lm1lYXN1cmVUZXh0KHQpLndpZHRoXHJcbiAgICAgIGlmICh3aWR0aCA+IGNhbnZhc1dpZHRoKSB7XHJcbiAgICAgICAgY2FudmFzV2lkdGggPSB3aWR0aFxyXG4gICAgICB9XHJcbiAgICAgIGNhbnZhc0hlaWdodCArPSAxNlxyXG4gICAgfVxyXG4gICAgY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICsgMTAgKyAodGV4dHMubGVuZ3RoIC0gMSkgKiA1XHJcbiAgICBjYW52YXNXaWR0aCA9IGNhbnZhc1dpZHRoICsgMzBcclxuICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1dpZHRoXHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0XHJcbiAgICBjb25zdCBsaW5lYXJHcmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudChcclxuICAgICAgMCxcclxuICAgICAgMCxcclxuICAgICAgY2FudmFzV2lkdGgsXHJcbiAgICAgIGNhbnZhc0hlaWdodFxyXG4gICAgKVxyXG4gICAgY3R4LmZpbGxTdHlsZSA9IGxpbmVhckdyYWRpZW50XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodClcclxuICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZmZmZidcclxuICAgIGN0eC5mb250ID0gJzE2cHggWWFIZWknXHJcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzAwMDAwMCdcclxuICAgIGN0eC5zdHJva2VUZXh0KFxyXG4gICAgICB0ZXh0cyxcclxuICAgICAgMTUsXHJcbiAgICAgIDE2ICogdGV4dHMubGVuZ3RoICsgKDEwICogMTApIC8gMTYgKyB0ZXh0cy5sZW5ndGggKiA1XHJcbiAgICApXHJcbiAgICBjdHguZmlsbFRleHQoXHJcbiAgICAgIHRleHRzLFxyXG4gICAgICAxNSxcclxuICAgICAgMTYgKiB0ZXh0cy5sZW5ndGggKyAoMTAgKiAxMCkgLyAxNiArIHRleHRzLmxlbmd0aCAtIDEgKiA1XHJcbiAgICApXHJcblxyXG4gICAgY3R4Lm1vdmVUbyhjYW52YXNXaWR0aCAvIDIsIGNhbnZhc0hlaWdodClcclxuICAgIGN0eC5zdHJva2UoKVxyXG4gICAgY3R4LmNsb3NlUGF0aCgpXHJcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpXHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0KHN0YXR1cyA9IGZhbHNlLCBEaWFsb2dFdmVudCA9IHt9KSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+e8lui+keWxnuaApycsXHJcbiAgICAgICAgbGVmdDogJzE4MHB4JyxcclxuICAgICAgICB0b3A6ICcxMDBweCcsXHJcbiAgICAgICAgY29uZmlybUNhbGxCYWNrOiBvcHRpb25zID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lID0gdGhpcy5uYW1lXHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5maWVsZCA9IHRoaXMuZmllbGRcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgICAgICBEaWFsb2dFdmVudC5jb25maXJtQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgRGlhbG9nRXZlbnQuY29uZmlybUNhbGxCYWNrKHtcclxuICAgICAgICAgICAgICBpZDogdGhpcy5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWUsXHJcbiAgICAgICAgICAgICAgZmllbGQ6IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpZWxkXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIERpYWxvZ0V2ZW50LmNsb3NlQ2FsbEJhY2sgJiYgRGlhbG9nRXZlbnQuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBsZXQgaHRtbCA9IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaWh+S7tuWQjeensO+8mjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBmbGllLW5hbWVcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBrZXktYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7DlrZfmrrXpgInmi6nvvJo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrZXlcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgYFxyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbFxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gICAgICBsZXQgbmFtZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmxpZS1uYW1lJylbMF1cclxuICAgICAgbmFtZUVsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5uYW1lXHJcbiAgICAgIG5hbWVFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm5hbWUgPSBuYW1lRWxtLnZhbHVlXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQga2V5RGF0YSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmdlb2pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcykge1xyXG4gICAgICAgIGxldCBsYWJlbCA9IGtleVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuaGVhZFRhYmxlcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZFRhYmxlc1tpbmRleF0ua2V5ID09PSBrZXkpIHtcclxuICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9wdGlvbnMuaGVhZFRhYmxlc1tpbmRleF0ubGFiZWxcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAga2V5RGF0YS5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IGxhYmVsLFxyXG4gICAgICAgICAga2V5OiBrZXlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBrZXlPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgna2V5LWJveCcpWzBdLFxyXG4gICAgICAgICcua2V5J1xyXG4gICAgICApXHJcblxyXG4gICAgICBpZiAoa2V5T2JqZWN0KSB7XHJcbiAgICAgICAga2V5T2JqZWN0LmxlZ3Bfc2VhcmNoKGtleURhdGEpXHJcbiAgICAgICAgbGV0IGtleURhdGFMZWdwRWxtID0gY29udGVudEVsbVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2tleScpWzBdXHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICBrZXlEYXRhTGVncEVsbS52YWx1ZSA9IHRoaXMuZmllbGRcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChrZXlEYXRhW2ldLmtleSA9PSB0aGlzLmZpZWxkKSB7XHJcbiAgICAgICAgICAgIGtleURhdGFMZWdwRWxtLnZhbHVlID0ga2V5RGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBrZXlPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoa2V5RGF0YVtpXS52YWx1ZSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAga2V5RGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGtleURhdGFbaV0udmFsdWUgPT09IGtleURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpZWxkID0ga2V5RGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmZpZWxkID0ga2V5RGF0YUxlZ3BFbG1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9lbG1zLm5hbWUgPSBuYW1lRWxtXHJcblxyXG4gICAgICByZXR1cm5cclxuXHJcbiAgICAgIGxldCBzZWxlY3RFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LXNlbGVjdCcpWzBdXHJcbiAgICAgIGxldCBvcHRpb24gPSAnJ1xyXG4gICAgICAvLyBmb3IgKGxldCBrZXkgaW4gdGhpcy5nZW9qc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMpIHtcclxuICAgICAgLy8gICBsZXQgbyA9IGA8b3B0aW9uIHZhbHVlPVwiJHtrZXl9XCI+JHtrZXl9PC9vcHRpb24+YFxyXG4gICAgICAvLyAgIG9wdGlvbiA9IG9wdGlvbiArIG9cclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgbGV0IGxhYmVsID0ga2V5XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5oZWFkVGFibGVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWFkVGFibGVzW2luZGV4XS5rZXkgPT09IGtleSkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMub3B0aW9ucy5oZWFkVGFibGVzW2luZGV4XS5sYWJlbFxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbyA9IGA8b3B0aW9uIHZhbHVlPVwiJHtrZXl9XCI+JHtsYWJlbH08L29wdGlvbj5gXHJcbiAgICAgICAgb3B0aW9uID0gb3B0aW9uICsgb1xyXG4gICAgICB9XHJcbiAgICAgIHNlbGVjdEVsbS5pbm5lckhUTUwgPSBvcHRpb25cclxuICAgICAgc2VsZWN0RWxtLnZhbHVlID0gdGhpcy5vcHRpb25zLmZpZWxkXHJcbiAgICAgIHNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZmllbGQgPSBzZWxlY3RFbG0udmFsdWVcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuX2VsbXMubmFtZSA9IG5hbWVFbG1cclxuICAgICAgdGhpcy5fZWxtcy5maWVsZCA9IHNlbGVjdEVsbVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZWRpdENvbnRlbnRCeUlkKG5vZGVJZCwgY29udGVudCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gbm9kZUlkKSB7XHJcbiAgICAgICAgdGhpcy5nZW9qc29uLmZlYXR1cmVzW2ldLmNvbnRlbnQgPSBjb250ZW50XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLmZpZWxkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmllbGRcclxuICB9XHJcblxyXG4gIGFkZEF0dHJpYnV0ZUxpbmtCeUlkKG5vZGVJZCwgbGluaywgaSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgJiZcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZSAmJlxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmlkID09IG5vZGVJZFxyXG4gICAgKSB7XHJcbiAgICAgIGlmIChpIHx8IGkgPT09IDApIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2F0dHJpYnV0ZS1jb250ZW50LWxpbmsnKVsxXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgICAgICBbaSArIDFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZpbGUtc2VsZWN0JylbMF0udmFsdWUgPSBsaW5rXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICAgIHVybDogbGlua1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVMaW5rQnlJZChcclxuICAgICAgICAgIG5vZGVJZCxcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBdHRyaWJ1dGVMaW5rQnlJZChub2RlSWQsIGRhdGEpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ICYmXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUgJiZcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5pZCA9PSBub2RlSWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IGRhdGFcclxuICAgICAgbGV0IHRhYmxlID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnRcclxuICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdXHJcbiAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlJylbMF1cclxuICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgfVxyXG4gICAgICBmb3IgKFxyXG4gICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICBpIDwgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQubGVuZ3RoO1xyXG4gICAgICAgIGkrK1xyXG4gICAgICApIHtcclxuICAgICAgICBsZXQgdHIgPVxyXG4gICAgICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldLm5hbWUgK1xyXG4gICAgICAgICAgYDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj5gICtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldLnVybCArXHJcbiAgICAgICAgICBgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRWRpdFwiPue8lui+kTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJsaW5rRGVsZXRlXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PmBcclxuICAgICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgICB0YWJsZUNvbnRlbnQuYXBwZW5kQ2hpbGQodHJFbG0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGl0ZW0gPSB0YWJsZUNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICBsZXQgZnVuID0ge1xyXG4gICAgICAgIGxpbmtFZGl0OiBhc3luYyBpbmRleCA9PiB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldEF0dHJpYnV0ZUxpbmtCeUlkKFxyXG4gICAgICAgICAgICBub2RlSWQsXHJcbiAgICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBsZXQgdGFibGUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtbGluaycpWzFdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZScpWzBdXHJcbiAgICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdXHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHRhYmxlQ29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSBpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGh0bWwgPSBgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgZmlsZS1zZWxlY3RcIiB0eXBlPVwidGV4dFwiIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImZpbGVTZWxlY3RcIj4uLi48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNvbmZpcm1FZGl0XCI+56Gu6K6kPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY2FuY2VsRWRpdFwiPuWPlua2iDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgICBpdGVtW2ldLmlubmVySFRNTCA9IGh0bWxcclxuICAgICAgICAgICAgICBsZXQgdGQgPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RkJylcclxuICAgICAgICAgICAgICB0ZFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAgICAgJ2lucHV0J1xyXG4gICAgICAgICAgICAgIClbMF0udmFsdWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudFtpbmRleF0ubmFtZVxyXG4gICAgICAgICAgICAgIHRkWzFdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICAgICAnaW5wdXQnXHJcbiAgICAgICAgICAgICAgKVswXS52YWx1ZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2luZGV4XS51cmxcclxuICAgICAgICAgICAgICBsZXQgYnRuID0gaXRlbVtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylcclxuICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJ0bi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFidG5bbl0gfHwgIWJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBidG5bbl0uYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAobS5uYW1lID09PSAnQGNsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGJ0bltuXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5bbS52YWx1ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuW20udmFsdWVdKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRkWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0ZFsxXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dCcpWzBdLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsaW5rRGVsZXRlOiBpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50LnNwbGljZShpLCAxKVxyXG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVMaW5rQnlJZChcclxuICAgICAgICAgICAgbm9kZUlkLFxyXG4gICAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuYXR0cmlidXRlLmxpbmsuY29udGVudFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNvbmZpcm1FZGl0OiAodmFsdWUsIGkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50W2ldID0gdmFsdWVcclxuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlTGlua0J5SWQoXHJcbiAgICAgICAgICAgIG5vZGVJZCxcclxuICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICAgIClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbmNlbEVkaXQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlTGlua0J5SWQoXHJcbiAgICAgICAgICAgIG5vZGVJZCxcclxuICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICAgIClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZpbGVTZWxlY3Q6ICh2YWx1ZSwgaSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmV2ZW50ICYmXHJcbiAgICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5ldmVudC5jbGlja0FkZExpbmsgJiZcclxuICAgICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmV2ZW50LmNsaWNrQWRkTGluayhub2RlSWQsIGkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBidG4gPSBpdGVtW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKVxyXG4gICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgYnRuLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICBpZiAoIWJ0bltuXSB8fCAhYnRuW25dLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3IgKGxldCBtIG9mIGJ0bltuXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmIChtLm5hbWUgPT09ICdAY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgYnRuW25dLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1blttLnZhbHVlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICBmdW5bbS52YWx1ZV0oaSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGJ0bltuXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5kYXRhQXJyYXlbaV0uYXR0ci5pZCA9PT0gbm9kZUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YUFycmF5W2ldLmNvbnRlbnQpIHtcclxuICAgICAgICAgIHRoaXMub3B0X0RpYWxvZ09iamVjdC5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdlxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBbGxOb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVxyXG4gIH1cclxuXHJcbiAgb3BlbkFsbE5vZGVMaXN0KCkge1xyXG4gICAgT3BlbkFsbE5vZGVMaXN0KHRoaXMpXHJcbiAgfVxyXG4gIG9wZW5Ob2RlTGlzdEJ5SWQoaWQpIHtcclxuICAgIE9wZW5Ob2RlTGlzdEJ5SWQodGhpcywgaWQpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlVGFibGVDb250ZW50KHRoYXQpIHtcclxuICAgIGxldCB0cnNFbG0gPSAnJ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0LmN1cnJlbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ckVsbSA9ICc8dHIgY2xhc3M9XCJlbC10YWJsZV9fcm93XCI+J1xyXG4gICAgICBsZXQgdGRFbG0gPSAnJ1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhhdC5jdXJyZW50RGF0YVtpXS5hdHRyKSB7XHJcbiAgICAgICAgdGRFbG0gPVxyXG4gICAgICAgICAgdGRFbG0gK1xyXG4gICAgICAgICAgYDx0ZCByb3dzcGFuPVwiMVwiIGNvbHNwYW49XCIxXCIgY2xhc3M9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9ICAgZWwtdGFibGVfX2NlbGxcIj48ZGl2IGNsYXNzPVwiY2VsbFwiPiR7dGhhdC5jdXJyZW50RGF0YVtpXS5hdHRyW2tleV19PC9kaXY+PC90ZD5gXHJcbiAgICAgIH1cclxuICAgICAgdHJFbG0gPSB0ckVsbSArIHRkRWxtICsgJzwvdHI+J1xyXG4gICAgICB0cnNFbG0gPSB0cnNFbG0gKyB0ckVsbVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyc0VsbVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmx5VG8oaWQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5nZW9qc29uLmZlYXR1cmVzW2ldLmlkID09PSBpZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICAgICAgbG5nOiB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgbGF0OiB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgfSkudGhlbihoZWlnaHQgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24sXHJcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2VvanNvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZW9qc29uLmZlYXR1cmVzW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHQgKyAob3B0aW9ucy5oZWlnaHQgfHwgNTAwKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcmFuZ2UgPSB0aGlzLmdlb2pzb24uZmVhdHVyZXNbaV0uZ2VvbWV0cnkucmFuZ2VcclxuICAgICAgICAgICAgaWYgKHJhbmdlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoeyBsbmc6IHJhbmdlWzBdLCBsYXQ6IHJhbmdlWzFdIH0pLnRoZW4oXHJcbiAgICAgICAgICAgICAgICBoID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhyYW5nZVswXSwgcmFuZ2VbMV0sIGgpXHJcbiAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiByYW5nZVsyXSwgbGF0OiByYW5nZVszXSB9KS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIGgyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlWzJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZVszXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaDJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5XHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJvdW5kaW5nU3BoZXJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJlxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJlxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb25cclxuICAgICAgICApIHtcclxuICAgICAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjBcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKFxyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnJvbGwgfHwgMC4wXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiB0aGlzLnJhbmdlWzBdLCBsYXQ6IHRoaXMucmFuZ2VbMV0gfVxyXG4gICAgICAgICAgcG9zaXRpb24uYWx0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHBvc2l0aW9uKVxyXG4gICAgICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nICsgcG9zaXRpb24ubG5nXHJcbiAgICAgICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQgKyBwb3NpdGlvbi5sYXRcclxuICAgICAgICAgIGxldCBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuICAgICAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgICAgIHRoaXMuZ2V0Q2xhbXBUb0hlaWdodCh7XHJcbiAgICAgICAgICAgIGxuZzogdGhpcy5yYW5nZVswXSxcclxuICAgICAgICAgICAgbGF0OiB0aGlzLnJhbmdlWzFdXHJcbiAgICAgICAgICB9KS50aGVuKGggPT4ge1xyXG4gICAgICAgICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgIHRoaXMucmFuZ2VbMF0sXHJcbiAgICAgICAgICAgICAgdGhpcy5yYW5nZVsxXSxcclxuICAgICAgICAgICAgICBoXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgYXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICAgICAgICB0aGlzLmdldENsYW1wVG9IZWlnaHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogdGhpcy5yYW5nZVsyXSxcclxuICAgICAgICAgICAgICBsYXQ6IHRoaXMucmFuZ2VbM11cclxuICAgICAgICAgICAgfSkudGhlbihoMiA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgICAgICAgIHRoaXMucmFuZ2VbMl0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlWzNdLFxyXG4gICAgICAgICAgICAgICAgaDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgYXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgICAgICAgICAgIGxldCBCb3VuZGluZ1NwaGVyZSA9IENlc2l1bS5Cb3VuZGluZ1NwaGVyZS5mcm9tVmVydGljZXMoYXJyYXkpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKSxcclxuICAgICAgICAgICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTaG93KHN0YXR1cywgaWQpIHtcclxuICAgIC8vIGxldCBlbmV0aXR5ID0gdGhpcy5lbnRpdHkuZW50aXRpZXMuZ2V0QnlJZChpZClcclxuICAgIC8vIGlmKGVuZXRpdHkpIHtcclxuICAgIC8vICAgZW5ldGl0eS5zaG93ID0gc3RhdHVzXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuXHJcbiAgICAvLyB9XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkICYmXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQuc3RhcnRzV2l0aChpZClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gc3RhdHVzXHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPSBzdGF0dXNcclxuICAgICAgICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZCwgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IHN0YXR1c1xyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5lbnRpdHkuc2hvdyA9IHN0YXR1c1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gc3RhdHVzXHJcbiAgICAgICAgdGhpcy5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID0gc3RhdHVzXHJcbiAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkLCB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQpXHJcbiAgICAgIH1cclxuICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNob3dJbWcoc3RhdHVzLCBpbmRleCkge1xyXG4gICAgaWYgKGluZGV4IHx8IGluZGV4ID09PSAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbWdFbnRpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaSA9PSBpbmRleCkge1xyXG4gICAgICAgICAgdGhpcy5pbWdFbnRpdHlbaV0uc2hvdyA9IHN0YXR1c1xyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbWdFbnRpdHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmltZ0VudGl0eVtpXS5zaG93ID0gc3RhdHVzXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIGlmICh0aGlzLmVudGl0eSkge1xyXG4gICAgICB0aGlzLmVudGl0eS5lbnRpdGllcy52YWx1ZXMuZm9yRWFjaChlbmV0aXR5ID0+IHtcclxuICAgICAgICByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3Rlcih0aGlzLnNkay52aWV3ZXIsIGVuZXRpdHkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLiN0ZXh0RW50aXR5ID0gW11cclxuICAgIC8vIHRoaXMuI3RleHRFbnRpdHkgPSBbXVxyXG4gICAgLy8gdGhpcy52aWV3ZXIuZGF0YVNvdXJjZXMucmVtb3ZlKHRoaXMuZW50aXR5LCB0cnVlKVxyXG4gICAgdGhpcy5yZW1vdmVJbWFnZSgpXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIHRoaXMuZ2VvanNvbiA9IHt9XHJcbiAgICB0aGlzLmRhdGEgPSB7fVxyXG5cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcblxyXG4gICAgYXdhaXQgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIHJlbW92ZUltYWdlKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmltZ0VudGl0eS5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuaW1nRW50aXR5W2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbWdFbnRpdHkgPSBbXVxyXG4gIH1cclxuXHJcbiAgbG9hZChjYWxsYmFjaykge1xyXG4gICAgaWYgKHRoaXMuI2xvYWRlZCkge1xyXG4gICAgICBjYWxsYmFjaygpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLiNsb2FkRXZlbnQgPSBjYWxsYmFja1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFZlY3RvclxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE3QkE7QUFBQTtBQUFBO0FBQUE7QUErQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE5RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpRkE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMlpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUF2QkE7QUF3QkE7QUFjQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUdBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXRJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBS0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBR0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFsQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbURBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVZBO0FBQUE7QUFRQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUtBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFuREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzREE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFHQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUExSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBdjlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNFZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUEwTkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/Vector/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Vector/openAllNodeList.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/Vector/openAllNodeList.js ***! - \************************************************/ -/*! exports provided: openAllNodeList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openAllNodeList\", function() { return openAllNodeList; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _BaseDialog_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../BaseDialog/index */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Element_Pagination__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Element/Pagination */ \"./src/Obj/Element/Pagination.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\nvar _DialogObject;\nvar openAllNodeList = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(that) {\n var total, page, pageSize, currentData, createTableContent, dataArrayFilter, trsElm, box, searchElm, talbeElm, headerElm, hcolgroupElm, theadElm, bodyElm, bcolgroupElm, i, key, tbodyElm, emptyElm, emptyNode, headerWrapper, bodyWrapper, paginationElm, search;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n total = 0;\n page = 1;\n pageSize = 20;\n currentData = [];\n if (_DialogObject && !_DialogObject.isDestroy) {\n _DialogObject.close();\n _DialogObject = null;\n }\n createTableContent = function createTableContent() {\n var trsElm = '';\n for (var _i = 0; _i < currentData.length; _i++) {\n var trElm = '';\n var tdElm = '';\n if ('fid' in currentData[_i].properties) {\n tdElm = \"
    \").concat(currentData[_i].properties.fid, \"
    \");\n }\n for (var key in currentData[_i].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n tdElm = tdElm + \"
    \").concat(currentData[_i].properties[key], \"
    \");\n }\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n };\n _context.next = 8;\n return new _BaseDialog_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"](that.viewer._container, {\n title: '',\n left: '17%',\n top: '100px'\n });\n case 8:\n _DialogObject = _context.sent;\n _context.next = 11;\n return _DialogObject.init();\n case 11:\n dataArrayFilter = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(that.geojson.features);\n total = dataArrayFilter.length;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n trsElm = createTableContent();\n box = document.createElement('div');\n box.style.height = '100%';\n searchElm = '
    ';\n talbeElm = '
    ';\n headerElm = '
    ';\n hcolgroupElm = '';\n theadElm = '';\n bodyElm = '
    ';\n bcolgroupElm = '';\n i = 1; // thead\n if ('fid' in that.geojson.features[0].properties) {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n for (key in that.geojson.features[0].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n }\n //tbody\n tbodyElm = '';\n tbodyElm = tbodyElm + trsElm + '';\n //empty\n emptyElm = '
    暂无数据
    ';\n hcolgroupElm = hcolgroupElm + '';\n bcolgroupElm = bcolgroupElm + '';\n theadElm = theadElm + '';\n headerElm = headerElm + hcolgroupElm + theadElm + '
    fid
    \").concat(key, \"
    ';\n bodyElm = bodyElm + bcolgroupElm + tbodyElm + '' + emptyElm + '
    ';\n talbeElm = talbeElm + headerElm + bodyElm + '';\n box.innerHTML = searchElm + talbeElm + '
    ';\n emptyNode = box.getElementsByClassName('el-table__empty-block')[0];\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n // this.viewer._container.appendChild(box)\n _DialogObject.contentAppChild(box);\n headerWrapper = box.getElementsByClassName('el-table__header-wrapper')[0];\n bodyWrapper = box.getElementsByClassName('el-table__body-wrapper')[0];\n bodyWrapper.addEventListener('scroll', function (e) {\n headerWrapper.scrollLeft = e.target.scrollLeft;\n });\n _DialogObject._element.title.style.height = '40px';\n _DialogObject._element.body.style.width = '65%';\n _DialogObject._element.body.style.height = '80%';\n _DialogObject._element.content.style.height = 'calc(100% - 40px)';\n _DialogObject._element.content.style.overflow = 'hidden';\n _DialogObject._element.foot.style.display = 'none';\n bodyWrapper.style.height = \"calc(100% - \".concat(headerWrapper.offsetHeight, \"px)\");\n paginationElm = box.getElementsByClassName('pagination')[0];\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_5__[\"generatePagination\"])(paginationElm, total, pageSize, page, function (pageIndex) {\n page = pageIndex;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n });\n search = function search() {\n var input = box.getElementsByClassName('search-box')[0].getElementsByTagName('input')[0];\n var array = [];\n for (var _i2 = 0; _i2 < that.geojson.features.length; _i2++) {\n for (var _key in that.geojson.features[_i2].properties) {\n var str = that.geojson.features[_i2].properties[_key] + '';\n if (str.indexOf(input.value) != -1) {\n array.push(that.geojson.features[_i2]);\n break;\n }\n }\n }\n dataArrayFilter = array;\n total = dataArrayFilter.length;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n Object(_Element_Pagination__WEBPACK_IMPORTED_MODULE_5__[\"generatePagination\"])(paginationElm, total, pageSize, page, function (pageIndex) {\n page = pageIndex;\n currentData = dataArrayFilter.slice(pageSize * (page - 1), pageSize * page);\n var trsElm = createTableContent();\n box.getElementsByTagName('tbody')[0].innerHTML = trsElm;\n if (currentData.length == 0) {\n emptyNode.style.display = 'flex';\n } else {\n emptyNode.style.display = 'none';\n }\n });\n };\n box.getElementsByClassName('search')[0].addEventListener('click', function () {\n pageSize = 20;\n page = 1;\n search();\n });\n box.getElementsByClassName('export')[0].addEventListener('click', function () {\n var data = [];\n for (var _i3 = 0; _i3 < that.geojson.features.length; _i3++) {\n data.push(_objectSpread(_objectSpread({}, that.geojson.features[_i3].properties), {}, {\n 'positions': JSON.stringify(that.geojson.features[_i3].geometry.coordinates)\n }));\n }\n that.exportExcel(data);\n });\n case 55:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function openAllNodeList(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVmVjdG9yL29wZW5BbGxOb2RlTGlzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9WZWN0b3Ivb3BlbkFsbE5vZGVMaXN0LmpzPzYwMDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpYWxvZyBmcm9tIFwiLi4vLi4vLi4vQmFzZURpYWxvZy9pbmRleFwiO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVBhZ2luYXRpb24gfSBmcm9tIFwiLi4vLi4vRWxlbWVudC9QYWdpbmF0aW9uXCI7XHJcblxyXG5sZXQgX0RpYWxvZ09iamVjdFxyXG5cclxuY29uc3Qgb3BlbkFsbE5vZGVMaXN0ID0gYXN5bmMgKHRoYXQpID0+IHtcclxuICBsZXQgdG90YWwgPSAwXHJcbiAgbGV0IHBhZ2UgPSAxXHJcbiAgbGV0IHBhZ2VTaXplID0gMjBcclxuICBsZXQgY3VycmVudERhdGEgPSBbXVxyXG5cclxuICBpZiAoX0RpYWxvZ09iamVjdCAmJiAhX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgIF9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IGNyZWF0ZVRhYmxlQ29udGVudCA9ICgpID0+IHtcclxuICAgIGxldCB0cnNFbG0gPSAnJ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdHJFbG0gPSAnPHRyIGNsYXNzPVwiZWwtdGFibGVfX3Jvd1wiPidcclxuICAgICAgbGV0IHRkRWxtID0gJydcclxuICAgICAgaWYgKCdmaWQnIGluIGN1cnJlbnREYXRhW2ldLnByb3BlcnRpZXMpIHtcclxuICAgICAgICB0ZEVsbSA9IGA8dGQgcm93c3Bhbj1cIjFcIiBjb2xzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2N1cnJlbnREYXRhW2ldLnByb3BlcnRpZXMuZmlkfTwvZGl2PjwvdGQ+YFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ2lkJyAmJiBrZXkgIT09ICdJRCcgJiYga2V5ICE9PSAnZmlkJykge1xyXG4gICAgICAgICAgdGRFbG0gPSB0ZEVsbSArIGA8dGQgcm93c3Bhbj1cIjFcIiBjb2xzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2N1cnJlbnREYXRhW2ldLnByb3BlcnRpZXNba2V5XX08L2Rpdj48L3RkPmBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdHJFbG0gPSB0ckVsbSArIHRkRWxtICsgJzwvdHI+J1xyXG4gICAgICB0cnNFbG0gPSB0cnNFbG0gKyB0ckVsbVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyc0VsbVxyXG4gIH1cclxuXHJcbiAgX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgdGl0bGU6ICcnLCBsZWZ0OiAnMTclJywgdG9wOiAnMTAwcHgnXHJcbiAgfSlcclxuICBhd2FpdCBfRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIGxldCBkYXRhQXJyYXlGaWx0ZXIgPSBbLi4udGhhdC5nZW9qc29uLmZlYXR1cmVzXVxyXG4gIHRvdGFsID0gZGF0YUFycmF5RmlsdGVyLmxlbmd0aFxyXG4gIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG5cclxuICBsZXQgdHJzRWxtID0gY3JlYXRlVGFibGVDb250ZW50KClcclxuXHJcbiAgbGV0IGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgYm94LnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIGxldCBzZWFyY2hFbG0gPSAnPGRpdiBjbGFzcz1cInNlYXJjaC1ib3hcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7bWFyZ2luLWJvdHRvbTogMTBweDtcIj48aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCLovpPlhaXlhbPplK7lrZfmkJzntKJcIiBzdHlsZT1cIndpZHRoOiAxODBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4O1wiPjxidXR0b24gY2xhc3M9XCJidG4gc2VhcmNoXCI+5pCc57SiPC9idXR0b24+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7cmlnaHQ6MjBweDtcIiBjbGFzcz1cImVsLWJ1dHRvbiBlbC1idXR0b24tLXByaW1hcnkgaXMtcGxhaW4gZXhwb3J0XCI+PHNwYW4+5a+85Ye6PC9zcGFuPjwvYnV0dG9uPjwvZGl2PidcclxuICBsZXQgdGFsYmVFbG0gPSAnPGRpdiBjbGFzcz1cImVsLXRhYmxlIGVsLXRhYmxlLS1maXQgZWwtdGFibGUtLWJvcmRlciBlbC10YWJsZS0tc2Nyb2xsYWJsZS14IGVsLXRhYmxlLS1zY3JvbGxhYmxlLXkgZWwtdGFibGUtLWVuYWJsZS1yb3ctaG92ZXIgZWwtdGFibGUtLWVuYWJsZS1yb3ctdHJhbnNpdGlvblwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygxMDAlIC0gMTAwcHgpO1wiPidcclxuICBsZXQgaGVhZGVyRWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9faGVhZGVyLXdyYXBwZXJcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2hlYWRlclwiIHN0eWxlPVwid2lkdGg6IDEyMTNweDtcIj4nXHJcbiAgbGV0IGhjb2xncm91cEVsbSA9ICc8Y29sZ3JvdXA+J1xyXG4gIGxldCB0aGVhZEVsbSA9ICc8dGhlYWQgY2xhc3M9XCJoYXMtZ3V0dGVyXCI+PHRyPidcclxuICBsZXQgYm9keUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGVfX2JvZHktd3JhcHBlciBpcy1zY3JvbGxpbmctbm9uZVwiIHN0eWxlPVwiaGVpZ2h0OiA2MjBweDtcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2JvZHlcIiBzdHlsZT1cIndpZHRoOiAxMTg2cHg7XCI+J1xyXG4gIGxldCBiY29sZ3JvdXBFbG0gPSAnPGNvbGdyb3VwPidcclxuXHJcbiAgbGV0IGkgPSAxXHJcbiAgLy8gdGhlYWRcclxuICBpZiAoJ2ZpZCcgaW4gdGhhdC5nZW9qc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMpIHtcclxuICAgIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICBiY29sZ3JvdXBFbG0gPSBiY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgdGhlYWRFbG0gPSB0aGVhZEVsbSArIGA8dGggY29sc3Bhbj1cIjFcIiByb3dzcGFuPVwiMVwiIGNsYXNzPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfSAgICAgaXMtbGVhZiBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+ZmlkPC9kaXY+PC90aD5gXHJcbiAgICBpKytcclxuICB9XHJcbiAgZm9yIChsZXQga2V5IGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoa2V5ICE9PSAnaWQnICYmIGtleSAhPT0gJ0lEJyAmJiBrZXkgIT09ICdmaWQnKSB7XHJcbiAgICAgIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICAgIGJjb2xncm91cEVsbSA9IGJjb2xncm91cEVsbSArIGA8Y29sIG5hbWU9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9XCIgd2lkdGg9XCIxNTBcIj5gXHJcbiAgICAgIHRoZWFkRWxtID0gdGhlYWRFbG0gKyBgPHRoIGNvbHNwYW49XCIxXCIgcm93c3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICAgIGlzLWxlYWYgZWwtdGFibGVfX2NlbGxcIj48ZGl2IGNsYXNzPVwiY2VsbFwiPiR7a2V5fTwvZGl2PjwvdGg+YFxyXG4gICAgICBpKytcclxuICAgIH1cclxuICB9XHJcbiAgLy90Ym9keVxyXG4gIGxldCB0Ym9keUVsbSA9ICc8dGJvZHk+J1xyXG4gIHRib2R5RWxtID0gdGJvZHlFbG0gKyB0cnNFbG0gKyAnPC90Ym9keT4nXHJcbiAgLy9lbXB0eVxyXG4gIGxldCBlbXB0eUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGVfX2VtcHR5LWJsb2NrXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+PHNwYW4gY2xhc3M9XCJlbC10YWJsZV9fZW1wdHktdGV4dFwiPuaaguaXoOaVsOaNrjwvc3Bhbj48L2Rpdj4nXHJcblxyXG4gIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArICc8Y29sIG5hbWU9XCJndXR0ZXJcIiB3aWR0aD1cIjE3XCI+PC9jb2xncm91cD4nXHJcbiAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgJzwvY29sZ3JvdXA+J1xyXG4gIHRoZWFkRWxtID0gdGhlYWRFbG0gKyAnPC90cj48L3RoZWFkPidcclxuICBoZWFkZXJFbG0gPSBoZWFkZXJFbG0gKyBoY29sZ3JvdXBFbG0gKyB0aGVhZEVsbSArICc8L3RhYmxlPjwvZGl2PidcclxuICBib2R5RWxtID0gYm9keUVsbSArIGJjb2xncm91cEVsbSArIHRib2R5RWxtICsgJzwvdGFibGU+JyArIGVtcHR5RWxtICsgJzwvZGl2PidcclxuICB0YWxiZUVsbSA9IHRhbGJlRWxtICsgaGVhZGVyRWxtICsgYm9keUVsbSArICc8L2Rpdj4nXHJcblxyXG5cclxuICBib3guaW5uZXJIVE1MID0gc2VhcmNoRWxtICsgdGFsYmVFbG0gKyAnPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj48L2Rpdj4nXHJcbiAgbGV0IGVtcHR5Tm9kZSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdlbC10YWJsZV9fZW1wdHktYmxvY2snKVswXVxyXG4gIGlmIChjdXJyZW50RGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBlbXB0eU5vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gIH1cclxuICAvLyB0aGlzLnZpZXdlci5fY29udGFpbmVyLmFwcGVuZENoaWxkKGJveClcclxuICBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChib3gpXHJcbiAgbGV0IGhlYWRlcldyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2hlYWRlci13cmFwcGVyJylbMF1cclxuICBsZXQgYm9keVdyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2JvZHktd3JhcHBlcicpWzBdXHJcbiAgYm9keVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIGhlYWRlcldyYXBwZXIuc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnRcclxuICB9KTtcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LnRpdGxlLnN0eWxlLmhlaWdodCA9ICc0MHB4J1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICc2NSUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICc4MCUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnN0eWxlLmhlaWdodCA9ICdjYWxjKDEwMCUgLSA0MHB4KSdcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuZm9vdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcblxyXG4gIGJvZHlXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAke2hlYWRlcldyYXBwZXIub2Zmc2V0SGVpZ2h0fXB4KWBcclxuICBsZXQgcGFnaW5hdGlvbkVsbSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdpbmF0aW9uJylbMF1cclxuICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgdG90YWwsIHBhZ2VTaXplLCBwYWdlLCAocGFnZUluZGV4KSA9PiB7XHJcbiAgICBwYWdlID0gcGFnZUluZGV4XHJcbiAgICBjdXJyZW50RGF0YSA9IGRhdGFBcnJheUZpbHRlci5zbGljZShwYWdlU2l6ZSAqIChwYWdlIC0gMSksIHBhZ2VTaXplICogcGFnZSlcclxuICAgIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQoKVxyXG4gICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgaWYgKGN1cnJlbnREYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICB9KTtcclxuICBjb25zdCBzZWFyY2ggPSAoKSA9PiB7XHJcbiAgICBsZXQgaW5wdXQgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VhcmNoLWJveCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgbGV0IHN0ciA9IHRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzW2tleV0gKyAnJ1xyXG4gICAgICAgIGlmIChzdHIuaW5kZXhPZihpbnB1dC52YWx1ZSkgIT0gLTEpIHtcclxuICAgICAgICAgIGFycmF5LnB1c2godGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRhdGFBcnJheUZpbHRlciA9IGFycmF5XHJcbiAgICB0b3RhbCA9IGRhdGFBcnJheUZpbHRlci5sZW5ndGhcclxuICAgIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG4gICAgaWYgKGN1cnJlbnREYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZW1wdHlOb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICAgIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQoKVxyXG4gICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIHRvdGFsLCBwYWdlU2l6ZSwgcGFnZSwgKHBhZ2VJbmRleCkgPT4ge1xyXG4gICAgICBwYWdlID0gcGFnZUluZGV4XHJcbiAgICAgIGN1cnJlbnREYXRhID0gZGF0YUFycmF5RmlsdGVyLnNsaWNlKHBhZ2VTaXplICogKHBhZ2UgLSAxKSwgcGFnZVNpemUgKiBwYWdlKVxyXG4gICAgICBsZXQgdHJzRWxtID0gY3JlYXRlVGFibGVDb250ZW50KClcclxuICAgICAgYm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0Ym9keScpWzBdLmlubmVySFRNTCA9IHRyc0VsbVxyXG4gICAgICBpZiAoY3VycmVudERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICBlbXB0eU5vZGUuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVtcHR5Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VhcmNoJylbMF0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICBwYWdlU2l6ZSA9IDIwXHJcbiAgICBwYWdlID0gMVxyXG4gICAgc2VhcmNoKClcclxuICB9KVxyXG4gIGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdleHBvcnQnKVswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGxldCBkYXRhID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRhdGEucHVzaCh7IC4uLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLCAncG9zaXRpb25zJzogSlNPTi5zdHJpbmdpZnkodGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzKSB9KVxyXG4gICAgfVxyXG4gICAgdGhhdC5leHBvcnRFeGNlbChkYXRhKVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCB7IG9wZW5BbGxOb2RlTGlzdCB9Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcEtBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/Vector/openAllNodeList.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/Vector/openNodeListById.js": -/*!*************************************************!*\ - !*** ./src/Obj/Base/Vector/openNodeListById.js ***! - \*************************************************/ -/*! exports provided: openNodeListById */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openNodeListById\", function() { return openNodeListById; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _BaseDialog_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../BaseDialog/index */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n\n\n\n\nvar _DialogObject;\nvar openNodeListById = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(that, id) {\n var currentData, createTableContent, flag, _i2, trsElm, box, talbeElm, headerElm, hcolgroupElm, theadElm, bodyElm, bcolgroupElm, i, key, tbodyElm, tabsElm, tabPaneElm, _i3, url, _tabPaneElm, tabsNode, tabContentPane, _i4, headerWrapper, bodyWrapper;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_DialogObject && !_DialogObject.isDestroy) {\n _DialogObject.close();\n _DialogObject = null;\n }\n currentData = [];\n createTableContent = function createTableContent() {\n var trsElm = '';\n for (var _i = 0; _i < currentData.length; _i++) {\n var trElm = '';\n var tdElm = '';\n if ('fid' in currentData[_i].properties) {\n tdElm = \"
    \").concat(currentData[_i].properties.fid, \"
    \");\n }\n for (var key in currentData[_i].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n tdElm = tdElm + \"
    \").concat(currentData[_i].properties[key], \"
    \");\n }\n }\n trElm = trElm + tdElm + '';\n trsElm = trsElm + trElm;\n }\n return trsElm;\n };\n flag = false;\n _i2 = 0;\n case 5:\n if (!(_i2 < that.geojson.features.length)) {\n _context.next = 13;\n break;\n }\n if (!(that.geojson.features[_i2].properties.id && that.geojson.features[_i2].properties.id == id)) {\n _context.next = 10;\n break;\n }\n currentData = [that.geojson.features[_i2]];\n flag = true;\n return _context.abrupt(\"break\", 13);\n case 10:\n _i2++;\n _context.next = 5;\n break;\n case 13:\n if (flag) {\n _context.next = 16;\n break;\n }\n window.ELEMENT && window.ELEMENT.Message({\n message: '数据不存在!',\n type: 'warning',\n duration: 1500\n });\n return _context.abrupt(\"return\");\n case 16:\n _context.next = 18;\n return new _BaseDialog_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"](that.viewer._container, {\n title: id,\n left: '17%',\n top: '100px'\n });\n case 18:\n _DialogObject = _context.sent;\n _context.next = 21;\n return _DialogObject.init();\n case 21:\n trsElm = createTableContent(that);\n box = document.createElement('div');\n box.style.height = '100%';\n talbeElm = '
    ';\n headerElm = '
    ';\n hcolgroupElm = '';\n theadElm = '';\n bodyElm = '
    ';\n bcolgroupElm = '';\n i = 1; // thead\n if ('fid' in that.geojson.features[0].properties) {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n for (key in that.geojson.features[0].properties) {\n if (key !== 'id' && key !== 'ID' && key !== 'fid') {\n hcolgroupElm = hcolgroupElm + \"\");\n bcolgroupElm = bcolgroupElm + \"\");\n theadElm = theadElm + \"\");\n i++;\n }\n }\n //tbody\n tbodyElm = '';\n tbodyElm = tbodyElm + trsElm + '';\n hcolgroupElm = hcolgroupElm + '';\n bcolgroupElm = bcolgroupElm + '';\n theadElm = theadElm + '';\n headerElm = headerElm + hcolgroupElm + theadElm + '
    fid
    \").concat(key, \"
    ';\n bodyElm = bodyElm + bcolgroupElm + tbodyElm + '
    ';\n talbeElm = talbeElm + headerElm + bodyElm + '';\n tabsElm = \"\\n \\n \\n \".concat(talbeElm + '
    ', \"\\n
    \\n \");\n if (currentData[0].content && currentData[0].content.richTextContent) {\n tabPaneElm = \"\\n \\n \".concat(currentData[0].content.richTextContent, \"\\n \\n \");\n tabsElm = tabsElm + tabPaneElm;\n }\n if (currentData[0].content && currentData[0].content.link && currentData[0].content.link.content && currentData[0].content.link.content.length > 0) {\n for (_i3 = 0; _i3 < currentData[0].content.link.content.length; _i3++) {\n url = currentData[0].content.link.content[_i3].url;\n _tabPaneElm = \"\\n \\n \\n \\n \");\n tabsElm = tabsElm + _tabPaneElm;\n }\n }\n tabsElm = tabsElm + '
    ';\n box.innerHTML = tabsElm;\n // that.viewer._container.appendChild(box)\n _DialogObject.contentAppChild(box);\n new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('shp-list-id-tabs');\n tabsNode = box.getElementsByClassName('DIV-cy-tabs')[0];\n tabsNode.style.height = '100%';\n tabsNode.style.display = 'flex';\n tabsNode.style.flexDirection = 'column';\n tabsNode.getElementsByClassName('DIV-cy-tab-content')[0].style.flex = '1';\n tabContentPane = tabsNode.getElementsByClassName('DIV-cy-tab-content-pane');\n for (_i4 = 0; _i4 < tabContentPane.length; _i4++) {\n tabContentPane[_i4].style.height = '100%';\n }\n headerWrapper = box.getElementsByClassName('el-table__header-wrapper')[0];\n bodyWrapper = box.getElementsByClassName('el-table__body-wrapper')[0];\n bodyWrapper.addEventListener('scroll', function (e) {\n headerWrapper.scrollLeft = e.target.scrollLeft;\n });\n _DialogObject._element.title.style.height = '40px';\n _DialogObject._element.body.style.width = '65%';\n _DialogObject._element.body.style.height = '80%';\n _DialogObject._element.content.style.height = 'calc(100% - 40px)';\n _DialogObject._element.foot.style.display = 'none';\n bodyWrapper.style.height = \"calc(100% - \".concat(headerWrapper.offsetHeight, \"px)\");\n case 64:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function openNodeListById(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvVmVjdG9yL29wZW5Ob2RlTGlzdEJ5SWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvVmVjdG9yL29wZW5Ob2RlTGlzdEJ5SWQuanM/MzUzMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9CYXNlRGlhbG9nL2luZGV4XCI7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5cclxubGV0IF9EaWFsb2dPYmplY3RcclxuXHJcbmNvbnN0IG9wZW5Ob2RlTGlzdEJ5SWQgPSBhc3luYyAodGhhdCwgaWQpID0+IHtcclxuICBpZiAoX0RpYWxvZ09iamVjdCAmJiAhX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgIF9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICB9XHJcbiAgbGV0IGN1cnJlbnREYXRhID0gW11cclxuICBjb25zdCBjcmVhdGVUYWJsZUNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICBsZXQgdHJzRWxtID0gJydcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRyRWxtID0gJzx0ciBjbGFzcz1cImVsLXRhYmxlX19yb3dcIj4nXHJcbiAgICAgIGxldCB0ZEVsbSA9ICcnXHJcbiAgICAgIGlmICgnZmlkJyBpbiBjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgdGRFbG0gPSBgPHRkIHJvd3NwYW49XCIxXCIgY29sc3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+JHtjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzLmZpZH08L2Rpdj48L3RkPmBcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gY3VycmVudERhdGFbaV0ucHJvcGVydGllcykge1xyXG4gICAgICAgIGlmIChrZXkgIT09ICdpZCcgJiYga2V5ICE9PSAnSUQnICYmIGtleSAhPT0gJ2ZpZCcpIHtcclxuICAgICAgICAgIHRkRWxtID0gdGRFbG0gKyBgPHRkIHJvd3NwYW49XCIxXCIgY29sc3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICBlbC10YWJsZV9fY2VsbFwiPjxkaXYgY2xhc3M9XCJjZWxsXCI+JHtjdXJyZW50RGF0YVtpXS5wcm9wZXJ0aWVzW2tleV19PC9kaXY+PC90ZD5gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRyRWxtID0gdHJFbG0gKyB0ZEVsbSArICc8L3RyPidcclxuICAgICAgdHJzRWxtID0gdHJzRWxtICsgdHJFbG1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnNFbG1cclxuICB9XHJcbiAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAodGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLnByb3BlcnRpZXMuaWQgJiYgdGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLnByb3BlcnRpZXMuaWQgPT0gaWQpIHtcclxuICAgICAgY3VycmVudERhdGEgPSBbdGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldXVxyXG4gICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoIWZsYWcpIHtcclxuICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICBtZXNzYWdlOiAn5pWw5o2u5LiN5a2Y5Zyo77yBJyxcclxuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgdGl0bGU6IGlkLCBsZWZ0OiAnMTclJywgdG9wOiAnMTAwcHgnXHJcbiAgfSlcclxuICBhd2FpdCBfRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIGxldCB0cnNFbG0gPSBjcmVhdGVUYWJsZUNvbnRlbnQodGhhdClcclxuXHJcbiAgbGV0IGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgYm94LnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIGxldCB0YWxiZUVsbSA9ICc8ZGl2IGNsYXNzPVwiZWwtdGFibGUgZWwtdGFibGUtLWZpdCBlbC10YWJsZS0tYm9yZGVyIGVsLXRhYmxlLS1zY3JvbGxhYmxlLXggZWwtdGFibGUtLXNjcm9sbGFibGUteSBlbC10YWJsZS0tZW5hYmxlLXJvdy1ob3ZlciBlbC10YWJsZS0tZW5hYmxlLXJvdy10cmFuc2l0aW9uXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPidcclxuICBsZXQgaGVhZGVyRWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9faGVhZGVyLXdyYXBwZXJcIj48dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgYm9yZGVyPVwiMFwiIGNsYXNzPVwiZWwtdGFibGVfX2hlYWRlclwiIHN0eWxlPVwid2lkdGg6IDkzMHB4O1wiPidcclxuICBsZXQgaGNvbGdyb3VwRWxtID0gJzxjb2xncm91cD4nXHJcbiAgbGV0IHRoZWFkRWxtID0gJzx0aGVhZCBjbGFzcz1cImhhcy1ndXR0ZXJcIj48dHI+J1xyXG4gIGxldCBib2R5RWxtID0gJzxkaXYgY2xhc3M9XCJlbC10YWJsZV9fYm9keS13cmFwcGVyIGlzLXNjcm9sbGluZy1ub25lXCIgc3R5bGU9XCJoZWlnaHQ6IDYyMHB4O1wiPjx0YWJsZSBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIiBib3JkZXI9XCIwXCIgY2xhc3M9XCJlbC10YWJsZV9fYm9keVwiIHN0eWxlPVwid2lkdGg6IDkxM3B4O1wiPidcclxuICBsZXQgYmNvbGdyb3VwRWxtID0gJzxjb2xncm91cD4nXHJcblxyXG4gIGxldCBpID0gMVxyXG4gIC8vIHRoZWFkXHJcbiAgaWYgKCdmaWQnIGluIHRoYXQuZ2VvanNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKSB7XHJcbiAgICBoY29sZ3JvdXBFbG0gPSBoY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgYDxjb2wgbmFtZT1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX1cIiB3aWR0aD1cIjE1MFwiPmBcclxuICAgIHRoZWFkRWxtID0gdGhlYWRFbG0gKyBgPHRoIGNvbHNwYW49XCIxXCIgcm93c3Bhbj1cIjFcIiBjbGFzcz1cImVsLXRhYmxlXzFfY29sdW1uXyR7aX0gICAgIGlzLWxlYWYgZWwtdGFibGVfX2NlbGxcIj48ZGl2IGNsYXNzPVwiY2VsbFwiPmZpZDwvZGl2PjwvdGg+YFxyXG4gICAgaSsrXHJcbiAgfVxyXG4gIGZvciAobGV0IGtleSBpbiB0aGF0Lmdlb2pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcykge1xyXG4gICAgaWYgKGtleSAhPT0gJ2lkJyAmJiBrZXkgIT09ICdJRCcgJiYga2V5ICE9PSAnZmlkJykge1xyXG4gICAgICBoY29sZ3JvdXBFbG0gPSBoY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgICBiY29sZ3JvdXBFbG0gPSBiY29sZ3JvdXBFbG0gKyBgPGNvbCBuYW1lPVwiZWwtdGFibGVfMV9jb2x1bW5fJHtpfVwiIHdpZHRoPVwiMTUwXCI+YFxyXG4gICAgICB0aGVhZEVsbSA9IHRoZWFkRWxtICsgYDx0aCBjb2xzcGFuPVwiMVwiIHJvd3NwYW49XCIxXCIgY2xhc3M9XCJlbC10YWJsZV8xX2NvbHVtbl8ke2l9ICAgICBpcy1sZWFmIGVsLXRhYmxlX19jZWxsXCI+PGRpdiBjbGFzcz1cImNlbGxcIj4ke2tleX08L2Rpdj48L3RoPmBcclxuICAgICAgaSsrXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vdGJvZHlcclxuICBsZXQgdGJvZHlFbG0gPSAnPHRib2R5PidcclxuICB0Ym9keUVsbSA9IHRib2R5RWxtICsgdHJzRWxtICsgJzwvdGJvZHk+J1xyXG4gIGhjb2xncm91cEVsbSA9IGhjb2xncm91cEVsbSArICc8Y29sIG5hbWU9XCJndXR0ZXJcIiB3aWR0aD1cIjE3XCI+PC9jb2xncm91cD4nXHJcbiAgYmNvbGdyb3VwRWxtID0gYmNvbGdyb3VwRWxtICsgJzwvY29sZ3JvdXA+J1xyXG4gIHRoZWFkRWxtID0gdGhlYWRFbG0gKyAnPC90cj48L3RoZWFkPidcclxuICBoZWFkZXJFbG0gPSBoZWFkZXJFbG0gKyBoY29sZ3JvdXBFbG0gKyB0aGVhZEVsbSArICc8L3RhYmxlPjwvZGl2PidcclxuICBib2R5RWxtID0gYm9keUVsbSArIGJjb2xncm91cEVsbSArIHRib2R5RWxtICsgJzwvdGFibGU+PC9kaXY+J1xyXG4gIHRhbGJlRWxtID0gdGFsYmVFbG0gKyBoZWFkZXJFbG0gKyBib2R5RWxtICsgJzwvZGl2PidcclxuXHJcbiAgbGV0IHRhYnNFbG0gPSBgXHJcbiAgICA8RElWLWN5LXRhYnMgaWQ9XCJzaHAtbGlzdC1pZC10YWJzXCI+XHJcbiAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5bGe5oCn5YiX6KGoXCI+XHJcbiAgICAgICR7dGFsYmVFbG0gKyAnPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj48L2Rpdj4nfVxyXG4gICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgYFxyXG4gIGlmIChjdXJyZW50RGF0YVswXS5jb250ZW50ICYmIGN1cnJlbnREYXRhWzBdLmNvbnRlbnQucmljaFRleHRDb250ZW50KSB7XHJcbiAgICBsZXQgdGFiUGFuZUVsbSA9IGBcclxuICAgICAgPERJVi1jeS10YWItcGFuZSBjbGFzcz1cImVkaXRvci1jb250ZW50LXZpZXdcIiBsYWJlbD1cIuWvjOaWh+acrOS/oeaBr1wiPlxyXG4gICAgICAke2N1cnJlbnREYXRhWzBdLmNvbnRlbnQucmljaFRleHRDb250ZW50fVxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIGBcclxuICAgIHRhYnNFbG0gPSB0YWJzRWxtICsgdGFiUGFuZUVsbVxyXG4gIH1cclxuICBpZiAoY3VycmVudERhdGFbMF0uY29udGVudCAmJiBjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsgJiYgY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnQgJiYgY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsuY29udGVudC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdXJsID0gY3VycmVudERhdGFbMF0uY29udGVudC5saW5rLmNvbnRlbnRbaV0udXJsXHJcbiAgICAgIGxldCB0YWJQYW5lRWxtID0gYFxyXG4gICAgICA8RElWLWN5LXRhYi1wYW5lIGNsYXNzPVwiZWRpdG9yLWNvbnRlbnQtdmlld1wiIGxhYmVsPVwiJHtjdXJyZW50RGF0YVswXS5jb250ZW50LmxpbmsuY29udGVudFtpXS5uYW1lfVwiPlxyXG4gICAgICA8aWZyYW1lIHNyYz1cIiR7dXJsfVwiPjwvaWZyYW1lPlxyXG4gICAgICA8L0RJVi1jeS10YWItcGFuZT5cclxuICAgIGBcclxuICAgICAgdGFic0VsbSA9IHRhYnNFbG0gKyB0YWJQYW5lRWxtXHJcbiAgICB9XHJcbiAgfVxyXG4gIHRhYnNFbG0gPSB0YWJzRWxtICsgJzwvRElWLWN5LXRhYnM+J1xyXG4gIGJveC5pbm5lckhUTUwgPSB0YWJzRWxtXHJcbiAgLy8gdGhhdC52aWV3ZXIuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChib3gpXHJcbiAgX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoYm94KVxyXG4gIG5ldyBjeV90YWJzKCdzaHAtbGlzdC1pZC10YWJzJylcclxuICBsZXQgdGFic05vZGUgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnRElWLWN5LXRhYnMnKVswXVxyXG4gIHRhYnNOb2RlLnN0eWxlLmhlaWdodCA9ICcxMDAlJ1xyXG4gIHRhYnNOb2RlLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICB0YWJzTm9kZS5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7XHJcbiAgdGFic05vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnRElWLWN5LXRhYi1jb250ZW50JylbMF0uc3R5bGUuZmxleCA9ICcxJ1xyXG4gIGxldCB0YWJDb250ZW50UGFuZSA9IHRhYnNOb2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ0RJVi1jeS10YWItY29udGVudC1wYW5lJylcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkNvbnRlbnRQYW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB0YWJDb250ZW50UGFuZVtpXS5zdHlsZS5oZWlnaHQgPSAnMTAwJSdcclxuICB9XHJcbiAgbGV0IGhlYWRlcldyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2hlYWRlci13cmFwcGVyJylbMF1cclxuICBsZXQgYm9keVdyYXBwZXIgPSBib3guZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWwtdGFibGVfX2JvZHktd3JhcHBlcicpWzBdXHJcbiAgYm9keVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIGhlYWRlcldyYXBwZXIuc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnRcclxuICB9KTtcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LnRpdGxlLnN0eWxlLmhlaWdodCA9ICc0MHB4J1xyXG4gIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICc2NSUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICc4MCUnXHJcbiAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnN0eWxlLmhlaWdodCA9ICdjYWxjKDEwMCUgLSA0MHB4KSdcclxuICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmZvb3Quc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG5cclxuICBib2R5V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBgY2FsYygxMDAlIC0gJHtoZWFkZXJXcmFwcGVyLm9mZnNldEhlaWdodH1weClgXHJcbn1cclxuXHJcbmV4cG9ydCB7IG9wZW5Ob2RlTGlzdEJ5SWQgfSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXBJQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/Vector/openNodeListById.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallRealStereoscopic/_element.js": -/*!*******************************************************!*\ - !*** ./src/Obj/Base/WallRealStereoscopic/_element.js ***! - \*******************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n \\u989C\\u8272\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u5BBD\\u5EA6\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n \\u62C9\\u4F38\\u9AD8\\u5EA6\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u62D0\\u89D2\\u7C7B\\u578B\\n
    \\n
    \\n
    \\n \\u5899\\u4F53\\u6837\\u5F0F\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u5899\\u4F53\\u95ED\\u5408\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
    \\n
    \\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFJlYWxTdGVyZW9zY29waWMvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvV2FsbFJlYWxTdGVyZW9zY29waWMvX2VsZW1lbnQuanM/ODMzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZWxtX2h0bWwnXHJcblxyXG5mdW5jdGlvbiBodG1sKHRoYXQpIHtcclxuICAgIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBtYXhsZW5ndGg9XCI0MFwiIHR5cGU9XCJ0ZXh0XCIgQG1vZGVsPVwibmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuminOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWuveW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgZGF0YS1taW49XCIwLjAxXCIgbWF4PVwiOTk5OTk5XCIgQG1vZGVsPVwid2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mi4nkvLjpq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJleHRydWRlZEhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29ybmVyLXR5cGUtYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5ouQ6KeS57G75Z6LPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvcm5lci10eXBlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIG1hdGVyaWFsLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWimeS9k+agt+W8jzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXRlcmlhbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lopnkvZPpl63lkIg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibm9zZVRvVGFpbFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8RElWLWN5LXRhYnMgaWQ9XCJyYWRhci1zY2FuLWVkaXQtdGFic1wiPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuWxnuaAp+S/oeaBr1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7YXR0cmlidXRlRWxtKHRoYXQpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH5rOo6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMSgpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgICAgICA8RElWLWN5LXRhYi1wYW5lIGxhYmVsPVwi5qCH562+6aOO5qC8XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFN0eWxlRWxtMigpfVxyXG4gICAgICAgICAgICAgICAgPC9ESVYtY3ktdGFiLXBhbmU+XHJcbiAgICAgICAgICAgIDwvRElWLWN5LXRhYnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFzRUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallRealStereoscopic/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallRealStereoscopic/eventBinding.js": -/*!***********************************************************!*\ - !*** ./src/Obj/Base/WallRealStereoscopic/eventBinding.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n var blurEvent = function blurEvent() {};\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n var v = Number(value);\n if (e.target.max && v > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && v < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && v < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n blurEvent = function blurEvent(e) {\n var value = e.target.value;\n if (e.target.type == 'number' && (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n };\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n elements[i].addEventListener('blur', function (e) {\n blurEvent(e);\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFJlYWxTdGVyZW9zY29waWMvZXZlbnRCaW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1dhbGxSZWFsU3RlcmVvc2NvcGljL2V2ZW50QmluZGluZy5qcz9kN2I2Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIGV2ZW50QmluZGluZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB7fVxyXG4gIH1cclxuICBzdGF0aWMgZXZlbnQgPSB7fVxyXG5cclxuICBnZXRFdmVudChuYW1lKSB7XHJcbiAgICByZXR1cm4gZXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdXHJcbiAgfVxyXG5cclxuICBnZXRFdmVudEFsbCgpIHtcclxuICAgIHJldHVybiBldmVudEJpbmRpbmcuZXZlbnRcclxuICB9XHJcblxyXG4gIHNldEV2ZW50KG5hbWUsIGV2ZW50KSB7XHJcbiAgICBldmVudEJpbmRpbmcuZXZlbnRbbmFtZV0gPSBldmVudFxyXG4gIH1cclxuXHJcbiAgb24odGhhdCwgZWxlbWVudHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IEV2ZW50ID0gW11cclxuICAgICAgbGV0IGlzRXZlbnQgPSBmYWxzZVxyXG4gICAgICBsZXQgcmVtb3ZlTmFtZSA9IFtdXHJcbiAgICAgIGxldCBibHVyRXZlbnQgPSAoKT0+e31cclxuICAgICAgaWYgKCFlbGVtZW50c1tpXSB8fCFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWU7IFxyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IG0gb2YgZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIHN3aXRjaCAobS5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdAbW9kZWwnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7IHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC5jaGVja2VkIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YSAhPSAnLicgJiYgKGUuZGF0YSAhPSAnLScgfHwgZS50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHYgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoKGUudGFyZ2V0Lm1heCkgJiYgdj5OdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZigoZS50YXJnZXQubWluKSAmJiB2PE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKChlLnRhcmdldC5kYXRhc2V0Lm1pbikgJiYgdjxOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGJsdXJFdmVudCA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSAmJiAoZS50YXJnZXQudmFsdWUgfHwgKGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAnJyAmJiAhQm9vbGVhbihlLnRhcmdldC5kYXRhc2V0Lm51bGwpKSkpIHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYoZWxlbWVudHNbaV0ubm9kZU5hbWU9PSdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFttLnZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXS5wdXNoKGVsZW1lbnRzW2ldKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWxlbWVudFttLnZhbHVlXSA9IFtlbGVtZW50c1tpXV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjbGljayc6IHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoYXRbbS52YWx1ZV0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0obS5uYW1lKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0BjaGFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgIGlmKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUhPScnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSwgdmFsdWUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxlbWVudHNbaV0uYXR0cmlidXRlc1ttXSA9IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICAgIGZvcihsZXQgbj0wO248cmVtb3ZlTmFtZS5sZW5ndGg7bisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgKGUpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgRXZlbnQubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgRXZlbnRbdF0oZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICAgIGJsdXJFdmVudChlKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBFdmVudEJpbmRpbmcgPSBuZXcgZXZlbnRCaW5kaW5nKCk7XHJcbmV4cG9ydCBkZWZhdWx0IEV2ZW50QmluZGluZzsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4RkE7QUFBQTtBQUFBO0FBd0ZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuSEE7QUFBQTtBQU1BO0FBOEdBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallRealStereoscopic/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallRealStereoscopic/index.js": -/*!****************************************************!*\ - !*** ./src/Obj/Base/WallRealStereoscopic/index.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/WallRealStereoscopic/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/WallRealStereoscopic/eventBinding.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Materail_PolylineImageTrailMaterialProperty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../Materail/PolylineImageTrailMaterialProperty */ \"./src/Obj/Materail/PolylineImageTrailMaterialProperty.js\");\n/* harmony import */ var _Materail_FlowPictureMaterialProperty__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../Materail/FlowPictureMaterialProperty */ \"./src/Obj/Materail/FlowPictureMaterialProperty.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 实体墙\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WallRealStereoscopic = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 实体围墙\r\n * @param options {object} 墙属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.name {string} 名称\r\n * @param options.color=\"#ffffff\" {string} 颜色\r\n * @param options.width=0.24 {number} 宽\r\n * @param options.show=true {boolean} 显隐\r\n * @param options.noseToTail=false {boolean} 首尾相连\r\n * @param options.extrudedHeight=2.4 {number} 拉伸高度\r\n * @param options.cornerType=0 {string} 拐角类型;0:直角;1:斜角;2:圆角\r\n * @param options.material=0 {number} 材质,0:纯色墙;1:红砖;2:黄砖;3:灰瓷\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function WallRealStereoscopic(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WallRealStereoscopic);\n _this2 = _callSuper(this, WallRealStereoscopic, [sdk, options]);\n _this2._elms = {};\n _this2.options.color = options.color || \"#ffffff\";\n _this2.options.width = options.width || 0.24;\n _this2.options.noseToTail = options.noseToTail || false;\n _this2.options.extrudedHeight = options.extrudedHeight || 2.4;\n _this2.cornerType = options.cornerType;\n _this2.options.positions = options.positions;\n _this2.options.material = Number(options.material) || 0;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.entity;\n _this2.nodePoints = [];\n options.label = options.label || {};\n _this2.options.label = {\n text: _this2.options.name,\n show: options.label.show || false,\n position: options.label.position,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.Dialog = _Dialog;\n if (!_this2.options.positions || _this2.options.positions.length < 2) {\n _this2._error = '最少需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n WallRealStereoscopic.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(WallRealStereoscopic, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WallRealStereoscopic, [{\n key: \"type\",\n get: function get() {\n return 'WallRealStereoscopic';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v;\n if (this.entity) {\n for (var i = 0; i < this.entity.values.length; i++) {\n if (this.entity.values[i].polylineVolume) {\n var wall = this.entity.values[i];\n wall.polylineVolume.material = this.getMaterial(wall.id);\n }\n if (this.entity.values[i].polygon) {\n var top = this.entity.values[i];\n top.polygon.material = Cesium.Color.fromCssColorString(this.options.color);\n }\n }\n }\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.options.width;\n },\n set: function set(v) {\n this.options.width = v;\n if (this.options.width <= 0.01) {\n this.options.width = 0.01;\n }\n this.update();\n this._elms.width && this._elms.width.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"cornerType\",\n get: function get() {\n return this.options.cornerType;\n },\n set: function set(v) {\n switch (v) {\n case 0:\n case '0':\n v = 0;\n break;\n case 1:\n case '1':\n v = 1;\n break;\n case 2:\n case '2':\n v = 2;\n break;\n default:\n v = 0;\n break;\n }\n this.options.cornerType = v;\n this.update();\n // this.entity.polylineVolume.cornerType = Cesium.CornerType[this.options.cornerType]\n this._elms.cornerType && this._elms.cornerType.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"material\",\n get: function get() {\n return this.options.material;\n },\n set: function set(v) {\n this.options.material = Number(v);\n if (this.entity) {\n for (var i = 0; i < this.entity.values.length; i++) {\n if (this.entity.values[i].polylineVolume) {\n var wall = this.entity.values[i];\n wall.polylineVolume.material = this.getMaterial(wall.id);\n }\n }\n }\n this._elms.material && this._elms.material.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.noseToTail;\n },\n set: function set(v) {\n this.options.noseToTail = v;\n this.update();\n this.material = this.material;\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"extrudedHeight\",\n get: function get() {\n return this.options.extrudedHeight;\n },\n set: function set(v) {\n this.options.extrudedHeight = v;\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat, this.options.positions[0].alt + this.options.extrudedHeight];\n this.update();\n this._elms.extrudedHeight && this._elms.extrudedHeight.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this4.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this4.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this4._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this5.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this5.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this5._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"calculatePositions3\",\n value: function calculatePositions3() {\n var optionsPositions = this.deepCopyObj(this.options.positions);\n if (this.noseToTail) {\n optionsPositions.push(optionsPositions[0], optionsPositions[1]);\n }\n var pos1 = [];\n var pos2 = [];\n var positions = [];\n var forward = [];\n var reverse = [];\n for (var i = 0; i < optionsPositions.length - 1; i++) {\n var pot1 = turf.point([optionsPositions[i].lng, optionsPositions[i].lat]);\n var pot2 = turf.point([optionsPositions[i + 1].lng, optionsPositions[i + 1].lat]);\n var bearing = turf.rhumbBearing(pot1, pot2);\n var destination = turf.destination(pot1, this.options.width / 2 / 1000, bearing + 90, {\n units: 'kilometers'\n });\n var destination2 = turf.destination(pot2, this.options.width / 2 / 1000, bearing + 90, {\n units: 'kilometers'\n });\n var destination3 = turf.destination(pot1, this.options.width / 2 / 1000, bearing - 90, {\n units: 'kilometers'\n });\n var destination4 = turf.destination(pot2, this.options.width / 2 / 1000, bearing - 90, {\n units: 'kilometers'\n });\n var coordinates = destination.geometry.coordinates;\n var coordinates2 = destination2.geometry.coordinates;\n var coordinates3 = destination3.geometry.coordinates;\n var coordinates4 = destination4.geometry.coordinates;\n coordinates[2] = optionsPositions[i].alt;\n coordinates2[2] = optionsPositions[i + 1].alt;\n coordinates3[2] = optionsPositions[i].alt;\n coordinates4[2] = optionsPositions[i + 1].alt;\n pos1.push(coordinates, coordinates2);\n pos2.push(coordinates3, coordinates4);\n }\n\n // 直角\n if (this.cornerType === 0) {} else if (this.cornerType === 1) {\n // 斜角\n for (var _i = 0; _i < pos1.length - 3; _i += 2) {\n if (_i == 0) {\n forward.push(pos1[_i]);\n reverse.push(pos2[_i]);\n }\n forward.push(pos1[_i + 1], pos1[_i + 2]);\n reverse.push(pos2[_i + 1], pos2[_i + 2]);\n if (_i == pos1.length - 4) {\n forward.push(pos1[_i + 3]);\n reverse.push(pos2[_i + 3]);\n }\n }\n } else if (this.cornerType === 2) {\n // 圆角\n for (var _i2 = 0; _i2 < pos1.length - 3; _i2 += 2) {\n var center = optionsPositions[_i2 / 2 + 1];\n var _pot = turf.point(pos1[_i2 + 1]);\n var _pot2 = turf.point(pos2[_i2 + 1]);\n var bearing1 = turf.rhumbBearing(_pot, _pot2);\n var pot3 = turf.point(pos1[_i2 + 2]);\n var pot4 = turf.point(pos2[_i2 + 2]);\n var bearing2 = turf.rhumbBearing(pot3, pot4);\n console.log('bearing1, bearing2', bearing1 - bearing2);\n var face = true;\n if (Math.sin(Cesium.Math.toRadians(bearing1 - bearing2)) > 0) {\n var temporary = bearing1;\n bearing1 = bearing2 + 180;\n bearing2 = temporary + 180;\n face = false;\n }\n var sector = turf.sector([center.lng, center.lat, center.alt], this.options.width / 1000 / 2, bearing1, bearing2, {\n units: 'kilometers'\n });\n console.log('sector', sector);\n if (_i2 == 0) {\n forward.push(pos1[_i2]);\n reverse.push(pos2[_i2]);\n }\n console.log('face', face);\n if (face) {\n forward.push(pos1[_i2 + 1], pos1[_i2 + 2]);\n for (var n = 1; n < sector.geometry.coordinates[0].length - 1; n++) {\n reverse.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][n]), [pos1[_i2 + 1][2]]));\n // this.sdk.viewer.entities.add({\n // position: Cesium.Cartesian3.fromDegrees(...sector.geometry.coordinates[0][n], pos1[i + 1][2]),\n // // billboard: {\n // // image: this.getSourceRootPath() + '/img/point.png',\n // // width: 15,\n // // height: 15,\n // // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // // },\n // label: {\n // text: n+'',\n // font: '12px Microsoft YaHei',\n // fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // }\n // })\n }\n } else {\n for (var _n = sector.geometry.coordinates[0].length - 2; _n > 0; _n--) {\n forward.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][_n]), [pos1[_i2 + 1][2]]));\n }\n reverse.push(pos2[_i2 + 1], pos2[_i2 + 2]);\n }\n if (_i2 == pos1.length - 4) {\n forward.push(pos1[_i2 + 3]);\n reverse.push(pos2[_i2 + 3]);\n }\n }\n\n // for (let i = 0; i < pos1.length - 3; i += 2) {\n // if (i == 0) {\n // forward.push(pos1[i])\n // reverse.push(pos2[i])\n // }\n\n // forward.push(pos1[i + 1], pos1[i + 2])\n // reverse.push(pos2[i + 1], pos2[i + 2])\n\n // if (i == pos1.length - 4) {\n // forward.push(pos1[i + 3])\n // reverse.push(pos2[i + 3])\n // }\n\n // let pot1 = turf.point(pos1[i])\n // let pot2 = turf.point(pos1[i + 1])\n // let bearing1 = turf.rhumbBearing(pot1, pot2);\n // let pot3 = turf.point(pos1[i + 2])\n // let pot4 = turf.point(pos1[i + 3])\n // let bearing2 = turf.rhumbBearing(pot3, pot4);\n\n // let line1 = turf.lineString([pos1[i], pos1[i + 1]]);\n // let line2 = turf.lineString([pos1[i + 2], pos1[i + 3]]);\n // let intersects = turf.lineIntersect(line1, line2);\n // if (i == 0) {\n // forward.push(pos1[i])\n // reverse.push(pos2[i])\n // }\n\n // if (intersects.features[0]) {\n // forward.push([...intersects.features[0].geometry.coordinates, pos1[i + 1][2]])\n // let sector = turf.sector(intersects.features[0].geometry.coordinates, this.options.width / 1000, bearing1 - 90, bearing2 - 90, { units: 'kilometers' });\n // for (let n = 1; n < sector.geometry.coordinates[0].length - 1; n++) {\n // reverse.push([...sector.geometry.coordinates[0][n], pos1[i + 1][2]])\n // }\n // }\n // else {\n // let pot1 = turf.point(pos2[i])\n // let pot2 = turf.point(pos2[i + 1])\n // let bearing1 = turf.rhumbBearing(pot1, pot2);\n // let pot3 = turf.point(pos2[i + 2])\n // let pot4 = turf.point(pos2[i + 3])\n // let bearing2 = turf.rhumbBearing(pot3, pot4);\n\n // let line1 = turf.lineString([pos2[i], pos2[i + 1]]);\n // let line2 = turf.lineString([pos2[i + 2], pos2[i + 3]]);\n // let intersects = turf.lineIntersect(line1, line2);\n // if (intersects.features[0]) {\n // reverse.push([...intersects.features[0].geometry.coordinates, pos2[i + 1][2]])\n // let sector = turf.sector(intersects.features[0].geometry.coordinates, this.options.width / 1000, bearing2 + 90, bearing1 + 90, { units: 'kilometers' });\n // for (let n = sector.geometry.coordinates[0].length - 2; n >= 1; n--) {\n // forward.push([...sector.geometry.coordinates[0][n], pos2[i + 1][2]])\n // }\n // }\n // }\n // if (i == pos1.length - 4) {\n // forward.push(pos1[i + 3])\n // reverse.push(pos2[i + 3])\n // }\n\n // }\n }\n positions = [].concat(forward);\n for (var _i3 = reverse.length - 1; _i3 >= 0; _i3--) {\n positions.push(reverse[_i3]);\n }\n positions.push(positions[0]);\n\n // for (let i = 0; i < positions.length; i++) {\n // this.sdk.viewer.entities.add({\n // position: Cesium.Cartesian3.fromDegrees(...positions[i]),\n // label: {\n // text: i+'',\n // font: '18px Microsoft YaHei',\n // fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // }\n // })\n // }\n\n console.log('positions', positions);\n return positions;\n }\n }, {\n key: \"calculatePositions2\",\n value: function calculatePositions2() {\n // let collection = new Cesium.EntityCollection()\n var positions = [];\n for (var i = 0; i < this.options.positions.length - 2; i++) {\n var bearing = (180 - caculateAngle(this.options.positions[i], this.options.positions[i + 1], this.options.positions[i + 2])) / 2;\n var width = Math.tan(bearing * Math.PI / 180) * (this.options.width / 2);\n console.log('width', width, bearing);\n var line1 = turf.lineString([[this.options.positions[1].lng, this.options.positions[1].lat], [this.options.positions[0].lng, this.options.positions[0].lat]]);\n var line2 = turf.lineString([[this.options.positions[1].lng, this.options.positions[1].lat], [this.options.positions[2].lng, this.options.positions[2].lat]]);\n var sliced1 = turf.lineSliceAlong(line1, 0, width / 1000, {\n units: 'kilometers'\n });\n var sliced2 = turf.lineSliceAlong(line2, 0, width / 1000, {\n units: 'kilometers'\n });\n var pos1 = sliced1.geometry.coordinates[sliced1.geometry.coordinates.length - 1];\n var pos2 = sliced2.geometry.coordinates[sliced2.geometry.coordinates.length - 1];\n pos1[2] = this.options.positions[i + 1].alt;\n pos2[2] = this.options.positions[i + 1].alt;\n positions.push([pos1, pos2]);\n this.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(pos1[0], pos1[1], pos1[2]),\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n this.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(pos2[0], pos2[1], pos2[2]),\n billboard: {\n image: this.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n }\n function caculateAngle(p1, p2, p3) {\n var point1 = turf.point([p1.lng, p1.lat]);\n var point2 = turf.point([p2.lng, p2.lat]);\n var point3 = turf.point([p3.lng, p3.lat]);\n var options = {\n units: 'kilometers'\n };\n var distance1 = turf.rhumbDistance(point1, point2, options);\n var distance2 = turf.rhumbDistance(point3, point2, options);\n var distance = distance1;\n if (distance1 > distance2) {\n distance = distance2;\n }\n var bearing1 = turf.rhumbBearing(point1, point2);\n var bearing2 = turf.rhumbBearing(point3, point2);\n var bearing = Math.abs((bearing1 - bearing2 + 360) % 360);\n if (bearing > 180) {\n bearing = 360 - bearing;\n }\n return bearing;\n }\n return positions;\n }\n }, {\n key: \"calculatePositions\",\n value: function calculatePositions() {\n var optionsPositions = this.deepCopyObj(this.options.positions);\n if (this.noseToTail) {\n optionsPositions.push(optionsPositions[0], optionsPositions[1]);\n }\n var pos1 = [];\n var pos2 = [];\n var positions = [];\n for (var i = 0; i < optionsPositions.length - 1; i++) {\n var pot1 = turf.point([optionsPositions[i].lng, optionsPositions[i].lat]);\n var pot2 = turf.point([optionsPositions[i + 1].lng, optionsPositions[i + 1].lat]);\n var bearing = turf.rhumbBearing(pot1, pot2);\n var destination = turf.destination(pot1, this.options.width / 2 / 1000, bearing + 90, {\n units: 'kilometers'\n });\n var destination2 = turf.destination(pot2, this.options.width / 2 / 1000, bearing + 90, {\n units: 'kilometers'\n });\n var destination3 = turf.destination(pot1, this.options.width / 2 / 1000, bearing - 90, {\n units: 'kilometers'\n });\n var destination4 = turf.destination(pot2, this.options.width / 2 / 1000, bearing - 90, {\n units: 'kilometers'\n });\n var coordinates = destination.geometry.coordinates;\n var coordinates2 = destination2.geometry.coordinates;\n var coordinates3 = destination3.geometry.coordinates;\n var coordinates4 = destination4.geometry.coordinates;\n coordinates[2] = optionsPositions[i].alt;\n coordinates2[2] = optionsPositions[i + 1].alt;\n coordinates3[2] = optionsPositions[i].alt;\n coordinates4[2] = optionsPositions[i + 1].alt;\n pos1.push([coordinates, coordinates2, coordinates4, coordinates3, coordinates]);\n }\n positions.push(pos1[0]);\n if (this.cornerType === 0) {\n // 直角\n for (var _i4 = 1; _i4 < pos1.length; _i4++) {\n var center = optionsPositions[_i4];\n var _pot3 = turf.point(pos1[_i4 - 1][1]);\n var _pot4 = turf.point(pos1[_i4 - 1][2]);\n var bearing1 = turf.rhumbBearing(_pot3, _pot4);\n var pot3 = turf.point(pos1[_i4][0]);\n var pot4 = turf.point(pos1[_i4][3]);\n var bearing2 = turf.rhumbBearing(pot3, pot4);\n var face = true;\n if (Math.sin(Cesium.Math.toRadians(bearing1 - bearing2)) > 0) {\n var temporary = bearing1;\n bearing1 = bearing2 + 180;\n bearing2 = temporary + 180;\n face = false;\n }\n var bearing3 = Math.abs(bearing1 - bearing2);\n if (bearing3 > 180) {\n bearing3 = 360 - bearing3;\n }\n var distance = this.options.width / 2 / Math.cos(Cesium.Math.toRadians(bearing3 / 2));\n if (distance > this.options.width * 5) {\n distance = this.options.width * 5;\n }\n var sector = turf.sector([center.lng, center.lat], this.options.width / 1000 / 2, bearing1, bearing2, {\n units: 'kilometers',\n steps: 3600\n });\n var point1 = turf.point([center.lng, center.lat]);\n var point2 = turf.point(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][Math.ceil(sector.geometry.coordinates[0].length / 2)]));\n var _bearing = turf.bearing(point1, point2);\n var _destination = turf.destination(point1, distance / 1000, _bearing, {\n units: 'kilometers'\n });\n var array = [];\n array.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][0]), [center.alt]));\n array.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][1]), [center.alt]));\n array.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(_destination.geometry.coordinates), [center.alt]));\n array.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sector.geometry.coordinates[0][sector.geometry.coordinates[0].length - 2]), [center.alt]));\n positions.push(array);\n positions.push(pos1[_i4]);\n }\n } else if (this.cornerType === 1) {\n // 斜角\n for (var _i5 = 1; _i5 < pos1.length; _i5++) {\n positions.push([pos1[_i5 - 1][2], pos1[_i5][0], pos1[_i5 - 1][1], pos1[_i5][3], pos1[_i5 - 1][2]]);\n positions.push(pos1[_i5]);\n }\n } else if (this.cornerType === 2) {\n // 圆角\n for (var _i6 = 1; _i6 < pos1.length; _i6++) {\n var _center = optionsPositions[_i6];\n var _pot5 = turf.point(pos1[_i6 - 1][1]);\n var _pot6 = turf.point(pos1[_i6 - 1][2]);\n var _bearing2 = turf.rhumbBearing(_pot5, _pot6);\n var _pot7 = turf.point(pos1[_i6][0]);\n var _pot8 = turf.point(pos1[_i6][3]);\n var _bearing3 = turf.rhumbBearing(_pot7, _pot8);\n if (Math.sin(Cesium.Math.toRadians(_bearing2 - _bearing3)) > 0) {\n var _temporary = _bearing2;\n _bearing2 = _bearing3 + 180;\n _bearing3 = _temporary + 180;\n }\n var _sector = turf.sector([_center.lng, _center.lat], this.options.width / 1000 / 2, _bearing2, _bearing3, {\n units: 'kilometers'\n });\n var _array = [];\n for (var n = 0; n < _sector.geometry.coordinates[0].length - 1; n++) {\n _array.push([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(_sector.geometry.coordinates[0][n]), [_center.alt]));\n }\n positions.push(_array);\n positions.push(pos1[_i6]);\n }\n }\n return positions;\n }\n\n //创建\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(state) {\n var _this8 = this;\n var _this, contentElm, cornerTypeList, legpCornerType, iActiveElm, legpCornerTypeInput, i, materialList, legpMaterial, iActiveElm2, legpMaterialInput, _i8, tabsElm, colorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' wall-stereoscopic';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_12__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n\n // 拐角类型下拉\n cornerTypeList = [{\n name: '直角',\n value: '直角',\n key: 0,\n icon: 'yj-icon-zj'\n }, {\n name: '斜角',\n value: '斜角',\n key: 1,\n icon: 'yj-icon-xj'\n }, {\n name: '圆角',\n value: '圆角',\n key: 2,\n icon: 'yj-icon-yj'\n }];\n legpCornerType = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(contentElm.getElementsByClassName('corner-type-box')[0], \".corner-type\");\n legpCornerType.legp_search(cornerTypeList);\n iActiveElm = document.createElement('i');\n iActiveElm.className = \"icon-active\";\n contentElm.getElementsByClassName('corner-type')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm);\n legpCornerTypeInput = contentElm.getElementsByClassName('corner-type')[0].getElementsByTagName('input')[0];\n i = 0;\n case 20:\n if (!(i < cornerTypeList.length)) {\n _context.next = 29;\n break;\n }\n if (!(cornerTypeList[i].key === this.cornerType)) {\n _context.next = 26;\n break;\n }\n legpCornerType.legp_searchActive(cornerTypeList[i].value);\n legpCornerTypeInput.value = cornerTypeList[i].value;\n iActiveElm.innerHTML = \"\");\n return _context.abrupt(\"break\", 29);\n case 26:\n i++;\n _context.next = 20;\n break;\n case 29:\n legpCornerTypeInput.addEventListener('input', function (e, c) {\n for (var _i7 = 0; _i7 < cornerTypeList.length; _i7++) {\n if (cornerTypeList[_i7].value === legpCornerTypeInput.value) {\n _this8.cornerType = cornerTypeList[_i7].key;\n iActiveElm.innerHTML = \"\");\n break;\n }\n }\n });\n\n // 材质下拉\n materialList = [{\n name: '纯色墙',\n value: '纯色墙',\n key: 0,\n icon: 'icon-wall'\n }, {\n name: '红砖墙',\n value: '红砖墙',\n key: 1,\n icon: 'icon-wall-brick1'\n }, {\n name: '黄砖墙',\n value: '黄砖墙',\n key: 2,\n icon: 'icon-wall-brick2'\n }, {\n name: '灰瓷墙',\n value: '灰瓷墙',\n key: 3,\n icon: 'icon-wall-brick3'\n }];\n legpMaterial = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(contentElm.getElementsByClassName('material-box')[0], \".material\");\n legpMaterial.legp_search(materialList);\n iActiveElm2 = document.createElement('i');\n iActiveElm2.className = \"icon icon-active\";\n contentElm.getElementsByClassName('material')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm2);\n legpMaterialInput = contentElm.getElementsByClassName('material')[0].getElementsByTagName('input')[0];\n _i8 = 0;\n case 38:\n if (!(_i8 < materialList.length)) {\n _context.next = 47;\n break;\n }\n if (!(materialList[_i8].key === this.material)) {\n _context.next = 44;\n break;\n }\n legpMaterial.legp_searchActive(materialList[_i8].value);\n legpMaterialInput.value = materialList[_i8].value;\n iActiveElm2.className = \"icon icon-active \".concat(materialList[_i8].icon);\n return _context.abrupt(\"break\", 47);\n case 44:\n _i8++;\n _context.next = 38;\n break;\n case 47:\n legpMaterialInput.addEventListener('input', function (e, c) {\n for (var _i9 = 0; _i9 < materialList.length; _i9++) {\n if (materialList[_i9].value === legpMaterialInput.value) {\n _this8.material = materialList[_i9].key;\n iActiveElm2.className = \"icon icon-active \".concat(materialList[_i9].icon);\n break;\n }\n }\n });\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_10__[\"default\"]('radar-scan-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this8.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this8.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this8.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this8.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_15__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_15__[\"default\"].element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this8.attributeLink = _this8.options.attribute.link.content;\n var tagData = _this8.attributeSelect;\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this8._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0], \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeElm = _this8._DialogObject._element.content.getElementsByClassName('attribute-select')[0];\n if (!attributeElm) {\n return;\n }\n var attributeSelectElm = _this8._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i10 = 0; _i10 < tagData.length; _i10++) {\n if (tagData[_i10].key === _this8.options.attributeType) {\n attributeSelectElm.value = tagData[_i10].value;\n legpObject.legp_searchActive(tagData[_i10].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i11 = 0; _i11 < tagData.length; _i11++) {\n if (tagData[_i11].value === attributeSelectElm.value) {\n _this8.attributeType = tagData[_i11].key;\n break;\n }\n }\n });\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_20__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_19__[\"legp\"])(_this8._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this8._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this8.labelFontFamily].value;\n for (var _i12 = 0; _i12 < fontData.length; _i12++) {\n if (fontData[_i12].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i12].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i13 = 0; _i13 < fontData.length; _i13++) {\n if (fontData[_i13].value === fontDataLegpElm.value) {\n _this8.labelFontFamily = fontData[_i13].key;\n break;\n }\n }\n });\n _this8._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 66;\n break;\n case 65:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 66:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.width = this.originalOptions.width;\n this.cornerType = this.originalOptions.cornerType;\n this.extrudedHeight = this.originalOptions.extrudedHeight;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"syncSplitData\"])(this.sdk, this.options.id);\n // this.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label.remove();\n for (i = 0; i < this.entity.values.length; i++) {\n this.sdk.viewer.entities.remove(this.entity.values[i]);\n }\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"getMaterial\",\n value: function getMaterial(id) {\n var _this9 = this;\n var material;\n var img;\n switch (this.options.material) {\n case 0:\n material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n break;\n case 1:\n case 2:\n case 3:\n case 4:\n // material = new Cesium.CustomMaterialSource({\n // image: './image/arrow.png',\n // repeat: new Cesium.Cartesian2(10, 1.0),\n // color: this.options.color,\n // duration: this.options.duration\n // })\n\n switch (this.options.material) {\n case 1:\n img = 'brick1';\n break;\n case 2:\n img = 'brick2';\n break;\n case 3:\n img = 'brick3';\n break;\n case 4:\n img = 'brick4';\n break;\n }\n material = new Cesium.CustomMaterialSource({\n image: this.getSourceRootPath() + \"/img/material/\".concat(img, \".jpg\"),\n color: this.options.color,\n is2D: false,\n repeats: new Cesium.CallbackProperty(function () {\n var repeat = [['1.0', 1.0, 1.0]];\n if (!_this9.entity) {\n return repeat;\n }\n var entity = _this9.entity.getById(id);\n if (!entity || !entity.polylineVolume) {\n return repeat;\n }\n var positionProperty = entity.polylineVolume.positions;\n var positions = positionProperty.getValue();\n if (!Cesium.defined(positions)) {\n return repeat;\n }\n var totalDistance = 0;\n var distances = [];\n repeat = [];\n for (var i = 0; i < positions.length - 1; ++i) {\n var distance = Cesium.Cartesian3.distance(positions[i], positions[i + 1]);\n distances.push(distance);\n totalDistance += distance;\n }\n var imgProportion = 45 / 45; // 图片长宽比例\n var totalRepeatX = totalDistance / _this9.options.extrudedHeight;\n totalRepeatX = totalRepeatX / imgProportion;\n var totalRatio = 0;\n for (var _i14 = 0; _i14 < distances.length; _i14++) {\n var ratio = distances[_i14] / totalDistance;\n totalRatio += ratio;\n var repeatX = ratio * totalRepeatX;\n var repeatY = 1.0;\n repeat.push([((_i14 + 1) / distances.length).toFixed(30), repeatX, repeatY]);\n }\n return repeat;\n }, false),\n isTranslucent: false,\n duration: 0\n });\n break;\n }\n return material;\n }\n\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this10 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_11__[\"default\"].primaryCallBack = function (content) {\n _this10.options.richTextContent = content;\n };\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var update = function update() {\n var isCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (that.entity) {\n var _positions = that.calculatePositions();\n for (var i = 0; i < that.entity.values.length; i++) {\n that.sdk.viewer.entities.remove(that.entity.values[i]);\n }\n that.entity.removeAll();\n wallPositions = [];\n topPositions = [];\n var _loop = function _loop(_i15) {\n var fromDegreesArray = [];\n var fromDegreesArray2 = [];\n for (var n = 0; n < _positions[_i15].length; n++) {\n fromDegreesArray.push(_positions[_i15][n][0], _positions[_i15][n][1], _positions[_i15][n][2]);\n fromDegreesArray2.push(_positions[_i15][n][0], _positions[_i15][n][1], _positions[_i15][n][2] + that.options.extrudedHeight);\n }\n wallPositions.push(fromDegreesArray);\n topPositions.push(fromDegreesArray2);\n var wall = that.sdk.viewer.entities.add({\n id: that.options.id + '-' + WallRealStereoscopic.randomString(12),\n polylineVolume: {\n positions: isCallback ? new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArrayHeights(wallPositions[_i15]);\n }, false) : Cesium.Cartesian3.fromDegreesArrayHeights(wallPositions[_i15]),\n shape: [{\n x: -0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: that.options.extrudedHeight / 2\n }, {\n x: -0.0000001,\n y: that.options.extrudedHeight / 2\n }],\n cornerType: Cesium.CornerType.MITERED\n }\n });\n var top = that.sdk.viewer.entities.add({\n id: that.options.id + '-' + WallRealStereoscopic.randomString(12),\n polygon: {\n hierarchy: isCallback ? new Cesium.CallbackProperty(function () {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(topPositions[_i15]));\n }, false) : new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(topPositions[_i15])),\n perPositionHeight: true,\n material: Cesium.Color.fromCssColorString(that.options.color)\n }\n });\n that.entity.add(wall);\n that.entity.add(top);\n wall.polylineVolume.material = that.getMaterial(wall.id);\n };\n for (var _i15 = 0; _i15 < _positions.length; _i15++) {\n _loop(_i15);\n }\n }\n };\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_17__[\"default\"]('请选择一个顶点,右键取消', that.sdk);\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_16__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var positions = that.options.positions;\n var fromDegreesArray = [];\n var fromDegreesArray2 = [];\n var array = [];\n var wallPositions = [];\n var topPositions = [];\n var isAdd = false;\n var firstMove = true;\n var leftEvent = function leftEvent(movement, cartesian) {\n firstMove = true;\n if (selectPoint) {\n isAdd = true;\n var pos3 = that.sdk.viewer.scene.clampToHeight(cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(that.entity.values));\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(pos3, that.sdk.viewer);\n originalPosition = that.options.positions[selectPoint.index];\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[selectPoint.index].lng, that.options.positions[selectPoint.index].lat, that.options.positions[selectPoint.index].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.splice(selectPoint.index, 0, entity);\n that.options.positions.splice(selectPoint.index, 0, that.options.positions[selectPoint.index]);\n update(true);\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n that.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n that.material = that.material;\n } else {\n var pick = that.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n that.nodePoints.splice(pick.id.index, 1);\n that.sdk.viewer.entities.remove(pick.id);\n that.tip.set_text('左键开始,右键结束,CTRL+右键撤销');\n originalPosition = that.cartesian3Towgs84(selectPoint.position._value, that.sdk.viewer);\n // that.entity.polylineVolume.positions = new Cesium.CallbackProperty(function () {\n // return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n // }, false)\n update(true);\n }\n }\n };\n var rightEvent = function rightEvent(movement, cartesian) {\n that.closeNodeEdit = function () {};\n if (selectPoint) {\n that.options.positions[selectPoint.index] = originalPosition;\n if (isAdd) {\n that.options.positions.splice(selectPoint.index, 1);\n }\n update();\n cb(null, that.options.positions);\n }\n // that.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n for (var i = 0; i < that.nodePoints.length; i++) {\n that.sdk.viewer.entities.remove(that.nodePoints[i]);\n }\n that.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n that.event.destroy();\n that.tip.destroy();\n that.material = that.material;\n };\n that.closeNodeEdit = rightEvent;\n that.event.mouse_left(leftEvent);\n that.event.mouse_right(rightEvent);\n that.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n var pos3 = that.sdk.viewer.scene.clampToHeight(cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(that.entity.values));\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(pos3, that.sdk.viewer);\n var _positions2 = that.calculatePositions();\n for (var i = 0; i < _positions2.length; i++) {\n var _fromDegreesArray = [];\n var _fromDegreesArray2 = [];\n for (var n = 0; n < _positions2[i].length; n++) {\n _fromDegreesArray.push(_positions2[i][n][0], _positions2[i][n][1], _positions2[i][n][2]);\n _fromDegreesArray2.push(_positions2[i][n][0], _positions2[i][n][1], _positions2[i][n][2] + that.options.extrudedHeight);\n }\n wallPositions[i] = _fromDegreesArray;\n topPositions[i] = _fromDegreesArray2;\n }\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n // if (firstMove) {\n // firstMove = false\n // that.material = that.material\n // return\n // }\n }\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n firstMove = true;\n that.options.positions.pop();\n update(true);\n that.sdk.viewer.entities.remove(that.nodePoints[that.nodePoints.length - 1]);\n if (selectPoint.index === that.options.positions.length) {\n if (that.nodePoints[selectPoint.index - 1]) {\n selectPoint = that.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = 0;\n }\n }\n that.nodePoints.pop();\n }\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n for (var i = 0; i < that.options.positions.length; i++) {\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: i,\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[i].lng, that.options.positions[i].lat, that.options.positions[i].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.push(entity);\n }\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {}\n }, {\n key: \"update\",\n value: function update() {\n if (this.entity) {\n var positions = this.calculatePositions();\n var wallPositions = [];\n var topPositions = [];\n for (var i = 0; i < this.entity.values.length; i++) {\n this.sdk.viewer.entities.remove(this.entity.values[i]);\n }\n this.entity.removeAll();\n for (var _i16 = 0; _i16 < positions.length; _i16++) {\n var fromDegreesArray = [];\n var fromDegreesArray2 = [];\n for (var n = 0; n < positions[_i16].length; n++) {\n fromDegreesArray.push(positions[_i16][n][0], positions[_i16][n][1], positions[_i16][n][2]);\n fromDegreesArray2.push(positions[_i16][n][0], positions[_i16][n][1], positions[_i16][n][2] + this.options.extrudedHeight);\n }\n wallPositions.push(fromDegreesArray);\n topPositions.push(fromDegreesArray2);\n var wall = this.sdk.viewer.entities.add({\n id: this.options.id + '-' + WallRealStereoscopic.randomString(12),\n polylineVolume: {\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(wallPositions[_i16]),\n shape: [{\n x: -0.0000001,\n y: -this.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: -this.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: this.options.extrudedHeight / 2\n }, {\n x: -0.0000001,\n y: this.options.extrudedHeight / 2\n }],\n cornerType: Cesium.CornerType.MITERED\n }\n });\n var top = this.sdk.viewer.entities.add({\n id: this.options.id + '-' + WallRealStereoscopic.randomString(12),\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(topPositions[_i16])),\n perPositionHeight: true,\n material: Cesium.Color.fromCssColorString(this.options.color)\n }\n });\n this.entity.add(wall);\n this.entity.add(top);\n wall.polylineVolume.material = this.getMaterial(wall.id);\n }\n }\n }\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _Cesium$Cartesian,\n _this11 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var points = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n points.push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n var line = turf.lineString(points);\n var length = turf.length(line, {\n units: 'kilometers'\n });\n var sliced = turf.lineSliceAlong(line, 0, length / 2, {\n units: 'kilometers'\n });\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]).concat([this.options.positions[0].alt + this.options.extrudedHeight]));\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this11.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"createLabel\",\n value: function createLabel(that) {\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_14__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n ground: false,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n });\n }\n }, {\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3(that) {\n var positions, maximumHeights, minimumHeights, i, fromDegreesArray, fromDegreesArray2, n, wall, top;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n // console.log(new Cesium.CustomMaterialSource(), new Cesium.PolylineTrailLinkMaterialProperty())\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // let minimumHeights = []\n // let maximumHeights = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt)\n // minimumHeights.push(positions[i].alt)\n // maximumHeights.push(positions[i].alt + that.options.extrudedHeight)\n // }\n\n that.entity = new Cesium.EntityCollection();\n positions = that.calculatePositions();\n maximumHeights = [];\n minimumHeights = [];\n for (i = 0; i < positions.length; i++) {\n fromDegreesArray = [];\n fromDegreesArray2 = [];\n for (n = 0; n < positions[i].length; n++) {\n fromDegreesArray.push(positions[i][n][0], positions[i][n][1], positions[i][n][2]);\n fromDegreesArray2.push(positions[i][n][0], positions[i][n][1], positions[i][n][2] + that.options.extrudedHeight);\n }\n wall = that.sdk.viewer.entities.add({\n id: that.options.id + '-' + WallRealStereoscopic.randomString(12),\n polylineVolume: {\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n shape: [{\n x: -0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: that.options.extrudedHeight / 2\n }, {\n x: -0.0000001,\n y: that.options.extrudedHeight / 2\n }],\n cornerType: Cesium.CornerType.MITERED\n }\n });\n top = that.sdk.viewer.entities.add({\n id: that.options.id + '-' + WallRealStereoscopic.randomString(12),\n polygon: {\n hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2),\n perPositionHeight: true,\n material: Cesium.Color.fromCssColorString(that.options.color)\n }\n });\n that.entity.add(wall);\n that.entity.add(top);\n wall.polylineVolume.material = that.getMaterial(wall.id);\n }\n that.entity.show = that.options.show;\n WallRealStereoscopic.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_18__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_23__[\"setSplitDirection\"])(0, that.options.id);\n }\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function create(_x2) {\n return _create.apply(this, arguments);\n }\n return create;\n }()\n }, {\n key: \"randomString\",\n value: function randomString(e) {\n e = e || 32;\n var t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678',\n a = t.length,\n n = '';\n for (var i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));\n return n;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (WallRealStereoscopic);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFJlYWxTdGVyZW9zY29waWMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvV2FsbFJlYWxTdGVyZW9zY29waWMvaW5kZXguanM/Yzk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGRlc2NyaXB0aW9uIOWunuS9k+WimVxyXG4gKi9cclxuaW1wb3J0IHsgZ2V0SG9zdCB9IGZyb20gXCIuLi8uLi8uLi9vblwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IGN5X3RhYnMgZnJvbSBcIi4uLy4uL0VsZW1lbnQvY3lfaHRtbF90YWJzXCI7XHJcbmltcG9ydCByaWNoVGV4dCBmcm9tIFwiLi4vLi4vRWxlbWVudC9yaWNoVGV4dFwiO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCBMYWJlbE9iamVjdCBmcm9tICcuLi9MYWJlbE9iamVjdCdcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZydcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vLi4vRXZlbnQnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi8uLi8uLi9Nb3VzZVRpcCdcclxuaW1wb3J0IHsgc3luY0RhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuLi8uLi9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IHsgZ2V0Rm9udExpc3QsIGdldEZvbnRGYW1pbHlOYW1lIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9mb250U2VsZWN0J1xyXG5pbXBvcnQgUG9seWxpbmVJbWFnZVRyYWlsTWF0ZXJpYWxQcm9wZXJ0eSBmcm9tIFwiLi4vLi4vTWF0ZXJhaWwvUG9seWxpbmVJbWFnZVRyYWlsTWF0ZXJpYWxQcm9wZXJ0eVwiO1xyXG5pbXBvcnQgRmxvd1BpY3R1cmVNYXRlcmlhbFByb3BlcnR5IGZyb20gXCIuLi8uLi9NYXRlcmFpbC9GbG93UGljdHVyZU1hdGVyaWFsUHJvcGVydHlcIjtcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIHNldEFjdGl2ZUlkIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuJ1xyXG5cclxuY2xhc3MgV2FsbFJlYWxTdGVyZW9zY29waWMgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogQGRlc2NyaXB0aW9uIOWunuS9k+WbtOWimVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIHtvYmplY3R9IOWimeWxnuaAp1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmlkIHtzdHJpbmd9IOWUr+S4gOagh+ivhlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWUge3N0cmluZ30g5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY29sb3I9XCIjZmZmZmZmXCIge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMud2lkdGg9MC4yNCB7bnVtYmVyfSDlrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5vc2VUb1RhaWw9ZmFsc2Uge2Jvb2xlYW59IOmmluWwvuebuOi/nlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0PTIuNCB7bnVtYmVyfSDmi4nkvLjpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jb3JuZXJUeXBlPTAge3N0cmluZ30g5ouQ6KeS57G75Z6LOzDvvJrnm7Top5LvvJsx77ya5pac6KeS77ybMu+8muWchuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1hdGVyaWFsPTAge251bWJlcn0g5p2Q6LSo77yMMO+8mue6r+iJsuWime+8mzHvvJrnuqLnoJbvvJsy77ya6buE56CW77ybM++8mueBsOeTt1xyXG4gICAqIEBwYXJhbSB7QXJyYXkuPG9iamVjdD59IG9wdGlvbnMucG9zaXRpb25zIOW/heWhq++8jOe7j+e6rOW6puWSjOmrmOW6pueahOWIl+ihqO+8jOWAvOS6pOabvyBbe2xvbixsYXQsYWx0fSwuLi5dXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwge29iamVjdH0g5qCH562+5a+56LGhXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwudGV4dCB7c3RyaW5nfSDmoIfnrb7mlofmnKxcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5zaG93IHtzdHJpbmd9IOagh+etvuaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtzdHJpbmd9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uIHtvYmplY3R9IOagh+etvuS9jee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRTaXplPTIwIHtudW1iZXJ9IOWtl+S9k+Wkp+Wwj1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZvbnRGYW1pbHk9MCB7bnVtYmVyfSDlrZfkvZPpobkgMO+8mum7keS9k++8mzHvvJrmgJ3mupDpu5HkvZPvvJsy77ya5bqe6Zeo5q2j6YGT5qCH6aKY5L2T77ybM++8muaVsOm7keS9k1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmNvbG9yPSNmZmZmZmYge3N0cmluZ30g5a2X5L2T6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZVdpZHRoPTQge251bWJlcn0g5byV57q/5a69XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubGluZUNvbG9yPSMwMGZmZmY4MCB7c3RyaW5nfSDlvJXnur/popzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldD0yMCB7bnVtYmVyfSDlrZfkvZPlgY/np7so5byV57q/6ZW/5bqmKVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvcj1bJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSB7YXJyYXl9IOiDjOaZr+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB7Ym9vbGVhbn0g6Led56a757yp5pS+XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwubmVhcj0yMDAwIHtudW1iZXJ9IOinhumHjue8qeaUvuacgOi/kei3neemu1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLmZhcj0xMDAwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+c6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlIHtvYmplY3R9IOWxnuaAp+WGheWuuVxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rPXt9IOmTvuaOpVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQ9W11dIHthcnJheX0g6ZO+5o6l5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLm5hbWUge3N0cmluZ30g6ZO+5o6l5ZCN56ewXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudFtdLnVybCB7c3RyaW5nfSDpk77mjqXlnLDlnYBcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQge3N0cmluZ30g5a+M5paH5pys5YaF5a65XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldyB7b2JqZWN0fSDpu5jorqTop4bop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uIHtvYmplY3R9IOm7mOiupOinhuinkuaWueS9jVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB7bnVtYmVyfSDoiKrlkJHop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHtudW1iZXJ9IOS/r+S7sOinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB7bnVtYmVyfSDnv7vmu5rop5JcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ge29iamVjdH0g6KeG6KeS55u45a+55L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMsIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgXCIjZmZmZmZmXCJcclxuICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IG9wdGlvbnMud2lkdGggfHwgMC4yNFxyXG4gICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgPSBvcHRpb25zLm5vc2VUb1RhaWwgfHwgZmFsc2VcclxuICAgIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCA9IG9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgfHwgMi40XHJcbiAgICB0aGlzLmNvcm5lclR5cGUgPSBvcHRpb25zLmNvcm5lclR5cGVcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBvcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gTnVtYmVyKG9wdGlvbnMubWF0ZXJpYWwpIHx8IDBcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IHtcclxuICAgICAgdGV4dDogdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgIHNob3c6IG9wdGlvbnMubGFiZWwuc2hvdyB8fCBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IG9wdGlvbnMubGFiZWwucG9zaXRpb24sXHJcbiAgICAgIGZvbnRTaXplOiAob3B0aW9ucy5sYWJlbC5mb250U2l6ZSB8fCBvcHRpb25zLmxhYmVsLmZvbnRTaXplID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZm9udFNpemUgOiAyMCxcclxuICAgICAgZm9udEZhbWlseTogb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID8gb3B0aW9ucy5sYWJlbC5mb250RmFtaWx5IDogMCxcclxuICAgICAgY29sb3I6IG9wdGlvbnMubGFiZWwuY29sb3IgfHwgJyNmZmZmZmYnLFxyXG4gICAgICBsaW5lV2lkdGg6IChvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCB8fCBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA6IDQsXHJcbiAgICAgIHBpeGVsT2Zmc2V0OiAob3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCB8fCBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID09PSAwKSA/IG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgOiAyMCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvciB8fCBbJyMwMGZmZmY4MCcsICcjMDBmZmZmODAnXSxcclxuICAgICAgbGluZUNvbG9yOiBvcHRpb25zLmxhYmVsLmxpbmVDb2xvciB8fCAnIzAwZmZmZjgwJyxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiBvcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSB8fCBmYWxzZSxcclxuICAgICAgbmVhcjogKG9wdGlvbnMubGFiZWwubmVhciB8fCBvcHRpb25zLmxhYmVsLm5lYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5uZWFyIDogMjAwMCxcclxuICAgICAgZmFyOiAob3B0aW9ucy5sYWJlbC5mYXIgfHwgb3B0aW9ucy5sYWJlbC5mYXIgPT09IDApID8gb3B0aW9ucy5sYWJlbC5mYXIgOiAxMDAwMDAsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZSA9IG9wdGlvbnMuYXR0cmlidXRlIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50ID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnQgfHwgW11cclxuXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5jYW1lcmFcclxuICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLnZyXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5nb29kc1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB8fCAnJ1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucG9zaXRpb25zIHx8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICB0aGlzLl9lcnJvciA9ICfmnIDlsJHpnIDopoHkuKTkuKrlnZDmoIfvvIEnXHJcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9lcnJvcilcclxuICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5fZXJyb3IsXHJcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RrLmFkZEluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQsIHRoaXMpXHJcbiAgICAgIFdhbGxSZWFsU3RlcmVvc2NvcGljLmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ1dhbGxSZWFsU3RlcmVvc2NvcGljJ1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUxhYmVsKHRoYXQpIHtcclxuICAgIC8vIOagh+etvlxyXG4gICAgdGhhdC5sYWJlbCA9IG5ldyBMYWJlbE9iamVjdCh0aGF0LnNkaywge1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyA/IHRoYXQub3B0aW9ucy5sYWJlbC5zaG93IDogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodF0sXHJcbiAgICAgIHRleHQ6IHRoYXQub3B0aW9ucy5uYW1lLFxyXG4gICAgICBmb250U2l6ZTogdGhhdC5vcHRpb25zLmxhYmVsLmZvbnRTaXplLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSxcclxuICAgICAgY29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5jb2xvcixcclxuICAgICAgZ3JvdW5kOiBmYWxzZSxcclxuICAgICAgcGl4ZWxPZmZzZXQ6IHRoYXQub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCxcclxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGF0Lm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICBsaW5lQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IsXHJcbiAgICAgIGxpbmVXaWR0aDogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCxcclxuICAgICAgc2NhbGVCeURpc3RhbmNlOiB0aGF0Lm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICBuZWFyOiB0aGF0Lm9wdGlvbnMubGFiZWwubmVhcixcclxuICAgICAgZmFyOiB0aGF0Lm9wdGlvbnMubGFiZWwuZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuICBzZXQgY29sb3Iodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRpdHkudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5LnZhbHVlc1tpXS5wb2x5bGluZVZvbHVtZSkge1xyXG4gICAgICAgICAgbGV0IHdhbGwgPSB0aGlzLmVudGl0eS52YWx1ZXNbaV1cclxuICAgICAgICAgIHdhbGwucG9seWxpbmVWb2x1bWUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKHdhbGwuaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmVudGl0eS52YWx1ZXNbaV0ucG9seWdvbikge1xyXG4gICAgICAgICAgbGV0IHRvcCA9IHRoaXMuZW50aXR5LnZhbHVlc1tpXVxyXG4gICAgICAgICAgdG9wLnBvbHlnb24ubWF0ZXJpYWwgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoaXMub3B0aW9ucy5jb2xvcilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fZWxtcy5jb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IGZhbHNlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHYsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy53aWR0aFxyXG4gIH1cclxuICBzZXQgd2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLndpZHRoID0gdlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy53aWR0aCA8PSAwLjAxKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IDAuMDFcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlKClcclxuICAgIHRoaXMuX2VsbXMud2lkdGggJiYgdGhpcy5fZWxtcy53aWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvcm5lclR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvcm5lclR5cGVcclxuICB9XHJcbiAgc2V0IGNvcm5lclR5cGUodikge1xyXG4gICAgc3dpdGNoICh2KSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgY2FzZSAnMCc6XHJcbiAgICAgICAgdiA9IDBcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICBjYXNlICcxJzpcclxuICAgICAgICB2ID0gMVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgIHYgPSAyXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdiA9IDBcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5jb3JuZXJUeXBlID0gdlxyXG4gICAgdGhpcy51cGRhdGUoKVxyXG4gICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmVWb2x1bWUuY29ybmVyVHlwZSA9IENlc2l1bS5Db3JuZXJUeXBlW3RoaXMub3B0aW9ucy5jb3JuZXJUeXBlXVxyXG4gICAgdGhpcy5fZWxtcy5jb3JuZXJUeXBlICYmIHRoaXMuX2VsbXMuY29ybmVyVHlwZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1hdGVyaWFsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXRlcmlhbFxyXG4gIH1cclxuICBzZXQgbWF0ZXJpYWwodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gTnVtYmVyKHYpXHJcbiAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVudGl0eS52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5lbnRpdHkudmFsdWVzW2ldLnBvbHlsaW5lVm9sdW1lKSB7XHJcbiAgICAgICAgICBsZXQgd2FsbCA9IHRoaXMuZW50aXR5LnZhbHVlc1tpXVxyXG4gICAgICAgICAgd2FsbC5wb2x5bGluZVZvbHVtZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwod2FsbC5pZClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2VsbXMubWF0ZXJpYWwgJiYgdGhpcy5fZWxtcy5tYXRlcmlhbC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IG5vc2VUb1RhaWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5vc2VUb1RhaWxcclxuICB9XHJcblxyXG4gIHNldCBub3NlVG9UYWlsKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5ub3NlVG9UYWlsID0gdlxyXG4gICAgdGhpcy51cGRhdGUoKVxyXG4gICAgdGhpcy5tYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxcclxuICAgIHRoaXMuX2VsbXMubm9zZVRvVGFpbCAmJlxyXG4gICAgICB0aGlzLl9lbG1zLm5vc2VUb1RhaWwuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgZXh0cnVkZWRIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XHJcbiAgfVxyXG4gIHNldCBleHRydWRlZEhlaWdodCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgPSB2XHJcbiAgICB0aGlzLmxhYmVsLnBvc2l0aW9uID0gW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHQgKyB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRdXHJcbiAgICB0aGlzLnVwZGF0ZSgpXHJcbiAgICB0aGlzLl9lbG1zLmV4dHJ1ZGVkSGVpZ2h0ICYmIHRoaXMuX2VsbXMuZXh0cnVkZWRIZWlnaHQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNob3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNob3dcclxuICB9XHJcbiAgc2V0IGxhYmVsU2hvdyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyA9IHZcclxuICAgIGlmICh0aGlzLnNob3cgJiYgIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHZcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNob3cgJiYgdGhpcy5fZWxtcy5sYWJlbFNob3cuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udEZhbWlseSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseVxyXG4gIH1cclxuXHJcbiAgc2V0IGxhYmVsRm9udEZhbWlseSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA9IHYgfHwgMFxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC5mb250RmFtaWx5ID0gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRGYW1pbHkpXHJcblxyXG4gICAgbGV0IG5hbWUgPSBnZXRGb250RmFtaWx5TmFtZSh0aGlzLmxhYmVsRm9udEZhbWlseSkgfHwgJydcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5ICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxGb250RmFtaWx5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9IG5hbWVcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvclxyXG4gIH1cclxuICBzZXQgbGFiZWxDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuY29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmNvbG9yID0gdlxyXG4gICAgaWYgKHRoaXMuX2VsbXMubGFiZWxDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbENvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbENvbG9yW2ldID0gbGFiZWxDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRm9udFNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplXHJcbiAgfVxyXG4gIHNldCBsYWJlbEZvbnRTaXplKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMubGFiZWwuZm9udFNpemUgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUgJiYgdGhpcy5fZWxtcy5sYWJlbEZvbnRTaXplLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZVxyXG4gIH1cclxuICBzZXQgbGFiZWxTY2FsZUJ5RGlzdGFuY2Uodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlQnlEaXN0YW5jZSA9IHZcclxuICAgIHRoaXMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbFNjYWxlQnlEaXN0YW5jZSAmJiB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbE5lYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLm5lYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsTmVhcih2KSB7XHJcbiAgICBsZXQgbmVhciA9IHZcclxuICAgIGlmIChuZWFyID4gdGhpcy5sYWJlbEZhcikge1xyXG4gICAgICBuZWFyID0gdGhpcy5sYWJlbEZhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLmxhYmVsLm5lYXIgPSBuZWFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsTmVhciAmJiB0aGlzLl9lbG1zLmxhYmVsTmVhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBuZWFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsRmFyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mYXJcclxuICB9XHJcbiAgc2V0IGxhYmVsRmFyKHYpIHtcclxuICAgIGxldCBmYXIgPSB2XHJcbiAgICBpZiAoZmFyIDwgdGhpcy5sYWJlbE5lYXIpIHtcclxuICAgICAgZmFyID0gdGhpcy5sYWJlbE5lYXJcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMubGFiZWwuZmFyID0gZmFyXHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsRmFyICYmIHRoaXMuX2VsbXMubGFiZWxGYXIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gZmFyXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTGluZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZVdpZHRoKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lV2lkdGggJiYgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsUGl4ZWxPZmZzZXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgfVxyXG4gIHNldCBsYWJlbFBpeGVsT2Zmc2V0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMubGFiZWwucGl4ZWxPZmZzZXQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQgJiYgdGhpcy5fZWxtcy5sYWJlbFBpeGVsT2Zmc2V0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldCBsYWJlbExpbmVDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbExpbmVDb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubGluZUNvbG9yID0gdlxyXG4gICAgdGhpcy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcikge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGluZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgICAgZWw6IGl0ZW0uZWwsXHJcbiAgICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxMaW5lQ29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxMaW5lQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9ICdyZ2JhKDAsMjU1LDI1NSwwLjUpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvcltpXSA9IGxpbmVDb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmJhY2tncm91bmRDb2xvclswXVxyXG4gIH1cclxuICBzZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdiwgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1dXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzFdID0gdlxyXG4gICAgdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBbdGhpcy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0sIHZdXHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCkge1xyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvckVuZCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kW2ldID0gbGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVBvc2l0aW9uczMoKSB7XHJcbiAgICBsZXQgb3B0aW9uc1Bvc2l0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgIGlmICh0aGlzLm5vc2VUb1RhaWwpIHtcclxuICAgICAgb3B0aW9uc1Bvc2l0aW9ucy5wdXNoKG9wdGlvbnNQb3NpdGlvbnNbMF0sIG9wdGlvbnNQb3NpdGlvbnNbMV0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zMSA9IFtdXHJcbiAgICBsZXQgcG9zMiA9IFtdXHJcbiAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgIGxldCBmb3J3YXJkID0gW11cclxuICAgIGxldCByZXZlcnNlID0gW11cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnNQb3NpdGlvbnMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3QxID0gdHVyZi5wb2ludChbb3B0aW9uc1Bvc2l0aW9uc1tpXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgICAgbGV0IHBvdDIgPSB0dXJmLnBvaW50KFtvcHRpb25zUG9zaXRpb25zW2kgKyAxXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbaSArIDFdLmxhdF0pXHJcbiAgICAgIGxldCBiZWFyaW5nID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MSwgcG90Mik7XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IHR1cmYuZGVzdGluYXRpb24ocG90MSwgdGhpcy5vcHRpb25zLndpZHRoIC8gMiAvIDEwMDAsIGJlYXJpbmcgKyA5MCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgZGVzdGluYXRpb24yID0gdHVyZi5kZXN0aW5hdGlvbihwb3QyLCB0aGlzLm9wdGlvbnMud2lkdGggLyAyIC8gMTAwMCwgYmVhcmluZyArIDkwLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbjMgPSB0dXJmLmRlc3RpbmF0aW9uKHBvdDEsIHRoaXMub3B0aW9ucy53aWR0aCAvIDIgLyAxMDAwLCBiZWFyaW5nIC0gOTAsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uNCA9IHR1cmYuZGVzdGluYXRpb24ocG90MiwgdGhpcy5vcHRpb25zLndpZHRoIC8gMiAvIDEwMDAsIGJlYXJpbmcgLSA5MCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgY29vcmRpbmF0ZXMgPSBkZXN0aW5hdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBsZXQgY29vcmRpbmF0ZXMyID0gZGVzdGluYXRpb24yLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGxldCBjb29yZGluYXRlczMgPSBkZXN0aW5hdGlvbjMuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgbGV0IGNvb3JkaW5hdGVzNCA9IGRlc3RpbmF0aW9uNC5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb29yZGluYXRlc1syXSA9IG9wdGlvbnNQb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgIGNvb3JkaW5hdGVzMlsyXSA9IG9wdGlvbnNQb3NpdGlvbnNbaSArIDFdLmFsdFxyXG4gICAgICBjb29yZGluYXRlczNbMl0gPSBvcHRpb25zUG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICBjb29yZGluYXRlczRbMl0gPSBvcHRpb25zUG9zaXRpb25zW2kgKyAxXS5hbHRcclxuICAgICAgcG9zMS5wdXNoKGNvb3JkaW5hdGVzLCBjb29yZGluYXRlczIpXHJcbiAgICAgIHBvczIucHVzaChjb29yZGluYXRlczMsIGNvb3JkaW5hdGVzNClcclxuICAgIH1cclxuXHJcbiAgICAvLyDnm7Top5JcclxuICAgIGlmICh0aGlzLmNvcm5lclR5cGUgPT09IDApIHsgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5jb3JuZXJUeXBlID09PSAxKSB7XHJcbiAgICAgIC8vIOaWnOinklxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvczEubGVuZ3RoIC0gMzsgaSArPSAyKSB7XHJcblxyXG4gICAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICAgIGZvcndhcmQucHVzaChwb3MxW2ldKVxyXG4gICAgICAgICAgcmV2ZXJzZS5wdXNoKHBvczJbaV0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3J3YXJkLnB1c2gocG9zMVtpICsgMV0sIHBvczFbaSArIDJdKVxyXG4gICAgICAgIHJldmVyc2UucHVzaChwb3MyW2kgKyAxXSwgcG9zMltpICsgMl0pXHJcblxyXG4gICAgICAgIGlmIChpID09IHBvczEubGVuZ3RoIC0gNCkge1xyXG4gICAgICAgICAgZm9yd2FyZC5wdXNoKHBvczFbaSArIDNdKVxyXG4gICAgICAgICAgcmV2ZXJzZS5wdXNoKHBvczJbaSArIDNdKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuY29ybmVyVHlwZSA9PT0gMikge1xyXG4gICAgICAvLyDlnIbop5JcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MxLmxlbmd0aCAtIDM7IGkgKz0gMikge1xyXG4gICAgICAgIGxldCBjZW50ZXIgPSBvcHRpb25zUG9zaXRpb25zWyhpIC8gMikgKyAxXVxyXG4gICAgICAgIGxldCBwb3QxID0gdHVyZi5wb2ludChwb3MxW2kgKyAxXSlcclxuICAgICAgICBsZXQgcG90MiA9IHR1cmYucG9pbnQocG9zMltpICsgMV0pXHJcbiAgICAgICAgbGV0IGJlYXJpbmcxID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MSwgcG90Mik7XHJcbiAgICAgICAgbGV0IHBvdDMgPSB0dXJmLnBvaW50KHBvczFbaSArIDJdKVxyXG4gICAgICAgIGxldCBwb3Q0ID0gdHVyZi5wb2ludChwb3MyW2kgKyAyXSlcclxuICAgICAgICBsZXQgYmVhcmluZzIgPSB0dXJmLnJodW1iQmVhcmluZyhwb3QzLCBwb3Q0KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnYmVhcmluZzEsIGJlYXJpbmcyJywgKGJlYXJpbmcxIC0gYmVhcmluZzIpKVxyXG4gICAgICAgIGxldCBmYWNlID0gdHJ1ZVxyXG4gICAgICAgIGlmIChNYXRoLnNpbihDZXNpdW0uTWF0aC50b1JhZGlhbnMoYmVhcmluZzEgLSBiZWFyaW5nMikpID4gMCkge1xyXG4gICAgICAgICAgbGV0IHRlbXBvcmFyeSA9IGJlYXJpbmcxXHJcbiAgICAgICAgICBiZWFyaW5nMSA9IGJlYXJpbmcyICsgMTgwXHJcbiAgICAgICAgICBiZWFyaW5nMiA9IHRlbXBvcmFyeSArIDE4MFxyXG4gICAgICAgICAgZmFjZSA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWN0b3IgPSB0dXJmLnNlY3RvcihbY2VudGVyLmxuZywgY2VudGVyLmxhdCwgY2VudGVyLmFsdF0sIHRoaXMub3B0aW9ucy53aWR0aCAvIDEwMDAgLyAyLCBiZWFyaW5nMSwgYmVhcmluZzIsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnc2VjdG9yJywgc2VjdG9yKVxyXG5cclxuXHJcbiAgICAgICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAgICAgZm9yd2FyZC5wdXNoKHBvczFbaV0pXHJcbiAgICAgICAgICByZXZlcnNlLnB1c2gocG9zMltpXSlcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnZmFjZScsIGZhY2UpXHJcbiAgICAgICAgaWYgKGZhY2UpIHtcclxuICAgICAgICAgIGZvcndhcmQucHVzaChwb3MxW2kgKyAxXSwgcG9zMVtpICsgMl0pXHJcbiAgICAgICAgICBmb3IgKGxldCBuID0gMTsgbiA8IHNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5sZW5ndGggLSAxOyBuKyspIHtcclxuICAgICAgICAgICAgcmV2ZXJzZS5wdXNoKFsuLi5zZWN0b3IuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF1bbl0sIHBvczFbaSArIDFdWzJdXSlcclxuICAgICAgICAgICAgLy8gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgIC8vICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLnNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtuXSwgcG9zMVtpICsgMV1bMl0pLFxyXG4gICAgICAgICAgICAvLyAgIC8vIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgICAvLyAgIC8vICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgIC8vICAgLy8gICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgIC8vICAgLy8gICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgICAvLyAgIC8vICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgIC8vICAgLy8gfSxcclxuICAgICAgICAgICAgLy8gICBsYWJlbDoge1xyXG4gICAgICAgICAgICAvLyAgICAgdGV4dDogbisnJyxcclxuICAgICAgICAgICAgLy8gICAgIGZvbnQ6ICcxMnB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgICAgICAgIC8vICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmMWU2MDUnKSxcclxuICAgICAgICAgICAgLy8gICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgICAgICAvLyAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAvLyAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgIC8vICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgbiA9IHNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5sZW5ndGggLSAyOyBuID4gMDsgbi0tKSB7XHJcbiAgICAgICAgICAgIGZvcndhcmQucHVzaChbLi4uc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdW25dLCBwb3MxW2kgKyAxXVsyXV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXZlcnNlLnB1c2gocG9zMltpICsgMV0sIHBvczJbaSArIDJdKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGkgPT0gcG9zMS5sZW5ndGggLSA0KSB7XHJcbiAgICAgICAgICBmb3J3YXJkLnB1c2gocG9zMVtpICsgM10pXHJcbiAgICAgICAgICByZXZlcnNlLnB1c2gocG9zMltpICsgM10pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvczEubGVuZ3RoIC0gMzsgaSArPSAyKSB7XHJcbiAgICAgIC8vICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAvLyAgICAgZm9yd2FyZC5wdXNoKHBvczFbaV0pXHJcbiAgICAgIC8vICAgICByZXZlcnNlLnB1c2gocG9zMltpXSlcclxuICAgICAgLy8gICB9XHJcblxyXG4gICAgICAvLyAgIGZvcndhcmQucHVzaChwb3MxW2kgKyAxXSwgcG9zMVtpICsgMl0pXHJcbiAgICAgIC8vICAgcmV2ZXJzZS5wdXNoKHBvczJbaSArIDFdLCBwb3MyW2kgKyAyXSlcclxuXHJcbiAgICAgIC8vICAgaWYgKGkgPT0gcG9zMS5sZW5ndGggLSA0KSB7XHJcbiAgICAgIC8vICAgICBmb3J3YXJkLnB1c2gocG9zMVtpICsgM10pXHJcbiAgICAgIC8vICAgICByZXZlcnNlLnB1c2gocG9zMltpICsgM10pXHJcbiAgICAgIC8vICAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgICAvLyAgIGxldCBwb3QxID0gdHVyZi5wb2ludChwb3MxW2ldKVxyXG4gICAgICAvLyAgIGxldCBwb3QyID0gdHVyZi5wb2ludChwb3MxW2kgKyAxXSlcclxuICAgICAgLy8gICBsZXQgYmVhcmluZzEgPSB0dXJmLnJodW1iQmVhcmluZyhwb3QxLCBwb3QyKTtcclxuICAgICAgLy8gICBsZXQgcG90MyA9IHR1cmYucG9pbnQocG9zMVtpICsgMl0pXHJcbiAgICAgIC8vICAgbGV0IHBvdDQgPSB0dXJmLnBvaW50KHBvczFbaSArIDNdKVxyXG4gICAgICAvLyAgIGxldCBiZWFyaW5nMiA9IHR1cmYucmh1bWJCZWFyaW5nKHBvdDMsIHBvdDQpO1xyXG5cclxuICAgICAgLy8gICBsZXQgbGluZTEgPSB0dXJmLmxpbmVTdHJpbmcoW3BvczFbaV0sIHBvczFbaSArIDFdXSk7XHJcbiAgICAgIC8vICAgbGV0IGxpbmUyID0gdHVyZi5saW5lU3RyaW5nKFtwb3MxW2kgKyAyXSwgcG9zMVtpICsgM11dKTtcclxuICAgICAgLy8gICBsZXQgaW50ZXJzZWN0cyA9IHR1cmYubGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xyXG4gICAgICAvLyAgIGlmIChpID09IDApIHtcclxuICAgICAgLy8gICAgIGZvcndhcmQucHVzaChwb3MxW2ldKVxyXG4gICAgICAvLyAgICAgcmV2ZXJzZS5wdXNoKHBvczJbaV0pXHJcbiAgICAgIC8vICAgfVxyXG5cclxuICAgICAgLy8gICBpZiAoaW50ZXJzZWN0cy5mZWF0dXJlc1swXSkge1xyXG4gICAgICAvLyAgICAgZm9yd2FyZC5wdXNoKFsuLi5pbnRlcnNlY3RzLmZlYXR1cmVzWzBdLmdlb21ldHJ5LmNvb3JkaW5hdGVzLCBwb3MxW2kgKyAxXVsyXV0pXHJcbiAgICAgIC8vICAgICBsZXQgc2VjdG9yID0gdHVyZi5zZWN0b3IoaW50ZXJzZWN0cy5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlcywgdGhpcy5vcHRpb25zLndpZHRoIC8gMTAwMCwgYmVhcmluZzEgLSA5MCwgYmVhcmluZzIgLSA5MCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICAvLyAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBzZWN0b3IuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIC0gMTsgbisrKSB7XHJcbiAgICAgIC8vICAgICAgIHJldmVyc2UucHVzaChbLi4uc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdW25dLCBwb3MxW2kgKyAxXVsyXV0pXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAvLyAgICAgbGV0IHBvdDEgPSB0dXJmLnBvaW50KHBvczJbaV0pXHJcbiAgICAgIC8vICAgICBsZXQgcG90MiA9IHR1cmYucG9pbnQocG9zMltpICsgMV0pXHJcbiAgICAgIC8vICAgICBsZXQgYmVhcmluZzEgPSB0dXJmLnJodW1iQmVhcmluZyhwb3QxLCBwb3QyKTtcclxuICAgICAgLy8gICAgIGxldCBwb3QzID0gdHVyZi5wb2ludChwb3MyW2kgKyAyXSlcclxuICAgICAgLy8gICAgIGxldCBwb3Q0ID0gdHVyZi5wb2ludChwb3MyW2kgKyAzXSlcclxuICAgICAgLy8gICAgIGxldCBiZWFyaW5nMiA9IHR1cmYucmh1bWJCZWFyaW5nKHBvdDMsIHBvdDQpO1xyXG5cclxuICAgICAgLy8gICAgIGxldCBsaW5lMSA9IHR1cmYubGluZVN0cmluZyhbcG9zMltpXSwgcG9zMltpICsgMV1dKTtcclxuICAgICAgLy8gICAgIGxldCBsaW5lMiA9IHR1cmYubGluZVN0cmluZyhbcG9zMltpICsgMl0sIHBvczJbaSArIDNdXSk7XHJcbiAgICAgIC8vICAgICBsZXQgaW50ZXJzZWN0cyA9IHR1cmYubGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xyXG4gICAgICAvLyAgICAgaWYgKGludGVyc2VjdHMuZmVhdHVyZXNbMF0pIHtcclxuICAgICAgLy8gICAgICAgcmV2ZXJzZS5wdXNoKFsuLi5pbnRlcnNlY3RzLmZlYXR1cmVzWzBdLmdlb21ldHJ5LmNvb3JkaW5hdGVzLCBwb3MyW2kgKyAxXVsyXV0pXHJcbiAgICAgIC8vICAgICAgIGxldCBzZWN0b3IgPSB0dXJmLnNlY3RvcihpbnRlcnNlY3RzLmZlYXR1cmVzWzBdLmdlb21ldHJ5LmNvb3JkaW5hdGVzLCB0aGlzLm9wdGlvbnMud2lkdGggLyAxMDAwLCBiZWFyaW5nMiArIDkwLCBiZWFyaW5nMSArIDkwLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIC8vICAgICAgIGZvciAobGV0IG4gPSBzZWN0b3IuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIC0gMjsgbiA+PSAxOyBuLS0pIHtcclxuICAgICAgLy8gICAgICAgICBmb3J3YXJkLnB1c2goWy4uLnNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtuXSwgcG9zMltpICsgMV1bMl1dKVxyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGlmIChpID09IHBvczEubGVuZ3RoIC0gNCkge1xyXG4gICAgICAvLyAgICAgZm9yd2FyZC5wdXNoKHBvczFbaSArIDNdKVxyXG4gICAgICAvLyAgICAgcmV2ZXJzZS5wdXNoKHBvczJbaSArIDNdKVxyXG4gICAgICAvLyAgIH1cclxuXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBwb3NpdGlvbnMgPSBbLi4uZm9yd2FyZF1cclxuICAgIGZvciAobGV0IGkgPSByZXZlcnNlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIHBvc2l0aW9ucy5wdXNoKHJldmVyc2VbaV0pXHJcbiAgICB9XHJcbiAgICBwb3NpdGlvbnMucHVzaChwb3NpdGlvbnNbMF0pXHJcblxyXG5cclxuXHJcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgIC8vICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoLi4ucG9zaXRpb25zW2ldKSxcclxuICAgIC8vICAgICAgIGxhYmVsOiB7XHJcbiAgICAvLyAgICAgICAgICAgdGV4dDogaSsnJyxcclxuICAgIC8vICAgICAgICAgICBmb250OiAnMThweCBNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgLy8gICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2YxZTYwNScpLFxyXG4gICAgLy8gICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgLy8gICAgICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgIC8vICAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgIC8vICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGNvbnNvbGUubG9nKCdwb3NpdGlvbnMnLCBwb3NpdGlvbnMpXHJcbiAgICByZXR1cm4gcG9zaXRpb25zXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVQb3NpdGlvbnMyKCkge1xyXG4gICAgLy8gbGV0IGNvbGxlY3Rpb24gPSBuZXcgQ2VzaXVtLkVudGl0eUNvbGxlY3Rpb24oKVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgICAgIGxldCBiZWFyaW5nID0gKDE4MCAtIGNhY3VsYXRlQW5nbGUodGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXSwgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpICsgMV0sIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaSArIDJdKSkgLyAyXHJcbiAgICAgIGxldCB3aWR0aCA9IE1hdGgudGFuKChiZWFyaW5nKSAqIE1hdGguUEkgLyAxODApICogKHRoaXMub3B0aW9ucy53aWR0aCAvIDIpXHJcbiAgICAgIGNvbnNvbGUubG9nKCd3aWR0aCcsIHdpZHRoLCBiZWFyaW5nKVxyXG4gICAgICBsZXQgbGluZTEgPSB0dXJmLmxpbmVTdHJpbmcoW1t0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1sxXS5sYXRdLCBbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XV0pO1xyXG4gICAgICBsZXQgbGluZTIgPSB0dXJmLmxpbmVTdHJpbmcoW1t0aGlzLm9wdGlvbnMucG9zaXRpb25zWzFdLmxuZywgdGhpcy5vcHRpb25zLnBvc2l0aW9uc1sxXS5sYXRdLCBbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1syXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMl0ubGF0XV0pO1xyXG4gICAgICBsZXQgc2xpY2VkMSA9IHR1cmYubGluZVNsaWNlQWxvbmcobGluZTEsIDAsIHdpZHRoIC8gMTAwMCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgc2xpY2VkMiA9IHR1cmYubGluZVNsaWNlQWxvbmcobGluZTIsIDAsIHdpZHRoIC8gMTAwMCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgcG9zMSA9IHNsaWNlZDEuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkMS5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXVxyXG4gICAgICBsZXQgcG9zMiA9IHNsaWNlZDIuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkMi5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXVxyXG4gICAgICBwb3MxWzJdID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpICsgMV0uYWx0XHJcbiAgICAgIHBvczJbMl0gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2kgKyAxXS5hbHRcclxuICAgICAgcG9zaXRpb25zLnB1c2goW3BvczEsIHBvczJdKVxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zMVswXSwgcG9zMVsxXSwgcG9zMVsyXSksXHJcbiAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICBpbWFnZTogdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvcG9pbnQucG5nJyxcclxuICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczJbMF0sIHBvczJbMV0sIHBvczJbMl0pLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICBoZWlnaHQ6IDE1LFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2FjdWxhdGVBbmdsZShwMSwgcDIsIHAzKSB7XHJcbiAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFtwMS5sbmcsIHAxLmxhdF0pO1xyXG4gICAgICBsZXQgcG9pbnQyID0gdHVyZi5wb2ludChbcDIubG5nLCBwMi5sYXRdKTtcclxuICAgICAgbGV0IHBvaW50MyA9IHR1cmYucG9pbnQoW3AzLmxuZywgcDMubGF0XSk7XHJcbiAgICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgIGxldCBkaXN0YW5jZTEgPSB0dXJmLnJodW1iRGlzdGFuY2UocG9pbnQxLCBwb2ludDIsIG9wdGlvbnMpO1xyXG4gICAgICBsZXQgZGlzdGFuY2UyID0gdHVyZi5yaHVtYkRpc3RhbmNlKHBvaW50MywgcG9pbnQyLCBvcHRpb25zKTtcclxuICAgICAgbGV0IGRpc3RhbmNlID0gZGlzdGFuY2UxXHJcbiAgICAgIGlmIChkaXN0YW5jZTEgPiBkaXN0YW5jZTIpIHtcclxuICAgICAgICBkaXN0YW5jZSA9IGRpc3RhbmNlMlxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYmVhcmluZzEgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDEsIHBvaW50MilcclxuICAgICAgbGV0IGJlYXJpbmcyID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQzLCBwb2ludDIpXHJcblxyXG4gICAgICBsZXQgYmVhcmluZyA9IE1hdGguYWJzKCgoYmVhcmluZzEgLSBiZWFyaW5nMikgKyAzNjApICUgMzYwKVxyXG4gICAgICBpZiAoYmVhcmluZyA+IDE4MCkge1xyXG4gICAgICAgIGJlYXJpbmcgPSAzNjAgLSBiZWFyaW5nXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGJlYXJpbmdcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcG9zaXRpb25zXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVQb3NpdGlvbnMoKSB7XHJcbiAgICBsZXQgb3B0aW9uc1Bvc2l0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgIGlmICh0aGlzLm5vc2VUb1RhaWwpIHtcclxuICAgICAgb3B0aW9uc1Bvc2l0aW9ucy5wdXNoKG9wdGlvbnNQb3NpdGlvbnNbMF0sIG9wdGlvbnNQb3NpdGlvbnNbMV0pXHJcbiAgICB9XHJcbiAgICBsZXQgcG9zMSA9IFtdXHJcbiAgICBsZXQgcG9zMiA9IFtdXHJcbiAgICBsZXQgcG9zaXRpb25zID0gW11cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnNQb3NpdGlvbnMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGxldCBwb3QxID0gdHVyZi5wb2ludChbb3B0aW9uc1Bvc2l0aW9uc1tpXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgICAgbGV0IHBvdDIgPSB0dXJmLnBvaW50KFtvcHRpb25zUG9zaXRpb25zW2kgKyAxXS5sbmcsIG9wdGlvbnNQb3NpdGlvbnNbaSArIDFdLmxhdF0pXHJcbiAgICAgIGxldCBiZWFyaW5nID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MSwgcG90Mik7XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IHR1cmYuZGVzdGluYXRpb24ocG90MSwgdGhpcy5vcHRpb25zLndpZHRoIC8gMiAvIDEwMDAsIGJlYXJpbmcgKyA5MCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgZGVzdGluYXRpb24yID0gdHVyZi5kZXN0aW5hdGlvbihwb3QyLCB0aGlzLm9wdGlvbnMud2lkdGggLyAyIC8gMTAwMCwgYmVhcmluZyArIDkwLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbjMgPSB0dXJmLmRlc3RpbmF0aW9uKHBvdDEsIHRoaXMub3B0aW9ucy53aWR0aCAvIDIgLyAxMDAwLCBiZWFyaW5nIC0gOTAsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uNCA9IHR1cmYuZGVzdGluYXRpb24ocG90MiwgdGhpcy5vcHRpb25zLndpZHRoIC8gMiAvIDEwMDAsIGJlYXJpbmcgLSA5MCwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG4gICAgICBsZXQgY29vcmRpbmF0ZXMgPSBkZXN0aW5hdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBsZXQgY29vcmRpbmF0ZXMyID0gZGVzdGluYXRpb24yLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgICAgIGxldCBjb29yZGluYXRlczMgPSBkZXN0aW5hdGlvbjMuZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgICAgbGV0IGNvb3JkaW5hdGVzNCA9IGRlc3RpbmF0aW9uNC5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgICBjb29yZGluYXRlc1syXSA9IG9wdGlvbnNQb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgIGNvb3JkaW5hdGVzMlsyXSA9IG9wdGlvbnNQb3NpdGlvbnNbaSArIDFdLmFsdFxyXG4gICAgICBjb29yZGluYXRlczNbMl0gPSBvcHRpb25zUG9zaXRpb25zW2ldLmFsdFxyXG4gICAgICBjb29yZGluYXRlczRbMl0gPSBvcHRpb25zUG9zaXRpb25zW2kgKyAxXS5hbHRcclxuXHJcbiAgICAgIHBvczEucHVzaChbY29vcmRpbmF0ZXMsIGNvb3JkaW5hdGVzMiwgY29vcmRpbmF0ZXM0LCBjb29yZGluYXRlczMsIGNvb3JkaW5hdGVzXSlcclxuICAgIH1cclxuXHJcbiAgICBwb3NpdGlvbnMucHVzaChwb3MxWzBdKVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jb3JuZXJUeXBlID09PSAwKSB7XHJcbiAgICAgIC8vIOebtOinklxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvczEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2VudGVyID0gb3B0aW9uc1Bvc2l0aW9uc1tpXVxyXG4gICAgICAgIGxldCBwb3QxID0gdHVyZi5wb2ludChwb3MxW2kgLSAxXVsxXSlcclxuICAgICAgICBsZXQgcG90MiA9IHR1cmYucG9pbnQocG9zMVtpIC0gMV1bMl0pXHJcbiAgICAgICAgbGV0IGJlYXJpbmcxID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MSwgcG90Mik7XHJcbiAgICAgICAgbGV0IHBvdDMgPSB0dXJmLnBvaW50KHBvczFbaV1bMF0pXHJcbiAgICAgICAgbGV0IHBvdDQgPSB0dXJmLnBvaW50KHBvczFbaV1bM10pXHJcbiAgICAgICAgbGV0IGJlYXJpbmcyID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MywgcG90NCk7XHJcbiAgICAgICAgbGV0IGZhY2UgPSB0cnVlXHJcbiAgICAgICAgaWYgKE1hdGguc2luKENlc2l1bS5NYXRoLnRvUmFkaWFucyhiZWFyaW5nMSAtIGJlYXJpbmcyKSkgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgdGVtcG9yYXJ5ID0gYmVhcmluZzFcclxuICAgICAgICAgIGJlYXJpbmcxID0gYmVhcmluZzIgKyAxODBcclxuICAgICAgICAgIGJlYXJpbmcyID0gdGVtcG9yYXJ5ICsgMTgwXHJcbiAgICAgICAgICBmYWNlID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGJlYXJpbmczID0gTWF0aC5hYnMoYmVhcmluZzEgLSBiZWFyaW5nMilcclxuICAgICAgICBpZiAoYmVhcmluZzMgPiAxODApIHtcclxuICAgICAgICAgIGJlYXJpbmczID0gMzYwIC0gYmVhcmluZzNcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRpc3RhbmNlID0gKHRoaXMub3B0aW9ucy53aWR0aCAvIDIpIC8gTWF0aC5jb3MoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJlYXJpbmczIC8gMikpXHJcbiAgICAgICAgaWYgKGRpc3RhbmNlID4gdGhpcy5vcHRpb25zLndpZHRoICogNSkge1xyXG4gICAgICAgICAgZGlzdGFuY2UgPSB0aGlzLm9wdGlvbnMud2lkdGggKiA1XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2VjdG9yID0gdHVyZi5zZWN0b3IoW2NlbnRlci5sbmcsIGNlbnRlci5sYXRdLCB0aGlzLm9wdGlvbnMud2lkdGggLyAxMDAwIC8gMiwgYmVhcmluZzEsIGJlYXJpbmcyLCB7IHVuaXRzOiAna2lsb21ldGVycycsIHN0ZXBzOiAzNjAwIH0pO1xyXG4gICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFtjZW50ZXIubG5nLCBjZW50ZXIubGF0XSk7XHJcbiAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoWy4uLnNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtNYXRoLmNlaWwoc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAvIDIpXV0pO1xyXG5cclxuICAgICAgICBsZXQgYmVhcmluZyA9IHR1cmYuYmVhcmluZyhwb2ludDEsIHBvaW50Mik7XHJcbiAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludDEsIGRpc3RhbmNlIC8gMTAwMCwgYmVhcmluZywgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG5cclxuICAgICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICAgIGFycmF5LnB1c2goWy4uLnNlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXVswXSwgY2VudGVyLmFsdF0pXHJcbiAgICAgICAgYXJyYXkucHVzaChbLi4uc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdWzFdLCBjZW50ZXIuYWx0XSlcclxuICAgICAgICBhcnJheS5wdXNoKFsuLi5kZXN0aW5hdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlcywgY2VudGVyLmFsdF0pXHJcbiAgICAgICAgYXJyYXkucHVzaChbLi4uc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdW3NlY3Rvci5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5sZW5ndGggLSAyXSwgY2VudGVyLmFsdF0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goYXJyYXkpXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2gocG9zMVtpXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5jb3JuZXJUeXBlID09PSAxKSB7XHJcbiAgICAgIC8vIOaWnOinklxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvczEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb3NpdGlvbnMucHVzaChbcG9zMVtpIC0gMV1bMl0sIHBvczFbaV1bMF0sIHBvczFbaSAtIDFdWzFdLCBwb3MxW2ldWzNdLCBwb3MxW2kgLSAxXVsyXV0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2gocG9zMVtpXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5jb3JuZXJUeXBlID09PSAyKSB7XHJcbiAgICAgIC8vIOWchuinklxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvczEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2VudGVyID0gb3B0aW9uc1Bvc2l0aW9uc1tpXVxyXG4gICAgICAgIGxldCBwb3QxID0gdHVyZi5wb2ludChwb3MxW2kgLSAxXVsxXSlcclxuICAgICAgICBsZXQgcG90MiA9IHR1cmYucG9pbnQocG9zMVtpIC0gMV1bMl0pXHJcbiAgICAgICAgbGV0IGJlYXJpbmcxID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MSwgcG90Mik7XHJcbiAgICAgICAgbGV0IHBvdDMgPSB0dXJmLnBvaW50KHBvczFbaV1bMF0pXHJcbiAgICAgICAgbGV0IHBvdDQgPSB0dXJmLnBvaW50KHBvczFbaV1bM10pXHJcbiAgICAgICAgbGV0IGJlYXJpbmcyID0gdHVyZi5yaHVtYkJlYXJpbmcocG90MywgcG90NCk7XHJcbiAgICAgICAgaWYgKE1hdGguc2luKENlc2l1bS5NYXRoLnRvUmFkaWFucyhiZWFyaW5nMSAtIGJlYXJpbmcyKSkgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgdGVtcG9yYXJ5ID0gYmVhcmluZzFcclxuICAgICAgICAgIGJlYXJpbmcxID0gYmVhcmluZzIgKyAxODBcclxuICAgICAgICAgIGJlYXJpbmcyID0gdGVtcG9yYXJ5ICsgMTgwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWN0b3IgPSB0dXJmLnNlY3RvcihbY2VudGVyLmxuZywgY2VudGVyLmxhdF0sIHRoaXMub3B0aW9ucy53aWR0aCAvIDEwMDAgLyAyLCBiZWFyaW5nMSwgYmVhcmluZzIsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDE7IG4rKykge1xyXG4gICAgICAgICAgYXJyYXkucHVzaChbLi4uc2VjdG9yLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdW25dLCBjZW50ZXIuYWx0XSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goYXJyYXkpXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2gocG9zMVtpXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBvc2l0aW9uc1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvL+WIm+W7ulxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGUodGhhdCkge1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKG5ldyBDZXNpdW0uQ3VzdG9tTWF0ZXJpYWxTb3VyY2UoKSwgbmV3IENlc2l1bS5Qb2x5bGluZVRyYWlsTGlua01hdGVyaWFsUHJvcGVydHkoKSlcclxuICAgIC8vIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICAvLyBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAvLyBsZXQgbWluaW11bUhlaWdodHMgPSBbXVxyXG4gICAgLy8gbGV0IG1heGltdW1IZWlnaHRzID0gW11cclxuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgLy8gICBtaW5pbXVtSGVpZ2h0cy5wdXNoKHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAvLyAgIG1heGltdW1IZWlnaHRzLnB1c2gocG9zaXRpb25zW2ldLmFsdCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodClcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGF0LmVudGl0eSA9IG5ldyBDZXNpdW0uRW50aXR5Q29sbGVjdGlvbigpXHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuY2FsY3VsYXRlUG9zaXRpb25zKClcclxuICAgIGxldCBtYXhpbXVtSGVpZ2h0cyA9IFtdXHJcbiAgICBsZXQgbWluaW11bUhlaWdodHMgPSBbXVxyXG5cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcG9zaXRpb25zW2ldLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXVtuXVswXSwgcG9zaXRpb25zW2ldW25dWzFdLCBwb3NpdGlvbnNbaV1bbl1bMl0pXHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChwb3NpdGlvbnNbaV1bbl1bMF0sIHBvc2l0aW9uc1tpXVtuXVsxXSwgcG9zaXRpb25zW2ldW25dWzJdICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG4gICAgICB9XHJcbiAgICAgIGxldCB3YWxsID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCArICctJyArIFdhbGxSZWFsU3RlcmVvc2NvcGljLnJhbmRvbVN0cmluZygxMiksXHJcbiAgICAgICAgcG9seWxpbmVWb2x1bWU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSksXHJcbiAgICAgICAgICBzaGFwZTogW1xyXG4gICAgICAgICAgICB7IHg6IC0wLjAwMDAwMDEsIHk6IC10aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgICAgICAgIHsgeDogMC4wMDAwMDAxLCB5OiAtdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgICB7IHg6IDAuMDAwMDAwMSwgeTogdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgICB7IHg6IC0wLjAwMDAwMDEsIHk6IHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodCAvIDIgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBjb3JuZXJUeXBlOiBDZXNpdW0uQ29ybmVyVHlwZS5NSVRFUkVEXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IHRvcCA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQgKyAnLScgKyBXYWxsUmVhbFN0ZXJlb3Njb3BpYy5yYW5kb21TdHJpbmcoMTIpLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGhpZXJhcmNoeTogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheTIpLFxyXG4gICAgICAgICAgcGVyUG9zaXRpb25IZWlnaHQ6IHRydWUsXHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgdGhhdC5lbnRpdHkuYWRkKHdhbGwpXHJcbiAgICAgIHRoYXQuZW50aXR5LmFkZCh0b3ApXHJcbiAgICAgIHdhbGwucG9seWxpbmVWb2x1bWUubWF0ZXJpYWwgPSB0aGF0LmdldE1hdGVyaWFsKHdhbGwuaWQpXHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5lbnRpdHkuc2hvdyA9IHRoYXQub3B0aW9ucy5zaG93XHJcblxyXG4gICAgV2FsbFJlYWxTdGVyZW9zY29waWMuY3JlYXRlTGFiZWwodGhhdClcclxuICAgIHN5bmNEYXRhKHRoYXQuc2RrLCB0aGF0Lm9wdGlvbnMuaWQpXHJcbiAgICBpZiAodGhhdC5vcHRpb25zLnNob3cpIHtcclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+WunuS9k+WimeWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBXYWxsUmVhbFN0ZXJlb3Njb3BpYy5ub2RlRWRpdCh0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyB3YWxsLXN0ZXJlb3Njb3BpYydcclxuICAgICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKHRoaXMpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIC8vIOaLkOinkuexu+Wei+S4i+aLiVxyXG4gICAgICBsZXQgY29ybmVyVHlwZUxpc3QgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJzxzdmcgY2xhc3M9XCJpY29uLXpqXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tempcIj48L3VzZT48L3N2Zz7nm7Top5InLFxyXG4gICAgICAgICAgdmFsdWU6ICfnm7Top5InLFxyXG4gICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgICAgaWNvbjogJ3lqLWljb24temonXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnPHN2ZyBjbGFzcz1cImljb24teGpcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi14alwiPjwvdXNlPjwvc3ZnPuaWnOinkicsXHJcbiAgICAgICAgICB2YWx1ZTogJ+aWnOinkicsXHJcbiAgICAgICAgICBrZXk6IDEsXHJcbiAgICAgICAgICBpY29uOiAneWotaWNvbi14aidcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICc8c3ZnIGNsYXNzPVwiaWNvbi15alwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXlqXCI+PC91c2U+PC9zdmc+5ZyG6KeSJyxcclxuICAgICAgICAgIHZhbHVlOiAn5ZyG6KeSJyxcclxuICAgICAgICAgIGtleTogMixcclxuICAgICAgICAgIGljb246ICd5ai1pY29uLXlqJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIF1cclxuXHJcbiAgICAgIGxldCBsZWdwQ29ybmVyVHlwZSA9IGxlZ3AoY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb3JuZXItdHlwZS1ib3gnKVswXSwgXCIuY29ybmVyLXR5cGVcIilcclxuICAgICAgbGVncENvcm5lclR5cGUubGVncF9zZWFyY2goY29ybmVyVHlwZUxpc3QpXHJcbiAgICAgIGxldCBpQWN0aXZlRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXHJcbiAgICAgIGlBY3RpdmVFbG0uY2xhc3NOYW1lID0gXCJpY29uLWFjdGl2ZVwiXHJcbiAgICAgIGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29ybmVyLXR5cGUnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjeV9kYXRhbGlzdCcpWzBdLmFwcGVuZENoaWxkKGlBY3RpdmVFbG0pXHJcbiAgICAgIGxldCBsZWdwQ29ybmVyVHlwZUlucHV0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb3JuZXItdHlwZScpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29ybmVyVHlwZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY29ybmVyVHlwZUxpc3RbaV0ua2V5ID09PSB0aGlzLmNvcm5lclR5cGUpIHtcclxuICAgICAgICAgIGxlZ3BDb3JuZXJUeXBlLmxlZ3Bfc2VhcmNoQWN0aXZlKGNvcm5lclR5cGVMaXN0W2ldLnZhbHVlKVxyXG4gICAgICAgICAgbGVncENvcm5lclR5cGVJbnB1dC52YWx1ZSA9IGNvcm5lclR5cGVMaXN0W2ldLnZhbHVlXHJcbiAgICAgICAgICBpQWN0aXZlRWxtLmlubmVySFRNTCA9IGA8c3ZnIGNsYXNzPVwiJHtjb3JuZXJUeXBlTGlzdFtpXS5pY29ufVwiPjx1c2UgeGxpbms6aHJlZj1cIiMke2Nvcm5lclR5cGVMaXN0W2ldLmljb259XCI+PC91c2U+PC9zdmc+YFxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGVncENvcm5lclR5cGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlLCBjKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3JuZXJUeXBlTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGNvcm5lclR5cGVMaXN0W2ldLnZhbHVlID09PSBsZWdwQ29ybmVyVHlwZUlucHV0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29ybmVyVHlwZSA9IGNvcm5lclR5cGVMaXN0W2ldLmtleVxyXG4gICAgICAgICAgICBpQWN0aXZlRWxtLmlubmVySFRNTCA9IGA8c3ZnIGNsYXNzPVwiJHtjb3JuZXJUeXBlTGlzdFtpXS5pY29ufVwiPjx1c2UgeGxpbms6aHJlZj1cIiMke2Nvcm5lclR5cGVMaXN0W2ldLmljb259XCI+PC91c2U+PC9zdmc+YFxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICAvLyDmnZDotKjkuIvmi4lcclxuICAgICAgbGV0IG1hdGVyaWFsTGlzdCA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGljb24td2FsbFwiPjwvaT7nuq/oibLlopknLFxyXG4gICAgICAgICAgdmFsdWU6ICfnuq/oibLlopknLFxyXG4gICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24td2FsbCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gaWNvbi13YWxsLWJyaWNrMVwiPjwvaT7nuqLnoJblopknLFxyXG4gICAgICAgICAgdmFsdWU6ICfnuqLnoJblopknLFxyXG4gICAgICAgICAga2V5OiAxLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24td2FsbC1icmljazEnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGljb24td2FsbC1icmljazJcIj48L2k+6buE56CW5aKZJyxcclxuICAgICAgICAgIHZhbHVlOiAn6buE56CW5aKZJyxcclxuICAgICAgICAgIGtleTogMixcclxuICAgICAgICAgIGljb246ICdpY29uLXdhbGwtYnJpY2syJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBpY29uLXdhbGwtYnJpY2szXCI+PC9pPueBsOeTt+WimScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+eBsOeTt+WimScsXHJcbiAgICAgICAgICBrZXk6IDMsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi13YWxsLWJyaWNrMydcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuXHJcbiAgICAgIGxldCBsZWdwTWF0ZXJpYWwgPSBsZWdwKGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWF0ZXJpYWwtYm94JylbMF0sIFwiLm1hdGVyaWFsXCIpXHJcbiAgICAgIGxlZ3BNYXRlcmlhbC5sZWdwX3NlYXJjaChtYXRlcmlhbExpc3QpXHJcbiAgICAgIGxldCBpQWN0aXZlRWxtMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKVxyXG4gICAgICBpQWN0aXZlRWxtMi5jbGFzc05hbWUgPSBcImljb24gaWNvbi1hY3RpdmVcIlxyXG4gICAgICBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hdGVyaWFsJylbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY3lfZGF0YWxpc3QnKVswXS5hcHBlbmRDaGlsZChpQWN0aXZlRWxtMilcclxuICAgICAgbGV0IGxlZ3BNYXRlcmlhbElucHV0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtYXRlcmlhbCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0ZXJpYWxMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKG1hdGVyaWFsTGlzdFtpXS5rZXkgPT09IHRoaXMubWF0ZXJpYWwpIHtcclxuICAgICAgICAgIGxlZ3BNYXRlcmlhbC5sZWdwX3NlYXJjaEFjdGl2ZShtYXRlcmlhbExpc3RbaV0udmFsdWUpXHJcbiAgICAgICAgICBsZWdwTWF0ZXJpYWxJbnB1dC52YWx1ZSA9IG1hdGVyaWFsTGlzdFtpXS52YWx1ZVxyXG4gICAgICAgICAgaUFjdGl2ZUVsbTIuY2xhc3NOYW1lID0gYGljb24gaWNvbi1hY3RpdmUgJHttYXRlcmlhbExpc3RbaV0uaWNvbn1gXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZWdwTWF0ZXJpYWxJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlLCBjKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRlcmlhbExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChtYXRlcmlhbExpc3RbaV0udmFsdWUgPT09IGxlZ3BNYXRlcmlhbElucHV0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbExpc3RbaV0ua2V5XHJcbiAgICAgICAgICAgIGlBY3RpdmVFbG0yLmNsYXNzTmFtZSA9IGBpY29uIGljb24tYWN0aXZlICR7bWF0ZXJpYWxMaXN0W2ldLmljb259YFxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIOWIm+W7uuagh+etvumhtVxyXG4gICAgICBsZXQgdGFic0VsbSA9IG5ldyBjeV90YWJzKCdyYWRhci1zY2FuLWVkaXQtdGFicycsIHVuZGVmaW5lZCwgdGhpcy5zZGspXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiBmYWxzZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSBFdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsaW5lQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IFtsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gW2xhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuXHJcbiAgICAgICAgbGV0IHRhZ0RhdGEgPSB0aGlzLmF0dHJpYnV0ZVNlbGVjdFxyXG4gICAgICAgIGxldCBsZWdwT2JqZWN0ID0gbGVncCh0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0LWJveCcpWzBdLCBcIi5hdHRyaWJ1dGUtc2VsZWN0XCIpXHJcbiAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaCh0YWdEYXRhKVxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF1cclxuICAgICAgICBpZiAoIWF0dHJpYnV0ZUVsbSkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RFbG0gPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtc2VsZWN0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0YWdEYXRhW2ldLmtleSA9PT0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZVR5cGUpIHtcclxuICAgICAgICAgICAgYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlID0gdGFnRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBsZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHRhZ0RhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGFnRGF0YVtpXS52YWx1ZSA9PT0gYXR0cmlidXRlU2VsZWN0RWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gdGFnRGF0YVtpXS5rZXlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGV0IGZvbnREYXRhID0gZ2V0Rm9udExpc3QoKVxyXG4gICAgICAgIGxldCBmb250T2JqZWN0ID0gbGVncChcclxuICAgICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAgICdmb250LXNlbGVjdC1ib3gnXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgJy5mb250LXNlbGVjdCdcclxuICAgICAgICApXHJcblxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5uYW1lXHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29sb3JcclxuICAgIHRoaXMud2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy53aWR0aFxyXG4gICAgdGhpcy5jb3JuZXJUeXBlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuY29ybmVyVHlwZVxyXG4gICAgdGhpcy5leHRydWRlZEhlaWdodCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgLy8gdGhpcy5lbnRpdHkucG9seWxpbmVWb2x1bWUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5sYWJlbC5yZW1vdmUoKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVudGl0eS52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eS52YWx1ZXNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgIXRoaXMuX0RpYWxvZ09iamVjdC5pc0Rlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIGF3YWl0IHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0TWF0ZXJpYWwoaWQpIHtcclxuICAgIGxldCBtYXRlcmlhbFxyXG4gICAgbGV0IGltZ1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubWF0ZXJpYWwpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIG1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgICAgaWYgKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tQ29sb3JNYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3JcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbU1hdGVyaWFsU291cmNlKHtcclxuICAgICAgICAvLyAgIGltYWdlOiAnLi9pbWFnZS9hcnJvdy5wbmcnLFxyXG4gICAgICAgIC8vICAgcmVwZWF0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMTAsIDEuMCksXHJcbiAgICAgICAgLy8gICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgIC8vICAgZHVyYXRpb246IHRoaXMub3B0aW9ucy5kdXJhdGlvblxyXG4gICAgICAgIC8vIH0pXHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLm1hdGVyaWFsKSB7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIGltZyA9ICdicmljazEnXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGltZyA9ICdicmljazInXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgIGltZyA9ICdicmljazMnXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIGltZyA9ICdicmljazQnXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGAvaW1nL21hdGVyaWFsLyR7aW1nfS5qcGdgLFxyXG4gICAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvcixcclxuICAgICAgICAgIGlzMkQ6IGZhbHNlLFxyXG4gICAgICAgICAgcmVwZWF0czogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlcGVhdCA9IFtbJzEuMCcsIDEuMCwgMS4wXV1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXBlYXRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5lbnRpdHkuZ2V0QnlJZChpZClcclxuICAgICAgICAgICAgaWYgKCFlbnRpdHkgfHwgIWVudGl0eS5wb2x5bGluZVZvbHVtZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXBlYXRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25Qcm9wZXJ0eSA9IGVudGl0eS5wb2x5bGluZVZvbHVtZS5wb3NpdGlvbnM7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBwb3NpdGlvblByb3BlcnR5LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmICghQ2VzaXVtLmRlZmluZWQocG9zaXRpb25zKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXBlYXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCB0b3RhbERpc3RhbmNlID0gMDtcclxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlcyA9IFtdXHJcbiAgICAgICAgICAgIHJlcGVhdCA9IFtdXHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLSAxOyArK2kpIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3NpdGlvbnNbaV0sIHBvc2l0aW9uc1tpICsgMV0pXHJcbiAgICAgICAgICAgICAgZGlzdGFuY2VzLnB1c2goZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdG90YWxEaXN0YW5jZSArPSBkaXN0YW5jZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGltZ1Byb3BvcnRpb24gPSA0NSAvIDQ1IC8vIOWbvueJh+mVv+WuveavlOS+i1xyXG4gICAgICAgICAgICBsZXQgdG90YWxSZXBlYXRYID0gdG90YWxEaXN0YW5jZSAvIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodDtcclxuICAgICAgICAgICAgdG90YWxSZXBlYXRYID0gdG90YWxSZXBlYXRYIC8gaW1nUHJvcG9ydGlvblxyXG5cclxuICAgICAgICAgICAgbGV0IHRvdGFsUmF0aW8gPSAwXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJhdGlvID0gKGRpc3RhbmNlc1tpXSAvIHRvdGFsRGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdG90YWxSYXRpbyArPSByYXRpb1xyXG4gICAgICAgICAgICAgIGxldCByZXBlYXRYID0gcmF0aW8gKiB0b3RhbFJlcGVhdFhcclxuICAgICAgICAgICAgICBsZXQgcmVwZWF0WSA9IDEuMFxyXG4gICAgICAgICAgICAgIHJlcGVhdC5wdXNoKFsoKGkgKyAxKSAvIGRpc3RhbmNlcy5sZW5ndGgpLnRvRml4ZWQoMzApLCByZXBlYXRYLCByZXBlYXRZXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVwZWF0XHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICBpc1RyYW5zbHVjZW50OiBmYWxzZSxcclxuICAgICAgICAgIGR1cmF0aW9uOiAwLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWF0ZXJpYWxcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvjOaWh+acrOahhlxyXG4gICAqL1xyXG4gIG9wZW5SaWNoVGV4dEVkaXRvcihlKSB7XHJcbiAgICByaWNoVGV4dC5vcGVuKHRoaXMub3B0aW9ucy5pZCwgdGhpcy5vcHRpb25zLm5hbWUsIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQpXHJcbiAgICByaWNoVGV4dC5wcmltYXJ5Q2FsbEJhY2sgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gY29udGVudFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbm9kZUVkaXQoY2IgPSAoKSA9PiB7IH0pIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCfor7fpgInmi6nkuIDkuKrpobbngrnvvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICBsZXQgc2VsZWN0UG9pbnRcclxuICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb25cclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkyID0gW11cclxuICAgICAgbGV0IGFycmF5ID0gW11cclxuICAgICAgbGV0IHdhbGxQb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgdG9wUG9zaXRpb25zID0gW11cclxuXHJcbiAgICAgIGxldCBpc0FkZCA9IGZhbHNlXHJcbiAgICAgIGxldCBmaXJzdE1vdmUgPSB0cnVlXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGZpcnN0TW92ZSA9IHRydWVcclxuICAgICAgICBpZiAoc2VsZWN0UG9pbnQpIHtcclxuICAgICAgICAgIGlzQWRkID0gdHJ1ZVxyXG4gICAgICAgICAgbGV0IHBvczMgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChjYXJ0ZXNpYW4sIFsuLi50aGF0LmVudGl0eS52YWx1ZXNdKVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxhdCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0KSxcclxuICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHNlbGVjdFBvaW50LmluZGV4LCAwLCBlbnRpdHkpXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0pXHJcblxyXG4gICAgICAgICAgdXBkYXRlKHRydWUpXHJcbiAgICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW3RoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHQgKyB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRdXHJcbiAgICAgICAgICB0aGF0LnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi54LFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICB0aGF0Lm1hdGVyaWFsID0gdGhhdC5tYXRlcmlhbFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHZhciBwaWNrID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCAmJiBwaWNrLmlkLm5hbWUgJiYgcGljay5pZC5uYW1lID09PSAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcpIHtcclxuICAgICAgICAgICAgc2VsZWN0UG9pbnQgPSBwaWNrLmlkXHJcbiAgICAgICAgICAgIHRoYXQubm9kZVBvaW50cy5zcGxpY2UocGljay5pZC5pbmRleCwgMSlcclxuICAgICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZShwaWNrLmlkKVxyXG4gICAgICAgICAgICB0aGF0LnRpcC5zZXRfdGV4dCgn5bem6ZSu5byA5aeL77yM5Y+z6ZSu57uT5p2f77yMQ1RSTCvlj7PplK7mkqTplIAnKVxyXG4gICAgICAgICAgICBvcmlnaW5hbFBvc2l0aW9uID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChzZWxlY3RQb2ludC5wb3NpdGlvbi5fdmFsdWUsIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgLy8gdGhhdC5lbnRpdHkucG9seWxpbmVWb2x1bWUucG9zaXRpb25zID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8gICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICAgICAgLy8gfSwgZmFsc2UpXHJcbiAgICAgICAgICAgIHVwZGF0ZSh0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcmlnaHRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhhdC5jbG9zZU5vZGVFZGl0ID0gKCk9Pnt9XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IG9yaWdpbmFsUG9zaXRpb25cclxuICAgICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVwZGF0ZSgpXHJcbiAgICAgICAgICBjYihudWxsLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGF0LmVudGl0eS5wb2x5bGluZVZvbHVtZS5wb3NpdGlvbnMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyhmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgIHRoYXQubGFiZWwucG9zaXRpb24gPSBbdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdCArIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodF1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC5ub2RlUG9pbnRzW2ldKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0Lm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgICAgICB0aGF0LmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgIHRoYXQudGlwLmRlc3Ryb3koKVxyXG4gICAgICAgIHRoYXQubWF0ZXJpYWwgPSB0aGF0Lm1hdGVyaWFsXHJcbiAgICAgIH1cclxuICAgICAgdGhhdC5jbG9zZU5vZGVFZGl0ID0gcmlnaHRFdmVudFxyXG5cclxuICAgICAgZnVuY3Rpb24gdXBkYXRlKGlzQ2FsbGJhY2sgPSBmYWxzZSkge1xyXG4gICAgICAgIGlmICh0aGF0LmVudGl0eSkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuY2FsY3VsYXRlUG9zaXRpb25zKClcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5lbnRpdHkudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhhdC5lbnRpdHkudmFsdWVzW2ldKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5lbnRpdHkucmVtb3ZlQWxsKClcclxuXHJcbiAgICAgICAgICB3YWxsUG9zaXRpb25zID0gW11cclxuICAgICAgICAgIHRvcFBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcG9zaXRpb25zW2ldLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXVtuXVswXSwgcG9zaXRpb25zW2ldW25dWzFdLCBwb3NpdGlvbnNbaV1bbl1bMl0pXHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChwb3NpdGlvbnNbaV1bbl1bMF0sIHBvc2l0aW9uc1tpXVtuXVsxXSwgcG9zaXRpb25zW2ldW25dWzJdICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdhbGxQb3NpdGlvbnMucHVzaChmcm9tRGVncmVlc0FycmF5KVxyXG4gICAgICAgICAgICB0b3BQb3NpdGlvbnMucHVzaChmcm9tRGVncmVlc0FycmF5MilcclxuICAgICAgICAgICAgbGV0IHdhbGwgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICBpZDogdGhhdC5vcHRpb25zLmlkICsgJy0nICsgV2FsbFJlYWxTdGVyZW9zY29waWMucmFuZG9tU3RyaW5nKDEyKSxcclxuICAgICAgICAgICAgICBwb2x5bGluZVZvbHVtZToge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiBpc0NhbGxiYWNrID8gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKHdhbGxQb3NpdGlvbnNbaV0pXHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSkgOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyh3YWxsUG9zaXRpb25zW2ldKSxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiBbXHJcbiAgICAgICAgICAgICAgICAgIHsgeDogLTAuMDAwMDAwMSwgeTogLXRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodCAvIDIgfSxcclxuICAgICAgICAgICAgICAgICAgeyB4OiAwLjAwMDAwMDEsIHk6IC10aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgICAgICAgICAgICAgIHsgeDogMC4wMDAwMDAxLCB5OiB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgICAgICAgICAgICAgIHsgeDogLTAuMDAwMDAwMSwgeTogdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGNvcm5lclR5cGU6IENlc2l1bS5Db3JuZXJUeXBlLk1JVEVSRURcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBsZXQgdG9wID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgICAgaWQ6IHRoYXQub3B0aW9ucy5pZCArICctJyArIFdhbGxSZWFsU3RlcmVvc2NvcGljLnJhbmRvbVN0cmluZygxMiksXHJcbiAgICAgICAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgICAgICAgaGllcmFyY2h5OiBpc0NhbGxiYWNrID8gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5SGVpZ2h0cyh0b3BQb3NpdGlvbnNbaV0pKVxyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpIDogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKHRvcFBvc2l0aW9uc1tpXSkpLFxyXG4gICAgICAgICAgICAgICAgcGVyUG9zaXRpb25IZWlnaHQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhhdC5lbnRpdHkuYWRkKHdhbGwpXHJcbiAgICAgICAgICAgIHRoYXQuZW50aXR5LmFkZCh0b3ApXHJcbiAgICAgICAgICAgIHdhbGwucG9seWxpbmVWb2x1bWUubWF0ZXJpYWwgPSB0aGF0LmdldE1hdGVyaWFsKHdhbGwuaWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG5cclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9yaWdodChyaWdodEV2ZW50KVxyXG5cclxuXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgbGV0IHBvczMgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChjYXJ0ZXNpYW4sIFsuLi50aGF0LmVudGl0eS52YWx1ZXNdKVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0LmNhbGN1bGF0ZVBvc2l0aW9ucygpXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcG9zaXRpb25zW2ldLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXVtuXVswXSwgcG9zaXRpb25zW2ldW25dWzFdLCBwb3NpdGlvbnNbaV1bbl1bMl0pXHJcbiAgICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChwb3NpdGlvbnNbaV1bbl1bMF0sIHBvc2l0aW9uc1tpXVtuXVsxXSwgcG9zaXRpb25zW2ldW25dWzJdICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdhbGxQb3NpdGlvbnNbaV0gPSBmcm9tRGVncmVlc0FycmF5XHJcbiAgICAgICAgICAgIHRvcFBvc2l0aW9uc1tpXSA9IGZyb21EZWdyZWVzQXJyYXkyXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0ICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XVxyXG4gICAgICAgICAgLy8gaWYgKGZpcnN0TW92ZSkge1xyXG4gICAgICAgICAgLy8gICBmaXJzdE1vdmUgPSBmYWxzZVxyXG4gICAgICAgICAgLy8gICB0aGF0Lm1hdGVyaWFsID0gdGhhdC5tYXRlcmlhbFxyXG4gICAgICAgICAgLy8gICByZXR1cm5cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgZmlyc3RNb3ZlID0gdHJ1ZVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdXBkYXRlKHRydWUpXHJcbiAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQubm9kZVBvaW50c1t0aGF0Lm5vZGVQb2ludHMubGVuZ3RoIC0gMV0pXHJcbiAgICAgICAgICBpZiAoc2VsZWN0UG9pbnQuaW5kZXggPT09IHRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm5vZGVQb2ludHNbc2VsZWN0UG9pbnQuaW5kZXggLSAxXSkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gdGhhdC5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludC5pbmRleCA9IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnBvcCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhhdC5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICByaWdodEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgbmFtZTogJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnLFxyXG4gICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCksXHJcbiAgICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgICAgICAgaGVpZ2h0OiAxNSxcclxuICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhhdC5ub2RlUG9pbnRzLnB1c2goZW50aXR5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU5vZGVFZGl0KCkge31cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9ucygpXHJcbiAgICAgIGxldCB3YWxsUG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IHRvcFBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRpdHkudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmVudGl0eS52YWx1ZXNbaV0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbnRpdHkucmVtb3ZlQWxsKClcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5MiA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBwb3NpdGlvbnNbaV0ubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV1bbl1bMF0sIHBvc2l0aW9uc1tpXVtuXVsxXSwgcG9zaXRpb25zW2ldW25dWzJdKVxyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheTIucHVzaChwb3NpdGlvbnNbaV1bbl1bMF0sIHBvc2l0aW9uc1tpXVtuXVsxXSwgcG9zaXRpb25zW2ldW25dWzJdICsgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG4gICAgICAgIH1cclxuICAgICAgICB3YWxsUG9zaXRpb25zLnB1c2goZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICB0b3BQb3NpdGlvbnMucHVzaChmcm9tRGVncmVlc0FycmF5MilcclxuICAgICAgICBsZXQgd2FsbCA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZCArICctJyArIFdhbGxSZWFsU3RlcmVvc2NvcGljLnJhbmRvbVN0cmluZygxMiksXHJcbiAgICAgICAgICBwb2x5bGluZVZvbHVtZToge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKHdhbGxQb3NpdGlvbnNbaV0pLFxyXG4gICAgICAgICAgICBzaGFwZTogW1xyXG4gICAgICAgICAgICAgIHsgeDogLTAuMDAwMDAwMSwgeTogLXRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCAvIDIgfSxcclxuICAgICAgICAgICAgICB7IHg6IDAuMDAwMDAwMSwgeTogLXRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCAvIDIgfSxcclxuICAgICAgICAgICAgICB7IHg6IDAuMDAwMDAwMSwgeTogdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgICAgIHsgeDogLTAuMDAwMDAwMSwgeTogdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBjb3JuZXJUeXBlOiBDZXNpdW0uQ29ybmVyVHlwZS5NSVRFUkVEXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMub3B0aW9ucy5pZCArICctJyArIFdhbGxSZWFsU3RlcmVvc2NvcGljLnJhbmRvbVN0cmluZygxMiksXHJcbiAgICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKHRvcFBvc2l0aW9uc1tpXSkpLFxyXG4gICAgICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSxcclxuICAgICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmFkZCh3YWxsKVxyXG4gICAgICAgIHRoaXMuZW50aXR5LmFkZCh0b3ApXHJcbiAgICAgICAgd2FsbC5wb2x5bGluZVZvbHVtZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwod2FsbC5pZClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RElWKG9wdGlvbnMgPSB7IGRvbWlkOiBcIlwiLCB4OiAxMCwgeTogMTAgfSkge1xyXG4gICAgb3B0aW9ucy54ID0gKG9wdGlvbnMueCB8fCBvcHRpb25zLnggPT09IDApID8gb3B0aW9ucy54IDogMTBcclxuICAgIG9wdGlvbnMueSA9IChvcHRpb25zLnkgfHwgb3B0aW9ucy55ID09PSAwKSA/IG9wdGlvbnMueSA6IDEwXHJcbiAgICBsZXQgcG9pbnRzID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBwb2ludHMucHVzaChbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XSlcclxuICAgIH1cclxuICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKHBvaW50cylcclxuICAgIGxldCBsZW5ndGggPSB0dXJmLmxlbmd0aChsaW5lLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSlcclxuICAgIGxldCBzbGljZWQgPSB0dXJmLmxpbmVTbGljZUFsb25nKGxpbmUsIDAsIGxlbmd0aCAvIDIsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgIGxldCBzaXRlSW5mb0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuZG9taWQpXHJcbiAgICBsZXQgc2l0ZUluZm9Qb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLnNsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlc1tzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV0sIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0ICsgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0KVxyXG5cclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgLy/ovazmjaLliLDlsY/luZXlnZDmoIdcclxuICAgICAgaWYgKHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycgfHwgc2l0ZUluZm9Eb20uc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICBsZXQgd2lucG9zID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLmNhcnRlc2lhblRvQ2FudmFzQ29vcmRpbmF0ZXMoc2l0ZUluZm9Qb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKHdpbnBvcykge1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUubGVmdCA9ICh3aW5wb3MueCArIG9wdGlvbnMueCkudG9GaXhlZCgwKSArICdweCc7XHJcbiAgICAgICAgICBzaXRlSW5mb0RvbS5zdHlsZS50b3AgPSAod2lucG9zLnkgKyBvcHRpb25zLnkpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmFuZG9tU3RyaW5nKGUpIHtcclxuICAgIGUgPSBlIHx8IDMyXHJcbiAgICB2YXIgdCA9ICdBQkNERUZHSEpLTU5QUVJTVFdYWVphYmNkZWZoaWprbW5wcnN0d3h5ejIzNDU2NzgnLFxyXG4gICAgICBhID0gdC5sZW5ndGgsXHJcbiAgICAgIG4gPSAnJ1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlOyBpKyspIG4gKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYSkpXHJcbiAgICByZXR1cm4gblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgV2FsbFJlYWxTdGVyZW9zY29waWNcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQStEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWhUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1UQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBc0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJDQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQXRJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFxREE7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQS9oREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTR0QkE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW96QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallRealStereoscopic/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallStereoscopic/_element.js": -/*!***************************************************!*\ - !*** ./src/Obj/Base/WallStereoscopic/_element.js ***! - \***************************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony import */ var _Element_elm_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Element/elm_html */ \"./src/Obj/Element/elm_html.js\");\n\nfunction html(that) {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n \\u989C\\u8272\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u62C9\\u4F38\\u9AD8\\u5EA6\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n \\u6750\\u8D28\\u6837\\u5F0F\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u5899\\u4F53\\u95ED\\u5408\\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \\n \".concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"attributeElm\"])(that), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm1\"])(), \"\\n \\n \\n \").concat(Object(_Element_elm_html__WEBPACK_IMPORTED_MODULE_0__[\"labelStyleElm2\"])(), \"\\n \\n \\n
    \\n
    \\n \\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFN0ZXJlb3Njb3BpYy9fZWxlbWVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9XYWxsU3RlcmVvc2NvcGljL19lbGVtZW50LmpzPzExYzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlRWxtLCBsYWJlbFN0eWxlRWxtMSwgbGFiZWxTdHlsZUVsbTIgfSBmcm9tICcuLi8uLi9FbGVtZW50L2VsbV9odG1sJ1xyXG5cclxuZnVuY3Rpb24gaHRtbCh0aGF0KSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mi4nkvLjpq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTk5OTlcIiBAbW9kZWw9XCJleHRydWRlZEhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBtYXRlcmlhbC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mnZDotKjmoLflvI88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0ZXJpYWxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5aKZ5L2T6Zet5ZCIPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiIEBtb2RlbD1cIm5vc2VUb1RhaWxcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPERJVi1jeS10YWJzIGlkPVwicmFkYXItc2Nhbi1lZGl0LXRhYnNcIj5cclxuICAgICAgICAgICAgICAgIDxESVYtY3ktdGFiLXBhbmUgbGFiZWw9XCLlsZ7mgKfkv6Hmga9cIj5cclxuICAgICAgICAgICAgICAgICAgICAke2F0dHJpYnV0ZUVsbSh0aGF0KX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+azqOmjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTEoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICAgICAgPERJVi1jeS10YWItcGFuZSBsYWJlbD1cIuagh+etvumjjuagvFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICR7bGFiZWxTdHlsZUVsbTIoKX1cclxuICAgICAgICAgICAgICAgIDwvRElWLWN5LXRhYi1wYW5lPlxyXG4gICAgICAgICAgICA8L0RJVi1jeS10YWJzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBd0RBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallStereoscopic/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallStereoscopic/eventBinding.js": -/*!*******************************************************!*\ - !*** ./src/Obj/Base/WallStereoscopic/eventBinding.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar eventBinding = /*#__PURE__*/function () {\n function eventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, eventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(eventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return eventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return eventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n eventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n var _loop = function _loop() {\n var Event = [];\n var isEvent = false;\n var removeName = [];\n var blurEvent = function blurEvent() {};\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop2 = function _loop2() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number') {\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n var v = Number(value);\n if (e.target.max && v > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && v < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n that[m.value] = value;\n }\n } else {\n that[m.value] = value;\n }\n });\n blurEvent = function blurEvent(e) {\n var value = e.target.value;\n if (e.target.type == 'number' && (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n };\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n elements[i].addEventListener('click', function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n // elements[i].attributes.removeNamedItem(m.name)\n break;\n }\n case '@change':\n {\n isEvent = true;\n Event.push(function (e) {\n var value = e.target.value;\n if (e.target.type == 'number' && value != '') {\n value = Number(value);\n e.target.value = value;\n }\n if (typeof that[m.value] === 'function') {\n that[m.value](e, value);\n }\n });\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var ventType = 'input';\n if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {\n ventType = 'change';\n }\n elements[i].addEventListener(ventType, function (e) {\n for (var t = 0; t < Event.length; t++) {\n Event[t](e);\n }\n });\n elements[i].addEventListener('blur', function (e) {\n blurEvent(e);\n });\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(eventBinding, \"event\", {});\nvar EventBinding = new eventBinding();\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFN0ZXJlb3Njb3BpYy9ldmVudEJpbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvV2FsbFN0ZXJlb3Njb3BpYy9ldmVudEJpbmRpbmcuanM/Y2VlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBldmVudEJpbmRpbmcge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5lbGVtZW50ID0ge31cclxuICB9XHJcbiAgc3RhdGljIGV2ZW50ID0ge31cclxuXHJcbiAgZ2V0RXZlbnQobmFtZSkge1xyXG4gICAgcmV0dXJuIGV2ZW50QmluZGluZy5ldmVudFtuYW1lXVxyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRBbGwoKSB7XHJcbiAgICByZXR1cm4gZXZlbnRCaW5kaW5nLmV2ZW50XHJcbiAgfVxyXG5cclxuICBzZXRFdmVudChuYW1lLCBldmVudCkge1xyXG4gICAgZXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdID0gZXZlbnRcclxuICB9XHJcblxyXG4gIG9uKHRoYXQsIGVsZW1lbnRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBFdmVudCA9IFtdXHJcbiAgICAgIGxldCBpc0V2ZW50ID0gZmFsc2VcclxuICAgICAgbGV0IHJlbW92ZU5hbWUgPSBbXVxyXG4gICAgICBsZXQgYmx1ckV2ZW50ID0gKCkgPT4geyB9XHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBtIG9mIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBzd2l0Y2ggKG0ubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSAnQG1vZGVsJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB2ID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2ID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHYgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgYmx1ckV2ZW50ID0gKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicpICYmIChlLnRhcmdldC52YWx1ZSB8fCAoZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAndW5kZWZpbmVkJyAmJiBlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICcnICYmICFCb29sZWFuKGUudGFyZ2V0LmRhdGFzZXQubnVsbCkpKSkge1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKChlLnRhcmdldC5kYXRhc2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5ub2RlTmFtZSA9PSAnSU1HJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uc3JjID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50W20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZW1vdmVOYW1lLnB1c2gobS5uYW1lKVxyXG4gICAgICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNoYW5nZSc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgRXZlbnQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnR5cGUgPT0gJ251bWJlcicgJiYgdmFsdWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlLCB2YWx1ZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCByZW1vdmVOYW1lLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBsZXQgdmVudFR5cGUgPSAnaW5wdXQnXHJcbiAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnRhZ05hbWUgIT0gJ0lOUFVUJyB8fCBlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHZlbnRUeXBlID0gJ2NoYW5nZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcih2ZW50VHlwZSwgKGUpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgRXZlbnQubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgRXZlbnRbdF0oZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICAgIGJsdXJFdmVudChlKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBFdmVudEJpbmRpbmcgPSBuZXcgZXZlbnRCaW5kaW5nKCk7XHJcbmV4cG9ydCBkZWZhdWx0IEV2ZW50QmluZGluZzsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF2RkE7QUFBQTtBQUFBO0FBdUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsSEE7QUFBQTtBQU1BO0FBNkdBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallStereoscopic/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WallStereoscopic/index.js": -/*!************************************************!*\ - !*** ./src/Obj/Base/WallStereoscopic/index.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Element/cy_html_tabs */ \"./src/Obj/Element/cy_html_tabs.js\");\n/* harmony import */ var _Element_richText__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/richText */ \"./src/Obj/Element/richText.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/WallStereoscopic/_element.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _LabelObject__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../LabelObject */ \"./src/Obj/Base/LabelObject/index.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./eventBinding */ \"./src/Obj/Base/WallStereoscopic/eventBinding.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Element_datalist__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../Element/fontSelect */ \"./src/Obj/Element/fontSelect.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WallStereoscopic = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 电子围墙\r\n * @param options {object} 墙属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.name {string} 名称\r\n * @param options.color=\"#00d9ff\" {string} 颜色\r\n * @param options.show=true {boolean} 显隐\r\n * @param options.extrudedHeight=2.4 {number} 拉伸高度\r\n * @param options.noseToTail=false {boolean} 首尾相连\r\n * @param options.material=0 {number} 材质,0:纯色墙;1:上升墙;2:箭头墙;3:警戒墙\r\n * @param options.duration=1000 {number} 持续时间\r\n * @param {Array.} options.positions 必填,经纬度和高度的列表,值交替 [{lon,lat,alt},...]\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.label {object} 标签对象\r\n * @param options.label.text {string} 标签文本\r\n * @param options.label.show {string} 标签显隐\r\n * @param options.label.position {string} 标签位置\r\n * @param options.label.position {object} 标签位置\r\n * @param options.label.position.lng {number} 经度\r\n * @param options.label.position.lat {number} 纬度\r\n * @param options.label.position.alt {number} 高度\r\n * @param options.label.fontSize=20 {number} 字体大小\r\n * @param options.label.fontFamily=0 {number} 字体项 0:黑体;1:思源黑体;2:庞门正道标题体;3:数黑体\r\n * @param options.label.color=#ffffff {string} 字体颜色\r\n * @param options.label.lineWidth=4 {number} 引线宽\r\n * @param options.label.lineColor=#00ffff80 {string} 引线颜色\r\n * @param options.label.pixelOffset=20 {number} 字体偏移(引线长度)\r\n * @param options.label.backgroundColor=['#00ffff80', '#00ffff80'] {array} 背景颜色\r\n * @param options.label.scaleByDistance {boolean} 距离缩放\r\n * @param options.label.near=2000 {number} 视野缩放最近距离\r\n * @param options.label.far=100000 {number} 视野缩放最远距离\r\n * @param options.attribute {object} 属性内容\r\n * @param {object} options.attribute.link={} 链接\r\n * @param options.attribute.link.content=[]] {array} 链接内容\r\n * @param options.attribute.link.content[].name {string} 链接名称\r\n * @param options.attribute.link.content[].url {string} 链接地址\r\n * @param options.richTextContent {string} 富文本内容\r\n * @param options.customView {object} 默认视角\r\n * @param options.customView.orientation {object} 默认视角方位\r\n * @param options.customView.orientation.heading {number} 航向角\r\n * @param options.customView.orientation.pitch {number} 俯仰角\r\n * @param options.customView.orientation.roll {number} 翻滚角\r\n * @param options.customView.relativePosition {object} 视角相对位置\r\n * @param options.customView.relativePosition.lng {number} 经度\r\n * @param options.customView.relativePosition.lat {number} 纬度\r\n * @param options.customView.relativePosition.alt {number} 高度\r\n * */\n function WallStereoscopic(sdk, options) {\n var _this2;\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WallStereoscopic);\n _this2 = _callSuper(this, WallStereoscopic, [sdk, options]);\n _this2.options.color = options.color || \"#ff0000\";\n _this2.options.extrudedHeight = options.extrudedHeight || 2.4;\n _this2.options.positions = options.positions;\n _this2.options.material = Number(options.material) || Number(options.material) === 0 ? Number(options.material) : 3;\n _this2.options.duration = options.duration || options.duration === 0 ? options.duration : 1000;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.options.noseToTail = options.noseToTail || false;\n _this2.entity;\n _this2.nodePoints = [];\n options.label = options.label || {};\n _this2.options.label = {\n show: options.label.show || false,\n fontSize: options.label.fontSize || options.label.fontSize === 0 ? options.label.fontSize : 20,\n fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,\n color: options.label.color || '#ffffff',\n lineWidth: options.label.lineWidth || options.label.lineWidth === 0 ? options.label.lineWidth : 4,\n pixelOffset: options.label.pixelOffset || options.label.pixelOffset === 0 ? options.label.pixelOffset : 20,\n backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],\n lineColor: options.label.lineColor || '#00ffff80',\n scaleByDistance: options.label.scaleByDistance || false,\n near: options.label.near || options.label.near === 0 ? options.label.near : 2000,\n far: options.label.far || options.label.far === 0 ? options.label.far : 100000\n };\n _this2.options.instruct = options.instruct || \"\";\n _this2.options.operatingPoint = options.operatingPoint || \"\";\n _this2.options.attribute = options.attribute || {};\n _this2.options.attribute.link = _this2.options.attribute.link || {};\n _this2.options.attribute.link.content = _this2.options.attribute.link.content || [];\n delete _this2.options.attribute.camera;\n delete _this2.options.attribute.vr;\n delete _this2.options.attribute.goods;\n _this2.options.richTextContent = options.richTextContent || '';\n _this2.Dialog = _Dialog;\n _this2._elms = {};\n if (!_this2.options.positions || _this2.options.positions.length < 2) {\n _this2._error = '最少需要两个坐标!';\n console.warn(_this2._error);\n window.ELEMENT && window.ELEMENT.Message({\n message: _this2._error,\n type: 'warning',\n duration: 1500\n });\n } else {\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n WallStereoscopic.create(_this2);\n }\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(WallStereoscopic, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WallStereoscopic, [{\n key: \"type\",\n get: function get() {\n return 'wallStereoscopic';\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v || '#ff0000';\n this.entity.polylineVolume.material = this.getMaterial();\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var colorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this3.options.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = colorPicker;\n });\n }\n }\n }, {\n key: \"material\",\n get: function get() {\n return this.options.material;\n },\n set: function set(v) {\n var _this4 = this;\n this.options.material = Number(v) || Number(v) === 0 ? Number(v) : 3;\n this.entity.polylineVolume.material = this.getMaterial();\n this._elms.material && this._elms.material.forEach(function (item) {\n item.value = _this4.options.material;\n });\n }\n }, {\n key: \"noseToTail\",\n get: function get() {\n return this.options.noseToTail;\n },\n set: function set(v) {\n this.options.noseToTail = v;\n var positions = this.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n if (v) {\n fromDegreesArray.push(positions[0].lng, positions[0].lat, positions[0].alt);\n }\n this.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.material = this.material;\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"extrudedHeight\",\n get: function get() {\n return this.options.extrudedHeight;\n },\n set: function set(v) {\n this.options.extrudedHeight = v;\n this.label.position = [this.options.positions[0].lng, this.options.positions[0].lat, this.options.positions[0].alt + this.options.extrudedHeight];\n this.entity.polylineVolume.shape = [{\n x: -0.0000001,\n y: -this.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: -this.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: this.options.extrudedHeight / 2\n }, {\n x: -0.0000001,\n y: this.options.extrudedHeight / 2\n }];\n this._elms.extrudedHeight && this._elms.extrudedHeight.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelShow\",\n get: function get() {\n return this.options.label.show;\n },\n set: function set(v) {\n this.options.label.show = v;\n if (this.show && !this.showView || this.showView == 3) {\n this.label.show = v;\n } else {\n this.label.show = false;\n }\n this._elms.labelShow && this._elms.labelShow.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelFontFamily\",\n get: function get() {\n return this.options.label.fontFamily;\n },\n set: function set(v) {\n this.options.label.fontFamily = v || 0;\n this.label && (this.label.fontFamily = this.options.label.fontFamily);\n var name = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontFamilyName\"])(this.labelFontFamily) || '';\n this._elms.labelFontFamily && this._elms.labelFontFamily.forEach(function (item) {\n item.value = name;\n });\n }\n }, {\n key: \"labelColor\",\n get: function get() {\n return this.options.label.color;\n },\n set: function set(v) {\n var _this5 = this;\n this.options.label.color = v;\n this.label.color = v;\n if (this._elms.labelColor) {\n this._elms.labelColor.forEach(function (item, i) {\n var labelColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this5.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this5.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this5.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this5._elms.labelColor[i] = labelColorPicker;\n });\n }\n }\n }, {\n key: \"labelFontSize\",\n get: function get() {\n return this.options.label.fontSize;\n },\n set: function set(v) {\n this.options.label.fontSize = v;\n this.label.fontSize = v;\n this._elms.labelFontSize && this._elms.labelFontSize.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelScaleByDistance\",\n get: function get() {\n return this.options.label.scaleByDistance;\n },\n set: function set(v) {\n this.options.label.scaleByDistance = v;\n this.label.scaleByDistance = v;\n this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach(function (item) {\n item.checked = v;\n });\n }\n }, {\n key: \"labelNear\",\n get: function get() {\n return this.options.label.near;\n },\n set: function set(v) {\n var near = v;\n if (near > this.labelFar) {\n near = this.labelFar;\n }\n this.options.label.near = near;\n this.label.near = near;\n this._elms.labelNear && this._elms.labelNear.forEach(function (item) {\n item.value = near;\n });\n }\n }, {\n key: \"labelFar\",\n get: function get() {\n return this.options.label.far;\n },\n set: function set(v) {\n var far = v;\n if (far < this.labelNear) {\n far = this.labelNear;\n }\n this.options.label.far = far;\n this.label.far = far;\n this._elms.labelFar && this._elms.labelFar.forEach(function (item) {\n item.value = far;\n });\n }\n }, {\n key: \"labelLineWidth\",\n get: function get() {\n return this.options.label.lineWidth;\n },\n set: function set(v) {\n this.options.label.lineWidth = v;\n this.label.lineWidth = v;\n this._elms.labelLineWidth && this._elms.labelLineWidth.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelPixelOffset\",\n get: function get() {\n return this.options.label.pixelOffset;\n },\n set: function set(v) {\n this.options.label.pixelOffset = v;\n this.label.pixelOffset = v;\n this._elms.labelPixelOffset && this._elms.labelPixelOffset.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"labelLineColor\",\n get: function get() {\n return this.options.label.lineColor;\n },\n set: function set(v) {\n var _this6 = this;\n this.options.label.lineColor = v;\n this.label.lineColor = v;\n if (this._elms.labelLineColor) {\n this._elms.labelLineColor.forEach(function (item, i) {\n var lineColorPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this6.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this6.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this6.labelLineColor = 'rgba(0,255,255,0.5)';\n } //点击清空按钮事件回调\n });\n _this6._elms.labelLineColor[i] = lineColorPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorStart\",\n get: function get() {\n return this.options.label.backgroundColor[0];\n },\n set: function set(v) {\n var _this7 = this;\n this.options.label.backgroundColor[0] = v;\n this.label.backgroundColor = [v, this.label.backgroundColor[1]];\n if (this._elms.labelBackgroundColorStart) {\n this._elms.labelBackgroundColorStart.forEach(function (item, i) {\n var labelBackgroundColorStartPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this7.labelBackgroundColorStart,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this7.labelBackgroundColorStart = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this7.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this7._elms.labelBackgroundColorStart[i] = labelBackgroundColorStartPicker;\n });\n }\n }\n }, {\n key: \"labelBackgroundColorEnd\",\n get: function get() {\n return this.options.label.backgroundColor[1];\n },\n set: function set(v) {\n var _this8 = this;\n this.options.label.backgroundColor[1] = v;\n this.label.backgroundColor = [this.label.backgroundColor[0], v];\n if (this._elms.labelBackgroundColorEnd) {\n this._elms.labelBackgroundColorEnd.forEach(function (item, i) {\n var labelBackgroundColorEndPicker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: _this8.labelBackgroundColorEnd,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this8.labelBackgroundColorEnd = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this8.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this8._elms.labelBackgroundColorEnd[i] = labelBackgroundColorEndPicker;\n });\n }\n }\n }, {\n key: \"instruct\",\n get: function get() {\n return this.options.instruct;\n },\n set: function set(v) {\n this.options.instruct = v;\n this._elms.instruct && this._elms.instruct.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"operatingPoint\",\n get: function get() {\n return this.options.operatingPoint;\n },\n set: function set(v) {\n this.options.operatingPoint = v;\n this._elms.operatingPoint && this._elms.operatingPoint.forEach(function (item) {\n item.value = v;\n });\n }\n\n //创建\n }, {\n key: \"edit\",\n value: // 编辑框\n function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(state) {\n var _this9 = this;\n var _this, contentElm, materialList, legpMaterial, iActiveElm2, legpMaterialInput, i, tabsElm, colorPicker, labelColorPicker, lineColorPicker, labelBackgroundColorStartPicker, labelBackgroundColorEndPicker, all_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\");\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' wall-stereoscopic';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])(this);\n this._DialogObject.contentAppChild(contentElm);\n this.attributeType = this.options.attributeType;\n this.attributeCamera = this.options.attribute.camera.content;\n this.attributeISC = this.options.attribute.ISC.content;\n\n // 材质下拉\n materialList = [{\n name: '纯色墙',\n value: '纯色墙',\n key: 0,\n icon: 'icon-wall'\n }, {\n name: '上升墙',\n value: '上升墙',\n key: 1,\n icon: 'icon-wall-gradient'\n }, {\n name: '箭头墙',\n value: '箭头墙',\n key: 2,\n icon: 'icon-wall-arrow'\n }, {\n name: '警戒墙',\n value: '警戒墙',\n key: 3,\n icon: 'icon-wall-warn'\n }];\n legpMaterial = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(contentElm.getElementsByClassName('material-box')[0], \".material\");\n legpMaterial.legp_search(materialList);\n iActiveElm2 = document.createElement('i');\n iActiveElm2.className = \"icon icon-active\";\n contentElm.getElementsByClassName('material')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm2);\n legpMaterialInput = contentElm.getElementsByClassName('material')[0].getElementsByTagName('input')[0];\n i = 0;\n case 23:\n if (!(i < materialList.length)) {\n _context.next = 32;\n break;\n }\n if (!(materialList[i].key === this.material)) {\n _context.next = 29;\n break;\n }\n legpMaterial.legp_searchActive(materialList[i].value);\n legpMaterialInput.value = materialList[i].value;\n iActiveElm2.className = \"icon icon-active \".concat(materialList[i].icon);\n return _context.abrupt(\"break\", 32);\n case 29:\n i++;\n _context.next = 23;\n break;\n case 32:\n legpMaterialInput.addEventListener('input', function (e, c) {\n for (var _i = 0; _i < materialList.length; _i++) {\n if (materialList[_i].value === legpMaterialInput.value) {\n _this9.material = materialList[_i].key;\n iActiveElm2.className = \"icon icon-active \".concat(materialList[_i].icon);\n break;\n }\n }\n });\n\n // 创建标签页\n tabsElm = new _Element_cy_html_tabs__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('radar-scan-edit-tabs', undefined, this.sdk); // 颜色组件\n colorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n lineColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelLineColor\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.labelLineColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this9.labelLineColor = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this9.labelLineColor = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n labelBackgroundColorStartPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorStart\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorStart,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorStart = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorStart = 'rgba(255,255,255,1)';\n }\n });\n labelBackgroundColorEndPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"labelBackgroundColorEnd\")[0],\n size: 'mini',\n alpha: true,\n defaultColor: this.labelBackgroundColorEnd,\n disabled: false,\n openPickerAni: 'opacity',\n sure: function sure(color) {\n _this9.labelBackgroundColorEnd = color;\n },\n clear: function clear() {\n _this9.labelBackgroundColorEnd = 'rgba(255,255,255,1)';\n }\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].on(this, all_elm);\n this._elms = _eventBinding__WEBPACK_IMPORTED_MODULE_14__[\"default\"].element;\n this._elms.color = [colorPicker];\n this._elms.labelColor = [labelColorPicker];\n this._elms.labelLineColor = [lineColorPicker];\n this._elms.labelBackgroundColorStart = [labelBackgroundColorStartPicker];\n this._elms.labelBackgroundColorEnd = [labelBackgroundColorEndPicker];\n setTimeout(function () {\n _this9.attributeLink = _this9.options.attribute.link.content;\n _this9.ISCSelect && _this9.ISCSelect();\n _this9.goodsSelect && _this9.goodsSelect();\n _this9.cameraSelect && _this9.cameraSelect();\n _this9.attributeVr = _this9.options.attribute.vr.content;\n var tagData = _this9.attributeSelect;\n var legpObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this9._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0], \".attribute-select\");\n legpObject.legp_search(tagData);\n var attributeElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select')[0];\n if (!attributeElm) {\n return;\n }\n var attributeSelectElm = _this9._DialogObject._element.content.getElementsByClassName('attribute-select')[0].getElementsByTagName('input')[0];\n for (var _i2 = 0; _i2 < tagData.length; _i2++) {\n if (tagData[_i2].key === _this9.options.attributeType) {\n attributeSelectElm.value = tagData[_i2].value;\n legpObject.legp_searchActive(tagData[_i2].value);\n break;\n }\n }\n attributeSelectElm.addEventListener('input', function () {\n for (var _i3 = 0; _i3 < tagData.length; _i3++) {\n if (tagData[_i3].value === attributeSelectElm.value) {\n _this9.attributeType = tagData[_i3].key;\n break;\n }\n }\n });\n var fontData = Object(_Element_fontSelect__WEBPACK_IMPORTED_MODULE_19__[\"getFontList\"])();\n var fontObject = Object(_Element_datalist__WEBPACK_IMPORTED_MODULE_18__[\"legp\"])(_this9._DialogObject._element.content.getElementsByClassName('font-select-box')[0], '.font-select');\n if (fontObject) {\n fontObject.legp_search(fontData);\n var fontDataLegpElm = _this9._DialogObject._element.content.getElementsByClassName('font-select')[0].getElementsByTagName('input')[0];\n fontDataLegpElm.value = fontData[_this9.labelFontFamily].value;\n for (var _i4 = 0; _i4 < fontData.length; _i4++) {\n if (fontData[_i4].value == fontDataLegpElm.value) {\n fontObject.legp_searchActive(fontData[_i4].value);\n break;\n }\n }\n fontDataLegpElm.addEventListener('input', function () {\n for (var _i5 = 0; _i5 < fontData.length; _i5++) {\n if (fontData[_i5].value === fontDataLegpElm.value) {\n _this9.labelFontFamily = fontData[_i5].key;\n break;\n }\n }\n });\n _this9._elms.labelFontFamily = [fontDataLegpElm];\n }\n }, 0);\n _context.next = 51;\n break;\n case 50:\n if (this._DialogObject && this._DialogObject.remove) {\n this._DialogObject.remove();\n this._DialogObject = null;\n }\n case 51:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n var _this10 = this;\n if (!this.entity) {\n return;\n }\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.extrudedHeight = this.originalOptions.extrudedHeight;\n this.labelShow = this.originalOptions.label.show;\n this.labelColor = this.originalOptions.label.color;\n this.labelFontSize = this.originalOptions.label.fontSize;\n this.labelFontFamily = this.originalOptions.label.fontFamily;\n this.labelScaleByDistance = this.originalOptions.label.scaleByDistance;\n this.labelNear = this.originalOptions.label.near;\n this.labelFar = this.originalOptions.label.far;\n this.labelLineWidth = this.originalOptions.label.lineWidth;\n this.labelPixelOffset = this.originalOptions.label.pixelOffset;\n this.labelLineColor = this.originalOptions.label.lineColor;\n this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0];\n this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1];\n this.instruct = this.originalOptions.instruct;\n this.operatingPoint = this.originalOptions.operatingPoint;\n var positions = this.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n if (this.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n this.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n this.material = this.material;\n this._elms.noseToTail && this._elms.noseToTail.forEach(function (item) {\n item.checked = _this10.noseToTail;\n });\n for (var _i6 = 0; _i6 < this.nodePoints.length; _i6++) {\n this.sdk.viewer.entities.remove(this.nodePoints[_i6]);\n }\n this.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.event && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n this.label.remove();\n this.sdk.viewer.entities.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context2.next = 8;\n return this.sdk.removeIncetance(this.options.id);\n case 8:\n _context2.next = 10;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(this.sdk, this.options.id);\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"getMaterial\",\n value: function getMaterial() {\n var _this11 = this;\n var material;\n switch (this.options.material) {\n case 0:\n material = Cesium.Color.fromCssColorString(this.options.color);\n if (this.sdk.viewer.scene.mode === 2) {\n material = new Cesium.CustomColorMaterialSource({\n color: this.options.color\n });\n }\n break;\n case 1:\n material = new Cesium.PolylineTrailLinkMaterialProperty({\n color: Cesium.Color.fromCssColorString(this.options.color),\n duration: this.options.duration\n });\n break;\n case 2:\n case 3:\n // material = new Cesium.CustomMaterialSource({\n // image: './image/arrow.png',\n // repeat: new Cesium.Cartesian2(10, 1.0),\n // color: this.options.color,\n // duration: this.options.duration\n // })\n var img;\n switch (this.options.material) {\n case 2:\n img = 'arrow';\n break;\n case 3:\n img = 'warn';\n break;\n }\n material = new Cesium.CustomMaterialSource({\n image: this.getSourceRootPath() + \"/img/material/\".concat(img, \".png\"),\n color: this.options.color,\n repeats: new Cesium.CallbackProperty(function () {\n var repeat = [[1.0, 1.0, 1.0]];\n if (!_this11.entity || !_this11.entity.polylineVolume) {\n return repeat;\n }\n var positionProperty = _this11.entity.polylineVolume.positions;\n var positions = positionProperty.getValue();\n if (!Cesium.defined(positions)) {\n return repeat;\n }\n var totalDistance = 0;\n var distances = [];\n repeat = [];\n var flag = false;\n for (var i = 0; i < positions.length - 1; ++i) {\n var distance = Cesium.Cartesian3.distance(positions[i], positions[i + 1]);\n if (distance >= 100000) {\n flag = true;\n }\n distances.push(distance);\n totalDistance += distance;\n }\n var imgProportion = 45 / 45; // 图片长宽比例\n var totalRepeatX = totalDistance / _this11.options.extrudedHeight;\n totalRepeatX = totalRepeatX / imgProportion;\n if (flag) {\n for (var _i7 = 0; _i7 < distances.length; _i7++) {\n var repeatY = 1.0;\n repeat.push([((_i7 + 1) / distances.length).toFixed(30), totalRepeatX / 5, repeatY]);\n }\n } else {\n var totalRatio = 0;\n for (var _i8 = 0; _i8 < distances.length; _i8++) {\n var ratio = distances[_i8] / totalDistance;\n totalRatio += ratio;\n var repeatX = ratio * totalRepeatX;\n var _repeatY = 1.0;\n repeat.push([((_i8 + 1) / distances.length).toFixed(30), repeatX, _repeatY]);\n }\n }\n return repeat;\n }, false),\n duration: this.options.duration\n });\n break;\n }\n return material;\n }\n\n /**\r\n * 打开富文本框\r\n */\n }, {\n key: \"openRichTextEditor\",\n value: function openRichTextEditor(e) {\n var _this12 = this;\n _Element_richText__WEBPACK_IMPORTED_MODULE_10__[\"default\"].open(this.options.id, this.options.name, this.options.richTextContent);\n _Element_richText__WEBPACK_IMPORTED_MODULE_10__[\"default\"].primaryCallBack = function (content) {\n _this12.options.richTextContent = content;\n };\n }\n }, {\n key: \"nodeEdit\",\n value: function nodeEdit() {\n var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]('请选择一个顶点,右键取消', that.sdk);\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_15__[\"default\"](that.sdk);\n that.nodePoints = [];\n var selectPoint;\n var originalPosition;\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n if (that.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n var isAdd = false;\n var leftEvent = function leftEvent(movement, cartesian) {\n if (selectPoint) {\n isAdd = true;\n var pos3 = that.sdk.viewer.scene.clampToHeight(cartesian, [that.entity]);\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(pos3, that.sdk.viewer);\n originalPosition = that.options.positions[selectPoint.index];\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[selectPoint.index].lng, that.options.positions[selectPoint.index].lat, that.options.positions[selectPoint.index].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.splice(selectPoint.index, 0, entity);\n that.options.positions.splice(selectPoint.index, 0, that.options.positions[selectPoint.index]);\n var _positions = that.options.positions;\n fromDegreesArray = [];\n for (var _i9 = 0; _i9 < _positions.length; _i9++) {\n fromDegreesArray.push(_positions[_i9].lng, _positions[_i9].lat, _positions[_i9].alt);\n }\n if (that.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n that.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n that.material = that.material;\n } else {\n var pick = that.sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id && pick.id.name && pick.id.name === 'node-secondary-edit-point') {\n selectPoint = pick.id;\n that.nodePoints.splice(pick.id.index, 1);\n that.sdk.viewer.entities.remove(pick.id);\n that.tip.set_text('左键开始,右键结束,CTRL+右键撤销');\n originalPosition = that.cartesian3Towgs84(selectPoint.position._value, that.sdk.viewer);\n that.entity.polylineVolume.positions = new Cesium.CallbackProperty(function () {\n return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n }, false);\n }\n }\n };\n var rightEvent = function rightEvent(movement, cartesian) {\n that.closeNodeEdit = function () {};\n if (selectPoint) {\n that.options.positions[selectPoint.index] = originalPosition;\n if (isAdd) {\n that.options.positions.splice(selectPoint.index, 1);\n }\n cb(null, that.options.positions);\n }\n var positions = that.options.positions;\n fromDegreesArray = [];\n for (var _i10 = 0; _i10 < positions.length; _i10++) {\n fromDegreesArray.push(positions[_i10].lng, positions[_i10].lat, positions[_i10].alt);\n }\n if (that.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n that.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n for (var _i11 = 0; _i11 < that.nodePoints.length; _i11++) {\n that.sdk.viewer.entities.remove(that.nodePoints[_i11]);\n }\n that.nodePoints = [];\n YJ.Measure.SetMeasureStatus(false);\n that.event.destroy();\n that.tip.destroy();\n that.material = that.material;\n };\n that.closeNodeEdit = rightEvent;\n that.event.mouse_left(leftEvent);\n that.event.mouse_right(rightEvent);\n var pop = false;\n that.event.mouse_move(function (movement, cartesian) {\n if (selectPoint) {\n var pos3 = that.sdk.viewer.scene.clampToHeight(cartesian, [that.entity]);\n that.options.positions[selectPoint.index] = that.cartesian3Towgs84(pos3, that.sdk.viewer);\n var _positions2 = that.options.positions;\n fromDegreesArray = [];\n for (var _i12 = 0; _i12 < _positions2.length; _i12++) {\n fromDegreesArray.push(_positions2[_i12].lng, _positions2[_i12].lat, _positions2[_i12].alt);\n }\n if (that.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n that.label.position = [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight];\n if (pop) {\n pop = false;\n that.material = that.material;\n return;\n }\n }\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (selectPoint) {\n pop = true;\n that.options.positions.pop();\n that.sdk.viewer.entities.remove(that.nodePoints[that.nodePoints.length - 1]);\n if (selectPoint.index === that.options.positions.length) {\n if (that.nodePoints[selectPoint.index - 1]) {\n selectPoint = that.nodePoints[selectPoint.index - 1];\n } else {\n selectPoint.index = 0;\n }\n }\n that.nodePoints.pop();\n }\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n for (var _i13 = 0; _i13 < that.options.positions.length; _i13++) {\n var entity = that.sdk.viewer.entities.add({\n name: 'node-secondary-edit-point',\n index: _i13,\n position: Cesium.Cartesian3.fromDegrees(that.options.positions[_i13].lng, that.options.positions[_i13].lat, that.options.positions[_i13].alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n width: 15,\n height: 15,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n });\n that.nodePoints.push(entity);\n }\n }\n }\n }, {\n key: \"closeNodeEdit\",\n value: function closeNodeEdit() {}\n }, {\n key: \"setDIV\",\n value: function setDIV() {\n var _Cesium$Cartesian,\n _this13 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n domid: \"\",\n x: 10,\n y: 10\n };\n options.x = options.x || options.x === 0 ? options.x : 10;\n options.y = options.y || options.y === 0 ? options.y : 10;\n var points = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n points.push([this.options.positions[i].lng, this.options.positions[i].lat]);\n }\n var line = turf.lineString(points);\n var length = turf.length(line, {\n units: 'kilometers'\n });\n var sliced = turf.lineSliceAlong(line, 0, length / 2, {\n units: 'kilometers'\n });\n var siteInfoDom = document.getElementById(options.domid);\n var siteInfoPosition = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1]).concat([this.options.positions[0].alt + this.options.extrudedHeight]));\n this.sdk.viewer.scene.postRender.addEventListener(function (percentage) {\n //转换到屏幕坐标\n if (siteInfoDom.style.display === 'block' || siteInfoDom.style.display === '') {\n var winpos = _this13.sdk.viewer.scene.cartesianToCanvasCoordinates(siteInfoPosition);\n if (winpos) {\n siteInfoDom.style.left = (winpos.x + options.x).toFixed(0) + 'px';\n siteInfoDom.style.top = (winpos.y + options.y).toFixed(0) + 'px';\n }\n }\n });\n }\n }], [{\n key: \"createLabel\",\n value: function createLabel(that) {\n // 标签\n that.label = new _LabelObject__WEBPACK_IMPORTED_MODULE_13__[\"default\"](that.sdk, {\n id: that.options.id,\n show: that.options.show ? that.options.label.show : false,\n position: [that.options.positions[0].lng, that.options.positions[0].lat, that.options.positions[0].alt + that.options.extrudedHeight],\n text: that.options.name,\n fontSize: that.options.label.fontSize,\n fontFamily: that.options.label.fontFamily,\n color: that.options.label.color,\n ground: false,\n pixelOffset: that.options.label.pixelOffset,\n backgroundColor: that.options.label.backgroundColor,\n lineColor: that.options.label.lineColor,\n lineWidth: that.options.label.lineWidth,\n scaleByDistance: that.options.label.scaleByDistance,\n near: that.options.label.near,\n far: that.options.label.far\n });\n }\n }, {\n key: \"create\",\n value: function () {\n var _create = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3(that) {\n var positions, fromDegreesArray, i;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n // console.log(new Cesium.CustomMaterialSource(), new Cesium.PolylineTrailLinkMaterialProperty())\n positions = that.options.positions;\n fromDegreesArray = [];\n for (i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n if (that.noseToTail) {\n fromDegreesArray.push(fromDegreesArray[0], fromDegreesArray[1], fromDegreesArray[2]);\n }\n that.entity = that.sdk.viewer.entities.add({\n id: that.options.id,\n show: that.options.show,\n polylineVolume: {\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n // height: new Cesium.CallbackProperty(function () {\n // return that.options.height\n // }, false),\n // extrudedHeight: new Cesium.CallbackProperty(function () {\n // return that.options.extrudedHeight\n // }, false),\n shape: [{\n x: -0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: -that.options.extrudedHeight / 2\n }, {\n x: 0.0000001,\n y: that.options.extrudedHeight / 2\n }, {\n x: -0.0000001,\n y: that.options.extrudedHeight / 2\n }],\n cornerType: Cesium.CornerType.MITERED\n }\n // wall: {\n // positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n // maximumHeights: maximumHeights,\n // minimumHeights: minimumHeights,\n // material: new Cesium.PolylineTrailLinkMaterialProperty({duration: 1500}),\n // outline: true,\n // outlineColor: Cesium.Color.BLACK,\n // }\n });\n that.entity.polylineVolume.material = that.getMaterial();\n WallStereoscopic.createLabel(that);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_17__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_20__[\"setSplitDirection\"])(0, that.options.id);\n }\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function create(_x2) {\n return _create.apply(this, arguments);\n }\n return create;\n }()\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (WallStereoscopic);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2FsbFN0ZXJlb3Njb3BpYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQmFzZS9XYWxsU3RlcmVvc2NvcGljL2luZGV4LmpzPzE0ZjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi9FbGVtZW50L0RpYWxvZyc7XHJcbmltcG9ydCBjeV90YWJzIGZyb20gXCIuLi8uLi9FbGVtZW50L2N5X2h0bWxfdGFic1wiO1xyXG5pbXBvcnQgcmljaFRleHQgZnJvbSBcIi4uLy4uL0VsZW1lbnQvcmljaFRleHRcIjtcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9pbmRleFwiO1xyXG5pbXBvcnQgTGFiZWxPYmplY3QgZnJvbSAnLi4vTGFiZWxPYmplY3QnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi9ldmVudEJpbmRpbmcnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uLy4uL0V2ZW50J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vLi4vTW91c2VUaXAnXHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBsZWdwIH0gZnJvbSAnLi4vLi4vRWxlbWVudC9kYXRhbGlzdCc7XHJcbmltcG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5TmFtZSB9IGZyb20gJy4uLy4uL0VsZW1lbnQvZm9udFNlbGVjdCdcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcblxyXG5jbGFzcyBXYWxsU3RlcmVvc2NvcGljIGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNka1xyXG4gICAqIEBkZXNjcmlwdGlvbiDnlLXlrZDlm7TloplcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDlopnlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPVwiIzAwZDlmZlwiIHtzdHJpbmd9IOminOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNob3c9dHJ1ZSB7Ym9vbGVhbn0g5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZXh0cnVkZWRIZWlnaHQ9Mi40IHtudW1iZXJ9IOaLieS8uOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5vc2VUb1RhaWw9ZmFsc2Uge2Jvb2xlYW59IOmmluWwvuebuOi/nlxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm1hdGVyaWFsPTAge251bWJlcn0g5p2Q6LSo77yMMO+8mue6r+iJsuWime+8mzHvvJrkuIrljYflopnvvJsy77ya566t5aS05aKZ77ybM++8muitpuaIkuWimVxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmR1cmF0aW9uPTEwMDAge251bWJlcn0g5oyB57ut5pe26Ze0XHJcbiAgICogQHBhcmFtIHtBcnJheS48b2JqZWN0Pn0gb3B0aW9ucy5wb3NpdGlvbnMg5b+F5aGr77yM57uP57qs5bqm5ZKM6auY5bqm55qE5YiX6KGo77yM5YC85Lqk5pu/IFt7bG9uLGxhdCxhbHR9LC4uLl1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sbmcge251bWJlcn0g57uP5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10ubGF0IHtudW1iZXJ9IOe6rOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCB7b2JqZWN0fSDmoIfnrb7lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC50ZXh0IHtzdHJpbmd9IOagh+etvuaWh+acrFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnNob3cge3N0cmluZ30g5qCH562+5pi+6ZqQXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge3N0cmluZ30g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ge29iamVjdH0g5qCH562+5L2N572uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwucG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBvc2l0aW9uLmxhdCB7bnVtYmVyfSDnuqzluqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5wb3NpdGlvbi5hbHQge251bWJlcn0g6auY5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udFNpemU9MjAge251bWJlcn0g5a2X5L2T5aSn5bCPXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZm9udEZhbWlseT0wIHtudW1iZXJ9IOWtl+S9k+mhuSAw77ya6buR5L2T77ybMe+8muaAnea6kOm7keS9k++8mzLvvJrlup7pl6jmraPpgZPmoIfpopjkvZPvvJsz77ya5pWw6buR5L2TXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuY29sb3I9I2ZmZmZmZiB7c3RyaW5nfSDlrZfkvZPpopzoibJcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGg9NCB7bnVtYmVyfSDlvJXnur/lrr1cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5saW5lQ29sb3I9IzAwZmZmZjgwIHtzdHJpbmd9IOW8lee6v+minOiJslxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0PTIwIHtudW1iZXJ9IOWtl+S9k+WBj+enuyjlvJXnur/plb/luqYpXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yPVsnIzAwZmZmZjgwJywgJyMwMGZmZmY4MCddIHthcnJheX0g6IOM5pmv6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlIHtib29sZWFufSDot53nprvnvKnmlL5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbC5uZWFyPTIwMDAge251bWJlcn0g6KeG6YeO57yp5pS+5pyA6L+R6Led56a7XHJcbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwuZmFyPTEwMDAwMCB7bnVtYmVyfSDop4bph47nvKnmlL7mnIDov5zot53nprtcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUge29iamVjdH0g5bGe5oCn5YaF5a65XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuYXR0cmlidXRlLmxpbms9e30g6ZO+5o6lXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudD1bXV0ge2FycmF5fSDpk77mjqXlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10ubmFtZSB7c3RyaW5nfSDpk77mjqXlkI3np7BcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50W10udXJsIHtzdHJpbmd9IOmTvuaOpeWcsOWdgFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnJpY2hUZXh0Q29udGVudCB7c3RyaW5nfSDlr4zmlofmnKzlhoXlrrlcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3IHtvYmplY3R9IOm7mOiupOinhuinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ge29iamVjdH0g6buY6K6k6KeG6KeS5pa55L2NXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5oZWFkaW5nIHtudW1iZXJ9IOiIquWQkeinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2gge251bWJlcn0g5L+v5Luw6KeSXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHtudW1iZXJ9IOe/u+a7muinklxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiB7b2JqZWN0fSDop4bop5Lnm7jlr7nkvY3nva5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nIHtudW1iZXJ9IOe7j+W6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCB7bnVtYmVyfSDpq5jluqZcclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucywgX0RpYWxvZyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gb3B0aW9ucy5jb2xvciB8fCBcIiNmZjAwMDBcIlxyXG4gICAgdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0ID0gb3B0aW9ucy5leHRydWRlZEhlaWdodCB8fCAyLjRcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMgPSBvcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gKE51bWJlcihvcHRpb25zLm1hdGVyaWFsKSB8fCBOdW1iZXIob3B0aW9ucy5tYXRlcmlhbCkgPT09IDApID8gTnVtYmVyKG9wdGlvbnMubWF0ZXJpYWwpIDogM1xyXG4gICAgdGhpcy5vcHRpb25zLmR1cmF0aW9uID0gKG9wdGlvbnMuZHVyYXRpb24gfHwgb3B0aW9ucy5kdXJhdGlvbiA9PT0gMCkgPyBvcHRpb25zLmR1cmF0aW9uIDogMTAwMFxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSAob3B0aW9ucy5zaG93IHx8IG9wdGlvbnMuc2hvdyA9PT0gZmFsc2UpID8gb3B0aW9ucy5zaG93IDogdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgPSBvcHRpb25zLm5vc2VUb1RhaWwgfHwgZmFsc2VcclxuICAgIHRoaXMuZW50aXR5XHJcbiAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgb3B0aW9ucy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwge31cclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbCA9IHtcclxuICAgICAgc2hvdzogb3B0aW9ucy5sYWJlbC5zaG93IHx8IGZhbHNlLFxyXG4gICAgICBmb250U2l6ZTogKG9wdGlvbnMubGFiZWwuZm9udFNpemUgfHwgb3B0aW9ucy5sYWJlbC5mb250U2l6ZSA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLmZvbnRTaXplIDogMjAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA/IG9wdGlvbnMubGFiZWwuZm9udEZhbWlseSA6IDAsXHJcbiAgICAgIGNvbG9yOiBvcHRpb25zLmxhYmVsLmNvbG9yIHx8ICcjZmZmZmZmJyxcclxuICAgICAgbGluZVdpZHRoOiAob3B0aW9ucy5sYWJlbC5saW5lV2lkdGggfHwgb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggPT09IDApID8gb3B0aW9ucy5sYWJlbC5saW5lV2lkdGggOiA0LFxyXG4gICAgICBwaXhlbE9mZnNldDogKG9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXQgfHwgb3B0aW9ucy5sYWJlbC5waXhlbE9mZnNldCA9PT0gMCkgPyBvcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0IDogMjAsXHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgfHwgWycjMDBmZmZmODAnLCAnIzAwZmZmZjgwJ10sXHJcbiAgICAgIGxpbmVDb2xvcjogb3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgfHwgJyMwMGZmZmY4MCcsXHJcbiAgICAgIHNjYWxlQnlEaXN0YW5jZTogb3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgfHwgZmFsc2UsXHJcbiAgICAgIG5lYXI6IChvcHRpb25zLmxhYmVsLm5lYXIgfHwgb3B0aW9ucy5sYWJlbC5uZWFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwubmVhciA6IDIwMDAsXHJcbiAgICAgIGZhcjogKG9wdGlvbnMubGFiZWwuZmFyIHx8IG9wdGlvbnMubGFiZWwuZmFyID09PSAwKSA/IG9wdGlvbnMubGFiZWwuZmFyIDogMTAwMDAwLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmluc3RydWN0ID0gb3B0aW9ucy5pbnN0cnVjdCB8fCBcIlwiXHJcbiAgICB0aGlzLm9wdGlvbnMub3BlcmF0aW5nUG9pbnQgPSBvcHRpb25zLm9wZXJhdGluZ1BvaW50IHx8IFwiXCJcclxuICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUgPSBvcHRpb25zLmF0dHJpYnV0ZSB8fCB7fVxyXG4gICAgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rIHx8IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLmxpbmsuY29udGVudCA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUubGluay5jb250ZW50IHx8IFtdXHJcblxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhXHJcbiAgICBkZWxldGUgdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS52clxyXG4gICAgZGVsZXRlIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuZ29vZHNcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMucmljaFRleHRDb250ZW50ID0gb3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgfHwgJydcclxuXHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMuX2VsbXMgPSB7fTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnBvc2l0aW9ucyB8fCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgdGhpcy5fZXJyb3IgPSAn5pyA5bCR6ZyA6KaB5Lik5Liq5Z2Q5qCH77yBJ1xyXG4gICAgICBjb25zb2xlLndhcm4odGhpcy5fZXJyb3IpXHJcbiAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuX2Vycm9yLFxyXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgICBXYWxsU3RlcmVvc2NvcGljLmNyZWF0ZSh0aGlzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICByZXR1cm4gJ3dhbGxTdGVyZW9zY29waWMnXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlTGFiZWwodGhhdCkge1xyXG4gICAgLy8g5qCH562+XHJcbiAgICB0aGF0LmxhYmVsID0gbmV3IExhYmVsT2JqZWN0KHRoYXQuc2RrLCB7XHJcbiAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93ID8gdGhhdC5vcHRpb25zLmxhYmVsLnNob3cgOiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0ICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XSxcclxuICAgICAgdGV4dDogdGhhdC5vcHRpb25zLm5hbWUsXHJcbiAgICAgIGZvbnRTaXplOiB0aGF0Lm9wdGlvbnMubGFiZWwuZm9udFNpemUsXHJcbiAgICAgIGZvbnRGYW1pbHk6IHRoYXQub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5LFxyXG4gICAgICBjb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmNvbG9yLFxyXG4gICAgICBncm91bmQ6IGZhbHNlLFxyXG4gICAgICBwaXhlbE9mZnNldDogdGhhdC5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0LFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoYXQub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGxpbmVDb2xvcjogdGhhdC5vcHRpb25zLmxhYmVsLmxpbmVDb2xvcixcclxuICAgICAgbGluZVdpZHRoOiB0aGF0Lm9wdGlvbnMubGFiZWwubGluZVdpZHRoLFxyXG4gICAgICBzY2FsZUJ5RGlzdGFuY2U6IHRoYXQub3B0aW9ucy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgIG5lYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5uZWFyLFxyXG4gICAgICBmYXI6IHRoYXQub3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBjb2xvcih2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB2IHx8ICcjZmYwMDAwJ1xyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmVWb2x1bWUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKClcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBjb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGNcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMuY29sb3JbaV0gPSBjb2xvclBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1hdGVyaWFsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXRlcmlhbFxyXG4gIH1cclxuICBzZXQgbWF0ZXJpYWwodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm1hdGVyaWFsID0gKE51bWJlcih2KSB8fCBOdW1iZXIodikgPT09IDApID8gTnVtYmVyKHYpIDogM1xyXG4gICAgdGhpcy5lbnRpdHkucG9seWxpbmVWb2x1bWUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKClcclxuICAgIHRoaXMuX2VsbXMubWF0ZXJpYWwgJiYgdGhpcy5fZWxtcy5tYXRlcmlhbC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLm9wdGlvbnMubWF0ZXJpYWxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbm9zZVRvVGFpbCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubm9zZVRvVGFpbFxyXG4gIH1cclxuXHJcbiAgc2V0IG5vc2VUb1RhaWwodikge1xyXG4gICAgdGhpcy5vcHRpb25zLm5vc2VUb1RhaWwgPSB2XHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICB9XHJcbiAgICBpZiAodikge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zWzBdLmxuZywgcG9zaXRpb25zWzBdLmxhdCwgcG9zaXRpb25zWzBdLmFsdClcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lVm9sdW1lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICB0aGlzLm1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFxyXG4gICAgdGhpcy5fZWxtcy5ub3NlVG9UYWlsICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubm9zZVRvVGFpbC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBleHRydWRlZEhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRcclxuICB9XHJcbiAgc2V0IGV4dHJ1ZGVkSGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCA9IHZcclxuICAgIHRoaXMubGFiZWwucG9zaXRpb24gPSBbdGhpcy5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0LCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdCArIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodF1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lVm9sdW1lLnNoYXBlID0gW1xyXG4gICAgICB7IHg6IC0wLjAwMDAwMDEsIHk6IC10aGlzLm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgIHsgeDogMC4wMDAwMDAxLCB5OiAtdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICB7IHg6IDAuMDAwMDAwMSwgeTogdGhpcy5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICB7IHg6IC0wLjAwMDAwMDEsIHk6IHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodCAvIDIgfSxcclxuICAgIF1cclxuICAgIHRoaXMuX2VsbXMuZXh0cnVkZWRIZWlnaHQgJiYgdGhpcy5fZWxtcy5leHRydWRlZEhlaWdodC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsU2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvd1xyXG4gIH1cclxuICBzZXQgbGFiZWxTaG93KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ID0gdlxyXG4gICAgaWYgKHRoaXMuc2hvdyAmJiAhdGhpcy5zaG93VmlldyB8fCB0aGlzLnNob3dWaWV3ID09IDMpIHtcclxuICAgICAgdGhpcy5sYWJlbC5zaG93ID0gdlxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2hvdyAmJiB0aGlzLl9lbG1zLmxhYmVsU2hvdy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250RmFtaWx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgfVxyXG5cclxuICBzZXQgbGFiZWxGb250RmFtaWx5KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5mb250RmFtaWx5ID0gdiB8fCAwXHJcbiAgICB0aGlzLmxhYmVsICYmICh0aGlzLmxhYmVsLmZvbnRGYW1pbHkgPSB0aGlzLm9wdGlvbnMubGFiZWwuZm9udEZhbWlseSlcclxuXHJcbiAgICBsZXQgbmFtZSA9IGdldEZvbnRGYW1pbHlOYW1lKHRoaXMubGFiZWxGb250RmFtaWx5KSB8fCAnJ1xyXG4gICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkgJiZcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEZvbnRGYW1pbHkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gbmFtZVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgfVxyXG4gIHNldCBsYWJlbENvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5jb2xvciA9IHZcclxuICAgIHRoaXMubGFiZWwuY29sb3IgPSB2XHJcbiAgICBpZiAodGhpcy5fZWxtcy5sYWJlbENvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxDb2xvci5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbENvbG9yLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSBjb2xvclxyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbENvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3JbaV0gPSBsYWJlbENvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGb250U2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuZm9udFNpemVcclxuICB9XHJcbiAgc2V0IGxhYmVsRm9udFNpemUodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZvbnRTaXplID0gdlxyXG4gICAgdGhpcy5sYWJlbC5mb250U2l6ZSA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGb250U2l6ZSAmJiB0aGlzLl9lbG1zLmxhYmVsRm9udFNpemUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgfVxyXG4gIHNldCBsYWJlbFNjYWxlQnlEaXN0YW5jZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlID0gdlxyXG4gICAgdGhpcy5sYWJlbC5zY2FsZUJ5RGlzdGFuY2UgPSB2XHJcbiAgICB0aGlzLl9lbG1zLmxhYmVsU2NhbGVCeURpc3RhbmNlICYmIHRoaXMuX2VsbXMubGFiZWxTY2FsZUJ5RGlzdGFuY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhYmVsTmVhcigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwubmVhclxyXG4gIH1cclxuICBzZXQgbGFiZWxOZWFyKHYpIHtcclxuICAgIGxldCBuZWFyID0gdlxyXG4gICAgaWYgKG5lYXIgPiB0aGlzLmxhYmVsRmFyKSB7XHJcbiAgICAgIG5lYXIgPSB0aGlzLmxhYmVsRmFyXHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMubGFiZWwubmVhciA9IG5lYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxOZWFyICYmIHRoaXMuX2VsbXMubGFiZWxOZWFyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IG5lYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxGYXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmZhclxyXG4gIH1cclxuICBzZXQgbGFiZWxGYXIodikge1xyXG4gICAgbGV0IGZhciA9IHZcclxuICAgIGlmIChmYXIgPCB0aGlzLmxhYmVsTmVhcikge1xyXG4gICAgICBmYXIgPSB0aGlzLmxhYmVsTmVhclxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmZhciA9IGZhclxyXG4gICAgdGhpcy5sYWJlbC5mYXIgPSBmYXJcclxuICAgIHRoaXMuX2VsbXMubGFiZWxGYXIgJiYgdGhpcy5fZWxtcy5sYWJlbEZhci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBmYXJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxMaW5lV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aFxyXG4gIH1cclxuICBzZXQgbGFiZWxMaW5lV2lkdGgodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLmxpbmVXaWR0aCA9IHZcclxuICAgIHRoaXMubGFiZWwubGluZVdpZHRoID0gdlxyXG4gICAgdGhpcy5fZWxtcy5sYWJlbExpbmVXaWR0aCAmJiB0aGlzLl9lbG1zLmxhYmVsTGluZVdpZHRoLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxQaXhlbE9mZnNldCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwucGl4ZWxPZmZzZXRcclxuICB9XHJcbiAgc2V0IGxhYmVsUGl4ZWxPZmZzZXQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0ID0gdlxyXG4gICAgdGhpcy5sYWJlbC5waXhlbE9mZnNldCA9IHZcclxuICAgIHRoaXMuX2VsbXMubGFiZWxQaXhlbE9mZnNldCAmJiB0aGlzLl9lbG1zLmxhYmVsUGl4ZWxPZmZzZXQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0IGxhYmVsTGluZUNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3JcclxuICB9XHJcbiAgc2V0IGxhYmVsTGluZUNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5saW5lQ29sb3IgPSB2XHJcbiAgICB0aGlzLmxhYmVsLmxpbmVDb2xvciA9IHZcclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxMaW5lQ29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5sYWJlbExpbmVDb2xvcixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMCwyNTUsMjU1LDAuNSknXHJcbiAgICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLl9lbG1zLmxhYmVsTGluZUNvbG9yW2ldID0gbGluZUNvbG9yUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwuYmFja2dyb3VuZENvbG9yWzBdXHJcbiAgfVxyXG4gIHNldCBsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt2LCB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclsxXV1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQpIHtcclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFtpXSA9IGxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnRQaWNrZXJcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICB9XHJcbiAgc2V0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV0gPSB2XHJcbiAgICB0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvciA9IFt0aGlzLmxhYmVsLmJhY2tncm91bmRDb2xvclswXSwgdl1cclxuICAgIGlmICh0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICAgIGVsOiBpdGVtLmVsLFxyXG4gICAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRbaV0gPSBsYWJlbEJhY2tncm91bmRDb2xvckVuZFBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGluc3RydWN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbnN0cnVjdFxyXG4gIH1cclxuICBzZXQgaW5zdHJ1Y3Qodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmluc3RydWN0ID0gdlxyXG4gICAgdGhpcy5fZWxtcy5pbnN0cnVjdCAmJiB0aGlzLl9lbG1zLmluc3RydWN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgb3BlcmF0aW5nUG9pbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wZXJhdGluZ1BvaW50XHJcbiAgfVxyXG4gIHNldCBvcGVyYXRpbmdQb2ludCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMub3BlcmF0aW5nUG9pbnQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLm9wZXJhdGluZ1BvaW50ICYmIHRoaXMuX2VsbXMub3BlcmF0aW5nUG9pbnQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8v5Yib5bu6XHJcbiAgc3RhdGljIGFzeW5jIGNyZWF0ZSh0aGF0KSB7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2cobmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSgpLCBuZXcgQ2VzaXVtLlBvbHlsaW5lVHJhaWxMaW5rTWF0ZXJpYWxQcm9wZXJ0eSgpKVxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoYXQubm9zZVRvVGFpbCkge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goZnJvbURlZ3JlZXNBcnJheVswXSwgZnJvbURlZ3JlZXNBcnJheVsxXSwgZnJvbURlZ3JlZXNBcnJheVsyXSlcclxuICAgIH1cclxuXHJcbiAgICB0aGF0LmVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmVWb2x1bWU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpLFxyXG4gICAgICAgIC8vIGhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyAgIHJldHVybiB0aGF0Lm9wdGlvbnMuaGVpZ2h0XHJcbiAgICAgICAgLy8gfSwgZmFsc2UpLFxyXG4gICAgICAgIC8vIGV4dHJ1ZGVkSGVpZ2h0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vICAgcmV0dXJuIHRoYXQub3B0aW9ucy5leHRydWRlZEhlaWdodFxyXG4gICAgICAgIC8vIH0sIGZhbHNlKSxcclxuICAgICAgICBzaGFwZTogW1xyXG4gICAgICAgICAgeyB4OiAtMC4wMDAwMDAxLCB5OiAtdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgeyB4OiAwLjAwMDAwMDEsIHk6IC10aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgICAgICB7IHg6IDAuMDAwMDAwMSwgeTogdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0IC8gMiB9LFxyXG4gICAgICAgICAgeyB4OiAtMC4wMDAwMDAxLCB5OiB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHQgLyAyIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBjb3JuZXJUeXBlOiBDZXNpdW0uQ29ybmVyVHlwZS5NSVRFUkVEXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIHdhbGw6IHtcclxuICAgICAgLy8gICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpLFxyXG4gICAgICAvLyAgIG1heGltdW1IZWlnaHRzOiBtYXhpbXVtSGVpZ2h0cyxcclxuICAgICAgLy8gICBtaW5pbXVtSGVpZ2h0czogbWluaW11bUhlaWdodHMsXHJcbiAgICAgIC8vICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVUcmFpbExpbmtNYXRlcmlhbFByb3BlcnR5KHtkdXJhdGlvbjogMTUwMH0pLFxyXG4gICAgICAvLyAgIG91dGxpbmU6IHRydWUsXHJcbiAgICAgIC8vICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgIC8vIH1cclxuICAgIH0pXHJcbiAgICB0aGF0LmVudGl0eS5wb2x5bGluZVZvbHVtZS5tYXRlcmlhbCA9IHRoYXQuZ2V0TWF0ZXJpYWwoKVxyXG4gICAgV2FsbFN0ZXJlb3Njb3BpYy5jcmVhdGVMYWJlbCh0aGF0KVxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG5cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g57yW6L6R5qGGXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMsIHtcclxuICAgICAgICB0aXRsZTogJ+eUteWtkOWbtOWimeWxnuaApycsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgICBjb25maXJtQ2FsbEJhY2s6IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUudHJpbSgpXHJcbiAgICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn5pyq5ZG95ZCN5a+56LGhJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsLnBvc2l0aW9uID0geyBsbmc6IHRoaXMubGFiZWwucG9zaXRpb25bMF0sIGxhdDogdGhpcy5sYWJlbC5wb3NpdGlvblsxXSwgYWx0OiB0aGlzLmxhYmVsLnBvc2l0aW9uWzJdIH1cclxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayh0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgICAgICAgIHN5bmNEYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgICBzeW5jU3BsaXREYXRhKHRoaXMuc2RrLCB0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVzZXRDYWxsQmFjaygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cucmVtb3ZlQ2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5vZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLm5vZGVQb2ludHNbaV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vZGVQb2ludHMgPSBbXVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgICAgICAgdGhpcy5ldmVudCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0gc2hvd1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdENhbGxCYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBXYWxsU3RlcmVvc2NvcGljLm5vZGVFZGl0KHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHdhbGwtc3RlcmVvc2NvcGljJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwodGhpcylcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlVHlwZVxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNhbWVyYSA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUuY2FtZXJhLmNvbnRlbnRcclxuICAgICAgdGhpcy5hdHRyaWJ1dGVJU0MgPSB0aGlzLm9wdGlvbnMuYXR0cmlidXRlLklTQy5jb250ZW50XHJcblxyXG4gICAgICAvLyDmnZDotKjkuIvmi4lcclxuICAgICAgbGV0IG1hdGVyaWFsTGlzdCA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGljb24td2FsbFwiPjwvaT7nuq/oibLlopknLFxyXG4gICAgICAgICAgdmFsdWU6ICfnuq/oibLlopknLFxyXG4gICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24td2FsbCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICc8aSBjbGFzcz1cImljb24gaWNvbi13YWxsLWdyYWRpZW50XCI+PC9pPuS4iuWNh+WimScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+S4iuWNh+WimScsXHJcbiAgICAgICAgICBrZXk6IDEsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi13YWxsLWdyYWRpZW50J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJzxpIGNsYXNzPVwiaWNvbiBpY29uLXdhbGwtYXJyb3dcIj48L2k+566t5aS05aKZJyxcclxuICAgICAgICAgIHZhbHVlOiAn566t5aS05aKZJyxcclxuICAgICAgICAgIGtleTogMixcclxuICAgICAgICAgIGljb246ICdpY29uLXdhbGwtYXJyb3cnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnPGkgY2xhc3M9XCJpY29uIGljb24td2FsbC13YXJuXCI+PC9pPuitpuaIkuWimScsXHJcbiAgICAgICAgICB2YWx1ZTogJ+itpuaIkuWimScsXHJcbiAgICAgICAgICBrZXk6IDMsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi13YWxsLXdhcm4nXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcblxyXG4gICAgICBsZXQgbGVncE1hdGVyaWFsID0gbGVncChjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hdGVyaWFsLWJveCcpWzBdLCBcIi5tYXRlcmlhbFwiKVxyXG4gICAgICBsZWdwTWF0ZXJpYWwubGVncF9zZWFyY2gobWF0ZXJpYWxMaXN0KVxyXG4gICAgICBsZXQgaUFjdGl2ZUVsbTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJylcclxuICAgICAgaUFjdGl2ZUVsbTIuY2xhc3NOYW1lID0gXCJpY29uIGljb24tYWN0aXZlXCJcclxuICAgICAgY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtYXRlcmlhbCcpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N5X2RhdGFsaXN0JylbMF0uYXBwZW5kQ2hpbGQoaUFjdGl2ZUVsbTIpXHJcbiAgICAgIGxldCBsZWdwTWF0ZXJpYWxJbnB1dCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWF0ZXJpYWwnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGVyaWFsTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChtYXRlcmlhbExpc3RbaV0ua2V5ID09PSB0aGlzLm1hdGVyaWFsKSB7XHJcbiAgICAgICAgICBsZWdwTWF0ZXJpYWwubGVncF9zZWFyY2hBY3RpdmUobWF0ZXJpYWxMaXN0W2ldLnZhbHVlKVxyXG4gICAgICAgICAgbGVncE1hdGVyaWFsSW5wdXQudmFsdWUgPSBtYXRlcmlhbExpc3RbaV0udmFsdWVcclxuICAgICAgICAgIGlBY3RpdmVFbG0yLmNsYXNzTmFtZSA9IGBpY29uIGljb24tYWN0aXZlICR7bWF0ZXJpYWxMaXN0W2ldLmljb259YFxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGVncE1hdGVyaWFsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSwgYykgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0ZXJpYWxMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobWF0ZXJpYWxMaXN0W2ldLnZhbHVlID09PSBsZWdwTWF0ZXJpYWxJbnB1dC52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWxMaXN0W2ldLmtleVxyXG4gICAgICAgICAgICBpQWN0aXZlRWxtMi5jbGFzc05hbWUgPSBgaWNvbiBpY29uLWFjdGl2ZSAke21hdGVyaWFsTGlzdFtpXS5pY29ufWBcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyDliJvlu7rmoIfnrb7pobVcclxuICAgICAgbGV0IHRhYnNFbG0gPSBuZXcgY3lfdGFicygncmFkYXItc2Nhbi1lZGl0LXRhYnMnLCB1bmRlZmluZWQsIHRoaXMuc2RrKVxyXG4gICAgICAvLyDpopzoibLnu4Tku7ZcclxuICAgICAgbGV0IGNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb2xvclwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgICAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgICAgIGRlZmF1bHRDb2xvcjogdGhpcy5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvclxyXG4gICAgICAgIH0sLy/ngrnlh7vnoa7orqTmjInpkq7kuovku7blm57osINcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgIH0sLy/ngrnlh7vmuIXnqbrmjInpkq7kuovku7blm57osINcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsQ29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMubGFiZWxDb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBsaW5lQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhYmVsTGluZUNvbG9yXCIpWzBdLFxyXG4gICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsTGluZUNvbG9yLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IChjb2xvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbExpbmVDb2xvciA9IGNvbG9yXHJcbiAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICB9KVxyXG4gICAgICBsZXQgbGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JyxcclxuICAgICAgICBzdXJlOiAoY29sb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IGNvbG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0ID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGxhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsYWJlbEJhY2tncm91bmRDb2xvckVuZFwiKVswXSxcclxuICAgICAgICBzaXplOiAnbWluaScsXHJcbiAgICAgICAgYWxwaGE6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdENvbG9yOiB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsXHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gY29sb3JcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAgICAgRXZlbnRCaW5kaW5nLm9uKHRoaXMsIGFsbF9lbG0pXHJcbiAgICAgIHRoaXMuX2VsbXMgPSBFdmVudEJpbmRpbmcuZWxlbWVudFxyXG4gICAgICB0aGlzLl9lbG1zLmNvbG9yID0gW2NvbG9yUGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQ29sb3IgPSBbbGFiZWxDb2xvclBpY2tlcl1cclxuICAgICAgdGhpcy5fZWxtcy5sYWJlbExpbmVDb2xvciA9IFtsaW5lQ29sb3JQaWNrZXJdXHJcbiAgICAgIHRoaXMuX2VsbXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JTdGFydCA9IFtsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0UGlja2VyXVxyXG4gICAgICB0aGlzLl9lbG1zLmxhYmVsQmFja2dyb3VuZENvbG9yRW5kID0gW2xhYmVsQmFja2dyb3VuZENvbG9yRW5kUGlja2VyXVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVMaW5rID0gdGhpcy5vcHRpb25zLmF0dHJpYnV0ZS5saW5rLmNvbnRlbnRcclxuICAgICAgICB0aGlzLklTQ1NlbGVjdCAmJiB0aGlzLklTQ1NlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5nb29kc1NlbGVjdCAmJiB0aGlzLmdvb2RzU2VsZWN0KClcclxuICAgICAgICB0aGlzLmNhbWVyYVNlbGVjdCAmJiB0aGlzLmNhbWVyYVNlbGVjdCgpXHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVWciA9IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGUudnIuY29udGVudFxyXG4gICAgICAgIGxldCB0YWdEYXRhID0gdGhpcy5hdHRyaWJ1dGVTZWxlY3RcclxuICAgICAgICBsZXQgbGVncE9iamVjdCA9IGxlZ3AodGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdC1ib3gnKVswXSwgXCIuYXR0cmlidXRlLXNlbGVjdFwiKVxyXG4gICAgICAgIGxlZ3BPYmplY3QubGVncF9zZWFyY2godGFnRGF0YSlcclxuICAgICAgICBsZXQgYXR0cmlidXRlRWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdXHJcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVFbG0pIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYXR0cmlidXRlU2VsZWN0RWxtID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGFnRGF0YVtpXS5rZXkgPT09IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVUeXBlKSB7XHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSA9IHRhZ0RhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgbGVncE9iamVjdC5sZWdwX3NlYXJjaEFjdGl2ZSh0YWdEYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhdHRyaWJ1dGVTZWxlY3RFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRhZ0RhdGFbaV0udmFsdWUgPT09IGF0dHJpYnV0ZVNlbGVjdEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVHlwZSA9IHRhZ0RhdGFbaV0ua2V5XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGxldCBmb250RGF0YSA9IGdldEZvbnRMaXN0KClcclxuICAgICAgICBsZXQgZm9udE9iamVjdCA9IGxlZ3AoXHJcbiAgICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgICAnZm9udC1zZWxlY3QtYm94J1xyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgICcuZm9udC1zZWxlY3QnXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmIChmb250T2JqZWN0KSB7XHJcbiAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoKGZvbnREYXRhKVxyXG4gICAgICAgICAgbGV0IGZvbnREYXRhTGVncEVsbSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmb250LXNlbGVjdCcpWzBdXHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgICAgZm9udERhdGFMZWdwRWxtLnZhbHVlID0gZm9udERhdGFbdGhpcy5sYWJlbEZvbnRGYW1pbHldLnZhbHVlXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PSBmb250RGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBmb250T2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKGZvbnREYXRhW2ldLnZhbHVlKVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvbnREYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChmb250RGF0YVtpXS52YWx1ZSA9PT0gZm9udERhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsRm9udEZhbWlseSA9IGZvbnREYXRhW2ldLmtleVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLl9lbG1zLmxhYmVsRm9udEZhbWlseSA9IFtmb250RGF0YUxlZ3BFbG1dXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LnJlbW92ZSkge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW50aXR5KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9yaWdpbmFsT3B0aW9ucylcclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5leHRydWRlZEhlaWdodCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XHJcbiAgICB0aGlzLmxhYmVsU2hvdyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnNob3dcclxuICAgIHRoaXMubGFiZWxDb2xvciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLmNvbG9yXHJcbiAgICB0aGlzLmxhYmVsRm9udFNpemUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250U2l6ZVxyXG4gICAgdGhpcy5sYWJlbEZvbnRGYW1pbHkgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mb250RmFtaWx5XHJcbiAgICB0aGlzLmxhYmVsU2NhbGVCeURpc3RhbmNlID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwuc2NhbGVCeURpc3RhbmNlXHJcbiAgICB0aGlzLmxhYmVsTmVhciA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLm5lYXJcclxuICAgIHRoaXMubGFiZWxGYXIgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5mYXJcclxuICAgIHRoaXMubGFiZWxMaW5lV2lkdGggPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5saW5lV2lkdGhcclxuICAgIHRoaXMubGFiZWxQaXhlbE9mZnNldCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxhYmVsLnBpeGVsT2Zmc2V0XHJcbiAgICB0aGlzLmxhYmVsTGluZUNvbG9yID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubGFiZWwubGluZUNvbG9yXHJcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yU3RhcnQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMF1cclxuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5sYWJlbC5iYWNrZ3JvdW5kQ29sb3JbMV1cclxuICAgIHRoaXMuaW5zdHJ1Y3QgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5pbnN0cnVjdFxyXG4gICAgdGhpcy5vcGVyYXRpbmdQb2ludCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm9wZXJhdGluZ1BvaW50XHJcblxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubm9zZVRvVGFpbCkge1xyXG4gICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goZnJvbURlZ3JlZXNBcnJheVswXSwgZnJvbURlZ3JlZXNBcnJheVsxXSwgZnJvbURlZ3JlZXNBcnJheVsyXSlcclxuICAgIH1cclxuICAgIHRoaXMuZW50aXR5LnBvbHlsaW5lVm9sdW1lLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICB0aGlzLm1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFxyXG4gICAgdGhpcy5fZWxtcy5ub3NlVG9UYWlsICYmXHJcbiAgICAgIHRoaXMuX2VsbXMubm9zZVRvVGFpbC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRoaXMubm9zZVRvVGFpbFxyXG4gICAgICB9KVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5ub2RlUG9pbnRzW2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlUG9pbnRzID0gW11cclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgJiYgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICB0aGlzLmxhYmVsLnJlbW92ZSgpXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5lbnRpdHkgPSBudWxsXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgZ2V0TWF0ZXJpYWwoKSB7XHJcbiAgICBsZXQgbWF0ZXJpYWxcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLm1hdGVyaWFsKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICBtYXRlcmlhbCA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKVxyXG4gICAgICAgIGlmICh0aGlzLnNkay52aWV3ZXIuc2NlbmUubW9kZSA9PT0gMikge1xyXG4gICAgICAgICAgbWF0ZXJpYWwgPSBuZXcgQ2VzaXVtLkN1c3RvbUNvbG9yTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5Qb2x5bGluZVRyYWlsTGlua01hdGVyaWFsUHJvcGVydHkoe1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yKSxcclxuICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLm9wdGlvbnMuZHVyYXRpb25cclxuICAgICAgICB9KVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgICAvLyBtYXRlcmlhbCA9IG5ldyBDZXNpdW0uQ3VzdG9tTWF0ZXJpYWxTb3VyY2Uoe1xyXG4gICAgICAgIC8vICAgaW1hZ2U6ICcuL2ltYWdlL2Fycm93LnBuZycsXHJcbiAgICAgICAgLy8gICByZXBlYXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigxMCwgMS4wKSxcclxuICAgICAgICAvLyAgIGNvbG9yOiB0aGlzLm9wdGlvbnMuY29sb3IsXHJcbiAgICAgICAgLy8gICBkdXJhdGlvbjogdGhpcy5vcHRpb25zLmR1cmF0aW9uXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICBsZXQgaW1nXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubWF0ZXJpYWwpIHtcclxuICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgaW1nID0gJ2Fycm93J1xyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICBpbWcgPSAnd2FybidcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1hdGVyaWFsID0gbmV3IENlc2l1bS5DdXN0b21NYXRlcmlhbFNvdXJjZSh7XHJcbiAgICAgICAgICBpbWFnZTogdGhpcy5nZXRTb3VyY2VSb290UGF0aCgpICsgYC9pbWcvbWF0ZXJpYWwvJHtpbWd9LnBuZ2AsXHJcbiAgICAgICAgICBjb2xvcjogdGhpcy5vcHRpb25zLmNvbG9yLFxyXG4gICAgICAgICAgcmVwZWF0czogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlcGVhdCA9IFtbMS4wLCAxLjAsIDEuMF1dXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5lbnRpdHkgfHwgIXRoaXMuZW50aXR5LnBvbHlsaW5lVm9sdW1lKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcGVhdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvblByb3BlcnR5ID0gdGhpcy5lbnRpdHkucG9seWxpbmVWb2x1bWUucG9zaXRpb25zO1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gcG9zaXRpb25Qcm9wZXJ0eS5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICBpZiAoIUNlc2l1bS5kZWZpbmVkKHBvc2l0aW9ucykpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVwZWF0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgdG90YWxEaXN0YW5jZSA9IDA7XHJcbiAgICAgICAgICAgIGxldCBkaXN0YW5jZXMgPSBbXVxyXG4gICAgICAgICAgICByZXBlYXQgPSBbXVxyXG5cclxuICAgICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLSAxOyArK2kpIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3NpdGlvbnNbaV0sIHBvc2l0aW9uc1tpICsgMV0pXHJcbiAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlID49IDEwMDAwMCkge1xyXG4gICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZGlzdGFuY2VzLnB1c2goZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdG90YWxEaXN0YW5jZSArPSBkaXN0YW5jZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGltZ1Byb3BvcnRpb24gPSA0NSAvIDQ1IC8vIOWbvueJh+mVv+WuveavlOS+i1xyXG4gICAgICAgICAgICBsZXQgdG90YWxSZXBlYXRYID0gdG90YWxEaXN0YW5jZSAvIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodDtcclxuICAgICAgICAgICAgdG90YWxSZXBlYXRYID0gdG90YWxSZXBlYXRYIC8gaW1nUHJvcG9ydGlvblxyXG5cclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpc3RhbmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlcGVhdFkgPSAxLjBcclxuICAgICAgICAgICAgICAgIHJlcGVhdC5wdXNoKFsoKGkgKyAxKSAvIGRpc3RhbmNlcy5sZW5ndGgpLnRvRml4ZWQoMzApLCB0b3RhbFJlcGVhdFggLyA1LCByZXBlYXRZXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHRvdGFsUmF0aW8gPSAwXHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCByYXRpbyA9IChkaXN0YW5jZXNbaV0gLyB0b3RhbERpc3RhbmNlKVxyXG4gICAgICAgICAgICAgICAgdG90YWxSYXRpbyArPSByYXRpb1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlcGVhdFggPSByYXRpbyAqIHRvdGFsUmVwZWF0WFxyXG4gICAgICAgICAgICAgICAgbGV0IHJlcGVhdFkgPSAxLjBcclxuICAgICAgICAgICAgICAgIHJlcGVhdC5wdXNoKFsoKGkgKyAxKSAvIGRpc3RhbmNlcy5sZW5ndGgpLnRvRml4ZWQoMzApLCByZXBlYXRYLCByZXBlYXRZXSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlcGVhdFxyXG5cclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLm9wdGlvbnMuZHVyYXRpb24sXHJcbiAgICAgICAgfSlcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRlcmlhbFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omT5byA5a+M5paH5pys5qGGXHJcbiAgICovXHJcbiAgb3BlblJpY2hUZXh0RWRpdG9yKGUpIHtcclxuICAgIHJpY2hUZXh0Lm9wZW4odGhpcy5vcHRpb25zLmlkLCB0aGlzLm9wdGlvbnMubmFtZSwgdGhpcy5vcHRpb25zLnJpY2hUZXh0Q29udGVudClcclxuICAgIHJpY2hUZXh0LnByaW1hcnlDYWxsQmFjayA9IChjb250ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5yaWNoVGV4dENvbnRlbnQgPSBjb250ZW50XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBub2RlRWRpdChjYiA9ICgpID0+IHsgfSkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhhdC50aXAgPSBuZXcgTW91c2VUaXAoJ+ivt+mAieaLqeS4gOS4qumhtueCue+8jOWPs+mUruWPlua2iCcsIHRoYXQuc2RrKVxyXG4gICAgICB0aGF0LmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoYXQubm9kZVBvaW50cyA9IFtdXHJcbiAgICAgIGxldCBzZWxlY3RQb2ludFxyXG4gICAgICBsZXQgb3JpZ2luYWxQb3NpdGlvblxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGF0Lm5vc2VUb1RhaWwpIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goZnJvbURlZ3JlZXNBcnJheVswXSwgZnJvbURlZ3JlZXNBcnJheVsxXSwgZnJvbURlZ3JlZXNBcnJheVsyXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGlzQWRkID0gZmFsc2VcclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICBpc0FkZCA9IHRydWVcclxuICAgICAgICAgIGxldCBwb3MzID0gdGhhdC5zZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoY2FydGVzaWFuLCBbdGhhdC5lbnRpdHldKVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0gPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KHBvczMsIHRoYXQuc2RrLnZpZXdlcilcclxuICAgICAgICAgIG9yaWdpbmFsUG9zaXRpb24gPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XVxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbm9kZS1zZWNvbmRhcnktZWRpdC1wb2ludCcsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyh0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XS5sbmcsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbc2VsZWN0UG9pbnQuaW5kZXhdLmxhdCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0uYWx0KSxcclxuICAgICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE1LFxyXG4gICAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHNlbGVjdFBvaW50LmluZGV4LCAwLCBlbnRpdHkpXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tzZWxlY3RQb2ludC5pbmRleF0pXHJcblxyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdC5ub3NlVG9UYWlsKSB7XHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChmcm9tRGVncmVlc0FycmF5WzBdLCBmcm9tRGVncmVlc0FycmF5WzFdLCBmcm9tRGVncmVlc0FycmF5WzJdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0ICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XVxyXG4gICAgICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgdGhhdC5tYXRlcmlhbCA9IHRoYXQubWF0ZXJpYWxcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB2YXIgcGljayA9IHRoYXQuc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKTtcclxuICAgICAgICAgIGlmIChwaWNrICYmIHBpY2suaWQgJiYgcGljay5pZC5uYW1lICYmIHBpY2suaWQubmFtZSA9PT0gJ25vZGUtc2Vjb25kYXJ5LWVkaXQtcG9pbnQnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdFBvaW50ID0gcGljay5pZFxyXG4gICAgICAgICAgICB0aGF0Lm5vZGVQb2ludHMuc3BsaWNlKHBpY2suaWQuaW5kZXgsIDEpXHJcbiAgICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5yZW1vdmUocGljay5pZClcclxuICAgICAgICAgICAgdGhhdC50aXAuc2V0X3RleHQoJ+W3pumUruW8gOWni++8jOWPs+mUrue7k+adn++8jENUUkwr5Y+z6ZSu5pKk6ZSAJylcclxuICAgICAgICAgICAgb3JpZ2luYWxQb3NpdGlvbiA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoc2VsZWN0UG9pbnQucG9zaXRpb24uX3ZhbHVlLCB0aGF0LnNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoYXQuZW50aXR5LnBvbHlsaW5lVm9sdW1lLnBvc2l0aW9ucyA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcmlnaHRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhhdC5jbG9zZU5vZGVFZGl0ID0gKCk9Pnt9XHJcbiAgICAgICAgaWYgKHNlbGVjdFBvaW50KSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IG9yaWdpbmFsUG9zaXRpb25cclxuICAgICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLnNwbGljZShzZWxlY3RQb2ludC5pbmRleCwgMSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNiKG51bGwsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zXHJcbiAgICAgICAgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBwb3NpdGlvbnNbaV0uYWx0KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhhdC5ub3NlVG9UYWlsKSB7XHJcbiAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2goZnJvbURlZ3JlZXNBcnJheVswXSwgZnJvbURlZ3JlZXNBcnJheVsxXSwgZnJvbURlZ3JlZXNBcnJheVsyXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5lbnRpdHkucG9seWxpbmVWb2x1bWUucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICB0aGF0LmxhYmVsLnBvc2l0aW9uID0gW3RoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxhdCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5hbHQgKyB0aGF0Lm9wdGlvbnMuZXh0cnVkZWRIZWlnaHRdXHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5ub2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoYXQubm9kZVBvaW50c1tpXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5ub2RlUG9pbnRzID0gW11cclxuICAgICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAgICAgdGhhdC5ldmVudC5kZXN0cm95KClcclxuICAgICAgICB0aGF0LnRpcC5kZXN0cm95KClcclxuICAgICAgICB0aGF0Lm1hdGVyaWFsID0gdGhhdC5tYXRlcmlhbFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGF0LmNsb3NlTm9kZUVkaXQgPSByaWdodEV2ZW50XHJcblxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG5cclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9yaWdodChyaWdodEV2ZW50KVxyXG5cclxuICAgICAgbGV0IHBvcCA9IGZhbHNlXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgbGV0IHBvczMgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChjYXJ0ZXNpYW4sIFt0aGF0LmVudGl0eV0pXHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW3NlbGVjdFBvaW50LmluZGV4XSA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQocG9zMywgdGhhdC5zZGsudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQsIHBvc2l0aW9uc1tpXS5hbHQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdC5ub3NlVG9UYWlsKSB7XHJcbiAgICAgICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChmcm9tRGVncmVlc0FycmF5WzBdLCBmcm9tRGVncmVlc0FycmF5WzFdLCBmcm9tRGVncmVlc0FycmF5WzJdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5sYWJlbC5wb3NpdGlvbiA9IFt0aGF0Lm9wdGlvbnMucG9zaXRpb25zWzBdLmxuZywgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXQsIHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0ICsgdGhhdC5vcHRpb25zLmV4dHJ1ZGVkSGVpZ2h0XVxyXG4gICAgICAgICAgaWYgKHBvcCkge1xyXG4gICAgICAgICAgICBwb3AgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGF0Lm1hdGVyaWFsID0gdGhhdC5tYXRlcmlhbFxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RQb2ludCkge1xyXG4gICAgICAgICAgcG9wID0gdHJ1ZVxyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGF0Lm5vZGVQb2ludHNbdGhhdC5ub2RlUG9pbnRzLmxlbmd0aCAtIDFdKVxyXG4gICAgICAgICAgaWYgKHNlbGVjdFBvaW50LmluZGV4ID09PSB0aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhhdC5ub2RlUG9pbnRzW3NlbGVjdFBvaW50LmluZGV4IC0gMV0pIHtcclxuICAgICAgICAgICAgICBzZWxlY3RQb2ludCA9IHRoYXQubm9kZVBvaW50c1tzZWxlY3RQb2ludC5pbmRleCAtIDFdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0UG9pbnQuaW5kZXggPSAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoYXQubm9kZVBvaW50cy5wb3AoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBlbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgIG5hbWU6ICdub2RlLXNlY29uZGFyeS1lZGl0LXBvaW50JyxcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHQpLFxyXG4gICAgICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgICB3aWR0aDogMTUsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTUsXHJcbiAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLndpdGhBbHBoYSgwLjk5KVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoYXQubm9kZVBvaW50cy5wdXNoKGVudGl0eSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VOb2RlRWRpdCgpIHt9XHJcblxyXG4gIHNldERJVihvcHRpb25zID0geyBkb21pZDogXCJcIiwgeDogMTAsIHk6IDEwIH0pIHtcclxuICAgIG9wdGlvbnMueCA9IChvcHRpb25zLnggfHwgb3B0aW9ucy54ID09PSAwKSA/IG9wdGlvbnMueCA6IDEwXHJcbiAgICBvcHRpb25zLnkgPSAob3B0aW9ucy55IHx8IG9wdGlvbnMueSA9PT0gMCkgPyBvcHRpb25zLnkgOiAxMFxyXG4gICAgbGV0IHBvaW50cyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcG9pbnRzLnB1c2goW3RoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmxhdF0pXHJcbiAgICB9XHJcbiAgICBsZXQgbGluZSA9IHR1cmYubGluZVN0cmluZyhwb2ludHMpXHJcbiAgICBsZXQgbGVuZ3RoID0gdHVyZi5sZW5ndGgobGluZSwgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pXHJcbiAgICBsZXQgc2xpY2VkID0gdHVyZi5saW5lU2xpY2VBbG9uZyhsaW5lLCAwLCBsZW5ndGggLyAyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICBsZXQgc2l0ZUluZm9Eb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmRvbWlkKVxyXG4gICAgbGV0IHNpdGVJbmZvUG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5zbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdLCB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdLmFsdCArIHRoaXMub3B0aW9ucy5leHRydWRlZEhlaWdodClcclxuXHJcbiAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKChwZXJjZW50YWdlKSA9PiB7XHJcbiAgICAgIC8v6L2s5o2i5Yiw5bGP5bmV5Z2Q5qCHXHJcbiAgICAgIGlmIChzaXRlSW5mb0RvbS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snIHx8IHNpdGVJbmZvRG9tLnN0eWxlLmRpc3BsYXkgPT09ICcnKSB7XHJcbiAgICAgICAgbGV0IHdpbnBvcyA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYXJ0ZXNpYW5Ub0NhbnZhc0Nvb3JkaW5hdGVzKHNpdGVJbmZvUG9zaXRpb24pO1xyXG4gICAgICAgIGlmICh3aW5wb3MpIHtcclxuICAgICAgICAgIHNpdGVJbmZvRG9tLnN0eWxlLmxlZnQgPSAod2lucG9zLnggKyBvcHRpb25zLngpLnRvRml4ZWQoMCkgKyAncHgnO1xyXG4gICAgICAgICAgc2l0ZUluZm9Eb20uc3R5bGUudG9wID0gKHdpbnBvcy55ICsgb3B0aW9ucy55KS50b0ZpeGVkKDApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgV2FsbFN0ZXJlb3Njb3BpY1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBa0RBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBclFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQS8vQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVUQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQS9DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5ckJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Base/WallStereoscopic/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WaterSurface/_element.js": -/*!***********************************************!*\ - !*** ./src/Obj/Base/WaterSurface/_element.js ***! - \***********************************************/ -/*! exports provided: html */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n
    \\n
    \\n
    \\n \\u540D\\u79F0\\n \\n
    \\n
    \\n \\u989C\\u8272\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\u9AD8\\u5EA6\\n
    \\n \\n m\\n \\n
    \\n
    \\n
    \\n \\u6C34\\u9762\\u632F\\u5E45\\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\u52A8\\u753B\\u901F\\u5EA6\\n
    \\n \\n \\n
    \\n
    \\n
    \\n \\u6C34\\u9762\\u9891\\u7387\\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2F0ZXJTdXJmYWNlL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1dhdGVyU3VyZmFjZS9fZWxlbWVudC5qcz8zY2QyIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWQjeensDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgbWF4bGVuZ3RoPVwiNDBcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2F0ZXItY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pq5jluqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIi05OTk5OTk5XCIgbWF4PVwiOTk5OTk5OTk5XCIgQG1vZGVsPVwiaGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5rC06Z2i5oyv5bmFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJhbXBsaXR1ZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqjnlLvpgJ/luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1heD1cIjEwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJhbmltYXRpb25TcGVlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7msLTpnaLpopHnjoc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1heD1cIjEwMFwiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIEBtb2RlbD1cImZyZXF1ZW5jeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBc0RBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/WaterSurface/_element.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/WaterSurface/index.js": -/*!********************************************!*\ - !*** ./src/Obj/Base/WaterSurface/index.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Base/WaterSurface/_element.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @description 水面\r\n */\n\n\n\n\n\n\n\nvar WaterSurface = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 水面\r\n * @param options {object} 面属性\r\n * @param options.id {string} 唯一标识\r\n * @param options.show=true {boolean} 显隐\r\n * @param options.name=未命名对象 {string} 名称\r\n * @param {Array.} options.positions 坐标列表\r\n * @param options.positions[].lng {number} 经度\r\n * @param options.positions[].lat {number} 纬度\r\n * @param options.positions[].alt {number} 高度\r\n * @param options.color=rgba(32,67,135,0.5) {string} 颜色\r\n * @param options.frequency=10 {number} 频率\r\n * @param options.animationSpeed=1 {number} 动画速度\r\n * @param options.amplitude=10 {number} 振幅\r\n * */\n function WaterSurface(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WaterSurface);\n _this2 = _callSuper(this, WaterSurface, [sdk, options]);\n _this2.options.name = options.name || '未命名对象';\n _this2.options.color = options.color || \"rgba(32,67,135,0.5)\";\n _this2.options.positions = options.positions || [];\n _this2.options.frequency = options.frequency || 10;\n _this2.options.animationSpeed = options.animationSpeed || 1;\n _this2.options.amplitude = options.amplitude || 10;\n _this2.options.show = options.show || options.show === false ? options.show : true;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n _this2._elms = {};\n _this2.sdk.addIncetance(_this2.options.id, _this2);\n WaterSurface.create(_this2);\n return _this2;\n }\n\n // 创建水面\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(WaterSurface, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WaterSurface, [{\n key: \"color\",\n get: function get() {\n return this.options.color;\n },\n set: function set(v) {\n var _this3 = this;\n this.options.color = v;\n this.entity && (this.entity.appearance.material.uniforms.baseWaterColor = Cesium.Color.fromCssColorString(v));\n if (this._elms.color) {\n this._elms.color.forEach(function (item, i) {\n var picker = new YJColorPicker({\n el: item.el,\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: v,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(c) {\n _this3.color = c;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this3.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n _this3._elms.color[i] = picker;\n });\n }\n }\n }, {\n key: \"frequency\",\n get: function get() {\n return this.options.frequency;\n },\n set: function set(v) {\n this.options.frequency = v;\n this.entity && (this.entity.appearance.material.uniforms.frequency = v * 10);\n this._elms.frequency && this._elms.frequency.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"animationSpeed\",\n get: function get() {\n return this.options.animationSpeed;\n },\n set: function set(v) {\n this.options.animationSpeed = v;\n this.entity && (this.entity.appearance.material.uniforms.animationSpeed = v * 0.01);\n this._elms.animationSpeed && this._elms.animationSpeed.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"amplitude\",\n get: function get() {\n return this.options.amplitude;\n },\n set: function set(v) {\n this.options.amplitude = v;\n this.entity && (this.entity.appearance.material.uniforms.amplitude = v);\n this._elms.amplitude && this._elms.amplitude.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = v;\n var positions = this.options.positions[0];\n var a = Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, v);\n var b = Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, this.entity.originalHeight);\n this.entity.modelMatrix = Cesium.Matrix4.setTranslation(this.entity.modelMatrix, new Cesium.Cartesian3(a.x - b.x, a.y - b.y, a.z - b.z), new Cesium.Matrix4());\n this._elms.height && this._elms.height.forEach(function (item) {\n item.value = v;\n });\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var _this4 = this;\n var state,\n _this,\n contentElm,\n waterColorPicker,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n _this = this;\n this.originalOptions = this.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (!state) {\n _context.next = 19;\n break;\n }\n _context.next = 7;\n return new _Element_Dialog__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk, this.originalOptions, {\n title: '水面属性',\n left: '180px',\n top: '100px',\n confirmCallBack: function confirmCallBack(options) {\n _this4.name = _this4.name.trim();\n if (!_this4.name) {\n _this4.name = '未命名对象';\n }\n _this4.originalOptions = _this4.deepCopyObj(_this4.options);\n _this4._DialogObject.close();\n _this4.Dialog.confirmCallBack && _this4.Dialog.confirmCallBack(_this4.originalOptions);\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(_this4.sdk, _this4.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(_this4.sdk, _this4.options.id);\n },\n resetCallBack: function resetCallBack() {\n _this4.reset();\n _this4.Dialog.resetCallBack && _this4.Dialog.resetCallBack();\n },\n removeCallBack: function removeCallBack() {\n _this4.Dialog.removeCallBack && _this4.Dialog.removeCallBack();\n },\n closeCallBack: function closeCallBack() {\n _this4.reset();\n // this.entity.style = new Cesium.Cesium3DTileStyle({\n // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // show: true,\n // });\n _this4.Dialog.closeCallBack && _this4.Dialog.closeCallBack();\n },\n showCallBack: function showCallBack(show) {\n _this4.show = show;\n _this4.Dialog.showCallBack && _this4.Dialog.showCallBack();\n }\n }, true);\n case 7:\n this._DialogObject = _context.sent;\n this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' water-surface';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_9__[\"html\"])();\n this._DialogObject.contentAppChild(contentElm);\n // 颜色组件\n waterColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName(\"water-color\")[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: this.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n _this4.color = color;\n },\n //点击确认按钮事件回调\n clear: function clear() {\n _this4.color = 'rgba(255,255,255,1)';\n } //点击清空按钮事件回调\n });\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [waterColorPicker];\n _context.next = 19;\n break;\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.entity) {\n return;\n }\n this.name = this.originalOptions.name;\n this.color = this.originalOptions.color;\n this.frequency = this.originalOptions.frequency;\n this.animationSpeed = this.originalOptions.animationSpeed;\n this.amplitude = this.originalOptions.amplitude;\n this.height = this.originalOptions.height;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(this.sdk, this.options.id);\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n rect,\n positions,\n positions84,\n cartesian3,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_14__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 23;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 16;\n break;\n }\n _context2.next = 15;\n return this.getClampToHeight(position);\n case 15:\n position.alt = _context2.sent;\n case 16:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 28;\n break;\n case 23:\n rect = Cesium.Rectangle.fromCartesianArray(this.entity.geometryInstances.geometry._polygonHierarchy.positions);\n positions = this.sdk.viewer.camera.getRectangleCameraCoordinates(rect);\n positions84 = this.cartesian3Towgs84(positions, this.sdk.viewer);\n cartesian3 = Cesium.Cartesian3.fromDegrees(positions84.lng, positions84.lat, positions84.alt + this.height);\n this.sdk.viewer.camera.flyTo({\n orientation: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n },\n destination: cartesian3\n });\n case 28:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 删除\r\n */\n )\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.sdk.viewer.scene.primitives.remove(this.entity);\n this.entity = null;\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n _context3.next = 5;\n return this.sdk.removeIncetance(this.options.id);\n case 5:\n _context3.next = 7;\n return Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(this.sdk, this.options.id);\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"create\",\n value: function create(that) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n var height = positions[0].alt;\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat);\n if (height < positions[i].alt) {\n height = positions[i].alt;\n }\n }\n if (!that.options.height && that.options.height !== 0) {\n that.options.height = height;\n }\n that.entity = that.sdk.viewer.scene.primitives.add(new Cesium.Primitive({\n id: that.options.id,\n show: that.options.show,\n // allowPicking: false,\n asynchronous: false,\n releaseGeometryInstances: false,\n geometryInstances: new Cesium.GeometryInstance({\n name: \"water-surface\",\n geometry: new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)),\n vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,\n height: that.options.height\n // extrudedHeight: 2200,\n // height: 0,\n })\n }),\n appearance: new Cesium.EllipsoidSurfaceAppearance({\n aboveGroud: true,\n material: new Cesium.Material({\n fabric: {\n type: \"Water\",\n uniforms: {\n baseWaterColor: Cesium.Color.fromCssColorString(that.options.color),\n normalMap: that.getSourceRootPath() + '/img/water.png',\n //频率速度设置\n frequency: that.options.frequency * 10,\n animationSpeed: that.options.animationSpeed * 0.01,\n amplitude: that.options.amplitude\n }\n }\n })\n })\n }));\n that.entity.id = that.options.id;\n that.entity.originalHeight = that.options.height;\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_12__[\"syncData\"])(that.sdk, that.options.id);\n if (that.options.show) {\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"setSplitDirection\"])(0, that.options.id);\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (WaterSurface);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvV2F0ZXJTdXJmYWNlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9CYXNlL1dhdGVyU3VyZmFjZS9pbmRleC5qcz80NTllIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZGVzY3JpcHRpb24g5rC06Z2iXHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJztcclxuaW1wb3J0IEJhc2UgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBzZXRTcGxpdERpcmVjdGlvbiwgc3luY1NwbGl0RGF0YSwgc2V0QWN0aXZlSWQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW4nXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5jbGFzcyBXYXRlclN1cmZhY2UgZXh0ZW5kcyBCYXNlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDmsLTpnaJcclxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSDpnaLlsZ7mgKdcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5pZCB7c3RyaW5nfSDllK/kuIDmoIfor4ZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zaG93PXRydWUge2Jvb2xlYW59IOaYvumakFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLm5hbWU95pyq5ZG95ZCN5a+56LGhIHtzdHJpbmd9IOWQjeensFxyXG4gICAqIEBwYXJhbSB7QXJyYXkuPG9iamVjdD59IG9wdGlvbnMucG9zaXRpb25zIOWdkOagh+WIl+ihqFxyXG4gICAqIEBwYXJhbSBvcHRpb25zLnBvc2l0aW9uc1tdLmxuZyB7bnVtYmVyfSDnu4/luqZcclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3NpdGlvbnNbXS5sYXQge251bWJlcn0g57qs5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMucG9zaXRpb25zW10uYWx0IHtudW1iZXJ9IOmrmOW6plxyXG4gICAqIEBwYXJhbSBvcHRpb25zLmNvbG9yPXJnYmEoMzIsNjcsMTM1LDAuNSkge3N0cmluZ30g6aKc6ImyXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuZnJlcXVlbmN5PTEwIHtudW1iZXJ9IOmikeeOh1xyXG4gICAqIEBwYXJhbSBvcHRpb25zLmFuaW1hdGlvblNwZWVkPTEge251bWJlcn0g5Yqo55S76YCf5bqmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMuYW1wbGl0dWRlPTEwIHtudW1iZXJ9IOaMr+W5hVxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSBvcHRpb25zLmNvbG9yIHx8IFwicmdiYSgzMiw2NywxMzUsMC41KVwiXHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb25zID0gb3B0aW9ucy5wb3NpdGlvbnMgfHwgW11cclxuICAgIHRoaXMub3B0aW9ucy5mcmVxdWVuY3kgPSBvcHRpb25zLmZyZXF1ZW5jeSB8fCAxMFxyXG4gICAgdGhpcy5vcHRpb25zLmFuaW1hdGlvblNwZWVkID0gb3B0aW9ucy5hbmltYXRpb25TcGVlZCB8fCAxXHJcbiAgICB0aGlzLm9wdGlvbnMuYW1wbGl0dWRlID0gb3B0aW9ucy5hbXBsaXR1ZGUgfHwgMTBcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLnNob3cgPT09IGZhbHNlKSA/IG9wdGlvbnMuc2hvdyA6IHRydWVcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICB0aGlzLnNkay5hZGRJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkLCB0aGlzKVxyXG4gICAgV2F0ZXJTdXJmYWNlLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuXHJcbiAgLy8g5Yib5bu65rC06Z2iXHJcbiAgc3RhdGljIGNyZWF0ZSh0aGF0KSB7XHJcbiAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgbGV0IGhlaWdodCA9IHBvc2l0aW9uc1swXS5hbHRcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0KVxyXG4gICAgICBpZiAoaGVpZ2h0IDwgcG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgIGhlaWdodCA9IHBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGF0Lm9wdGlvbnMuaGVpZ2h0ICYmIHRoYXQub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgdGhhdC5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgfVxyXG4gICAgdGhhdC5lbnRpdHkgPSB0aGF0LnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQobmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBpZDogdGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgLy8gYWxsb3dQaWNraW5nOiBmYWxzZSxcclxuICAgICAgYXN5bmNocm9ub3VzOiBmYWxzZSxcclxuICAgICAgcmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOiBmYWxzZSxcclxuICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgbmFtZTogXCJ3YXRlci1zdXJmYWNlXCIsXHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uUG9seWdvbkdlb21ldHJ5KHtcclxuICAgICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpKSxcclxuICAgICAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLkVsbGlwc29pZFN1cmZhY2VBcHBlYXJhbmNlLlZFUlRFWF9GT1JNQVQsXHJcbiAgICAgICAgICBoZWlnaHQ6IHRoYXQub3B0aW9ucy5oZWlnaHQsXHJcbiAgICAgICAgICAvLyBleHRydWRlZEhlaWdodDogMjIwMCxcclxuICAgICAgICAgIC8vIGhlaWdodDogMCxcclxuICAgICAgICB9KSxcclxuICAgICAgfSksXHJcbiAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uRWxsaXBzb2lkU3VyZmFjZUFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIGFib3ZlR3JvdWQ6IHRydWUsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uTWF0ZXJpYWwoe1xyXG4gICAgICAgICAgZmFicmljOiB7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiV2F0ZXJcIixcclxuICAgICAgICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICAgICAgICBiYXNlV2F0ZXJDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IpLFxyXG4gICAgICAgICAgICAgIG5vcm1hbE1hcDogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvd2F0ZXIucG5nJyxcclxuICAgICAgICAgICAgICAvL+mikeeOh+mAn+W6puiuvue9rlxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeTogdGhhdC5vcHRpb25zLmZyZXF1ZW5jeSAqIDEwLFxyXG4gICAgICAgICAgICAgIGFuaW1hdGlvblNwZWVkOiB0aGF0Lm9wdGlvbnMuYW5pbWF0aW9uU3BlZWQgKiAwLjAxLFxyXG4gICAgICAgICAgICAgIGFtcGxpdHVkZTogdGhhdC5vcHRpb25zLmFtcGxpdHVkZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pLFxyXG4gICAgfSkpO1xyXG4gICAgdGhhdC5lbnRpdHkuaWQgPSB0aGF0Lm9wdGlvbnMuaWRcclxuICAgIHRoYXQuZW50aXR5Lm9yaWdpbmFsSGVpZ2h0ID0gdGhhdC5vcHRpb25zLmhlaWdodFxyXG4gICAgc3luY0RhdGEodGhhdC5zZGssIHRoYXQub3B0aW9ucy5pZClcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMuc2hvdykge1xyXG5cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24oMCwgdGhhdC5vcHRpb25zLmlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb2xvclxyXG4gIH1cclxuXHJcbiAgc2V0IGNvbG9yKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5jb2xvciA9IHZcclxuICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5hcHBlYXJhbmNlLm1hdGVyaWFsLnVuaWZvcm1zLmJhc2VXYXRlckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh2KSlcclxuICAgIGlmICh0aGlzLl9lbG1zLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgIGxldCBwaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgICBlbDogaXRlbS5lbCxcclxuICAgICAgICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICAgIGRlZmF1bHRDb2xvcjogdixcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwvL+aYr+WQpuemgeatouaJk+W8gOminOiJsumAieaLqeWZqFxyXG4gICAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgICBzdXJlOiAoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gY1xyXG4gICAgICAgICAgfSwvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2xvciA9ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJ1xyXG4gICAgICAgICAgfSwvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fZWxtcy5jb2xvcltpXSA9IHBpY2tlclxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZyZXF1ZW5jeSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZnJlcXVlbmN5XHJcbiAgfVxyXG5cclxuICBzZXQgZnJlcXVlbmN5KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5mcmVxdWVuY3kgPSB2XHJcbiAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuYXBwZWFyYW5jZS5tYXRlcmlhbC51bmlmb3Jtcy5mcmVxdWVuY3kgPSB2ICogMTApXHJcbiAgICB0aGlzLl9lbG1zLmZyZXF1ZW5jeSAmJiB0aGlzLl9lbG1zLmZyZXF1ZW5jeS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGFuaW1hdGlvblNwZWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbmltYXRpb25TcGVlZFxyXG4gIH1cclxuXHJcbiAgc2V0IGFuaW1hdGlvblNwZWVkKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5hbmltYXRpb25TcGVlZCA9IHZcclxuICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5hcHBlYXJhbmNlLm1hdGVyaWFsLnVuaWZvcm1zLmFuaW1hdGlvblNwZWVkID0gdiAqIDAuMDEpXHJcbiAgICB0aGlzLl9lbG1zLmFuaW1hdGlvblNwZWVkICYmIHRoaXMuX2VsbXMuYW5pbWF0aW9uU3BlZWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBhbXBsaXR1ZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFtcGxpdHVkZVxyXG4gIH1cclxuXHJcbiAgc2V0IGFtcGxpdHVkZSh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuYW1wbGl0dWRlID0gdlxyXG4gICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LmFwcGVhcmFuY2UubWF0ZXJpYWwudW5pZm9ybXMuYW1wbGl0dWRlID0gdilcclxuICAgIHRoaXMuX2VsbXMuYW1wbGl0dWRlICYmIHRoaXMuX2VsbXMuYW1wbGl0dWRlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICB9XHJcblxyXG4gIHNldCBoZWlnaHQodikge1xyXG4gICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IHZcclxuICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdXHJcbiAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvc2l0aW9ucy5sbmcsIHBvc2l0aW9ucy5sYXQsIHYpXHJcbiAgICBsZXQgYiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvc2l0aW9ucy5sbmcsIHBvc2l0aW9ucy5sYXQsIHRoaXMuZW50aXR5Lm9yaWdpbmFsSGVpZ2h0KVxyXG4gICAgdGhpcy5lbnRpdHkubW9kZWxNYXRyaXggPSBDZXNpdW0uTWF0cml4NC5zZXRUcmFuc2xhdGlvbih0aGlzLmVudGl0eS5tb2RlbE1hdHJpeCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKGEueCAtIGIueCwgYS55IC0gYi55LCBhLnogLSBiLnopLCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSlcclxuICAgIHRoaXMuX2VsbXMuaGVpZ2h0ICYmIHRoaXMuX2VsbXMuaGVpZ2h0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS52YWx1ZSA9IHZcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24g57yW6L6R5qGGXHJcbiAgICogQHBhcmFtIHN0YXRlPWZhbHNlIHtib29sZWFufSDnirbmgIE6IHRydWXmiZPlvIAsIGZhbHNl5YWz6ZetXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG5cclxuICAgIC8vIGxldCBlbG1zID0gdGhpcy5zZGsudmlld2VyLl9jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWJhc2UtZGlhbG9nJylcclxuICAgIC8vIGZvciAobGV0IGkgPSBlbG1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgIHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLnJlbW92ZUNoaWxkKGVsbXNbaV0pXHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9yaWdpbmFsT3B0aW9ucywge1xyXG4gICAgICAgIHRpdGxlOiAn5rC06Z2i5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAgIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZS50cmltKClcclxuICAgICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfmnKrlkb3lkI3lr7nosaEnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgICAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAgICAgLy8gdGhpcy5lbnRpdHkuc3R5bGUgPSBuZXcgQ2VzaXVtLkNlc2l1bTNEVGlsZVN0eWxlKHtcclxuICAgICAgICAgIC8vICAgY29sb3I6IFwiY29sb3IoJ3JnYmEoMjU1LDI1NSwyNTUsXCIgKyB0aGlzLm5ld0RhdGEudHJhbnNwYXJlbmN5ICsgXCIpJylcIixcclxuICAgICAgICAgIC8vICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jbG9zZUNhbGxCYWNrKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dDYWxsQmFjazogKHNob3cpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvdyA9IHNob3dcclxuICAgICAgICAgIHRoaXMuRGlhbG9nLnNob3dDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2soKVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSlcclxuICAgICAgdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID0gdGhpcy5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyB3YXRlci1zdXJmYWNlJ1xyXG4gICAgICBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIC8vIOminOiJsue7hOS7tlxyXG4gICAgICBsZXQgd2F0ZXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwid2F0ZXItY29sb3JcIilbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICAgICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IHRoaXMuY29sb3IsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLC8v5omT5byA6aKc6Imy6YCJ5oup5Zmo5Yqo55S7XHJcbiAgICAgICAgc3VyZTogKGNvbG9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbG9yID0gY29sb3JcclxuICAgICAgICB9LC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgICB9LC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpXHJcbiAgICAgIHRoaXMuX0V2ZW50QmluZGluZy5vbih0aGlzLCBhbGxfZWxtKVxyXG4gICAgICB0aGlzLl9lbG1zID0gdGhpcy5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAgICAgdGhpcy5fZWxtcy5jb2xvciA9IFt3YXRlckNvbG9yUGlja2VyXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmVudGl0eSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMubmFtZSA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm5hbWVcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5jb2xvclxyXG4gICAgdGhpcy5mcmVxdWVuY3kgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5mcmVxdWVuY3lcclxuICAgIHRoaXMuYW5pbWF0aW9uU3BlZWQgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hbmltYXRpb25TcGVlZFxyXG4gICAgdGhpcy5hbXBsaXR1ZGUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5hbXBsaXR1ZGVcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuaGVpZ2h0XHJcbiAgICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5Yiw5a+55bqU5a6e5L2TXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcmVjdCA9IENlc2l1bS5SZWN0YW5nbGUuZnJvbUNhcnRlc2lhbkFycmF5KHRoaXMuZW50aXR5Lmdlb21ldHJ5SW5zdGFuY2VzLmdlb21ldHJ5Ll9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9ucylcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZ2V0UmVjdGFuZ2xlQ2FtZXJhQ29vcmRpbmF0ZXMocmVjdClcclxuICAgICAgbGV0IHBvc2l0aW9uczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnMsIHRoaXMuc2RrLnZpZXdlcilcclxuICAgICAgdmFyIGNhcnRlc2lhbjMgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnM4NC5sbmcsIHBvc2l0aW9uczg0LmxhdCwgcG9zaXRpb25zODQuYWx0ICsgdGhpcy5oZWlnaHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHtcclxuICAgICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApLFxyXG4gICAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtOTAuMCksXHJcbiAgICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4wKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVzdGluYXRpb246IGNhcnRlc2lhbjNcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmVudGl0eSlcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiAhdGhpcy5fRGlhbG9nT2JqZWN0LmlzRGVzdHJveSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLnNkay5yZW1vdmVJbmNldGFuY2UodGhpcy5vcHRpb25zLmlkKVxyXG4gICAgYXdhaXQgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgV2F0ZXJTdXJmYWNlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeURBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFoQ0E7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFsRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFwRUE7QUFBQTtBQUFBO0FBQUE7QUFzRUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFBQTtBQUFBO0FBbFVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQWlSQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/WaterSurface/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Base/index.js": -/*!*******************************!*\ - !*** ./src/Obj/Base/index.js ***! - \*******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _Global_SplitScreen_ClickCallback__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../Global/SplitScreen/ClickCallback */ \"./src/Global/SplitScreen/ClickCallback/index.js\");\n/* harmony import */ var _Global_MultiViewportMode_ClickCallback__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Global/MultiViewportMode/ClickCallback */ \"./src/Global/MultiViewportMode/ClickCallback/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-12-01 12:12\r\n * @description:index\r\n * @update: 2023-12-01 12:12\r\n */\n\n\n\n\n\n\n\n\nvar Base = /*#__PURE__*/function (_Tools) {\n function Base(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Base);\n _this = _callSuper(this, Base, [sdk, options]);\n if (!sdk || !sdk.viewer) {\n return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(_this);\n }\n // this._splitDirection = -1\n _this.sdk = sdk;\n _this.viewer = sdk.viewer;\n _this.options = _objectSpread({}, options);\n _this.options.id = options.id || _this.randomString();\n _this.entity = null;\n _this.clickCallBack = null;\n _this.rightClickCallBack = null;\n _this.picking = true;\n _this.options.host = _this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_9__[\"getHost\"])();\n // this.options.customView = options.customView ||{\n // relativePosition: undefined,\n // orientation: undefined\n // }\n _this.options.customView = options.customView;\n // this._showView = this.options.showView || 0\n _this.setDefaultValue();\n _this._showView;\n\n // this.sdk.addIncetance(this.options.id, this)\n return _this;\n }\n\n // get splitDirection() {\n // return this._splitDirection\n // }\n\n // set splitDirection(v) {\n // switch (v) {\n // case 1:\n // case '1':\n // this._splitDirection = 1\n // break\n // case -1:\n // case '-1':\n // this._splitDirection = -1\n // break\n // default:\n // this._splitDirection = 0\n // break\n // }\n // setSplitDirection(this._splitDirection, this.options.id)\n // }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Base, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Base, [{\n key: \"showView\",\n get: function get() {\n return this._showView;\n },\n set: function set(v) {\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!sdk2D) {\n this._showView = v;\n if (this.entity) {\n this.entity._showView = v;\n }\n return;\n }\n if (this.sdk === sdk2D) {\n this._showView = 0;\n return;\n }\n if (!this._showView && !this.show) {\n return;\n }\n if (this.sdk === sdk2D) {\n this._showView = 0;\n return;\n }\n if (v != 2 && v != 3) {\n this._showView = 0;\n } else {\n this._showView = v;\n }\n this.isShowView = true;\n\n // if(!this.show) {\n // return\n // }\n\n if (!this._showView) {\n this.show = true;\n } else {\n if (v == 2) {\n this.show = false;\n } else {\n this.show = true;\n }\n }\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n this.label && (this.label.text = v);\n this._elms.name && this._elms.name.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n if (typeof v === \"boolean\") {\n var sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (!this.isShowView || !sdkD) {\n this.options.show = v;\n if (this.originalOptions) {\n this.originalOptions.show = v;\n }\n }\n this.entity && (this.entity._showView = this.showView);\n if (this.type == 'layer') {\n if (this.entity) {\n this.entity._objectState = this.options.show;\n }\n }\n if (!this.showView || this.showView == 3 || !sdkD) {\n this.entity && (this.entity.show = this.options.show);\n if (this.options.label && this.options.label.show && this.label) {\n this.label.show = this.options.show;\n }\n } else {\n this.entity && (this.entity.show = false);\n if (this.options.label && this.options.label.show && this.label) {\n this.label.show = false;\n }\n }\n if (this._DialogObject && this._DialogObject.showBtn) {\n this._DialogObject.showBtn.checked = this.options.show;\n }\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(this.sdk, this.options.id);\n this.isShowView = false;\n if (this.type == 'layer' && sdkD) {\n var layer2d = sdkD.viewer.imageryLayers._layers[this.layerIndex];\n var layer3d = this.entity;\n if (!layer2d) {\n return;\n }\n if (layer3d._objectState) {\n if (!layer3d._showView || layer3d._showView == 2) {\n layer2d.show = true;\n }\n if (layer3d._showView == 3) {\n layer2d.show = false;\n }\n } else {\n layer2d.show = this.options.show;\n }\n }\n } else {\n console.error(\"参数必须为boolean\");\n }\n }\n }, {\n key: \"attributeSelect\",\n get: function get() {\n return [{\n name: '富文本',\n value: '富文本',\n key: 'richText'\n }, {\n name: '链接',\n value: '链接',\n key: 'link'\n }\n // {\n // name: 'IP摄像头',\n // value: 'IP摄像头',\n // key: 'camera'\n // },\n // {\n // name: 'ISC摄像头',\n // value: 'ISC摄像头',\n // key: 'isc'\n // },\n // {\n // name: '传感器',\n // value: '传感器',\n // key: 'sensor'\n // },\n // {\n // name: '全景图',\n // value: '全景图',\n // key: 'vr'\n // },\n // {\n // name: '物资',\n // value: '物资',\n // key: 'goods'\n // },\n ];\n }\n }, {\n key: \"display\",\n value: function display() {\n this.show = true;\n }\n }, {\n key: \"hide\",\n value: function hide() {\n this.show = false;\n }\n\n /**\r\n * 闪烁\r\n * @param {number} times 闪烁一次所需时间\r\n * @param {number} number 闪烁次数\r\n */\n }, {\n key: \"flicker\",\n value: function flicker() {\n var _this2 = this;\n var times = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 500;\n var number = arguments.length > 1 ? arguments[1] : undefined;\n if (this.flickerAnimate) {\n TWEEN.remove(this.flickerAnimate);\n }\n this.flickerAnimate = new TWEEN.Tween({\n degree: 1\n }).to({\n degree: 0\n }, times / 2).easing(TWEEN.Easing.Linear.None).repeat(number || number === 0 ? number * 2 - 1 : Infinity).yoyo(true).onUpdate(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_this2.sdk.viewer) {\n _context.next = 3;\n break;\n }\n TWEEN.remove(_this2.flickerAnimate);\n return _context.abrupt(\"return\");\n case 3:\n if (_this2.show) {\n if (r.degree === 1) {\n _this2.entity && (_this2.entity.show = true);\n _this2.labelShow && _this2.label && (_this2.label.show = true);\n _this2.text && _this2.text && (_this2.text.show = true);\n }\n if (r.degree === 0) {\n _this2.entity && (_this2.entity.show = false);\n _this2.labelShow && _this2.label && (_this2.label.show = false);\n _this2.text && _this2.text && (_this2.text.show = false);\n }\n }\n case 4:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()).onComplete(function (d) {\n TWEEN.remove(_this2.flickerAnimate);\n _this2.flickerAnimate = undefined;\n }).start();\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2() {\n var options,\n orientation,\n lng,\n lat,\n alt,\n destination,\n position,\n range,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n if (!this._error) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_15__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context2.next = 25;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position && Object.prototype.toString.call(this.options.position) === '[object Object]') {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.line && this.options.line.positions) {\n position = _objectSpread({}, this.options.line.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else if (this.geojson) {\n range = turf.bbox(this.geojson);\n position = {\n lng: range[0],\n lat: range[1]\n };\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context2.next = 18;\n break;\n }\n _context2.next = 17;\n return this.getClampToHeight(position);\n case 17:\n position.alt = _context2.sent;\n case 18:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context2.next = 26;\n break;\n case 25:\n this.sdk.viewer.flyTo(this.entity, {\n offset: options.orientation || {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-60.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.sdk.removeIncetance(this.options.id);\n case 2:\n this.event && this.event.destroy();\n this.tip && this.tip.destroy();\n Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"syncData\"])(this.sdk, this.options.id);\n Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"syncSplitData\"])(this.sdk, this.options.id);\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }()\n }, {\n key: \"onClick\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n var sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"getSdk\"])().sdkD;\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (sdkD && this.sdk === sdkD) {\n if (this.clickCallBack == null && this.options && this.options.id) {\n Object(_Global_SplitScreen_ClickCallback__WEBPACK_IMPORTED_MODULE_11__[\"regLeftClickCallback\"])(this.options.id, this.leftClickCB, this);\n }\n } else if (sdk2D && this.sdk === sdk2D) {\n if (this.clickCallBack == null && this.options && this.options.id) {\n Object(_Global_MultiViewportMode_ClickCallback__WEBPACK_IMPORTED_MODULE_12__[\"regLeftClickCallback\"])(this.options.id, this.leftClickCB, this);\n }\n } else {\n if (this.clickCallBack == null && this.options && this.options.id) {\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"regLeftClickCallback\"])(this.options.id, this.leftClickCB, this);\n }\n }\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"onRightClick\",\n get: function get() {\n return this.rightClickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n var sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"getSdk\"])().sdkD;\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (sdkD && this.sdk === sdkD) {\n if (this.rightClickCallBack == null && this.entity && this.entity.id) {\n Object(_Global_SplitScreen_ClickCallback__WEBPACK_IMPORTED_MODULE_11__[\"regRightClickCallback\"])(this.entity.id, this.rightClickCB, this);\n }\n } else if (sdk2D && this.sdk === sdk2D) {\n if (this.clickCallBack == null && this.options && this.options.id) {\n Object(_Global_MultiViewportMode_ClickCallback__WEBPACK_IMPORTED_MODULE_12__[\"regRightClickCallback\"])(this.options.id, this.leftClickCB, this);\n }\n } else {\n if (this.rightClickCallBack == null && this.entity && this.entity.id) {\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"regRightClickCallback\"])(this.entity.id, this.rightClickCB, this);\n }\n }\n this.rightClickCallBack = val;\n }\n }\n }, {\n key: \"onMouseMove\",\n get: function get() {\n return this.mouseMoveCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n var sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_13__[\"getSdk\"])().sdkD;\n var sdk2D = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_14__[\"getSdk\"])().sdkD;\n if (sdkD && this.sdk === sdkD) {\n if (this.mouseMoveCallBack == null && this.entity && this.entity.id) {\n Object(_Global_SplitScreen_ClickCallback__WEBPACK_IMPORTED_MODULE_11__[\"regMoveCallback\"])(this.entity.id, this.mouseMoveCB, this);\n }\n } else if (sdk2D && this.sdk === sdk2D) {\n if (this.clickCallBack == null && this.options && this.options.id) {\n Object(_Global_MultiViewportMode_ClickCallback__WEBPACK_IMPORTED_MODULE_12__[\"regMoveCallback\"])(this.options.id, this.leftClickCB, this);\n }\n } else {\n if (this.mouseMoveCallBack == null && this.entity && this.entity.id) {\n Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"regMoveCallback\"])(this.entity.id, this.mouseMoveCB, this);\n }\n }\n this.mouseMoveCallBack = val;\n }\n }\n }, {\n key: \"customView\",\n get: function get() {\n return this.options.customView;\n }\n\n // 设置视角\n }, {\n key: \"setCustomView\",\n value: function () {\n var _setCustomView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee4(val) {\n var camera, cameraPosition84, position, relativePosition, range;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!val) {\n _context4.next = 4;\n break;\n }\n this.options.customView = val;\n _context4.next = 16;\n break;\n case 4:\n camera = this.sdk.viewer.camera;\n cameraPosition84 = this.cartesian3Towgs84(camera.position, this.sdk.viewer);\n position = {\n lng: 0,\n lat: 0\n };\n relativePosition = _objectSpread({}, cameraPosition84);\n if (this.options.position && Object.prototype.toString.call(this.options.position) === '[object Object]') {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.line && this.options.line.positions) {\n position = _objectSpread({}, this.options.line.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else if (this.geojson) {\n range = turf.bbox(this.geojson);\n position = {\n lng: range[0],\n lat: range[1]\n };\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context4.next = 13;\n break;\n }\n _context4.next = 12;\n return this.getClampToHeight(position);\n case 12:\n position.alt = _context4.sent;\n case 13:\n relativePosition = {\n lng: cameraPosition84.lng - position.lng,\n lat: cameraPosition84.lat - position.lat,\n alt: cameraPosition84.alt - position.alt\n };\n this.options.customView = {\n orientation: {\n heading: Cesium.Math.toDegrees(camera.heading),\n pitch: Cesium.Math.toDegrees(camera.pitch),\n roll: Cesium.Math.toDegrees(camera.roll)\n },\n relativePosition: relativePosition\n };\n this.originalOptions && (this.originalOptions.customView = this.options.customView);\n case 16:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function setCustomView(_x3) {\n return _setCustomView.apply(this, arguments);\n }\n return setCustomView;\n }() // 重置视角\n }, {\n key: \"resetCustomView\",\n value: function resetCustomView() {\n this.options.customView = {\n relativePosition: undefined,\n orientation: undefined\n };\n }\n\n //每个节点的编辑页面\n }, {\n key: \"edit\",\n value: function edit() {}\n }, {\n key: \"leftClickCB\",\n value: function leftClickCB(mo, id, p, that) {\n if (that.clickCallBack && typeof that.clickCallBack === 'function') {\n that.clickCallBack(mo, id, p);\n }\n }\n }, {\n key: \"rightClickCB\",\n value: function rightClickCB(mo, id, p, that) {\n if (that.rightClickCallBack && typeof that.rightClickCallBack === 'function') {\n that.rightClickCallBack(mo, id, p);\n }\n }\n }, {\n key: \"mouseMoveCB\",\n value: function mouseMoveCB(mo, id, p, that) {\n if (that.mouseMoveCallBack && typeof that.mouseMoveCallBack === 'function') {\n that.mouseMoveCallBack(mo, id, p);\n }\n }\n }, {\n key: \"getGuid\",\n value: function getGuid() {\n return Cesium.createGuid();\n }\n }, {\n key: \"setDefaultValue\",\n value: function setDefaultValue() {\n var _this$options$id, _this$options$show, _this$options$name;\n this.options.id = (_this$options$id = this.options.id) !== null && _this$options$id !== void 0 ? _this$options$id : this.getGuid();\n this.options.show = (_this$options$show = this.options.show) !== null && _this$options$show !== void 0 ? _this$options$show : true;\n this.options.name = (_this$options$name = this.options.name) !== null && _this$options$name !== void 0 ? _this$options$name : \"未命名对象\";\n }\n }, {\n key: \"start\",\n value: function start() {}\n }, {\n key: \"end\",\n value: function end() {}\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Base);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0Jhc2UvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0Jhc2UvaW5kZXguanM/ODhjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTItMDEgMTI6MTJcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMi0wMSAxMjoxMlxyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBnZXRIb3N0LCBnZXRUb2tlbiB9IGZyb20gXCIuLi8uLi9vblwiO1xyXG5pbXBvcnQgeyByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCByZWdNb3ZlQ2FsbGJhY2sgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL0NsaWNrQ2FsbGJhY2tcIjtcclxuaW1wb3J0IHsgcmVnTGVmdENsaWNrQ2FsbGJhY2sgYXMgcmVnTGVmdENsaWNrQ2FsbGJhY2syLCByZWdSaWdodENsaWNrQ2FsbGJhY2sgYXMgcmVnUmlnaHRDbGlja0NhbGxiYWNrMiwgcmVnTW92ZUNhbGxiYWNrIGFzIHJlZ01vdmVDYWxsYmFjazIgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuL0NsaWNrQ2FsbGJhY2tcIjtcclxuaW1wb3J0IHsgcmVnTGVmdENsaWNrQ2FsbGJhY2sgYXMgcmVnTGVmdENsaWNrQ2FsbGJhY2szLCByZWdSaWdodENsaWNrQ2FsbGJhY2sgYXMgcmVnUmlnaHRDbGlja0NhbGxiYWNrMywgcmVnTW92ZUNhbGxiYWNrIGFzIHJlZ01vdmVDYWxsYmFjazMgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL0NsaWNrQ2FsbGJhY2tcIjtcclxuaW1wb3J0IHsgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIGdldFNkayB9IGZyb20gXCIuLi8uLi9HbG9iYWwvU3BsaXRTY3JlZW5cIjtcclxuaW1wb3J0IHsgc3luY0RhdGEsIGdldFNkayBhcyBnZXQyRFNkayB9IGZyb20gJy4uLy4uL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZSdcclxuaW1wb3J0IHsgc2V0QWN0aXZlVmlld2VyLCBjbG9zZVJvdGF0ZUFyb3VuZCwgY2xvc2VWaWV3Rm9sbG93IH0gZnJvbSAnLi4vLi4vR2xvYmFsL2dsb2JhbCdcclxuXHJcbmNsYXNzIEJhc2UgZXh0ZW5kcyBUb29scyB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIC8vIHRoaXMuX3NwbGl0RGlyZWN0aW9uID0gLTFcclxuICAgIHRoaXMuc2RrID0gc2RrXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XHJcbiAgICB0aGlzLm9wdGlvbnMuaWQgPSBvcHRpb25zLmlkIHx8IHRoaXMucmFuZG9tU3RyaW5nKClcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgdGhpcy5jbGlja0NhbGxCYWNrID0gbnVsbFxyXG4gICAgdGhpcy5yaWdodENsaWNrQ2FsbEJhY2sgPSBudWxsXHJcbiAgICB0aGlzLnBpY2tpbmcgPSB0cnVlXHJcbiAgICB0aGlzLm9wdGlvbnMuaG9zdCA9IHRoaXMub3B0aW9ucy5ob3N0IHx8IGdldEhvc3QoKVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgPSBvcHRpb25zLmN1c3RvbVZpZXcgfHx7XHJcbiAgICAvLyAgIHJlbGF0aXZlUG9zaXRpb246IHVuZGVmaW5lZCxcclxuICAgIC8vICAgb3JpZW50YXRpb246IHVuZGVmaW5lZFxyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgPSBvcHRpb25zLmN1c3RvbVZpZXdcclxuICAgIC8vIHRoaXMuX3Nob3dWaWV3ID0gdGhpcy5vcHRpb25zLnNob3dWaWV3IHx8IDBcclxuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKClcclxuICAgIHRoaXMuX3Nob3dWaWV3XHJcblxyXG4gICAgLy8gdGhpcy5zZGsuYWRkSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZCwgdGhpcylcclxuICB9XHJcblxyXG4gIC8vIGdldCBzcGxpdERpcmVjdGlvbigpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLl9zcGxpdERpcmVjdGlvblxyXG4gIC8vIH1cclxuXHJcbiAgLy8gc2V0IHNwbGl0RGlyZWN0aW9uKHYpIHtcclxuICAvLyAgIHN3aXRjaCAodikge1xyXG4gIC8vICAgICBjYXNlIDE6XHJcbiAgLy8gICAgIGNhc2UgJzEnOlxyXG4gIC8vICAgICAgIHRoaXMuX3NwbGl0RGlyZWN0aW9uID0gMVxyXG4gIC8vICAgICAgIGJyZWFrXHJcbiAgLy8gICAgIGNhc2UgLTE6XHJcbiAgLy8gICAgIGNhc2UgJy0xJzpcclxuICAvLyAgICAgICB0aGlzLl9zcGxpdERpcmVjdGlvbiA9IC0xXHJcbiAgLy8gICAgICAgYnJlYWtcclxuICAvLyAgICAgZGVmYXVsdDpcclxuICAvLyAgICAgICB0aGlzLl9zcGxpdERpcmVjdGlvbiA9IDBcclxuICAvLyAgICAgICBicmVha1xyXG4gIC8vICAgfVxyXG4gIC8vICAgc2V0U3BsaXREaXJlY3Rpb24odGhpcy5fc3BsaXREaXJlY3Rpb24sIHRoaXMub3B0aW9ucy5pZClcclxuICAvLyB9XHJcblxyXG4gIGdldCBzaG93VmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93Vmlld1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3dWaWV3KHYpIHtcclxuXHJcblxyXG4gICAgbGV0IHNkazJEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICBpZiAoIXNkazJEKSB7XHJcbiAgICAgIHRoaXMuX3Nob3dWaWV3ID0gdlxyXG4gICAgICBpZiAodGhpcy5lbnRpdHkpIHtcclxuICAgICAgICB0aGlzLmVudGl0eS5fc2hvd1ZpZXcgPSB2XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZGsgPT09IHNkazJEKSB7XHJcbiAgICAgIHRoaXMuX3Nob3dWaWV3ID0gMFxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fc2hvd1ZpZXcgJiYgIXRoaXMuc2hvdykge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNkayA9PT0gc2RrMkQpIHtcclxuICAgICAgdGhpcy5fc2hvd1ZpZXcgPSAwXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKHYgIT0gMiAmJiB2ICE9IDMpIHtcclxuICAgICAgdGhpcy5fc2hvd1ZpZXcgPSAwXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fc2hvd1ZpZXcgPSB2XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1Nob3dWaWV3ID0gdHJ1ZVxyXG5cclxuICAgIC8vIGlmKCF0aGlzLnNob3cpIHtcclxuICAgIC8vICAgcmV0dXJuXHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9zaG93Vmlldykge1xyXG4gICAgICB0aGlzLnNob3cgPSB0cnVlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHYgPT0gMikge1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5uYW1lXHJcbiAgfVxyXG4gIHNldCBuYW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gdlxyXG4gICAgdGhpcy5sYWJlbCAmJiAodGhpcy5sYWJlbC50ZXh0ID0gdilcclxuICAgIHRoaXMuX2VsbXMubmFtZSAmJiB0aGlzLl9lbG1zLm5hbWUuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG5cclxuICBzZXQgc2hvdyh2KSB7XHJcbiAgICBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgICAgIGlmICghdGhpcy5pc1Nob3dWaWV3IHx8ICFzZGtEKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxPcHRpb25zKSB7XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucy5zaG93ID0gdlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVudGl0eSAmJiAodGhpcy5lbnRpdHkuX3Nob3dWaWV3ID0gdGhpcy5zaG93VmlldylcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnbGF5ZXInKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5KSB7XHJcbiAgICAgICAgICB0aGlzLmVudGl0eS5fb2JqZWN0U3RhdGUgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuc2hvd1ZpZXcgfHwgdGhpcy5zaG93VmlldyA9PSAzIHx8ICFzZGtEKSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LnNob3cgPSB0aGlzLm9wdGlvbnMuc2hvdylcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsICYmIHRoaXMub3B0aW9ucy5sYWJlbC5zaG93ICYmIHRoaXMubGFiZWwpIHtcclxuICAgICAgICAgIHRoaXMubGFiZWwuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5zaG93ID0gZmFsc2UpXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbCAmJiB0aGlzLm9wdGlvbnMubGFiZWwuc2hvdyAmJiB0aGlzLmxhYmVsKSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3Quc2hvd0J0bikge1xyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5zaG93QnRuLmNoZWNrZWQgPSB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICB0aGlzLmlzU2hvd1ZpZXcgPSBmYWxzZVxyXG5cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PSAnbGF5ZXInICYmIHNka0QpIHtcclxuICAgICAgICBsZXQgbGF5ZXIyZCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1t0aGlzLmxheWVySW5kZXhdXHJcbiAgICAgICAgbGV0IGxheWVyM2QgPSB0aGlzLmVudGl0eVxyXG5cclxuICAgICAgICBpZiAoIWxheWVyMmQpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGF5ZXIzZC5fb2JqZWN0U3RhdGUpIHtcclxuICAgICAgICAgIGlmICghbGF5ZXIzZC5fc2hvd1ZpZXcgfHwgbGF5ZXIzZC5fc2hvd1ZpZXcgPT0gMikge1xyXG4gICAgICAgICAgICBsYXllcjJkLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAobGF5ZXIzZC5fc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICAgICAgICBsYXllcjJkLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxheWVyMmQuc2hvdyA9IHRoaXMub3B0aW9ucy5zaG93XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi5Y+C5pWw5b+F6aG75Li6Ym9vbGVhblwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dHJpYnV0ZVNlbGVjdCgpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAn5a+M5paH5pysJyxcclxuICAgICAgICB2YWx1ZTogJ+WvjOaWh+acrCcsXHJcbiAgICAgICAga2V5OiAncmljaFRleHQnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAn6ZO+5o6lJyxcclxuICAgICAgICB2YWx1ZTogJ+mTvuaOpScsXHJcbiAgICAgICAga2V5OiAnbGluaydcclxuICAgICAgfSxcclxuICAgICAgLy8ge1xyXG4gICAgICAvLyAgIG5hbWU6ICdJUOaRhOWDj+WktCcsXHJcbiAgICAgIC8vICAgdmFsdWU6ICdJUOaRhOWDj+WktCcsXHJcbiAgICAgIC8vICAga2V5OiAnY2FtZXJhJ1xyXG4gICAgICAvLyB9LFxyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAgbmFtZTogJ0lTQ+aRhOWDj+WktCcsXHJcbiAgICAgIC8vICAgdmFsdWU6ICdJU0PmkYTlg4/lpLQnLFxyXG4gICAgICAvLyAgIGtleTogJ2lzYydcclxuICAgICAgLy8gfSxcclxuICAgICAgLy8ge1xyXG4gICAgICAvLyAgIG5hbWU6ICfkvKDmhJ/lmagnLFxyXG4gICAgICAvLyAgIHZhbHVlOiAn5Lyg5oSf5ZmoJyxcclxuICAgICAgLy8gICBrZXk6ICdzZW5zb3InXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIC8vIHtcclxuICAgICAgLy8gICBuYW1lOiAn5YWo5pmv5Zu+JyxcclxuICAgICAgLy8gICB2YWx1ZTogJ+WFqOaZr+WbvicsXHJcbiAgICAgIC8vICAga2V5OiAndnInXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIC8vIHtcclxuICAgICAgLy8gICBuYW1lOiAn54mp6LWEJyxcclxuICAgICAgLy8gICB2YWx1ZTogJ+eJqei1hCcsXHJcbiAgICAgIC8vICAga2V5OiAnZ29vZHMnXHJcbiAgICAgIC8vIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBkaXNwbGF5KCkge1xyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDpl6rng4FcclxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZXMg6Zeq54OB5LiA5qyh5omA6ZyA5pe26Ze0XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciDpl6rng4HmrKHmlbBcclxuICAgKi9cclxuICBmbGlja2VyKHRpbWVzID0gNTAwLCBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmZsaWNrZXJBbmltYXRlKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLmZsaWNrZXJBbmltYXRlKVxyXG4gICAgfVxyXG4gICAgdGhpcy5mbGlja2VyQW5pbWF0ZSA9IG5ldyBUV0VFTi5Ud2Vlbih7IGRlZ3JlZTogMSB9KS50byh7IGRlZ3JlZTogMCB9LCB0aW1lcyAvIDIpLmVhc2luZyhUV0VFTi5FYXNpbmcuTGluZWFyLk5vbmUpLnJlcGVhdCgobnVtYmVyIHx8IG51bWJlciA9PT0gMCkgPyAobnVtYmVyICogMikgLSAxIDogSW5maW5pdHkpLnlveW8odHJ1ZSkub25VcGRhdGUoYXN5bmMgKHIsIGEpID0+IHtcclxuICAgICAgLy8gdGhpcy5lbnRpdHkuYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwke3IuZGVncmVlfSlgKVxyXG4gICAgICBpZiAoIXRoaXMuc2RrLnZpZXdlcikge1xyXG4gICAgICAgIFRXRUVOLnJlbW92ZSh0aGlzLmZsaWNrZXJBbmltYXRlKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3cpIHtcclxuICAgICAgICBpZiAoci5kZWdyZWUgPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5ICYmICh0aGlzLmVudGl0eS5zaG93ID0gdHJ1ZSlcclxuICAgICAgICAgIHRoaXMubGFiZWxTaG93ICYmIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICYmICh0aGlzLnRleHQuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyLmRlZ3JlZSA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5lbnRpdHkgJiYgKHRoaXMuZW50aXR5LnNob3cgPSBmYWxzZSlcclxuICAgICAgICAgIHRoaXMubGFiZWxTaG93ICYmIHRoaXMubGFiZWwgJiYgKHRoaXMubGFiZWwuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAmJiAodGhpcy50ZXh0LnNob3cgPSBmYWxzZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pLm9uQ29tcGxldGUoKGQpID0+IHtcclxuICAgICAgVFdFRU4ucmVtb3ZlKHRoaXMuZmxpY2tlckFuaW1hdGUpXHJcbiAgICAgIHRoaXMuZmxpY2tlckFuaW1hdGUgPSB1bmRlZmluZWRcclxuICAgIH0pLnN0YXJ0KClcclxuICB9XHJcblxyXG4gIGFzeW5jIGZseVRvKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgaWYgKHRoaXMuX2Vycm9yKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgc2V0QWN0aXZlVmlld2VyKDApXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZCh0aGlzLnNkaylcclxuICAgIGNsb3NlVmlld0ZvbGxvdyh0aGlzLnNkaylcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgJiYgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbiAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbikge1xyXG4gICAgICBsZXQgb3JpZW50YXRpb24gPSB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLmhlYWRpbmcgfHwgMC4wKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uLnBpdGNoIHx8IC02MC4wKSxcclxuICAgICAgICByb2xsOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucm9sbCB8fCAwLjApXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZ1xyXG4gICAgICBsZXQgbGF0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5sYXRcclxuICAgICAgbGV0IGFsdCA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24uYWx0XHJcbiAgICAgIGxldCBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcblxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB7IGxuZzogMCwgbGF0OiAwIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy5vcHRpb25zLnBvc2l0aW9uKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5saW5lICYmIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5nZW9qc29uKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlID0gdHVyZi5iYm94KHRoaXMuZ2VvanNvbik7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IGxuZzogcmFuZ2VbMF0sIGxhdDogcmFuZ2VbMV0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuZmx5VG8odGhpcy5lbnRpdHksIHtcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbnMub3JpZW50YXRpb24gfHwge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC02MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zZGsucmVtb3ZlSW5jZXRhbmNlKHRoaXMub3B0aW9ucy5pZClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgc3luY0RhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICAgIHN5bmNTcGxpdERhdGEodGhpcy5zZGssIHRoaXMub3B0aW9ucy5pZClcclxuICB9XHJcblxyXG4gIGdldCBvbkNsaWNrKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpY2tDYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgc2V0IG9uQ2xpY2sodmFsKSB7XHJcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc29sZS5lcnJvcigndmFsOicsIHZhbCwgJ+S4jeaYr+S4gOS4qmZ1bmN0aW9uJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gICAgICBsZXQgc2RrMkQgPSBnZXQyRFNkaygpLnNka0RcclxuICAgICAgaWYgKHNka0QgJiYgdGhpcy5zZGsgPT09IHNka0QpIHtcclxuICAgICAgICBpZiAodGhpcy5jbGlja0NhbGxCYWNrID09IG51bGwgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgICAgcmVnTGVmdENsaWNrQ2FsbGJhY2syKHRoaXMub3B0aW9ucy5pZCwgdGhpcy5sZWZ0Q2xpY2tDQiwgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoc2RrMkQgJiYgdGhpcy5zZGsgPT09IHNkazJEKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xpY2tDYWxsQmFjayA9PSBudWxsICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWQpIHtcclxuICAgICAgICAgIHJlZ0xlZnRDbGlja0NhbGxiYWNrMyh0aGlzLm9wdGlvbnMuaWQsIHRoaXMubGVmdENsaWNrQ0IsIHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNsaWNrQ2FsbEJhY2sgPT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmlkKSB7XHJcbiAgICAgICAgICByZWdMZWZ0Q2xpY2tDYWxsYmFjayh0aGlzLm9wdGlvbnMuaWQsIHRoaXMubGVmdENsaWNrQ0IsIHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjayA9IHZhbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG9uUmlnaHRDbGljaygpIHtcclxuICAgIHJldHVybiB0aGlzLnJpZ2h0Q2xpY2tDYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgc2V0IG9uUmlnaHRDbGljayh2YWwpIHtcclxuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd2YWw6JywgdmFsLCAn5LiN5piv5LiA5LiqZnVuY3Rpb24nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNka0QgPSBnZXRTZGsoKS5zZGtEXHJcbiAgICAgIGxldCBzZGsyRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgICBpZiAoc2RrRCAmJiB0aGlzLnNkayA9PT0gc2RrRCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJpZ2h0Q2xpY2tDYWxsQmFjayA9PSBudWxsICYmIHRoaXMuZW50aXR5ICYmIHRoaXMuZW50aXR5LmlkKSB7XHJcbiAgICAgICAgICByZWdSaWdodENsaWNrQ2FsbGJhY2syKHRoaXMuZW50aXR5LmlkLCB0aGlzLnJpZ2h0Q2xpY2tDQiwgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoc2RrMkQgJiYgdGhpcy5zZGsgPT09IHNkazJEKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xpY2tDYWxsQmFjayA9PSBudWxsICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWQpIHtcclxuICAgICAgICAgIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjazModGhpcy5vcHRpb25zLmlkLCB0aGlzLmxlZnRDbGlja0NCLCB0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5yaWdodENsaWNrQ2FsbEJhY2sgPT0gbnVsbCAmJiB0aGlzLmVudGl0eSAmJiB0aGlzLmVudGl0eS5pZCkge1xyXG4gICAgICAgICAgcmVnUmlnaHRDbGlja0NhbGxiYWNrKHRoaXMuZW50aXR5LmlkLCB0aGlzLnJpZ2h0Q2xpY2tDQiwgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yaWdodENsaWNrQ2FsbEJhY2sgPSB2YWxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBvbk1vdXNlTW92ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1vdXNlTW92ZUNhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBzZXQgb25Nb3VzZU1vdmUodmFsKSB7XHJcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc29sZS5lcnJvcigndmFsOicsIHZhbCwgJ+S4jeaYr+S4gOS4qmZ1bmN0aW9uJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gICAgICBsZXQgc2RrMkQgPSBnZXQyRFNkaygpLnNka0RcclxuICAgICAgaWYgKHNka0QgJiYgdGhpcy5zZGsgPT09IHNka0QpIHtcclxuICAgICAgICBpZiAodGhpcy5tb3VzZU1vdmVDYWxsQmFjayA9PSBudWxsICYmIHRoaXMuZW50aXR5ICYmIHRoaXMuZW50aXR5LmlkKSB7XHJcbiAgICAgICAgICByZWdNb3ZlQ2FsbGJhY2syKHRoaXMuZW50aXR5LmlkLCB0aGlzLm1vdXNlTW92ZUNCLCB0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChzZGsyRCAmJiB0aGlzLnNkayA9PT0gc2RrMkQpIHtcclxuICAgICAgICBpZiAodGhpcy5jbGlja0NhbGxCYWNrID09IG51bGwgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgICAgcmVnTW92ZUNhbGxiYWNrMyh0aGlzLm9wdGlvbnMuaWQsIHRoaXMubGVmdENsaWNrQ0IsIHRoaXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm1vdXNlTW92ZUNhbGxCYWNrID09IG51bGwgJiYgdGhpcy5lbnRpdHkgJiYgdGhpcy5lbnRpdHkuaWQpIHtcclxuICAgICAgICAgIHJlZ01vdmVDYWxsYmFjayh0aGlzLmVudGl0eS5pZCwgdGhpcy5tb3VzZU1vdmVDQiwgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZU1vdmVDYWxsQmFjayA9IHZhbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGN1c3RvbVZpZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXdcclxuICB9XHJcblxyXG4gIC8vIOiuvue9ruinhuinklxyXG4gIGFzeW5jIHNldEN1c3RvbVZpZXcodmFsKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ID0gdmFsXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGNhbWVyYSA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmFcclxuICAgICAgbGV0IGNhbWVyYVBvc2l0aW9uODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhbWVyYS5wb3NpdGlvbiwgdGhpcy5zZGsudmlld2VyKVxyXG5cclxuICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IDAsIGxhdDogMCB9XHJcbiAgICAgIGxldCByZWxhdGl2ZVBvc2l0aW9uID0geyAuLi5jYW1lcmFQb3NpdGlvbjg0IH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy5vcHRpb25zLnBvc2l0aW9uKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLnBvc2l0aW9uIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5saW5lICYmIHRoaXMub3B0aW9ucy5saW5lLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnNbMF0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5jZW50ZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmNlbnRlciB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnN0YXJ0KSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5zdGFydCB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5nZW9qc29uKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlID0gdHVyZi5iYm94KHRoaXMuZ2VvanNvbik7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IGxuZzogcmFuZ2VbMF0sIGxhdDogcmFuZ2VbMV0gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICByZWxhdGl2ZVBvc2l0aW9uID0ge1xyXG4gICAgICAgIGxuZzogY2FtZXJhUG9zaXRpb244NC5sbmcgLSBwb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgbGF0OiBjYW1lcmFQb3NpdGlvbjg0LmxhdCAtIHBvc2l0aW9uLmxhdCxcclxuICAgICAgICBhbHQ6IGNhbWVyYVBvc2l0aW9uODQuYWx0IC0gcG9zaXRpb24uYWx0XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3ID0ge1xyXG4gICAgICAgIG9yaWVudGF0aW9uOiB7IGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYW1lcmEuaGVhZGluZyksIHBpdGNoOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FtZXJhLnBpdGNoKSwgcm9sbDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhbWVyYS5yb2xsKSB9LFxyXG4gICAgICAgIHJlbGF0aXZlUG9zaXRpb246IHJlbGF0aXZlUG9zaXRpb25cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyAmJiAodGhpcy5vcmlnaW5hbE9wdGlvbnMuY3VzdG9tVmlldyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g6YeN572u6KeG6KeSXHJcbiAgcmVzZXRDdXN0b21WaWV3KCkge1xyXG4gICAgdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcgPSB7XHJcbiAgICAgIHJlbGF0aXZlUG9zaXRpb246IHVuZGVmaW5lZCxcclxuICAgICAgb3JpZW50YXRpb246IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8v5q+P5Liq6IqC54K555qE57yW6L6R6aG16Z2iXHJcbiAgZWRpdCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBsZWZ0Q2xpY2tDQihtbywgaWQsIHAsIHRoYXQpIHtcclxuICAgIGlmICh0aGF0LmNsaWNrQ2FsbEJhY2sgJiYgdHlwZW9mIHRoYXQuY2xpY2tDYWxsQmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aGF0LmNsaWNrQ2FsbEJhY2sobW8sIGlkLCBwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmlnaHRDbGlja0NCKG1vLCBpZCwgcCwgdGhhdCkge1xyXG4gICAgaWYgKHRoYXQucmlnaHRDbGlja0NhbGxCYWNrICYmIHR5cGVvZiB0aGF0LnJpZ2h0Q2xpY2tDYWxsQmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aGF0LnJpZ2h0Q2xpY2tDYWxsQmFjayhtbywgaWQsIHApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3VzZU1vdmVDQihtbywgaWQsIHAsIHRoYXQpIHtcclxuICAgIGlmICh0aGF0Lm1vdXNlTW92ZUNhbGxCYWNrICYmIHR5cGVvZiB0aGF0Lm1vdXNlTW92ZUNhbGxCYWNrID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRoYXQubW91c2VNb3ZlQ2FsbEJhY2sobW8sIGlkLCBwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R3VpZCgpIHtcclxuICAgIHJldHVybiBDZXNpdW0uY3JlYXRlR3VpZCgpXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuaWQgPSB0aGlzLm9wdGlvbnMuaWQgPz8gdGhpcy5nZXRHdWlkKClcclxuICAgIHRoaXMub3B0aW9ucy5zaG93ID0gdGhpcy5vcHRpb25zLnNob3cgPz8gdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZSA/PyBcIuacquWRveWQjeWvueixoVwiXHJcbiAgfVxyXG5cclxuICBzdGFydCgpIHsgfVxyXG5cclxuICBlbmQoKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBekVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF4REE7QUFBQTtBQUFBO0FBQUE7QUEwREE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Base/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/Dialog/eventBinding.js": -/*!************************************************!*\ - !*** ./src/Obj/Element/Dialog/eventBinding.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar EventBinding = /*#__PURE__*/function () {\n function EventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, EventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(EventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return EventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return EventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n EventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n return;\n this.element = {};\n var _loop = function _loop() {\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var Event = {\n 'input': [],\n 'change': [],\n 'blur': [],\n 'click': []\n };\n var isEvent = false;\n var removeName = [];\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop3 = function _loop3() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.change.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n if (elements[i].type == 'number') {\n Event.input.push(function (e) {\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n }\n });\n Event.blur.push(function (e) {\n var value = e.target.value;\n if (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n });\n } else {\n Event.input.push(function (e) {\n that[m.value] = e.target.value;\n });\n }\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n isEvent = true;\n Event.click.push(function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop3();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var _loop2 = function _loop2(key) {\n if (Event[key].length > 0) {\n elements[i].addEventListener(key, function (e) {\n for (var t = 0; t < Event[key].length; t++) {\n Event[key][t](e);\n }\n });\n }\n };\n for (var key in Event) {\n _loop2(key);\n }\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(EventBinding, \"event\", {});\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvRGlhbG9nL2V2ZW50QmluZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nLmpzP2IxMWEiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRXZlbnRCaW5kaW5nIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgfVxyXG4gIHN0YXRpYyBldmVudCA9IHt9XHJcblxyXG4gIGdldEV2ZW50KG5hbWUpIHtcclxuICAgIHJldHVybiBFdmVudEJpbmRpbmcuZXZlbnRbbmFtZV1cclxuICB9XHJcblxyXG4gIGdldEV2ZW50QWxsKCkge1xyXG4gICAgcmV0dXJuIEV2ZW50QmluZGluZy5ldmVudFxyXG4gIH1cclxuXHJcbiAgc2V0RXZlbnQobmFtZSwgZXZlbnQpIHtcclxuICAgIEV2ZW50QmluZGluZy5ldmVudFtuYW1lXSA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBvbih0aGF0LCBlbGVtZW50cykge1xyXG4gICAgcmV0dXJuXHJcbiAgICB0aGlzLmVsZW1lbnQgPSB7fVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoIWVsZW1lbnRzW2ldIHx8ICFlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IEV2ZW50ID0ge1xyXG4gICAgICAgICdpbnB1dCc6IFtdLFxyXG4gICAgICAgICdjaGFuZ2UnOiBbXSxcclxuICAgICAgICAnYmx1cic6IFtdLFxyXG4gICAgICAgICdjbGljayc6IFtdXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGlzRXZlbnQgPSBmYWxzZVxyXG4gICAgICBsZXQgcmVtb3ZlTmFtZSA9IFtdXHJcbiAgICAgIGZvciAobGV0IG0gb2YgZWxlbWVudHNbaV0uYXR0cmlidXRlcykge1xyXG4gICAgICAgIHN3aXRjaCAobS5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdAbW9kZWwnOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgICAgICBFdmVudC5jaGFuZ2UucHVzaCgoZSkgPT4geyB0aGF0W20udmFsdWVdID0gZS50YXJnZXQuY2hlY2tlZCB9KVxyXG4gICAgICAgICAgICAgIGVsZW1lbnRzW2ldLmNoZWNrZWQgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIEV2ZW50LmlucHV0LnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IGUudGFyZ2V0LnZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBFdmVudC5ibHVyLnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IChlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICd1bmRlZmluZWQnICYmIGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJycgJiYgIUJvb2xlYW4oZS50YXJnZXQuZGF0YXNldC5udWxsKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0LmRhdGFzZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgRXZlbnQuaW5wdXQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0W20udmFsdWVdID0gZS50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5ub2RlTmFtZSA9PSAnSU1HJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0uc3JjID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnZhbHVlID0gdGhhdFttLnZhbHVlXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50W20udmFsdWVdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdLnB1c2goZWxlbWVudHNbaV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W20udmFsdWVdID0gW2VsZW1lbnRzW2ldXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQGNsaWNrJzoge1xyXG4gICAgICAgICAgICBpc0V2ZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBFdmVudC5jbGljay5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAodGhhdFttLnZhbHVlXSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHJlbW92ZU5hbWUucHVzaChtLm5hbWUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzW21dID0gdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCByZW1vdmVOYW1lLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaV0uYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0ocmVtb3ZlTmFtZVtuXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzRXZlbnQpIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gRXZlbnQpIHtcclxuICAgICAgICAgIGlmIChFdmVudFtrZXldLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZWxlbWVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcihrZXksIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBFdmVudFtrZXldLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgICAgICBFdmVudFtrZXldW3RdKGUpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEV2ZW50QmluZGluZztcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0VBO0FBQUE7QUFBQTtBQTZFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBekdBO0FBQUE7QUFFQTtBQXdHQTtBQUFBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Element/Dialog/eventBinding.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/Dialog/index.js": -/*!*****************************************!*\ - !*** ./src/Obj/Element/Dialog/index.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\nvar Dialog = /*#__PURE__*/function (_BaseDialog) {\n function Dialog(sdk, info, options, only) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Dialog);\n _this = _callSuper(this, Dialog, [sdk.viewer._container, options, only]);\n _this.sdk = sdk;\n _this.viewer = sdk.viewer;\n _this.info = info;\n _this._init();\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Dialog, _BaseDialog);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Dialog, [{\n key: \"_init\",\n value: function () {\n var _init2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee() {\n var _this2 = this;\n var confirmBtn, deleteBtn, rotateBtn, div, heightBtn, secondaryEditBtn, translationalBtn, i, elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.init();\n case 2:\n _context.next = 4;\n return this._attribute();\n case 4:\n if (this.options.confirmCallBack) {\n confirmBtn = document.createElement('button');\n confirmBtn.className = 'confirm';\n confirmBtn.innerHTML = '确认';\n this.footAppChild(confirmBtn);\n confirmBtn.addEventListener('click', function () {\n // console.log('确认')\n if (_this2.options.confirmCallBack) {\n _this2.options.confirmCallBack(_this2.info);\n }\n });\n }\n if (this.options.removeCallBack) {\n deleteBtn = document.createElement('button');\n deleteBtn.className = 'delete';\n deleteBtn.innerHTML = '删除';\n this.footAppChild(deleteBtn);\n deleteBtn.addEventListener('click', function () {\n // console.log('删除')\n _this2.close();\n if (_this2.options.removeCallBack) {\n _this2.options.removeCallBack();\n }\n });\n }\n\n // if (this.options.resetCallBack) {\n // let resetBtn = document.createElement('button');\n // resetBtn.className = 'reset';\n // resetBtn.innerHTML = '重置'\n // this.footAppChild(resetBtn)\n\n // resetBtn.addEventListener('click', () => {\n // // console.log('重置')\n // if (this.options.resetCallBack) {\n // this.options.resetCallBack()\n // }\n // });\n // }\n\n if (this.options.rotateCallBack) {\n rotateBtn = document.createElement('button');\n rotateBtn.className = 'rotate';\n rotateBtn.innerHTML = '旋转';\n this.footAppChild(rotateBtn);\n rotateBtn.addEventListener('click', function () {\n // console.log('旋转')\n if (_this2.options.rotateCallBack) {\n _this2.options.rotateCallBack();\n }\n });\n }\n if (this.options.translationalCallBack || this.options.updateHeightCallBack || this.options.secondaryEditCallBack) {\n div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '24px';\n div.style.flet = '0';\n div.style.display = 'flex';\n this.footAppChild(div);\n if (this.options.updateHeightCallBack) {\n heightBtn = document.createElement('button');\n heightBtn.innerHTML = '更新高程';\n heightBtn.style.width = 'auto';\n heightBtn.addEventListener('click', function () {\n _this2.options.updateHeightCallBack();\n });\n div.appendChild(heightBtn);\n }\n if (this.options.secondaryEditCallBack) {\n secondaryEditBtn = document.createElement('button');\n secondaryEditBtn.className = 'secondaryEdit';\n secondaryEditBtn.innerHTML = '二次编辑';\n if (this.options.updateHeightCallBack) {\n secondaryEditBtn.style.marginLeft = '10px';\n }\n div.appendChild(secondaryEditBtn);\n secondaryEditBtn.addEventListener('click', function () {\n // console.log('二次编辑')\n if (_this2.options.secondaryEditCallBack) {\n _this2.options.secondaryEditCallBack();\n }\n });\n }\n if (this.options.translationalCallBack) {\n translationalBtn = document.createElement('button');\n translationalBtn.className = 'translational';\n translationalBtn.innerHTML = \"\\u5E73\\u79FB\";\n if (this.options.updateHeightCallBack || this.options.secondaryEditCallBack) {\n translationalBtn.style.marginLeft = '10px';\n }\n div.appendChild(translationalBtn);\n translationalBtn.addEventListener('click', function () {\n // console.log('平移')\n if (_this2.options.translationalCallBack) {\n _this2.options.translationalCallBack();\n }\n });\n }\n }\n if (this.options.addFootElm) {\n for (i = 0; i < this.options.addFootElm.length; i++) {\n elm = document.createElement(this.options.addFootElm[i].tagName);\n elm.className = this.options.addFootElm[i].className;\n elm.innerHTML = this.options.addFootElm[i].innerHTML;\n if (this.options.addFootElm[i].event && this.options.addFootElm[i].event.length == 2) {\n elm.addEventListener(this.options.addFootElm[i].event[0], this.options.addFootElm[i].event[1]);\n }\n this.footAppChild(elm);\n }\n }\n\n // if (this.options.showCallBack) {\n // let showBox = document.createElement('div');\n // showBox.className = 'show';\n // showBox.style = 'display: flex;align-items: center;'\n // showBox.innerHTML = `隐藏显示`\n // this.footAppChild(showBox)\n // let showBtn = showBox.querySelector(\"input[name='show']\")\n // this.showBtn = showBtn\n // showBtn.checked = this.info.show\n\n // showBtn.addEventListener('input', (e) => {\n // this.info.show = e.target.checked\n // if (this.options.showCallBack) {\n // this.options.showCallBack(this.info.show)\n // }\n // });\n // }\n case 9:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function _init() {\n return _init2.apply(this, arguments);\n }\n return _init;\n }()\n }, {\n key: \"_attribute\",\n value: function _attribute() {\n var attribute = this._element.content.getElementsByClassName('attribute')[0];\n if (!attribute || attribute.length === 0) {\n return;\n }\n var attributeSelectOption = attribute.getElementsByClassName('attribute-select')[0].getElementsByTagName('option');\n for (var i = attributeSelectOption.length - 1; i >= 0; i--) {\n for (var key in this.info.attribute) {\n if (attributeSelectOption[i].value === key) {\n if (this.info.attribute[key].disabled) {\n attributeSelectOption[i].disabled = true;\n }\n break;\n }\n }\n }\n }\n }]);\n}(_BaseDialog__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dialog);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvRGlhbG9nL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9FbGVtZW50L0RpYWxvZy9pbmRleC5qcz82OTA4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnO1xyXG5cclxuY2xhc3MgRGlhbG9nIGV4dGVuZHMgQmFzZURpYWxvZyB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBpbmZvLCBvcHRpb25zLCBvbmx5KSB7XHJcbiAgICBzdXBlcihzZGsudmlld2VyLl9jb250YWluZXIsIG9wdGlvbnMsIG9ubHkpO1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy5pbmZvID0gaW5mb1xyXG4gICAgdGhpcy5faW5pdCgpXHJcbiAgfVxyXG5cclxuICBhc3luYyBfaW5pdCgpIHtcclxuICAgIGF3YWl0IHRoaXMuaW5pdCgpXHJcbiAgICBhd2FpdCB0aGlzLl9hdHRyaWJ1dGUoKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29uZmlybUNhbGxCYWNrKSB7XHJcbiAgICAgIGxldCBjb25maXJtQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgIGNvbmZpcm1CdG4uY2xhc3NOYW1lID0gJ2NvbmZpcm0nO1xyXG4gICAgICBjb25maXJtQnRuLmlubmVySFRNTCA9ICfnoa7orqQnXHJcbiAgICAgIHRoaXMuZm9vdEFwcENoaWxkKGNvbmZpcm1CdG4pXHJcbiAgICAgIGNvbmZpcm1CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ+ehruiupCcpXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb25maXJtQ2FsbEJhY2spIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jb25maXJtQ2FsbEJhY2sodGhpcy5pbmZvKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZW1vdmVDYWxsQmFjaykge1xyXG4gICAgICBsZXQgZGVsZXRlQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgIGRlbGV0ZUJ0bi5jbGFzc05hbWUgPSAnZGVsZXRlJztcclxuICAgICAgZGVsZXRlQnRuLmlubmVySFRNTCA9ICfliKDpmaQnXHJcbiAgICAgIHRoaXMuZm9vdEFwcENoaWxkKGRlbGV0ZUJ0bilcclxuICAgICAgZGVsZXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCfliKDpmaQnKVxyXG4gICAgICAgIHRoaXMuY2xvc2UoKVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlQ2FsbEJhY2spIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLnJlc2V0Q2FsbEJhY2spIHtcclxuICAgIC8vICAgbGV0IHJlc2V0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAvLyAgIHJlc2V0QnRuLmNsYXNzTmFtZSA9ICdyZXNldCc7XHJcbiAgICAvLyAgIHJlc2V0QnRuLmlubmVySFRNTCA9ICfph43nva4nXHJcbiAgICAvLyAgIHRoaXMuZm9vdEFwcENoaWxkKHJlc2V0QnRuKVxyXG5cclxuICAgIC8vICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gY29uc29sZS5sb2coJ+mHjee9ricpXHJcbiAgICAvLyAgICAgaWYgKHRoaXMub3B0aW9ucy5yZXNldENhbGxCYWNrKSB7XHJcbiAgICAvLyAgICAgICB0aGlzLm9wdGlvbnMucmVzZXRDYWxsQmFjaygpXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnJvdGF0ZUNhbGxCYWNrKSB7XHJcbiAgICAgIGxldCByb3RhdGVCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgcm90YXRlQnRuLmNsYXNzTmFtZSA9ICdyb3RhdGUnO1xyXG4gICAgICByb3RhdGVCdG4uaW5uZXJIVE1MID0gJ+aXi+i9rCdcclxuICAgICAgdGhpcy5mb290QXBwQ2hpbGQocm90YXRlQnRuKVxyXG5cclxuICAgICAgcm90YXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCfml4vovawnKVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucm90YXRlQ2FsbEJhY2spIHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5yb3RhdGVDYWxsQmFjaygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYW5zbGF0aW9uYWxDYWxsQmFjayB8fCB0aGlzLm9wdGlvbnMudXBkYXRlSGVpZ2h0Q2FsbEJhY2sgfHwgdGhpcy5vcHRpb25zLnNlY29uZGFyeUVkaXRDYWxsQmFjaykge1xyXG4gICAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGRpdi5zdHlsZS5wb3NpdGlvbiA9J2Fic29sdXRlJ1xyXG4gICAgICBkaXYuc3R5bGUubGVmdCA9JzI0cHgnXHJcbiAgICAgIGRpdi5zdHlsZS5mbGV0ID0gJzAnXHJcbiAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcblxyXG4gICAgICB0aGlzLmZvb3RBcHBDaGlsZChkaXYpXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBkYXRlSGVpZ2h0Q2FsbEJhY2spIHtcclxuICAgICAgICBsZXQgaGVpZ2h0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgaGVpZ2h0QnRuLmlubmVySFRNTCA9ICc8c3ZnIGNsYXNzPVwiaWNvbi11cGRhdGVoZWlnaFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXVwZGF0ZWhlaWdodFwiPjwvdXNlPjwvc3ZnPuabtOaWsOmrmOeoiydcclxuICAgICAgICBoZWlnaHRCdG4uc3R5bGUud2lkdGggPSAnYXV0bydcclxuICAgICAgICBoZWlnaHRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMudXBkYXRlSGVpZ2h0Q2FsbEJhY2soKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZGl2LmFwcGVuZENoaWxkKGhlaWdodEJ0bilcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNlY29uZGFyeUVkaXRDYWxsQmFjaykge1xyXG4gICAgICAgIGxldCBzZWNvbmRhcnlFZGl0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdEJ0bi5jbGFzc05hbWUgPSAnc2Vjb25kYXJ5RWRpdCc7XHJcbiAgICAgICAgc2Vjb25kYXJ5RWRpdEJ0bi5pbm5lckhUTUwgPSAnPHN2ZyBjbGFzcz1cImljb24tZWRpdFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWVkaXRcIj48L3VzZT48L3N2Zz7kuozmrKHnvJbovpEnXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGRhdGVIZWlnaHRDYWxsQmFjaykge1xyXG4gICAgICAgICAgc2Vjb25kYXJ5RWRpdEJ0bi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChzZWNvbmRhcnlFZGl0QnRuKVxyXG4gIFxyXG4gICAgICAgIHNlY29uZGFyeUVkaXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqM5qyh57yW6L6RJylcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2Vjb25kYXJ5RWRpdENhbGxCYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZWNvbmRhcnlFZGl0Q2FsbEJhY2soKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudHJhbnNsYXRpb25hbENhbGxCYWNrKSB7XHJcbiAgICAgICAgbGV0IHRyYW5zbGF0aW9uYWxCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQnRuLmNsYXNzTmFtZSA9ICd0cmFuc2xhdGlvbmFsJztcclxuICAgICAgICB0cmFuc2xhdGlvbmFsQnRuLmlubmVySFRNTCA9IGA8c3ZnIGNsYXNzPVwiaWNvbi1weVwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXB5XCI+PC91c2U+PC9zdmc+5bmz56e7YFxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBkYXRlSGVpZ2h0Q2FsbEJhY2sgfHwgdGhpcy5vcHRpb25zLnNlY29uZGFyeUVkaXRDYWxsQmFjaykge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25hbEJ0bi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZCh0cmFuc2xhdGlvbmFsQnRuKVxyXG4gIFxyXG4gICAgICAgIHRyYW5zbGF0aW9uYWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5bmz56e7JylcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudHJhbnNsYXRpb25hbENhbGxCYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50cmFuc2xhdGlvbmFsQ2FsbEJhY2soKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hZGRGb290RWxtKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmFkZEZvb3RFbG0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMuYWRkRm9vdEVsbVtpXS50YWdOYW1lKTtcclxuICAgICAgICBlbG0uY2xhc3NOYW1lID0gdGhpcy5vcHRpb25zLmFkZEZvb3RFbG1baV0uY2xhc3NOYW1lXHJcbiAgICAgICAgZWxtLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5hZGRGb290RWxtW2ldLmlubmVySFRNTFxyXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5hZGRGb290RWxtW2ldLmV2ZW50ICYmIHRoaXMub3B0aW9ucy5hZGRGb290RWxtW2ldLmV2ZW50Lmxlbmd0aD09Mikge1xyXG4gICAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5vcHRpb25zLmFkZEZvb3RFbG1baV0uZXZlbnRbMF0sIHRoaXMub3B0aW9ucy5hZGRGb290RWxtW2ldLmV2ZW50WzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvb3RBcHBDaGlsZChlbG0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLnNob3dDYWxsQmFjaykge1xyXG4gICAgLy8gICBsZXQgc2hvd0JveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgLy8gICBzaG93Qm94LmNsYXNzTmFtZSA9ICdzaG93JztcclxuICAgIC8vICAgc2hvd0JveC5zdHlsZSA9ICdkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7J1xyXG4gICAgLy8gICBzaG93Qm94LmlubmVySFRNTCA9IGA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6ZqQ6JePPC9zcGFuPjxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBjaGVja2VkIG5hbWU9XCJzaG93XCI+PHNwYW4gY2xhc3M9XCJsYWJlbFwiPuaYvuekujwvc3Bhbj5gXHJcbiAgICAvLyAgIHRoaXMuZm9vdEFwcENoaWxkKHNob3dCb3gpXHJcbiAgICAvLyAgIGxldCBzaG93QnRuID0gc2hvd0JveC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0nc2hvdyddXCIpXHJcbiAgICAvLyAgIHRoaXMuc2hvd0J0biA9IHNob3dCdG5cclxuICAgIC8vICAgc2hvd0J0bi5jaGVja2VkID0gdGhpcy5pbmZvLnNob3dcclxuXHJcbiAgICAvLyAgIHNob3dCdG4uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMuaW5mby5zaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgLy8gICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd0NhbGxCYWNrKSB7XHJcbiAgICAvLyAgICAgICB0aGlzLm9wdGlvbnMuc2hvd0NhbGxCYWNrKHRoaXMuaW5mby5zaG93KVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBfYXR0cmlidXRlKCkge1xyXG4gICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUnKVswXVxyXG4gICAgaWYgKCFhdHRyaWJ1dGUgfHwgYXR0cmlidXRlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBhdHRyaWJ1dGVTZWxlY3RPcHRpb24gPSBhdHRyaWJ1dGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLXNlbGVjdCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24nKVxyXG4gICAgZm9yIChsZXQgaSA9IGF0dHJpYnV0ZVNlbGVjdE9wdGlvbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5pbmZvLmF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVTZWxlY3RPcHRpb25baV0udmFsdWUgPT09IGtleSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaW5mby5hdHRyaWJ1dGVba2V5XS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBhdHRyaWJ1dGVTZWxlY3RPcHRpb25baV0uZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE5SUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Element/Dialog/index.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/Pagination.js": -/*!***************************************!*\ - !*** ./src/Obj/Element/Pagination.js ***! - \***************************************/ -/*! exports provided: generatePagination */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generatePagination\", function() { return generatePagination; });\nfunction generatePagination(pagination, total, pageSize, pageIndex, cd) {\n /* \r\n 需要一个
      标签\r\n total; // 总数据的数量\r\n pageSize; // 一页显示数量\r\n pageIndex; // 当前页\r\n */\n var totalPage = Math.ceil(total / pageSize) || 1; // 总页数\n function initPagination() {\n var pageHtml; // 按钮内容\n var prevButton = \"
    • \\u2039
    • \"; // 向左\n var nextButton = \"
    • \\u203A
    • \"; // 向右\n var firstPage = \"
    • 1
    • \"; // 第一页\n var lastPage = \"
    • \").concat(totalPage, \"
    • \"); // 最后一页\n var leftOmitPage = \"
    • ...
    • \"; // 省略号\n var rightOmitPage = \"
    • ...
    • \"; // 省略号\n var pageTips = \"
      \\u5171 \".concat(total, \" \\u6761
      \");\n pageHtml = prevButton; // 添加向左的按钮\n\n /* 生成页数 */\n if (totalPage <= 6) {\n // 总页数小于等于10页全部显示\n for (var i = 1; i <= totalPage; i++) {\n pageHtml += \"
    • \").concat(i, \"
    • \");\n }\n }\n\n //页码大于5页的情况 当前页大于5的话,并且页码是大于11页的\n else if (pageIndex <= 4) {\n //总页数大于10且当前页远离总页数\n for (var _i = 1; _i <= 5; _i++) {\n pageHtml += \"
    • \").concat(_i, \"
    • \");\n }\n pageHtml += rightOmitPage;\n pageHtml += lastPage;\n } else if (pageIndex > totalPage - 3) {\n //pageindex>=9 的时候并且页数》10页的时候\n\n // console.log('totalPage - 2:' + (totalPage - 3));\n // console.log('pageindex:' + pageIndex);\n //总页数大于10且当前页接近总页数\n pageHtml += firstPage;\n pageHtml += leftOmitPage;\n for (var _i2 = totalPage - 4; _i2 <= totalPage; _i2++) {\n pageHtml += \"
    • \").concat(_i2, \"
    • \");\n }\n } else {\n //除开上面两个情况 当前页在中间\n pageHtml += firstPage;\n pageHtml += leftOmitPage;\n for (var _i3 = pageIndex - 1; _i3 <= pageIndex + 1; _i3++) {\n pageHtml += \"
    • \").concat(_i3, \"
    • \");\n }\n pageHtml += rightOmitPage;\n pageHtml += lastPage;\n }\n pageHtml += nextButton; // 添加向右的按钮\n pageHtml += pageTips;\n pagination.innerHTML = pageHtml;\n pagination.querySelector(\"li[pagenumber='\" + pageIndex + \"']\").classList.add('active');\n var pagenumberBtns = pagination.querySelectorAll('li[pagenumber]'); // 获取所有的页码按钮\n\n /* 点击页码按钮进行翻页 */\n pagenumberBtns.forEach(function (elements) {\n elements.onclick = function () {\n pageIndex = Number(this.innerHTML); // 当前页\n pagination.querySelector(\"li[pagenumber='\" + pageIndex + \"']\").classList.add('active');\n pageHtml = \"\";\n initPagination();\n cd && cd(pageIndex);\n };\n });\n\n /* 向左翻页 */\n pagination.getElementsByClassName('btnPrev')[0].addEventListener('click', function () {\n if (pageIndex > 1) {\n pageIndex--;\n pageHtml = '';\n initPagination();\n cd && cd(pageIndex);\n }\n });\n\n /* 向右翻页 */\n pagination.getElementsByClassName('btnNext')[0].addEventListener('click', function () {\n if (pageIndex < totalPage) {\n pageIndex++;\n pageHtml = '';\n initPagination();\n cd && cd(pageIndex);\n }\n });\n\n /* 向左快速翻页 */\n var btnGoLeft = pagination.getElementsByClassName('btnGoLeft')[0];\n if (btnGoLeft) {\n btnGoLeft.addEventListener('mouseenter', function () {\n this.innerHTML = '<';\n });\n btnGoLeft.addEventListener('mouseleave', function () {\n this.innerHTML = '...';\n });\n btnGoLeft.addEventListener('click', function () {\n if (pageIndex > 10) {\n pageIndex -= 10;\n pageHtml = '';\n initPagination();\n cd && cd(pageIndex);\n }\n });\n }\n\n /* 向右快速翻页 */\n var btnGoRight = pagination.getElementsByClassName('btnGoRight')[0];\n if (btnGoRight) {\n btnGoRight.addEventListener('mouseenter', function () {\n this.innerHTML = '>';\n });\n btnGoRight.addEventListener('mouseleave', function () {\n this.innerHTML = '...';\n });\n btnGoRight.addEventListener('click', function () {\n if (pageIndex < totalPage - 10) {\n pageIndex += 10;\n pageHtml = '';\n initPagination();\n cd && cd(pageIndex);\n }\n });\n }\n }\n initPagination();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvUGFnaW5hdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovRWxlbWVudC9QYWdpbmF0aW9uLmpzPzhkOTgiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb24sIHRvdGFsLCBwYWdlU2l6ZSwgcGFnZUluZGV4LCBjZCkge1xyXG5cclxuICAvKiBcclxuICAg6ZyA6KaB5LiA5LiqPHVsIGlkPVwicGFnaW5hdGlvblwiPjwvdWw+5qCH562+XHJcbiAgIHRvdGFsOyAvLyDmgLvmlbDmja7nmoTmlbDph49cclxuICAgcGFnZVNpemU7IC8vIOS4gOmhteaYvuekuuaVsOmHj1xyXG4gICBwYWdlSW5kZXg7IC8vIOW9k+WJjemhtVxyXG4gICovXHJcbiAgbGV0IHRvdGFsUGFnZSA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSB8fCAxOyAvLyDmgLvpobXmlbBcclxuICBmdW5jdGlvbiBpbml0UGFnaW5hdGlvbigpIHtcclxuICAgIGxldCBwYWdlSHRtbDsgLy8g5oyJ6ZKu5YaF5a65XHJcbiAgICBsZXQgcHJldkJ1dHRvbiA9IGA8bGkgY2xhc3M9J2xpc3QtaXRlbXMgbGJsIGJ0blByZXYnPuKAuTwvbGk+YDsgLy8g5ZCR5bemXHJcbiAgICBsZXQgbmV4dEJ1dHRvbiA9IGA8bGkgY2xhc3M9J2xpc3QtaXRlbXMgbGJyIGJ0bk5leHQnPuKAujwvbGk+YDsgLy8g5ZCR5Y+zXHJcbiAgICBsZXQgZmlyc3RQYWdlID0gYDxsaSBjbGFzcz0nbGlzdC1pdGVtcycgcGFnZW51bWJlcj0xPjE8L2xpPmA7IC8vIOesrOS4gOmhtVxyXG4gICAgbGV0IGxhc3RQYWdlID0gYDxsaSBjbGFzcz0nbGlzdC1pdGVtcycgcGFnZW51bWJlcj0ke3RvdGFsUGFnZX0+JHt0b3RhbFBhZ2V9PC9saT5gOyAvLyDmnIDlkI7kuIDpobVcclxuICAgIGxldCBsZWZ0T21pdFBhZ2UgPSBgPGxpIGNsYXNzPSdsaXN0LWl0ZW1zIGJ0bkdvTGVmdCc+Li4uPC9saT5gOyAvLyDnnIHnlaXlj7dcclxuICAgIGxldCByaWdodE9taXRQYWdlID0gYDxsaSBjbGFzcz0nbGlzdC1pdGVtcyBidG5Hb1JpZ2h0Jz4uLi48L2xpPmA7IC8vIOecgeeVpeWPt1xyXG4gICAgbGV0IHBhZ2VUaXBzID0gYDxkaXYgc3R5bGU9J2xpbmUtaGVpZ2h0OjIwcHg7JyBjbGFzcz0ncGFnZVRpcHMnPuWFsSAke3RvdGFsfSDmnaE8L2RpdiA+IGA7XHJcbiAgICBwYWdlSHRtbCA9IHByZXZCdXR0b247IC8vIOa3u+WKoOWQkeW3pueahOaMiemSrlxyXG4gXHJcbiAgICAvKiDnlJ/miJDpobXmlbAgKi9cclxuICAgIGlmICh0b3RhbFBhZ2UgPD0gNikge1xyXG4gICAgICAvLyDmgLvpobXmlbDlsI/kuo7nrYnkuo4xMOmhteWFqOmDqOaYvuekulxyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0b3RhbFBhZ2U7IGkrKykge1xyXG4gICAgICAgIHBhZ2VIdG1sICs9IGA8bGkgY2xhc3M9J2xpc3QtaXRlbXMnIHBhZ2VudW1iZXI9JHtpfT4ke2l9PC9saT5gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiBcclxuICAgIC8v6aG156CB5aSn5LqONemhteeahOaDheWGtSAg5b2T5YmN6aG15aSn5LqONeeahOivne+8jOW5tuS4lOmhteeggeaYr+Wkp+S6jjEx6aG155qEXHJcbiAgICBlbHNlIGlmIChwYWdlSW5kZXggPD0gNCkge1xyXG4gICAgICAvL+aAu+mhteaVsOWkp+S6jjEw5LiU5b2T5YmN6aG16L+c56a75oC76aG15pWwXHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDU7IGkrKykge1xyXG4gICAgICAgIHBhZ2VIdG1sICs9IGA8bGkgY2xhc3M9J2xpc3QtaXRlbXMnIHBhZ2VudW1iZXI9JHtpfT4ke2l9PC9saT5gO1xyXG4gICAgICB9XHJcbiAgICAgIHBhZ2VIdG1sICs9IHJpZ2h0T21pdFBhZ2U7XHJcbiAgICAgIHBhZ2VIdG1sICs9IGxhc3RQYWdlO1xyXG4gICAgfSBlbHNlIGlmIChwYWdlSW5kZXggPiB0b3RhbFBhZ2UgLSAzKSB7XHJcbiAgICAgIC8vcGFnZWluZGV4Pj05IOeahOaXtuWAmeW5tuS4lOmhteaVsOOAizEw6aG155qE5pe25YCZXHJcbiBcclxuICAgICAgLy8gY29uc29sZS5sb2coJ3RvdGFsUGFnZSAtIDI6JyArICh0b3RhbFBhZ2UgLSAzKSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdwYWdlaW5kZXg6JyArIHBhZ2VJbmRleCk7XHJcbiAgICAgIC8v5oC76aG15pWw5aSn5LqOMTDkuJTlvZPliY3pobXmjqXov5HmgLvpobXmlbBcclxuICAgICAgcGFnZUh0bWwgKz0gZmlyc3RQYWdlO1xyXG4gICAgICBwYWdlSHRtbCArPSBsZWZ0T21pdFBhZ2U7XHJcbiAgICAgIGZvciAobGV0IGkgPSB0b3RhbFBhZ2UgLSA0OyBpIDw9IHRvdGFsUGFnZTsgaSsrKSB7XHJcbiAgICAgICAgcGFnZUh0bWwgKz0gYDxsaSBjbGFzcz0nbGlzdC1pdGVtcycgcGFnZW51bWJlcj0ke2l9PiR7aX08L2xpPmA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8v6Zmk5byA5LiK6Z2i5Lik5Liq5oOF5Ya1IOW9k+WJjemhteWcqOS4remXtFxyXG4gICAgICBwYWdlSHRtbCArPSBmaXJzdFBhZ2U7XHJcbiAgICAgIHBhZ2VIdG1sICs9IGxlZnRPbWl0UGFnZTtcclxuICAgICAgZm9yIChsZXQgaSA9IHBhZ2VJbmRleCAtIDE7IGkgPD0gcGFnZUluZGV4ICsgMTsgaSsrKSB7XHJcbiAgICAgICAgcGFnZUh0bWwgKz0gYDxsaSBjbGFzcz0nbGlzdC1pdGVtcycgcGFnZW51bWJlcj0ke2l9PiR7aX08L2xpPmA7XHJcbiAgICAgIH1cclxuICAgICAgcGFnZUh0bWwgKz0gcmlnaHRPbWl0UGFnZTtcclxuICAgICAgcGFnZUh0bWwgKz0gbGFzdFBhZ2U7XHJcbiAgICB9XHJcbiAgICBwYWdlSHRtbCArPSBuZXh0QnV0dG9uOyAvLyDmt7vliqDlkJHlj7PnmoTmjInpkq5cclxuICAgIHBhZ2VIdG1sICs9IHBhZ2VUaXBzO1xyXG4gICAgcGFnaW5hdGlvbi5pbm5lckhUTUwgPSBwYWdlSHRtbDtcclxuICAgIHBhZ2luYXRpb25cclxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCJsaVtwYWdlbnVtYmVyPSdcIiArIHBhZ2VJbmRleCArIFwiJ11cIilcclxuICAgICAgLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xyXG4gXHJcbiAgICBsZXQgcGFnZW51bWJlckJ0bnMgPSBwYWdpbmF0aW9uLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpW3BhZ2VudW1iZXJdJyk7IC8vIOiOt+WPluaJgOacieeahOmhteeggeaMiemSrlxyXG4gXHJcbiAgICAvKiDngrnlh7vpobXnoIHmjInpkq7ov5vooYznv7vpobUgKi9cclxuICAgIHBhZ2VudW1iZXJCdG5zLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnRzKSB7XHJcbiAgICAgIGVsZW1lbnRzLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcGFnZUluZGV4ID0gTnVtYmVyKHRoaXMuaW5uZXJIVE1MKTsgLy8g5b2T5YmN6aG1XHJcbiAgICAgICAgcGFnaW5hdGlvblxyXG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCJsaVtwYWdlbnVtYmVyPSdcIiArIHBhZ2VJbmRleCArIFwiJ11cIilcclxuICAgICAgICAgIC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcclxuICAgICAgICBwYWdlSHRtbCA9IGBgO1xyXG4gICAgICAgIGluaXRQYWdpbmF0aW9uKClcclxuICAgICAgICBjZCAmJiBjZChwYWdlSW5kZXgpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuIFxyXG4gICAgLyog5ZCR5bem57+76aG1ICovXHJcbiAgICBwYWdpbmF0aW9uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J0blByZXYnKVswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHBhZ2VJbmRleCA+IDEpIHtcclxuICAgICAgICBwYWdlSW5kZXgtLTtcclxuICAgICAgICBwYWdlSHRtbCA9ICcnO1xyXG4gICAgICAgIGluaXRQYWdpbmF0aW9uKCk7XHJcbiAgICAgICAgY2QgJiYgY2QocGFnZUluZGV4KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuIFxyXG4gICAgLyog5ZCR5Y+z57+76aG1ICovXHJcbiAgICBwYWdpbmF0aW9uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J0bk5leHQnKVswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHBhZ2VJbmRleCA8IHRvdGFsUGFnZSkge1xyXG4gICAgICAgIHBhZ2VJbmRleCsrO1xyXG4gICAgICAgIHBhZ2VIdG1sID0gJyc7XHJcbiAgICAgICAgaW5pdFBhZ2luYXRpb24oKVxyXG4gICAgICAgIGNkICYmIGNkKHBhZ2VJbmRleClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiBcclxuICAgIC8qIOWQkeW3puW/q+mAn+e/u+mhtSAqL1xyXG4gICAgbGV0IGJ0bkdvTGVmdCA9IHBhZ2luYXRpb24uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYnRuR29MZWZ0JylbMF07XHJcbiAgICBpZiAoYnRuR29MZWZ0KSB7XHJcbiAgICAgIGJ0bkdvTGVmdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuaW5uZXJIVE1MID0gJzwnO1xyXG4gICAgICB9KTtcclxuICAgICAgYnRuR29MZWZ0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckhUTUwgPSAnLi4uJztcclxuICAgICAgfSk7XHJcbiAgICAgIGJ0bkdvTGVmdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAocGFnZUluZGV4ID4gMTApIHtcclxuICAgICAgICAgIHBhZ2VJbmRleCAtPSAxMDtcclxuICAgICAgICAgIHBhZ2VIdG1sID0gJyc7XHJcbiAgICAgICAgICBpbml0UGFnaW5hdGlvbigpO1xyXG4gICAgICAgICAgY2QgJiYgY2QocGFnZUluZGV4KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiBcclxuICAgIC8qIOWQkeWPs+W/q+mAn+e/u+mhtSAqL1xyXG4gICAgbGV0IGJ0bkdvUmlnaHQgPSBwYWdpbmF0aW9uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J0bkdvUmlnaHQnKVswXTtcclxuICAgIGlmIChidG5Hb1JpZ2h0KSB7XHJcbiAgICAgIGJ0bkdvUmlnaHQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmlubmVySFRNTCA9ICc+JztcclxuICAgICAgfSk7XHJcbiAgICAgIGJ0bkdvUmlnaHQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmlubmVySFRNTCA9ICcuLi4nO1xyXG4gICAgICB9KTtcclxuICAgICAgYnRuR29SaWdodC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAocGFnZUluZGV4IDwgdG90YWxQYWdlIC0gMTApIHtcclxuICAgICAgICAgIHBhZ2VJbmRleCArPSAxMDtcclxuICAgICAgICAgIHBhZ2VIdG1sID0gJyc7XHJcbiAgICAgICAgICBpbml0UGFnaW5hdGlvbigpO1xyXG4gICAgICAgICAgY2QgJiYgY2QocGFnZUluZGV4KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGluaXRQYWdpbmF0aW9uKCk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGdlbmVyYXRlUGFnaW5hdGlvbiB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Element/Pagination.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/cy_html_slider.js": -/*!*******************************************!*\ - !*** ./src/Obj/Element/cy_html_slider.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar cy_slider = /*#__PURE__*/function () {\n function cy_slider(ele) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, cy_slider);\n var that = this;\n this.options = options;\n //slider 盒子,顶层元素\n this.slider_box = ele;\n if (this.slider_box == null) {\n return;\n }\n //slider 手柄\n this.handler = this.slider_box.querySelector('.handler');\n //slider 有值块\n this.light = this.slider_box.querySelector('.light');\n //是否是垂直\n if (this.slider_box.classList.contains(\"vertical\")) {\n this.is_vertical = true;\n }\n //是否是禁用\n if (this.slider_box.attributes.getNamedItem(\"disabled\") && this.slider_box.attributes.getNamedItem(\"disabled\").value.toLowerCase() != \"false\") {\n this.is_disabled = true;\n }\n this.is_initialize = true;\n this.max_data = 100;\n this.min_data = 0;\n this.step_separates = [];\n this.step_percents = [];\n if (options) {\n //参数校验,必要内置参数预算\n var u_max_data = parseFloat(options.max_data);\n if (u_max_data || u_max_data == 0) {\n this.max_data = u_max_data;\n }\n var u_min_data = parseFloat(options.min_data);\n if (u_min_data || u_min_data == 0) {\n if (u_min_data < this.max_data) {\n this.min_data = u_min_data;\n } else {\n this.min_data = this.max_data;\n }\n }\n //步长分割\n var data_area = this.max_data - this.min_data;\n var u_step = Math.abs(parseFloat(options.step));\n if (u_step) {\n if (data_area / u_step > 200) {\n u_step = data_area / 200;\n }\n } else {\n u_step = Math.floor(data_area / 100);\n }\n var added_step = this.min_data;\n this.step_separates.push(added_step);\n while (added_step < this.max_data) {\n added_step += parseFloat(u_step);\n added_step = parseFloat(added_step.toFixed(3));\n if (added_step > this.max_data) {\n added_step = this.max_data;\n }\n this.step_separates.push(added_step);\n }\n for (var i = 0; i < this.step_separates.length; i++) {\n if (this.step_separates.length == 1) {\n this.step_percents.push(1);\n break;\n }\n var step_percent = i / (this.step_separates.length - 1);\n this.step_percents.push(step_percent);\n }\n }\n this.slider_box.addEventListener('click', function (ev) {\n //点击设置值\n if (that.is_disabled) {\n return;\n }\n if (ev.target.nodeName != \"SPAN\") {\n if (that.is_vertical) {\n if (ev.target.classList.contains(\"light\")) {\n that._setPosition(that.slider_box.offsetHeight - (that.slider_box.offsetHeight - that.light.offsetHeight + ev.offsetY));\n } else {\n that._setPosition(that.slider_box.offsetHeight - ev.offsetY);\n }\n } else {\n that._setPosition(ev.offsetX);\n }\n }\n });\n this.movementX = 0;\n this.movementY = 0;\n this.previousTouch = null;\n this.crt_val = 0;\n this.slider_box.addEventListener('mousedown', function (ev) {\n //标准端拖动开始\n if (that.is_disabled) {\n return;\n }\n that.movementX = 0;\n that.movementY = 0;\n that.previousTouch = null;\n if (that.is_vertical) {\n that.crt_val = that.slider_box.offsetHeight * (that.handler.style.bottom.replace(\"%\", \"\") / 100);\n } else {\n that.crt_val = that.slider_box.offsetWidth * (that.handler.style.left.replace(\"%\", \"\") / 100);\n }\n document.documentElement.addEventListener('mousemove', _dragMove);\n document.documentElement.addEventListener('mouseup', function () {\n document.documentElement.removeEventListener('mousemove', _dragMove);\n });\n });\n this.slider_box.addEventListener('touchstart', function (ev) {\n //touch端拖动开始\n if (that.is_disabled) {\n return;\n }\n that.movementX = 0;\n that.movementY = 0;\n that.previousTouch = null;\n if (that.is_vertical) {\n that.crt_val = that.slider_box.offsetHeight * (that.handler.style.bottom.replace(\"%\", \"\") / 100);\n } else {\n that.crt_val = that.slider_box.offsetWidth * (that.handler.style.left.replace(\"%\", \"\") / 100);\n }\n document.documentElement.addEventListener('touchmove', _dragMove);\n document.documentElement.addEventListener('touchend', function () {\n document.documentElement.removeEventListener('touchmove', _dragMove);\n });\n });\n function _dragMove(ev) {\n if (ev.type == \"touchmove\") {\n //touch端\n if (that.previousTouch) {\n that.movementX += ev.touches[0].pageX - that.previousTouch.pageX;\n that.movementY += ev.touches[0].pageY - that.previousTouch.pageY;\n }\n ;\n that.previousTouch = ev.touches[0];\n if (that.is_vertical) {\n var new_val = that.crt_val - that.movementY;\n if (new_val < 0) {\n new_val = 0;\n } else if (new_val > that.slider_box.offsetHeight) {\n new_val = that.slider_box.offsetHeight;\n }\n that._setPosition(new_val);\n } else {\n var new_val = that.crt_val + that.movementX;\n if (new_val < 0) {\n new_val = 0;\n } else if (new_val > that.slider_box.offsetWidth) {\n new_val = that.slider_box.offsetWidth;\n }\n that._setPosition(new_val);\n }\n } else {\n //标准端\n that.movementX += ev.movementX;\n that.movementY += ev.movementY;\n if (that.is_vertical) {\n var new_val = that.crt_val - that.movementY;\n if (new_val < 0) {\n new_val = 0;\n } else if (new_val > that.slider_box.offsetHeight) {\n new_val = that.slider_box.offsetHeight;\n }\n that._setPosition(new_val);\n } else {\n var new_val = that.crt_val + that.movementX;\n if (new_val < 0) {\n new_val = 0;\n } else if (new_val > that.slider_box.offsetWidth) {\n new_val = that.slider_box.offsetWidth;\n }\n that._setPosition(new_val);\n }\n }\n ev.preventDefault();\n }\n //根据相关值设置 slider 样式\n this._setPosition = function (val, noCallback) {\n var percent;\n if (this.is_vertical) {\n percent = parseFloat(val) / this.slider_box.offsetHeight;\n } else {\n percent = parseFloat(val) / this.slider_box.offsetWidth;\n }\n var resultData;\n var closest_index = Math.floor(this.step_separates.length * percent);\n if (closest_index >= this.step_separates.length) {\n closest_index = this.step_separates.length - 1;\n }\n resultData = this.step_separates[closest_index];\n percent = this.step_percents[closest_index];\n var percentCss = percent * 100 + '%';\n if (this.is_vertical) {\n this.light.style.height = percentCss;\n this.handler.style.bottom = percentCss;\n } else {\n this.light.style.width = percentCss;\n this.handler.style.left = percentCss;\n }\n this.slider_box.dataset.value = resultData;\n if (!this.is_initialize) {\n if (this.options) {\n if (this.options.callback instanceof Function && !noCallback) {\n this.options.callback(resultData);\n }\n }\n }\n };\n //设置初始默认值\n if (this.options) {\n var default_data = parseFloat(this.options.default_data);\n if (default_data || default_data == 0) {\n this.setSliderData(default_data);\n } else {\n this.setSliderData(this.min_data);\n }\n this.is_initialize = false;\n }\n }\n //用户公开的方法,设置 slider 值\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(cy_slider, [{\n key: \"setSliderData\",\n value: function setSliderData(data) {\n var noCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (data < this.min_data) {\n data = this.min_data;\n }\n if (data > this.max_data) {\n data = this.max_data;\n }\n var percent;\n var min_differ = Number.MAX_VALUE;\n for (var i = 0; i < this.step_separates.length; i++) {\n var crt_differ = Math.abs(data - this.step_separates[i]);\n if (crt_differ < min_differ) {\n min_differ = crt_differ;\n percent = this.step_percents[i];\n }\n if (crt_differ == 0) {\n break;\n }\n }\n var move_val;\n if (this.is_vertical) {\n move_val = parseFloat(this.slider_box.offsetHeight * percent);\n } else {\n move_val = parseFloat(this.slider_box.offsetWidth * percent);\n }\n this._setPosition(move_val, noCallback);\n }\n //用户公开的方法,设置是否禁用\n }, {\n key: \"setDisabled\",\n value: function setDisabled(is_disabled) {\n this.is_disabled = is_disabled;\n if (!this.slider_box || !this.slider_box.attributes) {\n return;\n }\n if (is_disabled) {\n var attr_disabled = document.createAttribute(\"disabled\");\n this.slider_box.attributes.setNamedItem(attr_disabled);\n } else {\n this.slider_box.attributes.removeNamedItem(\"disabled\");\n }\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (cy_slider);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvY3lfaHRtbF9zbGlkZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0VsZW1lbnQvY3lfaHRtbF9zbGlkZXIuanM/ZTA4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBjeV9zbGlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoZWxlLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzXHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xyXG4gICAgICAgIC8vc2xpZGVyIOebkuWtkO+8jOmhtuWxguWFg+e0oFxyXG4gICAgICAgIHRoaXMuc2xpZGVyX2JveCA9IGVsZVxyXG4gICAgICAgIGlmICh0aGlzLnNsaWRlcl9ib3ggPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgLy9zbGlkZXIg5omL5p+EXHJcbiAgICAgICAgdGhpcy5oYW5kbGVyID0gdGhpcy5zbGlkZXJfYm94LnF1ZXJ5U2VsZWN0b3IoJy5oYW5kbGVyJylcclxuICAgICAgICAvL3NsaWRlciDmnInlgLzlnZdcclxuICAgICAgICB0aGlzLmxpZ2h0ID0gdGhpcy5zbGlkZXJfYm94LnF1ZXJ5U2VsZWN0b3IoJy5saWdodCcpXHJcbiAgICAgICAgLy/mmK/lkKbmmK/lnoLnm7RcclxuICAgICAgICBpZiAodGhpcy5zbGlkZXJfYm94LmNsYXNzTGlzdC5jb250YWlucyhcInZlcnRpY2FsXCIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNfdmVydGljYWwgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v5piv5ZCm5piv56aB55SoXHJcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVyX2JveC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShcImRpc2FibGVkXCIpICYmIHRoaXMuc2xpZGVyX2JveC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShcImRpc2FibGVkXCIpLnZhbHVlLnRvTG93ZXJDYXNlKCkgIT0gXCJmYWxzZVwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNfZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzX2luaXRpYWxpemUgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5tYXhfZGF0YSA9IDEwMFxyXG4gICAgICAgIHRoaXMubWluX2RhdGEgPSAwXHJcbiAgICAgICAgdGhpcy5zdGVwX3NlcGFyYXRlcyA9IFtdXHJcbiAgICAgICAgdGhpcy5zdGVwX3BlcmNlbnRzID0gW11cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgLy/lj4LmlbDmoKHpqozvvIzlv4XopoHlhoXnva7lj4LmlbDpooTnrpdcclxuICAgICAgICAgICAgdmFyIHVfbWF4X2RhdGEgPSBwYXJzZUZsb2F0KG9wdGlvbnMubWF4X2RhdGEpXHJcbiAgICAgICAgICAgIGlmICh1X21heF9kYXRhIHx8IHVfbWF4X2RhdGEgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhfZGF0YSA9IHVfbWF4X2RhdGFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgdV9taW5fZGF0YSA9IHBhcnNlRmxvYXQob3B0aW9ucy5taW5fZGF0YSlcclxuICAgICAgICAgICAgaWYgKHVfbWluX2RhdGEgfHwgdV9taW5fZGF0YSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodV9taW5fZGF0YSA8IHRoaXMubWF4X2RhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbl9kYXRhID0gdV9taW5fZGF0YVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbl9kYXRhID0gdGhpcy5tYXhfZGF0YVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5q2l6ZW/5YiG5YmyXHJcbiAgICAgICAgICAgIHZhciBkYXRhX2FyZWEgPSB0aGlzLm1heF9kYXRhIC0gdGhpcy5taW5fZGF0YVxyXG4gICAgICAgICAgICB2YXIgdV9zdGVwID0gTWF0aC5hYnMocGFyc2VGbG9hdChvcHRpb25zLnN0ZXApKVxyXG4gICAgICAgICAgICBpZiAodV9zdGVwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YV9hcmVhIC8gdV9zdGVwID4gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdV9zdGVwID0gZGF0YV9hcmVhIC8gMjAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1X3N0ZXAgPSBNYXRoLmZsb29yKGRhdGFfYXJlYSAvIDEwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgYWRkZWRfc3RlcCA9IHRoaXMubWluX2RhdGFcclxuICAgICAgICAgICAgdGhpcy5zdGVwX3NlcGFyYXRlcy5wdXNoKGFkZGVkX3N0ZXApXHJcbiAgICAgICAgICAgIHdoaWxlIChhZGRlZF9zdGVwIDwgdGhpcy5tYXhfZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgYWRkZWRfc3RlcCArPSBwYXJzZUZsb2F0KHVfc3RlcClcclxuICAgICAgICAgICAgICAgIGFkZGVkX3N0ZXAgPSBwYXJzZUZsb2F0KGFkZGVkX3N0ZXAudG9GaXhlZCgzKSlcclxuICAgICAgICAgICAgICAgIGlmIChhZGRlZF9zdGVwID4gdGhpcy5tYXhfZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkX3N0ZXAgPSB0aGlzLm1heF9kYXRhXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBfc2VwYXJhdGVzLnB1c2goYWRkZWRfc3RlcClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3RlcF9zZXBhcmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBfc2VwYXJhdGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwX3BlcmNlbnRzLnB1c2goMSlcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHN0ZXBfcGVyY2VudCA9IGkgLyAodGhpcy5zdGVwX3NlcGFyYXRlcy5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwX3BlcmNlbnRzLnB1c2goc3RlcF9wZXJjZW50KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2xpZGVyX2JveC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldikgPT4ge1xyXG4gICAgICAgICAgICAvL+eCueWHu+iuvue9ruWAvFxyXG4gICAgICAgICAgICBpZiAodGhhdC5pc19kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2LnRhcmdldC5ub2RlTmFtZSAhPSBcIlNQQU5cIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuaXNfdmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXYudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImxpZ2h0XCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldFBvc2l0aW9uKHRoYXQuc2xpZGVyX2JveC5vZmZzZXRIZWlnaHQgLSAodGhhdC5zbGlkZXJfYm94Lm9mZnNldEhlaWdodCAtIHRoYXQubGlnaHQub2Zmc2V0SGVpZ2h0ICsgZXYub2Zmc2V0WSkpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zZXRQb3NpdGlvbih0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0IC0gZXYub2Zmc2V0WSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldFBvc2l0aW9uKGV2Lm9mZnNldFgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubW92ZW1lbnRYID0gMFxyXG4gICAgICAgIHRoaXMubW92ZW1lbnRZID0gMFxyXG4gICAgICAgIHRoaXMucHJldmlvdXNUb3VjaCA9IG51bGxcclxuICAgICAgICB0aGlzLmNydF92YWwgPSAwXHJcbiAgICAgICAgdGhpcy5zbGlkZXJfYm94LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChldikgPT4ge1xyXG4gICAgICAgICAgICAvL+agh+WHhuerr+aLluWKqOW8gOWni1xyXG4gICAgICAgICAgICBpZiAodGhhdC5pc19kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhhdC5tb3ZlbWVudFggPSAwXHJcbiAgICAgICAgICAgIHRoYXQubW92ZW1lbnRZID0gMFxyXG4gICAgICAgICAgICB0aGF0LnByZXZpb3VzVG91Y2ggPSBudWxsXHJcbiAgICAgICAgICAgIGlmICh0aGF0LmlzX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LmNydF92YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0ICogKHRoYXQuaGFuZGxlci5zdHlsZS5ib3R0b20ucmVwbGFjZShcIiVcIiwgXCJcIikgLyAxMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LmNydF92YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0V2lkdGggKiAodGhhdC5oYW5kbGVyLnN0eWxlLmxlZnQucmVwbGFjZShcIiVcIiwgXCJcIikgLyAxMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIF9kcmFnTW92ZSlcclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgX2RyYWdNb3ZlKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zbGlkZXJfYm94LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgLy90b3VjaOerr+aLluWKqOW8gOWni1xyXG4gICAgICAgICAgICBpZiAodGhhdC5pc19kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhhdC5tb3ZlbWVudFggPSAwXHJcbiAgICAgICAgICAgIHRoYXQubW92ZW1lbnRZID0gMFxyXG4gICAgICAgICAgICB0aGF0LnByZXZpb3VzVG91Y2ggPSBudWxsXHJcbiAgICAgICAgICAgIGlmICh0aGF0LmlzX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LmNydF92YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0ICogKHRoYXQuaGFuZGxlci5zdHlsZS5ib3R0b20ucmVwbGFjZShcIiVcIiwgXCJcIikgLyAxMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0LmNydF92YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0V2lkdGggKiAodGhhdC5oYW5kbGVyLnN0eWxlLmxlZnQucmVwbGFjZShcIiVcIiwgXCJcIikgLyAxMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF9kcmFnTW92ZSlcclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF9kcmFnTW92ZSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGZ1bmN0aW9uIF9kcmFnTW92ZShldikge1xyXG4gICAgICAgICAgICBpZiAoZXYudHlwZSA9PSBcInRvdWNobW92ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAvL3RvdWNo56uvXHJcbiAgICAgICAgICAgICAgICBpZiAodGhhdC5wcmV2aW91c1RvdWNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5tb3ZlbWVudFggKz0gZXYudG91Y2hlc1swXS5wYWdlWCAtIHRoYXQucHJldmlvdXNUb3VjaC5wYWdlWDtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0Lm1vdmVtZW50WSArPSBldi50b3VjaGVzWzBdLnBhZ2VZIC0gdGhhdC5wcmV2aW91c1RvdWNoLnBhZ2VZO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoYXQucHJldmlvdXNUb3VjaCA9IGV2LnRvdWNoZXNbMF07XHJcbiAgICAgICAgICAgICAgICBpZiAodGhhdC5pc192ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdfdmFsID0gdGhhdC5jcnRfdmFsIC0gdGhhdC5tb3ZlbWVudFlcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3X3ZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IDBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld192YWwgPiB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld192YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldFBvc2l0aW9uKG5ld192YWwpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdfdmFsID0gdGhhdC5jcnRfdmFsICsgdGhhdC5tb3ZlbWVudFhcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3X3ZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IDBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld192YWwgPiB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IHRoYXQuc2xpZGVyX2JveC5vZmZzZXRXaWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zZXRQb3NpdGlvbihuZXdfdmFsKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy/moIflh4bnq69cclxuICAgICAgICAgICAgICAgIHRoYXQubW92ZW1lbnRYICs9IGV2Lm1vdmVtZW50WFxyXG4gICAgICAgICAgICAgICAgdGhhdC5tb3ZlbWVudFkgKz0gZXYubW92ZW1lbnRZXHJcbiAgICAgICAgICAgICAgICBpZiAodGhhdC5pc192ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdfdmFsID0gdGhhdC5jcnRfdmFsIC0gdGhhdC5tb3ZlbWVudFlcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3X3ZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IDBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld192YWwgPiB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld192YWwgPSB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX3NldFBvc2l0aW9uKG5ld192YWwpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdfdmFsID0gdGhhdC5jcnRfdmFsICsgdGhhdC5tb3ZlbWVudFhcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3X3ZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IDBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld192YWwgPiB0aGF0LnNsaWRlcl9ib3gub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IHRoYXQuc2xpZGVyX2JveC5vZmZzZXRXaWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zZXRQb3NpdGlvbihuZXdfdmFsKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KClcclxuICAgICAgICB9XHJcbiAgICAgICAgLy/moLnmja7nm7jlhbPlgLzorr7nva4gc2xpZGVyIOagt+W8j1xyXG4gICAgICAgIHRoaXMuX3NldFBvc2l0aW9uID0gZnVuY3Rpb24gKHZhbCwgbm9DYWxsYmFjaykge1xyXG4gICAgICAgICAgICB2YXIgcGVyY2VudFxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc192ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgcGVyY2VudCA9IHBhcnNlRmxvYXQodmFsKSAvIHRoaXMuc2xpZGVyX2JveC5vZmZzZXRIZWlnaHRcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBwYXJzZUZsb2F0KHZhbCkgLyB0aGlzLnNsaWRlcl9ib3gub2Zmc2V0V2lkdGhcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgcmVzdWx0RGF0YVxyXG4gICAgICAgICAgICB2YXIgY2xvc2VzdF9pbmRleCA9IE1hdGguZmxvb3IodGhpcy5zdGVwX3NlcGFyYXRlcy5sZW5ndGggKiBwZXJjZW50KVxyXG4gICAgICAgICAgICBpZiAoY2xvc2VzdF9pbmRleCA+PSB0aGlzLnN0ZXBfc2VwYXJhdGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY2xvc2VzdF9pbmRleCA9IHRoaXMuc3RlcF9zZXBhcmF0ZXMubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdERhdGEgPSB0aGlzLnN0ZXBfc2VwYXJhdGVzW2Nsb3Nlc3RfaW5kZXhdXHJcbiAgICAgICAgICAgIHBlcmNlbnQgPSB0aGlzLnN0ZXBfcGVyY2VudHNbY2xvc2VzdF9pbmRleF1cclxuICAgICAgICAgICAgdmFyIHBlcmNlbnRDc3MgPSBwZXJjZW50ICogMTAwICsgJyUnXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpZ2h0LnN0eWxlLmhlaWdodCA9IHBlcmNlbnRDc3NcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5zdHlsZS5ib3R0b20gPSBwZXJjZW50Q3NzXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpZ2h0LnN0eWxlLndpZHRoID0gcGVyY2VudENzc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLnN0eWxlLmxlZnQgPSBwZXJjZW50Q3NzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zbGlkZXJfYm94LmRhdGFzZXQudmFsdWUgPSByZXN1bHREYXRhXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc19pbml0aWFsaXplKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmICFub0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jYWxsYmFjayhyZXN1bHREYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvL+iuvue9ruWIneWni+m7mOiupOWAvFxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdmFyIGRlZmF1bHRfZGF0YSA9IHBhcnNlRmxvYXQodGhpcy5vcHRpb25zLmRlZmF1bHRfZGF0YSlcclxuICAgICAgICAgICAgaWYgKGRlZmF1bHRfZGF0YSB8fCBkZWZhdWx0X2RhdGEgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTbGlkZXJEYXRhKGRlZmF1bHRfZGF0YSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2xpZGVyRGF0YSh0aGlzLm1pbl9kYXRhKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaXNfaW5pdGlhbGl6ZSA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/nlKjmiLflhazlvIDnmoTmlrnms5XvvIzorr7nva4gc2xpZGVyIOWAvFxyXG4gICAgc2V0U2xpZGVyRGF0YShkYXRhLCBub0NhbGxiYWNrID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoZGF0YSA8IHRoaXMubWluX2RhdGEpIHtcclxuICAgICAgICAgICAgZGF0YSA9IHRoaXMubWluX2RhdGFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRhdGEgPiB0aGlzLm1heF9kYXRhKSB7XHJcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1heF9kYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwZXJjZW50XHJcbiAgICAgICAgdmFyIG1pbl9kaWZmZXIgPSBOdW1iZXIuTUFYX1ZBTFVFXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnN0ZXBfc2VwYXJhdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjcnRfZGlmZmVyID0gTWF0aC5hYnMoZGF0YSAtIHRoaXMuc3RlcF9zZXBhcmF0ZXNbaV0pXHJcbiAgICAgICAgICAgIGlmIChjcnRfZGlmZmVyIDwgbWluX2RpZmZlcikge1xyXG4gICAgICAgICAgICAgICAgbWluX2RpZmZlciA9IGNydF9kaWZmZXJcclxuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSB0aGlzLnN0ZXBfcGVyY2VudHNbaV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY3J0X2RpZmZlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBtb3ZlX3ZhbFxyXG4gICAgICAgIGlmICh0aGlzLmlzX3ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgIG1vdmVfdmFsID0gcGFyc2VGbG9hdCh0aGlzLnNsaWRlcl9ib3gub2Zmc2V0SGVpZ2h0ICogcGVyY2VudClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtb3ZlX3ZhbCA9IHBhcnNlRmxvYXQodGhpcy5zbGlkZXJfYm94Lm9mZnNldFdpZHRoICogcGVyY2VudClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc2V0UG9zaXRpb24obW92ZV92YWwsIG5vQ2FsbGJhY2spXHJcbiAgICB9XHJcbiAgICAvL+eUqOaIt+WFrOW8gOeahOaWueazle+8jOiuvue9ruaYr+WQpuemgeeUqFxyXG4gICAgc2V0RGlzYWJsZWQoaXNfZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmlzX2Rpc2FibGVkID0gaXNfZGlzYWJsZWRcclxuICAgICAgICBpZiAoIXRoaXMuc2xpZGVyX2JveCB8fCAhdGhpcy5zbGlkZXJfYm94LmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc19kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB2YXIgYXR0cl9kaXNhYmxlZCA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpXHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVyX2JveC5hdHRyaWJ1dGVzLnNldE5hbWVkSXRlbShhdHRyX2Rpc2FibGVkKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVyX2JveC5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShcImRpc2FibGVkXCIpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjeV9zbGlkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Element/cy_html_slider.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/cy_html_tabs.js": -/*!*****************************************!*\ - !*** ./src/Obj/Element/cy_html_tabs.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar cy_tabs = /*#__PURE__*/function () {\n function cy_tabs(boxElm, clickTabCallBack, sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, cy_tabs);\n var elm;\n if (typeof boxElm === 'string') {\n elm = document.getElementById(boxElm);\n } else {\n elm = boxElm;\n }\n // let elm = document.getElementById(id);\n var pane = elm.getElementsByTagName('DIV-cy-tab-pane');\n var tabTop = \"
      \";\n var tabContent = \"
      \";\n var tabindex = 0;\n for (var i = 0; i < pane.length; i++) {\n var flag = false;\n if (sdk && sdk.tabHide && Array.isArray(sdk.tabHide)) {\n for (var m = 0; m < sdk.tabHide.length; m++) {\n if (pane[i].getAttribute('label') === sdk.tabHide[m]) {\n flag = true;\n break;\n }\n }\n }\n if (flag) {\n continue;\n }\n var style = 'display: none;';\n var active = '';\n if (tabindex == 0) {\n style = '';\n active = 'is-active';\n }\n tabTop = tabTop + \"\\n
      \\n
      \" + pane[i].getAttribute('label') + \"
      \\n
      \\n \";\n tabContent = tabContent + \"
      \" + pane[i].innerHTML + \"
      \";\n tabindex++;\n }\n tabTop = tabTop + \"
      \";\n tabContent = tabContent + \"
      \";\n var BoxElm = document.createElement('div');\n if (typeof boxElm === 'string') {\n BoxElm.setAttribute('id', boxElm);\n }\n BoxElm.setAttribute('class', 'DIV-cy-tabs');\n BoxElm.innerHTML = tabTop + tabContent;\n elm.parentNode.insertBefore(BoxElm, elm);\n elm.parentNode.removeChild(elm);\n\n // 点击事件\n var tabs = BoxElm.getElementsByClassName('DIV-cy-tab-pane-title-p');\n for (var _i = 0; _i < tabs.length; _i++) {\n tabs[_i].addEventListener('click', function (e) {\n var tabindex = e.target.getAttribute('tabindex');\n var contentElm = BoxElm.getElementsByClassName('DIV-cy-tab-content-pane');\n clickTabCallBack && clickTabCallBack(tabindex);\n for (var _i2 = 0; _i2 < contentElm.length; _i2++) {\n if (_i2 === parseInt(tabindex)) {\n contentElm[_i2].style.display = '';\n tabs[_i2].className = 'DIV-cy-tab-pane-title-p is-active';\n } else {\n contentElm[_i2].style.display = 'none';\n tabs[_i2].className = 'DIV-cy-tab-pane-title-p';\n }\n }\n contentElm[parseInt(tabindex)].style.display = '';\n });\n }\n this.clickTabCallBack = clickTabCallBack;\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(cy_tabs, [{\n key: \"clickTabCallBack\",\n value: function clickTabCallBack() {\n if (this.clickTabCallBack) {\n this.clickTabCallBack();\n }\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (cy_tabs);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvY3lfaHRtbF90YWJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9FbGVtZW50L2N5X2h0bWxfdGFicy5qcz80YjM5Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIGN5X3RhYnMge1xyXG4gIGNvbnN0cnVjdG9yKGJveEVsbSwgY2xpY2tUYWJDYWxsQmFjaywgc2RrKSB7XHJcbiAgICBsZXQgZWxtXHJcbiAgICBpZih0eXBlb2YgYm94RWxtID09PSAnc3RyaW5nJykge1xyXG4gICAgICBlbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChib3hFbG0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVsbSA9IGJveEVsbVxyXG4gICAgfVxyXG4gICAgLy8gbGV0IGVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIGxldCBwYW5lID0gZWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdESVYtY3ktdGFiLXBhbmUnKVxyXG5cclxuICAgIGxldCB0YWJUb3AgPSBgPGRpdiBjbGFzcz1cIkRJVi1jeS10YWItdG9wXCI+YFxyXG4gICAgbGV0IHRhYkNvbnRlbnQgPSBgPGRpdiBjbGFzcz1cIkRJVi1jeS10YWItY29udGVudFwiPmBcclxuICAgIGxldCB0YWJpbmRleCA9IDBcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFuZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmxhZyA9IGZhbHNlXHJcbiAgICAgIGlmIChzZGsgJiYgc2RrLnRhYkhpZGUgJiYgQXJyYXkuaXNBcnJheShzZGsudGFiSGlkZSkpIHtcclxuICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHNkay50YWJIaWRlLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICBpZiAocGFuZVtpXS5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykgPT09IHNkay50YWJIaWRlW21dKSB7XHJcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBsZXQgc3R5bGUgPSAnZGlzcGxheTogbm9uZTsnXHJcbiAgICAgIGxldCBhY3RpdmUgPSAnJ1xyXG4gICAgICBpZiAodGFiaW5kZXggPT0gMCkge1xyXG4gICAgICAgIHN0eWxlID0gJydcclxuICAgICAgICBhY3RpdmUgPSAnaXMtYWN0aXZlJ1xyXG4gICAgICB9XHJcbiAgICAgIHRhYlRvcCA9IHRhYlRvcCArIGBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkRJVi1jeS10YWItcGFuZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkRJVi1jeS10YWItcGFuZS10aXRsZS1wIGArIGFjdGl2ZSArIGBcIiB0YWJpbmRleD1cImAgKyB0YWJpbmRleCArIGBcIj48c3Bhbj5gICsgcGFuZVtpXS5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykgKyBgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgYFxyXG4gICAgICB0YWJDb250ZW50ID0gdGFiQ29udGVudCArIGA8ZGl2IGNsYXNzPVwiRElWLWN5LXRhYi1jb250ZW50LXBhbmUgJHtwYW5lW2ldLmNsYXNzTmFtZX1cIiBzdHlsZT1cImAgKyBzdHlsZSArIGBcIj5gICsgcGFuZVtpXS5pbm5lckhUTUwgKyBgPC9kaXY+YFxyXG4gICAgICB0YWJpbmRleCsrXHJcbiAgICB9XHJcbiAgICB0YWJUb3AgPSB0YWJUb3AgKyBgPC9kaXY+YFxyXG4gICAgdGFiQ29udGVudCA9IHRhYkNvbnRlbnQgKyBgPC9kaXY+YFxyXG5cclxuICAgIGxldCBCb3hFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGlmKHR5cGVvZiBib3hFbG0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIEJveEVsbS5zZXRBdHRyaWJ1dGUoJ2lkJywgYm94RWxtKVxyXG4gICAgfVxyXG4gICAgQm94RWxtLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnRElWLWN5LXRhYnMnKVxyXG4gICAgQm94RWxtLmlubmVySFRNTCA9IHRhYlRvcCArIHRhYkNvbnRlbnRcclxuICAgIGVsbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShCb3hFbG0sIGVsbSk7XHJcbiAgICBlbG0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbG0pO1xyXG5cclxuICAgIC8vIOeCueWHu+S6i+S7tlxyXG4gICAgbGV0IHRhYnMgPSBCb3hFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnRElWLWN5LXRhYi1wYW5lLXRpdGxlLXAnKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRhYnNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgIGxldCB0YWJpbmRleCA9IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKVxyXG4gICAgICAgIGxldCBjb250ZW50RWxtID0gQm94RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ0RJVi1jeS10YWItY29udGVudC1wYW5lJylcclxuICAgICAgICBjbGlja1RhYkNhbGxCYWNrICYmIGNsaWNrVGFiQ2FsbEJhY2sodGFiaW5kZXgpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50RWxtLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoaSA9PT0gcGFyc2VJbnQodGFiaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRFbG1baV0uc3R5bGUuZGlzcGxheSA9ICcnXHJcbiAgICAgICAgICAgIHRhYnNbaV0uY2xhc3NOYW1lID0gJ0RJVi1jeS10YWItcGFuZS10aXRsZS1wIGlzLWFjdGl2ZSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZW50RWxtW2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgICAgdGFic1tpXS5jbGFzc05hbWUgPSAnRElWLWN5LXRhYi1wYW5lLXRpdGxlLXAnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRlbnRFbG1bcGFyc2VJbnQodGFiaW5kZXgpXS5zdHlsZS5kaXNwbGF5ID0gJydcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsaWNrVGFiQ2FsbEJhY2sgPSBjbGlja1RhYkNhbGxCYWNrXHJcbiAgfVxyXG5cclxuICBjbGlja1RhYkNhbGxCYWNrKCkge1xyXG4gICAgaWYgKHRoaXMuY2xpY2tUYWJDYWxsQmFjaykge1xyXG4gICAgICB0aGlzLmNsaWNrVGFiQ2FsbEJhY2soKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY3lfdGFic1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Element/cy_html_tabs.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/datalist.js": -/*!*************************************!*\ - !*** ./src/Obj/Element/datalist.js ***! - \*************************************/ -/*! exports provided: legp */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legp\", function() { return _legp; });\nvar _legp = function legp(parentElement, ele) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var targetValue = null;\n return {\n that: Array.prototype.slice.call(parentElement.querySelectorAll(ele), 0),\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n if (e.stopPropagation) {\n //W3C阻止冒泡方法\n e.stopPropagation();\n } else {\n e.cancelBubble = true; //IE阻止冒泡方法\n }\n },\n hide: function hide() {\n _legp(parentElement, ele).that.forEach(function (item) {\n item.style.cssText += \"display:none;\";\n });\n },\n show: function show(num) {\n if (num !== undefined) {\n _legp(parentElement, ele).that[num].style.cssText += \"display:block;\";\n } else {\n _legp(parentElement, ele).that.forEach(function (item) {\n item.style.cssText += \"display:block;\";\n });\n }\n },\n legp_searchList: function legp_searchList(name) {\n var arr = [];\n _legp(parentElement, \"input[name=\" + name + \"]\").that.forEach(function (item) {\n arr.push(item.value);\n });\n return arr;\n },\n legp_search: function legp_search(tagData) {\n var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // var domId = legp(parentElement, ele).that[0];\n var domId = _legp(parentElement, ele).that[index];\n if (!domId) {\n return;\n }\n var html = \"
      \\n \".concat(search ? \"\" : \"\"), \"\\n
      \\n
      \\n
      \");\n domId.innerHTML = html;\n // domId.appendChild(dom);\n //获取当前广告\n function myClick() {\n _legp(parentElement, \".cy_datalist dl dd\").that.forEach(function (item) {\n item.onclick = function (e) {\n if (!this || !this.attributes) {\n return;\n }\n var value = this.attributes.value.value;\n targetValue = value;\n e.currentTarget.parentNode.previousElementSibling.value = value;\n // 为了触发绑定的事件处理器,我们可以手动创建一个事件并触发它\n var event = new Event('input', {\n bubbles: true\n });\n e.currentTarget.parentNode.previousElementSibling.dispatchEvent(event);\n // if (id != '') {\n // legp(\".AD\").that[0].innerHTML += \"\" + this.innerHTML + \"x\";\n // legp(\".AD\").that[0].parentNode.style.cssText += \"display:block;\";\n // for (var i = 0; i < tagData.length; i++) {\n // if (tagData[i].id == id) {\n // tagData.splice(i, 1);\n // i = tagData.length;\n // }\n // }\n // removeAdvertising();\n // }\n // legp(\".cy_datalist dl\").hide();\n // legp(\".cy_datalist input\").that[0].value = '';\n // e.stopPropagation();\n };\n });\n }\n\n //筛选\n _legp(parentElement, \".cy_datalist input\").that[index].oninput = function (e) {\n var val = this.value; //获取input值\n _legp(parentElement, \".cy_datalist dl\").hide();\n if (tagData.length > 0) {\n _legp(parentElement, \".cy_datalist dl\").show();\n var sear_1 = new RegExp(val);\n var judge_1 = false;\n _legp(parentElement, \".cy_datalist dl\").that[index].innerHTML = \"\";\n tagData.forEach(function (item) {\n if (sear_1.test(item.name)) {\n judge_1 = true;\n _legp(parentElement, \".cy_datalist dl\").that[index].innerHTML += \"
      \" + item.name + \"
      \";\n }\n });\n if (!judge_1) {\n _legp(parentElement, \".cy_datalist dl\").that[index].innerHTML = \"
      \\u6682\\u65E0\\u6570\\u636E
      \";\n }\n myClick();\n }\n };\n //显示没被选择的\n _legp(parentElement, \".cy_datalist input\").that[index].onclick = function (e) {\n _legp(parentElement, \".cy_datalist dl\").hide();\n var num = e.srcElement.classList[1] * 1;\n num = num || 0;\n if (_legp(parentElement, \".cy_datalist dl\").that[num].style.display === 'none') {\n if (tagData.length == 0) {\n this.innerHTML = \"暂无数据\";\n } else {\n _legp(parentElement, \".cy_datalist dl\").show(num);\n }\n _legp(parentElement, \".cy_datalist dl\").that[num].innerHTML = \"\";\n tagData.forEach(function (item) {\n _legp(parentElement, \".cy_datalist dl\").that[num].innerHTML += \"
      \" + item.name + \"
      \";\n });\n myClick();\n }\n e.stopPropagation();\n };\n // //封装\n // function clickoutSide(nameClass, callback) {\n // \t// 全局注册点击事件\n // \tdocument.onclick = function (e) {\n // \t\t//若点击元素为目标元素则返回\n // \t\tif (e.target.className === nameClass) return\n // \t\t//否则执行回调函数\n // \t\tcallback()\n // \t}\n // }\n //隐藏\n document.addEventListener('click', function () {\n _legp(parentElement, \".cy_datalist dl\").hide();\n // legp(parentElement, \".cy_datalist input\").that[0].value = \"\";\n });\n },\n legp_searchActive: function legp_searchActive(value) {\n targetValue = value;\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvZGF0YWxpc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0VsZW1lbnQvZGF0YWxpc3QuanM/YmRhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbGVncCA9IGZ1bmN0aW9uIChwYXJlbnRFbGVtZW50LCBlbGUsIGluZGV4ID0gMCkge1xyXG4gIGxldCB0YXJnZXRWYWx1ZSA9IG51bGxcclxuICByZXR1cm4gKHtcclxuICAgIHRoYXQ6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChlbGUpLCAwKSxcclxuICAgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50O1xyXG4gICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHsgLy9XM0PpmLvmraLlhpLms6Hmlrnms5VcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsgLy9JRemYu+atouWGkuazoeaWueazlVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgaGlkZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIGVsZSkudGhhdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgaXRlbS5zdHlsZS5jc3NUZXh0ICs9IFwiZGlzcGxheTpub25lO1wiO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBzaG93OiBmdW5jdGlvbiAobnVtKSB7XHJcbiAgICAgIGlmIChudW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxlZ3AocGFyZW50RWxlbWVudCwgZWxlKS50aGF0W251bV0uc3R5bGUuY3NzVGV4dCArPSBcImRpc3BsYXk6YmxvY2s7XCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGVncChwYXJlbnRFbGVtZW50LCBlbGUpLnRoYXQuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgaXRlbS5zdHlsZS5jc3NUZXh0ICs9IFwiZGlzcGxheTpibG9jaztcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxlZ3Bfc2VhcmNoTGlzdDogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgbGV0IGFyciA9IFtdO1xyXG4gICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiaW5wdXRbbmFtZT1cIiArIG5hbWUgKyBcIl1cIikudGhhdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGFyci5wdXNoKGl0ZW0udmFsdWUpXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYXJyO1xyXG4gICAgfSxcclxuICAgIGxlZ3Bfc2VhcmNoOiBmdW5jdGlvbiAodGFnRGF0YSwgc2VhcmNoID0gZmFsc2UpIHtcclxuICAgICAgLy8gdmFyIGRvbUlkID0gbGVncChwYXJlbnRFbGVtZW50LCBlbGUpLnRoYXRbMF07XHJcbiAgICAgIHZhciBkb21JZCA9IGxlZ3AocGFyZW50RWxlbWVudCwgZWxlKS50aGF0W2luZGV4XTtcclxuICAgICAgaWYgKCFkb21JZCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHZhciBodG1sID0gYDxkaXYgY2xhc3M9XCJjeV9kYXRhbGlzdFwiPjxpIGNsYXNzPVwieWotY3VzdG9tLWljb24tYXJyb3ctZG93blwiPjwvaT5cXG4gICR7c2VhcmNoID8gJzxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiXFx1OEY5M1xcdTUxNjVcXHU2MjE2XFx1OTAwOVxcdTYyRTlcIiBhdXRvY29tcGxldGU9XCJvZmZcIj4nIDogYDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZGF0YWxpc3QgJHtpbmRleH1cIiByZWFkb25seT1cInJlYWRvbmx5XCIgcGxhY2Vob2xkZXI9XCJcXHU4YmY3XFx1OTAwOVxcdTYyZTlcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5gfVxcbiAgICAgICAgICAgICAgICAgICAgPGRsIHN0eWxlPVwiZGlzcGxheTogbm9uZTtwb3NpdGlvbjogYWJzb2x1dGU7YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO2NvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXNkay1iYXNlLXJnYiksIDEpO2JvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itc2RrLWJhc2UtcmdiKSwgMC4yKTtib3JkZXItcmFkaXVzOiAzcHg7bWFyZ2luOiAycHggMHB4O21heC1oZWlnaHQ6IDMwMHB4O292ZXJmbG93LXg6IGhpZGRlbjt3aGl0ZS1zcGFjZTogbm93cmFwOyBmb250LXNpemU6IDEycHg7ei1pbmRleDogODtcIj5cXG4gICAgICAgICAgICAgICAgICAgIDwvZGw+XFxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XHJcbiAgICAgIGRvbUlkLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgIC8vIGRvbUlkLmFwcGVuZENoaWxkKGRvbSk7XHJcbiAgICAgIC8v6I635Y+W5b2T5YmN5bm/5ZGKXHJcbiAgICAgIGZ1bmN0aW9uIG15Q2xpY2soKSB7XHJcbiAgICAgICAgbGVncChwYXJlbnRFbGVtZW50LCBcIi5jeV9kYXRhbGlzdCBkbCBkZFwiKS50aGF0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIGl0ZW0ub25jbGljayA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcyB8fCAhdGhpcy5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHRyaWJ1dGVzLnZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcudmFsdWUgPSB2YWx1ZVxyXG4gICAgICAgICAgICAvLyDkuLrkuobop6blj5Hnu5HlrprnmoTkuovku7blpITnkIblmajvvIzmiJHku6zlj6/ku6XmiYvliqjliJvlu7rkuIDkuKrkuovku7blubbop6blj5HlroNcclxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQucGFyZW50Tm9kZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgICAgICAvLyBpZiAoaWQgIT0gJycpIHtcclxuICAgICAgICAgICAgLy8gICAgIGxlZ3AoXCIuQURcIikudGhhdFswXS5pbm5lckhUTUwgKz0gXCI8YSBocmVmPVxcXCJqYXZhc2NyaXB0OjtcXFwiIGNsYXNzPVxcXCJsYWJlbFxcXCI+PHNwYW4+XCIgKyB0aGlzLmlubmVySFRNTCArIFwiPC9zcGFuPjxpbnB1dCB0eXBlPVxcXCJoaWRkZW5cXFwiIG5hbWU9XFxcIlwiICsgbmFtZSArIFwiXFxcIiBpZD1cXFwiXCIgKyBpZCArIFwiXFxcIiB2YWx1ZT1cXFwiXCIgKyBpZCArIFwiXFxcIi8+PHNwYW4gY2xhc3M9XFxcImNsb3NlXFxcIj54PC9zcGFuPjwvYT5cIjtcclxuICAgICAgICAgICAgLy8gICAgIGxlZ3AoXCIuQURcIikudGhhdFswXS5wYXJlbnROb2RlLnN0eWxlLmNzc1RleHQgKz0gXCJkaXNwbGF5OmJsb2NrO1wiO1xyXG4gICAgICAgICAgICAvLyAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWdEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKHRhZ0RhdGFbaV0uaWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGFnRGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGkgPSB0YWdEYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICByZW1vdmVBZHZlcnRpc2luZygpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGxlZ3AoXCIuY3lfZGF0YWxpc3QgZGxcIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAvLyBsZWdwKFwiLmN5X2RhdGFsaXN0IGlucHV0XCIpLnRoYXRbMF0udmFsdWUgPSAnJztcclxuICAgICAgICAgICAgLy8gZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v562b6YCJXHJcbiAgICAgIGxlZ3AocGFyZW50RWxlbWVudCwgXCIuY3lfZGF0YWxpc3QgaW5wdXRcIikudGhhdFtpbmRleF0ub25pbnB1dCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdmFyIHZhbCA9IHRoaXMudmFsdWU7IC8v6I635Y+WaW5wdXTlgLxcclxuICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLmhpZGUoKTtcclxuICAgICAgICBpZiAodGFnRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLnNob3coKTtcclxuICAgICAgICAgIHZhciBzZWFyXzEgPSBuZXcgUmVnRXhwKHZhbCk7XHJcbiAgICAgICAgICB2YXIganVkZ2VfMSA9IGZhbHNlO1xyXG4gICAgICAgICAgbGVncChwYXJlbnRFbGVtZW50LCBcIi5jeV9kYXRhbGlzdCBkbFwiKS50aGF0W2luZGV4XS5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgdGFnRGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWFyXzEudGVzdChpdGVtLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAganVkZ2VfMSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgbGVncChwYXJlbnRFbGVtZW50LCBcIi5jeV9kYXRhbGlzdCBkbFwiKS50aGF0W2luZGV4XS5pbm5lckhUTUwgKz0gXCI8ZGQgY2xhc3M9XFxcIlwiICsgKCh0YXJnZXRWYWx1ZSA9PT0gaXRlbS52YWx1ZSkgPyAnYWN0aXZlJyA6ICcnKSArIFwiXFxcIiBzdHlsZT1cXFwibWFyZ2luOiAwOyBwYWRkaW5nOiA1cHggNXB4OyBjb2xvcjogI2ZmZjtjdXJzb3I6IHBvaW50ZXI7XFxcIiB2YWx1ZT1cXFwiXCIgKyBpdGVtLnZhbHVlICsgXCJcXFwiPlwiICsgaXRlbS5uYW1lICsgXCI8L2RkPlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICghanVkZ2VfMSkge1xyXG4gICAgICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLnRoYXRbaW5kZXhdLmlubmVySFRNTCA9IFwiPGRkIHN0eWxlPVxcXCJwYWRkaW5nOiAxMHB4IDIwcHg7IGNvbG9yOiAjZmZmO1xcXCI+XFx1NjY4MlxcdTY1RTBcXHU2NTcwXFx1NjM2RTwvZGQ+XCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBteUNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICAvL+aYvuekuuayoeiiq+mAieaLqeeahFxyXG4gICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGlucHV0XCIpLnRoYXRbaW5kZXhdLm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkge1xyXG5cclxuICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLmhpZGUoKTtcclxuICAgICAgICBsZXQgbnVtID0gZS5zcmNFbGVtZW50LmNsYXNzTGlzdFsxXSAqIDFcclxuICAgICAgICBudW0gPSBudW0gfHwgMFxyXG4gICAgICAgIGlmIChsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLnRoYXRbbnVtXS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHtcclxuICAgICAgICAgIGlmICh0YWdEYXRhLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIVE1MID0gXCLmmoLml6DmlbDmja5cIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLnNob3cobnVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxlZ3AocGFyZW50RWxlbWVudCwgXCIuY3lfZGF0YWxpc3QgZGxcIikudGhhdFtudW1dLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgICB0YWdEYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgbGVncChwYXJlbnRFbGVtZW50LCBcIi5jeV9kYXRhbGlzdCBkbFwiKS50aGF0W251bV0uaW5uZXJIVE1MICs9IFwiPGRkIGNsYXNzPVxcXCJcIiArICgodGFyZ2V0VmFsdWUgPT09IGl0ZW0udmFsdWUpID8gJ2FjdGl2ZScgOiAnJykgKyBcIlxcXCIgc3R5bGU9XFxcIm1hcmdpbjogMDsgcGFkZGluZzogNXB4IDVweDsgY29sb3I6ICNmZmY7Y3Vyc29yOiBwb2ludGVyO1xcXCIgdmFsdWU9XFxcIlwiICsgaXRlbS52YWx1ZSArIFwiXFxcIj5cIiArIGl0ZW0ubmFtZSArIFwiPC9kZD5cIjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgbXlDbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9O1xyXG4gICAgICAvLyAvL+WwgeijhVxyXG4gICAgICAvLyBmdW5jdGlvbiBjbGlja291dFNpZGUobmFtZUNsYXNzLCBjYWxsYmFjaykge1xyXG4gICAgICAvLyBcdC8vIOWFqOWxgOazqOWGjOeCueWHu+S6i+S7tlxyXG4gICAgICAvLyBcdGRvY3VtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAvLyBcdFx0Ly/oi6Xngrnlh7vlhYPntKDkuLrnm67moIflhYPntKDliJnov5Tlm55cclxuICAgICAgLy8gXHRcdGlmIChlLnRhcmdldC5jbGFzc05hbWUgPT09IG5hbWVDbGFzcykgcmV0dXJuXHJcbiAgICAgIC8vIFx0XHQvL+WQpuWImeaJp+ihjOWbnuiwg+WHveaVsFxyXG4gICAgICAvLyBcdFx0Y2FsbGJhY2soKVxyXG4gICAgICAvLyBcdH1cclxuICAgICAgLy8gfVxyXG4gICAgICAvL+makOiXj1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGRsXCIpLmhpZGUoKTtcclxuICAgICAgICAvLyBsZWdwKHBhcmVudEVsZW1lbnQsIFwiLmN5X2RhdGFsaXN0IGlucHV0XCIpLnRoYXRbMF0udmFsdWUgPSBcIlwiO1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGxlZ3Bfc2VhcmNoQWN0aXZlOiBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgdGFyZ2V0VmFsdWUgPSB2YWx1ZVxyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IHsgbGVncCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Element/datalist.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/elm_html.js": -/*!*************************************!*\ - !*** ./src/Obj/Element/elm_html.js ***! - \*************************************/ -/*! exports provided: attributeElm, labelStyleElm1, labelStyleElm2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attributeElm\", function() { return attributeElm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelStyleElm1\", function() { return labelStyleElm1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelStyleElm2\", function() { return labelStyleElm2; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../on */ \"./src/on/index.js\");\n/* harmony import */ var _Pagination__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Pagination */ \"./src/Obj/Element/Pagination.js\");\n/* harmony import */ var _datalist__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./datalist */ \"./src/Obj/Element/datalist.js\");\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\nfunction attributeElm(that) {\n var host = Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getHost\"])();\n that.cameraSelect = cameraSelect;\n that.ISCSelect = ISCSelect;\n that.goodsSelect = goodsSelect;\n that.goodsFilter = goodsFilter;\n that.cameraName = '';\n that.ISCName = '';\n var type = {\n '1': '海康',\n '2': '大华'\n };\n var cameraPageSize = 5;\n var iscPageSize = 5;\n var goodsPageSize = 999999;\n function cameraSelect(page) {\n if (!that.attributeSelect) {\n return;\n } else {\n var flag = false;\n for (var i = 0; i < that.attributeSelect.length; i++) {\n if (that.attributeSelect[i].key === 'camera') {\n flag = true;\n break;\n }\n }\n if (!flag) {\n return;\n }\n }\n var firstPage = page;\n page = !page || _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(page) === 'object' ? 1 : page;\n var attributeCameraElm;\n if (that._DialogObject && that._DialogObject._element && that._DialogObject._element.content) {\n var paginationElm = that._DialogObject._element.content.getElementsByClassName('pagination')[0];\n attributeCameraElm = that._DialogObject._element.content.getElementsByClassName('attribute-content-camera')[0];\n if (!paginationElm) {\n return;\n }\n if (!attributeCameraElm) {\n return;\n }\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(paginationElm, 1, 10, 1);\n } else {\n return;\n }\n var url = \"\";\n var params = {\n cameraName: that.cameraName,\n page: page,\n pageSize: cameraPageSize\n };\n var queryString = new URLSearchParams(params).toString();\n if (host.endsWith(\"yjearth4.0\")) url = \"\".concat(host, \"/api/v1/cameraData/list?\").concat(queryString);else url = \"\".concat(host, \"/yjearth4.0/api/v1/cameraData/list?\").concat(queryString);\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.json().then(function (data) {\n if (data.code === 200 || data.code === 0) {\n if (!that._DialogObject || !that._DialogObject._element || !that._DialogObject._element.content || !attributeCameraElm) {\n return;\n }\n var _paginationElm = attributeCameraElm.getElementsByClassName('pagination')[0];\n var table = that._DialogObject._element.content.getElementsByClassName('camera-table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (data.rows) {\n data.data = {\n list: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(data.rows),\n total: data.total\n };\n }\n if (data.data) {\n if (data.data.list && data.data.list.length > 0) {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm, data.data.total, cameraPageSize, 1, function (pageIndex) {\n that.cameraSelect(pageIndex);\n });\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n tableContent.style.display = 'inline-flex';\n var checkboxArray = [];\n var _loop = function _loop(_i) {\n var tr = \"\\n
      \\n
      \\n \\n \\u7ED1\\u5B9A\\n
      \\n
      \").concat(data.data.list[_i].cameraName, \"
      \\n
      \").concat(type[data.data.list[_i].type], \"
      \\n
      \").concat(data.data.list[_i].ip, \"
      \\n
      \").concat(data.data.list[_i].port, \"
      \\n
      \").concat(data.data.list[_i].userName, \"
      \\n
      \").concat(data.data.list[_i].passWord || data.data.list[_i].password, \"
      \\n
      \");\n var trElm = document.createRange().createContextualFragment(tr);\n var checkbox = trElm.querySelector('input[type=\"checkbox\"]');\n checkboxArray.push(checkbox);\n checkbox.addEventListener('change', function () {\n if (checkbox.checked) {\n // 只选中一个\n that.attributeCamera = [];\n that.attributeCamera.push(data.data.list[_i]);\n for (var j = 0; j < checkboxArray.length; j++) {\n if (checkboxArray[j] !== checkbox) {\n checkboxArray[j].checked = false;\n }\n }\n } else {\n var newArray = that.attributeCamera.filter(function (item) {\n if ('deviceId' in data.data.list[_i]) {\n return item.deviceId !== data.data.list[_i].deviceId;\n }\n });\n that.attributeCamera = newArray;\n }\n });\n tableContent.appendChild(trElm);\n for (var m = 0; m < that.attributeCamera.length; m++) {\n if ('deviceId' in data.data.list[_i] ? that.attributeCamera[m].deviceId === data.data.list[_i].deviceId : false) {\n checkbox.checked = true;\n break;\n }\n }\n };\n for (var _i = 0; _i < data.data.list.length; _i++) {\n _loop(_i);\n }\n }\n if (data.data && data.data.total) {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm, data.data.total, cameraPageSize, page, function (pageIndex) {\n that.cameraSelect(pageIndex);\n });\n }\n } else {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm, 1, cameraPageSize, 1);\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n tableContent.style.display = 'none';\n }\n } else {\n console.error(data.message);\n }\n });\n }\n });\n\n // 查询全部\n if (!firstPage) {\n var params2 = {\n page: 1,\n pageSize: 99999999\n };\n var queryString2 = new URLSearchParams(params2).toString();\n if (host.endsWith(\"yjearth4.0\")) url = \"\".concat(host, \"/api/v1/cameraData/list?\").concat(queryString2);else url = \"\".concat(host, \"/yjearth4.0/api/v1/cameraData/list?\").concat(queryString2);\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.json().then(function (data) {\n if (data.code === 200 || data.code === 0) {\n if (!that._DialogObject || !that._DialogObject._element || !that._DialogObject._element.content || !attributeCameraElm) {\n return;\n }\n if (data.rows) {\n data.data = {\n list: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(data.rows),\n total: data.total\n };\n }\n if (data.data) {\n if (data.data.list) {\n for (var _i2 = that.attributeCamera.length - 1; _i2 >= 0; _i2--) {\n var _flag = false;\n for (var m = 0; m < data.data.list.length; m++) {\n if (that.attributeCamera[_i2].deviceId === data.data.list[m].deviceId) {\n _flag = true;\n break;\n }\n }\n if (!_flag) {\n that.attributeCamera.splice(_i2, 1);\n }\n }\n } else {\n that.attributeCamera = [];\n }\n } else {\n that.attributeCamera = [];\n }\n } else {\n console.error(data.message);\n }\n });\n }\n });\n }\n }\n function ISCSelect(page) {\n if (!that.attributeSelect) {\n return;\n } else {\n var flag = false;\n for (var i = 0; i < that.attributeSelect.length; i++) {\n if (that.attributeSelect[i].key === 'isc') {\n flag = true;\n break;\n }\n }\n if (!flag) {\n return;\n }\n }\n page = !page || _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(page) === 'object' ? 1 : page;\n var attributeCameraElm;\n if (that._DialogObject && that._DialogObject._element && that._DialogObject._element.content) {\n var paginationElm = that._DialogObject._element.content.getElementsByClassName('pagination')[0];\n attributeCameraElm = that._DialogObject._element.content.getElementsByClassName('attribute-content-isc')[0];\n if (!paginationElm) {\n return;\n }\n if (!attributeCameraElm) {\n return;\n }\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(paginationElm, 1, 10, 1);\n } else {\n return;\n }\n var url = \"\";\n var params = {\n // name: that.iscName,\n page: page,\n page_size: iscPageSize\n };\n var queryString = new URLSearchParams(params).toString();\n if (host.endsWith(\"yjearth4.0\")) url = \"\".concat(host, \"/api/v1/isc/list?\").concat(queryString);else url = \"\".concat(host, \"/yjearth4.0/api/v1/isc/list?\").concat(queryString);\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.json().then(function (data) {\n if (data.code === 200 || data.code === 0) {\n if (!that._DialogObject || !that._DialogObject._element || !that._DialogObject._element.content || !attributeCameraElm) {\n return;\n }\n var _paginationElm2 = attributeCameraElm.getElementsByClassName('pagination')[0];\n var table = that._DialogObject._element.content.getElementsByClassName('isc-table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (data.rows) {\n data.data = {\n list: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(data.rows),\n total: data.total\n };\n }\n if (data.data) {\n if (data.data.list && data.data.list.length > 0) {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm2, data.data.total, iscPageSize, 1, function (pageIndex) {\n that.ISCSelect(pageIndex);\n });\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n tableContent.style.display = 'flex';\n var _loop2 = function _loop2(_i3) {\n var tr = \"\\n
      \\n
      \\n \\n \\u7ED1\\u5B9A\\n
      \\n
      \").concat(data.data.list[_i3].name, \"
      \\n
      \").concat(data.data.list[_i3].status ? '在线' : '离线', \"
      \\n
      \");\n var trElm = document.createRange().createContextualFragment(tr);\n var checkbox = trElm.querySelector('input[type=\"checkbox\"]');\n checkbox.addEventListener('change', function () {\n if (checkbox.checked) {\n that.attributeISC.push(data.data.list[_i3]);\n } else {\n var newArray = that.attributeISC.filter(function (item) {\n if ('ID' in data.data.list[_i3]) {\n return item.ID !== data.data.list[_i3].ID;\n } else {\n return item.id !== data.data.list[_i3].id;\n }\n });\n that.attributeISC = newArray;\n }\n });\n tableContent.appendChild(trElm);\n for (var m = 0; m < that.attributeISC.length; m++) {\n if ('ID' in data.data.list[_i3] ? that.attributeISC[m].ID === data.data.list[_i3].ID : that.attributeISC[m].id === data.data.list[_i3].id) {\n checkbox.checked = true;\n break;\n }\n }\n };\n for (var _i3 = 0; _i3 < data.data.list.length; _i3++) {\n _loop2(_i3);\n }\n }\n if (data.data && data.data.total) {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm2, data.data.total, iscPageSize, page, function (pageIndex) {\n that.ISCSelect(pageIndex);\n });\n }\n } else {\n Object(_Pagination__WEBPACK_IMPORTED_MODULE_4__[\"generatePagination\"])(_paginationElm2, 1, iscPageSize, 1);\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n tableContent.style.display = 'none';\n }\n } else {\n console.error(data.message);\n }\n });\n }\n });\n }\n function goodsSelect(page) {\n if (!that.attributeSelect) {\n return;\n } else {\n var flag = false;\n for (var i = 0; i < that.attributeSelect.length; i++) {\n if (that.attributeSelect[i].key === 'goods') {\n flag = true;\n break;\n }\n }\n if (!flag) {\n return;\n }\n }\n page = !page || _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default()(page) === 'object' ? 1 : page;\n var attributeElm;\n if (that._DialogObject && that._DialogObject._element && that._DialogObject._element.content) {\n var paginationElm = that._DialogObject._element.content.getElementsByClassName('pagination')[0];\n attributeElm = that._DialogObject._element.content.getElementsByClassName('attribute-content-goods')[0];\n if (!paginationElm) {\n return;\n }\n if (!attributeElm) {\n return;\n }\n // generatePagination(paginationElm, 1, 10, 1);\n } else {\n return;\n }\n var url = \"\";\n var params = {\n page: page,\n page_size: goodsPageSize\n };\n var queryString = new URLSearchParams(params).toString();\n if (host.endsWith(\"yjearth4.0\")) url = \"\".concat(host, \"/api/v1/goods/list?\").concat(queryString);else url = \"\".concat(host, \"/yjearth4.0/api/v1/goods/list?\").concat(queryString);\n fetch(url, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_3__[\"getToken\"])()\n }\n }).then(function (response) {\n if (response.status === 200) {\n response.json().then(function (data) {\n if (data.code === 200 || data.code === 0) {\n if (!that._DialogObject || !that._DialogObject._element || !that._DialogObject._element.content || !attributeElm) {\n return;\n }\n var _paginationElm3 = attributeElm.getElementsByClassName('pagination')[0];\n var table = that._DialogObject._element.content.getElementsByClassName('goods-table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (data.rows) {\n data.data = {\n list: _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(data.rows),\n total: data.total\n };\n }\n if (data.data) {\n if (data.data.list && data.data.list.length > 0) {\n that._allGoodsList = data.data.list;\n // generatePagination(paginationElm, data.data.total, goodsPageSize, 1, (pageIndex) => {\n // that.goodsSelect(pageIndex)\n // });\n for (var _i4 = that.attributeGoods.length - 1; _i4 >= 0; _i4--) {\n var _flag2 = false;\n for (var m = 0; m < data.data.list.length; m++) {\n if ('ID' in data.data.list[m]) {\n if (data.data.list[m].ID === that.attributeGoods[_i4].ID) {\n _flag2 = true;\n break;\n }\n } else if ('id' in data.data.list[m]) {\n if (data.data.list[m].id === that.attributeGoods[_i4].id) {\n _flag2 = true;\n break;\n }\n }\n }\n if (!_flag2) {\n that.attributeGoods.splice(_i4, 1);\n }\n }\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n tableContent.style.display = 'block';\n tableContent.style.maxHeight = '150px';\n var _loop3 = function _loop3(_i5) {\n var tr = \"\\n
      \\n
      \\n \".concat(_i5 + 1, \"\\n
      \\n
      \").concat(data.data.list[_i5].name, \"
      \\n
      \\n
      \");\n var trElm = document.createRange().createContextualFragment(tr);\n var inputElm = trElm.querySelector('input[type=\"number\"]');\n inputElm.value = 0;\n for (var _m = 0; _m < that.attributeGoods.length; _m++) {\n if ('ID' in data.data.list[_i5]) {\n if (data.data.list[_i5].ID === that.attributeGoods[_m].ID) {\n inputElm.value = that.attributeGoods[_m].cnt;\n that.attributeGoods[_m].name = data.data.list[_i5].name;\n }\n } else if ('id' in data.data.list[_i5]) {\n if (data.data.list[_i5].id === that.attributeGoods[_m].id) {\n inputElm.value = that.attributeGoods[_m].cnt;\n }\n }\n }\n inputElm.addEventListener('blur', function (e) {\n var value = Number(e.target.value);\n inputElm.value = value;\n var flag = false;\n for (var _m2 = that.attributeGoods.length - 1; _m2 >= 0; _m2--) {\n if ('ID' in data.data.list[_i5]) {\n if (data.data.list[_i5].ID === that.attributeGoods[_m2].ID) {\n flag = true;\n if (value) {\n that.attributeGoods[_m2].cnt = value;\n } else {\n that.attributeGoods.splice(_m2, 1);\n }\n break;\n }\n } else if ('id' in data.data.list[_i5]) {\n if (data.data.list[_i5].id === that.attributeGoods[_m2].id) {\n flag = true;\n if (value) {\n that.attributeGoods[_m2].cnt = value;\n } else {\n that.attributeGoods.splice(_m2, 1);\n }\n break;\n }\n }\n }\n if (!flag) {\n if (!value) {\n return;\n }\n var item = {\n name: data.data.list[_i5].name,\n cnt: value\n };\n if ('ID' in data.data.list[_i5]) {\n item.ID = data.data.list[_i5].ID;\n } else if ('id' in data.data.list[_i5]) {\n item.id = data.data.list[_i5].id;\n }\n that.attributeGoods.push(_objectSpread({}, item));\n }\n });\n inputElm.addEventListener('input', function (e) {\n if (e.data && isNaN(Number(e.data))) {\n if (e.data != '.') {\n inputElm.value = Number(inputElm.value);\n }\n return;\n }\n var value = Number(e.target.value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n inputElm.value = value;\n var flag = false;\n for (var _m3 = that.attributeGoods.length - 1; _m3 >= 0; _m3--) {\n if ('ID' in data.data.list[_i5]) {\n if (data.data.list[_i5].ID === that.attributeGoods[_m3].ID) {\n flag = true;\n if (value) {\n that.attributeGoods[_m3].cnt = value;\n } else {\n that.attributeGoods.splice(_m3, 1);\n }\n break;\n }\n } else if ('id' in data.data.list[_i5]) {\n if (data.data.list[_i5].id === that.attributeGoods[_m3].id) {\n flag = true;\n if (value) {\n that.attributeGoods[_m3].cnt = value;\n } else {\n that.attributeGoods.splice(_m3, 1);\n }\n break;\n }\n }\n }\n if (!flag) {\n if (!value) {\n return;\n }\n var item = {\n name: data.data.list[_i5].name,\n cnt: value\n };\n if ('ID' in data.data.list[_i5]) {\n item.ID = data.data.list[_i5].ID;\n } else if ('id' in data.data.list[_i5]) {\n item.id = data.data.list[_i5].id;\n }\n that.attributeGoods.push(_objectSpread({}, item));\n }\n });\n tableContent.appendChild(trElm);\n };\n for (var _i5 = 0; _i5 < data.data.list.length; _i5++) {\n _loop3(_i5);\n }\n }\n if (data.data && data.data.total) {\n // generatePagination(paginationElm, data.data.total, goodsPageSize, page, (pageIndex) => {\n // that.goodsSelect(pageIndex)\n // });\n }\n } else {\n // generatePagination(paginationElm, 1, goodsPageSize, 1);\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n tableContent.style.display = 'none';\n }\n } else {\n console.error(data.message);\n }\n });\n }\n });\n }\n function goodsFilter() {\n var list = [];\n if (that._allGoodsList && that._allGoodsList.length) {\n var keywords = that._DialogObject._element.content.getElementsByClassName('goods-select-input')[0].value;\n list = that._allGoodsList.filter(function (item) {\n return item.name.indexOf(keywords) !== -1;\n });\n }\n var table = that._DialogObject._element.content.getElementsByClassName('goods-table')[0];\n var tableContent = table.getElementsByClassName('table-body')[0];\n tableContent.innerHTML = '';\n if (list.length > 0) {\n // generatePagination(paginationElm, data.data.total, goodsPageSize, 1, (pageIndex) => {\n // that.goodsSelect(pageIndex)\n // });\n table.getElementsByClassName('table-empty')[0].style.display = 'none';\n tableContent.style.display = 'block';\n tableContent.style.maxHeight = '150px';\n var _loop4 = function _loop4(i) {\n var tr = \"\\n
      \\n
      \\n \".concat(i + 1, \"\\n
      \\n
      \").concat(list[i].name, \"
      \\n
      \\n
      \");\n var trElm = document.createRange().createContextualFragment(tr);\n var inputElm = trElm.querySelector('input[type=\"number\"]');\n inputElm.value = 0;\n for (var m = 0; m < that.attributeGoods.length; m++) {\n if ('ID' in list[i]) {\n if (list[i].ID === that.attributeGoods[m].ID) {\n inputElm.value = that.attributeGoods[m].cnt;\n }\n } else if ('id' in list[i]) {\n if (list[i].id === that.attributeGoods[m].id) {\n inputElm.value = that.attributeGoods[m].cnt;\n }\n }\n }\n inputElm.addEventListener('blur', function (e) {\n var value = Number(e.target.value);\n inputElm.value = value;\n var flag = false;\n for (var _m4 = that.attributeGoods.length - 1; _m4 >= 0; _m4--) {\n if ('ID' in list[i]) {\n if (list[i].ID === that.attributeGoods[_m4].ID) {\n flag = true;\n if (value) {\n that.attributeGoods[_m4].cnt = value;\n } else {\n that.attributeGoods.splice(_m4, 1);\n }\n break;\n }\n } else if ('id' in list[i]) {\n if (list[i].id === that.attributeGoods[_m4].id) {\n flag = true;\n if (value) {\n that.attributeGoods[_m4].cnt = value;\n } else {\n that.attributeGoods.splice(_m4, 1);\n }\n break;\n }\n }\n }\n if (!flag) {\n if (!value) {\n return;\n }\n var item = {\n name: list[i].name,\n cnt: value\n };\n if ('ID' in list[i]) {\n item.ID = list[i].ID;\n } else if ('id' in list[i]) {\n item.id = list[i].id;\n }\n that.attributeGoods.push(_objectSpread({}, item));\n }\n });\n inputElm.addEventListener('input', function (e) {\n if (e.data && isNaN(Number(e.data))) {\n if (e.data != '.') {\n inputElm.value = Number(inputElm.value);\n }\n return;\n }\n var value = Number(e.target.value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n inputElm.value = value;\n var flag = false;\n for (var _m5 = that.attributeGoods.length - 1; _m5 >= 0; _m5--) {\n if ('ID' in list[i]) {\n if (list[i].ID === that.attributeGoods[_m5].ID) {\n flag = true;\n if (value) {\n that.attributeGoods[_m5].cnt = value;\n } else {\n that.attributeGoods.splice(_m5, 1);\n }\n break;\n }\n } else if ('id' in list[i]) {\n if (list[i].id === that.attributeGoods[_m5].id) {\n flag = true;\n if (value) {\n that.attributeGoods[_m5].cnt = value;\n } else {\n that.attributeGoods.splice(_m5, 1);\n }\n break;\n }\n }\n }\n if (!flag) {\n if (!value) {\n return;\n }\n var item = {\n name: list[i].name,\n cnt: value\n };\n if ('ID' in list[i]) {\n item.ID = list[i].ID;\n } else if ('id' in list[i]) {\n item.id = list[i].id;\n }\n that.attributeGoods.push(_objectSpread({}, item));\n }\n });\n tableContent.appendChild(trElm);\n };\n for (var i = 0; i < list.length; i++) {\n _loop4(i);\n }\n\n // else {\n // table.getElementsByClassName('table-empty')[0].style.display = 'flex'\n // tableContent.style.display = 'none'\n // }\n } else {\n table.getElementsByClassName('table-empty')[0].style.display = 'flex';\n tableContent.style.display = 'none';\n }\n }\n return \"
      \\n
      \\n
      \\n \\u5185\\u5BB9\\u7C7B\\u578B\\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n \\u7F16\\u8F91\\u5185\\u5BB9\\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n \\u6DFB\\u52A0\\u94FE\\u63A5\\n
      \\n \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\u540D\\u79F0
      \\n
      \\u94FE\\u63A5
      \\n
      \\u64CD\\u4F5C
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n

      \\u6682\\u65E0\\u6570\\u636E

      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n \\u7F16\\u8F91\\u5185\\u5BB9\\n \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\u64CD\\u4F5C
      \\n
      \\u8BBE\\u5907\\u540D\\u79F0
      \\n
      \\u8BBE\\u5907\\u7C7B\\u578B
      \\n
      \\u8BBE\\u5907IP
      \\n
      \\u8BBE\\u5907\\u7AEF\\u53E3
      \\n
      \\u7528\\u6237\\u540D
      \\n
      \\u5BC6\\u7801
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n \\n \\u7ED1\\u5B9A\\n
      \\n
      \\u8BBE\\u5907\\u540D\\u79F0
      \\n
      \\u8BBE\\u5907\\u7C7B\\u578B
      \\n
      \\u8BBE\\u5907IP
      \\n
      \\u8BBE\\u5907\\u7AEF\\u53E3
      \\n
      \\u7528\\u6237\\u540D
      \\n
      \\u5BC6\\u7801
      \\n
      \\n
      \\n
      \\n
      \\n

      \\u6682\\u65E0\\u6570\\u636E

      \\n
      \\n
      \\n
      \\n
      \\n
        \\n
        \\n
        \\n
        \\n \\n
        \\n
        \\n
        \\n
        \\n
        \\u64CD\\u4F5C
        \\n
        \\u8BBE\\u5907\\u540D\\u79F0
        \\n
        \\u8BBE\\u5907\\u72B6\\u6001
        \\n
        \\n
        \\n
        \\n
        \\n
        \\n \\n \\u7ED1\\u5B9A\\n
        \\n
        \\u8BBE\\u5907\\u540D\\u79F0
        \\n
        \\u8BBE\\u5907\\u72B6\\u6001
        \\n
        \\n
        \\n
        \\n
        \\n

        \\u6682\\u65E0\\u6570\\u636E

        \\n
        \\n
        \\n
        \\n
        \\n
          \\n
          \\n
          \\n
          \\n
          \\n \\u6DFB\\u52A0\\u94FE\\u63A5\\n
          \\n \\n \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\u540D\\u79F0
          \\n
          \\u94FE\\u63A5
          \\n
          \\u64CD\\u4F5C
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n

          \\u6682\\u65E0\\u6570\\u636E

          \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n \\u7F16\\u8F91\\u5185\\u5BB9\\n \\n \\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\u5E8F\\u53F7
          \\n
          \\u540D\\u79F0
          \\n
          \\u6570\\u91CF
          \\n
          \\n
          \\n
          \\n
          \\n
          \\u5E8F\\u53F7
          \\n
          \\u540D\\u79F0
          \\n
          \\u6570\\u91CF
          \\n
          \\n
          \\n
          \\n
          \\n

          \\u6682\\u65E0\\u6570\\u636E

          \\n
          \\n
          \\n
          \\n
          \\n
          \";\n}\nfunction labelStyleElm1(that) {\n return \"\\n
          \\n
          \\n \\u6807\\u6CE8\\u5F00\\u5173\\n \\n
          \\n
          \\n
          \\n
          \\n \\u5B57\\u4F53\\u989C\\u8272\\n
          \\n
          \\n
          \\n \\u5B57\\u4F53\\u9009\\u62E9\\n
          \\n
          \\n
          \\n \\u5B57\\u4F53\\u5927\\u5C0F\\n
          \\n \\n px\\n \\n
          \\n
          \\n
          \\n
          \\n
          \\n \\u89C6\\u91CE\\u7F29\\u653E\\n \\n
          \\n
          \\n \\u6700\\u8FD1\\u8DDD\\u79BB\\n
          \\n \\n m\\n \\n
          \\n
          \\n
          \\n \\u6700\\u8FDC\\u8DDD\\u79BB\\n
          \\n \\n m\\n \\n
          \\n
          \\n
          \\n \";\n}\nfunction labelStyleElm2(that) {\n return \"\\n
          \\n
          \\n \\u5F15\\u7EBF\\u989C\\u8272\\n
          \\n
          \\n
          \\n \\u80CC\\u666F\\u989C\\u8272\\n
          \\n
          \\n
          \\n
          \\n
          \\n
          \\n \\u5F15\\u7EBF\\u5BBD\\u5EA6\\n
          \\n \\n px\\n \\n
          \\n
          \\n
          \\n \\u5F15\\u7EBF\\u957F\\u5EA6\\n
          \\n \\n px\\n \\n
          \\n
          \\n
          \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvZWxtX2h0bWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0VsZW1lbnQvZWxtX2h0bWwuanM/YzQ3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRIb3N0LCBnZXRUb2tlbiB9IGZyb20gXCIuLi8uLi9vblwiO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVBhZ2luYXRpb24gfSBmcm9tIFwiLi9QYWdpbmF0aW9uXCI7XHJcbmltcG9ydCB7IGxlZ3AgfSBmcm9tICcuL2RhdGFsaXN0JztcclxuXHJcbmZ1bmN0aW9uIGF0dHJpYnV0ZUVsbSh0aGF0KSB7XHJcbiAgbGV0IGhvc3QgPSBnZXRIb3N0KClcclxuXHJcbiAgdGhhdC5jYW1lcmFTZWxlY3QgPSBjYW1lcmFTZWxlY3RcclxuICB0aGF0LklTQ1NlbGVjdCA9IElTQ1NlbGVjdFxyXG4gIHRoYXQuZ29vZHNTZWxlY3QgPSBnb29kc1NlbGVjdFxyXG4gIHRoYXQuZ29vZHNGaWx0ZXIgPSBnb29kc0ZpbHRlclxyXG4gIHRoYXQuY2FtZXJhTmFtZSA9ICcnXHJcbiAgdGhhdC5JU0NOYW1lID0gJydcclxuICBjb25zdCB0eXBlID0ge1xyXG4gICAgJzEnOiAn5rW35bq3JyxcclxuICAgICcyJzogJ+Wkp+WNjidcclxuICB9XHJcblxyXG4gIGxldCBjYW1lcmFQYWdlU2l6ZSA9IDVcclxuICBsZXQgaXNjUGFnZVNpemUgPSA1XHJcbiAgbGV0IGdvb2RzUGFnZVNpemUgPSA5OTk5OTlcclxuXHJcbiAgZnVuY3Rpb24gY2FtZXJhU2VsZWN0KHBhZ2UpIHtcclxuICAgIGlmICghdGhhdC5hdHRyaWJ1dGVTZWxlY3QpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQuYXR0cmlidXRlU2VsZWN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoYXQuYXR0cmlidXRlU2VsZWN0W2ldLmtleSA9PT0gJ2NhbWVyYScpIHtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGZpcnN0UGFnZSA9IHBhZ2VcclxuICAgIHBhZ2UgPSAhcGFnZSB8fCB0eXBlb2YgcGFnZSA9PT0gJ29iamVjdCcgPyAxIDogcGFnZVxyXG4gICAgbGV0IGF0dHJpYnV0ZUNhbWVyYUVsbVxyXG4gICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQgJiYgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQpIHtcclxuICAgICAgbGV0IHBhZ2luYXRpb25FbG0gPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdpbmF0aW9uJylbMF1cclxuICAgICAgYXR0cmlidXRlQ2FtZXJhRWxtID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXR0cmlidXRlLWNvbnRlbnQtY2FtZXJhJylbMF1cclxuICAgICAgaWYgKCFwYWdpbmF0aW9uRWxtKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFhdHRyaWJ1dGVDYW1lcmFFbG0pIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgMSwgMTAsIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHVybCA9IFwiXCJcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgY2FtZXJhTmFtZTogdGhhdC5jYW1lcmFOYW1lLFxyXG4gICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogY2FtZXJhUGFnZVNpemVcclxuICAgIH07XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xyXG4gICAgaWYgKGhvc3QuZW5kc1dpdGgoXCJ5amVhcnRoNC4wXCIpKVxyXG4gICAgICB1cmwgPSBgJHtob3N0fS9hcGkvdjEvY2FtZXJhRGF0YS9saXN0PyR7cXVlcnlTdHJpbmd9YFxyXG4gICAgZWxzZVxyXG4gICAgICB1cmwgPSBgJHtob3N0fS95amVhcnRoNC4wL2FwaS92MS9jYW1lcmFEYXRhL2xpc3Q/JHtxdWVyeVN0cmluZ31gXHJcbiAgICBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnZ2V0JyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgXCJ0b2tlblwiOiBnZXRUb2tlbigpLFxyXG4gICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGdldFRva2VuKCksXHJcbiAgICAgIH1cclxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5jb2RlID09PSAyMDAgfHwgZGF0YS5jb2RlID09PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhhdC5fRGlhbG9nT2JqZWN0IHx8ICF0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQgfHwgIXRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50IHx8ICFhdHRyaWJ1dGVDYW1lcmFFbG0pIHtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcGFnaW5hdGlvbkVsbSA9IGF0dHJpYnV0ZUNhbWVyYUVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdpbmF0aW9uJylbMF1cclxuICAgICAgICAgICAgbGV0IHRhYmxlID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2FtZXJhLXRhYmxlJylbMF1cclxuICAgICAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgICAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgaWYgKGRhdGEucm93cykge1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGxpc3Q6IFsuLi5kYXRhLnJvd3NdLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IGRhdGEudG90YWxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEubGlzdCAmJiBkYXRhLmRhdGEubGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgZGF0YS5kYXRhLnRvdGFsLCBjYW1lcmFQYWdlU2l6ZSwgMSwgKHBhZ2VJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0LmNhbWVyYVNlbGVjdChwYWdlSW5kZXgpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgdGFibGVDb250ZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWZsZXgnXHJcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tib3hBcnJheSA9IFtdXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ciA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIke2RhdGEuZGF0YS5saXN0W2ldLmRldmljZUlkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5Hlrpo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPiR7ZGF0YS5kYXRhLmxpc3RbaV0uY2FtZXJhTmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBjZW50ZXJcIiBzdHlsZT1cIndpZHRoOiA4MHB4OyBmbGV4OiAwIDgwcHg7IG1pbi13aWR0aDogODBweDtcIj4ke3R5cGVbZGF0YS5kYXRhLmxpc3RbaV0udHlwZV19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMTI2cHg7IGZsZXg6IDAgMTI2cHg7bWluLXdpZHRoOiAxMjZweDtcIj4ke2RhdGEuZGF0YS5saXN0W2ldLmlwfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDgwcHg7IGZsZXg6IDAgODBweDttaW4td2lkdGg6IDgwcHg7XCI+JHtkYXRhLmRhdGEubGlzdFtpXS5wb3J0fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkIGNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDgwcHg7IGZsZXg6IDAgODBweDttaW4td2lkdGg6IDgwcHg7XCI+JHtkYXRhLmRhdGEubGlzdFtpXS51c2VyTmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBjZW50ZXJcIj4ke2RhdGEuZGF0YS5saXN0W2ldLnBhc3NXb3JkIHx8IGRhdGEuZGF0YS5saXN0W2ldLnBhc3N3b3JkfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjaGVja2JveCA9IHRyRWxtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYm94QXJyYXkucHVzaChjaGVja2JveClcclxuICAgICAgICAgICAgICAgICAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja2JveC5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyDlj6rpgInkuK3kuIDkuKpcclxuICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlQ2FtZXJhID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlQ2FtZXJhLnB1c2goZGF0YS5kYXRhLmxpc3RbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNoZWNrYm94QXJyYXkubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrYm94QXJyYXlbal0gIT09IGNoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hBcnJheVtqXS5jaGVja2VkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3QXJyYXkgPSB0aGF0LmF0dHJpYnV0ZUNhbWVyYS5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdkZXZpY2VJZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5kZXZpY2VJZCAhPT0gZGF0YS5kYXRhLmxpc3RbaV0uZGV2aWNlSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlQ2FtZXJhID0gbmV3QXJyYXlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuXHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhhdC5hdHRyaWJ1dGVDYW1lcmEubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKCdkZXZpY2VJZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pID8gKHRoYXQuYXR0cmlidXRlQ2FtZXJhW21dLmRldmljZUlkID09PSBkYXRhLmRhdGEubGlzdFtpXS5kZXZpY2VJZCk6ZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIGRhdGEuZGF0YS50b3RhbCwgY2FtZXJhUGFnZVNpemUsIHBhZ2UsIChwYWdlSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5jYW1lcmFTZWxlY3QocGFnZUluZGV4KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCAxLCBjYW1lcmFQYWdlU2l6ZSwgMSk7XHJcbiAgICAgICAgICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgICAgICAgICAgdGFibGVDb250ZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRhLm1lc3NhZ2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDmn6Xor6Llhajpg6hcclxuICAgIGlmICghZmlyc3RQYWdlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtczIgPSB7XHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBwYWdlU2l6ZTogOTk5OTk5OTlcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgcXVlcnlTdHJpbmcyID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMyKS50b1N0cmluZygpO1xyXG4gICAgICBpZiAoaG9zdC5lbmRzV2l0aChcInlqZWFydGg0LjBcIikpXHJcbiAgICAgICAgdXJsID0gYCR7aG9zdH0vYXBpL3YxL2NhbWVyYURhdGEvbGlzdD8ke3F1ZXJ5U3RyaW5nMn1gXHJcbiAgICAgIGVsc2VcclxuICAgICAgICB1cmwgPSBgJHtob3N0fS95amVhcnRoNC4wL2FwaS92MS9jYW1lcmFEYXRhL2xpc3Q/JHtxdWVyeVN0cmluZzJ9YFxyXG4gICAgICBmZXRjaCh1cmwsIHtcclxuICAgICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICAgIH1cclxuICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNvZGUgPT09IDIwMCB8fCBkYXRhLmNvZGUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoYXQuX0RpYWxvZ09iamVjdCB8fCAhdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8ICF0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fCAhYXR0cmlidXRlQ2FtZXJhRWxtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEucm93cykge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5kYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICBsaXN0OiBbLi4uZGF0YS5yb3dzXSxcclxuICAgICAgICAgICAgICAgICAgdG90YWw6IGRhdGEudG90YWxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5saXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGF0LmF0dHJpYnV0ZUNhbWVyYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGRhdGEuZGF0YS5saXN0Lmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5hdHRyaWJ1dGVDYW1lcmFbaV0uZGV2aWNlSWQgPT09IGRhdGEuZGF0YS5saXN0W21dLmRldmljZUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVDYW1lcmEuc3BsaWNlKGksIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVDYW1lcmEgPSBbXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlQ2FtZXJhID0gW11cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRhLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gSVNDU2VsZWN0KHBhZ2UpIHtcclxuICAgIGlmICghdGhhdC5hdHRyaWJ1dGVTZWxlY3QpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXQuYXR0cmlidXRlU2VsZWN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoYXQuYXR0cmlidXRlU2VsZWN0W2ldLmtleSA9PT0gJ2lzYycpIHtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcGFnZSA9ICFwYWdlIHx8IHR5cGVvZiBwYWdlID09PSAnb2JqZWN0JyA/IDEgOiBwYWdlXHJcbiAgICBsZXQgYXR0cmlidXRlQ2FtZXJhRWxtXHJcbiAgICBpZiAodGhhdC5fRGlhbG9nT2JqZWN0ICYmIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hdGlvbkVsbSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2luYXRpb24nKVswXVxyXG4gICAgICBhdHRyaWJ1dGVDYW1lcmFFbG0gPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1pc2MnKVswXVxyXG4gICAgICBpZiAoIXBhZ2luYXRpb25FbG0pIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWF0dHJpYnV0ZUNhbWVyYUVsbSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCAxLCAxMCwgMSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdXJsID0gXCJcIlxyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAvLyBuYW1lOiB0aGF0LmlzY05hbWUsXHJcbiAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgIHBhZ2Vfc2l6ZTogaXNjUGFnZVNpemVcclxuICAgIH07XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xyXG4gICAgaWYgKGhvc3QuZW5kc1dpdGgoXCJ5amVhcnRoNC4wXCIpKVxyXG4gICAgICB1cmwgPSBgJHtob3N0fS9hcGkvdjEvaXNjL2xpc3Q/JHtxdWVyeVN0cmluZ31gXHJcbiAgICBlbHNlXHJcbiAgICAgIHVybCA9IGAke2hvc3R9L3lqZWFydGg0LjAvYXBpL3YxL2lzYy9saXN0PyR7cXVlcnlTdHJpbmd9YFxyXG4gICAgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ2dldCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICB9XHJcbiAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEuY29kZSA9PT0gMjAwIHx8IGRhdGEuY29kZSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoYXQuX0RpYWxvZ09iamVjdCB8fCAhdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8ICF0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fCAhYXR0cmlidXRlQ2FtZXJhRWxtKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHBhZ2luYXRpb25FbG0gPSBhdHRyaWJ1dGVDYW1lcmFFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFnaW5hdGlvbicpWzBdXHJcbiAgICAgICAgICAgIGxldCB0YWJsZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lzYy10YWJsZScpWzBdXHJcbiAgICAgICAgICAgIGxldCB0YWJsZUNvbnRlbnQgPSB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF1cclxuICAgICAgICAgICAgdGFibGVDb250ZW50LmlubmVySFRNTCA9ICcnXHJcbiAgICAgICAgICAgIGlmIChkYXRhLnJvd3MpIHtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0OiBbLi4uZGF0YS5yb3dzXSxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmRhdGEpIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmxpc3QgJiYgZGF0YS5kYXRhLmxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIGRhdGEuZGF0YS50b3RhbCwgaXNjUGFnZVNpemUsIDEsIChwYWdlSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5JU0NTZWxlY3QocGFnZUluZGV4KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ciA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIkeydJRCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0gPyBkYXRhLmRhdGEubGlzdFtpXS5JRCA6IGRhdGEuZGF0YS5saXN0W2ldLmlkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5Hlrpo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPiR7ZGF0YS5kYXRhLmxpc3RbaV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCBjZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxODBweDsgZmxleDogMCAxODBweDsgbWluLXdpZHRoOiAxODBweDtcIj4ke2RhdGEuZGF0YS5saXN0W2ldLnN0YXR1cyA/ICflnKjnur8nIDogJ+emu+e6vyd9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgICAgICAgICAgICBsZXQgdHJFbG0gPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0cilcclxuICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrYm94ID0gdHJFbG0ucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJylcclxuICAgICAgICAgICAgICAgICAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja2JveC5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUlTQy5wdXNoKGRhdGEuZGF0YS5saXN0W2ldKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdBcnJheSA9IHRoYXQuYXR0cmlidXRlSVNDLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLklEICE9PSBkYXRhLmRhdGEubGlzdFtpXS5JRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkICE9PSBkYXRhLmRhdGEubGlzdFtpXS5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVJU0MgPSBuZXdBcnJheVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgdGFibGVDb250ZW50LmFwcGVuZENoaWxkKHRyRWxtKVxyXG5cclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aGF0LmF0dHJpYnV0ZUlTQy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkgPyAodGhhdC5hdHRyaWJ1dGVJU0NbbV0uSUQgPT09IGRhdGEuZGF0YS5saXN0W2ldLklEKSA6ICh0aGF0LmF0dHJpYnV0ZUlTQ1ttXS5pZCA9PT0gZGF0YS5kYXRhLmxpc3RbaV0uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSAmJiBkYXRhLmRhdGEudG90YWwpIHtcclxuICAgICAgICAgICAgICAgIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCBkYXRhLmRhdGEudG90YWwsIGlzY1BhZ2VTaXplLCBwYWdlLCAocGFnZUluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXQuSVNDU2VsZWN0KHBhZ2VJbmRleClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBnZW5lcmF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbkVsbSwgMSwgaXNjUGFnZVNpemUsIDEpO1xyXG4gICAgICAgICAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgICAgICAgIHRhYmxlQ29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGF0YS5tZXNzYWdlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBnb29kc1NlbGVjdChwYWdlKSB7XHJcbiAgICBpZiAoIXRoYXQuYXR0cmlidXRlU2VsZWN0KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0LmF0dHJpYnV0ZVNlbGVjdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGF0LmF0dHJpYnV0ZVNlbGVjdFtpXS5rZXkgPT09ICdnb29kcycpIHtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcGFnZSA9ICFwYWdlIHx8IHR5cGVvZiBwYWdlID09PSAnb2JqZWN0JyA/IDEgOiBwYWdlXHJcbiAgICBsZXQgYXR0cmlidXRlRWxtXHJcbiAgICBpZiAodGhhdC5fRGlhbG9nT2JqZWN0ICYmIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hdGlvbkVsbSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2luYXRpb24nKVswXVxyXG4gICAgICBhdHRyaWJ1dGVFbG0gPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhdHRyaWJ1dGUtY29udGVudC1nb29kcycpWzBdXHJcbiAgICAgIGlmICghcGFnaW5hdGlvbkVsbSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICghYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgLy8gZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIDEsIDEwLCAxKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB1cmwgPSBcIlwiXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgIHBhZ2Vfc2l6ZTogZ29vZHNQYWdlU2l6ZVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAoaG9zdC5lbmRzV2l0aChcInlqZWFydGg0LjBcIikpXHJcbiAgICAgIHVybCA9IGAke2hvc3R9L2FwaS92MS9nb29kcy9saXN0PyR7cXVlcnlTdHJpbmd9YFxyXG4gICAgZWxzZVxyXG4gICAgICB1cmwgPSBgJHtob3N0fS95amVhcnRoNC4wL2FwaS92MS9nb29kcy9saXN0PyR7cXVlcnlTdHJpbmd9YFxyXG4gICAgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ2dldCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwidG9rZW5cIjogZ2V0VG9rZW4oKSxcclxuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBnZXRUb2tlbigpLFxyXG4gICAgICB9XHJcbiAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEuY29kZSA9PT0gMjAwIHx8IGRhdGEuY29kZSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoYXQuX0RpYWxvZ09iamVjdCB8fCAhdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50IHx8ICF0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCB8fCAhYXR0cmlidXRlRWxtKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHBhZ2luYXRpb25FbG0gPSBhdHRyaWJ1dGVFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGFnaW5hdGlvbicpWzBdXHJcbiAgICAgICAgICAgIGxldCB0YWJsZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dvb2RzLXRhYmxlJylbMF1cclxuICAgICAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgICAgICAgICB0YWJsZUNvbnRlbnQuaW5uZXJIVE1MID0gJydcclxuICAgICAgICAgICAgaWYgKGRhdGEucm93cykge1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGxpc3Q6IFsuLi5kYXRhLnJvd3NdLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IGRhdGEudG90YWxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEubGlzdCAmJiBkYXRhLmRhdGEubGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGF0Ll9hbGxHb29kc0xpc3QgPSBkYXRhLmRhdGEubGlzdFxyXG4gICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIGRhdGEuZGF0YS50b3RhbCwgZ29vZHNQYWdlU2l6ZSwgMSwgKHBhZ2VJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGF0Lmdvb2RzU2VsZWN0KHBhZ2VJbmRleClcclxuICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoYXQuYXR0cmlidXRlR29vZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IGRhdGEuZGF0YS5saXN0Lmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCdJRCcgaW4gZGF0YS5kYXRhLmxpc3RbbV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEubGlzdFttXS5JRCA9PT0gdGhhdC5hdHRyaWJ1dGVHb29kc1tpXS5JRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnaWQnIGluIGRhdGEuZGF0YS5saXN0W21dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmxpc3RbbV0uaWQgPT09IHRoYXQuYXR0cmlidXRlR29vZHNbaV0uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kcy5zcGxpY2UoaSwgMSlcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtZW1wdHknKVswXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgICAgICB0YWJsZUNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcclxuICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5zdHlsZS5tYXhIZWlnaHQgPSAnMTUwcHgnXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ciA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiIHN0eWxlPVwid2lkdGg6IDYwcHg7IGZsZXg6IDAgNjBweDttaW4td2lkdGg6IDYwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICR7aSArIDF9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiIHN0eWxlPVwiZmxleDogMCAwIDI4MHB4O1wiPiR7ZGF0YS5kYXRhLmxpc3RbaV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPjxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OTk5OVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICAgICAgICAgICAgbGV0IHRyRWxtID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodHIpXHJcbiAgICAgICAgICAgICAgICAgIGxldCBpbnB1dEVsbSA9IHRyRWxtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nKVxyXG4gICAgICAgICAgICAgICAgICBpbnB1dEVsbS52YWx1ZSA9IDBcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0aGF0LmF0dHJpYnV0ZUdvb2RzLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCdJRCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEubGlzdFtpXS5JRCA9PT0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5JRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVsbS52YWx1ZSA9IHRoYXQuYXR0cmlidXRlR29vZHNbbV0uY250XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHNbbV0ubmFtZSA9IGRhdGEuZGF0YS5saXN0W2ldLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJ2lkJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5saXN0W2ldLmlkID09PSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxtLnZhbHVlID0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5jbnRcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlucHV0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsbS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSB0aGF0LmF0dHJpYnV0ZUdvb2RzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmxpc3RbaV0uSUQgPT09IHRoYXQuYXR0cmlidXRlR29vZHNbbV0uSUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5jbnQgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHMuc3BsaWNlKG0sIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCdpZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5saXN0W2ldLmlkID09PSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHNbbV0uY250ID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnNwbGljZShtLCAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLmRhdGEubGlzdFtpXS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbnQ6IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLklEID0gZGF0YS5kYXRhLmxpc3RbaV0uSURcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCdpZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9IGRhdGEuZGF0YS5saXN0W2ldLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnB1c2goeyAuLi5pdGVtIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICBpbnB1dEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YSAmJiBpc05hTihOdW1iZXIoZS5kYXRhKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWxtLnZhbHVlID0gTnVtYmVyKGlucHV0RWxtLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsbS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSB0aGF0LmF0dHJpYnV0ZUdvb2RzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmxpc3RbaV0uSUQgPT09IHRoYXQuYXR0cmlidXRlR29vZHNbbV0uSUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5jbnQgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHMuc3BsaWNlKG0sIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCdpZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5saXN0W2ldLmlkID09PSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHNbbV0uY250ID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnNwbGljZShtLCAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLmRhdGEubGlzdFtpXS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbnQ6IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJ0lEJyBpbiBkYXRhLmRhdGEubGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLklEID0gZGF0YS5kYXRhLmxpc3RbaV0uSURcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCdpZCcgaW4gZGF0YS5kYXRhLmxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9IGRhdGEuZGF0YS5saXN0W2ldLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnB1c2goeyAuLi5pdGVtIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5hcHBlbmRDaGlsZCh0ckVsbSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSAmJiBkYXRhLmRhdGEudG90YWwpIHtcclxuICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCBkYXRhLmRhdGEudG90YWwsIGdvb2RzUGFnZVNpemUsIHBhZ2UsIChwYWdlSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhhdC5nb29kc1NlbGVjdChwYWdlSW5kZXgpXHJcbiAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gZ2VuZXJhdGVQYWdpbmF0aW9uKHBhZ2luYXRpb25FbG0sIDEsIGdvb2RzUGFnZVNpemUsIDEpO1xyXG4gICAgICAgICAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAgICAgICAgIHRhYmxlQ29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGF0YS5tZXNzYWdlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBnb29kc0ZpbHRlcigpIHtcclxuICAgIGxldCBsaXN0ID0gW11cclxuICAgIGlmICh0aGF0Ll9hbGxHb29kc0xpc3QgJiYgdGhhdC5fYWxsR29vZHNMaXN0Lmxlbmd0aCkge1xyXG4gICAgICBsZXQga2V5d29yZHMgPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnb29kcy1zZWxlY3QtaW5wdXQnKVswXS52YWx1ZVxyXG4gICAgICBsaXN0ID0gdGhhdC5fYWxsR29vZHNMaXN0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIHJldHVybiAoaXRlbS5uYW1lLmluZGV4T2Yoa2V5d29yZHMpICE9PSAtMSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlID0gdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ29vZHMtdGFibGUnKVswXVxyXG4gICAgbGV0IHRhYmxlQ29udGVudCA9IHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWJvZHknKVswXVxyXG4gICAgdGFibGVDb250ZW50LmlubmVySFRNTCA9ICcnXHJcbiAgICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIGdlbmVyYXRlUGFnaW5hdGlvbihwYWdpbmF0aW9uRWxtLCBkYXRhLmRhdGEudG90YWwsIGdvb2RzUGFnZVNpemUsIDEsIChwYWdlSW5kZXgpID0+IHtcclxuICAgICAgLy8gICB0aGF0Lmdvb2RzU2VsZWN0KHBhZ2VJbmRleClcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICB0YWJsZUNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcclxuICAgICAgdGFibGVDb250ZW50LnN0eWxlLm1heEhlaWdodCA9ICcxNTBweCdcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHRyID0gYFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiBzdHlsZT1cIndpZHRoOiA2MHB4OyBmbGV4OiAwIDYwcHg7bWluLXdpZHRoOiA2MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgJHtpICsgMX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiBzdHlsZT1cImZsZXg6IDAgMCAyODBweDtcIj4ke2xpc3RbaV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj48aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjBcIiBtYXg9XCI5OTk5OTk5OTlcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+YFxyXG4gICAgICAgIGxldCB0ckVsbSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHRyKVxyXG4gICAgICAgIGxldCBpbnB1dEVsbSA9IHRyRWxtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nKVxyXG4gICAgICAgIGlucHV0RWxtLnZhbHVlID0gMFxyXG4gICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdGhhdC5hdHRyaWJ1dGVHb29kcy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgaWYgKCdJRCcgaW4gbGlzdFtpXSkge1xyXG4gICAgICAgICAgICBpZiAobGlzdFtpXS5JRCA9PT0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5JRCkge1xyXG4gICAgICAgICAgICAgIGlucHV0RWxtLnZhbHVlID0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5jbnRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoJ2lkJyBpbiBsaXN0W2ldKSB7XHJcbiAgICAgICAgICAgIGlmIChsaXN0W2ldLmlkID09PSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmlkKSB7XHJcbiAgICAgICAgICAgICAgaW5wdXRFbG0udmFsdWUgPSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmNudFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnB1dEVsbS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC52YWx1ZSlcclxuICAgICAgICAgIGlucHV0RWxtLnZhbHVlID0gdmFsdWVcclxuICAgICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICAgIGZvciAobGV0IG0gPSB0aGF0LmF0dHJpYnV0ZUdvb2RzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAgICAgICAgIGlmICgnSUQnIGluIGxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICBpZiAobGlzdFtpXS5JRCA9PT0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5JRCkge1xyXG4gICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmNudCA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kcy5zcGxpY2UobSwgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCdpZCcgaW4gbGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgIGlmIChsaXN0W2ldLmlkID09PSB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmlkKSB7XHJcbiAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHNbbV0uY250ID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnNwbGljZShtLCAxKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogbGlzdFtpXS5uYW1lLFxyXG4gICAgICAgICAgICAgIGNudDogdmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJ0lEJyBpbiBsaXN0W2ldKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5JRCA9IGxpc3RbaV0uSURcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgnaWQnIGluIGxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICBpdGVtLmlkID0gbGlzdFtpXS5pZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHMucHVzaCh7IC4uLml0ZW0gfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlucHV0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmRhdGEgJiYgaXNOYU4oTnVtYmVyKGUuZGF0YSkpKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nKSB7XHJcbiAgICAgICAgICAgICAgaW5wdXRFbG0udmFsdWUgPSBOdW1iZXIoaW5wdXRFbG0udmFsdWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQudmFsdWUpXHJcbiAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnB1dEVsbS52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICBsZXQgZmxhZyA9IGZhbHNlXHJcbiAgICAgICAgICBmb3IgKGxldCBtID0gdGhhdC5hdHRyaWJ1dGVHb29kcy5sZW5ndGggLSAxOyBtID49IDA7IG0tLSkge1xyXG4gICAgICAgICAgICBpZiAoJ0lEJyBpbiBsaXN0W2ldKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxpc3RbaV0uSUQgPT09IHRoYXQuYXR0cmlidXRlR29vZHNbbV0uSUQpIHtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5jbnQgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXQuYXR0cmlidXRlR29vZHMuc3BsaWNlKG0sIDEpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgnaWQnIGluIGxpc3RbaV0pIHtcclxuICAgICAgICAgICAgICBpZiAobGlzdFtpXS5pZCA9PT0gdGhhdC5hdHRyaWJ1dGVHb29kc1ttXS5pZCkge1xyXG4gICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzW21dLmNudCA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdC5hdHRyaWJ1dGVHb29kcy5zcGxpY2UobSwgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGxpc3RbaV0ubmFtZSxcclxuICAgICAgICAgICAgICBjbnQ6IHZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCdJRCcgaW4gbGlzdFtpXSkge1xyXG4gICAgICAgICAgICAgIGl0ZW0uSUQgPSBsaXN0W2ldLklEXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ2lkJyBpbiBsaXN0W2ldKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pZCA9IGxpc3RbaV0uaWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGF0LmF0dHJpYnV0ZUdvb2RzLnB1c2goeyAuLi5pdGVtIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0YWJsZUNvbnRlbnQuYXBwZW5kQ2hpbGQodHJFbG0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIHRhYmxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RhYmxlLWVtcHR5JylbMF0uc3R5bGUuZGlzcGxheSA9ICdmbGV4J1xyXG4gICAgICAvLyAgIHRhYmxlQ29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0YWJsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgdGFibGVDb250ZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBgPGRpdiBjbGFzcz1cImF0dHJpYnV0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGF0dHJpYnV0ZS1zZWxlY3QtYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDMycHg7XCI+5YaF5a6557G75Z6LPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dCBpbnB1dC1zZWxlY3QgYXR0cmlidXRlLXNlbGVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlLWNvbnRlbnQgYXR0cmlidXRlLWNvbnRlbnQtcmljaFRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nvJbovpHlhoXlrrk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwib3BlblJpY2hUZXh0RWRpdG9yXCI+5omT5byA5paH5pys57yW6L6R5ZmoPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYXR0cmlidXRlLWNvbnRlbnQgYXR0cmlidXRlLWNvbnRlbnQtbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mt7vliqDpk77mjqU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDE7cG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBsaW5rX2FkZFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibGlua19hZGRfYnRuXCIgQGNsaWNrPVwiX2FkZExpbmtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuWQjeensDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6ZO+5o6lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7mk43kvZw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWltZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD7mmoLml6DmlbDmja48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1jYW1lcmFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nvJbovpHlhoXlrrk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cInRleHRcIiBAbW9kZWw9XCJjYW1lcmFOYW1lXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3QgYnRuXCIgQGNsaWNrPVwiY2FtZXJhU2VsZWN0XCI+5pCc57SiPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlIGNhbWVyYS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+5pON5L2cPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+6K6+5aSH5ZCN56ewPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogODBweDsgZmxleDogMCA4MHB4O21pbi13aWR0aDogODBweDtcIj7orr7lpIfnsbvlnos8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxMjZweDsgZmxleDogMCAxMjZweDttaW4td2lkdGg6IDEyNnB4O1wiPuiuvuWkh0lQPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogODBweDsgZmxleDogMCA4MHB4O21pbi13aWR0aDogODBweDtcIj7orr7lpIfnq6/lj6M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiA4MHB4OyBmbGV4OiAwIDgwcHg7bWluLXdpZHRoOiA4MHB4O1wiPueUqOaIt+WQjTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPuWvhueggTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nu5Hlrpo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+6K6+5aSH5ZCN56ewPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+6K6+5aSH57G75Z6LPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+6K6+5aSHSVA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj7orr7lpIfnq6/lj6M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj7nlKjmiLflkI08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIj7lr4bnoIE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7mmoLml6DmlbDmja48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCJyb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicGFnaW5hdGlvblwiPjwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC1pc2NcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPue8lui+keWGheWuuTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiIEBtb2RlbD1cIklTQ05hbWVcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbGVjdCBidG5cIiBAY2xpY2s9XCJJU0NTZWxlY3RcIj7mkJzntKI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlIGlzYy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogNzRweDsgZmxleDogMCA3NHB4O21pbi13aWR0aDogNzRweDtcIj7mk43kvZw8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7orr7lpIflkI3np7A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxODBweDsgZmxleDogMCAxODBweDsgbWluLXdpZHRoOiAxODBweDtcIj7orr7lpIfnirbmgIE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+57uR5a6aPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPuiuvuWkh+WQjeensDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiIHN0eWxlPVwid2lkdGg6IDE4MHB4OyBmbGV4OiAwIDE4MHB4OyBtaW4td2lkdGg6IDE4MHB4O1wiPuiuvuWkh+eKtuaAgTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPuaaguaXoOaVsOaNrjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcInJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uXCI+PC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC12clwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mt7vliqDpk77mjqU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDE7cG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCB2cl9hZGRcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInZyX2FkZF9idG5cIiBAY2xpY2s9XCJfYWRkUnJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtY29udGVudCBhdHRyaWJ1dGUtY29udGVudC12clwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7lkI3np7A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiPumTvuaOpTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCI+5pON5L2cPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+5pqC5peg5pWw5o2uPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlLWNvbnRlbnQgYXR0cmlidXRlLWNvbnRlbnQtZ29vZHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+57yW6L6R5YaF5a65PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgZ29vZHMtc2VsZWN0LWlucHV0XCIgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxODBweDttYXJnaW4tcmlnaHQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0IGJ0blwiIEBjbGljaz1cImdvb2RzRmlsdGVyXCI+5pCc57SiPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZSBnb29kcy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogNjBweDsgZmxleDogMCA2MHB4O21pbi13aWR0aDogNjBweDtcIj7luo/lj7c8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIiBzdHlsZT1cImZsZXg6IDAgMCAyODBweDtcIj7lkI3np7A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7mlbDph488L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiIHN0eWxlPVwid2lkdGg6IDYwcHg7IGZsZXg6IDAgNjBweDttaW4td2lkdGg6IDYwcHg7XCI+5bqP5Y+3PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgc3R5bGU9XCJmbGV4OiAwIDAgMjgwcHg7XCI+5ZCN56ewPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkXCI+5pWw6YePPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1lbXB0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWltZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+5pqC5peg5pWw5o2uPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PmBcclxufVxyXG5cclxuZnVuY3Rpb24gbGFiZWxTdHlsZUVsbTEodGhhdCkge1xyXG4gIHJldHVybiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7moIfms6jlvIDlhbM8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCIgQG1vZGVsPVwibGFiZWxTaG93XCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAxMTRweDtcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lrZfkvZPpopzoibI8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxDb2xvclwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBmb250LXNlbGVjdC1ib3hcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IG5vbmU7XCI+5a2X5L2T6YCJ5oupPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0IGlucHV0LXNlbGVjdCBmb250LXNlbGVjdFwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWtl+S9k+Wkp+Wwjzwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5XCIgQG1vZGVsPVwibGFiZWxGb250U2l6ZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDExNHB4O1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuinhumHjue8qeaUvjwvc3Bhbj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJsYWJlbFNjYWxlQnlEaXN0YW5jZVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuacgOi/kei3neemuzwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5OTk5OTk5XCIgQG1vZGVsPVwibGFiZWxOZWFyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+bTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pyA6L+c6Led56a7PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiOTk5OTk5OTlcIiBAbW9kZWw9XCJsYWJlbEZhclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufVxyXG5mdW5jdGlvbiBsYWJlbFN0eWxlRWxtMih0aGF0KSB7XHJcbiAgcmV0dXJuIGBcclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuW8lee6v+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbExpbmVDb2xvclwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuiDjOaZr+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbEJhY2tncm91bmRDb2xvclN0YXJ0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7XCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxCYWNrZ3JvdW5kQ29sb3JFbmRcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuW8lee6v+WuveW6pjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjk5OVwiIEBtb2RlbD1cImxhYmVsTGluZVdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuW8lee6v+mVv+W6pjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMlwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OVwiIEBtb2RlbD1cImxhYmVsUGl4ZWxPZmZzZXRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBhdHRyaWJ1dGVFbG0sIGxhYmVsU3R5bGVFbG0xLCBsYWJlbFN0eWxlRWxtMiB9XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3Q0E7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcENBO0FBQUE7QUFBQTtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBdklBO0FBQUE7QUFBQTtBQXdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcElBO0FBQUE7QUFBQTtBQUNBO0FBcUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBcUxBO0FBRUE7QUFDQTtBQWdEQTtBQUNBO0FBQ0E7QUErQkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Element/elm_html.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/fontSelect.js": -/*!***************************************!*\ - !*** ./src/Obj/Element/fontSelect.js ***! - \***************************************/ -/*! exports provided: getFontList, getFontFamily, getFontFamilyName */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFontList\", function() { return getFontList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFontFamily\", function() { return getFontFamily; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFontFamilyName\", function() { return getFontFamilyName; });\nvar fontData = [{\n name: '黑体',\n value: '黑体',\n font: 'SimHei',\n key: '0'\n}, {\n name: '思源黑体',\n value: '思源黑体',\n font: 'SourceHanSansTiM',\n key: '1'\n}, {\n name: '庞门正道标题体',\n value: '庞门正道标题体',\n font: 'PMZDBTTi',\n key: '2'\n}, {\n name: '数黑体',\n value: '数黑体',\n font: 'AlimamaShuHeiTi',\n key: '3'\n}];\nfunction getFontList() {\n return fontData;\n}\nfunction getFontFamily(key) {\n for (var i = 0; i < fontData.length; i++) {\n if (fontData[i].key == key) {\n return fontData[i].font;\n }\n }\n}\nfunction getFontFamilyName(key) {\n for (var i = 0; i < fontData.length; i++) {\n if (fontData[i].key == key) {\n return fontData[i].name;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0VsZW1lbnQvZm9udFNlbGVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovRWxlbWVudC9mb250U2VsZWN0LmpzPzkwZTMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGZvbnREYXRhID0gW1xyXG4gIHtcclxuICAgIG5hbWU6ICfpu5HkvZMnLFxyXG4gICAgdmFsdWU6ICfpu5HkvZMnLFxyXG4gICAgZm9udDogJ1NpbUhlaScsXHJcbiAgICBrZXk6ICcwJ1xyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ+aAnea6kOm7keS9kycsXHJcbiAgICB2YWx1ZTogJ+aAnea6kOm7keS9kycsXHJcbiAgICBmb250OiAnU291cmNlSGFuU2Fuc1RpTScsXHJcbiAgICBrZXk6ICcxJ1xyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogJ+W6numXqOato+mBk+agh+mimOS9kycsXHJcbiAgICB2YWx1ZTogJ+W6numXqOato+mBk+agh+mimOS9kycsXHJcbiAgICBmb250OiAnUE1aREJUVGknLFxyXG4gICAga2V5OiAnMidcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6ICfmlbDpu5HkvZMnLFxyXG4gICAgdmFsdWU6ICfmlbDpu5HkvZMnLFxyXG4gICAgZm9udDogJ0FsaW1hbWFTaHVIZWlUaScsXHJcbiAgICBrZXk6ICczJ1xyXG4gIH1cclxuXVxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9udExpc3QoKSB7XHJcbiAgcmV0dXJuIGZvbnREYXRhXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZvbnRGYW1pbHkoa2V5KSB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKGZvbnREYXRhW2ldLmtleSA9PSBrZXkpIHtcclxuICAgICAgcmV0dXJuIGZvbnREYXRhW2ldLmZvbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGb250RmFtaWx5TmFtZShrZXkpIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoZm9udERhdGFbaV0ua2V5ID09IGtleSkge1xyXG4gICAgICByZXR1cm4gZm9udERhdGFbaV0ubmFtZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IGdldEZvbnRMaXN0LCBnZXRGb250RmFtaWx5LCBnZXRGb250RmFtaWx5TmFtZSB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/Element/fontSelect.js\n"); - -/***/ }), - -/***/ "./src/Obj/Element/richText.js": -/*!*************************************!*\ - !*** ./src/Obj/Element/richText.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../on */ \"./src/on/index.js\");\n\n\n\n\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n\nvar _customUploadVideo = /*#__PURE__*/new WeakMap();\nvar _customUploadContent = /*#__PURE__*/new WeakMap();\nvar _primaryCallBack = /*#__PURE__*/new WeakMap();\nvar richText = /*#__PURE__*/function () {\n function richText() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, richText);\n _classPrivateFieldInitSpec(this, _customUploadVideo, void 0);\n _classPrivateFieldInitSpec(this, _customUploadContent, void 0);\n _classPrivateFieldInitSpec(this, _primaryCallBack, void 0);\n this.richTextBox = document.createElement('div');\n this.richTextBox.className = 'richText-box';\n this.richTextBox.style.position = 'absolute';\n this.richTextBox.style.width = '60%';\n this.richTextBox.style.height = '70%';\n this.richTextBox.style.backgroundColor = '#ffffff';\n this.richTextBox.style.zIndex = '999999';\n this.richTextBox.style.left = '20%';\n this.richTextBox.style.top = '15%';\n this.richTextBox.style.display = 'flex';\n this.richTextBox.style.flexDirection = 'column';\n this.uploadImageServer;\n this.uploadVideoServer;\n }\n\n // 打开\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(richText, [{\n key: \"open\",\n value: function open(id) {\n var _this2 = this;\n var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var content = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var _this = this;\n this.title = title;\n this.objectId = id;\n if (document.body.getElementsByClassName('richText-box')[0]) {\n document.body.removeChild(this.richTextBox);\n }\n this.editor = null;\n var html = \"\\n
          \\n
          \\n
          \\n

          \".concat(title, \"

          \\n \\n
          \\n
          \\n
          \\n
          \\n \\n \\n
          \\n
          \\n \");\n\n // let elm = document.createRange().createContextualFragment(html)\n this.richTextBox.innerHTML = html;\n document.body.appendChild(this.richTextBox);\n var _window$wangEditor = window.wangEditor,\n createEditor = _window$wangEditor.createEditor,\n createToolbar = _window$wangEditor.createToolbar;\n var editorConfig = {\n placeholder: '请输入正文...',\n MENU_CONF: {\n uploadImage: {\n fieldName: 'file',\n // maxFileSize: 50 * 1024 * 1024,\n // base64LimitSize: 50 * 1024 * 1024, // 50M 以下插入 base64\n server: this.uploadImageServer,\n // // 上传之前触发\n // onBeforeUpload(file) { // TS 语法\n // // onBeforeUpload(file) { // JS 语法\n // // file 选中的文件,格式如 { key: file }\n // return file\n // // 可以 return\n // // 1. return file 或者 new 一个 file ,接下来将上传\n // // 2. return false ,不上传这个 file\n // },\n // // 上传进度的回调函数\n // onProgress(progress) { // TS 语法\n // // onProgress(progress) { // JS 语法\n // // progress 是 0-100 的数字\n // console.log('progress', progress)\n // },\n // // 单个文件上传成功之后\n // onSuccess(file, res) { // TS 语法\n // // onSuccess(file, res) { // JS 语法\n // console.log(`${file.name} 上传成功`, res)\n // },\n // // 单个文件上传失败\n // onFailed(file, res) { // TS 语法\n // // onFailed(file, res) { // JS 语法\n // console.log(`${file.name} 上传失败`, res)\n // },\n // // 上传错误,或者触发 timeout 超时\n // onError(file, err, res) { // TS 语法\n // // onError(file, err, res) { // JS 语法\n // console.log(`${file.name} 上传出错`, err, res)\n // },\n // 自定义上传\n customUpload: function customUpload(file, insertFn) {\n return _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee() {\n var url;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.upload(file);\n case 2:\n url = _context.sent;\n insertFn((_this.host = _this.host || Object(_on__WEBPACK_IMPORTED_MODULE_4__[\"getHost\"])()) + '/' + url);\n case 4:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))();\n }\n },\n uploadVideo: {\n // maxFileSize: 500 * 1024 * 1024,\n server: this.uploadVideoServer,\n allowedFileTypes: ['video/mp4', 'video/mp3', 'video/ogg', 'video/webm', 'video/avi'],\n // 自定义上传\n customUpload: function customUpload(file, insertFn) {\n return _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2() {\n var url;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this.upload(file);\n case 2:\n url = _context2.sent;\n insertFn((_this.host = _this.host || Object(_on__WEBPACK_IMPORTED_MODULE_4__[\"getHost\"])()) + '/' + url);\n // if(_this.#customUploadVideo) {\n // let url = await _this.#customUploadVideo(file)\n // insertFn(url, file.name)\n // }\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n }\n },\n onChange: function onChange(editor) {\n var html = editor.getHtml();\n // 也可以同步到 \n \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.vr.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={vrEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.vr.content;case 2:t.attributeVr=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-vr")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.rtmp.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={rtmpEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.rtmp.content;case 2:t.attributeRtmp=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-rtmp")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.rtmp.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.rtmp.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0&&void 0!==p[0]&&p[0],e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" billboard-object",(i=document.createElement("div")).innerHTML=ut(this),this._DialogObject.contentAppChild(i),this.attributeCamera=this.options.attribute.camera.content,this.attributeISC=this.options.attribute.isc.content,new Je("point-object-edit-tabs",void 0,this.sdk),n=new YJColorPicker({el:i.getElementsByClassName("labelColor")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){h.labelColor=e},clear:function(){h.labelColor="rgba(255,255,255,1)"}}),o=i.getElementsByTagName("*"),this._EventBinding.on(this,o),this._elms=this._EventBinding.element,this._elms.labelColor=[n],setTimeout(_()(S.a.mark((function e(){var t,i,n,o,a,r,l,c,u,p,d,m,f,v,g,y,b,C,w,k,_,x,E,P,D,O;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(h.attributeLink=h.options.attribute.link.content,h.attributeVr=h.options.attribute.vr.content,h.cameraSelect&&h.cameraSelect(),h.ISCSelect&&h.ISCSelect(),h.goodsSelect&&h.goodsSelect(),(t=document.createElement("div")).className="col",t.style.flex="0 0 110px",t.innerHTML='\n 属性框\n \n ',h._DialogObject._element.content.getElementsByClassName("attribute")[0].getElementsByClassName("row")[0].appendChild(t),i=h.attributeSelect,!(n=h._DialogObject._element.content.getElementsByClassName("attribute-select-box")[0])){e.next=27;break}(o=Object(je.a)(n,".attribute-select")).legp_search(i),a=h._DialogObject._element.content.getElementsByClassName("attribute-select")[0].getElementsByTagName("input")[0],r=0;case 18:if(!(r=0)){e.next=24;break}if(!v[g].position){e.next=21;break}return f=v[g],e.abrupt("break",24);case 21:g--,e.next=17;break;case 24:return f&&f.position&&(i=this.cartesian3Towgs84(f.position,this.sdk.viewer).alt),e.prev=25,e.next=28,Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider,[Cesium.Cartographic.fromDegrees(this.options.position.lng,this.options.position.lat)]);case 28:y=e.sent,e.next=33;break;case 31:e.prev=31,e.t0=e.catch(25);case 33:if((void 0===i||i0&&void 0!==C[0]?C[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=26;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,a=this.options.customView.relativePosition.alt,r=Cesium.Cartesian3.fromDegrees(n,o,a),l={lng:0,lat:0},this.options.position||this.options.position?l=Xt({},this.options.position):this.options.center?l=Xt({},this.options.center):this.options.start?l=Xt({},this.options.start):(this.options.hasOwnProperty("lng")&&(l.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(l.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(l.alt=this.options.alt)),l.hasOwnProperty("alt")){e.next=19;break}c=[],u=Yt(this.sdk.entityMap);try{for(u.s();!(h=u.n()).done;)(p=s()(h.value,2))[0],"RadarScanStereoscopic"===(d=p[1]).type&&d.entity&&c.push(d.entity)}catch(e){u.e(e)}finally{u.f()}return e.next=18,this.getClampToHeight(l,c);case 18:l.alt=e.sent;case 19:n=this.options.customView.relativePosition.lng+l.lng,o=this.options.customView.relativePosition.lat+l.lat,a=this.options.customView.relativePosition.alt+l.alt,r=Cesium.Cartesian3.fromDegrees(n,o,a),this.sdk.viewer.camera.flyTo({destination:r,orientation:i}),e.next=33;break;case 26:m=[],f=Yt(this.sdk.entityMap);try{for(f.s();!(v=f.n()).done;)(g=s()(v.value,2))[0],"RadarScanStereoscopic"===(y=g[1]).type&&y.entity&&m.push(y.entity)}catch(e){f.e(e)}finally{f.f()}return e.next=31,this.getClampToHeight(this.options.position,m);case 31:b=e.sent,this.sdk.viewer.camera.flyTo({orientation:t.orientation,destination:Cesium.Cartesian3.fromDegrees(this.options.position.lng,this.options.position.lat,b+(t.height||500))});case 33:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"setPosition",value:function(e){this.options.position.lng=e.position.lng,this.options.position.lat=e.position.lat,this.options.position.alt=e.position.alt,this.renewPoint()}},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(this.sdk&&this.sdk.viewer&&this.entity)if(this.operate.positionEditing=e,this.event&&this.event.destroy(),this.event=new te.a(this.sdk),!0===e){this.picking=!1,this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.previous={position:Xt({},this.options.position)};var i=function(e,i){var n=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=n.lng,t.lat=n.lat,t.alt=n.alt,t.previous={position:Xt({},t.options.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.entity.position=new Cesium.CallbackProperty((function(){return i}),!1),$t(ti,t)&&($t(ti,t).call(t),Qt(ti,t,null)),t.positionEditing=!1};this.event.mouse_move((function(e,i){t.entity.position=new Cesium.CallbackProperty((function(){return i}),!1),t.tip.setPosition(i,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left(i),this.event.mouse_right((function(e,i){t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,n){var o=new Date;t.event.gesture_pinck_end((function(){var s=new Date;e.position1.x,e.position2.x,e.position1.y,e.position2.y;s-o>=500?t.positionEditing=!1:i(0,n)}))}))}else Qt(ti,this,null),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){})),this.event.destroy(),this.event=null),this.tip&&this.tip.destroy(),this.lng=this.previous.position.lng,this.lat=this.previous.position.lat,this.alt=this.previous.position.alt,this.renewPoint()}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,Qt(ti,this,e)}},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=document.getElementById(t.domid),n=Cesium.Cartesian3.fromDegrees(this.options.position.lng,this.options.position.lat);this.sdk.viewer.scene.postRender.addEventListener((function(o){if("block"===i.style.display||""===i.style.display){var s=e.sdk.viewer.scene.cartesianToCanvasCoordinates(n);s&&(i.style.left=(s.x+t.x).toFixed(0)+"px",i.style.top=(s.y+t.y).toFixed(0)+"px")}}))}},{key:"setCustomView",value:(i=_()(S.a.mark((function e(t){var i,n,o,a,r,l,c,u,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=4;break}this.options.customView=t,e.next=19;break;case 4:if(i=this.sdk.viewer.camera,n=this.cartesian3Towgs84(i.position,this.sdk.viewer),o={lng:0,lat:0},a=Xt({},n),this.options.position?o=Xt({},this.options.position):(this.options.hasOwnProperty("lng")&&(o.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(o.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(o.alt=this.options.alt)),o.hasOwnProperty("alt")){e.next=16;break}r=[],l=Yt(this.sdk.entityMap);try{for(l.s();!(c=l.n()).done;)(u=s()(c.value,2))[0],"RadarScanStereoscopic"===(h=u[1]).type&&h.entity&&r.push(h.entity)}catch(e){l.e(e)}finally{l.f()}return e.next=15,this.getClampToHeight(o,r);case 15:o.alt=e.sent;case 16:a={lng:n.lng-o.lng,lat:n.lat-o.lat,alt:n.alt-o.alt},this.options.customView={orientation:{heading:Cesium.Math.toDegrees(i.heading),pitch:Cesium.Math.toDegrees(i.pitch),roll:Cesium.Math.toDegrees(i.roll)},relativePosition:a},this.originalOptions&&(this.originalOptions.customView=this.options.customView);case 19:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})}],[{key:"create",value:function(e){var t,i,n=36,o=e.options.position;e.originalOptions=e.deepCopyObj(e.options);var s,a=!1,r=0,l=Ct(e.labelFontFamily)||"Helvetica",c=e.replaceHost(e.options.billboard.image,e.options.host);if(e._frameImages=[],e.options.billboard.image=c||e.getSourceRootPath()+"/img/A-ablu-blank.png",c&&c.endsWith("gif")){switch(a=!0,e.options.heightMode){case 2:case"2":i=Cesium.HeightReference.CLAMP_TO_GROUND}var u=document.createElement("img");u.setAttribute("rel:animated_src",c),u.setAttribute("rel:auto_play","1"),document.createElement("div").appendChild(u);var h=Cesium.createGuid();s=new SuperGif({gif:u}),e._superGif=s,e._superGif.id=h,s.load((function(i){if(404==i)return(t=document.createElement("canvas")).width=0,t.height=0,n=0,void(e.entity&&(e.entity.billboard.imgWidth=0,e.entity.billboard.imgHeight=0,e.entity.billboard.image=t,Object(y.a)(e.sdk,e.entity)));if(e._superGif.id==h){for(var o=s.get_length(),a=1;a<=o;a++)s.move_to(a),e._frameImages.push(s.get_canvas().toDataURL());var l=(t=s.get_canvas()).width,c=t.height;n=c*(31/l),e.entity&&(e.entity.billboard.imgWidth=l,e.entity.billboard.imgHeight=c,e.entity.billboard.image=new Cesium.CallbackProperty((function(){var t=e._frameImages[r];return r=r>=e._frameImages.length-1?0:r+1,t}),!1),Object(y.a)(e.sdk,e.entity))}}))}else{var p=new Image;switch(p.src=c||e.getSourceRootPath()+"/img/A-ablu-blank.png",e.options.heightMode){case 2:case"2":i=Cesium.HeightReference.CLAMP_TO_GROUND}t=document.createElement("canvas"),p.onload=function(){var i=p.width/p.height;p.width=100,p.height=100/i;var o=p.width,s=p.height,a=t.getContext("2d",{willReadFrequently:!0});t.width=o,t.height=s,a.drawImage(p,0,0,o,s),n=s*(31/o),e.entity&&(e.entity.billboard.imgWidth=o,e.entity.billboard.imgHeight=s,e.entity.billboard.image=t,Object(y.a)(e.sdk,e.entity))},p.onerror=function(i){t.width=0,t.height=0,n=0,e.entity&&(e.entity.billboard.imgWidth=0,e.entity.billboard.imgHeight=0,e.entity.billboard.image=t,Object(y.a)(e.sdk,e.entity))}}e.entity=new Cesium.Entity({show:e.options.show,id:e.options.id,position:Cesium.Cartesian3.fromDegrees(o.lng,o.lat,o.alt),billboard:{image:a?new Cesium.CallbackProperty((function(){var t=e._frameImages[r];return r=r>=e._frameImages.length-1?0:r+1,t}),!1):t,scale:e.options.billboard.scale,disableDepthTestDistance:new Cesium.CallbackProperty((function(){return Object(X.s)()?void 0:Number.POSITIVE_INFINITY}),!1),heightReference:i,color:e.options.billboard.show?void 0:new Cesium.Color(1,1,1,0),width:31,height:new Cesium.CallbackProperty((function(){return n}),!1),verticalOrigin:Cesium.VerticalOrigin.BOTTOM},label:{show:e.options.label.show,text:e.options.label.text,disableDepthTestDistance:new Cesium.CallbackProperty((function(){return Object(X.s)()?void 0:Number.POSITIVE_INFINITY}),!1),heightReference:i,font:e.options.label.fontSize+"px "+l,fillColor:Cesium.Color.fromCssColorString(e.options.label.color),pixelOffset:new Cesium.CallbackProperty((function(){return e.options.billboard.show?new Cesium.Cartesian2(0,-n*e.options.billboard.scale-e.options.label.fontSize/2-5):new Cesium.Cartesian2(0,-e.options.label.fontSize/2-5)}),!1),outlineColor:Cesium.Color.BLACK,outlineWidth:1,style:Cesium.LabelStyle.FILL_AND_OUTLINE}}),e.entity.billboard.imgWidth=31,e.entity.billboard.imgHeight=36,e.entity.position=Cesium.Cartesian3.fromDegrees(o.lng,o.lat,o.alt),3==e.options.heightMode&&e.updateHeight(),e.renewPoint(),Object(J.syncData)(e.sdk,e.options.id),e.options.show&&Object(Z.setSplitDirection)(0,e.options.id),e.options.billboard.isSelect&&e.selectBillboard()}}]);var i,n,o,a,r}(vt);function ni(e){return'\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 描边颜色\n
          \n
          \n
          \n 描边宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function oi(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function si(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=ai(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"rgba(255, 0, 0, 0.5)",i.options.show=!n.show&&!1!==n.show||n.show,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.positions=n.positions||[],i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",i.entity,i.event=new te.a(i.sdk),i.operate={},i._elms={},i.Dialog=o,i.nodePoints=[],n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",!i.options.positions||i.options.positions.length<3)i._error="多边形最少需要三个坐标!",console.warn(i._error);else{if(!i.options.height&&0!==i.options.height){for(var s=i.options.positions[0].alt,a=1;athis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0&&void 0!==f[0]?f[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=si({},this.options.position):this.options.positions?r=si({},this.options.positions[0]):this.options.center?r=si({},this.options.center):this.options.start?r=si({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=51;break;case 25:l=[],e.t0=this.heightMode,e.next=0===e.t0||"0"===e.t0?29:1===e.t0||"1"===e.t0?31:2===e.t0||"2"===e.t0?33:35;break;case 29:case 31:return c=!1,e.abrupt("break",35);case 33:return c=!0,e.abrupt("break",35);case 35:if(!c){e.next=48;break}u=0;case 37:if(!(u=500?t.positionEditing=!1:g(0,i)}))})),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!1)}else{this.previous?this.positions=nt()(this.previous.positions):this.previous={positions:nt()(this.positions)},this.sdk&&this.sdk.viewer&&this.label&&this.label.entity||(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)")),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.destroy()),this.tip&&this.tip.destroy();for(var y=[[]],b=0;b0&&void 0!==arguments[0]?arguments[0]:function(){};this.positionEditing=!1,setTimeout((function(){var i=nt()(e.options.positions);if(YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var n=function(){var e=_()(S.a.mark((function e(){var t,i,n,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=nt()(a.sdk.viewer.entities.values),i=0;case 2:if(!(i=3?[].concat(nt()(r),[r[0],r[1],r[2]]):r}),!1);var d=nt()(e.sdk.viewer.entities.values);if(e.options.positions.length<3)e.getClampToHeight({lng:e.options.positions[0].lng,lat:e.options.positions[0].lat},d).then((function(t){e.label.position=[e.options.positions[0].lng,e.options.positions[0].lat,t]}));else{for(var m=[[]],f=0;f=500?p():h(o,i)}))})),n()}),200)}}),50)}},{key:"closeNodeEdit",value:function(){if(this.sdk&&this.sdk.viewer){YJ.Measure.SetMeasureStatus(!1),this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.tip=null;for(var e=0;e0?new Cesium.PolygonHierarchy(m):new Cesium.PolygonHierarchy(o)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return m.length>0?[].concat(m,[m[0],m[1]]):[].concat(nt()(o),[o[0],o[1]])}),!1)}},{key:"renewPositions",value:function(){var e=this;if(!this._error){for(var t=!1,i=[],n=this.options.positions,o=0;o0&&void 0!==h[0]?h[0]:{domid:"",x:10,y:10}).x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10,i=[[]],n=0;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 '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 线条颜色\n
          \n
          \n
          \n 线条宽度\n
          \n \n px\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 m\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 ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- 指令--\x3e\n \x3c!-- --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- 设置操作点--\x3e\n \x3c!-- --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n
          \n
          \n
          \n \n ')}function ci(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return ui(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?ui(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function ui(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);iNumber(t.target.max)&&(i=Number(t.target.max),t.target.value=i),t.target.min&&i1&&void 0!==arguments[1]?arguments[1]:{};c()(this,e),this.sdk=t,this.viwer=this.sdk.viewer,this.options=i,this.options.position=i.position||{},this.options.rotate=i.rotate||{},this.options.position.lng=this.options.position.lng||0,this.options.position.lat=this.options.position.lat||0,this.options.position.alt=this.options.position.alt||0,this.options.rotate.x=this.options.rotate.x||0,this.options.rotate.y=this.options.rotate.y||0,this.options.rotate.z=this.options.rotate.z||0,this.activeAxis,this.activeCircle,this.activeModelParam,this.origin,this.rayX,this.rayY,this.rayZ,this.arrow={},this.activeState,this.coordArrows=[],this.coordCircles=[],this.MapEvent=new te.a(this.sdk)}),[{key:"position",get:function(){return this.options.position},set:function(e){this.options.position=e,this.againArrow(),this.againCircle()}},{key:"rotate",get:function(){return this.options.rotate},set:function(e){this.options.rotate=e}},{key:"initParam",value:function(){return this._params={tx:this.options.position.lng,ty:this.options.position.lat,tz:this.options.position.alt,rx:this.options.rotate.x,ry:this.options.rotate.y,rz:this.options.rotate.z},mi(mi({},this.options.position),this.options.rotate)}},{key:"editTranslational",value:(i=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y,b,C,w=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:C=function(e){if(t.activeAxis){var i=e.startPosition.y-e.endPosition.y,n={x:e.endPosition.x-g.x,y:e.endPosition.y-g.y},o=a.camera.getPickRay(n),s=a.scene.globe.pick(o,a.scene),r=new Cesium.Cartesian3,l=Cesium.Transforms.eastNorthUpToFixedFrame(a.camera.position);Cesium.Matrix4.inverse(l,l),Cesium.Matrix4.multiplyByPoint(l,s,r),Cesium.Cartesian3.normalize(r,r);var c=t.initParam(),u=90+Cesium.Math.toDegrees(Math.asin(r.z)),h=Cesium.Cartographic.fromCartesian(a.camera.position).height,p=t.activeModelParam.alt,d=h/Math.cos(Cesium.Math.toRadians(u));new Cesium.EllipsoidGeodesic(Cesium.Cartographic.fromCartesian(s),Cesium.Cartographic.fromCartesian(a.camera.position)),s=Cesium.Ray.getPoint(o,d*(1-p/h));var m=Cesium.Cartographic.fromCartesian(s),f=Cesium.Math.toDegrees(m.longitude),v=Cesium.Math.toDegrees(m.latitude);switch(t.activeAxis._name){case"model_edit_xAxis":t._params.tx=f,t._params.ty=t.activeModelParam.lat,t._params.tz=p,t.origin=Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt);var w=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng-.001,c.lat,c.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),k=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat-.001,c.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),_=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt-1),new Cesium.Cartesian3),new Cesium.Cartesian3);t.rayX=new Cesium.Ray(t.origin,w),t.rayY=new Cesium.Ray(t.origin,k),t.rayZ=new Cesium.Ray(t.origin,_);break;case"model_edit_yAxis":t._params.tx=t.activeModelParam.lng,t._params.ty=v,t._params.tz=p,t.origin=Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt);var x=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng-.001,c.lat,c.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),S=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat-.001,c.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),E=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt-1),new Cesium.Cartesian3),new Cesium.Cartesian3);t.rayX=new Cesium.Ray(t.origin,x),t.rayY=new Cesium.Ray(t.origin,S),t.rayZ=new Cesium.Ray(t.origin,E);break;case"model_edit_zAxis":t.activeModelParam.alt+=Cesium.Cartesian3.distance(a.camera.position,Cesium.Cartesian3.fromDegrees(t.options.position.lng,t.options.position.lat,t.options.position.alt))/4300*i*3,t._params.tx=t.activeModelParam.lng,t._params.ty=t.activeModelParam.lat,t._params.tz=t.activeModelParam.alt,t.origin=Cesium.Cartesian3.fromDegrees(c.lng,c.lat,t.activeModelParam.alt);var P=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng-.001,c.lat,t.activeModelParam.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),D=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat-.001,t.activeModelParam.alt),new Cesium.Cartesian3),new Cesium.Cartesian3),O=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(t.origin,Cesium.Cartesian3.fromDegrees(c.lng,c.lat,t.activeModelParam.alt-1),new Cesium.Cartesian3),new Cesium.Cartesian3);t.rayX=new Cesium.Ray(t.origin,P),t.rayY=new Cesium.Ray(t.origin,D),t.rayZ=new Cesium.Ray(t.origin,O)}t.updateModel(t._params.tx,t._params.ty,t._params.tz,t._params.rx,t._params.ry,t._params.rz),t.againArrow()}else{var M=Date.now();if(M-y<100)return clearTimeout(b),void(b=setTimeout((function(){C(e)}),100));clearTimeout(b),y=M;for(var T=t.coordArrows,N=0;N=0;j--){var A=B[j];if(A&&A.primitive&&A.id)switch(A.primitive._name){case"model_edit_xAxis":case"model_edit_yAxis":case"model_edit_zAxis":return void(A.primitive.appearance=new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:Cesium.Color.YELLOW}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}))}}}},this.destroy(),this.activeState="translational",this.MapEvent=new te.a(this.sdk),t=this,i=this.initParam(),n=i.lng,o=i.lat,s=i.alt,a=this.viwer,this.origin=Cesium.Cartesian3.fromDegrees(n,o,s),r=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin,Cesium.Cartesian3.fromDegrees(n-.001,o,s),new Cesium.Cartesian3),new Cesium.Cartesian3),l=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin,Cesium.Cartesian3.fromDegrees(n,o-.001,s),new Cesium.Cartesian3),new Cesium.Cartesian3),c=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(this.origin,Cesium.Cartesian3.fromDegrees(n,o,s-1),new Cesium.Cartesian3),new Cesium.Cartesian3),this.rayX=new Cesium.Ray(this.origin,r),this.rayY=new Cesium.Ray(this.origin,l),this.rayZ=new Cesium.Ray(this.origin,c),this.arrow.positionX=Cesium.Ray.getPoint(this.rayX,0),this.arrow.positionY=Cesium.Ray.getPoint(this.rayY,0),this.arrow.positionZ=Cesium.Ray.getPoint(this.rayZ,0),u=Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(n,o,s)),h=a.camera.position,p=Cesium.Cartesian3.distance(h,this.origin),d=p/15,Cesium.Matrix4.multiplyByScale(u,new Cesium.Cartesian3(d,d,d),u),m=this.createAxisArrow("model_edit_xAxis",[new Cesium.Cartesian3(0,.001,0),new Cesium.Cartesian3(1,0,0)],u,Cesium.Color.RED),f=this.createAxisArrow("model_edit_yAxis",[new Cesium.Cartesian3(0,.001,0),new Cesium.Cartesian3(0,1,0)],u,Cesium.Color.LIME),v=this.createAxisArrow("model_edit_zAxis",[new Cesium.Cartesian3(0,.001,0),new Cesium.Cartesian3(0,0,1)],u,Cesium.Color.BLUE),this.viwer.scene.primitives.add(m),this.viwer.scene.primitives.add(f),this.viwer.scene.primitives.add(v),this.againArrow(),this.viwer.camera.percentageChanged=.001,this.viwer.camera.changed.addEventListener(this.againArrow,{_that:this}),g={x:0,y:0},y=0,this.MapEvent.mouse_move((function(e,t){C(e)})),this.MapEvent.mouse_left_down((function(e,i){var n=a.scene.cartesianToCanvasCoordinates(w.origin);g.x=e.position.x-Math.floor(n.x),g.y=e.position.y-Math.floor(n.y);for(var o=a.scene.drillPick(e.position,10),s=o.length-1;s>=0;s--){var r=o[s];if(r&&r.primitive&&r.primitive._name)if(t.activeAxis)t.activeAxis=null,t.activeModelParam=null,t.controllerCallBack;else switch(r.primitive._name){case"model_edit_xAxis":case"model_edit_yAxis":case"model_edit_zAxis":return a.scene.screenSpaceCameraController.enableRotate=!1,t.activeAxis=r.primitive,t.activeModelParam=t.initParam(),void(r.primitive.appearance=new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:Cesium.Color.YELLOW}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}))}}})),this.MapEvent.mouse_left_up((function(e){a.scene.screenSpaceCameraController.enableRotate=!0;for(var i=0;i360&&(a._params.rx=1),a._params.rx<0&&(a._params.rx=360),Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(a._params.rx)),a._params.ry-=i,a._params.ry>360&&(a._params.ry=1),a._params.ry<0&&(a._params.ry=360),a._params.rz-=n,a._params.rz>360&&(a._params.rz=1),a._params.rz<0&&(a._params.rz=360),a.updateModel(a._params.tx,a._params.ty,a._params.tz,a._params.rx,a._params.ry,a._params.rz)}else{var c=Date.now();if(c-P<100)return clearTimeout(D),void(D=setTimeout((function(){O(e)}),100));clearTimeout(D),P=c;for(var u=s.coordCircles,h=0;h3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;this._params.tx=e=parseFloat(parseFloat(e).toFixed(8)),this._params.ty=t=parseFloat(parseFloat(t).toFixed(8)),this._params.tz=i=parseFloat(parseFloat(i).toFixed(2)),this._params.rx=n=parseFloat(n),this._params.ry=o=parseFloat(o),this._params.rz=s=parseFloat(s),this.options.position.lng=e,this.options.position.lat=t,this.options.position.alt=i,this.options.rotate={x:n,y:o,z:s},this.controllerCallBack}},{key:"controllerCallBack",get:function(){this._controllerCallBack&&this._controllerCallBack(this.options,!this.activeAxis)},set:function(e){this._controllerCallBack=e}},{key:"createAxisArrow",value:function(e,t,i,n){var o=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({id:e,geometry:new Cesium.PolylineGeometry({positions:t,width:20}),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(n)}}),releaseGeometryInstances:!1,appearance:new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:n}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}),modelMatrix:i});return o._name=e,this.coordArrows.push(o),o}},{key:"createAxisCircular",value:function(e,t,i,n){var o=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({geometry:new Cesium.EllipseGeometry({center:{x:1,y:1,z:1},semiMinorAxis:5e5,semiMajorAxis:1e6,rotation:Cesium.Math.PI_OVER_FOUR,vertexFormat:Cesium.VertexFormat.POSITION_AND_ST})}),releaseGeometryInstances:!1,appearance:new Cesium.EllipsoidSurfaceAppearance({material:new Cesium.Material({fabric:{type:"Color",uniforms:{color:Cesium.Color.YELLOW}}})}),modelMatrix:i});return o._name=e,this.coordArrows.push(o),o}},{key:"createAxisSphere",value:function(e,t,i,n,o){var s=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({id:e,geometry:new Cesium.PolylineGeometry({positions:t,width:5}),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(n)}}),releaseGeometryInstances:!1,appearance:new Cesium.PolylineColorAppearance({translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}),modelMatrix:i});return s._radius=o,s._name=e,this.coordCircles.push(s),s}},{key:"removeCoordArrows",value:function(){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=yi(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.width=n.width||0===n.width?n.width:3,i.options.color=n.color||"#ff0000",i.options.type=n.type?Number(n.type):0,i.options.noseToTail=n.noseToTail||!1,i.options.smooth=n.smooth||!1,i.options.extend=n.extend||!1,i.options.rotate=!n.rotate&&!1!==n.rotate||n.rotate,i.options.space=n.space||0===n.space?n.space:1,i.options.speed=n.speed||10,i.options.wordsName=n.wordsName||0,i.options.extendWidth=n.extendWidth||0===n.extendWidth?n.extendWidth:10,i.options.extendColor=n.extendColor||"rgba(255,255,80,0.3)",i.options.show=!n.show&&!1!==n.show||n.show,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i._elms=[],n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",i.operate={},i.nodePoints=[],i.unitNum=0,i.inputSpeed=n.speed&&100*Math.pow(n.speed,-1)||10,i.Dialog=o,!i.options.positions||i.options.positions.length<2)i._error="线段最少需要两个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500});else{for(var s=0;s实线',value:"实线",key:0,icon:"line"},{name:'虚线',value:"虚线",key:1,icon:"dash-line"},{name:'泛光',value:"泛光",key:2,icon:"light-line"},{name:'尾迹光线',value:"尾迹光线",key:3,icon:"tail-line"},{name:'多尾迹光线',value:"多尾迹光线",key:4,icon:"mult-tail-line"},{name:'流动虚线1',value:"流动虚线1",key:5,icon:"flow-dash-line1"},{name:'流动虚线2',value:"流动虚线2",key:6,icon:"flow-dash-line2"},{name:'流动箭头1',value:"流动箭头1",key:7,icon:"pic-line1"},{name:'流动箭头2',value:"流动箭头2",key:8,icon:"pic-line2"},{name:'流动箭头3',value:"流动箭头3",key:9,icon:"pic-line3"},{name:'流动箭头4',value:"流动箭头4",key:10,icon:"pic-line4"},{name:'流动箭头5',value:"流动箭头5",key:11,icon:"pic-line5"},{name:'流动箭头6',value:"流动箭头6",key:12,icon:"pic-line6"}];this.options.type=Number(e);for(var n=function(n){if(i[n].key===Number(e))return t._elms.lineType&&t._elms.lineType.forEach((function(e){e.value=i[n].value,2this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t700?c*=m/u/(t.space*(i.width/i.height*5)+1):c=void 0,this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE3D?c:Object(J.get3DView)().viewer.entities.getById(this.options.id).polyline.oriRepeatX}}},{key:"edit",value:(a=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" polyline",(i=document.createElement("div")).innerHTML=li(this),this._DialogObject.contentAppChild(i),this.attributeType=this.options.attributeType,new Je("polyline-object-edit-tabs",void 0,this.sdk),n=new YJColorPicker({el:i.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){c.color=e},clear:function(){c.color="rgba(255,255,255,1)"}}),o=new YJColorPicker({el:i.getElementsByClassName("labelColor")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelColor=e},clear:function(){c.labelColor="rgba(255,255,255,1)"}}),s=new YJColorPicker({el:i.getElementsByClassName("extendColor")[0],size:"mini",alpha:!0,defaultColor:this.extendColor,disabled:!1,openPickerAni:"opacity",sure:function(e){c.extendColor=e},clear:function(){c.extendColor="rgba(255,255,255,1)"}}),a=new YJColorPicker({el:i.getElementsByClassName("labelLineColor")[0],size:"mini",alpha:!0,defaultColor:this.labelLineColor,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelLineColor=e},clear:function(){c.labelLineColor="rgba(255,255,255,1)"}}),(void 0).labelBackgroundColorStartPicker=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorStart")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorStart,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelBackgroundColorStart=e},clear:function(){c.labelBackgroundColorStart="rgba(255,255,255,1)"}}),r=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorEnd")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorEnd,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelBackgroundColorEnd=e},clear:function(){c.labelBackgroundColorEnd="rgba(255,255,255,1)"}}),l=i.getElementsByTagName("*"),pi.on(this,l),this._elms=pi.element,this._elms.color=[n],this._elms.labelColor=[o],this._elms.extendColor=[s],this._elms.labelLineColor=[a],this._elms.labelBackgroundColorStart=[(void 0).labelBackgroundColorStartPicker],this._elms.labelBackgroundColorEnd=[r],setTimeout((function(){c.attributeLink=c.options.attribute.link.content;var e=c.attributeSelect,t=c._DialogObject._element.content.getElementsByClassName("attribute-select-box")[0];if(t){var n=Object(je.a)(t,".attribute-select");n.legp_search(e);for(var o=c._DialogObject._element.content.getElementsByClassName("attribute-select")[0].getElementsByTagName("input")[0],s=0;s实线',value:"实线",key:0,icon:"line"},{name:'虚线',value:"虚线",key:1,icon:"dash-line"},{name:'泛光',value:"泛光",key:2,icon:"light-line"},{name:'尾迹光线',value:"尾迹光线",key:3,icon:"tail-line"},{name:'多尾迹光线',value:"多尾迹光线",key:4,icon:"mult-tail-line"},{name:'流动虚线1',value:"流动虚线1",key:5,icon:"flow-dash-line1"},{name:'流动虚线2',value:"流动虚线2",key:6,icon:"flow-dash-line2"},{name:'流动箭头1',value:"流动箭头1",key:7,icon:"pic-line1"},{name:'流动箭头2',value:"流动箭头2",key:8,icon:"pic-line2"},{name:'流动箭头3',value:"流动箭头3",key:9,icon:"pic-line3"},{name:'流动箭头4',value:"流动箭头4",key:10,icon:"pic-line4"},{name:'流动箭头5',value:"流动箭头5",key:11,icon:"pic-line5"},{name:'流动箭头6',value:"流动箭头6",key:12,icon:"pic-line6"}],v=Object(je.a)(c._DialogObject._element.content.getElementsByClassName("input-select-line-type-box")[0],".input-select-line-type");if(v){v.legp_search(f);var g=document.createElement("i");g.className="icon icon-active",c._DialogObject._element.content.getElementsByClassName("input-select-line-type")[0].getElementsByClassName("cy_datalist")[0].appendChild(g);var y=c._DialogObject._element.content.getElementsByClassName("input-select-line-type")[0].getElementsByTagName("input")[0];c._elms.lineType=[y];for(var b=0;b'.concat(e+1,'\n
          \n
          \n
          \n ');var i=t.getElementsByClassName("lng")[0],n=document.createElement("span");n.innerHTML=c.options.positions[e].lng.toFixed(8),i.appendChild(n);var o=document.createElement("input");o.className="input",o.type="number",o.title="",o.min=-180,o.max=180,o.value=c.options.positions[e].lng.toFixed(8);var s=t.getElementsByClassName("lat")[0],a=document.createElement("span");a.innerHTML=c.options.positions[e].lat.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-90,r.max=90,r.value=c.options.positions[e].lat.toFixed(8);var l=t.getElementsByClassName("alt")[0],u=document.createElement("span");u.innerHTML=c.options.positions[e].alt.toFixed(2),l.appendChild(u);var h=document.createElement("input");h.className="input",h.type="number",h.title="",h.min=-9999999,h.max=999999999,h.value=c.options.positions[e].alt.toFixed(2),i.addEventListener("dblclick",(function(){i.innerHTML="",o.value=Number(c.options.positions[e].lng.toFixed(8)),i.appendChild(o),o.focus(),c.positionEditing=!1,c.closeNodeEdit()})),o.addEventListener("blur",(function(){o.value=Number(c.options.positions[e].lng.toFixed(8)),i.innerHTML="",i.appendChild(n)})),o.addEventListener("input",(function(){c.options.positions[e].lng=Number(Number(o.value).toFixed(8)),n.innerHTML=c.options.positions[e].lng.toFixed(8);var t=c.renewPositions(c.options.positions);c.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),c.label.position=[c.options.positions[0].lng,c.options.positions[0].lat,t[2]]})),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(c.options.positions[e].lat.toFixed(8)),s.appendChild(r),r.focus(),c.positionEditing=!1,c.closeNodeEdit()})),r.addEventListener("blur",(function(){r.value=Number(c.options.positions[e].lat.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){c.options.positions[e].lat=Number(Number(r.value).toFixed(8)),a.innerHTML=c.options.positions[e].lat.toFixed(8);var t=c.renewPositions(c.options.positions);c.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),c.label.position=[c.options.positions[0].lng,c.options.positions[0].lat,t[2]]})),l.addEventListener("dblclick",(function(){2!=c.heightMode&&(l.innerHTML="",h.value=Number(c.options.positions[e].alt.toFixed(2)),l.appendChild(h),h.focus(),c.positionEditing=!1,c.closeNodeEdit())})),h.addEventListener("blur",(function(){h.value=Number(c.options.positions[e].alt.toFixed(2)),l.innerHTML="",l.appendChild(u)})),h.addEventListener("input",(function(){c.options.positions[e].alt=Number(Number(h.value).toFixed(2)),u.innerHTML=c.options.positions[e].alt.toFixed(2);var t=c.renewPositions(c.options.positions);c.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),c.label.position=[c.options.positions[0].lng,c.options.positions[0].lat,t[2]]})),c._elms.lng.push(n),c._elms.lngInput.push(o),c._elms.lat.push(a),c._elms.latInput.push(r),c._elms.alt.push(u),c._elms.altInput.push(h),P.appendChild(t)},O=0;O0&&void 0!==g[0]?g[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=gi({},this.options.position):this.options.positions?r=gi({},this.options.positions[0]):this.options.center?r=gi({},this.options.center):this.options.start?r=gi({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=43;break;case 25:l=[],e.t0=this.options.heightMode,e.next="0"===e.t0||0===e.t0?29:"1"===e.t0||1===e.t0?31:"2"===e.t0||2===e.t0?36:41;break;case 29:for(u=0;u=500?(t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.positionEditing=!1):leftEvent(s,i)}))})),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return r.length>0?r:i}),!1)}else{this.sdk&&this.sdk.viewer&&this.label&&this.label.entity||(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)")),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.destroy()),this.tip&&this.tip.destroy();var l=this.renewPositions(this.options.positions);this.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(l),this.renewPolygon(l);var c=this.heightMode;switch(this._isNodeEdit&&(c=0),c){case 0:case"0":case 1:case"1":this.label.position=[this.options.positions[0].lng,this.options.positions[0].lat,l[2]],this.options.label.position={lng:this.options.positions[0].lng,lat:this.options.positions[0].lat,alt:l[2]};break;case 2:case"2":this.label.position=[this.options.positions[0].lng,this.options.positions[0].lat],this.options.label.position={lng:this.options.positions[0].lng,lat:this.options.positions[0].lat,alt:l[2]}}}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"lengthChangeCallBack",get:function(){return this._lengthChangeCallBack},set:function(e){this._lengthChangeCallBack=e}},{key:"setDIV",value:function(){var e,t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};i.x=i.x||0===i.x?i.x:10,i.y=i.y||0===i.y?i.y:10;for(var n=[],o=0;o0&&void 0!==arguments[0]?arguments[0]:[],t=new Cesium.EntityCollection;if(e.forEach((function(e){(e instanceof ii||e instanceof ri||e instanceof At||e instanceof bi)&&t.add(e.entity)})),t.values.length){var i=Cesium.exportKml({entities:t});i.then((function(e){Ci(e.kml,(new Date).getTime()+".kml")}))}else console.error("允许导出为kml的对象为空")},ki={yingguangse:new Map,gonganlan:new Map,hong:new Map};ki.yingguangse.set("--color-sdk-base","#00ffff"),ki.yingguangse.set("--color-sdk-auxiliary","#004242"),ki.yingguangse.set("--color-sdk-auxiliary-public","#ffffff"),ki.yingguangse.set("--color-sdk-warning-0","#1BF8C3"),ki.yingguangse.set("--color-sdk-warning-1","#F16C55"),ki.yingguangse.set("--color-sdk-warning-2","#FFA145"),ki.yingguangse.set("--color-sdk-warning-3","#FFDF53"),ki.yingguangse.set("--color-sdk-text-head","#FFFFFF"),ki.yingguangse.set("--color-sdk-text-head-1","#E6F7FF"),ki.yingguangse.set("--color-sdk-text-head-2","#ADF1FF"),ki.yingguangse.set("--color-sdk-gradual","#00ffff 6.25%, #00ffff 100%"),ki.yingguangse.set("--color-sdk-bg-gradual","#00ffff33 0%, #00ffff00 100%");var _i,xi,Si,Ei,Pi,Di,Oi,Mi,Ti=0,Ni=0,Bi=function(){var e=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y,C,w,k=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(w=function(e){var i=u.getElementsByClassName("tr");i.length>0&&(i[i.length-1].querySelector("input[name='time']").disabled=void 0);var n=u.getElementsByClassName("tr active")[0];n&&(n.className="tr");var c=document.createElement("div");c.className="tr active",c.innerHTML='\n
          视点'.concat(d+1,'
          \n
          \n \n
          \n
          \n \n \n \n
          \n '),c.addEventListener("click",(function(e){if(e.target.parentNode===c){var t=u.getElementsByClassName("tr active")[0];t&&(t.className="tr"),c.className="tr active";for(var n=0;nt+1?(l--,i[l-1].className="tr active"):l==t+1&&(i.length==t&&(l-=1),0!=i.length&&(i[l-1].className="tr active")),i.length>0){var n=i[i.length-1].querySelector("input[name='time']");n.disabled="disabled",n.value=0}break}o({name:s,points:m,repeat:Ti+"",defaultTime:v.value,totalTime:g.value})})),f.addEventListener("input",(function(t){y.checked=!1,e.duration=Number(f.value),e.duration<0&&(e.duration=0)})),f.addEventListener("blur",(function(){f.value=Number(Number(f.value).toFixed(2)),f.value<0&&(f.value=0)})),u.insertBefore(c,i[l]),l++,i[i.length-1].querySelector("input[name='time']").disabled="disabled"},i=k.length>1&&void 0!==k[1]?k[1]:{},n=k.length>2&&void 0!==k[2]?k[2]:{},o=k.length>3?k[3]:void 0,s=i.name||"漫游路径",i.points||(i.points=[]),i.repeat&&(Ti=Number(i.repeat)),i.defaultTime&&(document.getElementsByClassName("fly-roam")[0].querySelector("input[name='defaultTime']").value=i.defaultTime),i.totalTime&&(document.getElementsByClassName("fly-roam")[0].querySelector("input[name='totalTime']").value=i.totalTime),a=t.viewer,r=new b.a(t),l=0,c=document.getElementsByClassName("fly-roam")[0],c.getElementsByTagName("*"),u=c.getElementsByClassName("table-body")[0],h=c.getElementsByClassName("table-empty")[0],p={set:function(e,t,i){return e[t]=i,e.length>0?h.style.display="none":h.style.display="flex",!0}},d=0,m=new Proxy([],p),d=0;d0&&Ai(t,m,0)})),c.getElementsByClassName("add-point")[0].addEventListener("click",(function(){var e=r.cartesian3Towgs84(a.camera.position,a),t=Number(c.querySelector("input[name='defaultTime']").value),i={duration:m.length===l?0:t,position:e,orientation:{heading:a.camera.heading,pitch:a.camera.pitch,roll:a.camera.roll}};m.length===l&&0!==l&&(m[m.length-1].duration=t,u.getElementsByClassName("tr")[m.length-1].querySelector("input[name='time']").value=t);m.splice(l,0,i),w(i),d++,o({name:s,points:m,repeat:Ti+"",defaultTime:v.value,totalTime:g.value})})),g=c.querySelector("input[name='totalTime']"),y=c.getElementsByClassName("isTotalTime")[0],C=c.querySelector("input[name='repeat']"),y.addEventListener("click",(function(){var e=u.getElementsByClassName("tr");if(e.length>0){for(var t=Number((Number(g.value)/(e.length-1)).toFixed(2)),i=0;i0){for(var t=Number((Number(g.value)/(e.length-1)).toFixed(2)),i=0;i1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;_i&&_i.destroy(),(_i=new Cesium.ScreenSpaceEventHandler(e.viewer.canvas)).setInputAction((function(t){Li(e)}),Cesium.ScreenSpaceEventType.RIGHT_CLICK);var o,s=e.viewer;s.camera.cancelFlight(),Object(X.f)(e),Object(X.g)(e),s.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(t[i].position.lng,t[i].position.lat,t[i].position.alt),orientation:t[i].orientation,duration:n?t[i-1].duration:.5,maximumHeight:t[i].position.alt,complete:(o=_()(S.a.mark((function n(){return S.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:++i<=t.length-1?ji(e,t,i,!0):Ni&&t.length>1?(Ni--,ji(e,t,0)):_i&&_i.destroy();case 3:case"end":return n.stop()}}),n)}))),function(){return o.apply(this,arguments)}),easingFunction:n?Cesium.EasingFunction.LINEAR_NONE:Cesium.EasingFunction.EXPONENTIAL_OUT})},Ai=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;Ni=Ti,ji(e,t,i,n)},Li=function(e){e&&e.viewer&&e.viewer.camera.cancelFlight(),_i&&_i.destroy()},Ii=i(22);function Ri(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}var zi=i(32);var Fi,Hi,Vi=null,Gi=null,Wi=null,Ui=19,Yi=!0,Ji=10,qi="#ffd000",Xi=!0,Zi=2.5,Ki="#43cf7c",Qi=!0,$i=1.8,en="#ff0000",tn=!1,nn=1,on="#64b6d9",sn=!1,an=1,rn="#d084d1",ln={};function cn(){if(Hi){var e=Hi.viewer.camera.positionCartographic;Cesium.Math.toDegrees(e.height)<1e6?Hi.viewer.scene.globe.material||!0!==Yi||pn(Hi):dn(Hi)}}function un(e){var t=e.red,i=e.green,n=e.blue,o=e.alpha,s=void 0===o?1:o;return"rgba(".concat(255*t,", ").concat(255*i,", ").concat(255*n,", ").concat(s,")")}function hn(){return(hn=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(p=function(e){var t=e.target.value;return(e.target.value||"undefined"!==e.target.dataset.null&&""!==e.target.dataset.null&&!Boolean(e.target.dataset.null))&&(t=Number(t),e.target.max&&t>Number(e.target.max)&&(t=Number(e.target.max)),e.target.min&&t1e6||(Gi&&Gi.destroy(),e.viewer.container.getElementsByClassName("YJ-customize-active-height-elm")[0]||e.viewer.container.appendChild(Wi),(Gi=new Cesium.ScreenSpaceEventHandler(e.viewer.canvas)).setInputAction((function(t){var i=e.viewer.scene.pickPosition(t.endPosition);if(i){var n=0,o=0;if(e.viewer&&e.viewer._element){var s=e.viewer._element.getElementsByClassName("cesium-widget")[0].getElementsByTagName("canvas")[0];n=s.getBoundingClientRect().top+window.scrollY,o=s.getBoundingClientRect().left+window.scrollX}Wi.style.left=t.endPosition.x-50+o+"px",Wi.style.top=t.endPosition.y-40+n+"px",Wi.style.display="block";var a=Fi.cartesian3Towgs84(i,e.viewer),r=Math.floor(a.alt/Vi.uniforms.spacing)*Vi.uniforms.spacing,l=a.alt-r,c=Vi.uniforms.spacing/(Vi.uniforms.secondaryLinesCount+1),u=Math.floor(l/c)*c+r;a.alt<0&&(a.alt=0),a.alt-u>c/2&&(u+=c),Vi.uniforms.mouseHeight=a.alt,Vi.uniforms.mousePosition=i,Wi.innerHTML="".concat(u.toFixed(0))}else Wi.style.display="none"}),Cesium.ScreenSpaceEventType.MOUSE_MOVE),e.viewer.scene.globe.material=Vi)}function dn(e){Gi&&(Gi.destroy(),Gi=null),e.viewer.container.getElementsByClassName("YJ-customize-active-height-elm")[0]&&(Wi.style.display="none",e.viewer.container.removeChild(Wi)),e.viewer.scene.globe.material=null}function mn(){Cesium.Material._materialCache._materials.ElevationContour.fabric.source="\nuniform vec4 activeColor; // 选中颜色\nuniform float spacing; // 等高距\n\n// 计曲线\nuniform bool indexContourShow;\nuniform float indexContourWidth;\nuniform vec4 indexContourColor;\n// 首曲线\nuniform bool intermediateContourShow;\nuniform float intermediateContourWidth;\nuniform vec4 intermediateContourColor;\n// 间曲线\nuniform bool halfIntervalContourShow;\nuniform float halfIntervalContourWidth;\nuniform vec4 halfIntervalContourColor;\n// 助曲线\nuniform bool supplementaryContourShow;\nuniform float supplementaryContourWidth;\nuniform vec4 supplementaryContourColor;\n\nuniform float mouseHeight;\n\nuniform float secondaryLinesCount; // 0=无次线, 1=1条次线, 2=2条次线...\n\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\n czm_material material = czm_getDefaultMaterial(materialInput);\n\n // 主等高线计算\n float distanceToMainContour = mod(materialInput.height, spacing);\n\n // 抗锯齿计算\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\n float dxc = abs(dFdx(materialInput.height));\n float dyc = abs(dFdy(materialInput.height));\n float dFMain = max(dxc, dyc) * czm_pixelRatio * indexContourWidth;\n#else\n float dFMain = czm_pixelRatio * indexContourWidth;\n#endif\n\n bool isMainContour = distanceToMainContour < dFMain;\n bool isSecondaryContour = false;\n float dFSecondary = 0.0;\n float secondarySpacing = 0.0;\n bool isHalfInterval = false;\n bool isIntermediate= false;\n\n // 计算当前高度所属的等高线高度\n float mainContourHeight = floor(materialInput.height / spacing) * spacing;\n float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);\n\n // 计算次线在两条主等高线之间的相对位置\n float relativeHeight = materialInput.height - mainContourHeight;\n float normalizedPosition = relativeHeight / spacing;\n\n // 计算次线索引(从主等高线开始计数)\n float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));\n\n // 只有当存在次线时才计算次线\n if(secondaryLinesCount > 0.0) {\n float secondaryLinesWidth = supplementaryContourWidth;\n secondarySpacing = spacing / (secondaryLinesCount + 1.0);\n float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);\n\n // 确保次线不会与主线重叠\n float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);\n bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2倍线宽缓冲\n\n\n if (lineIndex > 0.0 && lineIndex < secondaryLinesCount) {\n // 使用mod函数检查余数是否接近0(考虑浮点数精度问题)\n isHalfInterval = abs(mod(lineIndex, 2.0)) < 0.01;\n if(isHalfInterval) {\n secondaryLinesWidth = halfIntervalContourWidth;\n }\n // 使用mod函数检查余数是否接近0(考虑浮点数精度问题)\n isIntermediate = abs(mod(lineIndex, 4.0)) < 0.01;\n if(isIntermediate) {\n secondaryLinesWidth = intermediateContourWidth;\n }\n }\n\n\n\n\n\n\n\n\n\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\n dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;\n#else\n dFSecondary = czm_pixelRatio * secondaryLinesWidth;\n#endif\n\n isSecondaryContour = (distanceToSecondaryContour < dFSecondary) && notCloseToMain;\n }\n\n // 高亮判断\n bool shouldHighlight = false;\n if(isMainContour && abs(mainContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\n shouldHighlight = true;\n } else if(isSecondaryContour && abs(secondaryContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\n shouldHighlight = true;\n }\n\n // 颜色输出\n vec4 outColor;\n if(shouldHighlight) {\n outColor = czm_gammaCorrect(vec4(activeColor.rgb, activeColor.a));\n } else if(isMainContour) {\n float a = indexContourColor.a;\n if(!indexContourShow) {\n a = 0.0;\n }\n outColor = czm_gammaCorrect(vec4(indexContourColor.rgb, a));\n } else if(isSecondaryContour) {\n float a = supplementaryContourColor.a;\n if(!supplementaryContourShow) {\n a = 0.0;\n }\n outColor = czm_gammaCorrect(vec4(supplementaryContourColor.rgb, a));\n if(isHalfInterval) {\n float a = halfIntervalContourColor.a;\n if(!halfIntervalContourShow) {\n a = 0.0;\n }\n outColor = czm_gammaCorrect(vec4(halfIntervalContourColor.rgb, a));\n }\n if(isIntermediate) {\n float a = intermediateContourColor.a;\n if(!intermediateContourShow) {\n a = 0.0;\n }\n outColor = czm_gammaCorrect(vec4(intermediateContourColor.rgb, a));\n }\n } else {\n outColor = vec4(0.0);\n }\n\n if(materialInput.height<0.0) {\n outColor = vec4(0.0);\n }\n\n material.diffuse = outColor.rgb;\n material.alpha = outColor.a;\n return material;\n}\n",Vi=new Cesium.Material({fabric:{type:"ElevationContour",uniforms:{spacing:50,activeColor:Cesium.Color.fromCssColorString(qi),mouseHeight:-1e5,mousePosition:new Cesium.Cartesian3(0,0,0),secondaryLinesCount:Ui,cameraHeight:0,indexContourShow:Xi,indexContourWidth:Zi,indexContourColor:Cesium.Color.fromCssColorString(Ki),intermediateContourShow:Qi,intermediateContourWidth:$i,intermediateContourColor:Cesium.Color.fromCssColorString(en),halfIntervalContourShow:tn,halfIntervalContourWidth:nn,halfIntervalContourColor:Cesium.Color.fromCssColorString(on),supplementaryContourShow:sn,supplementaryContourWidth:an,supplementaryContourColor:Cesium.Color.fromCssColorString(rn)}}})}function fn(e,t,i){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,i)}function vn(e,t,i){return e.set(yn(e,t),i),i}function gn(e,t){return e.get(yn(e,t))}function yn(e,t,i){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:i;throw new TypeError("Private element is not present on this object")}(Wi=document.createElement("div")).className="YJ-customize-active-height-elm",Wi.style.position="absolute",Wi.style.left="10px",Wi.style.top="10px",Wi.style.width="100px",Wi.style.textAlign="center",Wi.style.pointerEvents="none",Wi.style.color="#ff0000",Wi.style.display="none";var bn=new WeakMap,Cn=new WeakMap,wn=function(){return h()((function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;c()(this,e),fn(this,bn,null),fn(this,Cn,{bgimg:null,img1:null,img2:null,img3:null,img4:null}),this.sdk=t,this.options=i,this.data={},this._webSocketCallback=n,this._tools=new b.a(this.sdk),this.requestResource()}),[{key:"requestResource",value:function(){var e=this;this.options.host=this.options.host||Object(n.a)();var t;t=this.options.host+"/yjearth4.0/api/v1/gps/state",this.reconnecting=new ReconnectingWebSocket("ws://"+t,[],{maxReconnectAttempts:8}),this.reconnecting.onopen=function(t){e.reconnecting.onmessage=function(){var t=_()(S.a.mark((function t(i){var n;return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.data=JSON.parse(i.data),!e.data||!e.data.rmc){t.next=7;break}return t.next=4,e._tools.getClampToHeight(e.data.rmc);case 4:n=t.sent,e.position=new Cesium.Cartesian3.fromDegrees(e.data.rmc.lng,e.data.rmc.lat,n),e.create();case 7:e._webSocketCallback&&e._webSocketCallback(e.data);case 8:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}}},{key:"create",value:function(){var e=this;if(this.getcanvas(),this.data&&this.data.rmc&&!this.entity){this.entity=new Cesium.CustomDataSource,this.sdk.viewer.dataSources.add(this.entity);var t=new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return e.position}),!1),billboard:{image:this._tools.getSourceRootPath()+"/img/locate2.png",scale:1,disableDepthTestDistance:new Cesium.CallbackProperty((function(){return Object(X.s)()?void 0:1e8}),!1),width:31,height:36,pixelOffset:new Cesium.Cartesian2(0,-15)}}),i=new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return e.position}),!1),billboard:{image:new Cesium.CallbackProperty((function(){return e.lableCanvas})),scale:1,disableDepthTestDistance:new Cesium.CallbackProperty((function(){return Object(X.s)()?void 0:1e8}),!1),width:220,height:140,pixelOffset:new Cesium.Cartesian2(0,-110)}});this.entity.entities.add(t),this.entity.entities.add(i)}}},{key:"loaded",value:function(e){var t;Object.defineProperty(this,"data",{get:function(){return t},set:function(i){t=i,e&&(e(),e=void 0)}})}},{key:"getcanvas",value:function(){var e=this,t=[{images:this._tools.getSourceRootPath()+"/img/bubble/lng.png",text:"经度:"+parseFloat(this.data.rmc.lng.toFixed(10))},{images:this._tools.getSourceRootPath()+"/img/bubble/lat.png",text:"纬度:"+parseFloat(this.data.rmc.lat.toFixed(10))},{images:this._tools.getSourceRootPath()+"/img/bubble/h.png",text:"海拔:"+parseFloat(this.data.rmc.alt.toFixed(10))},{images:this._tools.getSourceRootPath()+"/img/bubble/satellite.png",text:"卫星:"+this.data.satellites||!1}];if(gn(bn,this)){var i=gn(bn,this).getContext("2d");i.clearRect(0,0,gn(bn,this).width,gn(bn,this).height),i.drawImage(gn(Cn,this).bgimg,0,0,gn(bn,this).width,gn(bn,this).height);var n=0;t.forEach((function(o,s){i.drawImage(gn(Cn,e)["img"+(s+1)],12,12+26*s),i.fillStyle="#fff",i.font="16px Arial",i.fillText(o.text,44,28+26*s),++n===t.length&&(e.lableCanvas=gn(bn,e).toDataURL())}))}else{vn(bn,this,document.createElement("canvas"));var o=gn(bn,this).getContext("2d");gn(bn,this).width=220,gn(bn,this).height=140;var s=new Image;gn(Cn,this).bgimg=s,s.src=this._tools.getSourceRootPath()+"/img/bubble/bubble.png";var a=0;s.onload=function(){o.drawImage(s,0,0,gn(bn,e).width,gn(bn,e).height),t.forEach((function(i,n){var s=new Image;gn(Cn,e)["img"+(n+1)]=s,s.src=i.images,s.onload=function(){o.drawImage(s,12,12+26*n),o.fillStyle="#fff",o.font="16px Arial",o.fillText(i.text,44,28+26*n),++a===t.length&&(e.lableCanvas=gn(bn,e).toDataURL())}}))}}}},{key:"flyTo",value:(e=_()(S.a.mark((function e(){var t,i,n=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.length>0&&void 0!==n[0]?n[0]:{},!this.data||!this.data.rmc){e.next=9;break}return e.next=4,this._tools.getClampToHeight(this.data.rmc);case 4:i=e.sent,Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.sdk.viewer.camera.flyTo({orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)},destination:Cesium.Cartesian3.fromDegrees(this.data.rmc.lng,this.data.rmc.lat,i+(t.height||500))});case 9:case"end":return e.stop()}}),e,this)}))),function(){return e.apply(this,arguments)})},{key:"remove",value:function(){vn(bn,this,null),vn(Cn,this,{}),this.reconnecting&&this.reconnecting.close(),this.sdk.viewer.dataSources.remove(this.entity),this.entity=null}},{key:"flicker",value:function(){}}]);var e}();var kn=i(17),_n=i.n(kn),xn=i(21);function Sn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function En(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Pn(this,t,[e,n])).color=n.color||"rgba(255,0,0,0.5)",i.polygonHasCreated=!1,i}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l;this.polygonHasCreated=!1,(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确定,右键结束;CTRL+右键撤销",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var c=[],u=[];this.event.mouse_left((function(i,n){if("2D"!==l){if(l="3D",r.positions=c.concat(En({},n)),r.tip.setPosition(n,i.position.x,i.position.y),!r.polygonHasCreated){var o=t.create_polygon(r);r.points_ids.push(o)}c.push(n),u.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n)),e(c.length)}})),this.event.mouse_right((function(t,i){"2D"!==l&&(e(null,u),r.end())})),this.event.mouse_move((function(e,t){"2D"!==l&&(r.positions=c.concat(En({},t)),r.tip.setPosition(t,e.endPosition.x,e.endPosition.y))})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),u.pop(),e(c.length))})),this.event.gesture_pinck_start_keyboard_ctrl((function(){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),u.pop(),r.positions=c.concat(cartesian),e(c.length))})),this.event.gesture_pinck_start((function(i,n){if("2D"!==l){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500)e(null,u),r.end();else{if(r.tip.setPosition(n,(i.position1.x+i.position2.x)/2,(i.position1.y+i.position2.y)/2),!r.polygonHasCreated){var s=t.create_polygon(r);r.points_ids.push(s)}c.push(n),u.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n)),r.positions=c.concat(n),e(c.length)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(i,n){if("3D"!==l){if(l="2D",r.positions=c.concat(En({},n)),r.tip.setPosition(n,i.position.x+r.viewer.canvas.width,i.position.y),!r.polygonHasCreated){var o=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(o)}c.push(n),u.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),e(c.length)}})),this.event2D.mouse_right((function(t,i){"3D"!==l&&(e(null,u),r.end())})),this.event2D.mouse_move((function(e,t){"3D"!==l&&(r.positions=c.concat(En({},t)),r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y))})),this.event2D.mouse_right_keyboard_ctrl((function(t,i){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),u.pop(),e(c.length))})),this.event2D.gesture_pinck_start_keyboard_ctrl((function(){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),u.pop(),r.positions=c.concat(cartesian),e(c.length))})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==l){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500)e(null,u),r.end();else{if(r.tip.setPosition(n,(i.position1.x+i.position2.x)/2+r.viewer.canvas.width,(i.position1.y+i.position2.y)/2),!r.polygonHasCreated){var s=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(s)}c.push(n),u.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),r.positions=c.concat(n),e(c.length)}}))}})))}}}],[{key:"create_polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer;e.polygonHasCreated=!0;var i=e.randomString();return t.entities.add(new Cesium.Entity({id:i,polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){return new Cesium.PolygonHierarchy(e.positions)})),material:Cesium.Color.fromCssColorString(e.color),zIndex:99999999},polyline:{positions:new Cesium.CallbackProperty((function(t){return e.positions.concat(e.positions[0])})),width:3,material:Cesium.Color.fromCssColorString(e.color).withAlpha(1),clampToGround:!0,zIndex:99999999}})),i}}])}(xn.a),On=function(){return h()((function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};c()(this,e),this.sdk=t,this.viewer=t.viewer,this.height=i.height||70,this.maxHeigh=-1e6,this.precision=i.precision||125,this.Dialog=n,this.result={allArea:"",cutArea:"",cutVolume:"",fillArea:"",fillVolume:"",noArea:""},this.entities=[],this.tools=new b.a(this.sdk),this.Draw=new Dn(this.sdk,{tipText:"左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点"}),YJ.Analysis.AnalysesResults.push(this)}),[{key:"create",value:function(){var e=this;this.clean(),this.Draw.start((function(t,i){if(!i||i.length<3)e.Draw.tipText=t>=3?"左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销":"左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点";else{for(var n=[],o=0;othis.maxHeigh&&(this.maxHeigh=o),{heightPos:Cesium.Cartesian3.fromRadians(n.longitude,n.latitude,o),noHeightPos:Cesium.Cartesian3.fromRadians(n.longitude,n.latitude,0),height:o}}},{key:"heights",get:function(){return this.height},set:function(e){this.height=e}},{key:"precisions",get:function(){return this.precision},set:function(e){this.precision=e}},{key:"allArea",get:function(){return Number(this.result.allArea.toFixed(4))},set:function(e){this.result.allArea=e}},{key:"fillArea",get:function(){return Number(this.result.fillArea.toFixed(4))},set:function(e){this.result.fillArea=e}},{key:"fillVolume",get:function(){return Number(this.result.fillVolume.toFixed(4))},set:function(e){this.result.fillVolume=e}},{key:"cutArea",get:function(){return Number(this.result.cutArea.toFixed(4))},set:function(e){this.result.cutArea=e}},{key:"cutVolume",get:function(){return Number(this.result.cutVolume.toFixed(4))},set:function(e){this.result.cutVolume=e}},{key:"noArea",get:function(){return Number(this.result.noArea.toFixed(4))},set:function(e){this.result.noArea=e}},{key:"onEnd",get:function(){return this.clickCallBack},set:function(e){e&&"function"!=typeof e?console.error("val:",e,"不是一个function"):this.clickCallBack=e}},{key:"clean",value:function(){this.Draw&&this.Draw.end();for(var e=0;e\n
          \n
          \n
          \n 绘制分析区域\n \n
          \n
          \n
          \n \n
          \n
          \n
          \n 基准高度\n
          \n \n m\n \n
          \n
          \n
          \n 精度\n
          \n \n \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 总分析面积:\n 0\n \n
          \n
          \n 无须填挖面积:\n 0\n \n
          \n
          \n
          \n
          \n 填方面积:\n 0\n \n
          \n
          \n 挖方面积:\n 0\n \n
          \n
          \n
          \n
          \n 填方体积:\n 0\n \n
          \n
          \n 挖方体积:\n 0\n \n
          \n
          \n
          \n \n ',t._DialogObject.contentAppChild(i),t._DialogObject._element.body.className=t._DialogObject._element.body.className+" cut-fill",(n=i.querySelector("input[name='height']")).value=t.height,n.addEventListener("blur",(function(e){var i=e.target.value;"."==e.data||"-"==e.data&&!e.target.value||(i=Number(i),e.target.max&&i>Number(e.target.max)&&(i=Number(e.target.max)),e.target.min&&iNumber(e.target.max)&&(i=Number(e.target.max)),e.target.min&&i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Tn(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;return c()(this,t),(i=Nn(this,t,[e,n])).sdk=e,i.options={},i.options.name=n.name,i.options.risingSpeed=1,i.options.minWaterLevel=0,i.options.maxWaterLevel=0,i.options.waterVolume=0,i.currentWaterLaver,i.color="#00d9ff66",i.Dialog=o,i.Draw=new Dn(i.sdk,{tipText:"左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点"}),i.positions,i.status=!0,i.area=0,i._elms={},i.tools=new b.a(i.sdk),i.callback=s,YJ.Analysis.AnalysesResults.push(i),i}return Me()(t,e),h()(t,[{key:"draw",value:function(e){t.create(this,e)}},{key:"onEnd",get:function(){return this.clickCallBack},set:function(e){e&&"function"!=typeof e||(this.clickCallBack=e)}},{key:"waterLevels",get:function(){return this.waterLevel},set:function(e){this.waterLevel=e}},{key:"waterVolume",get:function(){return this.options.waterVolume},set:function(e){this.options.waterVolume=e}},{key:"minWaterLevel",get:function(){return this.options.minWaterLevel},set:function(e){this.options.minWaterLevel=e,this.currentWaterLaver=this.options.minWaterLevel}},{key:"maxWaterLevel",get:function(){return this.options.maxWaterLevel},set:function(e){this.options.maxWaterLevel=e}},{key:"risingSpeed",get:function(){return this.options.risingSpeed},set:function(e){this.options.risingSpeed=e}},{key:"areas",get:function(){return this.area},set:function(e){this.area=e}},{key:"move",value:function(){var e=this,t=this;if(!this.TweenAnimate&&this.options.risingSpeed){var i=(this.options.maxWaterLevel-this.options.minWaterLevel)/this.options.risingSpeed*1e3;this.TweenAnimate=new TWEEN.Tween({waterLevel:this.options.minWaterLevel}).to({waterLevel:this.options.maxWaterLevel},i).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(function(){var t=_()(S.a.mark((function t(i,n){return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.currentWaterLaver=i.waterLevel;case 1:case"end":return t.stop()}}),t)})));return function(e,i){return t.apply(this,arguments)}}()).onComplete((function(){t.callback()})).start()}else this.options.risingSpeed||t.callback()}},{key:"restart",value:function(){var e=this;this.currentWaterLaver=this.options.minWaterLevel;var t=this;this.TweenAnimate&&(this.TweenAnimate._isPaused,TWEEN.remove(this.TweenAnimate));var i=(this.options.maxWaterLevel-this.options.minWaterLevel)/this.options.risingSpeed*1e3;this.TweenAnimate=new TWEEN.Tween({waterLevel:this.options.minWaterLevel}).to({waterLevel:this.options.maxWaterLevel},i).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(function(){var t=_()(S.a.mark((function t(i,n){return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.currentWaterLaver=i.waterLevel;case 1:case"end":return t.stop()}}),t)})));return function(e,i){return t.apply(this,arguments)}}()).onComplete((function(){t.callback()})).start(),this.pause()}},{key:"start",value:function(){this.TweenAnimate&&this.TweenAnimate.resume()}},{key:"pause",value:function(){this.TweenAnimate&&this.TweenAnimate.pause()}},{key:"calculateVolumeHeight",value:function(){that.options.maxWaterLevel}},{key:"flyTo",value:function(){if(this.positions&&0!==this.positions.length){Object(X.f)(this.sdk),Object(X.g)(this.sdk);for(var e=[],t=0;t=3?"左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销":"左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点";else{e.destroy();var o=[];e.positions=n,e._positions=n,e.options.minWaterLevel=n[0].alt;for(var s=0;sn[s].alt&&(e.options.minWaterLevel=n[s].alt),o.push(n[s].lng,n[s].lat);e.options.maxWaterLevel=n[0].alt;for(var a=0;a\n
          \n
          \n
          \n 水量\n
          \n \n \n \n
          \n
          \n
          \n 最小水位\n
          \n \n m\n \n
          \n
          \n
          \n
          \n
          \n 水面面积\n
          \n \n \n \n
          \n
          \n
          \n 最大水位\n
          \n \n m\n \n
          \n
          \n
          \n
          \n \n
          \n
          \n 上升速度\n
          \n
          \n
          \n \n
          \n \n m/s\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 ',i._DialogObject.contentAppChild(n),(o=document.createElement("button")).className="el-button",o.innerHTML="暂停",o.style.width="80px",n.getElementsByClassName("draw")[0].addEventListener("click",(function(){t.create(i)})),n.getElementsByClassName("analog")[0].addEventListener("click",(function(){i.move()})),n.getElementsByClassName("flyto")[0].addEventListener("click",(function(){i.flyTo()})),n.getElementsByClassName("reset")[0].addEventListener("click",(function(){i.restart()})),s=n.getElementsByClassName("pause")[0],a=n.getElementsByClassName("start")[0],s.addEventListener("click",(function(){i.pause(),s.style.display="none",a.style.display="flex"})),a.addEventListener("click",(function(){i.start(),a.style.display="none",s.style.display="flex"})),(r=n.querySelectorAll("input[name='risingSpeed']"))[0].value=i.options.risingSpeed,r[1].value=i.options.risingSpeed,r[0].addEventListener("input",(function(e){i.options.risingSpeed=Number(e.target.value)})),r[1].addEventListener("input",(function(e){if("."!=e.data){var t=Number(e.target.value),n=Number(r[0].max),o=Number(r[0].min);i.options.risingSpeed=t>n?n:t999999999&&(t=999999999),t<0&&(t=0),i.options.minWaterLevel=Math.floor(1e4*t)/1e4,i.options.maxWaterLevel=i.options.minWaterLevel+i.waterLevel}})),Object.defineProperty(i.options,"minWaterLevel",{get:function(){return Number(l.value)},set:function(e){l.value=Math.floor(1e4*Number(e))/1e4}}),(c=n.querySelector("input[name='maxWaterLevel']")).value=i.options.maxWaterLevel,c.addEventListener("input",(function(e){if("."!=e.data){var t=Number(e.target.value);t>999999999&&(t=999999999),t<0&&(t=0),t99999999999999&&(t=99999999999999),t<0&&(t=0),i.options.waterVolume=Math.floor(1e4*t)/1e4,i.area&&(i.waterLevel=Number((i.options.waterVolume/i.area).toFixed(4)),console.log(i.options.minWaterLevel,i.options.minWaterLevel,"klklklkl"),i.options.maxWaterLevel=Math.floor(1e4*i.options.minWaterLevel)/1e4+Math.floor(1e4*i.options.minWaterLevel)/1e4)}})),Object.defineProperty(i.options,"waterVolume",{get:function(){return Number(u.value)},set:function(e){u.value=e}}),(h=n.getElementsByClassName("area")[0]).value=i.area,Object.defineProperty(i,"area",{get:function(){return Number(h.value)},set:function(e){h.value=e,i.waterLevel=Number((i.options.waterVolume/i.area).toFixed(4)),i.options.maxWaterLevel=i.options.minWaterLevel+i.waterLevel}}),p=n.getElementsByClassName("table-body")[0],d=n.getElementsByClassName("table-empty")[0],Object.defineProperty(i,"positions",{get:function(){return i._positions},set:function(e){if(e&&e.length>0){d.style.display="none";for(var t="",i=0;i\n
          '.concat(i+1,'
          \n
          ').concat(Number(e[i].lng.toFixed(10)),'
          \n
          ').concat(Number(e[i].lat.toFixed(10)),'
          \n
          ').concat(Number(e[i].alt.toFixed(4)),"
          \n ");p.innerHTML=t}else p.innerHTML="",d.style.display="flex"}});case 51:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"EventBinding",value:function(e,t){for(var i=function(){var i=[],o=!1,s=[];if(!t[n]||!t[n].attributes)return 1;var a,r=Mn(t[n].attributes);try{var l=function(){var r=a.value;switch(r.name){case"@model":o=!0,"checkbox"==t[n].type?(i.push((function(t){e[r.value]=t.target.checked})),t[n].checked=e[r.value]):(i.push((function(t){var i=t.target.value;"number"==t.target.type&&(i=Number(i)),e[r.value]=i})),"IMG"==t[n].nodeName?t[n].src=e[r.value]:t[n].value=e[r.value]),e._elms[r.value]?e._elms[r.value].push(t[n]):e._elms[r.value]=[t[n]],s.push(r.name);break;case"@click":t[n].addEventListener("click",(function(t){"function"==typeof e[r.value]&&e[r.value](t)})),s.push(r.name);break;case"@change":o=!0,i.push((function(t){var i=t.target.value;"number"==t.target.type&&""!=i&&(i=Number(i),t.target.value=i),"function"==typeof e[r.value]&&e[r.value](t,i)}))}};for(r.s();!(a=r.n()).done;)l()}catch(e){r.e(e)}finally{r.f()}for(var c=0;c1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Ln(this,t,[e,n])).viewer=e.viewer,i.options={},i.options.viewPosition=n.viewPosition,i.options.viewPositionEnd=n.viewPositionEnd,i.options.horizontalViewAngle=n.horizontalViewAngle||0===n.horizontalViewAngle?n.horizontalViewAngle:90,i.options.verticalViewAngle=n.verticalViewAngle||0===n.verticalViewAngle?n.verticalViewAngle:60,i.options.visibleAreaColor=n.visibleAreaColor||"#008000",i.options.invisibleAreaColor=n.invisibleAreaColor||"#FF0000",i._elms={},i.viewPointHeight=n.viewPointHeight,i.ids=[],i.Dialog=o,i.tools=new b.a(i.sdk),i._EventBinding=new Ye,i.html=null,YJ.Analysis.AnalysesResults.push(i),i}return Me()(t,e),h()(t,[{key:"viewPointHeight",get:function(){return this.options.viewPointHeight},set:function(e){var t=Math.floor(10*Number(e))/10;isNaN(t)&&(t=1.8),t<0&&(t=0),this.options.viewPointHeight=t,this._elms.viewPointHeight&&this._elms.viewPointHeight.forEach((function(e){e.value=t}))}},{key:"viewPosition",get:function(){return this.options.viewPosition},set:function(e){this.options.viewPosition=e,this.ids[0]&&(this.viewer.entities.getById(this.ids[0]).position=new Cesium.Cartesian3.fromDegrees(e.lng,e.lat,e.alt)),this.update()}},{key:"viewPositionEnd",get:function(){return this.options.viewPositionEnd},set:function(e){this.options.viewPositionEnd=e,this.ids[1]&&(this.viewer.entities.getById(this.ids[1]).position=new Cesium.Cartesian3.fromDegrees(e.lng,e.lat,e.alt)),this.update()}},{key:"horizontalViewAngle",get:function(){return this.options.horizontalViewAngle},set:function(e){if(this.options.horizontalViewAngle=e,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content){var t=this._DialogObject._element.content;t.querySelector("input[name='horizontalViewAngle']").value=e,t.getElementsByClassName("range-node-active")[0].getElementsByClassName("range-node-active-text")[0].innerHTML=e+"°",t.getElementsByClassName("range-process")[0].style.width=e/180*100+"%"}this.update()}},{key:"horizontalViewAngles",get:function(){return this.horizontalViewAngle},set:function(e){this.horizontalViewAngle=e}},{key:"visibleAreaColor",get:function(){return this.options.visibleAreaColor},set:function(e){this.options.visibleAreaColor=e,this.update()}},{key:"invisibleAreaColor",get:function(){return this.options.invisibleAreaColor},set:function(e){this.options.invisibleAreaColor=e,this.update()}},{key:"verticalViewAngle",get:function(){return this.options.verticalViewAngle},set:function(e){this.options.verticalViewAngle=e,this.update()}},{key:"viewDistance",get:function(){if(this.options.viewPosition){var e=Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),t=Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng,this.options.viewPositionEnd.lat,this.options.viewPositionEnd.alt);return Cesium.Cartesian3.distance(e,t)}}},{key:"viewHeading",get:function(){var e,t,i,n,o=Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),s=Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng,this.options.viewPositionEnd.lat,this.options.viewPositionEnd.alt);return e=o,t=s,i=new Cesium.Cartesian3,n=Cesium.Transforms.eastNorthUpToFixedFrame(e),Cesium.Matrix4.inverse(n,n),Cesium.Matrix4.multiplyByPoint(n,t,i),Cesium.Cartesian3.normalize(i,i),Cesium.Math.toDegrees(Math.atan2(i.x,i.y))}},{key:"viewPitch",get:function(){var e,t,i,n,o=Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),s=Cesium.Cartesian3.fromDegrees(this.options.viewPositionEnd.lng,this.options.viewPositionEnd.lat,this.options.viewPositionEnd.alt);return e=o,t=s,i=new Cesium.Cartesian3,n=Cesium.Transforms.eastNorthUpToFixedFrame(e),Cesium.Matrix4.inverse(n,n),Cesium.Matrix4.multiplyByPoint(n,t,i),Cesium.Cartesian3.normalize(i,i),Cesium.Math.toDegrees(Math.asin(i.z))}},{key:"end",value:function(){var e=this;this.ids.forEach((function(t){var i=e.viewer.entities.getById(t);i&&(i.show=!1)})),YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=null,this.event=null}},{key:"draw",value:function(e){t.create(this,e)}},{key:"add",value:function(){this.options.viewPositionEnd&&(this.createLightCamera(),this.createShadowMap(),this.createPostStage(),this.drawSketch(),t.getcanvas(this))}},{key:"update",value:function(){this.clear(),this.add()}},{key:"clear",value:function(){YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=null,this.event=null,this.sketch&&(this.viewer.entities.removeById(this.sketch.id),this.sketch=null),this.frustumOutline&&(this.viewer.entities.removeById(this.frustumOutline.id),this.frustumOutline=null),this.postStage&&(this.viewer.scene.postProcessStages.remove(this.postStage),this.postStage=null)}},{key:"destroy",value:function(){var e=this;this.clear(),this.editevent&&this.editevent.destroy(),this.ControllerObject&&this.ControllerObject.destroy(),this.ids.forEach((function(t){e.viewer.entities.removeById(t)})),this.ids=[],this.viewBillboardPrimitive&&this.viewer.scene.primitives.remove(this.viewBillboardPrimitive),this.viewBillboardPrimitive=null,this.options.viewPosition=null,this.options.viewPositionEnd=null,YJ.Measure.SetMeasureStatus(!1),this._originalShadowMap&&(this.viewer.scene.shadowMap=this._originalShadowMap,this._originalShadowMap=null),this.viewer.shadows=this.viewer._shadows}},{key:"close",value:function(){var e=this;YJ.Measure.SetMeasureStatus(!1),this.end(),this.editevent&&this.editevent.destroy(),this.ControllerObject&&this.ControllerObject.destroy(),this.ids.forEach((function(t){e.viewer.entities.removeById(t)}))}},{key:"nodeEdit",value:function(){var e,t=this;YJ.Measure.GetMeasureStatus()?this.tools.message({text:"上一次测量未结束",type:"warning"}):(this.editevent&&this.editevent.destroy(),this.ids.forEach((function(e){t.viewer.entities.getById(e).show=!0})),YJ.Measure.SetMeasureStatus(!0),this.editevent=new te.a(this.sdk),this.editevent.mouse_left((function(i,n){var o=t.viewer.scene.pick(i.position);o&&o.id&&o.id.id&&-1!=t.ids.indexOf(o.id.id)&&(!e||e.id!=o.id.id)&&(e=o.id,t.viewer.entities.getById(t.ids[0]).position=new Cesium.Cartesian3.fromDegrees(t.viewPosition.lng,t.viewPosition.lat,t.viewPosition.alt),t.viewer.entities.getById(t.ids[1]).position=new Cesium.Cartesian3.fromDegrees(t.viewPositionEnd.lng,t.viewPositionEnd.lat,t.viewPositionEnd.alt),t.ControllerObject&&t.ControllerObject.destroy(),t.ControllerObject=new fi(t.sdk,{position:An({},t.cartesian3Towgs84(e.position._value,t.sdk.viewer))}),t.ControllerObject.controllerCallBack=function(i,n){i.position.alt<0&&(i.position.alt=0),e.position=new Cesium.Cartesian3.fromDegrees(i.position.lng,i.position.lat,i.position.alt),n&&(0==t.ids.indexOf(o.id.id)?t.viewPosition=i.position:t.viewPositionEnd=i.position,YJ.Measure.SetMeasureStatus(!0))},t.ControllerObject.editTranslational())})),this.editevent.mouse_right((function(i,n){YJ.Measure.SetMeasureStatus(!1),t.editevent&&t.editevent.destroy(),t.ControllerObject&&t.ControllerObject.destroy(),t.ids.forEach((function(e){t.viewer.entities.getById(e).show=!1})),e=null})),this.editevent.mouse_move((function(e,t){})),this.editevent.gesture_pinck_start((function(i,n){var o=new Date;t.editevent.gesture_pinck_end((function(){new Date-o>=500&&(YJ.Measure.SetMeasureStatus(!1),t.editevent&&t.editevent.destroy(),t.ControllerObject&&t.ControllerObject.destroy(),t.ids.forEach((function(e){t.viewer.entities.getById(e).show=!1})),e=null)}))})))}},{key:"createLightCamera",value:function(){if(this.options.viewPosition){this.lightCamera=new Cesium.Camera(this.viewer.scene),this.lightCamera.position=Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),this.lightCamera.frustum.near=.001*this.viewDistance,this.lightCamera.frustum.far=this.viewDistance;var e=Cesium.Math.toRadians(this.horizontalViewAngle),t=Cesium.Math.toRadians(this.verticalViewAngle),i=this.viewDistance*Math.tan(e/2)*2/(this.viewDistance*Math.tan(t/2)*2);this.lightCamera.frustum.aspectRatio=i,this.lightCamera.frustum.fov=e>t?e:t,this.lightCamera.setView({destination:Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),orientation:{heading:Cesium.Math.toRadians(this.viewHeading||0),pitch:Cesium.Math.toRadians(this.viewPitch||0),roll:0}})}}},{key:"createShadowMap",value:function(){this.shadowMap=new Cesium.ShadowMap({context:this.viewer.scene.context,lightCamera:this.lightCamera,enabled:!0,isPointLight:!0,pointLightRadius:this.viewDistance,cascadesEnabled:!1,size:2048,softShadows:!0,normalOffset:!1,fromLightSource:!1}),this._originalShadowMap||(this._originalShadowMap=this.viewer.scene.shadowMap),this.viewer.scene.shadowMap=this.shadowMap}},{key:"createPostStage",value:function(){var e=this;Number(Cesium.VERSION.split(".")[1])>=102&&We()("fs");var t=new Cesium.PostProcessStage({fragmentShader:"\n #define USE_CUBE_MAP_SHADOW true\n uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;\n varying vec2 v_textureCoordinates;\n uniform mat4 camera_projection_matrix;\n uniform mat4 camera_view_matrix;\n uniform samplerCube shadowMap_textureCube;\n uniform mat4 shadowMap_matrix;\n uniform vec4 shadowMap_lightPositionEC;\n uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;\n uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;\n uniform float helsing_viewDistance;\n uniform vec4 helsing_visibleAreaColor;\n uniform vec4 helsing_invisibleAreaColor;\n\n struct zx_shadowParameters\n {\n vec3 texCoords;\n float depthBias;\n float depth;\n float nDotL;\n vec2 texelStepSize;\n float normalShadingSmooth;\n float darkness;\n };\n\n float czm_shadowVisibility(samplerCube shadowMap, zx_shadowParameters shadowParameters)\n {\n float depthBias = shadowParameters.depthBias;\n float depth = shadowParameters.depth;\n float nDotL = shadowParameters.nDotL;\n float normalShadingSmooth = shadowParameters.normalShadingSmooth;\n float darkness = shadowParameters.darkness;\n vec3 uvw = shadowParameters.texCoords;\n depth -= depthBias;\n float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);\n return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);\n }\n\n vec4 getPositionEC(){\n return czm_windowToEyeCoordinates(gl_FragCoord);\n }\n\n vec3 getNormalEC(){\n return vec3(1.);\n }\n\n vec4 toEye(in vec2 uv,in float depth){\n vec2 xy=vec2((uv.x*2.-1.),(uv.y*2.-1.));\n vec4 posInCamera=czm_inverseProjection*vec4(xy,depth,1.);\n posInCamera=posInCamera/posInCamera.w;\n return posInCamera;\n }\n\n vec3 pointProjectOnPlane(in vec3 planeNormal,in vec3 planeOrigin,in vec3 point){\n vec3 v01=point-planeOrigin;\n float d=dot(planeNormal,v01);\n return(point-planeNormal*d);\n }\n\n float getDepth(in vec4 depth){\n float z_window=czm_unpackDepth(depth);\n z_window=czm_reverseLogDepth(z_window);\n float n_range=czm_depthRange.near;\n float f_range=czm_depthRange.far;\n return(2.*z_window-n_range-f_range)/(f_range-n_range);\n }\n\n float shadow(in vec4 positionEC){\n vec3 normalEC=getNormalEC();\n zx_shadowParameters shadowParameters;\n shadowParameters.texelStepSize=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;\n shadowParameters.depthBias=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;\n shadowParameters.normalShadingSmooth=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;\n shadowParameters.darkness=shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;\n vec3 directionEC=positionEC.xyz-shadowMap_lightPositionEC.xyz;\n float distance=length(directionEC);\n directionEC=normalize(directionEC);\n float radius=shadowMap_lightPositionEC.w;\n if(distance>radius)\n {\n return 2.0;\n }\n vec3 directionWC=czm_inverseViewRotation*directionEC;\n shadowParameters.depth=distance/radius-0.0003;\n shadowParameters.nDotL=clamp(dot(normalEC,-directionEC),0.,1.);\n shadowParameters.texCoords=directionWC;\n float visibility=czm_shadowVisibility(shadowMap_textureCube,shadowParameters);\n return visibility;\n }\n\n bool visible(in vec4 result)\n {\n result.x/=result.w;\n result.y/=result.w;\n result.z/=result.w;\n return result.x>=-1.&&result.x<=1.\n &&result.y>=-1.&&result.y<=1.\n &&result.z>=-1.&&result.z<=1.;\n }\n\n void main(){\n // 釉色 = 结构二维(颜色纹理, 纹理坐标)\n gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n // 深度 = 获取深度(结构二维(深度纹理, 纹理坐标))\n float depth = getDepth(texture2D(depthTexture, v_textureCoordinates));\n // 视角 = (纹理坐标, 深度)\n vec4 viewPos = toEye(v_textureCoordinates, depth);\n // 世界坐标\n vec4 wordPos = czm_inverseView * viewPos;\n // 虚拟相机中坐标\n vec4 vcPos = camera_view_matrix * wordPos;\n float near = .001 * helsing_viewDistance;\n float dis = length(vcPos.xyz);\n if(dis > near && dis < helsing_viewDistance){\n // 透视投影\n vec4 posInEye = camera_projection_matrix * vcPos;\n // 可视区颜色\n // vec4 helsing_visibleAreaColor=vec4(0.,1.,0.,.5);\n // vec4 helsing_invisibleAreaColor=vec4(1.,0.,0.,.5);\n if(visible(posInEye)){\n float vis = shadow(viewPos);\n if(vis > 0.3){\n gl_FragColor = mix(gl_FragColor,helsing_visibleAreaColor,.5);\n } else{\n gl_FragColor = mix(gl_FragColor,helsing_invisibleAreaColor,.5);\n }\n }\n }\n }",uniforms:{shadowMap_textureCube:function(){return e.shadowMap.update(Reflect.get(e.viewer.scene,"_frameState")),Reflect.get(e.shadowMap,"_shadowMapTexture")},shadowMap_matrix:function(){return e.shadowMap.update(Reflect.get(e.viewer.scene,"_frameState")),Reflect.get(e.shadowMap,"_shadowMapMatrix")},shadowMap_lightPositionEC:function(){return e.shadowMap.update(Reflect.get(e.viewer.scene,"_frameState")),Reflect.get(e.shadowMap,"_lightPositionEC")},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){e.shadowMap.update(Reflect.get(e.viewer.scene,"_frameState"));var t=e.shadowMap._pointBias;return Cesium.Cartesian4.fromElements(t.normalOffsetScale,e.shadowMap._distance,e.shadowMap.maximumDistance,0,new Cesium.Cartesian4)},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){e.shadowMap.update(Reflect.get(e.viewer.scene,"_frameState"));var t=e.shadowMap._pointBias,i=new Cesium.Cartesian2;return i.x=1/e.shadowMap._textureSize.x,i.y=1/e.shadowMap._textureSize.y,Cesium.Cartesian4.fromElements(i.x,i.y,t.depthBias,t.normalShadingSmooth,new Cesium.Cartesian4)},camera_projection_matrix:this.lightCamera.frustum.projectionMatrix,camera_view_matrix:this.lightCamera.viewMatrix,helsing_viewDistance:function(){return e.viewDistance},helsing_visibleAreaColor:Cesium.Color.fromCssColorString(this.visibleAreaColor),helsing_invisibleAreaColor:Cesium.Color.fromCssColorString(this.invisibleAreaColor)}});this.postStage=this.viewer.scene.postProcessStages.add(t)}},{key:"drawFrustumOutline",value:function(){var e=new Cesium.Cartesian3,t=new Cesium.Matrix3,i=new Cesium.Quaternion,n=(this.lightCamera.positionWC,this.lightCamera.directionWC),o=this.lightCamera.upWC,s=this.lightCamera.rightWC;s=Cesium.Cartesian3.negate(s,e);var a=t;Cesium.Matrix3.setColumn(a,0,s,a),Cesium.Matrix3.setColumn(a,1,o,a),Cesium.Matrix3.setColumn(a,2,n,a);var r=Cesium.Quaternion.fromRotationMatrix(a,i),l=new Cesium.GeometryInstance({geometry:new Cesium.FrustumOutlineGeometry({frustum:this.lightCamera.frustum,origin:Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),orientation:r}),id:Math.random().toString(36).substr(2),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOWGREEN),show:new Cesium.ShowGeometryInstanceAttribute(!0)}});this.frustumOutline=this.viewer.scene.primitives.add(new Cesium.Primitive({geometryInstances:[l],appearance:new Cesium.PerInstanceColorAppearance({flat:!0,translucent:!1})}))}},{key:"drawSketch",value:function(){this.sketch=this.viewer.entities.add({name:"sketch",position:Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),orientation:Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),Cesium.HeadingPitchRoll.fromDegrees(this.viewHeading-90,this.viewPitch,0)),ellipsoid:{radii:new Cesium.Cartesian3(this.viewDistance,this.viewDistance,this.viewDistance),minimumClock:Cesium.Math.toRadians(-this.horizontalViewAngle/2),maximumClock:Cesium.Math.toRadians(this.horizontalViewAngle/2),minimumCone:Cesium.Math.toRadians(90-this.verticalViewAngle/2),maximumCone:Cesium.Math.toRadians(90+this.verticalViewAngle/2),fill:!1,outline:!0,subdivisions:256,stackPartitions:64,slicePartitions:64,outlineColor:Cesium.Color.YELLOWGREEN}}),this.frustumOutline=this.viewer.entities.add({name:"sketch",position:Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),orientation:Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(this.options.viewPosition.lng,this.options.viewPosition.lat,this.options.viewPosition.alt+this.viewPointHeight),Cesium.HeadingPitchRoll.fromDegrees(this.viewHeading-90,this.viewPitch,0)),ellipsoid:{radii:new Cesium.Cartesian3(this.viewDistance,this.viewDistance,this.viewDistance),innerRadii:new Cesium.Cartesian3(1e-4,1e-4,1e-4),minimumClock:Cesium.Math.toRadians(-this.horizontalViewAngle/2),maximumClock:Cesium.Math.toRadians(this.horizontalViewAngle/2),minimumCone:Cesium.Math.toRadians(90-this.verticalViewAngle/2),maximumCone:Cesium.Math.toRadians(90+this.verticalViewAngle/2),fill:!1,outline:!0,subdivisions:256,stackPartitions:1,slicePartitions:1,outlineColor:Cesium.Color.YELLOWGREEN}})}}],[{key:"create",value:function(e,i){e.destroy();var n=0;YJ.Measure.GetMeasureStatus()?(this.tools.message({text:"上一次测量未结束",type:"warning"}),i(!1)):(e.event=new te.a(e.sdk),e.tip=new St.a("左键选择观测点位置,右键取消",e.sdk),YJ.Measure.SetMeasureStatus(!0),e.event.mouse_left((function(o,s){e.viewPosition||(e.options.viewPosition=e.cartesian3Towgs84(s,e.viewer),e.ids.push(t.create_point(e,s)),e.tip.set_text("左键选择最远观测点位置,右键取消")),2===++n&&(e.options.viewPositionEnd=e.cartesian3Towgs84(s,e.viewer),e.ids.push(t.create_point(e,s)),e.end(),e.update(),i(!0))})),e.event.mouse_move((function(t,i){e.tip.setPosition(i,t.endPosition.x,t.endPosition.y)})),e.event.mouse_right((function(t,n){e.ids.forEach((function(t){e.viewer.entities.removeById(t)})),e.ids=[],e.end(),i(!1)})),e.event.gesture_pinck_start((function(t,n){var o=new Date;e.event.gesture_pinck_end((function(){new Date-o>=500&&(e.ids.forEach((function(t){e.viewer.entities.removeById(t)})),e.ids=[],e.end(),i(!1))}))})))}},{key:"create_point",value:function(e,t){var i=e.randomString(),n=e.cartesian3Towgs84(t,e.viewer),o={id:i,position:Cesium.Cartesian3.fromDegrees(n.lng,n.lat,n.alt),billboard:{image:e.getSourceRootPath()+"/img/point.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}};return e.viewer.entities.add(new Cesium.Entity(o)),i}},{key:"edit",value:(i=_()(S.a.mark((function e(i){var n,o,s,a,r,l,c,u,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i._DialogObject&&i._DialogObject.close&&(i._DialogObject.close(),i._DialogObject=null),e.next=3,new Te.a(i.sdk.viewer._container,{title:"可视域分析",left:"180px",top:"100px",closeCallBack:function(){i.Dialog.closeCallBack&&i.Dialog.closeCallBack(),YJ.Measure.SetMeasureStatus(!1),i.editevent&&i.editevent.destroy(),i.ControllerObject&&i.ControllerObject.destroy(),i.ids.forEach((function(e){i.viewer.entities.removeById(e)}))}});case 3:return i._DialogObject=e.sent,e.next=6,i._DialogObject.init();case 6:i._DialogObject._element.body.className=i._DialogObject._element.body.className+" view-shed",(n=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 位置拾取(起点、终点)\n \n
          \n
          \n
          \n \n
          \n
          \n
          \n 视点高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n
          \n
          \n 视域夹角\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n 45°\n 90°\n 135°\n 180°\n
          \n
          \n \n
          \n
          \n
          \n
          \n \n ',i._DialogObject.contentAppChild(n),i._DialogObject._element.body.getElementsByClassName("edit")[0].addEventListener("click",(function(){i.nodeEdit()})),(o=document.createElement("button")).innerHTML="绘制",o.addEventListener("click",(function(){t.create(i)})),i._DialogObject.footAppChild(o),i.html=n,s=n.getElementsByTagName("*"),i._EventBinding.on(i,s),i._elms=i._EventBinding.element,(a=n.querySelector("input[name='horizontalViewAngle']")).value=i.options.horizontalViewAngle,r=n.getElementsByClassName("range-node-active")[0],l=r.getElementsByClassName("range-node-active-text")[0],c=n.getElementsByClassName("range-process")[0],u=i.horizontalViewAngle/180*100,r.style.left=u+"%",c.style.width=u+"%",l.innerHTML=i.horizontalViewAngle+"°",a.addEventListener("input",(function(){var e=a.value/180*100;r.style.left=e+"%",c.style.width=e+"%",l.innerHTML=a.value+"°"})),a.addEventListener("change",(function(){clearTimeout(h),h=setTimeout((function(){i.horizontalViewAngle=a.value}),300)}));case 31:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"getcanvas",value:function(e){if(e.viewPosition){e.viewBillboardPrimitive&&(e.viewer.scene.primitives.remove(e.viewBillboardPrimitive),e.viewBillboardPrimitive=null);var t=document.createElement("canvas"),i=t.getContext("2d");t.width=220,t.height=180,t.style.background="#000000";var n=new Image,o=[{images:e.getSourceRootPath()+"/img/bubble/lng.png",text:"经度:"+parseFloat(e.viewPosition.lng.toFixed(10))+"°"},{images:e.getSourceRootPath()+"/img/bubble/lat.png",text:"纬度:"+parseFloat(e.viewPosition.lat.toFixed(10))+"°"},{images:e.getSourceRootPath()+"/img/bubble/h.png",text:"高度:"+Number((parseFloat(e.viewPosition.alt.toFixed(2))+Number(e.viewPointHeight)).toFixed(2))+" m"},{images:e.getSourceRootPath()+"/img/bubble/heading.png",text:"偏航角:"+parseFloat(e.viewHeading.toFixed(10))+"°"},{images:e.getSourceRootPath()+"/img/bubble/pitch.png",text:"俯仰角:"+parseFloat(e.viewPitch.toFixed(10))+"°"}];n.src=e.getSourceRootPath()+"/img/bubble/bubble.png";var s=0;n.onload=function(){i.drawImage(n,0,0,t.width,t.height),o.forEach((function(n,a){var r=new Image;r.src=n.images,r.onload=function(){i.drawImage(r,12,12+26*a),i.fillStyle="#fff",i.font="12px Arial",i.fillText(n.text,44,28+26*a),++s===o.length&&(e.viewBillboardPrimitive=e.viewer.scene.primitives.add(new Cesium.BillboardCollection),e.viewBillboardPrimitive.add({position:Cesium.Cartesian3.fromDegrees(e.viewPosition.lng,e.viewPosition.lat,e.viewPosition.alt+e.viewPointHeight),image:t,width:200,height:180,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY}))}}))}}}}]);var i}(b.a);function Rn(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return zn(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?zn(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function zn(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),Hn(i=Fn(this,t,[e,n]),Wn,new Map),i.viewer=e.viewer,i.options={},i.options.visibleAreaColor=n.visibleAreaColor||"#008000",i.options.invisibleAreaColor=n.invisibleAreaColor||"#FF0000",i.ids=[],i.primitives=[],i.viewpointPrimitive=null,i._elms={},i.precision=n.precision,i.viewPointHeight=n.viewPointHeight,i.Dialog=o,i._EventBinding=new Ye,i.html=null,i.tools=new b.a(e),YJ.Analysis.AnalysesResults.push(i),i}return Me()(t,e),h()(t,[{key:"draw",value:function(){if(!this.viewer.terrainProvider.availability)return"未加载地形数据!";t.create(this)}},{key:"viewPointHeight",get:function(){return this.options.viewPointHeight},set:function(e){var t=Math.floor(10*Number(e))/10;isNaN(t)&&(t=1.8),t<0&&(t=0),this.options.viewPointHeight=t,this._elms.viewPointHeight&&this._elms.viewPointHeight.forEach((function(e){e.value=t}))}},{key:"viewPointHeights",get:function(){return this.viewPointHeight},set:function(e){var t=Math.floor(10*Number(e))/10;isNaN(t)&&(t=1.8),t<0&&(t=0),this.viewPointHeight=t}},{key:"precision",get:function(){return this.options.precision},set:function(e){var t=Math.floor(Number(e));isNaN(t)?t=20:t<1&&(t=1),this.options.precision=t,this._elms.precision&&this._elms.precision.forEach((function(e){e.value=t}))}},{key:"precisions",get:function(){return this.precision},set:function(e){this.precision=e}},{key:"analyse",value:function(){var e=this,i=[this.center.lng,this.center.lat],n=this.radius/1e3,o=turf.circle(i,n,{steps:180,units:"kilometers",properties:{foo:"bar"}});this.viewpointPrimitive||(this.viewpointPrimitive=this.viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection)),this.viewBillboardPrimitive||(this.viewBillboardPrimitive=this.viewer.scene.primitives.add(new Cesium.BillboardCollection));for(var s=[],a=n/this.precision,r=1;r=s.length){var t=Vn(Wn,e).get(f);t&&clearInterval(t.event)}else!function(e){for(var t=[],n=e,o=0;o.01&&Math.abs(b.position.y-f.y)>.01&&Math.abs(b.position.z-f.z)>.01&&(w=Cesium.Color.RED);var k=new Cesium.GroundPolylineGeometry({positions:Cesium.Cartesian3.fromDegreesArray([].concat(nt()(a),nt()(r),nt()(l),nt()(c),nt()(a))),width:2}),_=new Cesium.GeometryInstance({geometry:k,name:"ViewershedPolygon",attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(w),show:new Cesium.ShowGeometryInstanceAttribute(!0)}});t.push(_)}m.primitives.push(m.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({geometryInstances:t,appearance:new Cesium.PolylineColorAppearance})))}(d),d+=1}),0);Vn(Wn,this).set(f,{event:v})}},{key:"destroy",value:function(){var e,t,i,n,o=Rn(Vn(Wn,this));try{for(o.s();!(e=o.n()).done;){var a=s()(e.value,2),r=(a[0],a[1]);clearInterval(r.event)}}catch(e){o.e(e)}finally{o.f()}t=Wn,i=this,n=new Map,t.set(Gn(t,i),n);for(var l=0;l35?35:200*e;this.arrowWidth=i<15?15:i;this.viewer;this.Draw.start((function(i,n){if(!n||n.length<3)t.Draw.tipText=i>=3?"左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销":"左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点";else{for(var o=[],s=1e4,a=1e4,r=-1e4,l=-1e3,c=0;cr?h:r,l=p>l?p:l}o.push(o[0]);var d=[s,a,r,l],m=turf.polygon([o]),f=turf.squareGrid(d,e,{mask:m});t.createEllipse(f)}}))}},{key:"createNew4Num",value:function(e){var t=this,i=e;this.Draw.start((function(e,n){if(!n||n.length<3)t.Draw.tipText=e>=3?"左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销":"左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点";else{for(var o=[],s=1e4,a=1e4,r=-1e4,l=-1e3,c=0;cr?h:r,l=p>l?p:l}o.push(o[0]);var d=[s,a,r,l],m=r-s,f=l-a;f=f>m?f:m;var v=turf.polygon([o]),g=turf.area(v);g>5e12?i-=25:g>1e12?i-=20:g>5e11?i-=15:g>1e11?i-=10:g>6e10&&(i-=5);var y=f/i,b=2e3*y>35?35:2e3*y;t.arrowWidth=b<15?15:b;var C=turf.squareGrid(d,y,{units:"degrees",mask:v});t.createEllipse(C)}}))}},{key:"createEllipse",value:function(e){for(var t=[],i=0;i0&&function e(i){Cesium.sampleTerrainMostDetailed(p.viewer.scene.terrainProvider,i).then((function(i){m++;var n=t.slice(m*d,(m+1)*d);n.length>0&&e(n);var o=[],s=i.reduce((function(e,t,i,n){var s=10*i,a=s+10,r=n.slice(s,a);return 0!=r.length&&(o[i]=r),o}),[]);p.calculateSlope(s)}))}(f)}},{key:"createPolygonInsrance",value:function(e,t,i){for(var n=[],o=1;o0?[Cesium.Cartographic.toCartesian(s),Cesium.Cartographic.toCartesian(a)]:[Cesium.Cartographic.toCartesian(a),Cesium.Cartographic.toCartesian(s)];return new Cesium.GeometryInstance({id:{type:"SlopeAspect",value:o},geometry:new Cesium.GroundPolylineGeometry({positions:r,width:this.arrowWidth}),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE.withAlpha(.6)),show:new Cesium.ShowGeometryInstanceAttribute(!0)}})}},{key:"calculateSlope",value:function(e){for(var t=this,i=[],n=[],o=0;or&&(r=u,l=c)}var h=new Cesium.Cartographic(a.longitude,a.latitude,0),p=new Cesium.Cartographic(s[l].longitude,s[l].latitude,0),d=Cesium.Cartesian3.distance(Cesium.Cartographic.toCartesian(h),Cesium.Cartographic.toCartesian(p)),m=Math.abs(r/d),f=this.calculateSlopeColor(m,.4),v=this.createPolygonInsrance(s,f,m);n.push(v);var g=l>4?s[l-4]:s[l+4],y=s[l],b=this.createArrowInstance(y,a,g,r,m);i.push(b)}var C=this.viewer.scene.primitives.add(new Cesium.GroundPrimitive({geometryInstances:n,appearance:new Cesium.PerInstanceColorAppearance({translucent:!0,closed:!1})})),w=this.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({geometryInstances:i,appearance:new Cesium.PolylineMaterialAppearance({material:new Cesium.Material({fabric:{type:"PolylineArrow",uniforms:{color:new Cesium.Color(1,1,0,.8)}}})})}));this.result.push(w,C),this.event=new te.a(this.sdk);var k=function(e,i){var n=document.getElementById("SlopeAspect-box");n||((n=document.createElement("div")).id="SlopeAspect-box",n.style.pointerEvents="none",n.style.display="none",n.style.position="absolute",n.style.background="#333333",n.style.color="#fff",n.style.color="#fff",n.style.padding="5px",n.style.fontSize="12px",n.style.borderRadius="5px",n.style.transform="translate(-50%, -10px)",n.innerHTML='\n
          坡度:
          \n \n ',document.body.appendChild(n));var o=n.getElementsByClassName("value")[0],s=Jn({},e.position),a=t.sdk.viewer.scene.pick(s);if(a&&a.id&&a.id.type&&"SlopeAspect"===a.id.type){var r=0,l=0;if(t.sdk.viewer&&t.sdk.viewer._element){var c=t.sdk.viewer._element.getElementsByClassName("cesium-widget")[0].getElementsByTagName("canvas")[0];r=c.getBoundingClientRect().top+window.scrollY,l=c.getBoundingClientRect().left+window.scrollX}n.style.display="block",n.style.left=s.x+2+l+"px",n.style.top=s.y-20+r+"px",o.innerHTML="坡度:"+Number(Cesium.Math.toDegrees(a.id.value||0).toFixed(2))+"°"}else n.style.display="none"};this.event.mouse_move((function(e,t){var i={position:Jn({},e.endPosition)};k(i)})),this.event.mouse_left(k),this._camera={position:this.sdk.viewer.camera.position,heading:this.sdk.viewer.camera.heading,pitch:this.sdk.viewer.camera.pitch,roll:this.sdk.viewer.camera.roll},this.sdk.viewer.scene.preRender.addEventListener(this._watchEvent,this)}},{key:"_watchEvent",value:function(){if(this._camera.position.x.toFixed(8)!==this.sdk.viewer.camera.position.x.toFixed(8)||this._camera.position.y.toFixed(8)!==this.sdk.viewer.camera.position.y.toFixed(8)||this._camera.position.z.toFixed(8)!==this.sdk.viewer.camera.position.z.toFixed(8)||this._camera.heading.toFixed(8)!==this.sdk.viewer.camera.heading.toFixed(8)||this._camera.pitch.toFixed(8)!==this.sdk.viewer.camera.pitch.toFixed(8)||this._camera.roll.toFixed(8)!==this.sdk.viewer.camera.roll.toFixed(8)){var e=document.getElementById("SlopeAspect-box");e&&(e.style.display="none")}this._camera={position:this.sdk.viewer.camera.position,heading:this.sdk.viewer.camera.heading,pitch:this.sdk.viewer.camera.pitch,roll:this.sdk.viewer.camera.roll}}},{key:"calculateSlopeColor",value:function(e,t){return e<.00872686779075879?"rgba(85,182,43,"+t+")":e<.03492076949174773?"rgba(135,211,43,"+t+")":e<.08748866352592401?"rgba(204,244,44,"+t+")":e<.2679491924311227?"rgba(245,233,44,"+t+")":e<.7002075382097097?"rgba(255,138,43,"+t+")":e<1.4281480067421144?"rgba(255,84,43,"+t+")":"rgba(255,32,43,"+t+")"}},{key:"destroy",value:function(){var e=this;this.result&&this.result.forEach((function(t){e.viewer.scene.primitives.remove(t)})),this.result=[],this.sdk.viewer.scene.preRender.removeEventListener(this._watchEvent,this)}}])}(b.a);function Zn(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var Kn=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),window.addEventListener("resize",(function(){i.echartsObject&&i.echartsObject.resize()})),(i=Zn(this,t,[e])).viewer=e.viewer,i.Dialog=n,YJ.Analysis.AnalysesResults.push(i),t.create(i),i}return Me()(t,e),h()(t,[{key:"reDraw",value:function(){t.create(this)}},{key:"onEnd",get:function(){return this.clickCallBack},set:function(e){e&&"function"!=typeof e?console.error("val:",e,"不是一个function"):this.clickCallBack=e}},{key:"formatter",value:function(e,t){if(this.polyline){var i={show:!0,pixelSize:10,color:Cesium.Color.GREEN,outlineColor:Cesium.Color.SKYBLUE,outlineWidth:3,disableDepthTestDistance:Number.POSITIVE_INFINITY};this.tipEntity?this.tipEntity.position=Cesium.Cartesian3.fromDegrees(e[0],e[1],Number(t[1])):this.tipEntity=this.sdk.viewer.entities.add({position:Cesium.Cartesian3.fromDegrees(e[0],e[1],Number(t[1])),point:i})}}},{key:"clean",value:function(){this.end(),this._currentId=null,this.entityHasCreated=!1,this.polyline&&this.viewer.entities.remove(this.polyline),this.tipEntity&&this.viewer.entities.remove(this.tipEntity),this.polyline=null,this.tipEntity=null}},{key:"destroy",value:function(){this.clean(),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null)}}],[{key:"create",value:function(e){var i=this;this._currentId=Cesium.createGuid();var n=this._currentId;if(e.clean(),YJ.Measure.GetMeasureStatus())console.warn("上一次测量未结束");else{YJ.Measure.SetMeasureStatus(!0),e.tip=new St.a("左键点击确定起点位置,右键点击取消绘制!",e.sdk),e.event=new te.a(e.sdk),e.positions=[],e.points_ids=[];var o=[];e.event.mouse_left(function(){var s=_()(S.a.mark((function s(a,r){var l;return S.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:try{e.tip.set_text("左键点击确定终点位置,右键点击取消绘制!"),e.entityHasCreated||t.create_polyline(e),o.push(r),e.points_ids.push(e.create_point(r)),2==o.length&&(e.end(),l=[],o.forEach((function(t){l.push(e.cartesian3Towgs84(t,e.viewer))})),t.interPoints(e).then((function(t){i._currentId&&i._currentId===n&&e.clickCallBack(t)})))}catch(e){console.log(e)}case 1:case"end":return s.stop()}}),s)})));return function(e,t){return s.apply(this,arguments)}}()),e.event.mouse_right((function(t,i){o=[],e.clean()})),e.event.mouse_move((function(t,i){e.positions=o.concat(i),e.tip.setPosition(i,t.endPosition.x,t.endPosition.y)})),e.event.gesture_pinck_start((function(t,i){var n=new Date;e.event.gesture_pinck_end((function(){if(new Date-n>=500){o=[],e.end()}}))}))}}},{key:"create_polyline",value:function(e){e.entityHasCreated=!0;var t=e.randomString();return e.polyline=e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),width:5,material:Cesium.Color.fromCssColorString(e.color),clampToGround:!0,zIndex:99999999}})),t}},{key:"interPoints",value:(n=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y,b,C,w,k,_,x,E,P,D;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=t.viewer,n=t.positions,o=[],s=[],a=0;ay&&(y=g),(b=parseInt(y/2))>150&&(b=150),b<2&&(b=2),C=m/(b-1),w=0;case 24:if(!(w\n
          \n ',i._DialogObject.contentAppChild(o),(s=document.createElement("button")).innerHTML='重新绘制',s.style.width="auto",s.addEventListener("click",(function(){t.create(i),t.initEcharts(i)})),i._DialogObject.footAppChild(s),t.initEcharts(i,n);case 16:case"end":return e.stop()}}),e)}))),function(e,t){return i.apply(this,arguments)})},{key:"initEcharts",value:function(e,t){var i,n=[],o=[],s=t;if(s){for(var a=s[s.length-1].distance,r=Math.ceil(a),l=0;l高度:"+n[1]+"m
          坐标:"+i[0].toFixed(5)+","+i[1].toFixed(5)}},grid:{top:40,bottom:20,left:55,right:30},calculable:!0,xAxis:[{type:"value",max:r,scale:!0,axisLabel:{color:"#ffffff"},axisLine:{lineStyle:{color:"#ffffff"}}}],yAxis:[{type:"value",scale:!0,axisLabel:{color:"#ffffff"},axisLine:{lineStyle:{color:"#ffffff"}}}],series:[{name:"ProfileLine",type:"line",data:n,smooth:!0,itemStyle:{normal:{color:"#39FDA1"}},lineStyle:{normal:{width:3,color:{type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"rgba(85,254,139,1)"},{offset:.5,color:"rgba(7,252,202,1)"},{offset:1,color:"rgba(14,245,210,1)"}],globalCoord:!1}}},areaStyle:{normal:{color:new echarts.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"rgba(102,153,255,1)"},{offset:.8,color:"rgba(102,153,255,0.08)"},{offset:1,color:"rgba(9,173,208,0.15)"}],!1),shadowColor:"rgba(14,245,210,1)",shadowBlur:20}},markPoint:{data:[{type:"max",name:"最高点",label:{color:"#ffffff"}},{type:"min",name:"最低点",label:{color:"#ffffff"}}]}}]}}else{var m=document.getElementsByClassName("profile-echarts")[0];e.echartsObject=echarts.init(m),i={tooltip:{trigger:"axis",textStyle:{align:"left"}},grid:{top:40,bottom:20,left:55,right:30},calculable:!0,xAxis:[{type:"value",scale:!0,axisLabel:{color:"#ffffff"},axisLine:{lineStyle:{color:"#ffffff"}}}],yAxis:[{type:"value",scale:!0,axisLabel:{color:"#ffffff"},axisLine:{lineStyle:{color:"#ffffff"}}}],series:[{name:"ProfileLine",type:"line",data:[],smooth:!0,itemStyle:{normal:{color:"#39FDA1"}},lineStyle:{normal:{width:3,color:{type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"rgba(85,254,139,1)"},{offset:.5,color:"rgba(7,252,202,1)"},{offset:1,color:"rgba(14,245,210,1)"}],globalCoord:!1}}},areaStyle:{normal:{color:new echarts.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"rgba(102,153,255,1)"},{offset:.8,color:"rgba(102,153,255,0.08)"},{offset:1,color:"rgba(9,173,208,0.15)"}],!1),shadowColor:"rgba(14,245,210,1)",shadowBlur:20}},markPoint:{data:[{type:"max",name:"最高点",label:{color:"#ffffff"}},{type:"min",name:"最低点",label:{color:"#ffffff"}}]}}]}}e.echartsObject.setOption(i)}}]);var i,n}(xn.a);function Qn(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var $n=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Qn(this,t,[e,n])).viewer=e.viewer,i.resultObject={viewPoint:void 0,targetPoints:[],targetPoint:void 0,objectExclude:[],entities:[]},i.options={},i._elms={},i.viewPointHeight=n.viewPointHeight,i.Dialog=o,i._EventBinding=new Ye,i.tools=new b.a(i.sdk),YJ.Analysis.AnalysesResults.push(i),t.create(i),i}return Me()(t,e),h()(t,[{key:"viewPointHeight",get:function(){return this.options.viewPointHeight},set:function(e){var t=Math.floor(10*Number(e))/10;isNaN(t)&&(t=1.8),t<0&&(t=0),this.options.viewPointHeight=t,this._elms.viewPointHeight&&this._elms.viewPointHeight.forEach((function(e){e.value=t}))}},{key:"end",value:function(){YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=null,this.event=null}},{key:"destroy",value:function(){var e=this;this.resultObject.entities.forEach((function(t){e.viewer.entities.remove(t)})),this.resultObject={viewPoint:void 0,targetPoints:[],targetPoint:void 0,objectExclude:[],entities:[]},this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=null,this.event=null,YJ.Measure.SetMeasureStatus(!1)}}],[{key:"create",value:function(e){if(YJ.Measure.GetMeasureStatus())e.tools.message({text:"上一次测量未结束",type:"warning"});else{e._DialogObject&&e._DialogObject.close&&(e._DialogObject.close(),e._DialogObject=null),e.event=new te.a(e.sdk),e.tip=new St.a("左键点击创建视角起点",e.sdk),YJ.Measure.SetMeasureStatus(!0);e.event.mouse_left(function(){var i=_()(S.a.mark((function i(n,o){var s,a,r,l,c,u,h,p,d,m,f,v,g,y,b,C;return S.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(e.tip.set_text("左键创建视角终点,右键结束通视分析"),e.resultObject.viewPoint){i.next=16;break}if(s=e.cartesian3Towgs84(o,e.viewer),!e.sdk.viewer.terrainProvider.availability){i.next=7;break}return i.next=6,Cesium.sampleTerrainMostDetailed(e.sdk.viewer.terrainProvider,[Cesium.Cartographic.fromDegrees(s.lng,s.lat)]);case 6:a=i.sent;case 7:a&&a[0].height>s.alt&&(s.alt=a[0].height),s.alt=s.alt+e.viewPointHeight,r=Cesium.Cartesian3.fromDegrees(s.lng,s.lat,s.alt),e.resultObject.viewPoint=r,l=e.viewer.entities.add({position:r,point:{color:Cesium.Color.YELLOW,pixelSize:5}}),e.resultObject.objectExclude.push(l),e.resultObject.entities.push(l),i.next=33;break;case 16:e.resultObject.targetPoint=o,c=e.viewer.entities.add({position:o,point:{color:Cesium.Color.YELLOW,pixelSize:5}}),e.resultObject.objectExclude.push(c),e.resultObject.entities.push(c),u=Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(e.resultObject.targetPoint,e.resultObject.viewPoint,new Cesium.Cartesian3),new Cesium.Cartesian3),h=new Cesium.Ray(e.resultObject.viewPoint,u),p=e.viewer.scene.drillPickFromRay(h),d={},m=0;case 25:if(!(mv?(y=e.viewer.entities.add({polyline:{positions:[e.resultObject.viewPoint,d.position],material:Cesium.Color.GREEN,width:3,zIndex:99999999}}),e.resultObject.entities.push(y),b=e.viewer.entities.add({polyline:{positions:[d.position,e.resultObject.targetPoint],material:Cesium.Color.RED,width:3,zIndex:99999999}}),e.resultObject.entities.push(b),e.resultObject.targetPoints.push({targetPoint:o,visual:!1,distance:[f,v,g]})):(C=e.viewer.entities.add({polyline:{positions:[e.resultObject.viewPoint,e.resultObject.targetPoint],material:Cesium.Color.GREEN,width:3,zIndex:99999999}}),e.resultObject.entities.push(C),e.resultObject.targetPoints.push({targetPoint:o,visual:!0,distance:[f,v,g]})));case 33:case"end":return i.stop()}}),i)})));return function(e,t){return i.apply(this,arguments)}}()),e.event.mouse_move((function(t,i){e.tip.setPosition(i,t.endPosition.x,t.endPosition.y)})),e.event.mouse_right((function(t,i){e.end()})),e.event.gesture_pinck_start((function(t,i){var n=new Date;e.event.gesture_pinck_end((function(){new Date-n>=500&&e.end()}))}))}}},{key:"edit",value:(i=_()(S.a.mark((function e(i){var n,o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i._DialogObject&&i._DialogObject.close&&(i._DialogObject.close(),i._DialogObject=null),e.next=3,new Te.a(i.sdk.viewer._container,{title:"多点视线分析",left:"180px",top:"100px",closeCallBack:function(){i.Dialog.closeCallBack&&i.Dialog.closeCallBack(),YJ.Measure.SetMeasureStatus(!1)}});case 3:return i._DialogObject=e.sent,e.next=6,i._DialogObject.init();case 6:i._DialogObject._element.body.className=i._DialogObject._element.body.className+" visibility",(n=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 视点高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n ',i._DialogObject.contentAppChild(n),(o=document.createElement("button")).innerHTML="绘制",o.addEventListener("click",(function(){t.create(i)})),i._DialogObject.footAppChild(o),s=n.getElementsByTagName("*"),i._EventBinding.on(i,s),i._elms=i._EventBinding.element;case 17:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"distance",value:function(e,t){var i=Cesium.Cartographic.fromCartesian(e),n=Cesium.Cartographic.fromCartesian(t),o=new Cesium.EllipsoidGeodesic;o.setEndPoints(i,n);var s=o.surfaceDistance;return s=Math.sqrt(Math.pow(s,2)+Math.pow(n.height-i.height,2))}}]);var i}(b.a),eo=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c()(this,e),this.viewer=t.viewer,this.tools=new b.a(t);var n=this.viewer.terrainProvider.availability;n?(this.positions=i.positions,this.interfaceNum=i.interfaceNum||25,this.colorFill=i.colorFill||["#8CEA00","#B7FF4A","#FFFF37","#FFE66F","#FFD1A4","#FFCBB3","#FFBD9D","#FFAD86","#FF9D6F","#FF8F59","#FF8040","#FF5809","#F75000","#D94600","#BB3D00","#A23400","#842B00","#642100","#4D0000","#2F0000"],this.countorLineList=Cesium.defaultValue(i.countorLineList,[]),YJ.Analysis.AnalysesResults.push(this),this.createNewLine()):this.error="未加载地形数据!"}return h()(e,[{key:"type",get:function(){return"ContourAnalysis"}},{key:"createNewLine",value:function(){e.interpolatePoint(this)}},{key:"getObjectIndex",value:function(e,t){for(var i=0;it)return i}},{key:"clear",value:function(e){if(e){this.viewer.dataSources.remove(e);var t=this.countorLineList.indexOf(e);this.countorLineList.splice(t,1)}}},{key:"destroy",value:function(){var e=this;this.countorLineList.forEach((function(t){e.viewer.dataSources.remove(t)})),this.countorLineList=[]}}],[{key:"interpolatePoint",value:function(e){for(var t=e.positions,i=[],n={minX:360,maxX:-360,minY:180,maxY:-180},o=0;o2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=no(this,t,[e,o])).viewer=e.viewer,n.tiles3d=i,n.options=io({},o),n.options.regionsType=n.options.regionsType||!1,YJ.Analysis.SectionResults.push(n),n.Planes=[],n.tools=new b.a,t.start(n),n}return Me()(t,e),h()(t,[{key:"regionsType",get:function(){return this.options.regionsType},set:function(e){this.options.regionsType=e,this.Planes.length>0&&(this.Planes=[],t.planeCollection(this))}},{key:"destroy",value:function(){this.Planes=[],this.tiles3d.clippingPlanes&&(this.tiles3d.clippingPlanes.enabled=!1,this.tiles3d.clippingPlanes.removeAll())}}],[{key:"start",value:function(e){var i=e.options.positions||[];if(!e.isConvex(i))return e.tools.message({type:"warning",text:"不支持凹多边形"}),void console.log("不支持凹多边形");e.inverseTransform=function(e){var t,i=e.root.transform;t=i&&i.equals(Cesium.Matrix4.IDENTITY)||!i?Cesium.Transforms.eastNorthUpToFixedFrame(e.boundingSphere.center):Cesium.Matrix4.fromArray(e.root.transform);return Cesium.Matrix4.inverseTransformation(t,new Cesium.Matrix4)}(e.tiles3d),e.Planes=[];var n=[];if(i.length>0){for(var o=0;o=0;n--)0===n?e.Planes.push(a(t[n],t[t.length-1],e.inverseTransform)):e.Planes.push(a(t[n],t[n-1],e.inverseTransform));if(e.tiles3d.clippingPlanes){e.tiles3d.clippingPlanes.removeAll();for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:{};c()(this,t),(i=so(this,t,[e])).viewer=e.viewer,i.options=n||{},i.options.height=i.options.height||0===i.options.height?i.options.height:10,i.options.show=!i.options.show&&!1!==i.options.show||i.options.show,i.bottomImg=i.getSourceRootPath()+"/img/excavationregion_top.jpg",i.wallImg=i.getSourceRootPath()+"/img/excavationregion_side.jpg",i.splitNum=Cesium.defaultValue(n.splitNum,50),i.Draw=new Dn(i.sdk),i.bottomMaterial=Cesium.Material.fromType("Color",{color:Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString("#735d4f"))}),i.wallMaterial=Cesium.Material.fromType("Color",{color:Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString("#976b4e"))}),i.tools=new b.a(i.sdk);var o=new Image,s=new Image;return o.src=i.bottomImg,s.src=i.wallImg,o.crossOrigin="Anonymous",s.crossOrigin="Anonymous",o.onload=function(){var e=document.createElement("canvas");e.width=o.width,e.height=o.height,e.getContext("2d").drawImage(o,0,0,o.width,o.height);var t=e.toDataURL("image/jpg");i.bottomMaterial=new Cesium.Material({fabric:{type:"Image",uniforms:{image:t}}}),i.bottomSurface&&(i.bottomSurface.appearance.material=i.bottomMaterial)},s.onload=function(){var e=document.createElement("canvas");e.width=s.width,e.height=s.height,e.getContext("2d").drawImage(s,0,0,s.width,s.height);var t=e.toDataURL("image/jpg");i.wallMaterial=new Cesium.Material({fabric:{type:"Image",uniforms:{image:t}}}),i.wellWall&&(i.wellWall.appearance.material=i.wallMaterial)},i}return Me()(t,e),h()(t,[{key:"show",get:function(){return this.options.show},set:function(e){this.options.show=e,this.switchExcavate(e)}},{key:"height",get:function(){return this.options.height},set:function(e){this.options.height=e}},{key:"init",value:function(){t.edit(this,!0)}},{key:"startCreate",value:function(){var e=this;this.Draw.start((function(t,i){if(i&&!(i.length<=2))return e.isConvex(i)?void e.updateData(i):(e.tools.message({type:"warning",text:"不支持凹多边形"}),void console.log("不支持凹多边形"));t||0==t||e.tools.message({type:"warning",text:"至少拥有三个坐标位置!"})}))}},{key:"updateData",value:function(e){var t=this.viewer;this.clear();for(var i=[],n=[],o=0;o=0;e--)this.viewer.scene.primitives.remove(ao[e]);ao=[],this.Draw&&this.Draw.end()}},{key:"destroy",value:function(){this.clear()}},{key:"prepareWell",value:function(e){for(var t=e.length,i=this.excavateMinHeight-this.height,n=[],o=[],s=[],a=0;a\n
          \n
          \n
          \n 挖掘高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 绘制开挖区域\n \n
          \n
          \n 清除开挖区域\n \n
          \n
          \n
          \n ',t._DialogObject.contentAppChild(n),n.getElementsByClassName("start-excavation")[0].addEventListener("click",(function(){t.startCreate()})),n.getElementsByClassName("clean-excavation")[0].addEventListener("click",(function(){t.clear()})),(o=n.querySelector("input[name='height']")).value=t.height,o.addEventListener("change",(function(e){var i=e.target.value;(i=Number(i))<.01&&(i=.01,e.target.value=i,t.height=i)})),o.addEventListener("blur",(function(e){var i=e.target.value;i=Number(i),e.target.max&&i>Number(e.target.max)&&(i=Number(e.target.max)),i<.01&&(i=.01),e.target.value=i,t.height=i})),e.next=22;break;case 21:t._DialogObject&&t._DialogObject.close&&(t._DialogObject.close(),t._DialogObject=null);case 22:case"end":return e.stop()}}),e)}))),function(e,t){return i.apply(this,arguments)})}]);var i}(b.a);function lo(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function co(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(c()(this,t),n=uo(this,t,[e]),r()(n,"getUniqueArray",(function(e){return e.filter((function(e,t,i){return i.indexOf(e,0)===t}))})),!i||!n.sdk||!n.sdk.viewer)return Ee()(n);if(n.options=co({},o),n.options.id=o.id||n.randomString(),n.options.name=o.name||"压平面",n.options.positions=o.positions||[],n.options.show=!o.show&&!1!==o.show||o.show,n.tileset=i,n.Dialog=s,!n.options.height&&0!==n.options.height){for(var a=n.options.positions[0].alt,l=0;ln.options.positions[l].alt&&(a=n.options.positions[l].alt);n.options.height=a}return ho[n.tileset.id]?ho[n.tileset.id].push(co({},n.options)):ho[n.tileset.id]=[co({},n.options)],n.center=i.boundingSphere.center.clone(),n.center84=n.cartesian3Towgs84(n.center,n.sdk.viewer),n.matrix=Cesium.Transforms.eastNorthUpToFixedFrame(n.center.clone()),n.localMatrix=Cesium.Matrix4.inverse(n.matrix,new Cesium.Matrix4),n.addFlat(),n}return Me()(t,e),h()(t,[{key:"show",get:function(){return this.options.show},set:function(e){this.options.show=e;for(var t=0;t= max(p1[1], p2[1])){\n continue;\n }\n float x = p1[0] + ((point[1] - p1[1]) * (p2[0] - p1[0])) / (p2[1] - p1[1]);\n if(x > point[0]){\n nCross++;\n }\n }\n return int(mod(float(nCross), float(2))) == 1;\n }\n ")})),n}},{key:"updateShader",value:function(e,t){var i=new Cesium.CustomShader({uniforms:{u_tileset_localToWorldMatrix:{type:Cesium.UniformType.MAT4,value:this.matrix},u_tileset_worldToLocalMatrix:{type:Cesium.UniformType.MAT4,value:this.localMatrix},u_flatHeight:{type:Cesium.UniformType.FLOAT,value:this.flatHeight}},vertexShaderText:"\n // 所有isPointInPolygon函数\n ".concat(e,"\n void vertexMain(VertexInput vsInput, inout czm_modelVertexOutput vsOutput){\n vec3 modelMC = vsInput.attributes.positionMC;\n vec4 model_local_position = vec4(modelMC.x, modelMC.y, modelMC.z, 1.0);\n vec4 tileset_local_position = u_tileset_worldToLocalMatrix * czm_model * model_local_position;\n vec2 position2D = vec2(tileset_local_position.x,tileset_local_position.y);\n float ground_z = 0.0;\n // 多个多边形区域\n ").concat(t,"\n }")});this.tileset.customShader=i,this.sdk.viewer.scene.requestRender()}},{key:"cartesiansToLocal",value:function(e){for(var t=[],i=0;i1&&void 0!==arguments[1]?arguments[1]:{text:"左键开始,右键结束;"};return c()(this,t),(i=vo(this,t,[e,n])).options=fo({},n),i.event=new te.a(e),i.tip=new St.a(n.text,e),i.viewer=e.viewer,i.defaultColor="rgba(246,49,49,0.55)",i.ids=[],YJ.Measure.Measures.push(i),i._isDestroy=!1,i}return Me()(t,e),h()(t,[{key:"start",value:function(){this.setPickStatus(!1),YJ.Measure.SetMeasureStatus(!0)}},{key:"destroy",value:function(){var e=this;this._isDestroy=!0,this.end(),this.ids.forEach((function(t){e.remove_entity(t)}))}},{key:"end",value:function(){YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=null,this.event=null}},{key:"create_point",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.randomString(),n=this.cartesian3Towgs84(e,this.viewer);return this.viewer.entities.add(new Cesium.Entity({id:i,position:Cesium.Cartesian3.fromDegrees(n.lng,n.lat,n.alt),billboard:{show:t,image:this.getSourceRootPath()+"/img/point.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}})),i}},{key:"remove_entity",value:function(e){this.viewer.entities.removeById(e)}}])}(b.a);function yo(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return bo(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?bo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function bo(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Co(this,t,[e,n])).options.color=i.options.color||"#00ffff",i.start_id="",i.end_id="",i.polyline_id="",i.clampPositions=[],i}return Me()(t,e),h()(t,[{key:"clampToGroundMeasure",value:(s=_()(S.a.mark((function e(t,i){var n,o,s,a,r,l,c,u,h,p=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],this.ids.forEach((function(e,t){var i=p.viewer.entities.getById(e).position.getValue();n.push(p.cartesian3Towgs84(i,p.viewer))})),o=this.chunkLine(n,t),s=[],o.forEach((function(e,t){0===t?s=nt()(e.geometry.coordinates):s.push(e.geometry.coordinates[1])})),a=s.length,r=yo(s),e.prev=7,r.s();case 9:if((l=r.n()).done){e.next=18;break}return c=l.value,u=s.indexOf(c),e.next=14,this.getHeight({lng:c[0],lat:c[1],alt:0},u,a);case 14:h=e.sent,i(null,h);case 16:e.next=9;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(7),r.e(e.t0);case 23:return e.prev=23,r.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,this,[[7,20,23,26]])}))),function(e,t){return s.apply(this,arguments)})},{key:"computeDisByTowPoint",value:(o=_()(S.a.mark((function e(i,n){var o,s,a,r,l=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=this.computeDistance2([i,n]),s=10,a=function(e){if(!l._isDestroy){var i=l.getLabel("贴地距离:"+Number(e).toFixed(2)+"米");i.pixelOffset=new Cesium.Cartesian2(0,-32),l.ids.push(t.create_point(Cesium.Cartesian3.fromDegrees(n.lng,n.lat,n.alt),{label:i},l))}},r=function(){var e=_()(S.a.mark((function e(t){var o,s,r,c,u,h,p,d,m,f;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=l.chunkLine([i,n],t),s=[],o.forEach((function(e,t){0===t?s=nt()(e.geometry.coordinates):s.push(e.geometry.coordinates[1])})),r=[],c=yo(s),e.prev=5,c.s();case 7:if((u=c.n()).done){e.next=16;break}return h=u.value,p=s.indexOf(h),e.next=12,l.sampleHeight({lng:h[0],lat:h[1],alt:0},p);case 12:d=e.sent,r.push(d);case 14:e.next=7;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(5),c.e(e.t0);case 21:return e.prev=21,c.f(),e.finish(21);case 24:m=0,f=r.length-1,r.forEach((function(e,t){if(t!==f){var i=l.computeDistance2([e.position,r[t+1].position]),n=Math.abs(e.position.alt-r[t+1].position.alt),o=Math.sqrt(i*i+n*n);m+=o}})),a(m);case 28:case"end":return e.stop()}}),e,null,[[5,18,21,24]])})));return function(t){return e.apply(this,arguments)}}(),!(o>2)){e.next=10;break}return s=o/20,e.next=8,r(s);case 8:e.next=17;break;case 10:if(!(o<1)){e.next=14;break}a(o),e.next=17;break;case 14:return s=1,e.next=17,r(s);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t){return o.apply(this,arguments)})},{key:"sampleHeight",value:(n=_()(S.a.mark((function e(t,i){var n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getClampToHeight(t,nt()(this.sdk.viewer.entities.values));case 2:return n=e.sent,t.alt=n,e.abrupt("return",{position:t,index:i});case 5:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"getHeight",value:(i=_()(S.a.mark((function e(t,i,n){var o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sampleHeightMostDetailed([t]);case 2:if(o=e.sent,t.alt=o[0].height,this.clampPositions.push({position:t,index:i}),n!==this.clampPositions.length){e.next=8;break}return s=this.startCompute(),e.abrupt("return",{total:n,current:this.clampPositions.length,total_length:s});case 8:return e.abrupt("return",{total:n,current:this.clampPositions.length});case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return i.apply(this,arguments)})},{key:"startCompute",value:function(){var e=this;this.clampPositions.sort((function(e,t){return e.index=500?n():i(a,o)}))}))}}},{key:"destroy",value:function(){var e=this;[this.polyline_id,this.end_id,this.start_id].concat(nt()(this.ids)).forEach((function(t){e.remove_entity(t)})),wo(t,"destroy",this,3)([])}},{key:"end",value:function(){wo(t,"end",this,3)([])}}],[{key:"createPolyline",value:function(e){var t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),clampToGround:!0,width:3,material:new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),dashLength:20}),zIndex:99999999}})),t}},{key:"create_point",value:function(e,t,i){var n=t.label,o=t.image,s=void 0===o?"point.png":o,a=t.width,r=t.height,l=i.randomString(),c=i.cartesian3Towgs84(e,i.viewer);return n&&(n.pixelOffset=new Cesium.Cartesian2(0,-(r||32))),i.viewer.entities.add(new Cesium.Entity({id:l,label:n,position:Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt),billboard:{image:i.getSourceRootPath()+"/img/"+s,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:a,height:r}})),l}}]);var i,n,o,s}(go);function _o(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return xo(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?xo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function xo(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=So(this,t,[e,n])).options.color=i.options.color||"#00ffff",i.start_id="",i.end_id="",i.polyline_id="",i.clampPositions=[],i}return Me()(t,e),h()(t,[{key:"clampToGroundMeasure",value:(o=_()(S.a.mark((function e(t,i){var n,o,s,a,r,l,c,u,h,p=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],this.ids.forEach((function(e,t){var i=p.viewer.entities.getById(e).position.getValue();n.push(p.cartesian3Towgs84(i,p.viewer))})),o=this.chunkLine(n,t),s=[],o.forEach((function(e,t){0===t?s=nt()(e.geometry.coordinates):s.push(e.geometry.coordinates[1])})),a=s.length,r=_o(s),e.prev=7,r.s();case 9:if((l=r.n()).done){e.next=18;break}return c=l.value,u=s.indexOf(c),e.next=14,this.getHeight({lng:c[0],lat:c[1],alt:0},u,a);case 14:h=e.sent,i(null,h);case 16:e.next=9;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(7),r.e(e.t0);case 23:return e.prev=23,r.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,this,[[7,20,23,26]])}))),function(e,t){return o.apply(this,arguments)})},{key:"sampleHeight",value:(n=_()(S.a.mark((function e(t,i){var n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sampleHeightMostDetailed([t]);case 2:return n=e.sent,t.alt=n[0].height,e.abrupt("return",{position:t,index:i});case 5:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"getHeight",value:(i=_()(S.a.mark((function e(t,i,n){var o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sampleHeightMostDetailed([t]);case 2:if(o=e.sent,t.alt=o[0].height,this.clampPositions.push({position:t,index:i}),n!==this.clampPositions.length){e.next=8;break}return s=this.startCompute(),e.abrupt("return",{total:n,current:this.clampPositions.length,total_length:s});case 8:return e.abrupt("return",{total:n,current:this.clampPositions.length});case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return i.apply(this,arguments)})},{key:"startCompute",value:function(){var e=this;this.clampPositions.sort((function(e,t){return e.index=500?n():i(a,o)}))}))}}},{key:"destroy",value:function(){var e=this;[this.polyline_id,this.end_id,this.start_id].concat(nt()(this.ids)).forEach((function(t){e.remove_entity(t)})),Eo(t,"destroy",this,3)([])}},{key:"end",value:function(){Eo(t,"end",this,3)([])}}],[{key:"createPolyline",value:function(e){var t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),clampToGround:!0,width:3,material:new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),dashLength:20})},zIndex:99999999})),t}},{key:"create_point",value:function(e,t,i){var n=t.label,o=t.image,s=void 0===o?"point.png":o,a=t.width,r=t.height,l=i.randomString(),c=i.cartesian3Towgs84(e,i.viewer);return n&&(n.pixelOffset=new Cesium.Cartesian2(0,-(r||32))),i.viewer.entities.add(new Cesium.Entity({id:l,label:n,position:Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt),billboard:{image:i.getSourceRootPath()+"/img/"+s,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:a,height:r}})),l}}]);var i,n,o}(go);function Do(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Oo(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Oo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Oo(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Mo(this,t,[e,n])).options.color=i.options.color||"#00ffff",i.start_id="",i.end_id="",i.polyline_id="",i.clampPositions=[],i.event=new te.a(e),i}return Me()(t,e),h()(t,[{key:"clampToGroundMeasure",value:(o=_()(S.a.mark((function e(t,i){var n,o,s,a,r,l,c,u,h,p=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],this.ids.forEach((function(e,t){var i=p.viewer.entities.getById(e).position.getValue();n.push(p.cartesian3Towgs84(i,p.viewer))})),o=this.chunkLine(n,t),s=[],o.forEach((function(e,t){0===t?s=nt()(e.geometry.coordinates):s.push(e.geometry.coordinates[1])})),a=s.length,r=Do(s),e.prev=7,r.s();case 9:if((l=r.n()).done){e.next=18;break}return c=l.value,u=s.indexOf(c),e.next=14,this.getHeight({lng:c[0],lat:c[1],alt:0},u,a);case 14:h=e.sent,i(null,h);case 16:e.next=9;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(7),r.e(e.t0);case 23:return e.prev=23,r.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,this,[[7,20,23,26]])}))),function(e,t){return o.apply(this,arguments)})},{key:"sampleHeight",value:(n=_()(S.a.mark((function e(t,i){var n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sampleHeightMostDetailed([t]);case 2:return n=e.sent,t.alt=n[0].height,e.abrupt("return",{position:t,index:i});case 5:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"getHeight",value:(i=_()(S.a.mark((function e(t,i,n){var o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sampleHeightMostDetailed([t]);case 2:if(o=e.sent,t.alt=o[0].height,this.clampPositions.push({position:t,index:i}),n!==this.clampPositions.length){e.next=8;break}return s=this.startCompute(),e.abrupt("return",{total:n,current:this.clampPositions.length,total_length:s});case 8:return e.abrupt("return",{total:n,current:this.clampPositions.length});case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return i.apply(this,arguments)})},{key:"startCompute",value:function(){var e=this;this.clampPositions.sort((function(e,t){return e.index=500?n(0,o):i(a,o)}))}))}}},{key:"computeAngle",value:function(e,i){var n=this.computeDistance2([e,i]),o=Math.abs(e.alt-i.alt),s=n/Math.sqrt(n*n+o*o),a=Math.acos(s),r=this.radiansToDegrees(a),l=this.getLabel("坡度:"+r.toFixed(2)+"°");l.pixelOffset=new Cesium.Cartesian2(0,-32),this.ids.push(t.create_point(Cesium.Cartesian3.fromDegrees(i.lng,i.lat,i.alt),{label:l},this))}},{key:"destroy",value:function(){var e=this;[this.polyline_id,this.end_id,this.start_id].concat(nt()(this.ids)).forEach((function(t){e.remove_entity(t)})),To(t,"destroy",this,3)([])}},{key:"end",value:function(){To(t,"end",this,3)([])}}],[{key:"createPolyline",value:function(e){var t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),clampToGround:!0,width:3,material:new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),dashLength:20}),zIndex:99999999}})),t}},{key:"create_point",value:function(e,t,i){var n=t.label,o=t.image,s=void 0===o?"point.png":o,a=t.width,r=t.height,l=i.randomString(),c=i.cartesian3Towgs84(e,i.viewer);return n&&(n.pixelOffset=new Cesium.Cartesian2(0,-(r||32))),i.viewer.entities.add(new Cesium.Entity({id:l,label:n,position:Cesium.Cartesian3.fromDegrees(c.lng,c.lat,c.alt),billboard:{image:i.getSourceRootPath()+"/img/"+s,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:a,height:r}})),l}}]);var i,n,o}(go);function Bo(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function jo(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Ao(this,t,[e,n])).options.lineColor="#ffdf53",i.polygon_id="",i}return Me()(t,e),h()(t,[{key:"start",value:function(){var e=this;if(!YJ.Measure.GetMeasureStatus()){Lo(t,"start",this,3)([]),this.ids=[],this.positions=[],this.text="",this.tip.set_text("左键单击确定控制点位置,右键单击取消投影面积测量!"),this.center=new Cesium.Cartesian3,this.cachePositions=[];var i,n=0,o=0,s=function(s,a){0===e.ids.length&&(e.polygon_id=t.create_polygon(e)),e.cachePositions.push(jo({},a)),e.ids.push(e.create_point(jo({},a),!1));var r=e.cartesian3Towgs84(jo({},a),e.viewer);if(r.alt>n&&(n=r.alt),e.positions=e.cachePositions.concat(jo({},a)),e.tip.setPosition(jo({},a),s.position.x,s.position.y),e.positions.length>2){var l=[];e.positions.forEach((function(t){var i=e.cartesian3Towgs84(t,e.viewer);l.push({lng:i.lng,lat:i.lat})}));var c=e.computeCenter(l),u=e.computeArea(l);o=u,e.center=new Cesium.Cartesian3.fromDegrees(c.lng,c.lat,n),i=e.center,e.text="投影面积:"+u+" ㎡"}e.positions.length>3&&e.tip.set_text("左键单击确定控制点位置,右键单击完成投影面积测量!")};this.event.mouse_left(s),this.event.mouse_move((function(t,i){if(e.tip.setPosition(jo({},i),t.endPosition.x,t.endPosition.y),e.positions=e.cachePositions.concat(jo({},i)),e.positions.length>2){var o=[];e.positions.forEach((function(t){var i=e.cartesian3Towgs84(t,e.viewer);o.push({lng:i.lng,lat:i.lat})}));var s=e.computeCenter(o),a=e.computeArea(o);e.center=new Cesium.Cartesian3.fromDegrees(s.lng,s.lat,n),e.text="投影面积:"+a+" ㎡"}})),this.event.mouse_right((function(t,n){if(e.positions=e.cachePositions,e.center=i,e.positions.length<3){e.text="";console.warn("面积计算至少需要三个坐标!"),window.ELEMENT&&window.ELEMENT.Message({message:"面积计算至少需要三个坐标!",type:"warning",duration:1500}),e.destroy()}else e.text="投影面积:"+o+" ㎡";e.end()})),this.event.gesture_pinck_start((function(t,i){var n=new Date,o={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e.event.gesture_pinck_end((function(){new Date-n>=500?(e.positions=e.cachePositions,e.end()):s(o,i)}))}))}}},{key:"destroy",value:function(){var e=this;[this.polygon_id].concat(nt()(this.ids)).forEach((function(t){e.remove_entity(t)})),Lo(t,"destroy",this,3)([])}},{key:"end",value:function(){Lo(t,"end",this,3)([])}}],[{key:"create_polygon",value:function(e){var t=e.randomString();new Cesium.NearFarScalar(2e3,1,1e5,0),e.viewer.entities.add(new Cesium.Entity({id:t,label:{text:new Cesium.CallbackProperty((function(){return e.text}),!1),font:"20px Microsoft YaHei",fillColor:Cesium.Color.fromCssColorString("#ffffff"),style:Cesium.LabelStyle.FILL_AND_OUTLINE,disableDepthTestDistance:Number.POSITIVE_INFINITY,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM},position:new Cesium.CallbackProperty((function(){return e.center}),!1),polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){return new Cesium.PolygonHierarchy(e.positions)}),!1),material:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),zIndex:99999999},polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions.length?e.positions.concat(e.positions[0]):e.positions}),!1),width:2,material:new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString(e.options.lineColor||e.defaultColor),dashLength:20}),clampToGround:!0,zIndex:99999999}}));return t}}])}(go);function Ro(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function zo(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Fo(this,t,[e,n])).options.lineColor="#ffdf53",i.polygon_id="",i}return Me()(t,e),h()(t,[{key:"start",value:function(){var e=this;if(!YJ.Measure.GetMeasureStatus()){Ho(t,"start",this,3)([]),this.ids=[],this.positions=[],this.text="",this.center=new Cesium.Cartesian3,this.cachePositions=[],this.tip.set_text("左键单击确定控制点位置,右键单击取消贴地面积测量!");var i=0,n=function(n,o){0===e.ids.length&&(e.polygon_id=t.create_polygon(e)),e.cachePositions.push(zo({},o)),e.ids.push(e.create_point(zo({},o),!1));var s=e.cartesian3Towgs84(zo({},o),e.viewer);s.alt>i&&(i=s.alt),e.positions=e.cachePositions.concat(zo({},o)),e.tip.setPosition(zo({},o),n.position.x,n.position.y),e.positions.length>3&&e.tip.set_text("左键单击确定控制点位置,右键单击完成贴地面积测量!")},o=function(t,n){if(e.positions=e.cachePositions,e.positions.length>2){var o=[];e.positions.forEach((function(t){var i=e.cartesian3Towgs84(t,e.viewer);o.push({lng:i.lng,lat:i.lat})})),setTimeout((function(){var t=e.computeCenter(o),n=e.computeSignedArea(e.viewer,o);e.center=new Cesium.Cartesian3.fromDegrees(t.lng,t.lat,i),e.text="贴地面积:"+n+" ㎡"}),0)}else{console.warn("面积计算至少需要三个坐标!"),window.ELEMENT&&window.ELEMENT.Message({message:"面积计算至少需要三个坐标!",type:"warning",duration:1500}),e.destroy()}e.end()};this.event.mouse_left(n),this.event.mouse_move((function(t,i){e.tip.setPosition(zo({},i),t.endPosition.x,t.endPosition.y),e.positions=e.cachePositions.concat(zo({},i))})),this.event.mouse_right(o),this.event.gesture_pinck_start((function(t,i){var s=new Date,a={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e.event.gesture_pinck_end((function(){new Date-s>=500?o():n(a,i)}))}))}}},{key:"destroy",value:function(){var e=this;[this.polygon_id].concat(nt()(this.ids)).forEach((function(t){e.remove_entity(t)})),Ho(t,"destroy",this,3)([])}},{key:"end",value:function(){Ho(t,"end",this,3)([])}}],[{key:"create_polygon",value:function(e){var t=e.randomString();new Cesium.NearFarScalar(2e3,1,1e5,0),e.viewer.entities.add(new Cesium.Entity({id:t,label:{text:new Cesium.CallbackProperty((function(){return e.text}),!1),font:"20px Microsoft YaHei",fillColor:Cesium.Color.fromCssColorString("#ffffff"),style:Cesium.LabelStyle.FILL_AND_OUTLINE,disableDepthTestDistance:Number.POSITIVE_INFINITY,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM},position:new Cesium.CallbackProperty((function(){return e.center}),!1),polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){return new Cesium.PolygonHierarchy(e.positions)}),!1),material:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),zIndex:99999999},polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions.length?e.positions.concat(e.positions[0]):e.positions}),!1),width:2,material:new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString(e.options.lineColor||e.defaultColor),dashLength:20}),clampToGround:!0,zIndex:99999999}}));return t}}])}(go);function Go(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function Wo(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var Uo=function(e){function t(e){return c()(this,t),Go(this,t,[e,{text:"左键单击确定控制点位置,右键单击取消三角测量!"}])}return Me()(t,e),h()(t,[{key:"cal_center",value:function(e){var t=this.cartesian3Towgs84(e[0],this.viewer),i=this.cartesian3Towgs84(e[1],this.viewer),n=this.computeCenter([t,i]);return Cesium.Cartesian3.fromDegrees(n.lng,n.lat,(t.alt+i.alt)/2)}},{key:"cal_distance",value:function(e){var t=this.cartesian3Towgs84(e[0],this.viewer),i=this.cartesian3Towgs84(e[1],this.viewer),n=this.computeDistance2([t,i]);return t.alt=t.alt.toFixed(2),i.alt=i.alt.toFixed(2),t.alt===i.alt?n:0===Number(n)?Math.abs(t.alt-i.alt).toFixed(2):Math.sqrt(n*n+Math.pow(Math.abs(t.alt-i.alt).toFixed(2),2)).toFixed(2)}},{key:"createPolyline",value:function(e){var t=this,i=this.id_map.get(e);this.viewer.entities.add(new Cesium.Entity({id:e,position:new Cesium.CallbackProperty((function(){return 2===i.positions.length?t.cal_center(i.positions):Cesium.Cartesian3()}),!1),label:{text:new Cesium.CallbackProperty((function(){return 2===i.positions.length?t.cal_distance(i.positions)+"米":"0米"}),!1),scale:1,fillColor:Cesium.Color.RED,font:"normal 20px MicroSoft YaHei",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,style:Cesium.LabelStyle.FILL_AND_OUTLINE,pixelOffset:new Cesium.Cartesian2(0,-10),disableDepthTestDistance:Number.POSITIVE_INFINITY},polyline:{positions:new Cesium.CallbackProperty((function(){return i.positions}),!1),width:2,material:Cesium.Color.YELLOW,zIndex:99999999}})),this.ids.push(e)}},{key:"create_angle_label",value:function(e,t,i,n){var o=this,s=new Cesium.Entity({id:i,position:new Cesium.CallbackProperty((function(){return 2===e.length?o.cal_point(e,t):Cesium.Cartesian3()})),label:{text:new Cesium.CallbackProperty((function(){return 2===e.length?o.cal_angle(e,t,n)+"°":"0°"}),!1),scale:1,fillColor:Cesium.Color.RED,font:"normal 20px MicroSoft YaHei",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,style:Cesium.LabelStyle.FILL_AND_OUTLINE,pixelOffset:new Cesium.Cartesian2(15,-10)}});this.viewer.entities.add(s)}},{key:"cal_point",value:function(e,t){for(var i=0;i=500?e.end():r(o,i)}))}))}}},{key:"end",value:function(){Wo(t,"end",this,3)([])}},{key:"destroy",value:function(){Wo(t,"destroy",this,3)([])}}])}(go);function Yo(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function Jo(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var qo=function(e){function t(e){var i;return c()(this,t),(i=Yo(this,t,[e,{text:""}])).defaultColor="#f11515",i.locationID=i.randomString(),i.position=new Cesium.Cartesian3,i.text="",i}return Me()(t,e),h()(t,[{key:"start",value:function(){var e=this;if(!YJ.Measure.GetMeasureStatus()){Jo(t,"start",this,3)([]),this.cache_id=t.create_point(this),t.createLocation(this);var i=function(t,i){e.position=i;var n=e.viewer.entities.getById(e.locationID);n&&(n.show=!0);var o=e.cartesian3Towgs84(i,e.viewer),s=Object(X.o)();if("EPSG:4326"===s||"EPSG:4490"===s)e.text="经度:".concat(Number(o.lng.toFixed(8)),"\n纬度:").concat(Number(o.lat.toFixed(8)),"\n海拔:").concat(Number(o.alt.toFixed(2)));else{var a=e.convert([{x:o.lng,y:o.lat,z:o.alt}],"EPSG:4326",s);e.text="x:".concat(Number(a.points[0].x.toFixed(8)),"\ny:").concat(Number(a.points[0].y.toFixed(8)),"\nz:").concat(Number(a.points[0].z.toFixed(2)))}e.end()};this.event.mouse_left(i),this.event.mouse_right((function(t,i){e.destroy(),e.end()})),this.event.mouse_move((function(t,i){e.tip.setPosition(i,t.endPosition.x,t.endPosition.y);var n=e.viewer.entities.getById(e.locationID);n&&(n.show=!0),e.position=i;var o=e.cartesian3Towgs84(i,e.viewer),s=Object(X.o)();if("EPSG:4326"===s||"EPSG:4490"===s)e.text="经度:".concat(Number(o.lng.toFixed(8)),"\n纬度:").concat(Number(o.lat.toFixed(8)),"\n海拔:").concat(Number(o.alt.toFixed(2)));else{var a=e.convert([{x:o.lng,y:o.lat,z:o.alt}],"EPSG:4326",s);e.text="x:".concat(Number(a.points[0].x.toFixed(8)),"\ny:").concat(Number(a.points[0].y.toFixed(8)),"\nz:").concat(Number(a.points[0].z.toFixed(2)))}})),this.event.gesture_pinck_start((function(t,n){var o=new Date;t.position1.x,t.position2.x,t.position1.y,t.position2.y;e.event.gesture_pinck_end((function(){new Date-o>=500?(e.destroy(),e.end()):i(0,n)}))}))}}},{key:"destroy",value:function(){this.remove_entity(this.locationID),this.remove_entity(this.cache_id),Jo(t,"destroy",this,3)([])}},{key:"end",value:function(){Jo(t,"end",this,3)([])}}],[{key:"createLocation",value:function(e){e.viewer.entities.add(new Cesium.Entity({id:e.locationID,show:!1,position:new Cesium.CallbackProperty((function(){return e.position}),!1),label:{text:new Cesium.CallbackProperty((function(){return e.text}),!1),font:"22px Microsoft YaHei",fillColor:new Cesium.Color.fromCssColorString(e.defaultColor),style:Cesium.LabelStyle.FILL_AND_OUTLINE,horizontalOrigin:Cesium.HorizontalOrigin.LEFT,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,pixelOffset:new Cesium.Cartesian2(-100,-50)},billboard:{image:e.getSourceRootPath()+"/img/location.png",color:Cesium.Color.fromCssColorString("rgba(255,255,255,0.99)"),disableDepthTestDistance:Number.POSITIVE_INFINITY,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,width:48,height:48}}))}},{key:"create_point",value:function(e){var t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,position:new Cesium.CallbackProperty((function(){return e.position}),!1),billboard:r()({image:e.getSourceRootPath()+"/img/point.png",color:Cesium.Color.fromCssColorString("rgba(255,255,255,0.99)"),verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY},"color",Cesium.Color.WHITE.withAlpha(.99))})),t}}])}(go);function Xo(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function Zo(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var Ko=function(e){function t(e){return c()(this,t),Xo(this,t,[e,{text:"左键单击确定控制点位置,右键单击取消垂直高度测量!"}])}return Me()(t,e),h()(t,[{key:"start",value:function(){var e=this;if(!YJ.Measure.GetMeasureStatus()){Zo(t,"start",this,3)([]),this.positions=[],this.position=new Cesium.Cartesian3,this.height=0,this.text="",this.circleRadius=0;var i=0;this.firstpoint=null;var n=function(n,o){if(null===e.firstpoint&&(e.positions.push(o),e.firstpoint=e.cartesian3Towgs84(o,e.viewer),e.ids.push(t.create_polygon(e)),e.ids.push(t.create_point(e,o))),e.tip.set_text("左键单击确定终点位置,完成垂直高度测量!"),i++,e.tip.setPosition(o,n.position.x,n.position.y),2===i){if(e.firstpoint){var s=e.cartesian3Towgs84(o,e.viewer);e.positions[1]=Cesium.Cartesian3.fromDegrees(e.firstpoint.lng,e.firstpoint.lat,s.alt),e.positions[2]=o,e.position=e.positions[1],e.circleRadius=e.computeDistance2([e.firstpoint,s]),e.height=Number((s.alt-e.firstpoint.alt).toFixed(2)),e.text="相对高度:"+e.height+" 米"}e.ids.push(t.create_point(e,o,{label:{text:"半径:"+e.circleRadius+" 米"}})),e.end()}};this.event.mouse_left(n),this.event.mouse_move((function(t,i){if(e.tip.setPosition(i,t.endPosition.x,t.endPosition.y),e.firstpoint){var n=e.cartesian3Towgs84(i,e.viewer);e.positions[1]=Cesium.Cartesian3.fromDegrees(e.firstpoint.lng,e.firstpoint.lat,n.alt),e.positions[2]=i,e.position=e.positions[1],e.circleRadius=e.computeDistance2([e.firstpoint,n]),e.height=Number((n.alt-e.firstpoint.alt).toFixed(2)),e.text="相对高度:"+e.height+" 米"}})),this.event.mouse_right((function(t,i){e.end(),e.destroy()})),this.event.gesture_pinck_start((function(t,i){var o=new Date,s={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e.event.gesture_pinck_end((function(){new Date-o>=500?(e.end(),e.destroy()):n(s,i)}))}))}}},{key:"end",value:function(){Zo(t,"end",this,3)([])}},{key:"destroy",value:function(){Zo(t,"destroy",this,3)([])}}],[{key:"create_polygon",value:function(e){var t=e.randomString();e.viewer.entities.add(new Cesium.Entity({id:t,billboard:{image:e.getSourceRootPath()+"/img/point.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)},position:new Cesium.CallbackProperty((function(){return e.position}),!1),label:{text:new Cesium.CallbackProperty((function(){return e.text}),!1),scale:1,font:"normal 20px MicroSoft YaHei",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,style:Cesium.LabelStyle.FILL_AND_OUTLINE,pixelOffset:new Cesium.Cartesian2(0,-15),disableDepthTestDistance:Number.POSITIVE_INFINITY},polyline:{positions:new Cesium.CallbackProperty((function(t){return e.positions}),!1),width:2,material:Cesium.Color.YELLOW,zIndex:99999999},ellipse:{height:new Cesium.CallbackProperty((function(){return e.height+e.firstpoint.alt}),!1),semiMinorAxis:new Cesium.CallbackProperty((function(t){return e.circleRadius}),!1),semiMajorAxis:new Cesium.CallbackProperty((function(t){return e.circleRadius}),!1),material:new Cesium.Color.fromCssColorString(e.defaultColor)}}));return t}},{key:"create_point",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=e.randomString(),o=e.cartesian3Towgs84(t,e.viewer),s={id:n,position:Cesium.Cartesian3.fromDegrees(o.lng,o.lat,o.alt),billboard:{image:e.getSourceRootPath()+"/img/point.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}};return i.label&&(s.label={text:i.label.text,scale:1,font:"normal 20px MicroSoft YaHei",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,style:Cesium.LabelStyle.FILL_AND_OUTLINE,pixelOffset:new Cesium.Cartesian2(0,-15)}),e.viewer.entities.add(new Cesium.Entity(s)),n}}])}(go);function Qo(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function $o(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var es=function(e){function t(e){var i;return c()(this,t),(i=Qo(this,t,[e,{text:"左键单击确定起点位置,右键单击取消夹角测量!"}])).cachePositions=[],i.positions=[],i.arcPositions=[],i.line_id="",i.label_id="",i.arc_id="",i.bearing=0,i}return Me()(t,e),h()(t,[{key:"createPolyline",value:function(){var e=this,t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),clampToGround:!0,width:5,material:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),zIndex:99999999}})),t}},{key:"end",value:function(){$o(t,"end",this,3)([])}},{key:"destroy",value:function(){var e=this;$o(t,"destroy",this,3)([]),[this.line_id,this.label_id,this.arc_id].forEach((function(t){t&&e.remove_entity(t)}))}},{key:"cancel",value:function(){this.end(),this.destroy()}},{key:"caculateAngle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.cartesian3Towgs84(e[0],this.viewer),i=this.cartesian3Towgs84(e[1],this.viewer),n=this.cartesian3Towgs84(e[2],this.viewer),o=turf.point([t.lng,t.lat]),s=turf.point([i.lng,i.lat]),a=turf.point([n.lng,n.lat]),r={units:"kilometers"},l=turf.rhumbDistance(o,s,r),c=turf.rhumbDistance(a,s,r),u=l;l>c&&(u=c);var h=turf.rhumbBearing(o,s),p=turf.rhumbBearing(a,s),d=Math.abs((h-p+360)%360);this.bearing=d>180?360-d:d,this.bearing=this.bearing.toFixed(2);var m=h-180,f=p-180,v=turf.lineArc(s,u/3,f,m);d>180&&(v=turf.lineArc(s,u/3,m,f));for(var g=[],y=0;y2&&e.caculateAngle([e.positions[0],e.positions[1],e.positions[2]])})),this.event.mouse_right((function(t,i){e.cancel()})),this.event.gesture_pinck_start((function(t,n){var o=new Date,s={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e.event.gesture_pinck_end((function(){new Date-o>=500?e.cancel():i(s,n)}))}))}}}])}(go);function ts(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function is(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var ns=function(e){function t(e){var i;return c()(this,t),(i=ts(this,t,[e,{text:"左键单击确定控制点位置,右键单击取消方位角测量!"}])).cachePositions=[],i.positions=[],i.arcPositions=[],i.line_id="",i.label_id="",i.arc_id="",i.bearing=0,i}return Me()(t,e),h()(t,[{key:"createPolyline",value:function(){var e=this,t=e.randomString();return e.viewer.entities.add(new Cesium.Entity({id:t,polyline:{positions:new Cesium.CallbackProperty((function(){return e.positions}),!1),clampToGround:!0,width:5,material:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),zIndex:99999999}})),t}},{key:"end",value:function(){is(t,"end",this,3)([])}},{key:"destroy",value:function(){var e=this;is(t,"destroy",this,3)([]),[this.line_id,this.label_id,this.arc_id].forEach((function(t){t&&e.remove_entity(t)}))}},{key:"cancel",value:function(){this.end(),this.destroy()}},{key:"caculateAngle",value:function(){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=this.cartesian3Towgs84(e[1],this.viewer),i=this.cartesian3Towgs84(e[0],this.viewer),n=turf.point([t.lng,t.lat]),o=turf.point([i.lng,i.lat]),s=this.rhumbBearing(i,t);this.bearing=(180+s).toFixed(2);for(var a=turf.rhumbDistance(n,o,{units:"kilometers"}),r=turf.lineArc(n,a/3,0,this.bearing),l=[],c=0;c2&&e.caculateAngle([e.positions[0],e.positions[1]],[e.positions[2],e.positions[1]]),!(e.ids.length>=2)){t.next=10;break}return e.end(),t.abrupt("return");case 10:if(e.ids.push(e.create_point(n)),e.ids.push(e.create_point(n)),2!==e.ids.length){t.next=21;break}return e.label_id=Cesium.createGuid(),e.arc_id=Cesium.createGuid(),p=e.cartesian3Towgs84(n,e.viewer),t.next=18,e.sampleHeightMostDetailed([p]);case 18:d=t.sent,e.viewer.entities.add({id:e.arc_id,polyline:{positions:new Cesium.CallbackProperty((function(){return e.arcPositions}),!1),clampToGround:!0,width:5,material:new Cesium.Color.fromCssColorString(e.options.color||e.defaultColor),zIndex:99999999}}),e.viewer.entities.add({id:e.label_id,position:Cesium.Cartesian3.fromDegrees(p.lng,p.lat,(d[0].height||0)+.1),label:{text:new Cesium.CallbackProperty((function(){return"方位夹角:"+e.bearing+"°"}),!1),font:"20px Microsoft YaHei",fillColor:Cesium.Color.fromCssColorString("#f1e605"),style:Cesium.LabelStyle.FILL_AND_OUTLINE,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY}});case 21:case"end":return t.stop()}}),t)})));return function(e,i){return t.apply(this,arguments)}}();this.event.mouse_left(i),this.event.mouse_move((function(t,i){if(e.tip.setPosition(i,t.endPosition.x,t.endPosition.y),e.cachePositions.length){var n;e.positions=e.cachePositions.concat(i);var o=e.cartesian3Towgs84(i,e.viewer),s=e.cartesian3Towgs84(e.positions[1],e.viewer),a=turf.point([s.lng,s.lat]),r=turf.point([o.lng,o.lat]),l={units:"kilometers"},c=turf.rhumbDistance(a,r,l),u=turf.destination(a,c,0,l);e.positions[0]=(n=Cesium.Cartesian3).fromDegrees.apply(n,nt()(u.geometry.coordinates))}e.positions.length>2&&e.caculateAngle([e.positions[0],e.positions[1]],[e.positions[2],e.positions[1]])})),this.event.mouse_right((function(t,i){e.cancel()})),this.event.gesture_pinck_start((function(t,n){var o=new Date,s={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e.event.gesture_pinck_end((function(){new Date-o>=500?e.cancel():i(s,n)}))}))}}}])}(go);function os(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var ss=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c()(this,t),(i=os(this,t,[e,n])).options.curve=n.curve||!1;var o=Number(n.number);return isNaN(o)?i.options.number=1/0:i.options.number=o<2?2:o,i}return Me()(t,e),h()(t,[{key:"smoothHandle",value:function(e){if(e.length>1){for(var t=[],i=[],n=0;n=r.options.number){var s,a=[];if(c.forEach((function(e){a.push(r.cartesian3Towgs84(e,r.viewer))})),r.options.curve){var u=r.smoothHandle(c);s=[];for(var h=0;h1&&(r.remove_entity(r.points_ids.pop()),c.pop(),e(c.length))})),this.event.gesture_pinck_start_keyboard_ctrl((function(){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),r.positions=c.concat(cartesian),e(c.length))})),this.event.gesture_pinck_start((function(i,n){if("2D"!==l){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500){var s,a=[];if(c.forEach((function(e){a.push(r.cartesian3Towgs84(e,r.viewer))})),r.options.curve){var l=r.smoothHandle(c);s=[];for(var u=0;u1&&(r.remove_entity(r.points_ids.pop()),c.pop(),e(c.length))})),this.event2D.gesture_pinck_start_keyboard_ctrl((function(){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),r.positions=c.concat(cartesian))})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==l){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500){var s,a=[];if(c.forEach((function(e){a.push(r.cartesian3Towgs84(e,r.viewer))})),r.options.curve){var l=r.smoothHandle(c);s=[];for(var u=0;u1&&void 0!==arguments[1]?arguments[1]:e.viewer;e.entityHasCreated=!0;var i=e.randomString();return t.entities.add(new Cesium.Entity({id:i,polyline:{positions:new Cesium.CallbackProperty((function(){return e.options.curve?e.smoothHandle(e.positions):e.positions}),!1),width:5,material:Cesium.Color.fromCssColorString(e.color),clampToGround:!0,zIndex:99999999}})),i}}])}(xn.a);function as(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function rs(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=ls(this,t,[e,n])).polygonHasCreated=!1,i.rectObject=[],i}return Me()(t,e),h()(t,[{key:"computedLastPoint",value:function(e){var t=e[0],i=e[1],n=Cesium.Cartesian3.subtract(i,t,new Cesium.Cartesian3),o=Cesium.Cartesian3.subtract(e[2],t,new Cesium.Cartesian3),s=Cesium.Cartesian3.dot(o,n)/Cesium.Cartesian3.magnitudeSquared(n),a=Cesium.Cartesian3.multiplyByScalar(n,s,new Cesium.Cartesian3),r=Cesium.Cartesian3.add(t,a,new Cesium.Cartesian3),l=Cesium.Cartesian3.distance(e[2],r),c=Cesium.Cartesian3.subtract(e[2],r,new Cesium.Cartesian3);Cesium.Cartesian3.normalize(c,c);var u=Cesium.Cartesian3.multiplyByScalar(c,l,new Cesium.Cartesian3),h=Cesium.Cartesian3.add(i,u,new Cesium.Cartesian3),p=Cesium.Cartesian3.add(t,u,new Cesium.Cartesian3);return[rs({},h),rs({},p)]}},{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l;this.polygonHasCreated=!1,(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a("左键确定,右键结束;CTRL+右键撤销",this.sdk),this.event=new te.a(this.sdk);var c=0;this.positions=[],this.positionsLine=[],this.points_ids=[];var u=[],h=[];this.event.mouse_left((function(i,n){if("2D"!==l){if(l="3D",c++,r.positions=u.concat(rs({},n)),r.tip.setPosition(n,i.position.x,i.position.y),!r.polygonHasCreated){var o=t.create_polygon(r);r.points_ids.push(o)}u.push(n),h.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n)),3==c&&(r.end(),e(null,r.rectObject))}})),this.event.mouse_right((function(t,i){"2D"!==l&&(r.end(),e("取消",""))})),this.event.mouse_move((function(e,t){if("2D"!==l&&(r.tip.setPosition(t,e.endPosition.x,e.endPosition.y),2==c)){var i=JSON.parse(JSON.stringify(u)),n=i.concat(rs({},t)),o=r.computedLastPoint(n);i=i.concat(o),r.positions=i;var s=i.map((function(e){return r.cartesian3Towgs84(e,r.viewer)}));r.rectObject=s}})),this.event.mouse_right_keyboard_ctrl((function(e,t){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),u.pop(),h.pop())})),this.event.gesture_pinck_start_keyboard_ctrl((function(){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),u.pop(),h.pop(),r.positions=u.concat(cartesian))})),this.event.gesture_pinck_start((function(i,n){if("2D"!==l){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500)e(null,h),r.end();else{if(r.tip.setPosition(n,(i.position1.x+i.position2.x)/2,(i.position1.y+i.position2.y)/2),!r.polygonHasCreated){var s=t.create_polygon(r);r.points_ids.push(s)}u.push(n),h.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n)),r.positions=u.concat(n)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(i,n){if("3D"!==l){if(l="2D",c++,r.positions=u.concat(rs({},n)),r.tip.setPosition(n,i.position.x+r.viewer.canvas.width,i.position.y),!r.polygonHasCreated){var o=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(o)}u.push(n),h.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),3==c&&(r.end(),e(null,r.rectObject))}})),this.event2D.mouse_right((function(t,i){"3D"!==l&&(r.end(),e("取消",""))})),this.event2D.mouse_move((function(e,t){if("3D"!==l&&(r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y),2==c)){var i=JSON.parse(JSON.stringify(u)),n=i.concat(rs({},t)),o=r.computedLastPoint(n);i=i.concat(o),r.positions=i;var s=i.map((function(e){return r.cartesian3Towgs84(e,r.viewer)}));r.rectObject=s}})),this.event2D.mouse_right_keyboard_ctrl((function(e,t){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),u.pop(),h.pop())})),this.event2D.gesture_pinck_start_keyboard_ctrl((function(){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),u.pop(),h.pop(),r.positions=u.concat(cartesian))})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==l){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500)e(null,h),r.end();else{if(r.tip.setPosition(n,(i.position1.x+i.position2.x)/2+r.viewer.canvas.width,(i.position1.y+i.position2.y)/2),!r.polygonHasCreated){var s=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(s)}u.push(n),h.push(r.cartesian3Towgs84(n,r.viewer)),r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),r.positions=u.concat(n)}}))}})))}}}],[{key:"create_polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer;e.polygonHasCreated=!0;var i=e.randomString();return t.entities.add(new Cesium.Entity({id:i,polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){return new Cesium.PolygonHierarchy(e.positions)})),material:Cesium.Color.fromCssColorString(e.color),zIndex:99999999},polyline:{positions:new Cesium.CallbackProperty((function(t){return e.positions.concat(e.positions[0])})),width:2,material:Cesium.Color.fromCssColorString("#c1c505").withAlpha(.5),clampToGround:!0,zIndex:99999999}})),i}}])}(xn.a),us=i(27);function hs(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var ps=function(e){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),hs(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l,c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.viewer;e.entities.add(new Cesium.Entity({id:g.circle_id,position:new Cesium.CallbackProperty((function(e){if(v){var t=g.computeMidpoint(f,v);return Cesium.Cartesian3.fromDegrees(t.lng,t.lat,v.alt)}return Cesium.Cartesian3()}),!1),label:{text:new Cesium.CallbackProperty((function(e){return d>1e3?"半径:"+(d/1e3).toFixed(2)+" 公里":"半径:"+d+" 米"}),!1),font:"20px Microsoft YaHei",distanceDisplayCondition:1e7,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,fillColor:Cesium.Color.fromCssColorString("#f5ce0a"),style:Cesium.LabelStyle.FILL_AND_OUTLINE},polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(e){return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(m))}),!1),material:Cesium.Color.fromCssColorString(g.color),zIndex:99999999},polyline:{positions:new Cesium.CallbackProperty((function(e){return h}),!1),width:2,material:Cesium.Color.fromCssColorString("#c1c505").withAlpha(.5),clampToGround:!0,zIndex:99999999}}))};(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键开始,右键取消",this.sdk),this.event=new te.a(this.sdk);var u=0;this.circle_id=this.randomString();var h=[],p=[],d=1,m=[],f={},v=null;this.event.mouse_left((function(t,i){"2D"!==l&&(l="3D",r.tip.set_text(r.tipText||"再次左键,完成绘制;右键取消"),1===++u&&(r.point_id=r.create_point(i),f=r.cartesian3Towgs84(i,r.viewer),m=r.createCircle(f,.01),p.push(i),c(),e(u)),2===u&&(h=p.concat(i),v=r.cartesian3Towgs84(i,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d),r.end(),e(null,{center:f,radius:Number(d)})))})),this.event.mouse_right((function(t,i){"2D"!==l&&(r.end(),e(!1))})),this.event.mouse_move((function(e,t){"2D"!==l&&(r.tip.setPosition(t,e.endPosition.x,e.endPosition.y),u&&(h=p.concat(t),v=r.cartesian3Towgs84(t,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d)))})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==l&&r.point_id&&(r.remove_entity(r.circle_id),r.remove_entity(r.point_id),r.point_id=null,p=[],h=[],m=[],f={},v=null,e(u=0))})),this.event.gesture_pinck_start((function(t,i){if("2D"!==l){var n=new Date;r.event.gesture_pinck_end((function(){new Date-n>=500?(r.end(),e(!1)):(r.tip.set_text(r.tipText||"再次左键,完成绘制;右键取消"),1===++u&&(r.point_id=r.create_point(i),f=r.cartesian3Towgs84(i,r.viewer),p.push(i),c(),r.tip.setPosition(i,(t.position1.x+t.position2.x)/2,(t.position1.y+t.position2.y)/2),e(u)),2===u&&(h=p.concat(i),v=r.cartesian3Towgs84(i,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d),r.end(),e(null,{center:f,radius:Number(d)})))}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(t,i){"3D"!==l&&(l="2D",r.tip.set_text(r.tipText||"再次左键,完成绘制;右键取消"),1===++u&&(r.point_id=r.create_point(i,r._sdk2D.viewer),f=r.cartesian3Towgs84(i,r.viewer),m=r.createCircle(f,.01),p.push(i),c(r._sdk2D.viewer),e(u)),2===u&&(h=p.concat(i),v=r.cartesian3Towgs84(i,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d),r.end(),e(null,{center:f,radius:Number(d)})))})),this.event2D.mouse_right((function(t,i){"3D"!==l&&(r.end(),e(!1))})),this.event2D.mouse_move((function(e,t){"3D"!==l&&(r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y),u&&(h=p.concat(t),v=r.cartesian3Towgs84(t,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d)))})),this.event2D.gesture_pinck_start((function(t,i){if("3D"!==l){var n=new Date;r.event2D.gesture_pinck_end((function(){new Date-n>=500?(r.end(),e(!1)):(r.tip.set_text(r.tipText||"再次左键,完成绘制;右键取消"),1===++u&&(r.point_id=r.create_point(i,r._sdk2D.viewer),f=r.cartesian3Towgs84(i,r.viewer),p.push(i),c(r._sdk2D.viewer),r.tip.setPosition(i,(t.position1.x+t.position2.x)/2+r.viewer.canvas.width,(t.position1.y+t.position2.y)/2),e(u)),2===u&&(h=p.concat(i),v=r.cartesian3Towgs84(i,r.viewer),d=r.computeDistance2([f,v]),m=r.createCircle(f,d),r.end(),e(null,{center:f,radius:Number(d)})))}))}})),this.event2D.mouse_right_keyboard_ctrl((function(t,i){"3D"!==l&&r.point_id&&(r.remove_entity(r.circle_id),r.remove_entity(r.point_id),r.point_id=null,p=[],h=[],m=[],f={},v=null,e(u=0))})));var g=this}}},{key:"end",value:function(){this.remove_entity(this.circle_id),this.remove_entity(this.point_id),YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.event2D&&this.event2D.destroy()}}])}(xn.a);function ds(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var ms=function(e){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),ds(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l,c=function(){var e=Cesium.Cartesian3.fromDegrees(m[0].lng,m[0].lat),t=Cesium.Cartesian3.fromDegrees(m[1].lng,m[1].lat),i=Cesium.Cartesian3.fromDegrees(m[2].lng,m[2].lat);if(1===h){g=Cesium.Cartesian3.distance(e,t),f=(v=g)/2;var n={x:p.lng,y:p.lat},o={x:m[1].lng,y:m[1].lat},s=Math.PI/180,a=n.y*s,r=o.y*s,l=n.x*s,c=o.x*s,u=Math.sin(c-l)*Math.cos(r),d=Math.cos(a)*Math.sin(r)-Math.sin(a)*Math.cos(r)*Math.cos(c-l),C=Math.atan2(u,d)%(2*Math.PI);b=450-(180*C/Math.PI<0?360+180*C/Math.PI:180*C/Math.PI)}if(2===h){Cesium.Cartesian3.distance(e,i),y=Cesium.Cartesian3.distance(t,i);var w=turf.point([m[0].lng,m[0].lat]),k=turf.point([m[1].lng,m[1].lat]),_=turf.point([m[2].lng,m[2].lat]),x=turf.rhumbBearing(w,k),S=turf.rhumbBearing(k,_),E=Math.abs(x-S),P=E>180?360-E:E;P=180-P,f=y*Math.sin(Cesium.Math.toRadians(P))}},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:C.viewer;e.entities.add(new Cesium.Entity({id:C.elliptic_id,position:Cesium.Cartesian3.fromDegrees(p.lng,p.lat),ellipse:{semiMinorAxis:new Cesium.CallbackProperty((function(e){return f}),!1),semiMajorAxis:new Cesium.CallbackProperty((function(e){return v}),!1),granularity:Cesium.Math.toRadians(.1),rotation:new Cesium.CallbackProperty((function(e){return Cesium.Math.toRadians(b)}),!1),material:Cesium.Color.fromCssColorString(C.color),zIndex:99999999}}))};(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),this.entity_ids=[],YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键开始,右键取消",this.sdk),this.event=new te.a(this.sdk);var h=0;this.elliptic_id=this.randomString();var p,d=[],m=[],f=0,v=0,g=0,y=0,b=0;this.event.mouse_left((function(t,i){if("2D"!==l){if(l="3D",r.tip.set_text("再次左键,完成绘制;右键取消"),h++,r.points_ids.push(r.create_point(i)),d.push(i),1===h){d=[i,i,i];var n=r.cartesian3Towgs84(i,r.viewer);p=n,m=[n,n,n],c(),u()}if(2===h){d[1]=i,d[2]=i;var o=r.cartesian3Towgs84(i,r.viewer);m[1]=o,m[2]=o}h>=3?(r.end(),e(null,{center:p,bearing:b,semiMajorAxis:v,semiMinorAxis:f})):e(h)}})),this.event.mouse_right((function(t,i){"2D"!==l&&(r.end(),e(!1))})),this.event.mouse_move((function(e,t){"2D"!==l&&(r.tip.setPosition(t,e.endPosition.x,e.endPosition.y),d[h]=t,m[h]=r.cartesian3Towgs84(t,r.viewer),0!==h&&c())})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==l&&(r.remove_entity(r.points_ids.pop()),h--,e(h),0==h&&r.remove_entity(r.elliptic_id))})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(t,i){if("3D"!==l){if(l="2D",r.tip.set_text("再次左键,完成绘制;右键取消"),h++,r.points_ids.push(r.create_point(i,r._sdk2D.viewer)),d.push(i),1===h){d=[i,i,i];var n=r.cartesian3Towgs84(i,r.viewer);p=n,m=[n,n,n],c(),u(r._sdk2D.viewer)}if(2===h){d[1]=i,d[2]=i;var o=r.cartesian3Towgs84(i,r.viewer);m[1]=o,m[2]=o}h>=3?(r.end(),e(null,{center:p,bearing:b,semiMajorAxis:v,semiMinorAxis:f})):e(h)}})),this.event2D.mouse_right((function(t,i){"3D"!==l&&(r.end(),e(!1))})),this.event2D.mouse_move((function(e,t){"3D"!==l&&(r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y),d[h]=t,m[h]=r.cartesian3Towgs84(t,r.viewer),0!==h&&c())})));var C=this}}},{key:"end",value:function(){var e=this;this.remove_entity(this.elliptic_id),this.points_ids.forEach((function(t){e.remove_entity(t)})),YJ.Measure.SetMeasureStatus(!1),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.event2D&&this.event2D.destroy()}}])}(xn.a);function fs(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var vs=function(e){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),fs(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l;(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确定,右键结束;CTRL+右键撤销",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var c=[],u=!1;this.event.mouse_left((function(i,n){if("2D"!==l){l="3D";var o=r.cartesian3Towgs84(n,r.viewer),s=c[c.length-1];if(!s||s.lng!==o.lng||s.lat!==o.lat){if(!r.entityHasCreated){var a=t.create_arrow_polygon(r);r.points_ids.push(a)}r.points_ids.push(r.create_point(n)),c.push(o),u=!1,e(c.length)}}})),this.event.mouse_right((function(t,i){if("2D"!==l){var n=[];if(r.points_ids.length>2)r.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){n.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),u&&r.positions.pop(),e(null,r.positions,n)}})),this.event.mouse_move((function(e,t){"2D"!==l&&(u=!0,r.positions=c.concat(r.cartesian3Towgs84(t,r.viewer)),r.tip.setPosition(t,e.endPosition.x,e.endPosition.y))})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),e(c.length))})),this.event.gesture_pinck_start_keyboard_ctrl((function(){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop())})),this.event.gesture_pinck_start((function(i,n){if("2D"!==l){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500){var s=[];if(r.points_ids.length>2)r.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){s.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,r.positions,s)}else{if(!r.entityHasCreated){var a=t.create_arrow_polygon(r);r.points_ids.push(a)}r.points_ids.push(r.create_point(n)),c.push(r.cartesian3Towgs84(n,r.viewer)),r.positions=c.concat(r.cartesian3Towgs84(n,r.viewer)),r.tip.setPosition(n,(i.position1.x+i.position2.x)/2,(i.position1.y+i.position2.y)/2)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(e,i){if("3D"!==l){if(l="2D",!r.entityHasCreated){var n=t.create_arrow_polygon(r,r._sdk2D.viewer);r.points_ids.push(n)}r.points_ids.push(r.create_point(i,r._sdk2D.viewer)),c.push(r.cartesian3Towgs84(i,r.viewer)),u=!1}})),this.event2D.mouse_right((function(t,i){if("3D"!==l){var n=[];if(r.points_ids.length>2)r.event2D.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){n.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),u&&r.positions.pop(),e(null,r.positions,n)}})),this.event2D.mouse_move((function(e,t){"3D"!==l&&(u=!0,r.positions=c.concat(r.cartesian3Towgs84(t,r.viewer)),r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y))})),this.event2D.mouse_right_keyboard_ctrl((function(e,t){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop())})),this.event2D.gesture_pinck_start_keyboard_ctrl((function(){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop())})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==l){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500){var s=[];if(r.points_ids.length>2)r.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){s.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,r.positions,s)}else{if(!r.entityHasCreated){var a=t.create_arrow_polygon(r,r._sdk2D.viewer);r.points_ids.push(a)}r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),c.push(r.cartesian3Towgs84(n,r.viewer)),r.positions=c.concat(r.cartesian3Towgs84(n,r.viewer)),r.tip.setPosition(n,(i.position1.x+i.position2.x)/2+r.viewer.canvas.width,(i.position1.y+i.position2.y)/2)}}))}})))}}}],[{key:"create_arrow_polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer;e.entityHasCreated=!0;var i=e.randomString();return t.entities.add(new Cesium.Entity({id:i,polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){for(var i=e.computeAttackArrow(e.positions),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),gs(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var l;(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确定,右键取消;CTRL+右键撤销",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var c=[];this.event.mouse_left((function(i,n){if("2D"!==l){if(l="3D",!r.entityHasCreated){var o=t.create_arrow_polygon(r);r.points_ids.push(o)}if(r.points_ids.push(r.create_point(n)),c.push(r.cartesian3Towgs84(n,r.viewer)),5===c.length){var s=[];if(r.points_ids.length>2)r.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){s.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,c,s)}else e(c.length)}})),this.event.mouse_right((function(t,i){"2D"!==l&&(r.end(),e("取消绘制"))})),this.event.mouse_move((function(e,t){"2D"!==l&&(r.positions=c.concat(r.cartesian3Towgs84(t,r.viewer)),r.tip.setPosition(t,e.endPosition.x,e.endPosition.y))})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),e(c.length))})),this.event.gesture_pinck_start_keyboard_ctrl((function(){"2D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),r.positions=c.concat(r.cartesian3Towgs84(cartesian,r.viewer)))})),this.event.gesture_pinck_start((function(i,n){if("2D"!==l){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500)r.end(),e("取消绘制");else{if(!r.entityHasCreated){var s=t.create_arrow_polygon(r);r.points_ids.push(s)}if(r.points_ids.push(r.create_point(n)),c.push(r.cartesian3Towgs84(n,r.viewer)),r.positions=c.concat(r.cartesian3Towgs84(n,r.viewer)),r.tip.setPosition(n,(i.position1.x+i.position2.x)/2,(i.position1.y+i.position2.y)/2),5===c.length){var a=[];if(r.points_ids.length>2)r.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){a.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,c,a)}else e(c.length)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(i,n){if("3D"!==l){if(l="2D",!r.entityHasCreated){var o=t.create_arrow_polygon(r,r._sdk2D.viewer);r.points_ids.push(o)}if(r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),c.push(r.cartesian3Towgs84(n,r.viewer)),5===c.length){var s=[];if(r.points_ids.length>2)r.event2D.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){s.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,c,s)}else e(c.length)}})),this.event2D.mouse_right((function(t,i){"3D"!==l&&(r.end(),e("取消绘制"))})),this.event2D.mouse_move((function(e,t){"3D"!==l&&(r.positions=c.concat(r.cartesian3Towgs84(t,r.viewer)),r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y))})),this.event2D.mouse_right_keyboard_ctrl((function(t,i){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),e(c.length))})),this.event2D.gesture_pinck_start_keyboard_ctrl((function(){"3D"!==l&&r.points_ids.length>1&&(r.remove_entity(r.points_ids.pop()),c.pop(),r.positions=c.concat(r.cartesian3Towgs84(cartesian,r.viewer)))})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==l){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500)r.end(),e("取消绘制");else{if(!r.entityHasCreated){var s=t.create_arrow_polygon(r,r._sdk2D.viewer);r.points_ids.push(s)}if(r.points_ids.push(r.create_point(n,r._sdk2D.viewer)),c.push(r.cartesian3Towgs84(n,r.viewer)),r.positions=c.concat(r.cartesian3Towgs84(n,r.viewer)),r.tip.setPosition(n,(i.position1.x+i.position2.x)/2+r.viewer.canvas.width,(i.position1.y+i.position2.y)/2),5===c.length){var a=[];if(r.points_ids.length>2)r.event2D.viewer.entities.getById(r.points_ids[0]).polygon.hierarchy.getValue().positions.forEach((function(e){a.push(r.cartesian3Towgs84(e,r.viewer))}));r.end(),e(null,c,a)}else e(c.length)}}))}})))}}}],[{key:"create_arrow_polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer;e.entityHasCreated=!0;var i=e.randomString();return t.entities.add(new Cesium.Entity({id:i,polygon:{classificationType:Cesium.ClassificationType.BOTH,hierarchy:new Cesium.CallbackProperty((function(t){for(var i=e.computePincerArrow(e.positions),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=bs(this,t,[e,n])).points=null,i.polygonHasCreated=!1,i}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var n;Cs(t,"start",this,3)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a("左键确定,右键取消;",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var o=[];this.anchorpoints=[],this.event.mouse_left((function(t,s){if("2D"!==n&&(n="3D",s&&i.anchorpoints[0]!==s)){i.anchorpoints.push(s);var a=i.cartesian3Towgs84(s,i.viewer);if(a.lng=Number(a.lng.toFixed(8)),a.lat=Number(a.lat.toFixed(8)),(!o[0]||a.lng!==o[0].lng||a.lat!==o[0].lat)&&(o.push(a),i.positions.push(a),i.points_ids.push(i.create_point(s)),2===i.points_ids.length)){var r=[o[0],o[1]];e(null,r),i.end()}}})),this.event.mouse_move((function(e,o){if("2D"!==n&&(i.tip.setPosition(o,e.endPosition.x,e.endPosition.y),o&&0!==i.points_ids.length)){var s=i.cartesian3Towgs84(o,i.viewer);i.positions=[i.positions[0],s],1!==i.points_ids.length||Cesium.defined(i.arrowPolygon)||(i.arrowPolygon=t.polygon(i))}})),this.event.mouse_right((function(t,o){"2D"!==n&&(e(null),i.end())})),this.event.gesture_pinck_start((function(s,a){if("2D"!==n){var r=new Date;i.event.gesture_pinck_end((function(){if(new Date-r>=500)i.end(),e(!1);else if(2===i.anchorpoints.length)i.anchorpoints.push(a),e(null,i.positions),i.end();else{if(!a||Cesium.defined(i.arrowPolygon))return;i.tip.setPosition(a,(s.position1.x+s.position2.x)/2,(s.position1.y+s.position2.y)/2),i.anchorpoints.push(a),i.arrowPolygon=t.polygon(i),o.push(i.cartesian3Towgs84(a)),i.points_ids.push(i.create_point(a))}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(t,s){if("3D"!==n&&(n="2D",s&&i.anchorpoints[0]!==s)){i.anchorpoints.push(s);var a=i.cartesian3Towgs84(s,i.viewer);if(a.lng=Number(a.lng.toFixed(8)),a.lat=Number(a.lat.toFixed(8)),(!o[0]||a.lng!==o[0].lng||a.lat!==o[0].lat)&&(o.push(a),i.positions.push(a),i.points_ids.push(i.create_point(s,i._sdk2D.viewer)),2===i.points_ids.length)){var r=[o[0],o[1]];e(null,r),i.end()}}})),this.event2D.mouse_move((function(e,o){if("3D"!==n&&(i.tip.setPosition(o,e.endPosition.x+i.viewer.canvas.width,e.endPosition.y),o&&0!==i.points_ids.length)){var s=i.cartesian3Towgs84(o,i.viewer);i.positions=[i.positions[0],s],1!==i.points_ids.length||Cesium.defined(i.arrowPolygon)||(i.arrowPolygon=t.polygon(i,i._sdk2D.viewer))}})),this.event2D.mouse_right((function(t,o){"3D"!==n&&(e(null),i.end())})),this.event2D.gesture_pinck_start((function(s,a){if("3D"!==n){var r=new Date;i.event2D.gesture_pinck_end((function(){if(new Date-r>=500)i.end(),e(!1);else if(2===i.anchorpoints.length)i.anchorpoints.push(a),e(null,i.positions),i.end();else{if(!a||Cesium.defined(i.arrowPolygon))return;i.tip.setPosition(a,(s.position1.x+s.position2.x)/2+i.viewer.canvas.width,(s.position1.y+s.position2.y)/2),i.anchorpoints.push(a),i.arrowPolygon=t.polygon(i,i._sdk2D.viewer),o.push(i.cartesian3Towgs84(a)),i.points_ids.push(i.create_point(a,i._sdk2D.viewer))}}))}})))}}},{key:"end",value:function(){Cs(t,"end",this,3)([]),this.viewer.entities.remove(this.arrowPolygon),!this._is2D&&this._sdk2D&&this._sdk2D.viewer.entities.remove(this.arrowPolygon)}}],[{key:"polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer,i=e.randomString();return t.entities.add(new Cesium.Entity({name:"ArrowPolygon",id:i,polygon:{hierarchy:new Cesium.CallbackProperty((function(t){for(var i=e.computeStraightArrow(e.positions),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=ks(this,t,[e,n])).rhumb=n.rhumb,i.polygonHasCreated=!1,i.rect=[],i.rectObj=[],i.entity=null,i}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r=this,l=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var c;(i=t,n="start",o=this,s=3,a=_n()(De()(1&s?i.prototype:i),n,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确定,右键取消",l.sdk),this.event=new te.a(l.sdk),this.positions=[],this.points_ids=[];var u=0,h=null,p=null;this.event.mouse_left((function(i,n){if("2D"!==c){c="3D",u++;var o=r.cartesian3Towgs84(n,r.viewer);if(!r.polygonHasCreated){r.polygonHasCreated=!0;var s=t.create_polygon(r);r.points_ids.push(s),h=o}2==u?(p=o,r.end(),e(null,l.rectObj,[h,p])):e(u)}})),this.event.mouse_right((function(t,i){"2D"!==c&&(r.end(),e("取消",""))})),this.event.mouse_move((function(e,t){if("2D"!==c&&(r.tip.setPosition(t,e.endPosition.x,e.endPosition.y),1==u)){var i=r.cartesian3Towgs84(t,r.viewer);r.calrect(h,i)}})),this.event.mouse_right_keyboard_ctrl((function(t,i){"2D"!==c&&r.points_ids.length>=1&&(r.remove_entity(r.points_ids.pop()),r.polygonHasCreated=!1,r.rect=[],u--,e(u))})),this.event.gesture_pinck_start((function(i,n){if("2D"!==c){var o=new Date;r.event.gesture_pinck_end((function(){if(new Date-o>=500)e("取消",""),r.end();else{r.tip.setPosition(n,(i.position1.x+i.position2.x)/2,(i.position1.y+i.position2.y)/2),u++;var s=r.cartesian3Towgs84(n);if(!r.polygonHasCreated){r.polygonHasCreated=!0;var a=t.create_polygon(r);r.points_ids.push(a),h=s}2==u?(r.calrect(h,s),p=s,r.end(),e(null,l.rectObj,[h,p])):e(u)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(i,n){if("3D"!==c){c="2D",u++;var o=r.cartesian3Towgs84(n,r.viewer);if(!r.polygonHasCreated){r.polygonHasCreated=!0;var s=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(s),h=o}2==u?(p=o,r.end(),e(null,l.rectObj,[h,p])):e(u)}})),this.event2D.mouse_right((function(t,i){"3D"!==c&&(r.end(),e("取消",""))})),this.event2D.mouse_move((function(e,t){if("3D"!==c&&(r.tip.setPosition(t,e.endPosition.x+r.viewer.canvas.width,e.endPosition.y),1==u)){var i=r.cartesian3Towgs84(t,r.viewer);r.calrect(h,i)}})),this.event2D.mouse_right_keyboard_ctrl((function(t,i){"3D"!==c&&r.points_ids.length>=1&&(r.remove_entity(r.points_ids.pop()),r.polygonHasCreated=!1,r.rect=[],u--,e(u))})),this.event2D.gesture_pinck_start((function(i,n){if("3D"!==c){var o=new Date;r.event2D.gesture_pinck_end((function(){if(new Date-o>=500)e("取消",""),r.end();else{r.tip.setPosition(n,(i.position1.x+i.position2.x)/2+r.viewer.canvas.width,(i.position1.y+i.position2.y)/2),u++;var s=r.cartesian3Towgs84(n);if(!r.polygonHasCreated){r.polygonHasCreated=!0;var a=t.create_polygon(r,r._sdk2D.viewer);r.points_ids.push(a),h=s}2==u?(r.calrect(h,s),p=s,r.end(),e(null,l.rectObj,[h,p])):e(u)}}))}})))}}},{key:"calrect",value:function(e,t){var i,n=[],o=[],s=[];if(n.push([e.lng,e.lat,e.alt],[t.lng,t.lat,t.alt]),2===n.length){var a=turf.lineString(n),r=turf.bbox(a);i=turf.bboxPolygon(r)}i&&(i.geometry.coordinates[0].forEach((function(t){o.push(t[0]),o.push(t[1]);var i={lng:t[0],lat:t[1],alt:e.alt};s.push(i)})),this.rect=[].concat(o),this.rectObj=[].concat(s),this.rectObj.pop())}}],[{key:"create_polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer,i=e.randomString();return t.entities.add(this.entity=new Cesium.Entity({id:i,polygon:{hierarchy:new Cesium.CallbackProperty((function(t){return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(e.rect))}),!1),material:Cesium.Color.fromCssColorString(e.color),arcType:e.rhumb?Cesium.ArcType.RHUMB:Cesium.ArcType.GEODESIC,zIndex:99999999}})),i}}])}(xn.a);function xs(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}function Ss(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}var Es=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=xs(this,t,[e,n])).points=null,i.polygonHasCreated=!1,i}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var n;Ss(t,"start",this,3)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确定,右键取消;",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var o=[];this.anchorpoints=[],this.event.mouse_left((function(t,s){if("2D"!==n&&(n="3D",s))if(3===i.anchorpoints.length?i.anchorpoints[1]=s:i.anchorpoints.push(s),o.push(i.cartesian3Towgs84(s,i.viewer)),i.points_ids.push(i.create_point(s)),3===i.points_ids.length){var a=[o[0],o[2],o[1]];e(null,a),i.end()}else e(o.length)})),this.event.mouse_move((function(e,s){if("2D"!==n&&(i.tip.setPosition(s,e.endPosition.x,e.endPosition.y),s&&0!==i.points_ids.length))if(o.length>1?i.positions=[o[0],i.cartesian3Towgs84(s,i.viewer),o[1]]:i.positions=[o[0],i.cartesian3Towgs84(s,i.viewer)],1!==i.points_ids.length||Cesium.defined(i.assemblePolygon)||(i.assemblePolygon=t.polygon(i)),i.anchorpoints.length>=2){if(1===i.points_ids.length){var a=new Array;i.positions.forEach((function(e){a.push([e.lng,e.lat])}));var r=P.PlotUtils.mid(a[0],a[1]),l=P.PlotUtils.distance(a[0],r)/.9,c=P.PlotUtils.getThirdPoint(a[0],r,P.Constants.HALF_PI,l,!0);i.positions=[i.positions[0],{lng:c[0],lat:c[1]},i.positions[1]]}i.anchorpoints[1]=s}else i.anchorpoints.push(s)})),this.event.mouse_right((function(t,o){"2D"!==n&&(e(null),i.end())})),this.event.mouse_right_keyboard_ctrl((function(t,s){"2D"!==n&&i.points_ids.length>=1&&(1===i.points_ids.length&&(i.viewer.entities.remove(i.assemblePolygon),i.assemblePolygon=void 0),i.remove_entity(i.points_ids.pop()),o.pop(),i.anchorpoints.pop(),e(o.length))})),this.event.gesture_pinck_start((function(s,a){if("2D"!==n){var r=new Date;i.event.gesture_pinck_end((function(){if(new Date-r>=500)i.end(),e(!1);else if(2===i.anchorpoints.length)i.anchorpoints.push(a),e(null,i.positions),i.end();else{if(!a||Cesium.defined(i.assemblePolygon))return;i.tip.setPosition(a,(s.position1.x+s.position2.x)/2,(s.position1.y+s.position2.y)/2),i.anchorpoints.push(a),i.assemblePolygon=t.polygon(i),o.push(i.cartesian3Towgs84(a)),i.points_ids.push(i.create_point(a)),e(o.length)}}))}})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(t,s){if("3D"!==n&&(n="2D",s))if(3===i.anchorpoints.length?i.anchorpoints[1]=s:i.anchorpoints.push(s),o.push(i.cartesian3Towgs84(s,i.viewer)),i.points_ids.push(i.create_point(s,i._sdk2D.viewer)),3===i.points_ids.length){var a=[o[0],o[2],o[1]];e(null,a),i.end()}else e(o.length)})),this.event2D.mouse_move((function(e,s){if("3D"!==n&&(i.tip.setPosition(s,e.endPosition.x+i.viewer.canvas.width,e.endPosition.y),s&&0!==i.points_ids.length))if(o.length>1?i.positions=[o[0],i.cartesian3Towgs84(s,i.viewer),o[1]]:i.positions=[o[0],i.cartesian3Towgs84(s,i.viewer)],1!==i.points_ids.length||Cesium.defined(i.assemblePolygon)||(i.assemblePolygon=t.polygon(i,i._sdk2D.viewer)),i.anchorpoints.length>=2){if(1===i.points_ids.length){var a=new Array;i.positions.forEach((function(e){a.push([e.lng,e.lat])}));var r=P.PlotUtils.mid(a[0],a[1]),l=P.PlotUtils.distance(a[0],r)/.9,c=P.PlotUtils.getThirdPoint(a[0],r,P.Constants.HALF_PI,l,!0);i.positions=[i.positions[0],{lng:c[0],lat:c[1]},i.positions[1]]}i.anchorpoints[1]=s}else i.anchorpoints.push(s)})),this.event2D.mouse_right((function(t,o){"3D"!==n&&(e(null),i.end())})),this.event2D.mouse_right_keyboard_ctrl((function(t,s){"3D"!==n&&i.points_ids.length>=1&&(1===i.points_ids.length&&(i.viewer.entities.remove(i.assemblePolygon),i.assemblePolygon=void 0),i.remove_entity(i.points_ids.pop()),o.pop(),i.anchorpoints.pop(),e(o.length))})),this.event2D.gesture_pinck_start((function(s,a){if("3D"!==n){var r=new Date;i.event2D.gesture_pinck_end((function(){if(new Date-r>=500)i.end(),e(!1);else if(2===i.anchorpoints.length)i.anchorpoints.push(a),e(null,i.positions),i.end();else{if(!a||Cesium.defined(i.assemblePolygon))return;i.tip.setPosition(a,(s.position1.x+s.position2.x)/2+i.viewer.canvas.width,(s.position1.y+s.position2.y)/2),i.anchorpoints.push(a),i.assemblePolygon=t.polygon(i,i._sdk2D.viewer),o.push(i.cartesian3Towgs84(a)),i.points_ids.push(i.create_point(a,i._sdk2D.viewer)),e(o.length)}}))}})))}}},{key:"end",value:function(){Ss(t,"end",this,3)([]),this.viewer.entities.remove(this.assemblePolygon),!this._is2D&&this._sdk2D&&this._sdk2D.viewer.entities.remove(this.assemblePolygon)}},{key:"calculateVector",value:function(e,t,i){var n,o,s,a,r,l;t||(t=Math.PI/2),i||(i=1);var c=Math.sqrt(e.x*e.x+e.y*e.y);if(0==e.y)n=o=c*i*Math.cos(t)/e.x,e.x>0?a=-(s=Math.sqrt(i*i-n*n)):e.x<0&&(s=-(a=Math.sqrt(i*i-n*n))),r={x:n,y:s},l={x:o,y:a};else{var u=-e.x/e.y,h=i*c*Math.cos(t)/e.y,p=1+u*u,d=2*u*h,m=h*h-i*i;s=u*(n=(-d-Math.sqrt(d*d-4*p*m))/(2*p))+h,a=u*(o=(-d+Math.sqrt(d*d-4*p*m))/(2*p))+h,e.y>=0?(r={x:n,y:s},l={x:o,y:a}):e.y<0&&(r={x:o,y:a},l={x:n,y:s})}return[r,l]}},{key:"createCloseCardinal",value:function(e){if(null==e||e.length<3)return e;var t=e[0];e.push(t);for(var i=e,n=[],o=.4,s=i.length-1,a=0;a<=s-1;a++){var r=void 0,l=void 0,c=void 0;a==s-1?(r=i[s-1],l=i[0],c=i[1]):(r=i[a],l=i[a+1],c=i[a+2]);var u={x:void 0,y:void 0},h={x:void 0,y:void 0},p={x:l.x-r.x,y:l.y-r.y},d={x:c.x-l.x,y:c.y-l.y},m=Math.sqrt(p.x*p.x+p.y*p.y),f=Math.sqrt(d.x*d.x+d.y*d.y),v={x:p.x/m,y:p.y/m},g={x:d.x/f,y:d.y/f},y={x:v.x+g.x,y:v.y+g.y},b=Math.sqrt(y.x*y.x+y.y*y.y),C={x:y.x/b,y:y.y/b},w=(v.x*g.x+v.y*g.y)/1;Math.abs(1-w)<.005?(u.x=l.x-g.x*m*o,u.y=l.y-g.y*m*o,h.x=l.x+v.x*f*o,h.y=l.y+v.y*f*o):(u.x=l.x-C.x*m*o,u.y=l.y-C.y*m*o,h.x=l.x+C.x*f*o,h.y=l.y+C.y*f*o),a==s-1?(n[0]=l,n[1]=h,n[3*(s-2)+2+3]=u,n[3*(s-2)+2+4]=i[s]):(n[3*a+2+0]=u,n[3*a+2+1]=l,n[3*a+2+2]=h)}return n}},{key:"calculatePointsFBZ3",value:function(e,t){t||(t=20);var i=[],n=.05;t>0&&(n=1/t);for(var o=0;o=e.length&&i.push(s)}return i}}],[{key:"polygon",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.viewer,i=e.randomString();return t.entities.add(new Cesium.Entity({name:"AssemblePolygon",id:i,polygon:{hierarchy:new Cesium.CallbackProperty((function(t){for(var i=e.computeAssemble(e.positions),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),Ps(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"start",value:function(e){var i,n,o,s,a,r,l=this,c=this;YJ.Measure.GetMeasureStatus()?e("上一次测量未结束"):((n=t,o="start",s=this,a=3,r=_n()(De()(1&a?n.prototype:n),o,s),2&a&&"function"==typeof r?function(e){return r.apply(s,e)}:r)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.tipText||"左键确认,右键取消",c.sdk),this.event=new te.a(c.sdk),this._sector_id=null,this._positions=[],this.points_ids=[],this._entities_sector=[],this._radius=0,this._startAngle=0,this._endAngle=0,this.event.mouse_left((function(t,n){if("2D"!==i&&(i="3D",l._positions.length<3?(l.points_ids.push(l.create_point(n)),l._positions.push(l.cartesian3Towgs84(n,l.viewer)),e(l._positions.length)):(l.end(),e(null,{center:l._positions[0],radius:l._radius,startAngle:l._startAngle,endAngle:l._endAngle})),2===l._positions.length)){var o=Cesium.Cartesian3.fromDegrees(l._positions[0].lng,l._positions[0].lat,l._positions[0].alt),s=n;l._radius=Cesium.Cartesian3.distance(o,s)}})),this.event.mouse_move((function(e,t){if("2D"!==i&&(l.tip.setPosition(t,e.endPosition.x,e.endPosition.y),!(l._positions.length<2)&&(2==l._positions.length&&l._positions.push(l.cartesian3Towgs84(t,l.viewer)),3==l._positions.length))){l._positions.pop(),l._positions.push(l.cartesian3Towgs84(t,l.viewer)),Cesium.defined(l._sector_id)||(l._sector_id=l.createsector(),l.points_ids.push(l._sector_id));var n=c.calculateAangle(c._positions);c._startAngle=n.angle1,c._endAngle=n.angle2}})),this.event.mouse_right((function(t,n){"2D"!==i&&(l.end(),e(null))})),this.event.mouse_right_keyboard_ctrl((function(t,n){"2D"!==i&&l._positions.length>=1&&(l.remove_entity(l.points_ids.pop()),l.remove_entity(l.points_ids.pop()),l.remove_entity(l._sector_id),l._sector_id=void 0,l._positions.pop(),l._positions.pop(),e(l._positions.length))})),!this._is2D&&this._sdk2D&&(this.event2D=new te.a(this._sdk2D),this.event2D.mouse_left((function(t,n){if("3D"!==i&&(i="2D",l._positions.length<3?(l.points_ids.push(l.create_point(n,l._sdk2D.viewer)),l._positions.push(l.cartesian3Towgs84(n,l.viewer)),e(l._positions.length)):(l.end(),e(null,{center:l._positions[0],radius:l._radius,startAngle:l._startAngle,endAngle:l._endAngle})),2===l._positions.length)){var o=Cesium.Cartesian3.fromDegrees(l._positions[0].lng,l._positions[0].lat,l._positions[0].alt),s=n;l._radius=Cesium.Cartesian3.distance(o,s)}})),this.event2D.mouse_move((function(e,t){if("3D"!==i&&(l.tip.setPosition(t,e.endPosition.x+l.viewer.canvas.width,e.endPosition.y),!(l._positions.length<2)&&(2==l._positions.length&&l._positions.push(l.cartesian3Towgs84(t,l.viewer)),3==l._positions.length))){l._positions.pop(),l._positions.push(l.cartesian3Towgs84(t,l.viewer)),Cesium.defined(l._sector_id)||(l._sector_id=l.createsector(l._sdk2D.viewer),l.points_ids.push(l._sector_id));var n=c.calculateAangle(c._positions);c._startAngle=n.angle1,c._endAngle=n.angle2}})),this.event2D.mouse_right((function(t,n){"3D"!==i&&(l.end(),e(null))})),this.event2D.mouse_right_keyboard_ctrl((function(t,n){"3D"!==i&&l._positions.length>=1&&(l.remove_entity(l.points_ids.pop()),l.remove_entity(l.points_ids.pop()),l.remove_entity(l._sector_id),l._sector_id=void 0,l._positions.pop(),l._positions.pop(),e(l._positions.length))}))))}},{key:"createsector",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.viewer,t=this,i=new Cesium.CallbackProperty((function(){var e=t.calSector(t._positions[0],t._radius,t._startAngle,t._endAngle);return new Cesium.PolygonHierarchy(e)})),n=t.randomString(),o=e.entities.add({id:n,position:Cesium.Cartesian3.fromDegrees(t._positions[0].lng,t._positions[0].lat),polygon:{hierarchy:i,show:!0,fill:!0,clampToGround:!0,material:Cesium.Color.fromCssColorString(t.color),zIndex:99999999}});return t._entities_sector.push(o),n}},{key:"cartesianToLatlng",value:function(e){var t=this.viewer.scene.globe.ellipsoid.cartesianToCartographic(e),i=Cesium.Math.toDegrees(t.latitude);return[Cesium.Math.toDegrees(t.longitude),i]}},{key:"lonLatToMercator",value:function(e){var t=e[0],i=e[1],n=20037508.34*t/180,o=Math.log(Math.tan((90+i)*Math.PI/360))/(Math.PI/180);return[n,o=20037508.34*o/180]}},{key:"WebMercator2lonLat",value:function(e){var t=e[0]/20037508.34*180,i=e[1]/20037508.34*180;return[t,180/Math.PI*(2*Math.atan(Math.exp(i*Math.PI/180))-Math.PI/2)]}},{key:"calculateAangle",value:function(e){function t(e,t){var i=Math.PI/180,n=e.y*i,o=t.y*i,s=e.x*i,a=t.x*i,r=Math.sin(a-s)*Math.cos(o),l=Math.cos(n)*Math.sin(o)-Math.sin(n)*Math.cos(o)*Math.cos(a-s),c=Math.atan2(r,l)%(2*Math.PI);return 360-(450-(180*c/Math.PI<0?360+180*c/Math.PI:180*c/Math.PI)-90)%360}var i=e[0],n=e[1],o=e[2],s={x:i.lng,y:i.lat},a={x:n.lng,y:n.lat},r={x:o.lng,y:o.lat};return{angle1:t(s,a),angle2:t(s,r)}}}])}(xn.a),Os=52.35987755982988,Ms=3.141592653589793,Ts=.006693421622965943,Ns=function(){return h()((function e(){c()(this,e)}),null,[{key:"BD09ToGCJ02",value:function(e,t){var i=+e-.0065,n=+t-.006,o=Math.sqrt(i*i+n*n)-2e-5*Math.sin(n*Os),s=Math.atan2(n,i)-3e-6*Math.cos(i*Os);return[o*Math.cos(s),o*Math.sin(s)]}},{key:"GCJ02ToBD09",value:function(e,t){t=+t,e=+e;var i=Math.sqrt(e*e+t*t)+2e-5*Math.sin(t*Os),n=Math.atan2(t,e)+3e-6*Math.cos(e*Os);return[i*Math.cos(n)+.0065,i*Math.sin(n)+.006]}},{key:"WGS84ToGCJ02",value:function(e,t){if(t=+t,e=+e,this.out_of_china(e,t))return[e,t];var i=this.delta(e,t);return[e+i[0],t+i[1]]}},{key:"GCJ02ToWGS84",value:function(e,t){if(t=+t,e=+e,this.out_of_china(e,t))return[e,t];var i=this.delta(e,t);return[2*e-(e+i[0]),2*t-(t+i[1])]}},{key:"delta",value:function(e,t){var i=this.transformLng(e-105,t-35),n=this.transformLat(e-105,t-35),o=t/180*Ms,s=Math.sin(o);s=1-Ts*s*s;var a=Math.sqrt(s);return[i=180*i/(6378245/a*Math.cos(o)*Ms),n=180*n/(6378245*(1-Ts)/(s*a)*Ms)]}},{key:"transformLng",value:function(e,t){var i=300+(e=+e)+2*(t=+t)+.1*e*e+.1*e*t+.1*Math.sqrt(Math.abs(e));return i+=2*(20*Math.sin(6*e*Ms)+20*Math.sin(2*e*Ms))/3,i+=2*(20*Math.sin(e*Ms)+40*Math.sin(e/3*Ms))/3,i+=2*(150*Math.sin(e/12*Ms)+300*Math.sin(e/30*Ms))/3}},{key:"transformLat",value:function(e,t){var i=2*(e=+e)-100+3*(t=+t)+.2*t*t+.1*e*t+.2*Math.sqrt(Math.abs(e));return i+=2*(20*Math.sin(6*e*Ms)+20*Math.sin(2*e*Ms))/3,i+=2*(20*Math.sin(t*Ms)+40*Math.sin(t/3*Ms))/3,i+=2*(160*Math.sin(t/12*Ms)+320*Math.sin(t*Ms/30))/3}},{key:"out_of_china",value:function(e,t){return t=+t,!((e=+e)>73.66&&e<135.05&&t>3.86&&t<53.55)}}])}();function Bs(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var js=function(e){function t(e,i){var n;return c()(this,t),(n=Bs(this,t,[e,i])).sdk.addIncetance(n.options.id,n),n.options.show&&Object(Z.setSplitDirection)(0,n.options.id),n}return Me()(t,e),h()(t,[{key:"setDefaultValue",value:function(){var e,i,o,s,a;(e=t,i="setDefaultValue",o=this,s=3,a=_n()(De()(1&s?e.prototype:e),i,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),this.options.host=this.options.host||Object(n.a)()}},{key:"requestResource",value:function(){var e="";return e=this.options.host.endsWith("yjearth4.0")?this.options.host+"/data/service/load-compact-service":this.options.host+"/yjearth4.0/data/service/load-compact-service",fetch(e,{method:"post",body:JSON.stringify({source_id:this.options.id}),headers:{"Content-Type":"application/json",token:Object(n.b)(),Authorization:"Bearer "+Object(n.b)()}})}}])}(vt);function As(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function Ls(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=Is(this,t,[e,i])).options.name=i.name||"未命名对象",n.Dialog=o,n._elms={},n}return Me()(t,e),h()(t,[{key:"setDefaultValue",value:function(){var e,i;Rs(t,"setDefaultValue",this,3)([]),this.options.alpha=null!==(e=this.options.alpha)&&void 0!==e?e:1,this.options.brightness=null!==(i=this.options.brightness)&&void 0!==i?i:1}},{key:"layerIndex",get:function(){return this.entity?this.entity._layerIndex:void 0}},{key:"layer_index",get:function(){return this.entity?this.entity._layerIndex:void 0}},{key:"brightness",get:function(){return this.options.brightness},set:function(e){this.options.brightness=Number(e),this.entity.brightness=Number(e)}},{key:"alpha",get:function(){return this.options.alpha},set:function(e){(e=Number(e))>1&&(e=1),e<0&&(e=0),this.entity.alpha=e,this.options.alpha=e,this._elms.alpha&&this._elms.alpha.forEach((function(t){t.value=e}))}},{key:"layerRaise",value:function(e){this.sdk.viewer.imageryLayers.raise(this.entity);for(var t=0;t0&&void 0!==r[0]&&r[0],!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=Ls({},this.options.position):this.options.positions?a=Ls({},this.options.positions[0]):this.options.center?a=Ls({},this.options.center):this.options.start?a=Ls({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),a.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(a);case 17:a.alt=e.sent;case 18:i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t}),e.next=26;break;case 25:this.sdk.viewer.flyTo(this.entity);case 26:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"amapMercatorTilingScheme",value:function(e){return new(function(e){function t(e){var i;c()(this,t),i=Is(this,t,[e]);var n=new Cesium.WebMercatorProjection;return i._projection.project=function(e,t){return t=Ns.WGS84ToGCJ02(Cesium.Math.toDegrees(e.longitude),Cesium.Math.toDegrees(e.latitude)),t=n.project(new Cesium.Cartographic(Cesium.Math.toRadians(t[0]),Cesium.Math.toRadians(t[1]))),new Cesium.Cartesian2(t.x,t.y)},i._projection.unproject=function(e,t){var i=n.unproject(e);return t=Ns.GCJ02ToWGS84(Cesium.Math.toDegrees(i.longitude),Cesium.Math.toDegrees(i.latitude)),new Cesium.Cartographic(Cesium.Math.toRadians(t[0]),Cesium.Math.toRadians(t[1]))},i}return Me()(t,e),h()(t)}(Cesium.WebMercatorTilingScheme))(e)}},{key:"edit",value:(i=_()(S.a.mark((function e(){var t,i,n,o,s=this,a=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.length>0&&void 0!==a[0]&&a[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),e.next=5,new Be(this.sdk,this.options,{title:"底图属性",left:"180px",top:"100px",confirmCallBack:function(e){s.name=s.name.trim(),s.name||(s.name="未命名对象"),s.originalOptions=s.deepCopyObj(s.options),s._DialogObject.close(),s.Dialog.confirmCallBack&&s.Dialog.confirmCallBack(s.originalOptions),Object(Z.syncSplitData)(s.sdk,s.options.id);var t=Object(J.get2DView)();if(t&&t!=s.sdk)for(var i=0;i\n
          \n
          \n
          \n 名称:\n \n
          \n
          \n
          \n
          \n 透明度:\n \n
          \n
          \n
          \n ',t.innerHTML=i,n=t.getElementsByClassName("name")[0],o=t.getElementsByClassName("alpha")[0],n.value=this.name,o.value=this.alpha,n.addEventListener("input",(function(){s.name=n.value})),o.addEventListener("input",(function(){s.alpha=o.value})),this._DialogObject.contentAppChild(t),this._elms.name=[n],this._elms.alpha=[o];case 19:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"reset",value:function(){(this.entity||this._DialogObject)&&(this.options=this.deepCopyObj(this.originalOptions),this.name=this.options.name,this.alpha=this.options.alpha,this.brightness=this.options.brightness)}},{key:"flicker",value:function(){}}]);var i,n}(js);function Fs(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var Hs=function(e){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),Fs(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"type",get:function(){return"layer"}},{key:"createArcGis",value:(i=_()(S.a.mark((function e(t){var i,n,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(Number(Cesium.VERSION.split(".")[1])>=107)){e.next=6;break}return e.next=3,Cesium.ArcGisMapServerImageryProvider.fromUrl(t);case 3:i=e.sent,e.next=7;break;case 6:i=new Cesium.ArcGisMapServerImageryProvider({url:t});case 7:for(this.options.hasOwnProperty("layerIndex")?this.entity=this.sdk.viewer.imageryLayers.addImageryProvider(i,this.options.layerIndex):this.entity=this.sdk.viewer.imageryLayers.addImageryProvider(i),this.entity._id=this.options.id,n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),Us(this,t,[e,i])}return Me()(t,e),h()(t,[{key:"type",get:function(){return"layer"}},{key:"createGD",value:function(e){var t=new Cesium.UrlTemplateImageryProvider({url:e,minimumLevel:3,maximumLevel:18,tilingScheme:this.amapMercatorTilingScheme()});this.options.hasOwnProperty("layerIndex")?this.entity=this.sdk.viewer.imageryLayers.addImageryProvider(t,this.options.layerIndex):this.entity=this.sdk.viewer.imageryLayers.addImageryProvider(t),this.entity._id=this.options.id;for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Us(this,t,[e,n])).createGD("https://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8"),i}return Me()(t,e),h()(t)}(Ys),qs=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Us(this,t,[e,n])).createGD("https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"),i}return Me()(t,e),h()(t)}(Ys),Xs=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Us(this,t,[e,n])).createGD("https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}"),i}return Me()(t,e),h()(t)}(Ys);function Zs(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Ks(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Ks(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Ks(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i=107)){e.next=19;break}return e.next=14,Cesium.Cesium3DTileset.fromUrl(n,r);case 14:l=e.sent,this.entity=l,this.entity.imageBasedLighting.luminanceAtZenith=.1,e.next=25;break;case 19:return r.url=n,l=new Cesium.Cesium3DTileset(r),e.next=23,l.readyPromise;case 23:this.entity=e.sent,this.entity.imageBasedLighting.luminanceAtZenith=.1;case 25:return e.next=27,this.loadSceneTree(n);case 27:if(c=function(e){if(e._contents)for(var t=0;t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function la(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=ca(this,t,[e,n])).picking=!1,i.on(),i.Dialog=o,i._elms={},i._EventBinding=new Ye,i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"tileset"}},{key:"on",value:function(){return this.loadTileset(this.options)}},{key:"name",get:function(){return this.newData.name},set:function(e){this.newData.name=e,this._elms.name&&this._elms.name.forEach((function(t){t.value=e}))}},{key:"height",get:function(){return this.newData.height},set:function(e){this.newData.height=e,this.options.position.alt=e,this._elms.height&&this._elms.height.forEach((function(t){t.value=e})),this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch)}},{key:"accuracy",get:function(){return this.newData.accuracy},set:function(e){var t=this;this.newData.accuracy=Number(e.toFixed(1)),this.newData.accuracy<.1&&(this.newData.accuracy=.1),this.entity&&(this.entity.maximumScreenSpaceError=32/this.newData.accuracy),this._elms.accuracy&&this._elms.accuracy.forEach((function(e){e.value=t.newData.accuracy}))}},{key:"lng",get:function(){return this.newData.lng},set:function(e){this.newData.lng=e,this.options.position.lng=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch)}},{key:"lat",get:function(){return this.newData.lat},set:function(e){this.newData.lat=e,this.options.position.lat=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch)}},{key:"roll",get:function(){return this.newData.roll},set:function(e){this.newData.roll=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale)}},{key:"heading",get:function(){return this.newData.heading},set:function(e){this.newData.heading=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale)}},{key:"pitch",get:function(){return this.newData.pitch},set:function(e){this.newData.pitch=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale)}},{key:"transparency",get:function(){return this.newData.transparency},set:function(e){if(this.newData){this.newData.transparency=Number(e),this._elms.transparency&&this._elms.transparency.forEach((function(t){t.value=e}));var t=this.newData.transparency;this.entity.style=new Cesium.Cesium3DTileStyle({color:{conditions:[["Boolean(${SIZE})","${COLOR} * color('rgba(255,255,255)', "+t+")"],["true","color('rgba(255,255,255,"+t+")')"]]},show:!0})}}},{key:"edit",value:(i=_()(S.a.mark((function e(){var t,i,n=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.length>0&&void 0!==n[0]&&n[0],e.abrupt("return");case 12:this._DialogObject=e.sent,document.getElementsByTagName("head")[0].appendChild(this._element_style),(t=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n \n
          \n
          \n
          \n 高度\n
          \n \n m\n \n
          \n
          \n
          \n 精度\n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n 透视\n \n
          \n
          \n
          \n ',this._DialogObject.contentAppChild(t),i=t.getElementsByTagName("*"),this._EventBinding.on(this,i),this._elms=this._EventBinding.element,e.next=22;break;case 22:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"updateModel",value:function(e,t,i){var n=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1;if(!this.tileset.root.transform)return window.ELEMENT&&(window.ELEMENT.Message.closeAll(),window.ELEMENT.Message({message:"该模型不支持移动和旋转!",type:"warning",duration:1500})),void console.warn("该模型不支持移动和旋转!");if(!(!e&&0!==e||!t&&0!==t||!i&&0!==i)){var c=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(o)),u=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(a)),h=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(r)),p=Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e,t,i)),d=Cesium.Matrix4.fromRotationTranslation(c),m=Cesium.Matrix4.fromRotationTranslation(u),f=Cesium.Matrix4.fromRotationTranslation(h),v=new Cesium.Matrix4;Cesium.Matrix4.multiply(p,d,v),Cesium.Matrix4.multiply(v,m,v),Cesium.Matrix4.multiply(v,f,v);var g=Cesium.Matrix4.fromUniformScale(l);Cesium.Matrix4.multiply(v,g,this.entity._root.transform),this.editObj.activeAxis||(this.editObj.position={lng:e,lat:t,alt:i}),this.editObj.activeCircle||(this.editObj.rotate={x:o,y:a,z:r}),this.editObj&&this.editObj.update(),clearTimeout(this._updateModelTimeout),this._updateModelTimeout=setTimeout((function(){clearTimeout(n._updateModelTimeout);var e,t=n.cartesian3Towgs84(n.entity.boundingSphere.center,n.sdk.viewer),i=turf.circle([t.lng,t.lat],n.entity.boundingSphere.radius/1e3,{steps:360,units:"kilometers"}),o=ra(n.sdk.entityMap);try{for(o.s();!(e=o.n()).done;){var a=s()(e.value,2),r=(a[0],a[1]);if("BillboardObject"===r.type&&3==r.heightMode){var l=turf.point([r.lng,r.lat]);turf.booleanPointInPolygon(l,i)&&r.updateHeight()}else r.label&&(r.label.show=r.label.show)}}catch(e){o.e(e)}finally{o.f()}}),300)}}},{key:"reset",value:function(){this.editObj.destroy(),this.entity&&(this.transparency=this.oldData.transparency,this.name=this.oldData.name,this.height=this.oldData.height,this.lng=this.oldData.lng,this.lat=this.oldData.lat,this.roll=this.oldData.roll,this.heading=this.oldData.heading,this.pitch=this.oldData.pitch,this.scale=this.oldData.scale,this.accuracy=this.oldData.accuracy,this.entity.style=new Cesium.Cesium3DTileStyle({color:{conditions:[["Boolean(${SIZE})","${COLOR} * color('rgba(255,255,255)', "+this.transparency+")"],["true","color('rgba(255,255,255,"+this.transparency+")')"]]},show:!0}))}}]);var i}(aa);function ha(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return pa(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?pa(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function pa(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),va(i=fa(this,t,[e,n]),Ca,void 0),i.picking=!1,i.features=n.features||[],i.exportStateArray=[],i.Dialog=o,i._elms={},i._EventBinding=new Ye,i.Dialog.exportState=function(e){i.exportState(e)},i.Dialog.exportProperty=function(e){i.exportProperty(i.exportStateArray)},i.features=new Map,i.on(),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"bim"}},{key:"name",get:function(){return this.newData.name},set:function(e){this.newData.name=e,this._elms.name&&this._elms.name.forEach((function(t){t.value=e}))}},{key:"lng",get:function(){return this.newData.lng},set:function(e){this.newData.lng=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.newData.lat},set:function(e){this.newData.lat=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"height",get:function(){return this.newData.height},set:function(e){this.newData.height=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.height&&this._elms.height.forEach((function(t){t.value=e}))}},{key:"roll",get:function(){return this.newData.roll},set:function(e){this.newData.roll=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.roll&&this._elms.roll.forEach((function(t){t.value=e}))}},{key:"heading",get:function(){return this.newData.heading},set:function(e){this.newData.heading=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.heading&&this._elms.heading.forEach((function(t){t.value=e}))}},{key:"pitch",get:function(){return this.newData.pitch},set:function(e){this.newData.pitch=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.pitch&&this._elms.pitch.forEach((function(t){t.value=e}))}},{key:"scale",get:function(){return this.newData.scale},set:function(e){this.newData.scale=e,this.updateModel(this.newData.lng,this.newData.lat,this.newData.height,this.newData.roll,this.newData.heading,this.newData.pitch,this.newData.scale),this._elms.scale&&this._elms.scale.forEach((function(t){t.value=e}))}},{key:"loadSceneTree",value:(a=_()(S.a.mark((function e(t){var i,n=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(i=t.split("/"))[i.length-1]="scenetree.json",e.next=4,Cesium.Resource.fetchJson({url:i.join("/")}).then((function(e){n.scenetree=e;var t=function(e){e.forEach((function(e){n.features.has(e.id)?n.features.get(e.id).sphere=e.sphere:n.features.set(e.id,{sphere:e.sphere}),e.children&&t(e.children)}))};t(e.scenes[0].children)}));case 4:case"end":return e.stop()}}),e)}))),function(e){return a.apply(this,arguments)})},{key:"edit",value:(o=_()(S.a.mark((function e(t){var i,n,o=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=16;break}return e.next=6,new Be(this.sdk,this.newData,{title:"BIM模型属性",left:"180px",top:"100px",resetCallBack:function(){o.reset(),o.Dialog.resetCallBack&&o.Dialog.resetCallBack()},confirmCallBack:function(e){o.name=o.name.trim(),o.name||(o.name="未命名对象"),o.oldData.name=o.newData.name,o.oldData.height=o.newData.height,o.oldData.lng=o.newData.lng,o.oldData.lat=o.newData.lat,o.oldData.scale=o.newData.scale,o.oldData.roll=o.newData.roll,o.oldData.heading=o.newData.heading,o.oldData.pitch=o.newData.pitch,o._DialogObject.close();var t=new Map;o.features.forEach((function(e,i){var n=ma({},e);delete n.features,t.set(i,n)})),o.Dialog.confirmCallBack&&o.Dialog.confirmCallBack(ma(ma({},o.oldData),{},{features:t,type:o.type})),Object(Z.syncSplitData)(o.sdk,o.oldData.id)},removeCallBack:function(){o.Dialog.removeCallBack&&o.Dialog.removeCallBack()},closeCallBack:function(){o.reset(),o.editObj.destroy(),o.Dialog.closeCallBack&&o.Dialog.closeCallBack()},showCallBack:function(e){o.newData.show=e,o.entity&&(o.entity.show=e),o.Dialog.showCallBack&&o.Dialog.showCallBack()},rotateCallBack:function(){o.rotationEditing?o.rotationEditing=!1:o.rotationEditing=!0},translationalCallBack:function(){o.positionEditing?o.positionEditing=!1:o.positionEditing=!0}});case 6:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" tileset-bim",(i=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 经度\n \n
          \n
          \n x轴\n \n
          \n
          \n
          \n
          \n 纬度\n \n
          \n
          \n y轴\n \n
          \n
          \n
          \n
          \n 高度\n
          \n \n m\n \n
          \n
          \n
          \n z轴\n \n
          \n
          \n
          \n
          \n 大小\n \n
          \n \n \n
          \n \n
          \n
          \n
          \n \n
          \n
          \n

          BIM属性导出选项

          \n
          \n
          \n
          \n
          \n
          \n \n 修建中\n
          \n
          \n \n 未完成\n
          \n
          \n \n 已完成\n
          \n
          \n
          \n \n
          \n
          \n \n ',this._DialogObject.contentAppChild(i),n=i.getElementsByTagName("*"),this._EventBinding.on(this,n),this._elms=this._EventBinding.element,e.next=17;break;case 16:this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"featureEdit",value:(n=_()(S.a.mark((function e(t,i){var n,o,s,a,r,l,c,u,h,p,d=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this,this._element_style=null,this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=46;break}o=function(e){var t='
          \n
          \n \n \n \n \n
          \n
          '),i=document.createElement("div");i.innerHTML=t;var s=i.getElementsByClassName("property-item")[0],r=s.querySelector("input[name='key']"),l=s.querySelector("input[name='value']"),u=s.getElementsByClassName("add")[0],h=s.getElementsByClassName("delete")[0];r.addEventListener("input",(function(t){e.key=t.target.value})),l.addEventListener("input",(function(t){e.value=t.target.value})),u.addEventListener("click",(function(){var e={id:n.randomString(),key:"点击此处可编辑",value:""};a.descriptions.push(e),o(e)})),h.addEventListener("click",(function(t){for(var i=0;i.content {\n width: 440px;\n }\n .YJ-custom-base-dialog>.content .row .label {\n flex: 0 0 110px;\n }\n .col:first-child {\n margin-right: 10px;\n }\n .col:last-child {\n margin-left: 10px;\n }\n .YJ-custom-base-dialog>.content .divide {\n position: relative;\n display: flex;\n align-items: center;\n margin: 20px 0;\n }\n .YJ-custom-base-dialog>.content .divide .line{\n height: 1px;\n background: #ddd;\n flex: 1;\n }\n .YJ-custom-base-dialog>.content .divide p{\n margin: 0 10px;\n }\n .YJ-custom-base-dialog>.content .property .property-item .btn{\n font-size: 24px;\n line-height: 20px;\n padding: 2px 0;\n }\n .YJ-custom-base-dialog>.content .property .property-item .input_lable {\n flex: 0 0 115px;\n border: none;\n margin-right: 15px;\n text-align: right;\n }\n .YJ-custom-base-dialog>.content .property .property-item:first-child .delete{\n display: none\n }\n .YJ-custom-base-dialog>.content .property .property-item .add{\n display: none;\n }\n .YJ-custom-base-dialog>.content .property .property-item:last-child .add{\n display: inline-block;\n }\n",e.next=24,new Te.a(this.sdk.viewer._container,{title:this.oldData.name+"-----设置状态",left:"calc(50% - 200px)",top:"calc(50% - 200px)",closeCallBack:function(){d.Dialog.closeCallBack&&d.Dialog.closeCallBack()}});case 24:return this._DialogObject=e.sent,e.next=27,this._DialogObject.init();case 27:for(document.getElementsByTagName("head")[0].appendChild(this._element_style),(r=document.createElement("div")).innerHTML='\n
          \n
          \n 构件名称\n \n
          \n
          \n
          \n
          \n 选择状态\n \n
          \n
          \n
          \n
          \n

          自定义属性

          \n
          \n
          \n
          \n
          \n ',r.querySelector("input[name='name']").value=s,(l=r.querySelector("select[name='state-select']")).value=a.state,l.addEventListener("change",(function(e){switch(a.state=e.target.value,a.state){case"0":a.stateCH="";break;case"1":a.stateCH="已完成";break;case"2":a.stateCH="未完成";break;case"3":a.stateCH="修建中"}})),c=r.getElementsByClassName("property")[0],u=0;u3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1;if(!this.tileset.root.transform)return window.ELEMENT&&(window.ELEMENT.Message.closeAll(),window.ELEMENT.Message({message:"该模型不支持移动和旋转!",type:"warning",duration:1500})),void console.warn("该模型不支持移动和旋转!");if(!(!e&&0!==e||!t&&0!==t||!i&&0!==i)){var c=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(o)),u=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(a)),h=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(r)),p=Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e,t,i)),d=Cesium.Matrix4.fromRotationTranslation(c),m=Cesium.Matrix4.fromRotationTranslation(u),f=Cesium.Matrix4.fromRotationTranslation(h),v=new Cesium.Matrix4;Cesium.Matrix4.multiply(p,d,v),Cesium.Matrix4.multiply(v,m,v),Cesium.Matrix4.multiply(v,f,v);var g=Cesium.Matrix4.fromUniformScale(l);Cesium.Matrix4.multiply(v,g,this.entity._root.transform),this.editObj.activeAxis||(this.editObj.position={lng:e,lat:t,alt:i}),this.editObj.activeCircle||(this.editObj.rotate={x:o,y:a,z:r}),this.editObj&&this.editObj.update(),clearTimeout(ya(Ca,this)),ga(Ca,this,setTimeout((function(){clearTimeout(ya(Ca,n));var e,t=n.cartesian3Towgs84(n.entity.boundingSphere.center,n.sdk.viewer),i=turf.circle([t.lng,t.lat],n.entity.boundingSphere.radius/1e3,{steps:360,units:"kilometers"}),o=ha(n.sdk.entityMap);try{for(o.s();!(e=o.n()).done;){var a=s()(e.value,2),r=(a[0],a[1]);if("BillboardObject"===r.type&&3==r.heightMode){var l=turf.point([r.lng,r.lat]);turf.booleanPointInPolygon(l,i)&&r.updateHeight()}else r.label&&(r.label.show=r.label.show)}}catch(e){o.e(e)}finally{o.f()}}),300))}}},{key:"getScenetree",value:function(){return this.scenetree}},{key:"featureColor",value:function(e,t){if(this.features.has(e)){var i=this.features.get(e).features;for(var n in i)i[n].content._model&&(i[n].color=Cesium.Color.fromCssColorString(t)),i[n].customColor=Cesium.Color.fromCssColorString(t);this.features.get(e).customColor=Cesium.Color.fromCssColorString(t)}}},{key:"getFeatureColor",value:function(e){if(this.features.has(e)){if(this.features.get(e).customColor)return this.features.get(e).customColor;var t=this.features.get(e).features;for(var i in t)if(t[i].content._model)return t[i].customColor||t[i].color}}},{key:"featureShow",value:function(e,t){if(this.features.has(e)){var i=this.features.get(e).features;for(var n in i)i[n].content._model&&(i[n].show=t),i[n].customShow=t;this.features.get(e).customShow=t}}},{key:"featureFlyto",value:(i=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.features.has(t)?(i=this.features.get(t).sphere,n=new Cesium.Cartesian3(i[0],i[1],i[2]),o=this.entity._root.originalTransform,o=Cesium.Matrix4.inverse(o,new Cesium.Matrix4),s=this.entity._root.transform,a=Cesium.Matrix4.multiply(s,o,new Cesium.Matrix4),r=Cesium.Matrix4.multiplyByPoint(a,n,new Cesium.Cartesian3),l=this.cartesian3Towgs84(r,this.sdk.viewer),c=Cesium.Cartesian3.fromDegrees(l.lng,l.lat,l.alt+i[3]),Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.sdk.viewer.camera.flyTo({destination:c}),this.features.forEach((function(e,i){if(i===t){var n=u.getFeatureColor(t);if(u.features.has(t)&&n){var o=u.features.get(t).features;for(var s in o)o[s].content._model&&(o[s].color=n),o[s].customAlpha=1;u.features.get(t).customAlpha=1}}else{var a=u.getFeatureColor(i);if(u.features.has(i)&&a){var r=u.features.get(i).features;for(var l in r)r[l].content._model&&(r[l].color=Cesium.Color.fromCssColorString("rgba(".concat(Cesium.Color.floatToByte(a.red),",").concat(Cesium.Color.floatToByte(a.green),",").concat(Cesium.Color.floatToByte(a.blue),",").concat(.2*a.alpha,")"))),r[l].customAlpha=.2*a.alpha;u.features.get(i).customAlpha=.2*a.alpha}}}))):this.features.forEach((function(e,t){var i=u.features.get(t).features,n=u.getFeatureColor(t);if(n){for(var o in i)i[o].content._model&&(i[o].color=n),i[o].customAlpha=1;u.features.get(t).customAlpha=.2*n.alpha}}));case 1:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"exportProperty",value:function(e){if(0!==this.exportStateArray.length){for(var t,i=["name","","","","","","","","","","","","stateCH","descriptions"],n='{rows}
          ',o=function(e,t){return e.replace(/{(\w+)}/g,(function(e,i){return t[i]}))},s="",a="",r="",l=0;l构件名称体积墩全高H墩身高h底部高程承台宽承台长承台高桩径桩长结构材质完成情况自定义属性'),r+="",i){if(Array.isArray(this.features[l][i[u]])){var h="";for(var p in this.features[l][i[u]])h+="".concat(this.features[l][i[u]][p].key+":"+this.features[l][i[u]][p].value," ");s={nameType:"String",data:h}}else s={nameType:"String",data:this.features[l][i[u]]||"0"};r+=o('{data}',s)}r+="",l>0&&l/6e4%1==0&&(a+=o(n,s={rows:r,nameWS:"Sheet"+l}),r="",r+='构件名称体积墩全高H墩身高h底部高程承台宽承台长承台高桩径桩长结构材质完成情况自定义属性')}a+=o(n,s={rows:r,nameWS:"Sheet"}),r="",t=o('Axel Richter{created}{worksheets}',s={created:(new Date).getTime(),worksheets:a});var d,m=document.createElement("A");m.href="data:application/vnd.ms-excel;base64,"+(d=t,window.btoa(unescape(encodeURIComponent(d)))),m.download=this.oldData.name+"--构件属性.xls",m.target="_blank",document.body.appendChild(m),m.click(),document.body.removeChild(m)}else window.ELEMENT&&window.ELEMENT.Message({message:"未选择属性导出选项!",type:"warning",duration:1500})}},{key:"exportState",value:function(e){var t=e.target.getElementsByTagName("input")[0];if(t.checked=!t.checked,t.checked)this.exportStateArray.push(t.value),this.exportStateArray=Array.from(new Set(this.exportStateArray));else for(var i=0;i\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 px\n \n
          \n
          \n
          \n
          \n
          \n 高度\n
          \n \n m\n \n
          \n
          \n
          \n 固定大小\n \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n

          旋转

          \n
          \n
          \n
          \n x 轴\n \n
          \n \n °\n \n
          \n
          \n
          \n
          \n
          \n y 轴\n \n
          \n \n °\n \n
          \n
          \n
          \n
          \n
          \n z 轴\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 m\n \n
          \n
          \n
          \n\n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function _a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function xa(e){for(var t=1;t=0;j--){var A=B[j];if(A&&A.primitive&&A.id)switch(A.primitive._name){case"model_edit_xAxis":case"model_edit_yAxis":case"model_edit_zAxis":return void(A.primitive.appearance=new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:Cesium.Color.YELLOW}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}))}}}}(e)})),this.MapEvent.mouse_left_down((function(i){var n=a.scene.cartesianToCanvasCoordinates(e.origin);g.x=i.position.x-Math.floor(n.x),g.y=i.position.y-Math.floor(n.y);for(var o=a.scene.drillPick(i.position,10),s=o.length-1;s>=0;s--){var r=o[s];if(r&&r.primitive&&r.primitive._name)if(t.activeAxis)t.activeAxis=null,t.activeModelParam=null,t.controllerCallBack;else switch(r.primitive._name){case"model_edit_xAxis":case"model_edit_yAxis":case"model_edit_zAxis":return a.scene.screenSpaceCameraController.enableRotate=!1,t.activeAxis=r.primitive,t.activeModelParam=t.initParam(),void(r.primitive.appearance=new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:Cesium.Color.YELLOW}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}))}}})),this.MapEvent.mouse_left_up((function(e){a.scene.screenSpaceCameraController.enableRotate=!0;for(var i=0;i360&&(o._params.rx=1),o._params.rx<0&&(o._params.rx=360);Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(o._params.rx));o._params.ry-=r,o._params.ry>360&&(o._params.ry=1),o._params.ry<0&&(o._params.ry=360);Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(o._params.ry));o._params.rz-=l,o._params.rz>360&&(o._params.rz=1),o._params.rz<0&&(o._params.rz=360),o.updateModel(o._params.tx,o._params.ty,o._params.tz,o._params.rx,o._params.ry,o._params.rz)}else{var h=Date.now();if(h-_<100)return clearTimeout(k),void(k=setTimeout((function(){e(t)}),100));clearTimeout(k),_=h;for(var p=o.coordCircles,d=0;d3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;this._params.tx=e=parseFloat(parseFloat(e).toFixed(8)),this._params.ty=t=parseFloat(parseFloat(t).toFixed(8)),this._params.tz=i=parseFloat(parseFloat(i).toFixed(2)),this._params.rx=n=parseFloat(n),this._params.ry=o=parseFloat(o),this._params.rz=s=parseFloat(s),this.model.position=new Cesium.Cartesian3.fromDegrees(e,t,i),this.model.rotate={x:n,y:o,z:s};var a=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(n)),r=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(o)),l=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(s)),c=Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e,t,i)),u=Cesium.Matrix4.fromRotationTranslation(a),h=Cesium.Matrix4.fromRotationTranslation(r),p=Cesium.Matrix4.fromRotationTranslation(l),d=new Cesium.Matrix4;Cesium.Matrix4.multiply(c,u,d),Cesium.Matrix4.multiply(d,h,d),Cesium.Matrix4.multiply(d,p,this.model.modelMatrix),this.transformCallBack}},{key:"transformCallBack",get:function(){this._transformCallBack&&this._transformCallBack(this._params)},set:function(e){this._transformCallBack=e}},{key:"createAxisArrow",value:function(e,t,i,n){var o=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({id:e,geometry:new Cesium.PolylineGeometry({positions:t,width:20}),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(n)}}),releaseGeometryInstances:!1,appearance:new Cesium.PolylineMaterialAppearance({material:Cesium.Material.fromType(Cesium.Material.PolylineArrowType,{color:n}),translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}),modelMatrix:i});return o._name=e,this.coordArrows.push(o),o}},{key:"createAxisSphere",value:function(e,t,i,n,o){var s=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({id:e,geometry:new Cesium.PolylineGeometry({positions:t,width:5}),attributes:{color:Cesium.ColorGeometryInstanceAttribute.fromColor(n)}}),releaseGeometryInstances:!1,appearance:new Cesium.PolylineColorAppearance({translucent:!0,renderState:{depthTest:{enabled:!1},depthMask:!1,depthFunction:Cesium.DepthFunction.ALWAYS}}),modelMatrix:i});return s._radius=o,s._name=e,this.coordCircles.push(s),s}},{key:"removeCoordArrows",value:function(){for(var e=0;e=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Oa(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),i=Na(this,t,[e,n,o={}]),n.position?n.position.lng||0===n.position.lng?n.position.lat||0===n.position.lat?(i._timeoutEventObject=null,i.options.earth&&delete i.options.earth,i.picking=!0,i.options.name=n.name||"未命名对象",i.options.color=n.color||"#ffffff","number"==typeof n.scale?(i.options.scale={},i.options.scale.x=n.scale,i.options.scale.y=n.scale,i.options.scale.z=n.scale):(i.options.scale=n.scale||{},i.options.scale.x=i.options.scale.x||0===i.options.scale.x?i.options.scale.x:1,i.options.scale.y=i.options.scale.y||0===i.options.scale.y?i.options.scale.y:1,i.options.scale.z=i.options.scale.z||0===i.options.scale.z?i.options.scale.z:1),i.options.url=n.url,i.options.maximumScale=n.maximumScale||0===n.maximumScale?n.maximumScale:100,i.options.minimumPixelSize=n.minimumPixelSize||0===n.minimumPixelSize?n.minimumPixelSize:60,i.options.position=n.position=n.position||{},i.options.position={lng:n.position.lng,lat:n.position.lat,alt:n.position.alt},i.options.scaleByDistance=!n.scaleByDistance&&!1!==n.scaleByDistance||n.scaleByDistance,i.options.rotate=n.rotate=n.rotate||{},i.options.rotate.x=n.rotate.x||0,i.options.rotate.y=n.rotate.y||0,i.options.rotate.z=n.rotate.z||0,n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.vr=i.options.attribute.vr||{},i.options.attribute.vr.content=i.options.attribute.vr.content||[],i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.attribute.camera=i.options.attribute.camera||{},i.options.attribute.camera=i.options.attribute.camera.content||[],i.options.attribute.ISC=i.options.attribute.ISC||{},i.options.attribute.ISC.content=i.options.attribute.ISC.content||[],i.options.attribute.goods=i.options.attribute.goods||{},i.options.attribute.goods.content=i.options.attribute.goods.content||[],i.options.attributeType=n.attributeType||"richText",i._elms={},i.entity={id:i.options.id},i.positionCallBack=null,i.rotationCallback=null,i.onClickCallback=null,i._DialogObject=null,i.Dialog=o,i._EventBinding=new Ye,i.on(),i):(console.warn("lat is required!"),Ee()(i)):(console.warn("lng is required!"),Ee()(i)):(console.warn("position is required!"),Ee()(i))}return Me()(t,e),h()(t,[{key:"type",get:function(){return"glb"}},{key:"loadModel",value:(r=_()(S.a.mark((function e(t){var i,n,o,s=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Object(J.syncData)(this.sdk,this.options.id),this.sdk&&this.sdk.viewer&&this.sdk.viewer.scene){e.next=3;break}return e.abrupt("return");case 3:if(t=this.replaceHost(t,this.options.host),this.originalOptions=this.deepCopyObj(this.options),i={id:this.options.id,url:t,show:this.options.show,maximumScale:this.options.scaleByDistance?void 0:this.options.maximumScale,minimumPixelSize:this.options.scaleByDistance?void 0:this.options.minimumPixelSize},!(Number(Cesium.VERSION.split(".")[1])>=107)){e.next=13;break}return e.next=10,Cesium.Model.fromGltfAsync(i);case 10:this.entity=e.sent,e.next=16;break;case 13:return e.next=15,Cesium.Model.fromGltf(i);case 15:this.entity=e.sent;case 16:return this.entity.imageBasedLighting.luminanceAtZenith=.6,this.entity.color=Cesium.Color.fromCssColorString(this.options.color),e.next=20,this.sdk.viewer.scene.primitives.add(this.entity);case 20:n=Cesium.Cartographic.fromDegrees(this.options.position.lng,this.options.position.lat,this.options.position.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n),this.entity.position=o,this.entity.rotate=Ta({},this.options.rotate),this.entity.customScale=this.options.scale,this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(o),Number(Cesium.VERSION.split(".")[1])>=107?(this.entity.readyEvent.addEventListener((function(){s.entity.originalBoundingSphereRadius=s.entity.boundingSphere.radius,s.editObj=new Sa(s.sdk,s.entity),s.editObj.transformCallBack=s.rotationEditingCallBack,s.updateModel(s.options.position.lng,s.options.position.lat,s.options.position.alt,s.options.rotate.x,s.options.rotate.y,s.options.rotate.z,s.options.scale),s.label||(s.label=new _t(s.sdk,{id:s.options.id,show:!!s.options.show&&s.options.label.show,position:[s.options.position.lng,s.options.position.lat,s.options.position.alt],text:s.options.name,fontSize:s.options.label.fontSize,fontFamily:s.options.label.fontFamily?s.options.label.fontFamily:0,color:s.options.label.color,pixelOffset:s.options.label.pixelOffset,backgroundColor:s.options.label.backgroundColor,lineColor:s.options.label.lineColor,lineWidth:s.options.label.lineWidth,scaleByDistance:s.options.label.scaleByDistance,near:s.options.label.near,far:s.options.label.far},s.entity)),s.entity.isMove=!0,clearTimeout(s._timeoutEventObject),s._timeoutEventObject=setTimeout((function(){s.entity&&(s.entity.isMove=!1)}),500)})),this.activeAnimate=this.options.activeAnimate,this.modelAnimations=this.entity.loader.components.animations):this.entity.readyPromise.then((function(e){s.entity.originalBoundingSphereRadius=s.entity.boundingSphere.radius,s.editObj=new Sa(s.sdk,s.entity),s.editObj.transformCallBack=s.rotationEditingCallBack,s.updateModel(s.options.position.lng,s.options.position.lat,s.options.position.alt,s.options.rotate.x,s.options.rotate.y,s.options.rotate.z,s.options.scale),s.label||(s.label=new _t(s.sdk,{id:s.options.id,show:!!s.options.show&&s.options.label.show,position:[s.options.position.lng,s.options.position.lat,s.options.position.alt],text:s.options.name,fontSize:s.options.label.fontSize,fontFamily:s.options.label.fontFamily?s.options.label.fontFamily:0,color:s.options.label.color,pixelOffset:s.options.label.pixelOffset,backgroundColor:s.options.label.backgroundColor,lineColor:s.options.label.lineColor,lineWidth:s.options.label.lineWidth,scaleByDistance:s.options.label.scaleByDistance,near:s.options.label.near,far:s.options.label.far,ground:!1},s.entity)),s.entity.isMove=!0,clearTimeout(s._timeoutEventObject),s._timeoutEventObject=setTimeout((function(){s.entity&&(s.entity.isMove=!1)}),500),s.activeAnimate=s.options.activeAnimate,s.modelAnimations=s.entity.loader.components.animations})),Object(Z.syncSplitData)(this.sdk,this.options.id);case 28:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"getModelAnimations",value:(a=_()(S.a.mark((function e(){var t=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,i){Number(Cesium.VERSION.split(".")[1])>=107?t.entity.readyEvent.addEventListener((function(){t.modelAnimations=t.entity.loader.components.animations,e(t.modelAnimations)})):t.entity.readyPromise.then((function(i){t.modelAnimations=t.entity.loader.components.animations,e(t.modelAnimations)}))})));case 1:case"end":return e.stop()}}),e)}))),function(){return a.apply(this,arguments)})},{key:"remove",value:function(){Ba(t,"remove",this,3)([]),this.label&&this.label.remove(),this.positionEditing=!1,this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&(this._DialogObject.close(),this._DialogObject=null)}},{key:"flyTo",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=22;break}if(t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=Ta({},this.options.position):this.options.positions?a=Ta({},this.options.positions[0]):this.options.center?a=Ta({},this.options.center):this.options.start?a=Ta({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),a.hasOwnProperty("alt")){e.next=15;break}return e.next=14,this.getClampToHeight(a);case 14:a.alt=e.sent;case 15:i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t}),e.next=23;break;case 22:Number(Cesium.VERSION.split(".")[1])>=107?this.entity.ready&&(r=new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(this.options.position.lng,this.options.position.lat,this.options.position.alt),this.entity.originalBoundingSphereRadius*this.options.scale.z*2),this.sdk.viewer.camera.flyToBoundingSphere(r)):this.entity.readyPromise.then((function(){var e=new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(l.options.position.lng,l.options.position.lat,l.options.position.alt),(l.entity.originalBoundingSphereRadius||l.entity.boundingSphere.radius)*l.options.scale.z*2);l.sdk.viewer.camera.flyToBoundingSphere(e)}));case 23:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"on",value:function(){return this.add()}},{key:"setDefaultValue",value:function(){Ba(t,"setDefaultValue",this,3)([]),this.options.host=this.options.host||Object(n.a)(),this.options.url=this.options.url||""}},{key:"name",get:function(){return this.options.name},set:function(e){this.options.name=e,this.options.label.text=e,this.label&&(this.label.text=e)}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;this.options.color=e,this.entity.color=Cesium.Color.fromCssColorString(e),this._elms.color&&this._elms.color.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}});t._elms.color[n]=o}))}},{key:"lng",get:function(){return this.options.position.lng},set:function(e){var t=this;this.options.position={lng:Number(Number(e).toFixed(8)),lat:this.options.position.lat,alt:this.options.position.alt},this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this.label&&(this.label.position=[this.options.position.lng,this.options.position.lat,this.options.position.alt]),this._elms.lng&&this._elms.lng.forEach((function(e){e.value=t.options.position.lng}))}},{key:"lat",get:function(){return this.options.position.lat},set:function(e){var t=this;this.options.position={lng:this.options.position.lng,lat:Number(Number(e).toFixed(8)),alt:this.options.position.alt},this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this.label&&(this.label.position=[this.options.position.lng,this.options.position.lat,this.options.position.alt]),this._elms.lat&&this._elms.lat.forEach((function(e){e.value=t.options.position.lat}))}},{key:"alt",get:function(){return this.options.position.alt},set:function(e){var t=this;this.options.position={lng:this.options.position.lng,lat:this.options.position.lat,alt:Number(Number(e).toFixed(2))},this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this.label&&(this.label.position=[Number(this.options.position.lng),Number(this.options.position.lat),Number(this.options.position.alt)]),this._elms.alt&&this._elms.alt.forEach((function(e){e.value=t.options.position.alt}))}},{key:"maximumScale",get:function(){return this.options.maximumScale},set:function(e){this.options.maximumScale=e,this.entity.maximumScale=this.scaleByDistance?void 0:e,this._elms.maximumScale&&this._elms.maximumScale.forEach((function(t){t.value=e}))}},{key:"minimumPixelSize",get:function(){return this.options.minimumPixelSize},set:function(e){this.options.minimumPixelSize=e,this.entity.minimumPixelSize=this.scaleByDistance?void 0:this.options.minimumPixelSize,this._elms.minimumPixelSize&&this._elms.minimumPixelSize.forEach((function(t){t.value=e}))}},{key:"scaleByDistance",get:function(){return this.options.scaleByDistance},set:function(e){this.options.scaleByDistance=e,this.entity.maximumScale=e?void 0:this.maximumScale,this.entity.minimumPixelSize=e?void 0:this.options.minimumPixelSize,this._elms.scaleByDistance&&this._elms.scaleByDistance.forEach((function(t){t.checked=e}))}},{key:"rotateX",get:function(){return this.options.rotate.x},set:function(e){var t=this;this.options.rotate.x=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.rotateX&&this._elms.rotateX.forEach((function(e){e.value=t.options.rotate.x}))}},{key:"rotateY",get:function(){return this.options.rotate.y},set:function(e){var t=this;this.options.rotate.y=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.rotateY&&this._elms.rotateY.forEach((function(e){e.value=t.options.rotate.y}))}},{key:"rotateZ",get:function(){return this.options.rotate.z},set:function(e){var t=this;this.options.rotate.z=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.rotateZ&&this._elms.rotateZ.forEach((function(e){e.value=t.options.rotate.z}))}},{key:"scaleX",get:function(){return this.options.scale.x},set:function(e){var t=this;this.options.scale.x=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.scaleX&&this._elms.scaleX.forEach((function(e){e.value=t.options.scale.x}))}},{key:"scaleY",get:function(){return this.options.scale.y},set:function(e){var t=this;this.options.scale.y=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.scaleY&&this._elms.scaleY.forEach((function(e){e.value=t.options.scale.y}))}},{key:"scaleZ",get:function(){return this.options.scale.z},set:function(e){var t=this;this.options.scale.z=Number(Number(e).toFixed(2)),this.updateModel(this.options.position.lng,this.options.position.lat,this.options.position.alt,this.options.rotate.x,this.options.rotate.y,this.options.rotate.z,this.options.scale),this._elms.scaleZ&&this._elms.scaleZ.forEach((function(e){e.value=t.options.scale.z}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){this.options.label.show=e,this.show&&!this.showView||3==this.showView?this.label&&(this.label.show=e):this.label&&(this.label.show=!1),this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label&&(this.label.color=e),this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label&&(this.label.fontSize=e),this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label&&(this.label.scaleByDistance=e),this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t-1?t[i].style.display="block":t[i].style.display="none"}},{key:"attributeLink",get:function(){return this.options.attribute.link.content},set:function(e){var t=this;if(this.options.attribute.link.content=e,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content&&0!=this._DialogObject._element.content.getElementsByClassName("attribute-content-link").length){var i=this._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],n=i.getElementsByClassName("table-body")[0];n.innerHTML="",this.options.attribute.link.content.length>0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.link.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={linkEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.link.content;case 2:t.attributeLink=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.vr.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={vrEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.vr.content;case 2:t.attributeVr=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-vr")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0))for(var t=0;t0&&void 0!==f[0]&&f[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=46;break}return i=!1,this.scaleX===this.scaleY&&this.scaleX===this.scaleZ&&(i=!0),e.next=9,new Be(this.sdk,this.originalOptions,{title:"模型属性",left:"180px",top:"100px",confirmCallBack:function(e){m.name=m.options.name||"未命名对象",m.originalOptions=m.deepCopyObj(m.options),m._DialogObject.close();var t=m.deepCopyObj(m.options);t.host="",m.Dialog.confirmCallBack&&m.Dialog.confirmCallBack(t),Object(J.syncData)(m.sdk,m.options.id),Object(Z.syncSplitData)(m.sdk,m.options.id)},resetCallBack:function(){m.reset(),m.Dialog.resetCallBack&&m.Dialog.resetCallBack()},removeCallBack:function(){m.Dialog.removeCallBack&&m.Dialog.removeCallBack()},closeCallBack:function(){m.reset(),m.positionEditing=!1,m.editObj&&m.editObj.destroy(),m.Dialog.closeCallBack&&m.Dialog.closeCallBack()},showCallBack:function(e){m.show=e,m.Dialog.showCallBack&&m.Dialog.showCallBack()},translationalCallBack:function(){m.positionEditing?m.positionEditing=!1:m.positionEditing=!0}},!0);case 9:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" model",(n=document.createElement("div")).innerHTML=ka(this),this._DialogObject.contentAppChild(n),this.attributeType=this.options.attributeType,this.attributeCamera=this.options.attribute.camera.content,this.attributeISC=this.options.attribute.ISC.content,new Je("model-edit-tabs",void 0,this.sdk),o=this._DialogObject._element.content.getElementsByClassName("checkbox-box")[0].querySelector("input"),s=this._DialogObject._element.content.getElementsByClassName("equal")[0],a=this._DialogObject._element.content.getElementsByClassName("no-equal")[0],o.checked=i,o.addEventListener("change",(function(e){(i=e.target.checked)?(s.style.display="flex",a.style.display="none",m.scaleY=m.scaleX,m.scaleZ=m.scaleX):(s.style.display="none",a.style.display="flex")})),(r=s.getElementsByTagName("input"))[0].value=this.scaleX,r[1].value=this.scaleX,r[0].addEventListener("input",(function(e){m.scaleX=e.target.value,m.scaleY=e.target.value,m.scaleZ=e.target.value})),r[1].addEventListener("input",(function(e){m.scaleX=e.target.value,m.scaleY=e.target.value,m.scaleZ=e.target.value})),i?(s.style.display="flex",a.style.display="none"):(s.style.display="none",a.style.display="flex"),l=new YJColorPicker({el:n.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){m.color=e},clear:function(){m.color="rgba(255,255,255,1)"}}),c=new YJColorPicker({el:n.getElementsByClassName("labelColor")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){m.labelColor=e},clear:function(){m.labelColor="rgba(255,255,255,1)"}}),u=new YJColorPicker({el:n.getElementsByClassName("labelLineColor")[0],size:"mini",alpha:!0,defaultColor:this.labelLineColor,disabled:!1,openPickerAni:"opacity",sure:function(e){m.labelLineColor=e},clear:function(){m.labelLineColor="rgba(255,255,255,1)"}}),h=new YJColorPicker({el:n.getElementsByClassName("labelBackgroundColorStart")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorStart,disabled:!1,openPickerAni:"opacity",sure:function(e){m.labelBackgroundColorStart=e},clear:function(){m.labelBackgroundColorStart="rgba(255,255,255,1)"}}),p=new YJColorPicker({el:n.getElementsByClassName("labelBackgroundColorEnd")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorEnd,disabled:!1,openPickerAni:"opacity",sure:function(e){m.labelBackgroundColorEnd=e},clear:function(){m.labelBackgroundColorEnd="rgba(255,255,255,1)"}}),d=n.getElementsByTagName("*"),this._EventBinding.on(this,d),this._elms=this._EventBinding.element,this._elms.color=[l],this._elms.labelColor=[c],this._elms.labelLineColor=[u],this._elms.labelBackgroundColorStart=[h],this._elms.labelBackgroundColorEnd=[p],this._elms.scaleX.push(r[0],r[1]),setTimeout((function(){m.attributeLink=m.options.attribute.link.content,m.attributeVr=m.options.attribute.vr.content,m.ISCSelect&&m.ISCSelect(),m.goodsSelect&&m.goodsSelect(),m.cameraSelect&&m.cameraSelect();var e=m.attributeSelect,t=m._DialogObject._element.content.getElementsByClassName("attribute-select-box")[0];if(t){var i=Object(je.a)(t,".attribute-select");i.legp_search(e);for(var n=m._DialogObject._element.content.getElementsByClassName("attribute-select")[0].getElementsByTagName("input")[0],o=0;o3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,r=arguments.length>6?arguments[6]:void 0;e=parseFloat(e),t=parseFloat(t),i=parseFloat(parseFloat(i).toFixed(2)),o=parseFloat(o),s=parseFloat(s),a=parseFloat(a),r.x=parseFloat(r.x),r.y=parseFloat(r.y),r.z=parseFloat(r.z),this.entity.position=new Cesium.Cartesian3.fromDegrees(e,t,i),this.entity.rotate={x:o,y:s,z:a},this.entity.customScale=r;var l=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(o)),c=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(s)),u=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(a)),h=Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e,t,i)),p=Cesium.Matrix4.fromRotationTranslation(l),d=Cesium.Matrix4.fromRotationTranslation(c),m=Cesium.Matrix4.fromRotationTranslation(u),f=new Cesium.Matrix4;Cesium.Matrix4.multiply(h,p,f),Cesium.Matrix4.multiply(f,d,f),Cesium.Matrix4.multiply(f,m,this.entity.modelMatrix);var v=r.x,g=r.y,y=r.z;0===v&&(v=1e-5),0===g&&(g=1e-5),0===y&&(y=1e-5),Cesium.Matrix4.multiplyByScale(this.entity.modelMatrix,new Cesium.Cartesian3(v,g,y),this.entity.modelMatrix),this.entity.minimumPixelSize=this.scaleByDistance?void 0:this.options.minimumPixelSize,this.editObj&&this.editObj.update(),this.entity.isMove=!0,clearTimeout(this._timeoutEventObject),this._timeoutEventObject=setTimeout((function(){n.entity&&(n.entity.isMove=!1)}),500)}},{key:"reset",value:function(){if(this.entity)try{this.options=this.deepCopyObj(this.originalOptions),this.name=this.originalOptions.name,this.color=this.originalOptions.color,this.lng=this.originalOptions.position.lng,this.lat=this.originalOptions.position.lat,this.alt=this.originalOptions.position.alt,this.maximumScale=this.originalOptions.maximumScale,this.minimumPixelSize=this.originalOptions.minimumPixelSize,this.scaleByDistance=this.originalOptions.scaleByDistance,this.rotateX=this.originalOptions.rotate.x,this.rotateY=this.originalOptions.rotate.y,this.rotateZ=this.originalOptions.rotate.z,this.scaleX=this.originalOptions.scale.x,this.scaleY=this.originalOptions.scale.y,this.scaleZ=this.originalOptions.scale.z,this.labelShow=this.originalOptions.label.show,this.labelColor=this.originalOptions.label.color,this.labelFontSize=this.originalOptions.label.fontSize,this.labelFontFamily=this.originalOptions.label.fontFamily,this.labelScaleByDistance=this.originalOptions.label.scaleByDistance,this.labelLineWidth=this.originalOptions.label.lineWidth,this.labelPixelOffset=this.originalOptions.label.pixelOffset,this.labelLineColor=this.originalOptions.label.lineColor,this.labelBackgroundColorStart=this.originalOptions.label.backgroundColor[0],this.labelBackgroundColorEnd=this.originalOptions.label.backgroundColor[1],this.labelNear=this.originalOptions.label.near,this.labelFar=this.originalOptions.label.far,this.attributeLink=this.options.attribute.link.content,this.attributeVr=this.options.attribute.vr.content,this.attributeCamera=this.options.attribute.camera.content,this.attributeGoods=this.options.attribute.goods.content,this.attributeISC=this.options.attribute.ISC.content,this.cameraSelect&&this.cameraSelect(),this.goodsSelect&&this.goodsSelect(),Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id)}catch(e){}}}]);var i,o,s,a,r}(Pa);function Aa(e){return'\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 '.concat(ct(e),'\n \n \n
          \n
          \n
          \n x轴\n \n \n
          \n
          \n
          \n
          \n y轴\n \n \n
          \n
          \n
          \n
          \n z轴\n \n \n
          \n
          \n
          \n
          \n 高度\n \n \n
          \n
          \n
          \n
          \n 缩放\n \n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ',"\n
          \n
          \n
          \n ")}function La(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Ia(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Ia(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Ia(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Fa(this,t,[e,n,o={}])).picking=!0,i.options.name=n.name||"未命名对象",i.options.color=n.color||"#ffffff",i.options.scale=n.scale||0===n.scale?n.scale:1,i.options.url=n.url,i.options.maximumScale=n.maximumScale||0===n.maximumScale?n.maximumScale:100,i.options.minimumPixelSize=n.minimumPixelSize||0===n.minimumPixelSize?n.minimumPixelSize:60,i.options.positions=n.positions||[],i.options.type=n.type||0,i.options.interval=n.interval||0===n.interval?n.interval:1,i.options.quantity=n.quantity,i.options.scaleByDistance=!n.scaleByDistance&&!1!==n.scaleByDistance||n.scaleByDistance,i.options.rotate=n.rotate=n.rotate||{},i.options.rotate.x=n.rotate.x||0,i.options.rotate.y=n.rotate.y||0,i.options.rotate.z=n.rotate.z||0,i.options.label=n.label=n.label||{},i.options.label.show=!(!n.label.show&&!1!==n.label.show)&&n.label.show,i.options.label.fontSize=n.label.fontSize||20,i.options.label.color=n.label.color||"#ffffff",i.options.label.near=n.label.near||0===n.label.near?n.label.near:2e3,i.options.label.far=n.label.far||0===n.label.far?n.label.far:1e5,i.options.label.scaleByDistance=n.label.scaleByDistance||!1,i.options.label.backgroundColor=n.label.backgroundColor||["#42c6ef","#42c6ef"],i.options.line=n.line=n.line||{},i.options.line.width=n.line.width||2,i.options.line.length=n.line.length||20,i.options.line.color=n.line.color||"#fff000",i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.attribute.camera=i.options.attribute.camera||[],i.options.attributeType=n.attributeType||"richText",i.ModelPositions=[],i._elms={},i.positionCallBack=null,i.rotationCallback=null,i.onClickCallback=null,i._DialogObject=null,i._element_style=null,i.ControllerObject=new fi(i.sdk),i.ControllerObject.controllerCallBack=function(e){i.lng=e.position.lng,i.lat=e.position.lat,i.alt=e.position.alt},i.Dialog=o,i._EventBinding=new Ye,i.on(),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"glb"}},{key:"loadModel",value:(s=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u,h,p,d,m,f,v=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(f=function(e){return new Worker("data:,(".concat(e.toString(),")(").concat(JSON.stringify(d),")"))},m=function(e){var t=e.type,i=e.interval,n=e.positions,o=e.optionsPositions,s=e.quantity,a=e.turfUrl;importScripts(a);var r=[];switch(t){case 1:var l=turf.lineString(n[0]),u=turf.lineChunk(l,i/1e3,{units:"kilometers"});r.push({lng:u.features[0].geometry.coordinates[0][0],lat:u.features[0].geometry.coordinates[0][1]});for(var h=0;hthis.options.height&&(o=this.options.positions[s].alt);n[0].length>2?(n[0].push([this.options.positions[0].lng,this.options.positions[0].lat]),a=turf.polygon(n),r=turf.pointOnFeature(a),this.center={lng:r.geometry.coordinates[0],lat:r.geometry.coordinates[1]}):2==n[0].length?this.center={lng:(this.options.positions[0].lng+this.options.positions[1].lng)/2,lat:(this.options.positions[0].lat+this.options.positions[1].lat)/2}:this.center={lng:this.options.positions[0].lng,lat:this.options.positions[0].lat},l=[],this.options.height||0===this.options.height||(this.options.height=o),u=document.scripts,h="",p=0;case 14:if(!(pthis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t-1?t[i].style.display="block":t[i].style.display="none"}},{key:"attributeLink",get:function(){return this.options.attribute.link.content},set:function(e){var t=this;if(this.options.attribute.link.content=e,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content&&0!=this._DialogObject._element.content.getElementsByClassName("attribute-content-link").length){var i=this._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],n=i.getElementsByClassName("table-body")[0];n.innerHTML="",this.options.attribute.link.content.length>0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.link.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={linkEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.link.content;case 2:t.attributeLink=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0&&void 0!==u[0]&&u[0],this.originalOptions=this.deepCopyObj(this.options),this._element_style=null,this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=36;break}return this._element_style=document.createElement("style"),this._element_style.type="text/css",this._element_style.setAttribute("data-name","YJ_style_dialog"),this._element_style.innerHTML="\n .YJ-custom-base-dialog>.content {\n width: 600px;\n }\n .YJ-custom-base-dialog>.content>div>.row .col {\n margin: 0 10px;\n }\n .YJ-custom-base-dialog>.content>div>.row .col:first-child {\n margin-left: 0;\n }\n .YJ-custom-base-dialog>.content>div>.row .col:last-child {\n margin-right: 0;\n }\n .YJ-custom-base-dialog>.content>div>.row .label {\n flex: 0 0 74px;\n }\n .YJ-custom-base-dialog>.content .DIV-cy-tab-content-pane .input-select {\n width: 100px;\n }\n",e.next=12,new Be(this.sdk,this.originalOptions,{title:"编辑属性",left:"180px",top:"100px",confirmCallBack:function(e){c.name=c.options.name||"未命名对象",c.originalOptions=c.deepCopyObj(c.options),c._DialogObject.close(),c.Dialog.confirmCallBack&&c.Dialog.confirmCallBack(c.originalOptions)},resetCallBack:function(){c.reset(),c.Dialog.resetCallBack&&c.Dialog.resetCallBack()},removeCallBack:function(){c.Dialog.removeCallBack&&c.Dialog.removeCallBack()},closeCallBack:function(){c.reset(),c.positionEditing=!1,c.ControllerObject&&c.ControllerObject.destroy(),c.Dialog.closeCallBack&&c.Dialog.closeCallBack()},showCallBack:function(e){c.show=e,c.Dialog.showCallBack&&c.Dialog.showCallBack()},translationalCallBack:function(){c.positionEditing?c.positionEditing=!1:c.positionEditing=!0}},!0);case 12:this._DialogObject=e.sent,document.getElementsByTagName("head")[0].appendChild(this._element_style),(i=document.createElement("div")).innerHTML=Aa(this),this._DialogObject.contentAppChild(i),this.attributeType=this.options.attributeType,this.attributeCamera=this.options.attribute.camera,new Je("model-edit-tabs",void 0,this.sdk),n=new YJColorPicker({el:i.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){c.color=e},clear:function(){c.color="rgba(255,255,255,1)"}}),o=new YJColorPicker({el:i.getElementsByClassName("label_color")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelColor=e},clear:function(){c.labelColor="rgba(255,255,255,1)"}}),s=new YJColorPicker({el:i.getElementsByClassName("line_color")[0],size:"mini",alpha:!0,defaultColor:this.lineColor,disabled:!1,openPickerAni:"opacity",sure:function(e){c.lineColor=e},clear:function(){c.lineColor="rgba(255,255,255,1)"}}),a=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorStart")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorStart,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelBackgroundColorStart=e},clear:function(){c.labelBackgroundColorStart="rgba(255,255,255,1)"}}),r=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorEnd")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorEnd,disabled:!1,openPickerAni:"opacity",sure:function(e){c.labelBackgroundColorEnd=e},clear:function(){c.labelBackgroundColorEnd="rgba(255,255,255,1)"}}),l=i.getElementsByTagName("*"),this._EventBinding.on(this,l),this._elms=this._EventBinding.element,this._elms.color=[n],this._elms.labelColor=[o],this._elms.lineColor=[s],this._elms.labelBackgroundColorStart=[a],this._elms.labelBackgroundColorEnd=[r],setTimeout((function(){c.attributeLink=c.options.attribute.link.content,c.cameraSelect&&c.cameraSelect();var e=c.attributeSelect,t=c._DialogObject._element.content.getElementsByClassName("attribute-select-box")[0];if(t){var i=Object(je.a)(t,".attribute-select");i.legp_search(e);for(var n=c._DialogObject._element.content.getElementsByClassName("attribute-select")[0].getElementsByTagName("input")[0],o=0;o3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=arguments.length>6?arguments[6]:void 0;e=parseFloat(e),t=parseFloat(t),i=parseFloat(i),n=parseFloat(n),o=parseFloat(o),s=parseFloat(s),a=parseFloat(a),this.entity.rotate={x:n,y:o,z:s};var r=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(n)),l=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(o)),c=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(s)),u=new Cesium.Cartesian3.fromDegrees(e,t,i);Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3(u.x-this.entity._center.x,u.y-this.entity._center.y,u.z-this.entity._center.z)),Cesium.Matrix4.fromRotationTranslation(r),Cesium.Matrix4.fromRotationTranslation(l),Cesium.Matrix4.fromRotationTranslation(c),new Cesium.Matrix4;Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(u.x-this.entity._center.x,u.y-this.entity._center.y,u.z-this.entity._center.z),this.entity.modelMatrix),this.ControllerObject.update(),this.entity.position=new Cesium.Cartesian3.fromDegrees(e,t,i)}},{key:"updateModelRotate",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;e=parseFloat(e),t=parseFloat(t),i=parseFloat(i),n=parseFloat(n),this.sdk.viewer.scene.primitives.remove(this.entity);var o=this.options.url;if(!o.startsWith("http")&&!o.includes(":")&&this.options.host){var s=new URL(o,this.options.host);o=s.href}for(var a=[],r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Ua(this,t,[e,o])).object={},i.options.host=i.options.host||Object(n.a)(),i.loadLayer(i.options),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"layer"}},{key:"loadLayer",value:(i=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.object=Wa({},t),i="",this.object.url.startsWith("http")?i=this.object.url:this.options.host?(n=new URL(this.object.url,this.options.host),i=n.href):i=this.object.url,o={url:i,mimmumLevel:this.object.minimumLevel,maximumLevel:this.object.maximumLevel,rectangle:new Cesium.Rectangle(Cesium.Math.toRadians(this.object.west),Cesium.Math.toRadians(this.object.south),Cesium.Math.toRadians(this.object.east),Cesium.Math.toRadians(this.object.north))},e.t0=this.object.schemaName,e.next="amapMercatorTilingScheme"===e.t0?7:""===e.t0?9:10;break;case 7:return o.tilingScheme=this.amapMercatorTilingScheme(),e.abrupt("break",12);case 9:return e.abrupt("break",12);case 10:return o.tilingScheme=new Cesium[this.object.schemaName],e.abrupt("break",12);case 12:e.t1=this.object.load_method,e.next="tms"===e.t1?15:"xyz"===e.t1?24:"wmts"===e.t1?26:28;break;case 15:if(this.object.url.endsWith("tilemapresource.xml")&&((a=this.object.url.split("/")).pop(),r=a.join("/"),o.url=r),!(Number(Cesium.VERSION.split(".")[1])>=107)){e.next=22;break}return e.next=19,Cesium.TileMapServiceImageryProvider.fromUrl(o.url,o);case 19:s=e.sent,e.next=23;break;case 22:s=new Cesium.TileMapServiceImageryProvider(o);case 23:return e.abrupt("break",30);case 24:return s=new Cesium.UrlTemplateImageryProvider(o),e.abrupt("break",30);case 26:return s=new Cesium.WebMapTileServiceImageryProvider(o),e.abrupt("break",30);case 28:return s=new Cesium.UrlTemplateImageryProvider(o),e.abrupt("break",30);case 30:if(this.sdk&&this.sdk.viewer){e.next=32;break}return e.abrupt("return");case 32:for(this.options.hasOwnProperty("layerIndex")?this.entity=this.sdk.viewer.scene.imageryLayers.addImageryProvider(s,this.options.layerIndex):this.entity=this.sdk.viewer.scene.imageryLayers.addImageryProvider(s),this.entity._id=this.options.id,l=0;l1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Ja(this,t,[e,n])).loadLayer(),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"layer"}},{key:"loadLayer",value:function(e){var t,i={url:this.options.url,mimmumLevel:this.options.minimumLevel||0,maximumLevel:this.options.maximumLevel||20,subdomains:["0","1","2","3","4","5","6","7"]};t=new Cesium.UrlTemplateImageryProvider(i),this.options.hasOwnProperty("layerIndex")?this.entity=this.sdk.viewer.scene.imageryLayers.addImageryProvider(t,this.options.layerIndex):this.entity=this.sdk.viewer.scene.imageryLayers.addImageryProvider(t),this.entity._id=this.options.id;for(var n=0;n=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Qa(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c()(this,t),er(i=$a(this,t,[e,n]),or,void 0),i.object=JSON.parse(JSON.stringify(o)),i.object.west||(i.object.west=40),i.object.south||(i.object.south=30),i.object.east||(i.object.east=160),i.object.north||(i.object.north=50),i.show=i.options.show,i._elms={},i.Dialog=s,i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"terrain"}},{key:"name",get:function(){return this.options.name},set:function(e){this.options.name=e,this._elms.name&&this._elms.name.forEach((function(t){t.value=e}))}},{key:"show",get:function(){return!(this.sdk.viewer.scene.terrainProvider instanceof Cesium.EllipsoidTerrainProvider)},set:function(e){e?this.open():this.close()}},{key:"open",value:(r=_()(S.a.mark((function e(){var t,i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.options.url){e.next=4;break}return e.abrupt("return",this.loadTerrain({url:this.options.url}));case 4:return e.next=6,this.requestResource();case 6:return t=e.sent,e.next=9,t.text();case 9:if(i=e.sent,i=JSON.parse(i),![0,200].includes(i.code)){e.next=19;break}if(!i.data.url.length){e.next=16;break}return e.abrupt("return",this.loadTerrain(i.data));case 16:return e.abrupt("return",new Promise((function(e,t){t("资源不存在")})));case 17:e.next=20;break;case 19:return e.abrupt("return",new Promise((function(e,t){t(i.msg||i.message)})));case 20:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"close",value:function(){var e=this;this.sdk.viewer.scene.terrainProvider=new Cesium.EllipsoidTerrainProvider({});for(var t=0;t=107)){e.next=9;break}return e.next=6,Cesium.CesiumTerrainProvider.fromUrl(n);case 6:this.terrainProvider=e.sent,e.next=10;break;case 9:this.terrainProvider=new Cesium.CesiumTerrainProvider({url:n});case 10:if(this.sdk&&this.sdk.viewer){e.next=12;break}return e.abrupt("return");case 12:this.sdk.viewer.terrainProvider=this.terrainProvider,clearTimeout(ir(or,this)),tr(or,this,setTimeout((function(){clearTimeout(ir(or,a)),a.terrainProvider.readyPromise.then((function(){var e,t=Ka(a.sdk.entityMap);try{for(t.s();!(e=t.n()).done;){var i=s()(e.value,2),n=(i[0],i[1]);"BillboardObject"!==n.type||1!=n.heightMode&&3!=n.heightMode?n.label&&(n.label.show=n.label.show):n.updateHeight()}}catch(e){t.e(e)}finally{t.f()}}))}),1e3)),Object(Z.syncSplitData)(this.sdk,this.options.id);case 16:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"remove",value:function(){this.close()}},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=c.length>0&&void 0!==c[0]?c[0]:3,!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Za({},this.options.position):this.options.positions?r=Za({},this.options.positions[0]):this.options.center?r=Za({},this.options.center):this.options.start?r=Za({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i,duration:t}),e.next=27;break;case 25:l=new Cesium.Rectangle(Cesium.Math.toRadians(this.object.west),Cesium.Math.toRadians(this.object.south),Cesium.Math.toRadians(this.object.east),Cesium.Math.toRadians(this.object.north)),this.sdk.viewer.camera.flyTo({destination:l,duration:t});case 27:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"setDefaultValue",value:function(){var e,i,o,s,a;(e=t,i="setDefaultValue",o=this,s=3,a=_n()(De()(1&s?e.prototype:e),i,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),this.options.host=this.options.host||Object(n.a)(),this.options.url=this.options.url||""}},{key:"edit",value:(i=_()(S.a.mark((function e(){var t,i,n,o=this,s=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s.length>0&&void 0!==s[0]&&s[0],e.abrupt("return");case 6:this._DialogObject=e.sent,(t=document.createElement("div")).style.width="300px",i='\n \n
          \n
          \n
          \n 名称:\n \n
          \n
          \n
          \n ',t.innerHTML=i,(n=t.getElementsByClassName("name")[0]).value=this.name,n.addEventListener("input",(function(){o.name=n.value})),this._DialogObject.contentAppChild(t),this._elms.name=[n];case 16:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"reset",value:function(){this.options=this.deepCopyObj(this.originalOptions),this.name=this.options.name}},{key:"flicker",value:function(){}}]);var i,o,a,r}(js);function ar(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return rr(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?rr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function rr(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=pr(this,t,[e,i])).options.url=i.url,n.options.startColor=i.startColor||"#ff0000",n.options.endColor=i.endColor||"#fff000",n.options.startScale=i.startScale||.5,n.options.endScale=i.endScale||2,n.options.minimumParticleLife=i.minimumParticleLife||1,n.options.maximumParticleLife=i.maximumParticleLife||2,n.options.minimumSpeed=i.minimumSpeed||1,n.options.maximumSpeed=i.maximumSpeed||30,n.options.emissionRate=i.emissionRate||60,n.options.particleSize=i.particleSize||10,n.options.show=!1!==i.show,n.positionCallBack=null,n.rotationCallback=null,n.onClickCallback=null,n._DialogObject=null,n._element=null,n.particleSystem,n.sdk.addIncetance(n.options.id,n),n.add(),n.operate={},n._elms={},n.previous={positions:{lng:n.options.lng,lat:n.options.lat,alt:n.options.alt}},n.Dialog=o,n.event=new te.a(n.sdk),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"ParticleEffects"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){var t=Object(J.getSdk)().sdkD;this.isShowView&&t||(this.options.show=e),this.showView&&3!=this.showView&&t?(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=!1),this.options.label&&this.options.label.show&&(this.label.show=!1)):(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=this.options.show),this.options.label&&this.options.label.show&&(this.label.show=this.options.show)),this._DialogObject&&this._DialogObject.showBtn&&(this._DialogObject.showBtn.checked=e),Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id),this.isShowView=!1}else console.error("参数必须为boolean")}},{key:"add",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.originalOptions=this.deepCopyObj(this.options),t=this.sdk.viewer.scene,i=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),n=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(i),o=Cesium.Transforms.eastNorthUpToFixedFrame(n),Cesium.Matrix4.multiplyByScale(o,new Cesium.Cartesian3(1,1,1),o),s=this.sdk.viewer.camera.positionCartographic.height,this.particleSystem=t.primitives.add(new Cesium.ParticleSystem({show:!(s>=1e7)&&this.options.show,image:this.options.url||this.getSourceRootPath()+"/img/particlesystem/smoke.png",startColor:Cesium.Color.fromCssColorString(this.options.startColor),endColor:Cesium.Color.fromCssColorString(this.options.endColor),startScale:this.options.startScale,endScale:this.options.endScale,minimumParticleLife:this.options.minimumParticleLife,maximumParticleLife:this.options.maximumParticleLife,minimumSpeed:this.options.minimumSpeed,maximumSpeed:this.options.maximumSpeed,minimumImageSize:new Cesium.Cartesian2(this.options.particleSize,this.options.particleSize),maximumImageSize:new Cesium.Cartesian2(this.options.particleSize,this.options.particleSize),sizeInMeters:!0,emissionRate:this.options.emissionRate,lifetime:.5,loop:!0,emitter:new Cesium.ConeEmitter(Cesium.Math.toRadians(30)),modelMatrix:o,updateCallback:function(e){e._billboard.id=a.options.id}})),this.particleSystem.id=this.options.id,this.entity=this.particleSystem,this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},Object(J.syncData)(this.sdk,this.options.id),this.options.show&&Object(Z.setSplitDirection)(0,this.options.id),this.sdk.viewer.camera.changed.addEventListener((function(){if(a.entity&&a.show){var e=a.sdk.viewer.camera.positionCartographic.height;a.entity.show=!(e>=1e7)}}));case 14:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=hr({},this.options.position):this.options.positions?r=hr({},this.options.positions[0]):this.options.center?r=hr({},this.options.center):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=26;break;case 25:this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.lng,this.options.lat,this.options.alt+500),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)}});case 26:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"startColor",get:function(){return this.options.startColor},set:function(e){var t=this;this.options.startColor=e,this.particleSystem.startColor=Cesium.Color.fromCssColorString(e),this._elms.startColor&&this._elms.startColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.startColor=e},clear:function(){t.startColor="rgba(255,255,255,1)"}});t._elms.startColor[n]=o}))}},{key:"endColor",get:function(){return this.options.endColor},set:function(e){var t=this;this.options.endColor=e,this.particleSystem.endColor=Cesium.Color.fromCssColorString(e),this._elms.endColor&&this._elms.endColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.endColor=e},clear:function(){t.endColor="rgba(255,255,255,1)"}});t._elms.endColor[n]=o}))}},{key:"minimumSpeed",get:function(){return this.options.minimumSpeed},set:function(e){this.options.minimumSpeed=e,this.particleSystem.minimumSpeed=e,this._elms.minimumSpeed&&this._elms.minimumSpeed.forEach((function(t){t.value=e}))}},{key:"maximumSpeed",get:function(){return this.options.maximumSpeed},set:function(e){this.options.maximumSpeed=e,this.particleSystem.maximumSpeed=e,this._elms.maximumSpeed&&this._elms.maximumSpeed.forEach((function(t){t.value=e}))}},{key:"minimumParticleLife",get:function(){return this.options.minimumParticleLife},set:function(e){this.options.minimumParticleLife=e,this.particleSystem.minimumParticleLife=e,this._elms.minimumParticleLife&&this._elms.minimumParticleLife.forEach((function(t){t.value=e}))}},{key:"maximumParticleLife",get:function(){return this.options.maximumParticleLife},set:function(e){this.options.maximumParticleLife=e,this.particleSystem.maximumParticleLife=e,this._elms.maximumParticleLife&&this._elms.maximumParticleLife.forEach((function(t){t.value=e}))}},{key:"startScale",get:function(){return this.options.startScale},set:function(e){this.options.startScale=e,this.particleSystem.startScale=e,this._elms.startScale&&this._elms.startScale.forEach((function(t){t.value=e}))}},{key:"endScale",get:function(){return this.options.endScale},set:function(e){this.options.endScale=e,this.particleSystem.endScale=e,this._elms.endScale&&this._elms.endScale.forEach((function(t){t.value=e}))}},{key:"emissionRate",get:function(){return this.options.emissionRate},set:function(e){this.options.emissionRate=e,this.particleSystem.emissionRate=e,this._elms.emissionRate&&this._elms.emissionRate.forEach((function(t){t.value=e}))}},{key:"particleSize",get:function(){return this.options.particleSize},set:function(e){this.options.particleSize=e,this.particleSystem.minimumImageSize=new Cesium.Cartesian2(e,e),this.particleSystem.maximumImageSize=new Cesium.Cartesian2(e,e),this._elms.particleSize&&this._elms.particleSize.forEach((function(t){t.value=e}))}},{key:"lng",get:function(){return this.options.lng},set:function(e){this.options.lng=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.lat},set:function(e){this.options.lat=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"alt",get:function(){return this.options.alt},set:function(e){this.options.alt=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e}))}},{key:"edit",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s=this,a=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.length>0&&void 0!==a[0]&&a[0],e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" particle-effects",(t=document.createElement("div")).innerHTML='\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 m\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
          \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 ',this._DialogObject.contentAppChild(t),i=new YJColorPicker({el:t.getElementsByClassName("start_color")[0],size:"mini",alpha:!0,defaultColor:this.startColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.startColor=e},clear:function(){s.startColor="rgba(255,255,255,1)"}}),n=new YJColorPicker({el:t.getElementsByClassName("end_color")[0],size:"mini",alpha:!0,defaultColor:this.endColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.endColor=e},clear:function(){s.endColor="rgba(255,255,255,1)"}}),o=t.getElementsByTagName("*"),cr.on(this,o),this._elms=cr.element,this._elms.startColor=[i],this._elms.endColor=[n],e.next=22;break;case 22:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.name=this.originalOptions.name,this.startColor=this.originalOptions.startColor,this.endColor=this.originalOptions.endColor,this.minimumSpeed=this.originalOptions.minimumSpeed,this.maximumSpeed=this.originalOptions.maximumSpeed,this.minimumParticleLife=this.originalOptions.minimumParticleLife,this.maximumParticleLife=this.originalOptions.maximumParticleLife,this.startScale=this.originalOptions.startScale,this.endScale=this.originalOptions.endScale,this.emissionRate=this.originalOptions.emissionRate,this.particleSize=this.originalOptions.particleSize,this.lng=this.originalOptions.lng,this.lat=this.originalOptions.lat,this.alt=this.originalOptions.alt,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"remove",value:(i=_()(S.a.mark((function e(){var i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return dr(t,"remove",this,3)([]),this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),e.next=8,this.sdk.removeIncetance(this.options.id);case 8:if(i=Object(J.getSdk)().sdkD,this.sdk===i){e.next=12;break}return e.next=12,Object(J.syncData)(this.sdk,this.options.id);case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(this.sdk&&this.sdk.viewer&&this.entity)if(this.operate.positionEditing=e,!0===e){var i;this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.picking=!1,this.previous={positions:hr({},this.entity.position)},this.event.mouse_move((function(e,n){i=e.endPosition;var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt;var s=Cesium.Cartographic.fromDegrees(t.options.lng,t.options.lat,t.options.alt),a=t.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(s);t.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(a),t._elms.lng&&t._elms.lng.forEach((function(e){e.value=t.options.lng})),t._elms.lat&&t._elms.lat.forEach((function(e){e.value=t.options.lat})),t._elms.alt&&t._elms.alt.forEach((function(e){e.value=t.options.alt})),t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,n){if(!i||i.x!==e.position.x||i.y!==e.position.y-2){var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt}t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:hr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t._positionEditingCallback&&(t._positionEditingCallback(),t._positionEditingCallback=null),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.lng=e.lng,t.options.lat=e.lat,t.options.alt=e.alt,t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:hr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))}else{if(this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){}))),this.tip&&this.tip.destroy(),!this.sdk||!this.sdk.viewer||!this.entity)return;this.options.lng=this.entity.position.lng,this.options.lat=this.entity.position.lat,this.options.alt=this.entity.position.alt;var n=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(o),this._elms.lng&&this._elms.lng.forEach((function(e){e.value=t.options.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.value=t.options.lat})),this._elms.alt&&this._elms.alt.forEach((function(e){e.value=t.options.alt}))}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"flicker",value:function(){}}]);var i,n,o,s}(vt);function fr(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return vr(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?vr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function vr(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=wr(this,t,[e,i])).options.url=i.url,n.options.startColor=i.startColor||"#00000000",n.options.endColor=i.endColor||"#0000001a",n.options.startScale=i.startScale||.1,n.options.endScale=i.endScale||10,n.options.minimumParticleLife=i.minimumParticleLife||6,n.options.maximumParticleLife=i.maximumParticleLife||7,n.options.minimumSpeed=i.minimumSpeed||10,n.options.maximumSpeed=i.maximumSpeed||15,n.options.emissionRate=i.emissionRate||28,n.options.particleSize=i.particleSize||2,n.options.show=!1!==i.show,n._elms={},n.positionCallBack=null,n.rotationCallback=null,n.onClickCallback=null,n._DialogObject=null,n._element=null,n.particleSystem,n.sdk.addIncetance(n.options.id,n),n.add(),n.operate={},n.previous={positions:{lng:n.options.lng,lat:n.options.lat,alt:n.options.alt}},n.Dialog=o,n.event=new te.a(n.sdk),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"ParticleEffects"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){var t=Object(J.getSdk)().sdkD;this.isShowView&&t||(this.options.show=e),this.showView&&3!=this.showView&&t?(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=!1),this.options.label&&this.options.label.show&&(this.label.show=!1)):(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=this.options.show),this.options.label&&this.options.label.show&&(this.label.show=this.options.show)),this._DialogObject&&this._DialogObject.showBtn&&(this._DialogObject.showBtn.checked=e),Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id),this.isShowView=!1}else console.error("参数必须为boolean")}},{key:"add",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.originalOptions=this.deepCopyObj(this.options),t=this.sdk.viewer.scene,i=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),n=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(i),o=Cesium.Transforms.eastNorthUpToFixedFrame(n),Cesium.Matrix4.multiplyByScale(o,new Cesium.Cartesian3(1,1,1),o),s=this.sdk.viewer.camera.positionCartographic.height,this.particleSystem=t.primitives.add(new Cesium.ParticleSystem({show:!(s>=1e7)&&this.options.show,image:this.options.url||this.getSourceRootPath()+"/img/particlesystem/smoke.png",startColor:Cesium.Color.fromCssColorString(this.options.startColor),endColor:Cesium.Color.fromCssColorString(this.options.endColor),startScale:this.options.startScale,endScale:this.options.endScale,minimumParticleLife:this.options.minimumParticleLife,maximumParticleLife:this.options.maximumParticleLife,minimumSpeed:this.options.minimumSpeed,maximumSpeed:this.options.maximumSpeed,minimumImageSize:new Cesium.Cartesian2(this.options.particleSize,this.options.particleSize),maximumImageSize:new Cesium.Cartesian2(this.options.particleSize,this.options.particleSize),sizeInMeters:!0,emissionRate:this.options.emissionRate,lifetime:.5,loop:!0,emitter:new Cesium.CircleEmitter(.2),performance:!1,modelMatrix:o,updateCallback:function(e){e._billboard.id=a.options.id}})),this.particleSystem.id=this.options.id,this.entity=this.particleSystem,this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},Object(J.syncData)(this.sdk,this.options.id),this.options.show&&Object(Z.setSplitDirection)(0,this.options.id),this.sdk.viewer.camera.changed.addEventListener((function(){if(a.entity&&a.show){var e=a.sdk.viewer.camera.positionCartographic.height;a.entity.show=!(e>=1e7)}}));case 14:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Cr({},this.options.position):this.options.positions?r=Cr({},this.options.positions[0]):this.options.center?r=Cr({},this.options.center):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=26;break;case 25:this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.lng,this.options.lat,this.options.alt+500),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)}});case 26:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"startColor",get:function(){return this.options.startColor},set:function(e){var t=this;this.options.startColor=e,this.particleSystem.startColor=Cesium.Color.fromCssColorString(e),this._elms.startColor&&this._elms.startColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.startColor=e},clear:function(){t.startColor="rgba(255,255,255,1)"}});t._elms.startColor[n]=o}))}},{key:"endColor",get:function(){return this.options.endColor},set:function(e){var t=this;this.options.endColor=e,this.particleSystem.endColor=Cesium.Color.fromCssColorString(e),this._elms.endColor&&this._elms.endColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.endColor=e},clear:function(){t.endColor="rgba(255,255,255,1)"}});t._elms.endColor[n]=o}))}},{key:"minimumSpeed",get:function(){return this.options.minimumSpeed},set:function(e){this.options.minimumSpeed=e,this.particleSystem.minimumSpeed=e,this._elms.minimumSpeed&&this._elms.minimumSpeed.forEach((function(t){t.value=e}))}},{key:"maximumSpeed",get:function(){return this.options.maximumSpeed},set:function(e){this.options.maximumSpeed=e,this.particleSystem.maximumSpeed=e,this._elms.maximumSpeed&&this._elms.maximumSpeed.forEach((function(t){t.value=e}))}},{key:"minimumParticleLife",get:function(){return this.options.minimumParticleLife},set:function(e){this.options.minimumParticleLife=e,this.particleSystem.minimumParticleLife=e,this._elms.minimumParticleLife&&this._elms.minimumParticleLife.forEach((function(t){t.value=e}))}},{key:"maximumParticleLife",get:function(){return this.options.maximumParticleLife},set:function(e){this.options.maximumParticleLife=e,this.particleSystem.maximumParticleLife=e,this._elms.maximumParticleLife&&this._elms.maximumParticleLife.forEach((function(t){t.value=e}))}},{key:"startScale",get:function(){return this.options.startScale},set:function(e){this.options.startScale=e,this.particleSystem.startScale=e,this._elms.startScale&&this._elms.startScale.forEach((function(t){t.value=e}))}},{key:"endScale",get:function(){return this.options.endScale},set:function(e){this.options.endScale=e,this.particleSystem.endScale=e,this._elms.endScale&&this._elms.endScale.forEach((function(t){t.value=e}))}},{key:"emissionRate",get:function(){return this.options.emissionRate},set:function(e){this.options.emissionRate=e,this.particleSystem.emissionRate=e,this._elms.emissionRate&&this._elms.emissionRate.forEach((function(t){t.value=e}))}},{key:"particleSize",get:function(){return this.options.particleSize},set:function(e){this.options.particleSize=e,this.particleSystem.minimumImageSize=new Cesium.Cartesian2(e,e),this.particleSystem.maximumImageSize=new Cesium.Cartesian2(e,e),this._elms.particleSize&&this._elms.particleSize.forEach((function(t){t.value=e}))}},{key:"lng",get:function(){return this.options.lng},set:function(e){this.options.lng=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.lat},set:function(e){this.options.lat=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"alt",get:function(){return this.options.alt},set:function(e){this.options.alt=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e}))}},{key:"edit",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s=this,a=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.length>0&&void 0!==a[0]&&a[0],e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" particle-effects",(t=document.createElement("div")).innerHTML='\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 m\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
          \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 ',this._DialogObject.contentAppChild(t),i=new YJColorPicker({el:t.getElementsByClassName("start_color")[0],size:"mini",alpha:!0,defaultColor:this.startColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.startColor=e},clear:function(){s.startColor="rgba(255,255,255,1)"}}),n=new YJColorPicker({el:t.getElementsByClassName("end_color")[0],size:"mini",alpha:!0,defaultColor:this.endColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.endColor=e},clear:function(){s.endColor="rgba(255,255,255,1)"}}),o=t.getElementsByTagName("*"),yr.on(this,o),this._elms=yr.element,this._elms.startColor=[i],this._elms.endColor=[n],e.next=22;break;case 22:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.name=this.originalOptions.name,this.startColor=this.originalOptions.startColor,this.endColor=this.originalOptions.endColor,this.minimumSpeed=this.originalOptions.minimumSpeed,this.maximumSpeed=this.originalOptions.maximumSpeed,this.minimumParticleLife=this.originalOptions.minimumParticleLife,this.maximumParticleLife=this.originalOptions.maximumParticleLife,this.startScale=this.originalOptions.startScale,this.endScale=this.originalOptions.endScale,this.emissionRate=this.originalOptions.emissionRate,this.particleSize=this.originalOptions.particleSize,this.lng=this.originalOptions.lng,this.lat=this.originalOptions.lat,this.alt=this.originalOptions.alt,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"remove",value:(i=_()(S.a.mark((function e(){var i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return kr(t,"remove",this,3)([]),this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),e.next=8,this.sdk.removeIncetance(this.options.id);case 8:if(i=Object(J.getSdk)().sdkD,this.sdk===i){e.next=12;break}return e.next=12,Object(J.syncData)(this.sdk,this.options.id);case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(this.sdk&&this.sdk.viewer&&this.entity)if(this.operate.positionEditing=e,!0===e){var i;this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.picking=!1,this.previous={positions:Cr({},this.entity.position)},this.event.mouse_move((function(e,n){i=e.endPosition;var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt;var s=Cesium.Cartographic.fromDegrees(t.options.lng,t.options.lat,t.options.alt),a=t.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(s);t.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(a),t._elms.lng&&t._elms.lng.forEach((function(e){e.value=t.options.lng})),t._elms.lat&&t._elms.lat.forEach((function(e){e.value=t.options.lat})),t._elms.alt&&t._elms.alt.forEach((function(e){e.value=t.options.alt})),t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,n){if(!i||i.x!==e.position.x||i.y!==e.position.y-2){var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt}t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:Cr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t._positionEditingCallback&&(t._positionEditingCallback(),t._positionEditingCallback=null),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.lng=e.lng,t.options.lat=e.lat,t.options.alt=e.alt,t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:Cr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))}else{if(this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy(),!this.sdk||!this.sdk.viewer||!this.entity)return;this.options.lng=this.entity.position.lng,this.options.lat=this.entity.position.lat,this.options.alt=this.entity.position.alt;var n=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(o),this._elms.lng&&this._elms.lng.forEach((function(e){e.value=t.options.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.value=t.options.lat})),this._elms.alt&&this._elms.alt.forEach((function(e){e.value=t.options.alt}))}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"flicker",value:function(){}}]);var i,n,o,s}(vt);function xr(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Sr(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Sr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Sr(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=Mr(this,t,[e,i])).options.url=i.url,n.options.startColor=i.startColor||"#c1f7f24d",n.options.endColor=i.endColor||"#ffffff00",n.options.startScale=i.startScale||1,n.options.endScale=i.endScale||20,n.options.minimumParticleLife=i.minimumParticleLife||6,n.options.maximumParticleLife=i.maximumParticleLife||7,n.options.minimumSpeed=i.minimumSpeed||9,n.options.maximumSpeed=i.maximumSpeed||9.5,n.options.emissionRate=i.emissionRate||20,n.options.particleSize=i.particleSize||.5,n.options.show=!1!==i.show,n._elms={},n.positionCallBack=null,n.rotationCallback=null,n.onClickCallback=null,n._DialogObject=null,n._element=null,n.particleSystem,n.sdk.addIncetance(n.options.id,n),n.add(),n.operate={},n.previous={positions:{lng:n.options.lng,lat:n.options.lat,alt:n.options.alt}},n.Dialog=o,n.event=new te.a(n.sdk),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"ParticleEffects"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){var t=Object(J.getSdk)().sdkD;this.isShowView&&t||(this.options.show=e),this.showView&&3!=this.showView&&t?(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=!1),this.options.label&&this.options.label.show&&(this.label.show=!1)):(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=this.options.show),this.options.label&&this.options.label.show&&(this.label.show=this.options.show)),this._DialogObject&&this._DialogObject.showBtn&&(this._DialogObject.showBtn.checked=e),Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id),this.isShowView=!1}else console.error("参数必须为boolean")}},{key:"add",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u=function(){var e=Cesium.HeadingPitchRoll.fromDegrees(0,0,0),t=new Cesium.TranslationRotationScale;//!!!发射粒子的方向 +return t.translation=Cesium.Cartesian3.fromElements(0,0,0),t.rotation=Cesium.Quaternion.fromHeadingPitchRoll(e),Cesium.Matrix4.fromTranslationRotationScale(t)},c=function(e,i){e._billboard.id=t.options.id;var n=e.position;Cesium.Cartesian3.normalize(n,r),Cesium.Cartesian3.multiplyByScalar(r,l*i,r),e.velocity=Cesium.Cartesian3.add(e.velocity,r,e.velocity)},t=this,this.originalOptions=this.deepCopyObj(this.options),i=this.sdk.viewer.scene,new Cesium.Cartesian3,n=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n),s=Cesium.Transforms.eastNorthUpToFixedFrame(o),Cesium.Matrix4.multiplyByScale(s,new Cesium.Cartesian3(1,1,1),s),a=this.sdk.viewer.camera.positionCartographic.height,this.particleSystem=i.primitives.add(new Cesium.ParticleSystem({show:!(a>=1e7)&&this.options.show,image:this.options.url||this.getSourceRootPath()+"/img/particlesystem/fountain.png",startColor:Cesium.Color.fromCssColorString(this.options.startColor),endColor:Cesium.Color.fromCssColorString(this.options.endColor),startScale:this.options.startScale,endScale:this.options.endScale,minimumParticleLife:this.options.minimumParticleLife,maximumParticleLife:this.options.maximumParticleLife,minimumSpeed:this.options.minimumSpeed,maximumSpeed:this.options.maximumSpeed,lifetime:.5,imageSize:new Cesium.Cartesian2(this.options.particleSize,2*this.options.particleSize),sizeInMeters:!0,emissionRate:this.options.emissionRate,loop:!0,emitter:new Cesium.ConeEmitter(Cesium.Math.toRadians(.2)),modelMatrix:s,emitterModelMatrix:u(),updateCallback:c})),r=new Cesium.Cartesian3,l=-3.5,this.particleSystem.id=this.options.id,this.entity=this.particleSystem,this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},Object(J.syncData)(this.sdk,this.options.id),this.options.show&&Object(Z.setSplitDirection)(0,this.options.id),this.sdk.viewer.camera.changed.addEventListener((function(){if(h.entity&&h.show){var e=h.sdk.viewer.camera.positionCartographic.height;h.entity.show=!(e>=1e7)}}));case 21:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Or({},this.options.position):this.options.positions?r=Or({},this.options.positions[0]):this.options.center?r=Or({},this.options.center):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=26;break;case 25:this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.lng,this.options.lat,this.options.alt+500),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)}});case 26:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"startColor",get:function(){return this.options.startColor},set:function(e){var t=this;this.options.startColor=e,this.particleSystem.startColor=Cesium.Color.fromCssColorString(e),this._elms.startColor&&this._elms.startColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.startColor=e},clear:function(){t.startColor="rgba(255,255,255,1)"}});t._elms.startColor[n]=o}))}},{key:"endColor",get:function(){return this.options.endColor},set:function(e){var t=this;this.options.endColor=e,this.particleSystem.endColor=Cesium.Color.fromCssColorString(e),this._elms.endColor&&this._elms.endColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.endColor=e},clear:function(){t.endColor="rgba(255,255,255,1)"}});t._elms.endColor[n]=o}))}},{key:"minimumSpeed",get:function(){return this.options.minimumSpeed},set:function(e){this.options.minimumSpeed=e,this.particleSystem.minimumSpeed=e,this._elms.minimumSpeed&&this._elms.minimumSpeed.forEach((function(t){t.value=e}))}},{key:"maximumSpeed",get:function(){return this.options.maximumSpeed},set:function(e){this.options.maximumSpeed=e,this.particleSystem.maximumSpeed=e,this._elms.maximumSpeed&&this._elms.maximumSpeed.forEach((function(t){t.value=e}))}},{key:"minimumParticleLife",get:function(){return this.options.minimumParticleLife},set:function(e){this.options.minimumParticleLife=Number(e),this.particleSystem.minimumParticleLife=Number(e),this._elms.minimumParticleLife&&this._elms.minimumParticleLife.forEach((function(t){t.value=Number(e)}))}},{key:"maximumParticleLife",get:function(){return this.options.maximumParticleLife},set:function(e){this.options.maximumParticleLife=Number(e),this.particleSystem.maximumParticleLife=Number(e),this._elms.maximumParticleLife&&this._elms.maximumParticleLife.forEach((function(t){t.value=Number(e)}))}},{key:"startScale",get:function(){return this.options.startScale},set:function(e){this.options.startScale=e,this.particleSystem.startScale=e,this._elms.startScale&&this._elms.startScale.forEach((function(t){t.value=e}))}},{key:"endScale",get:function(){return this.options.endScale},set:function(e){this.options.endScale=e,this.particleSystem.endScale=e,this._elms.endScale&&this._elms.endScale.forEach((function(t){t.value=e}))}},{key:"emissionRate",get:function(){return this.options.emissionRate},set:function(e){this.options.emissionRate=e,this.particleSystem.emissionRate=e,this._elms.emissionRate&&this._elms.emissionRate.forEach((function(t){t.value=e}))}},{key:"particleSize",get:function(){return this.options.particleSize},set:function(e){this.options.particleSize=e,this.particleSystem.minimumImageSize=new Cesium.Cartesian2(e,e),this.particleSystem.maximumImageSize=new Cesium.Cartesian2(e,e),this._elms.particleSize&&this._elms.particleSize.forEach((function(t){t.value=e}))}},{key:"lng",get:function(){return this.options.lng},set:function(e){this.options.lng=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.lat},set:function(e){this.options.lat=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"alt",get:function(){return this.options.alt},set:function(e){this.options.alt=e;var t=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e}))}},{key:"edit",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s=this,a=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.length>0&&void 0!==a[0]&&a[0],e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" particle-effects",(t=document.createElement("div")).innerHTML='\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 m\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
          \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 ',this._DialogObject.contentAppChild(t),i=new YJColorPicker({el:t.getElementsByClassName("start_color")[0],size:"mini",alpha:!0,defaultColor:this.startColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.startColor=e},clear:function(){s.startColor="rgba(255,255,255,1)"}}),n=new YJColorPicker({el:t.getElementsByClassName("end_color")[0],size:"mini",alpha:!0,defaultColor:this.endColor,disabled:!1,openPickerAni:"opacity",sure:function(e){s.endColor=e},clear:function(){s.endColor="rgba(255,255,255,1)"}}),o=t.getElementsByTagName("*"),Pr.on(this,o),this._elms=Pr.element,this._elms.startColor=[i],this._elms.endColor=[n],e.next=22;break;case 22:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.name=this.originalOptions.name,this.startColor=this.originalOptions.startColor,this.endColor=this.originalOptions.endColor,this.minimumSpeed=this.originalOptions.minimumSpeed,this.maximumSpeed=this.originalOptions.maximumSpeed,this.minimumParticleLife=this.originalOptions.minimumParticleLife,this.maximumParticleLife=this.originalOptions.maximumParticleLife,this.startScale=this.originalOptions.startScale,this.endScale=this.originalOptions.endScale,this.emissionRate=this.originalOptions.emissionRate,this.particleSize=this.originalOptions.particleSize,this.lng=this.originalOptions.lng,this.lat=this.originalOptions.lat,this.alt=this.originalOptions.alt,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"remove",value:(i=_()(S.a.mark((function e(){var i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Tr(t,"remove",this,3)([]),this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),e.next=8,this.sdk.removeIncetance(this.options.id);case 8:if(i=Object(J.getSdk)().sdkD,this.sdk===i){e.next=12;break}return e.next=12,Object(J.syncData)(this.sdk,this.options.id);case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(this.sdk&&this.sdk.viewer&&this.entity)if(this.operate.positionEditing=e,!0===e){var i;this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.picking=!1,this.previous={positions:Or({},this.entity.position)},this.event.mouse_move((function(e,n){i=e.endPosition;var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt;var s=Cesium.Cartographic.fromDegrees(t.options.lng,t.options.lat,t.options.alt),a=t.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(s);t.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(a),t._elms.lng&&t._elms.lng.forEach((function(e){e.value=t.options.lng})),t._elms.lat&&t._elms.lat.forEach((function(e){e.value=t.options.lat})),t._elms.alt&&t._elms.alt.forEach((function(e){e.value=t.options.alt})),t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,n){if(!i||i.x!==e.position.x||i.y!==e.position.y-2){var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.lng=o.lng,t.options.lat=o.lat,t.options.alt=o.alt}t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:Or({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t._positionEditingCallback&&(t._positionEditingCallback(),t._positionEditingCallback=null),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.lng=e.lng,t.options.lat=e.lat,t.options.alt=e.alt,t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:Or({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))}else{if(this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy(),!this.sdk||!this.sdk.viewer||!this.entity)return;this.options.lng=this.entity.position.lng,this.options.lat=this.entity.position.lat,this.options.alt=this.entity.position.alt;var n=Cesium.Cartographic.fromDegrees(this.options.lng,this.options.lat,this.options.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(o),this._elms.lng&&this._elms.lng.forEach((function(e){e.value=t.options.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.value=t.options.lat})),this._elms.alt&&this._elms.alt.forEach((function(e){e.value=t.options.alt}))}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"flicker",value:function(){}}]);var i,n,o,s}(vt);function Br(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return jr(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?jr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function jr(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=Ir(this,t,[e,i])).options.url=i.url,n.options.startColor=i.startColor||"#c1f7f2",n.options.endColor=i.endColor||"#ffffff00",n.options.startScale=i.startScale||.2,n.options.endScale=i.endScale||2,n.options.minimumParticleLife=i.minimumParticleLife||12,n.options.maximumParticleLife=i.maximumParticleLife||12,n.options.emissionRate=i.emissionRate||100,n.options.particleSize=i.particleSize||1,n.options.show=!1!==i.show,n._elms={},n.positionCallBack=null,n.rotationCallback=null,n.onClickCallback=null,n._DialogObject=null,n._element=null,n.particleSystem,n.sdk.addIncetance(n.options.id,n),n.add(),n.operate={},n.previous={positions:{lng:n.options.start.lng,lat:n.options.start.lat,alt:n.options.start.alt}},n.Dialog=o,n.event=new te.a(n.sdk),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"ParticleEffects"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){var t=Object(J.getSdk)().sdkD;this.isShowView&&t||(this.options.show=e),this.showView&&3!=this.showView&&t?(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=!1),this.options.label&&this.options.label.show&&(this.label.show=!1)):(this.entity&&this.sdk.viewer.camera.positionCartographic.height<1e7&&(this.entity.show=this.options.show),this.options.label&&this.options.label.show&&(this.label.show=this.options.show)),this._DialogObject&&this._DialogObject.showBtn&&(this._DialogObject.showBtn.checked=e),Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id),this.isShowView=!1}else console.error("参数必须为boolean")}},{key:"add",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y,b,C=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:b=function(e,t){var i=new Cesium.Cartesian3,n=Cesium.Transforms.eastNorthUpToFixedFrame(e);return Cesium.Matrix4.inverse(n,n),Cesium.Matrix4.multiplyByPoint(n,t,i),Cesium.Cartesian3.normalize(i,i),Cesium.Math.toDegrees(Math.atan2(i.x,i.y))},y=function(){var e=Cesium.HeadingPitchRoll.fromDegrees(t.options.heading+90,t.options.pitch,0),i=new Cesium.TranslationRotationScale;//!!!发射粒子的方向 +return i.translation=Cesium.Cartesian3.fromElements(0,0,1),i.rotation=Cesium.Quaternion.fromHeadingPitchRoll(e),Cesium.Matrix4.fromTranslationRotationScale(i)},g=function(e,i){e._billboard.id=t.options.id;var n=e.position;Cesium.Cartesian3.normalize(n,a),Cesium.Cartesian3.multiplyByScalar(a,r*i,a),e.velocity=Cesium.Cartesian3.add(e.velocity,a,e.velocity)},t=this,this.originalOptions=this.deepCopyObj(this.options),i=this.sdk.viewer.scene,n=Cesium.Cartographic.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n),s=Cesium.Transforms.eastNorthUpToFixedFrame(o),Cesium.Matrix4.multiplyByScale(s,new Cesium.Cartesian3(1,1,1),s),a=new Cesium.Cartesian3,r=-3.8,l=Cesium.Cartesian3.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),c=Cesium.Cartesian3.fromDegrees(this.options.end.lng,this.options.end.lat,this.options.end.alt),this.options.heading||0===this.options.heading||(this.options.heading=b(l,c)),u=this.options.end.alt-this.options.start.alt,h=Cesium.Cartesian3.distance(l,Cesium.Cartesian3.fromDegrees(this.options.end.lng,this.options.end.lat,this.options.start.alt)),p=u?2*u/h:0,d=Math.atan(p)*(180/Math.PI),m=Math.sqrt(Math.abs(p)*h/-r),f=-r*m/Math.abs(Math.cos(d)),this.options.pitch||0===this.options.pitch||(this.options.pitch=90-d),this.options.speed||0===this.options.speed||(this.options.speed=f),v=this.sdk.viewer.camera.positionCartographic.height,this.particleSystem=i.primitives.add(new Cesium.ParticleSystem({show:!(v>=1e7)&&this.options.show,image:this.options.url||this.getSourceRootPath()+"/img/particlesystem/smoke.png",startColor:Cesium.Color.fromCssColorString(this.options.startColor),endColor:Cesium.Color.fromCssColorString(this.options.endColor),startScale:this.options.startScale,endScale:this.options.endScale,minimumParticleLife:this.options.minimumParticleLife,maximumParticleLife:this.options.maximumParticleLife,minimumSpeed:this.options.speed,maximumSpeed:this.options.speed,lifetime:.5,imageSize:new Cesium.Cartesian2(this.options.particleSize,2*this.options.particleSize),sizeInMeters:!0,emissionRate:this.options.emissionRate,loop:!0,emitter:new Cesium.CircleEmitter(.2),modelMatrix:s,emitterModelMatrix:y(),updateCallback:g})),this.particleSystem.id=this.options.id,this.entity=this.particleSystem,this.entity.position={lng:this.options.start.lng,lat:this.options.start.lat,alt:this.options.start.alt},Object(J.syncData)(this.sdk,this.options.id),this.options.show&&Object(Z.setSplitDirection)(0,this.options.id),this.sdk.viewer.camera.changed.addEventListener((function(){if(C.entity&&C.show){var e=C.sdk.viewer.camera.positionCartographic.height;C.entity.show=!(e>=1e7)}}));case 31:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Lr({},this.options.position):this.options.positions?r=Lr({},this.options.positions[0]):this.options.line&&this.options.line.positions?r=Lr({},this.options.line.positions[0]):this.options.center?r=Lr({},this.options.center):this.options.start?r=Lr({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=24;break;case 23:this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt+500),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)}});case 24:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"startColor",get:function(){return this.options.startColor},set:function(e){var t=this;this.options.startColor=e,this.particleSystem.startColor=Cesium.Color.fromCssColorString(e),this._elms.startColor&&this._elms.startColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.startColor=e},clear:function(){t.startColor="rgba(255,255,255,1)"}});t._elms.startColor[n]=o}))}},{key:"endColor",get:function(){return this.options.endColor},set:function(e){var t=this;this.options.endColor=e,this.particleSystem.endColor=Cesium.Color.fromCssColorString(e),this._elms.endColor&&this._elms.endColor.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.endColor=e},clear:function(){t.endColor="rgba(255,255,255,1)"}});t._elms.endColor[n]=o}))}},{key:"speed",get:function(){return this.options.speed},set:function(e){this.options.speed=Number(e),this.particleSystem.minimumSpeed=Number(e),this.particleSystem.maximumSpeed=Number(e),this._elms.speed&&this._elms.speed.forEach((function(t){t.value=Number(e)}))}},{key:"minimumParticleLife",get:function(){return this.options.minimumParticleLife},set:function(e){this.options.minimumParticleLife=Number(e),this.particleSystem.minimumParticleLife=Number(e),this._elms.minimumParticleLife&&this._elms.minimumParticleLife.forEach((function(t){t.value=Number(e)}))}},{key:"maximumParticleLife",get:function(){return this.options.maximumParticleLife},set:function(e){this.options.maximumParticleLife=Number(e),this.particleSystem.maximumParticleLife=Number(e),this._elms.maximumParticleLife&&this._elms.maximumParticleLife.forEach((function(t){t.value=Number(e)}))}},{key:"startScale",get:function(){return this.options.startScale},set:function(e){this.options.startScale=Number(e),this.particleSystem.startScale=Number(e),this._elms.startScale&&this._elms.startScale.forEach((function(t){t.value=Number(e)}))}},{key:"endScale",get:function(){return this.options.endScale},set:function(e){this.options.endScale=Number(e),this.particleSystem.endScale=Number(e),this._elms.endScale&&this._elms.endScale.forEach((function(t){t.value=Number(e)}))}},{key:"emissionRate",get:function(){return this.options.emissionRate},set:function(e){this.options.emissionRate=Number(e),this.particleSystem.emissionRate=Number(e),this._elms.emissionRate&&this._elms.emissionRate.forEach((function(t){t.value=Number(e)}))}},{key:"particleSize",get:function(){return this.options.particleSize},set:function(e){this.options.particleSize=Number(e),this.particleSystem.minimumImageSize=new Cesium.Cartesian2(Number(e),2*Number(e)),this.particleSystem.maximumImageSize=new Cesium.Cartesian2(Number(e),2*Number(e)),this._elms.particleSize&&this._elms.particleSize.forEach((function(t){t.value=Number(e)}))}},{key:"lng",get:function(){return this.options.start.lng},set:function(e){this.options.start.lng=e;var t=Cesium.Cartographic.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.start.lng,lat:this.options.start.lat,alt:this.options.start.alt},this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.start.lat},set:function(e){this.options.start.lat=e;var t=Cesium.Cartographic.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.start.lng,lat:this.options.start.lat,alt:this.options.start.alt},this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"alt",get:function(){return this.options.start.alt},set:function(e){this.options.start.alt=e;var t=Cesium.Cartographic.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),i=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(t);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(i),this.entity.position={lng:this.options.start.lng,lat:this.options.start.lat,alt:this.options.start.alt},this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e}))}},{key:"heading",get:function(){return this.options.heading},set:function(e){this.options.heading=Number(e);var t=Cesium.HeadingPitchRoll.fromDegrees(this.options.heading+90,this.options.pitch,0),i=new Cesium.TranslationRotationScale;//!!!发射粒子的方向 +i.translation=Cesium.Cartesian3.fromElements(0,0,1),i.rotation=Cesium.Quaternion.fromHeadingPitchRoll(t);var n=Cesium.Matrix4.fromTranslationRotationScale(i);this.particleSystem.emitterModelMatrix=n,this._elms.heading&&this._elms.heading.forEach((function(t){t.value=Number(e)}))}},{key:"pitch",get:function(){return this.options.pitch},set:function(e){this.options.pitch=Number(e);var t=Cesium.HeadingPitchRoll.fromDegrees(this.options.heading+90,this.options.pitch,0),i=new Cesium.TranslationRotationScale;//!!!发射粒子的方向 +i.translation=Cesium.Cartesian3.fromElements(0,0,1),i.rotation=Cesium.Quaternion.fromHeadingPitchRoll(t);var n=Cesium.Matrix4.fromTranslationRotationScale(i);this.particleSystem.emitterModelMatrix=n,this._elms.pitch&&this._elms.pitch.forEach((function(t){t.value=Number(e)}))}},{key:"edit",value:(n=_()(S.a.mark((function e(){var i,n,o,s,a,r=this,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=l.length>0&&void 0!==l[0]&&l[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!i){e.next=20;break}return e.next=7,new Be(this.sdk,this.originalOptions,{title:"喷射水柱属性",left:"180px",top:"100px",confirmCallBack:function(e){r.name=r.name.trim(),r.name||(r.name="未命名对象"),r.originalOptions=r.deepCopyObj(r.options),r._DialogObject.close(),r.Dialog.confirmCallBack&&r.Dialog.confirmCallBack(r.originalOptions),Object(J.syncData)(r.sdk,r.options.id),Object(Z.syncSplitData)(r.sdk,r.options.id)},resetCallBack:function(){r.reset(),r.Dialog.resetCallBack&&r.Dialog.resetCallBack()},removeCallBack:function(){r.Dialog.removeCallBack&&r.Dialog.removeCallBack()},closeCallBack:function(){r.reset(),r.positionEditing=!1,r.Dialog.closeCallBack&&r.Dialog.closeCallBack()},showCallBack:function(e){r.show=e,r.Dialog.showCallBack&&r.Dialog.showCallBack()},translationalCallBack:function(){r.positionEditing=!r.positionEditing}},!0);case 7:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" particle-effects",(n=document.createElement("div")).innerHTML='\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 m\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
          \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 ',this._DialogObject.contentAppChild(n),o=new YJColorPicker({el:n.getElementsByClassName("start_color")[0],size:"mini",alpha:!0,defaultColor:this.startColor,disabled:!1,openPickerAni:"opacity",sure:function(e){r.startColor=e},clear:function(){r.startColor="rgba(255,255,255,1)"}}),s=new YJColorPicker({el:n.getElementsByClassName("end_color")[0],size:"mini",alpha:!0,defaultColor:this.endColor,disabled:!1,openPickerAni:"opacity",sure:function(e){r.endColor=e},clear:function(){r.endColor="rgba(255,255,255,1)"}}),a=n.getElementsByTagName("*"),t.EventBinding(this,a),this._elms.startColor=[o],this._elms.endColor=[s],e.next=20;break;case 20:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.name=this.originalOptions.name,this.startColor=this.originalOptions.startColor,this.endColor=this.originalOptions.endColor,this.speed=this.originalOptions.speed,this.minimumParticleLife=this.originalOptions.minimumParticleLife,this.maximumParticleLife=this.originalOptions.maximumParticleLife,this.startScale=this.originalOptions.startScale,this.endScale=this.originalOptions.endScale,this.emissionRate=this.originalOptions.emissionRate,this.particleSize=this.originalOptions.particleSize,this.lng=this.originalOptions.start.lng,this.lat=this.originalOptions.start.lat,this.alt=this.originalOptions.start.alt,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"remove",value:(i=_()(S.a.mark((function e(){var i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Rr(t,"remove",this,3)([]),this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),e.next=8,this.sdk.removeIncetance(this.options.id);case 8:if(i=Object(J.getSdk)().sdkD,this.sdk===i){e.next=12;break}return e.next=12,Object(J.syncData)(this.sdk,this.options.id);case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(this.sdk&&this.sdk.viewer&&this.entity)if(this.operate.positionEditing=e,!0===e){var i;this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.picking=!1,this.previous={positions:Lr({},this.entity.position)},this.event.mouse_move((function(e,n){i=e.endPosition;var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.start.lng=o.lng,t.options.start.lat=o.lat,t.options.start.alt=o.alt;var s=Cesium.Cartographic.fromDegrees(t.options.start.lng,t.options.start.lat,t.options.start.alt),a=t.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(s);t.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(a),t._elms.lng&&t._elms.lng.forEach((function(e){e.value=t.options.start.lng})),t._elms.lat&&t._elms.lat.forEach((function(e){e.value=t.options.start.lat})),t._elms.alt&&t._elms.alt.forEach((function(e){e.value=t.options.start.alt})),t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,n){if(!i||i.x!==e.position.x||i.y!==e.position.y-2){var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.options.start.lng=o.lng,t.options.start.lat=o.lat,t.options.start.alt=o.alt}t.entity.position={lng:t.options.start.lng,lat:t.options.start.lat,alt:t.options.start.alt},t.previous={positions:Lr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t._positionEditingCallback&&(t._positionEditingCallback(),t._positionEditingCallback=null),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.options.start.lng=t.entity.position.lng,t.options.start.lat=t.entity.position.lat,t.options.start.alt=t.entity.position.alt,t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.options.lng=t.entity.position.lng,t.options.lat=t.entity.position.lat,t.options.alt=t.entity.position.alt,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.lng=e.lng,t.options.lat=e.lat,t.options.alt=e.alt,t.entity.position={lng:t.options.lng,lat:t.options.lat,alt:t.options.alt},t.previous={positions:Lr({},t.entity.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))}else{if(this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy(),!this.sdk||!this.sdk.viewer||!this.entity)return;this.options.start.lng=this.entity.position.lng,this.options.start.lat=this.entity.position.lat,this.options.start.alt=this.entity.position.alt;var n=Cesium.Cartographic.fromDegrees(this.options.start.lng,this.options.start.lat,this.options.start.alt),o=this.sdk.viewer.scene.globe.ellipsoid.cartographicToCartesian(n);this.entity.modelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(o),this._elms.lng&&this._elms.lng.forEach((function(e){e.value=t.options.start.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.value=t.options.start.lat})),this._elms.alt&&this._elms.alt.forEach((function(e){e.value=t.options.start.alt}))}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"flicker",value:function(){}}],[{key:"EventBinding",value:function(e,t){for(var i=function(){var i=[],o=!1,s=[];if(!t[n]||!t[n].attributes)return 1;var a,r=Br(t[n].attributes);try{var l=function(){var r=a.value;switch(r.name){case"@model":o=!0,"checkbox"==t[n].type?(i.push((function(t){e[r.value]=t.target.checked})),t[n].checked=e[r.value]):(i.push((function(t){var i=t.target.value;"number"==t.target.type?"."==t.data||"-"==t.data&&!t.target.value||(i=Number(i),t.target.max&&i>Number(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i\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 m\n \n
          \n
          \n \x3c!--
          \n 拉伸高度\n \n
          --\x3e\n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function Hr(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Vr(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Vr(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Vr(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Ur(this,t,[e,n])).options.color=n.color||"#ff0000",i.options.show=!n.show&&!1!==n.show||n.show,i.options.height=n.height||0===n.height?n.height:10,i.options.height<=.01&&(i.options.height=.01),i.options.extrudedHeight=n.extrudedHeight||0===n.extrudedHeight?n.extrudedHeight:0,i.entity,i.nodePoints=[],i.operate={},n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.richTextContent=n.richTextContent||"",i._elms={},i.Dialog=o,!i.options.positions||i.options.positions.length<3?(i._error="多面体最少需要三个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500})):(i.sdk.addIncetance(i.options.id,i),t.create(i)),i}return Me()(t,e),h()(t,[{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;if(!YJ.Measure.GetMeasureStatus()&&this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polygon){var i=this;if(this.event&&this.event.destroy(),this.event=new te.a(this.sdk),this.operate.positionEditing=e,this.previous={positions:nt()(this.positions)},!0===e){var n;this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.label&&(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,0.9)"));var o=Cesium.Color.fromCssColorString(this.options.color).withAlpha(.99);2===this.sdk.viewer.scene.mode&&(o=new Cesium.CustomColorMaterialSource({color:this.options.color})),this.entity.polygon.material=o,this.picking=!1;for(var s=[],a=this.positions,r=[],l=0;l=500)t.positionEditing=!1;else{t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.event.destroy();var e=t.cartesian3Towgs84(i,t.sdk.viewer),o=Cesium.Cartesian3.fromDegrees(e.lng,e.lat);f=[],t.options.positions=[];for(var s=0;s0?new Cesium.PolygonHierarchy(f):new Cesium.PolygonHierarchy(a)}),!1)}else{this.label&&this.label.entity&&this.label.entity.billboard&&(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)"));var v=Cesium.Color.fromCssColorString(this.options.color);2===this.sdk.viewer.scene.mode&&(v=new Cesium.CustomColorMaterialSource({color:this.options.color})),this.entity.polygon.material=v,this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){})),this.event.destroy()),this.tip&&this.tip.destroy();for(var g=[[]],y=0;ythis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0&&void 0!==arguments[0]?arguments[0]:function(){},t=this;if(t.positionEditing=!1,YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var i,n;YJ.Measure.SetMeasureStatus(!0),t.tip=new St.a("请选择一个顶点,右键取消",t.sdk),t.event=new te.a(t.sdk),t.nodePoints=[];var o=!1,s=function(e,s){if(i){t.options.positions[i.index]=t.cartesian3Towgs84(s,t.sdk.viewer),n=t.options.positions[i.index],o=!0;var a=t.sdk.viewer.entities.add({name:"node-secondary-edit-point",position:Cesium.Cartesian3.fromDegrees(t.options.positions[i.index].lng,t.options.positions[i.index].lat,t.options.extrudedHeight),billboard:{image:t.getSourceRootPath()+"/img/point.png",width:15,height:15,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}});t.nodePoints.splice(i.index,0,a),t.options.positions.splice(i.index,0,t.options.positions[i.index]),t.areaByMeter=t.computeArea(t.options.positions),t.areaChangeCallBack&&t.areaChangeCallBack();for(var r=[[]],l=0;l=4){var c=turf.polygon(r),u=turf.centroid(c);t.label.position=[u.geometry.coordinates[0],u.geometry.coordinates[1],t.options.height+t.options.extrudedHeight]}}else{var h=t.sdk.viewer.scene.pick(e.position);h&&h.id&&h.id.name&&"node-secondary-edit-point"===h.id.name&&(i=h.id,t.nodePoints.splice(h.id.index,1),t.sdk.viewer.entities.remove(h.id),t.tip.set_text("左键确认,右键结束,CTRL+右键撤销"),n=t.cartesian3Towgs84(i.position._value,t.sdk.viewer))}},a=function(s,a){if(i){t.options.positions[i.index]=n,o&&t.options.positions.splice(i.index,1),t.areaByMeter=t.computeArea(t.options.positions),t.areaChangeCallBack&&t.areaChangeCallBack();for(var r=t.options.positions,l=[],c=0;c=4){var c=turf.polygon(r),u=turf.centroid(c);t.label.position=[u.geometry.coordinates[0],u.geometry.coordinates[1],t.options.height+t.options.extrudedHeight]}}t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),t.event.gesture_pinck_start((function(e,i){var n=new Date,o={position:{x:(e.position1.x+e.position2.x)/2,y:(e.position1.y+e.position2.y)/2}};t.event.gesture_pinck_end((function(){new Date-n>=500?a(o,i):s(o,i)}))})),t.event.mouse_right_keyboard_ctrl((function(e,n){i&&(t.options.positions.pop(),t.sdk.viewer.entities.remove(t.nodePoints[t.nodePoints.length-1]),i.index===t.options.positions.length&&(t.nodePoints[i.index-1]?i=t.nodePoints[i.index-1]:i.index=0),t.nodePoints.pop())}));for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;for(var i=[[]],n=0;ni[s].alt&&(o=i[s].alt);e.options.extrudedHeight=o;for(var a=0;a\n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function Xr(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function Zr(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=Kr(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"#ff000080",i.options.show=!n.show&&!1!==n.show||n.show,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.positions=n.positions||[],i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",i.entity,i.event=new te.a(i.sdk),i.operate={},i._elms={},i.Dialog=o,n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.richTextContent=n.richTextContent||"",delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.nodePoints=[],!i.options.positions||i.options.positions.length<3)i._error="集结地最少需要三个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500});else{if(!i.options.height&&0!==i.options.height){for(var s=i.options.positions[0].alt,a=1;athis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t'.concat(i+1,'\n
          \n
          \n
          \n ');var s=o.getElementsByClassName("lng")[0],a=document.createElement("span");a.innerHTML=n.options.positions[i].lng.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-180,r.max=180,r.value=n.options.positions[i].lng.toFixed(8);var l=o.getElementsByClassName("lat")[0],c=document.createElement("span");c.innerHTML=n.options.positions[i].lat.toFixed(8),l.appendChild(c);var u=document.createElement("input");u.className="input",u.type="number",u.title="",u.min=-90,u.max=90,u.value=n.options.positions[i].lat.toFixed(8);var h=o.getElementsByClassName("alt")[0],p=document.createElement("span");p.innerHTML=n.height.toFixed(2),h.appendChild(p);var d=document.createElement("input");d.className="input",d.type="number",d.title="",d.min=-9999999,d.max=999999999,d.value=n.height.toFixed(2),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(n.options.positions[i].lng.toFixed(8)),s.appendChild(r),r.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),r.addEventListener("blur",(function(){r.value=Number(n.options.positions[i].lng.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){n.options.positions[i].lng=Number(Number(r.value).toFixed(8)),a.innerHTML=n.options.positions[i].lng.toFixed(8),n.height=n.height})),l.addEventListener("dblclick",(function(){l.innerHTML="",u.value=Number(n.options.positions[i].lat.toFixed(8)),l.appendChild(u),u.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),u.addEventListener("blur",(function(){u.value=Number(n.options.positions[i].lat.toFixed(8)),l.innerHTML="",l.appendChild(c)})),u.addEventListener("input",(function(){n.options.positions[i].lat=Number(Number(u.value).toFixed(8)),c.innerHTML=n.options.positions[i].lat.toFixed(8),n.height=n.height})),h.addEventListener("dblclick",(function(){2!=n.heightMode&&(h.innerHTML="",d.value=Number(n.height.toFixed(2)),h.appendChild(d),d.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode)})),d.addEventListener("blur",(function(){d.value=Number(n.height.toFixed(2)),h.innerHTML="",h.appendChild(p)})),d.addEventListener("input",(function(){n.height=Number(Number(d.value).toFixed(2)),p.innerHTML=Number(n.height.toFixed(2))})),n._elms.lng.push(a),n._elms.lngInput.push(r),n._elms.lat.push(c),n._elms.latInput.push(u),n._elms.alt.push(p),n._elms.altInput.push(d),e.appendChild(o)},o=0;o0&&void 0!==f[0]?f[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Zr({},this.options.position):this.options.positions?r=Zr({},this.options.positions[0]):this.options.center?r=Zr({},this.options.center):this.options.start?r=Zr({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=51;break;case 25:l=[],e.t0=this.heightMode,e.next=0===e.t0||"0"===e.t0?29:1===e.t0||"1"===e.t0?31:2===e.t0||"2"===e.t0?33:35;break;case 29:case 31:return c=!1,e.abrupt("break",35);case 33:return c=!0,e.abrupt("break",35);case 35:if(!c){e.next=48;break}u=0;case 37:if(!(u=500)t.positionEditing=!1;else{t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),m=[];for(var e=0;e0)for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:function(){};if(this.positionEditing=!1,YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var i=function(){var e=_()(S.a.mark((function e(){var t,i,n,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=nt()(s.sdk.viewer.entities.values),i=0;case 2:if(!(i=3?[].concat(nt()(e),[e[0],e[1]]):nt()(e)}),!1);for(var h=[[]],p=[],d=0;d=500?u():c(o,i)}))})),i()}),200)}}},{key:"closeNodeEdit",value:function(){YJ.Measure.SetMeasureStatus(!1),this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.tip=null;for(var e=0;e0)for(var v=0;v=3?[].concat(nt()(g),[g[0],g[1]]):nt()(g)}),!1))}},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=this.computeAssemble(this.options.positions);if(0!=i.length){for(var n=[[]],o=0;o\n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n 动画时长\n
          \n \n ms\n \n
          \n
          \n
          \n
          \n
          \n 动画\n \n
          \n
          \n 动画重复\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function el(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return tl(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?tl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function tl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=ol(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"#ff000080",i.options.show=!n.show&&!1!==n.show||n.show,i.options.positions=n.positions||[],i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",i.entity,i.event=new te.a(i.sdk),i.operate={},i._elms={},i.nodePoints=[],i.Dialog=o,i.options.loop=n.loop||!1,i.options.spreadState=n.spreadState||!1,i.spreadTime=n.spreadTime,n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontFamily:n.label.fontFamily?n.label.fontFamily:0,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",!i.options.positions||i.options.positions.length<3)i._error="箭头面最少需要三个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500});else{if(!i.options.height&&0!==i.options.height){for(var s=i.options.positions[0].alt,a=1;athis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t'.concat(i+1,'\n
          \n
          \n
          \n ');var s=o.getElementsByClassName("lng")[0],a=document.createElement("span");a.innerHTML=n.options.positions[i].lng.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-180,r.max=180,r.value=n.options.positions[i].lng.toFixed(8);var l=o.getElementsByClassName("lat")[0],c=document.createElement("span");c.innerHTML=n.options.positions[i].lat.toFixed(8),l.appendChild(c);var u=document.createElement("input");u.className="input",u.type="number",u.title="",u.min=-90,u.max=90,u.value=n.options.positions[i].lat.toFixed(8);var h=o.getElementsByClassName("alt")[0],p=document.createElement("span");p.innerHTML=n.height.toFixed(2),h.appendChild(p);var d=document.createElement("input");d.className="input",d.type="number",d.title="",d.min=-9999999,d.max=999999999,d.value=n.height.toFixed(2),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(n.options.positions[i].lng.toFixed(8)),s.appendChild(r),r.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),r.addEventListener("blur",(function(){r.value=Number(n.options.positions[i].lng.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){n.options.positions[i].lng=Number(Number(r.value).toFixed(8)),a.innerHTML=n.options.positions[i].lng.toFixed(8),n.height=n.height})),l.addEventListener("dblclick",(function(){l.innerHTML="",u.value=Number(n.options.positions[i].lat.toFixed(8)),l.appendChild(u),u.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),u.addEventListener("blur",(function(){u.value=Number(n.options.positions[i].lat.toFixed(8)),l.innerHTML="",l.appendChild(c)})),u.addEventListener("input",(function(){n.options.positions[i].lat=Number(Number(u.value).toFixed(8)),c.innerHTML=n.options.positions[i].lat.toFixed(8),n.height=n.height})),h.addEventListener("dblclick",(function(){2!=n.heightMode&&(h.innerHTML="",d.value=Number(n.height.toFixed(2)),h.appendChild(d),d.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode)})),d.addEventListener("blur",(function(){d.value=Number(n.height.toFixed(2)),h.innerHTML="",h.appendChild(p)})),d.addEventListener("input",(function(){n.height=Number(Number(d.value).toFixed(2)),p.innerHTML=Number(n.height.toFixed(2))})),n._elms.lng.push(a),n._elms.lngInput.push(r),n._elms.lat.push(c),n._elms.latInput.push(u),n._elms.alt.push(p),n._elms.altInput.push(d),e.appendChild(o)},o=0;o0&&void 0!==f[0]?f[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=nl({},this.options.position):this.options.positions?r=nl({},this.options.positions[0]):this.options.center?r=nl({},this.options.center):this.options.start?r=nl({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=51;break;case 25:l=[],e.t0=this.heightMode,e.next=0===e.t0||"0"===e.t0?29:1===e.t0||"1"===e.t0?31:2===e.t0||"2"===e.t0?33:35;break;case 29:case 31:return c=!1,e.abrupt("break",35);case 33:return c=!0,e.abrupt("break",35);case 35:if(!c){e.next=48;break}u=0;case 37:if(!(u=500)t.positionEditing=!1;else{t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),m=[];for(var e=0;e0)for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:function(){};this.positionEditing=!1,setTimeout((function(){if(YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var i=function(){var e=_()(S.a.mark((function e(){var t,i,n,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=nt()(s.sdk.viewer.entities.values),i=0;case 2:if(!(i3&&n.index===e.options.positions.length-1&&e.options.positions.splice(n.index+1,1)):e.options.positions.pop(),e._elms.lng&&e._elms.lng[n.index]&&(e._elms.lng[n.index].innerHTML=e.options.positions[n.index].lng.toFixed(8)),e._elms.lat&&e._elms.lat[n.index]&&(e._elms.lat[n.index].innerHTML=e.options.positions[n.index].lat.toFixed(8))),e.heightMode=e.heightMode,e.previous=null};e.entity.polyline.clampToGround=!0,e.entity.polyline.arcType=Cesium.ArcType.GEODESIC,e.entity.polygon.perPositionHeight=!1,e.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(s.positionsH)}),!1),e.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(s.positionsH),[s.positionsH[0],s.positionsH[1]])}),!1);for(var c=[[]],u=[],h=0;h=500?l():r(o,i)}))})),i()}),200)}}),0)}},{key:"closeNodeEdit",value:function(){YJ.Measure.SetMeasureStatus(!1),this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.tip=null;for(var e=0;e0)for(var v=0;v=3?[].concat(nt()(g),[g[0],g[1]]):nt()(g)}),!1))}},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=this.computeAttackArrow(this.options.positions);if(0!=i.length){for(var n=[[]],o=0;o9999999&&(t=9999999),this.options.spreadTime=t,this.spreadState&&this.setSpreadProgressByTime(),this._elms.spreadTime&&this._elms.spreadTime.forEach((function(e){e.value=t}))}},{key:"loop",get:function(){return this.options.loop},set:function(e){this.options.loop=e,this.TweenAnimate&&(e?this.TweenAnimate.repeat(1/0):this.TweenAnimate.repeat()),this._elms.loop&&this._elms.loop.forEach((function(t){t.checked=e}))}},{key:"spreadState",get:function(){return this.options.spreadState},set:function(e){this.options.spreadState=e,this.TweenAnimate?e?(this.lineEdit=!1,this.setSpreadProgressByTime(this.TweenAnimate._object.distance/this.TweenAnimate._valuesEnd.distance*this.spreadTime)):this.TweenAnimate.pause():e&&this.setSpreadProgressByTime(),this._elms.spreadState&&this._elms.spreadState.forEach((function(t){t.checked=e}))}},{key:"setSpreadProgressByTime",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(this.entity){for(var i=this,n=0;n=0)){e.next=12;break}if(!(t.distance>=h[o])){e.next=9;break}return(n=n+o+1)>i.options.positions.length-1&&(n=i.options.positions.length-1),e.abrupt("break",12);case 9:o--,e.next=4;break;case 12:for(s=[],a=0;aNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i\n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n 动画时长\n
          \n \n ms\n \n
          \n
          \n
          \n
          \n
          \n 动画\n \n
          \n
          \n 动画重复\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function rl(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function ll(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=cl(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"#ff000080",i.options.show=!n.show&&!1!==n.show||n.show,i.options.positions=n.positions||[],i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",i.options.height=n.height,i.options.loop=n.loop||!1,i.options.spreadState=n.spreadState||!1,i._elms={},i.nodePoints=[],i.spreadTime=n.spreadTime,i.entity,i.event,i.operate={},i.Dialog=o,n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",!i.options.positions||i.options.positions.length<5)i._error="双箭头最少需要五个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500});else{if(!i.options.height&&0!==i.options.height){for(var s=i.options.positions[0].alt,a=1;athis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t'.concat(i+1,'\n
          \n
          \n
          \n ');var s=o.getElementsByClassName("lng")[0],a=document.createElement("span");a.innerHTML=n.options.positions[i].lng.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-180,r.max=180,r.value=n.options.positions[i].lng.toFixed(8);var l=o.getElementsByClassName("lat")[0],c=document.createElement("span");c.innerHTML=n.options.positions[i].lat.toFixed(8),l.appendChild(c);var u=document.createElement("input");u.className="input",u.type="number",u.title="",u.min=-90,u.max=90,u.value=n.options.positions[i].lat.toFixed(8);var h=o.getElementsByClassName("alt")[0],p=document.createElement("span");p.innerHTML=n.height.toFixed(2),h.appendChild(p);var d=document.createElement("input");d.className="input",d.type="number",d.title="",d.min=-9999999,d.max=999999999,d.value=n.height.toFixed(2),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(n.options.positions[i].lng.toFixed(8)),s.appendChild(r),r.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),r.addEventListener("blur",(function(){r.value=Number(n.options.positions[i].lng.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){n.options.positions[i].lng=Number(Number(r.value).toFixed(8)),a.innerHTML=n.options.positions[i].lng.toFixed(8),n.height=n.height})),l.addEventListener("dblclick",(function(){l.innerHTML="",u.value=Number(n.options.positions[i].lat.toFixed(8)),l.appendChild(u),u.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),u.addEventListener("blur",(function(){u.value=Number(n.options.positions[i].lat.toFixed(8)),l.innerHTML="",l.appendChild(c)})),u.addEventListener("input",(function(){n.options.positions[i].lat=Number(Number(u.value).toFixed(8)),c.innerHTML=n.options.positions[i].lat.toFixed(8),n.height=n.height})),h.addEventListener("dblclick",(function(){2!=n.heightMode&&(h.innerHTML="",d.value=Number(n.height.toFixed(2)),h.appendChild(d),d.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode)})),d.addEventListener("blur",(function(){d.value=Number(n.height.toFixed(2)),h.innerHTML="",h.appendChild(p)})),d.addEventListener("input",(function(){n.height=Number(Number(d.value).toFixed(2)),p.innerHTML=Number(n.height.toFixed(2))})),n._elms.lng.push(a),n._elms.lngInput.push(r),n._elms.lat.push(c),n._elms.latInput.push(u),n._elms.alt.push(p),n._elms.altInput.push(d),e.appendChild(o)},o=0;o0&&void 0!==f[0]?f[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=ll({},this.options.position):this.options.positions?r=ll({},this.options.positions[0]):this.options.center?r=ll({},this.options.center):this.options.start?r=ll({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=51;break;case 25:l=[],e.t0=this.heightMode,e.next=0===e.t0||"0"===e.t0?29:1===e.t0||"1"===e.t0?31:2===e.t0||"2"===e.t0?33:35;break;case 29:case 31:return c=!1,e.abrupt("break",35);case 33:return c=!0,e.abrupt("break",35);case 35:if(!c){e.next=48;break}u=0;case 37:if(!(u=500)t.positionEditing=!1;else{t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),m=[];for(var e=0;e0)for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:function(){};this.positionEditing=!1,setTimeout((function(){if(YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var i=function(){var e=_()(S.a.mark((function e(){var t,i,n,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=nt()(s.sdk.viewer.entities.values),i=0;case 2:if(!(i=500?l():r(o,i)}))}));for(var t=[[]],o=[],s=0;s0)for(var v=0;v=3?[].concat(nt()(g),[g[0],g[1]]):nt()(g)}),!1))}},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=this.computePincerArrow(this.options.positions);if(0!=i.length){for(var n=[[]],o=0;o9999999&&(t=9999999),this.options.spreadTime=t,this.spreadState&&this.setSpreadProgressByTime(),this._elms.spreadTime&&this._elms.spreadTime.forEach((function(e){e.value=t}))}},{key:"loop",get:function(){return this.options.loop},set:function(e){this.options.loop=e,this.TweenAnimate&&(e?this.TweenAnimate.repeat(1/0):this.TweenAnimate.repeat()),this._elms.loop&&this._elms.loop.forEach((function(t){t.checked=e}))}},{key:"spreadState",get:function(){return this.options.spreadState},set:function(e){this.options.spreadState=e,this.TweenAnimate?e?(this.lineEdit=!1,this.setSpreadProgressByTime(this.TweenAnimate._object.distance1/this.TweenAnimate._valuesEnd.distance1*this.spreadTime)):this.TweenAnimate.pause():e&&this.setSpreadProgressByTime(),this._elms.spreadState&&this._elms.spreadState.forEach((function(t){t.checked=e}))}},{key:"setSpreadProgressByTime",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(this.entity){for(var i=this,n=0;n=212;y--){var b=this.cartesian3Towgs84(o[y],this.sdk.viewer);u.push([b.lng,b.lat,b.alt])}f?u.push([this.options.positions[2].lng,this.options.positions[2].lat,this.options.positions[2].alt]):u.push([this.options.positions[3].lng,this.options.positions[3].lat,this.options.positions[3].alt]),h.push([(this.options.positions[0].lng+this.options.positions[1].lng)/2,(this.options.positions[0].lat+this.options.positions[1].lat)/2],[this.options.positions[4].lng,this.options.positions[4].lat]);var C=this.deepCopyObj(this.options.positions),w=turf.lineString(c),k=turf.length(w,{units:"kilometers"}),x=turf.lineString(u),E=turf.length(x,{units:"kilometers"}),P=turf.lineString(h),D=turf.length(P,{units:"kilometers"}),O=t/this.spreadTime;this.TweenAnimate=new TWEEN.Tween({distance1:k*O,distance2:E*O,distance3:D*O}).to({distance1:k,distance2:E,distance3:D},this.spreadTime-t).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop?1/0:0).onRepeat((function(){t&&e.setSpreadProgressByTime()})).onUpdate(function(){var t=_()(S.a.mark((function t(i,n){return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.TweenAnimate._duration!=1/0){t.next=2;break}return t.abrupt("return");case 2:if(e.sdk.viewer){t.next=6;break}return e.removeAnimate(),t.abrupt("return");case 6:M(i);case 7:case"end":return t.stop()}}),t)})));return function(e,i){return t.apply(this,arguments)}}()).onStart((function(){e.options.spreadState=!0,e._elms.spreadState&&e._elms.spreadState.forEach((function(e){e.checked=!0}))})).onComplete((function(t){e.removeAnimate()})),this.spreadState?this.TweenAnimate.start():M({distance1:k*O,distance2:E*O,distance3:D*O}),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positionsH)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positionsH),[i.positionsH[0],i.positionsH[1]])}),!1)}}}function M(e){return T.apply(this,arguments)}function T(){return(T=_()(S.a.mark((function e(t){var n,o,s,a,r,l,c,u;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i.show){e.next=2;break}return e.abrupt("return");case 2:if(n=2,o=3,f&&(n=3,o=2),t.distance1){e.next=10;break}C[n].lng=C[1].lng,C[n].lat=C[1].lat,e.next=16;break;case 10:return e.next=12,turf.lineSliceAlong(w,0,t.distance1,{units:"kilometers"});case 12:s=e.sent,a=nt()(s.geometry.coordinates[s.geometry.coordinates.length-1]),C[n].lng=a[0],C[n].lat=a[1];case 16:if(t.distance2){e.next=21;break}C[o].lng=C[0].lng,C[3].lat=C[0].lat,e.next=27;break;case 21:return e.next=23,turf.lineSliceAlong(x,0,t.distance2,{units:"kilometers"});case 23:r=e.sent,l=nt()(r.geometry.coordinates[r.geometry.coordinates.length-1]),C[o].lng=l[0],C[o].lat=l[1];case 27:if(t.distance3){e.next=32;break}C[4].lng=h[0][0],C[4].lat=h[0][1],e.next=38;break;case 32:return e.next=34,turf.lineSliceAlong(P,0,t.distance3,{units:"kilometers"});case 34:c=e.sent,u=nt()(c.geometry.coordinates[c.geometry.coordinates.length-1]),C[4].lng=u[0],C[4].lat=u[1];case 38:i.renewPositions(C);case 39:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}},{key:"removeAnimate",value:function(){this.spreadState=!1,this.TweenAnimate&&(TWEEN.remove(this.TweenAnimate),this.TweenAnimate=null,this.renewPositions(),this.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(this.positionsH),this.entity.polyline.positions=[].concat(nt()(this.positionsH),[this.positionsH[0],this.positionsH[1]]))}},{key:"renewPositions",value:function(e){var t=this;if(!this._error&&this.sdk.viewer){var i=!1,n=this.options.positions;e&&(n=e);for(var o=[],s=0;s\n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n 动画时长\n
          \n \n ms\n \n
          \n
          \n
          \n
          \n
          \n 动画\n \n
          \n
          \n 动画重复\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function pl(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function dl(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function fl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=vl(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"#ff000080",i.options.show=!n.show&&!1!==n.show||n.show,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.positions=n.positions||[],i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",i.options["area-unit"]=n["area-unit"]||"平方米",i.entity,i.event=new te.a(i.sdk),i.operate={},i._elms={},i.Dialog=o,i.options.loop=n.loop||!1,i.options.spreadState=n.spreadState||!1,i.spreadTime=n.spreadTime,n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.attribute.camera=i.options.attribute.camera||{},i.options.attribute.camera.content=i.options.attribute.camera.content||[],i.options.attribute.vr=i.options.attribute.vr||{},i.options.attribute.vr.content=i.options.attribute.vr.content||[],i.options.attribute.goods=i.options.attribute.goods||{},i.options.attribute.goods.content=i.options.attribute.goods.content||[],i.options.attributeType=n.attributeType||"richText",i.options.richTextContent=n.richTextContent||"",i.nodePoints=[],!i.options.positions||i.options.positions.length<2)i._error="直线箭头需要两个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500});else{if(!i.options.height&&0!==i.options.height){for(var s=i.options.positions[0].alt,a=1;athis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t-1?t[i].style.display="block":t[i].style.display="none"}},{key:"attributeLink",get:function(){return this.options.attribute.link.content},set:function(e){var t=this;if(this.options.attribute.link.content=e,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content&&0!=this._DialogObject._element.content.getElementsByClassName("attribute-content-link").length){var i=this._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],n=i.getElementsByClassName("table-body")[0];n.innerHTML="",this.options.attribute.link.content.length>0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.link.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={linkEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.link.content;case 2:t.attributeLink=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.vr.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={vrEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.vr.content;case 2:t.attributeVr=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-vr")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.vr.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(l'.concat(i+1,'\n
          \n
          \n
          \n ');var s=o.getElementsByClassName("lng")[0],a=document.createElement("span");a.innerHTML=n.options.positions[i].lng.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-180,r.max=180,r.value=n.options.positions[i].lng.toFixed(8);var l=o.getElementsByClassName("lat")[0],c=document.createElement("span");c.innerHTML=n.options.positions[i].lat.toFixed(8),l.appendChild(c);var u=document.createElement("input");u.className="input",u.type="number",u.title="",u.min=-90,u.max=90,u.value=n.options.positions[i].lat.toFixed(8);var h=o.getElementsByClassName("alt")[0],p=document.createElement("span");p.innerHTML=n.height.toFixed(2),h.appendChild(p);var d=document.createElement("input");d.className="input",d.type="number",d.title="",d.min=-9999999,d.max=999999999,d.value=n.height.toFixed(2),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(n.options.positions[i].lng.toFixed(8)),s.appendChild(r),r.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),r.addEventListener("blur",(function(){r.value=Number(n.options.positions[i].lng.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){n.options.positions[i].lng=Number(Number(r.value).toFixed(8)),a.innerHTML=n.options.positions[i].lng.toFixed(8),n.height=n.height})),l.addEventListener("dblclick",(function(){l.innerHTML="",u.value=Number(n.options.positions[i].lat.toFixed(8)),l.appendChild(u),u.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode})),u.addEventListener("blur",(function(){u.value=Number(n.options.positions[i].lat.toFixed(8)),l.innerHTML="",l.appendChild(c)})),u.addEventListener("input",(function(){n.options.positions[i].lat=Number(Number(u.value).toFixed(8)),c.innerHTML=n.options.positions[i].lat.toFixed(8),n.height=n.height})),h.addEventListener("dblclick",(function(){2!=n.heightMode&&(h.innerHTML="",d.value=Number(n.height.toFixed(2)),h.appendChild(d),d.focus(),n.operate.positionEditing&&(n.positionEditing=!1),t.closeNodeEdit(n),n.heightMode=n.heightMode)})),d.addEventListener("blur",(function(){d.value=Number(n.height.toFixed(2)),h.innerHTML="",h.appendChild(p)})),d.addEventListener("input",(function(){n.height=Number(Number(d.value).toFixed(2)),p.innerHTML=Number(n.height.toFixed(2))})),n._elms.lng.push(a),n._elms.lngInput.push(r),n._elms.lat.push(c),n._elms.latInput.push(u),n._elms.alt.push(p),n._elms.altInput.push(d),e.appendChild(o)},o=0;o0&&void 0!==f[0]?f[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=dl({},this.options.position):this.options.positions?r=dl({},this.options.positions[0]):this.options.center?r=dl({},this.options.center):this.options.start?r=dl({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=51;break;case 25:l=[],e.t0=this.heightMode,e.next=0===e.t0||"0"===e.t0?29:1===e.t0||"1"===e.t0?31:2===e.t0||"2"===e.t0?33:35;break;case 29:case 31:return c=!1,e.abrupt("break",35);case 33:return c=!0,e.abrupt("break",35);case 35:if(!c){e.next=48;break}u=0;case 37:if(!(u=500)t.positionEditing=!1;else{t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),u=[];for(var e=0;e0)for(var t=0;t0)for(var v=0;v=3?[].concat(nt()(g),[g[0],g[1]]):nt()(g)}),!1))}},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=this.computeStraightArrow(this.options.positions);if(0!=i.length){for(var n=[[]],o=0;o9999999&&(t=9999999),this.options.spreadTime=t,this.spreadState&&this.setSpreadProgressByTime(),this._elms.spreadTime&&this._elms.spreadTime.forEach((function(e){e.value=t}))}},{key:"loop",get:function(){return this.options.loop},set:function(e){this.options.loop=e,this.TweenAnimate&&(e?this.TweenAnimate.repeat(1/0):this.TweenAnimate.repeat()),this._elms.loop&&this._elms.loop.forEach((function(t){t.checked=e}))}},{key:"spreadState",get:function(){return this.options.spreadState},set:function(e){this.options.spreadState=e,this.TweenAnimate?e?(this.lineEdit=!1,this.setSpreadProgressByTime(this.TweenAnimate._object.distance/this.TweenAnimate._valuesEnd.distance*this.spreadTime)):this.TweenAnimate.pause():e&&this.setSpreadProgressByTime(),this._elms.spreadState&&this._elms.spreadState.forEach((function(t){t.checked=e}))}},{key:"setSpreadProgressByTime",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(this.entity){for(var i=this,n=0;n=0)){e.next=12;break}if(!(t.distance>=h[o])){e.next=9;break}return(n=n+o+1)>i.options.positions.length-1&&(n=i.options.positions.length-1),e.abrupt("break",12);case 9:o--,e.next=4;break;case 12:for(s=[],a=0;aNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i1&&void 0!==arguments[1]?arguments[1]:function(){};if(e.positionEditing=!1,YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var i,n,o=function(){var t=_()(S.a.mark((function t(){var i,n,o,s;return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:i=nt()(e.sdk.viewer.entities.values),n=0;case 2:if(!(n=3?[].concat(nt()(t),[t[0],t[1]]):nt()(t)}),!1),setTimeout((function(){e.event.mouse_left(l),e.event.mouse_right(c),e.event.mouse_move(r),e.event.gesture_pinck_start((function(t,i){var n=new Date;e.event.gesture_pinck_end((function(){var e=new Date,o={position:{x:(t.position1.x+t.position2.x)/2,y:(t.position1.y+t.position2.y)/2}};e-n>=500?c():l(o,i)}))}));for(var t=[[]],i=[],n=0;n\n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ',"\n
          \n
          \n
          \n ")}function bl(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Cl(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Cl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Cl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=_l(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"#ff000080",i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.radius=n.radius||0===n.radius?n.radius:10,i.options.show=!n.show&&!1!==n.show||n.show,i.options.center=n.center||{},i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",n.label=n.label||{},i._elms={},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",i.event=new te.a(i.sdk),i.nodePoints=[],i.operate={},i.Dialog={},i.sdk.addIncetance(i.options.id,i),t.create(i),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"CircleObject"}},{key:"heightMode",get:function(){return this.options.heightMode?this.options.heightMode:0},set:function(e){var t=this;this.entity.polygon.hierarchy=[],setTimeout((function(){if(t.options.heightMode=e||0==e?e:2,t.positionEditing=!1,t.entity){var i="";t.closeNodeEdit();var n=!1,o=!1;switch(t.renewPositions(),t.entity.polyline.positions=[].concat(nt()(t.positions),[t.positions[0],t.positions[1]]),t.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(t.positions),t.options.heightMode){case"0":case 0:i="海拔高度";break;case"1":case 1:i="相对地表";break;case"2":case 2:n=!0,o=!0,i="依附模型"}t.label.ground=n,t.entity.polyline.clampToGround=n,t.entity.polyline.arcType=n?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE,t.entity.polygon.perPositionHeight=!n,t._elms.heightMode&&(t._elms.heightMode.value=i),t._elms.heightModeObject&&t._elms.heightModeObject.legp_searchActive(i),o?(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box disabled"),t._elms.heightConfirm&&t._elms.heightConfirm.setAttribute("disabled","disabled")):(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box"),t._elms.heightConfirm&&t._elms.heightConfirm.removeAttribute("disabled"))}}),50)}},{key:"height",get:function(){return this.options.center.alt},set:function(e){var t,i=this;!e||isNaN(Number(e))?this.options.center.alt=0:this.options.center.alt=Number(Number(e).toFixed(2)),t=2==this.heightMode,this.renewPositions(),setTimeout((function(){i.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(i.positions),i.entity.polygon.perPositionHeight=!t,i.entity.polyline.positions=[].concat(nt()(i.positions),[i.positions[0],i.positions[1]]),i.entity.polyline.clampToGround=!!t,i.entity.polyline.arcType=t?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE}),0),this._elms.alt&&this._elms.alt.forEach((function(e){e.innerHTML=i.options.center.alt}))}},{key:"radius",get:function(){return this.options.radius},set:function(e){this.options.radius=Number(e),this.renewPositions(),this.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(this.positions),this.entity.polyline.positions=[].concat(nt()(this.positions),[this.positions[0],this.positions[1]])}},{key:"center",get:function(){return this.options.center},set:function(e){var t=this;this.options.center=e,this.height=this.height,this._elms.lng&&this._elms.lng.forEach((function(e){e.innerHTML=t.options.center.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.innerHTML=t.options.center.lat}))}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;if(this.options.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polygon){var i=Cesium.Color.fromCssColorString(this.options.color);2===this.sdk.viewer.scene.mode&&(i=new Cesium.CustomColorMaterialSource({color:this.options.color})),this.entity.polygon.material=i,this._elms.color&&this._elms.color.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,0,0,0.5)"}});t._elms.color[i]=n}))}}},{key:"lineColor",get:function(){return this.options.line.color},set:function(e){var t=this;this.options.line.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polyline&&(this.entity.polyline.material=Cesium.Color.fromCssColorString(this.options.line.color),this._elms.lineColor&&this._elms.lineColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.line.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.lineColor=e},clear:function(){t.lineColor="rgba(255,0,0,0.5)"}});t._elms.lineColor[i]=n})))}},{key:"lineWidth",get:function(){return this.options.line.width},set:function(e){this.options.line.width=e||0===e?e:3,this.entity.polyline.width=this.options.line.width,this._elms.lineWidth&&this._elms.lineWidth.forEach((function(t){t.value=e}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){this.options.label.show=e,!this.show||this.showView&&3!=this.showView?this.label.show=!1:this.label.show=e,this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label.color=e,this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label.fontSize=e,this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label.scaleByDistance=e,this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0&&void 0!==x[0]?x[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=kl({},this.options.position):this.options.positions?r=kl({},this.options.positions[0]):this.options.center?r=kl({},this.options.center):this.options.start?r=kl({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=60;break;case 23:l=this.entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions,c=[],u=0,h=this.cartesian3Towgs84(l[0],this.sdk.viewer),p=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,0),d=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,1e7),m=Cesium.Cartesian3.subtract(d,p,new Cesium.Cartesian3),f=Cesium.Cartesian3.normalize(m,m),v=new Cesium.Ray(p,f),g={},y=this.sdk.viewer.scene.drillPickFromRay(v),b=0;case 35:if(!(b=500)t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.center.lng=Number(e.lng.toFixed(8)),t.options.center.lat=Number(e.lat.toFixed(8)),t.center=t.options.center,t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.previous={positions:kl({},t.options.center)},t.positionEditing=!1}}))})),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!1)):(this.label&&this.label.entity&&this.label.entity.billboard&&(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)")),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.destroy()),this.tip&&this.tip.destroy(),this.renewPositions(),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!0),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!0))}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"areaChangeCallBack",get:function(){return this._areaChangeCallBack},set:function(e){this._areaChangeCallBack=e}},{key:"nodeEdit",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};if(this.positionEditing=!1,YJ.Measure.GetMeasureStatus());else{var i=function(){var e=_()(S.a.mark((function e(){var t,i,o;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=nt()(n.sdk.viewer.entities.values),e.next=3,n.getClampToHeight(n.options.center,t);case 3:i=e.sent,o=n.sdk.viewer.entities.add({name:"node-secondary-edit-point",position:Cesium.Cartesian3.fromDegrees(n.options.center.lng,n.options.center.lat,i),billboard:{image:n.getSourceRootPath()+"/img/point.png",width:15,height:15,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}}),n.nodePoints.push(o);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),n=this;this.event&&this.event.destroy(),this.event=new te.a(this.sdk),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a("左键确认,右键取消",this.sdk),this.event=new te.a(this.sdk),this.nodePoints=[];var o,s=[],a=kl({},this.options.center),r=null;s=this.createCircle(this.options.center,this.options.radius),this.entity.polyline.clampToGround=!0,this.entity.polyline.arcType=Cesium.ArcType.GEODESIC,this.entity.polygon.perPositionHeight=!1,this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(s))}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return Cesium.Cartesian3.fromDegreesArray(s)}),!1),setTimeout((function(){var t=nt()(e.sdk.viewer.entities.values);e.getClampToHeight({lng:e.options.center.lng,lat:e.options.center.lat},t).then((function(t){e.label.position=[e.options.center.lng,e.options.center.lat,t]}))}),200),setTimeout((function(){e.event.mouse_left((function(i,n){o&&(e.sdk.viewer.entities.remove(o),o=null),a=e.cartesian3Towgs84(n,e.viewer);var s=e.computeDistance2([e.options.center,a]);e.radius=s,YJ.Measure.SetMeasureStatus(!1),e.event.destroy(),e.tip.destroy(),e.heightMode=e.heightMode,t("",kl({},e.options.center))})),e.event.mouse_right((function(t,i){o&&(e.sdk.viewer.entities.remove(o),o=null),YJ.Measure.SetMeasureStatus(!1),e.event.destroy(),e.tip.destroy(),e.heightMode=e.heightMode})),e.event.mouse_move((function(t,i){o&&(o.show=!0),a=e.cartesian3Towgs84(i,e.viewer),r=e.computeDistance2([e.options.center,a]),s=e.createCircle(e.options.center,r),e.tip.setPosition(i,t.endPosition.x,t.endPosition.y)})),i()}),200),o=this.sdk.viewer.entities.add(new Cesium.Entity({show:!1,position:new Cesium.CallbackProperty((function(t){if(a){var i=e.computeMidpoint(e.options.center,a);return Cesium.Cartesian3.fromDegrees(i.lng,i.lat,a.alt)}return Cesium.Cartesian3()}),!1),label:{text:new Cesium.CallbackProperty((function(e){return r>1e3?"半径:"+(r/1e3).toFixed(2)+" 公里":"半径:"+r+" 米"}),!1),font:"20px Microsoft YaHei",distanceDisplayCondition:1e7,scale:1,horizontalOrigin:Cesium.HorizontalOrigin.CENTER,verticalOrigin:Cesium.VerticalOrigin.BOTTOM,fillColor:Cesium.Color.fromCssColorString("#f5ce0a"),style:Cesium.LabelStyle.FILL_AND_OUTLINE},polyline:{positions:new Cesium.CallbackProperty((function(t){return Cesium.Cartesian3.fromDegreesArray([e.options.center.lng,e.options.center.lat,a.lng,a.lat])}),!1),width:2,material:Cesium.Color.fromCssColorString("#c1c505").withAlpha(.5),clampToGround:!0,zIndex:99999999}})),this.nodePoints.push(o)}}},{key:"closeNodeEdit",value:function(){YJ.Measure.SetMeasureStatus(!1),this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.tip=null;for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=document.getElementById(t.domid),n=Cesium.Cartesian3.fromDegrees(this.options.center.lng,this.options.center.lat);this.sdk.viewer.scene.postRender.addEventListener((function(o){if("block"===i.style.display||""===i.style.display){var s=e.sdk.viewer.scene.cartesianToCanvasCoordinates(n);s&&(i.style.left=(s.x+t.x).toFixed(0)+"px",i.style.top=(s.y+t.y).toFixed(0)+"px")}}))}},{key:"renewPositions",value:function(e){var t=this;if(!this._error){var i=!1;e||(e=this.options.center);var n=0;switch(this.options.heightMode){case"0":case 0:i=!1;break;case"1":case 1:n=this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(e.lng,e.lat))||0,i=!1;break;case"2":case 2:i=!0}var o=this.createCircle(e,this.options.radius),s=[];if(i)this.positions=Cesium.Cartesian3.fromDegreesArray(o),setTimeout((function(){var i=nt()(t.sdk.viewer.entities.values);t.getClampToHeight({lng:e.lng,lat:e.lat},i).then((function(i){t.label&&(t.label.position=[e.lng,e.lat,i])}))}),100);else{for(var a=0;aNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i\n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ',"\n
          \n
          \n
          \n ")}function El(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Pl(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Pl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Pl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Ml(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"rgba(255, 0, 0, 0.5)",i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.semiMinorAxis=n.semiMinorAxis||0===n.semiMinorAxis?n.semiMinorAxis:10,i.options.semiMajorAxis=n.semiMajorAxis||0===n.semiMajorAxis?n.semiMajorAxis:20,i.options.show=!n.show&&!1!==n.show||n.show,i.options.center=n.center||{},i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",n.label=n.label||{},i._elms={},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.richTextContent=n.richTextContent||"",i.event=new te.a(i.sdk),i.nodePoints=[],i.operate={},i.Dialog={},i.sdk.addIncetance(i.options.id,i),t.create(i),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"EllipseObject"}},{key:"heightMode",get:function(){return this.options.heightMode?this.options.heightMode:0},set:function(e){var t=this;this.entity.polygon.hierarchy=[],setTimeout((function(){if(t.options.heightMode=e||0==e?e:2,t.positionEditing=!1,t.entity){var i="";t.closeNodeEdit();var n=!1,o=!1;switch(t.renewPositions(),t.entity.polyline.positions=[].concat(nt()(t.positions),[t.positions[0],t.positions[1]]),t.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(t.positions),t.options.heightMode){case"0":case 0:i="海拔高度";break;case"1":case 1:i="相对地表";break;case"2":case 2:n=!0,o=!0,i="依附模型"}t.label.ground=n,t.entity.polyline.clampToGround=n,t.entity.polyline.arcType=n?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE,t.entity.polygon.perPositionHeight=!n,t._elms.heightMode&&(t._elms.heightMode.value=i),t._elms.heightModeObject&&t._elms.heightModeObject.legp_searchActive(i),o?(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box disabled"),t._elms.heightConfirm&&t._elms.heightConfirm.setAttribute("disabled","disabled")):(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box"),t._elms.heightConfirm&&t._elms.heightConfirm.removeAttribute("disabled"))}}),50)}},{key:"height",get:function(){return this.options.center.alt},set:function(e){var t,i=this;this.entity.polygon.hierarchy=[],!e||isNaN(Number(e))?this.options.center.alt=0:this.options.center.alt=Number(Number(e).toFixed(2)),this.previous=null,t=2==this.heightMode,this.renewPositions(),setTimeout((function(){i.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(i.positions),i.entity.polygon.perPositionHeight=!t,i.entity.polyline.positions=[].concat(nt()(i.positions),[i.positions[0],i.positions[1]]),i.entity.polyline.clampToGround=!!t,i.entity.polyline.arcType=t?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE}),0),this._elms.alt&&this._elms.alt.forEach((function(e){e.innerHTML=i.options.center.alt}))}},{key:"semiMinorAxis",get:function(){return this.options.semiMinorAxis},set:function(e){this.options.semiMinorAxis=e,this.height=this.height}},{key:"semiMajorAxis",get:function(){return this.options.semiMajorAxis},set:function(e){this.options.semiMajorAxis=e,this.height=this.height}},{key:"center",get:function(){return this.options.center},set:function(e){var t=this;this.options.center=e,this.height=this.height,this._elms.lng&&this._elms.lng.forEach((function(e){e.innerHTML=t.options.center.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.innerHTML=t.options.center.lat}))}},{key:"bearing",get:function(){return this.options.bearing},set:function(e){this.options.bearing=e,this.height=this.height}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;if(this.options.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polygon){var i=Cesium.Color.fromCssColorString(this.options.color);2===this.sdk.viewer.scene.mode&&(i=new Cesium.CustomColorMaterialSource({color:this.options.color})),this.entity.polygon.material=i,this.entity.polyline.width=this.lineWidth,this._elms.color&&this._elms.color.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,0,0,0.5)"}});t._elms.color[i]=n}))}}},{key:"lineColor",get:function(){return this.options.line.color},set:function(e){var t=this;this.options.line.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polyline&&(this.entity.polyline.material=Cesium.Color.fromCssColorString(this.options.line.color),this._elms.lineColor&&this._elms.lineColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.line.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.lineColor=e},clear:function(){t.lineColor="rgba(255,0,0,0.5)"}});t._elms.lineColor[i]=n})))}},{key:"lineWidth",get:function(){return this.options.line.width},set:function(e){var t=this;this.options.line.width=e||0===e?e:3,this.entity.polyline.width=this.options.line.width,this._elms.lineWidth&&this._elms.lineWidth.forEach((function(e){e.value=t.options.line.width}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){this.options.label.show=e,this.show&&!this.showView||3==this.showView?this.label.show=e:this.label.show=!1,this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label.color=e,this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label.fontSize=e,this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label.scaleByDistance=e,this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0&&void 0!==x[0]?x[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!this.options.customView){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Ol({},this.options.position):this.options.positions?r=Ol({},this.options.positions[0]):this.options.center?r=Ol({},this.options.center):this.options.start?r=Ol({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=60;break;case 23:l=this.entity.polyline.positions.getValue(),c=[],u=0,h=this.cartesian3Towgs84(l[0],this.sdk.viewer),p=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,0),d=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,1e7),m=Cesium.Cartesian3.subtract(d,p,new Cesium.Cartesian3),f=Cesium.Cartesian3.normalize(m,m),v=new Cesium.Ray(p,f),g={},y=this.sdk.viewer.scene.drillPickFromRay(v),b=0;case 35:if(!(b=500)t.positionEditing=!1;else{[];var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.center.lng=e.lng,t.options.center.lat=e.lat,t.center=t.options.center,t.createEllipse(t.options.center,{bearing:t.options.bearing,semiMinorAxis:t.options.semiMinorAxis,semiMajorAxis:t.options.semiMajorAxis}),t.label.position=[e.lng,e.lat],t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.previous={center:t.deepCopyObj(t.options.center)},t.positionEditing=!1}}))})),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!1)}else this.previous||(this.previous={center:this.deepCopyObj(this.options.center)}),this.options.center=this.deepCopyObj(this.previous.center),this.tip&&this.tip.destroy(),this.renewPositions(),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!0),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!0)}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"nodeEdit",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=this;if(i.positionEditing=!1,YJ.Measure.GetMeasureStatus());else{var n,o=function(e,t){var i=Math.PI/180,n=e.y*i,o=t.y*i,s=e.x*i,a=t.x*i,r=Math.sin(a-s)*Math.cos(o),l=Math.cos(n)*Math.sin(o)-Math.sin(n)*Math.cos(o)*Math.cos(a-s),c=Math.atan2(r,l)%(2*Math.PI);return 450-(180*c/Math.PI<0?360+180*c/Math.PI:180*c/Math.PI)},s=function(){var e=_()(S.a.mark((function e(t,n){var o,s,a;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=i.cartesian3Towgs84(t,i.sdk.viewer),e.next=3,i.getClampToHeight(o,d);case 3:s=e.sent,a=i.sdk.viewer.entities.add({name:"node-secondary-edit-point",type:n,position:Cesium.Cartesian3.fromDegrees(o.lng,o.lat,s),billboard:{image:i.getSourceRootPath()+"/img/point.png",width:15,height:15,disableDepthTestDistance:Number.POSITIVE_INFINITY,color:Cesium.Color.WHITE.withAlpha(.99)}}),i.nodePoints.push(a);case 6:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}();i.event&&i.event.destroy(),i.event=new te.a(i.sdk),YJ.Measure.SetMeasureStatus(!0),i.tip=new St.a("请选择一个编辑点,右键取消",i.sdk),i.event=new te.a(i.sdk),i.nodePoints=[];var a=Cesium.Cartesian3.fromDegrees(i.center.lng,i.center.lat),r=i.options.semiMinorAxis,l=i.options.semiMajorAxis,c=i.options.bearing,u=i.createEllipse(i.options.center,{bearing:i.options.bearing,semiMinorAxis:i.options.semiMinorAxis,semiMajorAxis:i.options.semiMajorAxis});i.entity.polyline.clampToGround=!0,i.entity.polyline.arcType=Cesium.ArcType.GEODESIC,i.entity.polygon.perPositionHeight=!1,i.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(u)}),!1),i.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(u),[u[0],u[1]])}),!1);var h=i.entity.polyline.positions.getValue(),p=h.length,d=nt()(i.sdk.viewer.entities.values);setTimeout((function(){i.event.mouse_left((function(e,t){if(n)i.options.semiMinorAxis=r,i.options.semiMajorAxis=l,i.options.bearing=c,i.event&&i.event.destroy(),i.tip&&i.tip.destroy(),i.tip=null,n=null,YJ.Measure.SetMeasureStatus(!1),i.heightMode=i.heightMode;else{var s=i.sdk.viewer.scene.pick(e.position);if(s&&s.id&&s.id.name&&"node-secondary-edit-point"===s.id.name&&("semiMinorAxis"===s.id._type||"semiMajorAxis"===s.id._type)){i.tip.set_text("左键确认,右键取消"),n=s.id;for(var h=0;h0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=document.getElementById(t.domid),n=Cesium.Cartesian3.fromDegrees(this.options.center.lng,this.options.center.lat);this.sdk.viewer.scene.postRender.addEventListener((function(o){if("block"===i.style.display||""===i.style.display){var s=e.sdk.viewer.scene.cartesianToCanvasCoordinates(n);s&&(i.style.left=(s.x+t.x).toFixed(0)+"px",i.style.top=(s.y+t.y).toFixed(0)+"px")}}))}},{key:"renewPositions",value:function(e){var t=this;if(!this._error){var i=!1;e||(e=this.options.center);var n=0;switch(this.options.heightMode){case"0":case 0:i=!1;break;case"1":case 1:n=this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(e.lng,e.lat))||0,i=!1;break;case"2":case 2:i=!0}return this.positions=this.createEllipse(e,{bearing:this.options.bearing,semiMinorAxis:this.options.semiMinorAxis,semiMajorAxis:this.options.semiMajorAxis,height:e.alt+n}),i?setTimeout((function(){t.getClampToHeight({lng:e.lng,lat:e.lat}).then((function(i){t.label&&(t.label.position=[e.lng,e.lat,i])}))}),100):this.label&&(this.label.position=[e.lng,e.lat,e.alt+n]),this.areaByMeter=Number((Cesium.Math.PI*this.options.semiMinorAxis*this.options.semiMajorAxis).toFixed(2)),this.areaChangeCallBack&&this.areaChangeCallBack(),this.positions}}}],[{key:"create",value:function(e){var i,n=0;switch(e.options.heightMode){case"0":case 0:i=!1;break;case"1":case 1:n=e.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(e.options.center.lng,e.options.center.lat))||0,i=!1;break;case"2":case 2:i=!0}e.options.label.position||(e.options.label.position={lng:e.options.center.lng,lat:e.options.center.lat,alt:e.options.center.alt+n});var o=Cesium.Color.fromCssColorString(e.options.color);2===e.sdk.viewer.scene.mode&&(i=!1,o=new Cesium.CustomColorMaterialSource({color:e.options.color}));var s=e.createEllipse(e.options.center,{bearing:e.options.bearing,semiMinorAxis:e.options.semiMinorAxis,semiMajorAxis:e.options.semiMajorAxis,height:e.options.center.alt+n});e.entity=e.sdk.viewer.entities.add({id:e.options.id,show:e.options.show,polygon:{hierarchy:new Cesium.PolygonHierarchy(s),perPositionHeight:!i,material:o,zIndex:e.sdk._entityZIndex},polyline:{positions:[].concat(nt()(s),[s[0],s[1]]),width:e.options.line.width,material:Cesium.Color.fromCssColorString(e.options.line.color),clampToGround:!!i,arcType:i?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE,zIndex:e.sdk._entityZIndex}}),e.sdk._entityZIndex++,t.createLabel(e),e.areaByMeter=Number((Cesium.Math.PI*e.options.semiMajorAxis*e.options.semiMinorAxis).toFixed(2)),e.areaChangeCallBack&&e.areaChangeCallBack(),Object(J.syncData)(e.sdk,e.options.id),e.options.show&&Object(Z.setSplitDirection)(0,e.options.id)}},{key:"createLabel",value:(i=_()(S.a.mark((function e(t){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.label=new _t(t.sdk,{id:t.options.id,show:!!t.options.show&&t.options.label.show,position:[t.options.label.position.lng,t.options.label.position.lat,t.options.label.position.alt],text:t.options.name,fontSize:t.options.label.fontSize,fontFamily:t.options.label.fontFamily,color:t.options.label.color,pixelOffset:t.options.label.pixelOffset,backgroundColor:t.options.label.backgroundColor,lineColor:t.options.label.lineColor,lineWidth:t.options.label.lineWidth,scaleByDistance:t.options.label.scaleByDistance,near:t.options.label.near,far:t.options.label.far,ground:t.options.label.ground});case 1:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"EventBinding",value:function(e,t){for(var i=function(){var i=[],o=!1,s=[];if(!t[n]||!t[n].attributes)return 1;var a,r=El(t[n].attributes);try{var l=function(){var r=a.value;switch(r.name){case"@model":o=!0,"checkbox"==t[n].type?(i.push((function(t){e[r.value]=t.target.checked})),t[n].checked=e[r.value]):(i.push((function(t){var i=t.target.value;"number"==t.target.type?"."==t.data||"-"==t.data&&!t.target.value||(i=Number(i),t.target.max&&i>Number(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i\n
          \n
          \n
          \n 名称\n \n
          \n
          \n 颜色\n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 拉伸高度\n
          \n \n m\n \n
          \n
          \n
          \n 材质样式\n
          \n
          \n
          \n
          \n
          \n 墙体闭合\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function Bl(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return jl(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?jl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function jl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&nNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=Il(this,t,[e,i])).options.color=i.color||"#ff0000",n.options.extrudedHeight=i.extrudedHeight||2.4,n.options.positions=i.positions,n.options.material=Number(i.material)||0===Number(i.material)?Number(i.material):3,n.options.duration=i.duration||0===i.duration?i.duration:1e3,n.options.show=!i.show&&!1!==i.show||i.show,n.options.noseToTail=i.noseToTail||!1,n.entity,n.nodePoints=[],i.label=i.label||{},n.options.label={show:i.label.show||!1,fontSize:i.label.fontSize||0===i.label.fontSize?i.label.fontSize:20,fontFamily:i.label.fontFamily?i.label.fontFamily:0,color:i.label.color||"#ffffff",lineWidth:i.label.lineWidth||0===i.label.lineWidth?i.label.lineWidth:4,pixelOffset:i.label.pixelOffset||0===i.label.pixelOffset?i.label.pixelOffset:20,backgroundColor:i.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:i.label.lineColor||"#00ffff80",scaleByDistance:i.label.scaleByDistance||!1,near:i.label.near||0===i.label.near?i.label.near:2e3,far:i.label.far||0===i.label.far?i.label.far:1e5},n.options.instruct=i.instruct||"",n.options.operatingPoint=i.operatingPoint||"",n.options.attribute=i.attribute||{},n.options.attribute.link=n.options.attribute.link||{},n.options.attribute.link.content=n.options.attribute.link.content||[],delete n.options.attribute.camera,delete n.options.attribute.vr,delete n.options.attribute.goods,n.options.richTextContent=i.richTextContent||"",n.Dialog=o,n._elms={},!n.options.positions||n.options.positions.length<2?(n._error="最少需要两个坐标!",console.warn(n._error),window.ELEMENT&&window.ELEMENT.Message({message:n._error,type:"warning",duration:1500})):(n.sdk.addIncetance(n.options.id,n),t.create(n)),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"wallStereoscopic"}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;this.options.color=e||"#ff0000",this.entity.polylineVolume.material=this.getMaterial(),this._elms.color&&this._elms.color.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}});t._elms.color[i]=n}))}},{key:"material",get:function(){return this.options.material},set:function(e){var t=this;this.options.material=Number(e)||0===Number(e)?Number(e):3,this.entity.polylineVolume.material=this.getMaterial(),this._elms.material&&this._elms.material.forEach((function(e){e.value=t.options.material}))}},{key:"noseToTail",get:function(){return this.options.noseToTail},set:function(e){this.options.noseToTail=e;for(var t=this.options.positions,i=[],n=0;nthis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t纯色墙',value:"纯色墙",key:0,icon:"icon-wall"},{name:'上升墙',value:"上升墙",key:1,icon:"icon-wall-gradient"},{name:'箭头墙',value:"箭头墙",key:2,icon:"icon-wall-arrow"},{name:'警戒墙',value:"警戒墙",key:3,icon:"icon-wall-warn"}],(o=Object(je.a)(i.getElementsByClassName("material-box")[0],".material")).legp_search(n),(s=document.createElement("i")).className="icon icon-active",i.getElementsByClassName("material")[0].getElementsByClassName("cy_datalist")[0].appendChild(s),a=i.getElementsByClassName("material")[0].getElementsByTagName("input")[0],r=0;case 23:if(!(r=1e5&&(s=!0),o.push(r),n+=r}var l=n/t.options.extrudedHeight;if(l/=1,s)for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:function(){},t=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var i,n;YJ.Measure.SetMeasureStatus(!0),t.tip=new St.a("请选择一个顶点,右键取消",t.sdk),t.event=new te.a(t.sdk),t.nodePoints=[];for(var o=t.options.positions,s=[],a=0;a=500?c(o,i):l(o,i)}))}));for(var h=0;h0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};i.x=i.x||0===i.x?i.x:10,i.y=i.y||0===i.y?i.y:10;for(var n=[],o=0;o\n
          \n
          \n
          \n 名称\n \n
          \n
          \n 颜色\n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 宽度\n
          \n \n m\n \n
          \n
          \n
          \n 拉伸高度\n
          \n \n m\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 '.concat(ct(e),'\n \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function Fl(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Hl(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Hl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Hl(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&nNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=Wl(this,t,[e,i]))._elms={},n.options.color=i.color||"#ffffff",n.options.width=i.width||.24,n.options.noseToTail=i.noseToTail||!1,n.options.extrudedHeight=i.extrudedHeight||2.4,n.cornerType=i.cornerType,n.options.positions=i.positions,n.options.material=Number(i.material)||0,n.options.show=!i.show&&!1!==i.show||i.show,n.entity,n.nodePoints=[],i.label=i.label||{},n.options.label={text:n.options.name,show:i.label.show||!1,position:i.label.position,fontSize:i.label.fontSize||0===i.label.fontSize?i.label.fontSize:20,fontFamily:i.label.fontFamily?i.label.fontFamily:0,color:i.label.color||"#ffffff",lineWidth:i.label.lineWidth||0===i.label.lineWidth?i.label.lineWidth:4,pixelOffset:i.label.pixelOffset||0===i.label.pixelOffset?i.label.pixelOffset:20,backgroundColor:i.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:i.label.lineColor||"#00ffff80",scaleByDistance:i.label.scaleByDistance||!1,near:i.label.near||0===i.label.near?i.label.near:2e3,far:i.label.far||0===i.label.far?i.label.far:1e5},n.options.attribute=i.attribute||{},n.options.attribute.link=n.options.attribute.link||{},n.options.attribute.link.content=n.options.attribute.link.content||[],delete n.options.attribute.camera,delete n.options.attribute.vr,delete n.options.attribute.goods,n.options.richTextContent=i.richTextContent||"",n.Dialog=o,!n.options.positions||n.options.positions.length<2?(n._error="最少需要两个坐标!",console.warn(n._error),window.ELEMENT&&window.ELEMENT.Message({message:n._error,type:"warning",duration:1500})):(n.sdk.addIncetance(n.options.id,n),t.create(n)),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"WallRealStereoscopic"}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;if(this.options.color=e,this.entity)for(var i=0;ithis.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0){var D=_;_=E+180,E=D+180,P=!1}var O=turf.sector([C.lng,C.lat,C.alt],this.options.width/1e3/2,_,E,{units:"kilometers"});if(console.log("sector",O),0==b&&(o.push(t[b]),s.push(i[b])),console.log("face",P),P){o.push(t[b+1],t[b+2]);for(var M=1;M0;T--)o.push([].concat(nt()(O.geometry.coordinates[0][T]),[t[b+1][2]]));s.push(i[b+1],i[b+2])}b==t.length-4&&(o.push(t[b+3]),s.push(i[b+3]))}n=[].concat(o);for(var N=s.length-1;N>=0;N--)n.push(s[N]);return n.push(n[0]),console.log("positions",n),n}},{key:"calculatePositions2",value:function(){for(var e=[],t=0;t180&&(h=360-h),h}return e}},{key:"calculatePositions",value:function(){var e=this.deepCopyObj(this.options.positions);this.noseToTail&&e.push(e[0],e[1]);for(var t=[],i=[],n=0;n0){var _=b;b=k+180,k=_+180,!1}var x=Math.abs(b-k);x>180&&(x=360-x);var S=this.options.width/2/Math.cos(Cesium.Math.toRadians(x/2));S>5*this.options.width&&(S=5*this.options.width);var E=turf.sector([v.lng,v.lat],this.options.width/1e3/2,b,k,{units:"kilometers",steps:3600}),P=turf.point([v.lng,v.lat]),D=turf.point(nt()(E.geometry.coordinates[0][Math.ceil(E.geometry.coordinates[0].length/2)])),O=turf.bearing(P,D),M=turf.destination(P,S/1e3,O,{units:"kilometers"}),T=[];T.push([].concat(nt()(E.geometry.coordinates[0][0]),[v.alt])),T.push([].concat(nt()(E.geometry.coordinates[0][1]),[v.alt])),T.push([].concat(nt()(M.geometry.coordinates),[v.alt])),T.push([].concat(nt()(E.geometry.coordinates[0][E.geometry.coordinates[0].length-2]),[v.alt])),i.push(T),i.push(t[f])}else if(1===this.cornerType)for(var N=1;N0){var H=I;I=F+180,F=H+180}for(var V=turf.sector([j.lng,j.lat],this.options.width/1e3/2,I,F,{units:"kilometers"}),G=[],W=0;W直角',value:"直角",key:0,icon:"yj-icon-zj"},{name:'斜角',value:"斜角",key:1,icon:"yj-icon-xj"},{name:'圆角',value:"圆角",key:2,icon:"yj-icon-yj"}],(o=Object(je.a)(i.getElementsByClassName("corner-type-box")[0],".corner-type")).legp_search(n),(s=document.createElement("i")).className="icon-active",i.getElementsByClassName("corner-type")[0].getElementsByClassName("cy_datalist")[0].appendChild(s),a=i.getElementsByClassName("corner-type")[0].getElementsByTagName("input")[0],r=0;case 20:if(!(r'),e.abrupt("break",29);case 26:r++,e.next=20;break;case 29:a.addEventListener("input",(function(e,t){for(var i=0;i');break}})),l=[{name:'纯色墙',value:"纯色墙",key:0,icon:"icon-wall"},{name:'红砖墙',value:"红砖墙",key:1,icon:"icon-wall-brick1"},{name:'黄砖墙',value:"黄砖墙",key:2,icon:"icon-wall-brick2"},{name:'灰瓷墙',value:"灰瓷墙",key:3,icon:"icon-wall-brick3"}],(c=Object(je.a)(i.getElementsByClassName("material-box")[0],".material")).legp_search(l),(u=document.createElement("i")).className="icon icon-active",i.getElementsByClassName("material")[0].getElementsByClassName("cy_datalist")[0].appendChild(u),h=i.getElementsByClassName("material")[0].getElementsByTagName("input")[0],p=0;case 38:if(!(p0&&void 0!==arguments[0]?arguments[0]:function(){},i=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var n,o,s=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(i.entity){for(var n=i.calculatePositions(),o=0;o=500?u(o,t):c(o,t)}))}));for(var h=0;h0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};i.x=i.x||0===i.x?i.x:10,i.y=i.y||0===i.y?i.y:10;for(var n=[],o=0;o\n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 线条颜色\n
          \n
          \n
          \n 线条宽度\n
          \n \n px\n \n
          \n
          \n
          \n 线条形式\n
          \n
          \n
          \n
          \n
          \n 线段缓冲\n \n
          \n
          \n 缓冲宽度\n
          \n \n m\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 ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- 指令--\x3e\n \x3c!-- --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!-- 设置操作点--\x3e\n \x3c!-- --\x3e\n \x3c!-- --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n \x3c!--
          --\x3e\n
          \n
          \n
          \n \n ')}function Jl(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return ql(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?ql(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function ql(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),(i=$l(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.width=n.width||0===n.width?n.width:3,i.options.color=n.color||"#ff0000",i.options.type=n.type?Number(n.type):0,i.options.noseToTail=n.noseToTail||!1,i.options.extend=n.extend||!1,i.options.rotate=!n.rotate&&!1!==n.rotate||n.rotate,i.options.space=n.space||0===n.space?n.space:1,i.options.speed=n.speed||10,i.options.wordsName=n.wordsName||0,i.options.extendWidth=n.extendWidth||0===n.extendWidth?n.extendWidth:10,i.options.extendColor=n.extendColor||"rgba(255,255,80,0.3)",i.options.show=!n.show&&!1!==n.show||n.show,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i._elms=[],n.label=n.label||{},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",i.operate={},i.nodePoints=[],i.unitNum=0,i.inputSpeed=n.speed&&100*Math.pow(n.speed,-1)||10,i.Dialog=o,!i.options.positions||i.options.positions.length<2)i._error="线段最少需要两个坐标!",console.warn(i._error);else{for(var s=0;s实线',value:"实线",key:0,icon:"line"},{name:'虚线',value:"虚线",key:1,icon:"dash-line"},{name:'泛光',value:"泛光",key:2,icon:"light-line"},{name:'尾迹光线',value:"尾迹光线",key:3,icon:"tail-line"},{name:'多尾迹光线',value:"多尾迹光线",key:4,icon:"mult-tail-line"},{name:'流动虚线1',value:"流动虚线1",key:5,icon:"flow-dash-line1"},{name:'流动虚线2',value:"流动虚线2",key:6,icon:"flow-dash-line2"},{name:'流动箭头1',value:"流动箭头1",key:7,icon:"pic-line1"},{name:'流动箭头2',value:"流动箭头2",key:8,icon:"pic-line2"},{name:'流动箭头3',value:"流动箭头3",key:9,icon:"pic-line3"},{name:'流动箭头4',value:"流动箭头4",key:10,icon:"pic-line4"},{name:'流动箭头5',value:"流动箭头5",key:11,icon:"pic-line5"},{name:'流动箭头6',value:"流动箭头6",key:12,icon:"pic-line6"}];this.options.type=Number(e);for(var n=function(n){if(i[n].key===Number(e))return t._elms.lineType&&t._elms.lineType.forEach((function(e){e.value=i[n].value,2this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t700?c*=m/u/(t.space*(i.width/i.height*5)+1):c=void 0,this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE3D?c:Object(J.get3DView)().viewer.entities.getById(this.options.id).polyline.oriRepeatX}}},{key:"edit",value:(a=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return");case 8:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" polyline",(i=document.createElement("div")).innerHTML=Yl(this),this._DialogObject.contentAppChild(i),this.attributeType=this.options.attributeType,new Je("polyline-object-edit-tabs",void 0,this.sdk),n=new YJColorPicker({el:i.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){u.color=e},clear:function(){u.color="rgba(255,255,255,1)"}}),o=new YJColorPicker({el:i.getElementsByClassName("labelColor")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){u.labelColor=e},clear:function(){u.labelColor="rgba(255,255,255,1)"}}),s=new YJColorPicker({el:i.getElementsByClassName("extendColor")[0],size:"mini",alpha:!0,defaultColor:this.extendColor,disabled:!1,openPickerAni:"opacity",sure:function(e){u.extendColor=e},clear:function(){u.extendColor="rgba(255,255,255,1)"}}),a=new YJColorPicker({el:i.getElementsByClassName("labelLineColor")[0],size:"mini",alpha:!0,defaultColor:this.labelLineColor,disabled:!1,openPickerAni:"opacity",sure:function(e){u.labelLineColor=e},clear:function(){u.labelLineColor="rgba(255,255,255,1)"}}),r=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorStart")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorStart,disabled:!1,openPickerAni:"opacity",sure:function(e){u.labelBackgroundColorStart=e},clear:function(){u.labelBackgroundColorStart="rgba(255,255,255,1)"}}),l=new YJColorPicker({el:i.getElementsByClassName("labelBackgroundColorEnd")[0],size:"mini",alpha:!0,defaultColor:this.labelBackgroundColorEnd,disabled:!1,openPickerAni:"opacity",sure:function(e){u.labelBackgroundColorEnd=e},clear:function(){u.labelBackgroundColorEnd="rgba(255,255,255,1)"}}),c=i.getElementsByTagName("*"),Zl.on(this,c),this._elms=Zl.element,this._elms.color=[n],this._elms.labelColor=[o],this._elms.extendColor=[s],this._elms.labelLineColor=[a],this._elms.labelBackgroundColorStart=[r],this._elms.labelBackgroundColorEnd=[l],setTimeout((function(){u.attributeLink=u.options.attribute.link.content;var e=u.attributeSelect,t=u._DialogObject._element.content.getElementsByClassName("attribute-select-box")[0];if(t){var n=Object(je.a)(t,".attribute-select");n.legp_search(e);for(var o=u._DialogObject._element.content.getElementsByClassName("attribute-select")[0].getElementsByTagName("input")[0],s=0;s实线',value:"实线",key:0,icon:"line"},{name:'虚线',value:"虚线",key:1,icon:"dash-line"},{name:'泛光',value:"泛光",key:2,icon:"light-line"},{name:'尾迹光线',value:"尾迹光线",key:3,icon:"tail-line"},{name:'多尾迹光线',value:"多尾迹光线",key:4,icon:"mult-tail-line"},{name:'流动虚线1',value:"流动虚线1",key:5,icon:"flow-dash-line1"},{name:'流动虚线2',value:"流动虚线2",key:6,icon:"flow-dash-line2"},{name:'流动箭头1',value:"流动箭头1",key:7,icon:"pic-line1"},{name:'流动箭头2',value:"流动箭头2",key:8,icon:"pic-line2"},{name:'流动箭头3',value:"流动箭头3",key:9,icon:"pic-line3"},{name:'流动箭头4',value:"流动箭头4",key:10,icon:"pic-line4"},{name:'流动箭头5',value:"流动箭头5",key:11,icon:"pic-line5"},{name:'流动箭头6',value:"流动箭头6",key:12,icon:"pic-line6"}],v=Object(je.a)(u._DialogObject._element.content.getElementsByClassName("input-select-line-type-box")[0],".input-select-line-type");if(v){v.legp_search(f);var g=document.createElement("i");g.className="icon icon-active",u._DialogObject._element.content.getElementsByClassName("input-select-line-type")[0].getElementsByClassName("cy_datalist")[0].appendChild(g);var y=u._DialogObject._element.content.getElementsByClassName("input-select-line-type")[0].getElementsByTagName("input")[0];u._elms.lineType=[y];for(var b=0;b'.concat(e+1,'\n
          \n
          \n
          \n ');var i=t.getElementsByClassName("lng")[0],n=document.createElement("span");n.innerHTML=u.options.positions[e].lng.toFixed(8),i.appendChild(n);var o=document.createElement("input");o.className="input",o.type="number",o.title="",o.min=-180,o.max=180,o.value=u.options.positions[e].lng.toFixed(8);var s=t.getElementsByClassName("lat")[0],a=document.createElement("span");a.innerHTML=u.options.positions[e].lat.toFixed(8),s.appendChild(a);var r=document.createElement("input");r.className="input",r.type="number",r.title="",r.min=-90,r.max=90,r.value=u.options.positions[e].lat.toFixed(8);var l=t.getElementsByClassName("alt")[0],c=document.createElement("span");c.innerHTML=u.options.positions[e].alt.toFixed(2),l.appendChild(c);var h=document.createElement("input");h.className="input",h.type="number",h.title="",h.min=-9999999,h.max=999999999,h.value=u.options.positions[e].alt.toFixed(2),i.addEventListener("dblclick",(function(){i.innerHTML="",o.value=Number(u.options.positions[e].lng.toFixed(8)),i.appendChild(o),o.focus(),u.positionEditing=!1,u.closeNodeEdit()})),o.addEventListener("blur",(function(){o.value=Number(u.options.positions[e].lng.toFixed(8)),i.innerHTML="",i.appendChild(n)})),o.addEventListener("input",(function(){u.options.positions[e].lng=Number(Number(o.value).toFixed(8)),n.innerHTML=u.options.positions[e].lng.toFixed(8);var t=u.renewPositions(u.options.positions);u.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),u.label.position=[u.options.positions[0].lng,u.options.positions[0].lat,t[2]]})),s.addEventListener("dblclick",(function(){s.innerHTML="",r.value=Number(u.options.positions[e].lat.toFixed(8)),s.appendChild(r),r.focus(),u.positionEditing=!1,u.closeNodeEdit()})),r.addEventListener("blur",(function(){r.value=Number(u.options.positions[e].lat.toFixed(8)),s.innerHTML="",s.appendChild(a)})),r.addEventListener("input",(function(){u.options.positions[e].lat=Number(Number(r.value).toFixed(8)),a.innerHTML=u.options.positions[e].lat.toFixed(8);var t=u.renewPositions(u.options.positions);u.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),u.label.position=[u.options.positions[0].lng,u.options.positions[0].lat,t[2]]})),l.addEventListener("dblclick",(function(){2!=u.heightMode&&(l.innerHTML="",h.value=Number(u.options.positions[e].alt.toFixed(2)),l.appendChild(h),h.focus(),u.positionEditing=!1,u.closeNodeEdit())})),h.addEventListener("blur",(function(){h.value=Number(u.options.positions[e].alt.toFixed(2)),l.innerHTML="",l.appendChild(c)})),h.addEventListener("input",(function(){u.options.positions[e].alt=Number(Number(h.value).toFixed(2)),c.innerHTML=u.options.positions[e].alt.toFixed(2);var t=u.renewPositions(u.options.positions);u.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(t),u.label.position=[u.options.positions[0].lng,u.options.positions[0].lat,t[2]]})),u._elms.lng.push(n),u._elms.lngInput.push(o),u._elms.lat.push(a),u._elms.latInput.push(r),u._elms.alt.push(c),u._elms.altInput.push(h),P.appendChild(t)},O=0;O0&&void 0!==g[0]?g[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.f)(this.sdk),Object(X.g)(this.sdk),Object(X.w)(0),!this.options.customView){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Ql({},this.options.position):this.options.positions?r=Ql({},this.options.positions[0]):this.options.center?r=Ql({},this.options.center):this.options.start?r=Ql({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=43;break;case 25:l=[],e.t0=this.options.heightMode,e.next="0"===e.t0||0===e.t0?29:"1"===e.t0||1===e.t0?31:"2"===e.t0||2===e.t0?36:41;break;case 29:for(u=0;u=500?(t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.positionEditing=!1):leftEvent(s,i)}))})),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return Cesium.Cartesian3.fromDegreesArrayHeights(n)}),!1)}else{this.sdk&&this.sdk.viewer&&this.label&&this.label.entity||(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)")),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.destroy()),this.tip&&this.tip.destroy();var u=this.renewPositions(this.options.positions);this.entity.polyline.positions=Cesium.Cartesian3.fromDegreesArrayHeights(u),this.renewPolygon(u);var h=this.heightMode;switch(this._isNodeEdit&&(h=0),h){case 0:case"0":case 1:case"1":this.label.position=[this.options.positions[0].lng,this.options.positions[0].lat,u[2]],this.options.label.position={lng:this.options.positions[0].lng,lat:this.options.positions[0].lat,alt:u[2]};break;case 2:case"2":this.label.position=[this.options.positions[0].lng,this.options.positions[0].lat],this.options.label.position={lng:this.options.positions[0].lng,lat:this.options.positions[0].lat,alt:u[2]}}}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"lengthChangeCallBack",get:function(){return this._lengthChangeCallBack},set:function(e){this._lengthChangeCallBack=e}},{key:"setDIV",value:function(){var e,t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};i.x=i.x||0===i.x?i.x:10,i.y=i.y||0===i.y?i.y:10;for(var n=[],o=0;o1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=nc(this,t,[e,n])).viewer=e.viewer,i.options.show=!n.show&&!1!==n.show||n.show,i.options.name=i.options.name||"未命名对象",i.options.size=i.options.size||0===i.options.size?i.options.size:80,i.options.scaleByDistance=!n.scaleByDistance&&!1!==n.scaleByDistance||n.scaleByDistance,i.event=new te.a(i.sdk),i.Dialog=o,i.operate={},i._elms={},i._EventBinding=new Ye,i.sdk.addIncetance(i.options.id,i),t.create(i),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"Explosion"}},{key:"edit",value:(o=_()(S.a.mark((function e(t){var i,n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return");case 7:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" explosion",(i=document.createElement("div")).innerHTML='\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 m\n \n
          \n
          \n
          \n
          \n
          \n 纬度\n \n
          \n
          \n 高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n \n ',this._DialogObject.contentAppChild(i),n=i.getElementsByTagName("*"),this._EventBinding.on(this,n),this._elms=this._EventBinding.element,this.scaleByDistance=this.options.scaleByDistance;case 16:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=ic({},this.options.position):this.options.positions?r=ic({},this.options.positions[0]):this.options.center?r=ic({},this.options.center):this.options.start?r=ic({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=24;break;case 23:this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.position.lng,this.options.position.lat,this.options.position.alt+8*this.options.size),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-85),roll:Cesium.Math.toRadians(0)}});case 24:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.previous=null,this.options=this.deepCopyObj(this.originalOptions),this.name=this.originalOptions.name,this.size=this.originalOptions.size,this.scaleByDistance=this.originalOptions.scaleByDistance,this.lng=this.options.position.lng,this.lat=this.options.position.lat,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"scaleByDistance",get:function(){return this.options.scaleByDistance},set:function(e){this.options.scaleByDistance=e,this.entity.billboard.sizeInMeters=e,this._elms.scaleByDistance&&this._elms.scaleByDistance.forEach((function(t){t.checked=e}))}},{key:"lng",get:function(){return this.options.position.lng},set:function(e){this.options.position.lng=e,this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.position.lat},set:function(e){this.options.position.lat=e,this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"alt",get:function(){return this.options.position.alt},set:function(e){this.options.position.alt=e,this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e}))}},{key:"size",get:function(){return this.options.size},set:function(e){this.options.size=e,this.entity.billboard.width=this.options.size,this.entity.billboard.height=this.options.size,this._elms.size&&this._elms.size.forEach((function(t){t.value=e}))}},{key:"positionEditing",get:function(){return this.operate.positionEditing},set:function(e){var t=this;!YJ.Measure.GetMeasureStatus()&&this.sdk&&this.sdk.viewer&&this.entity&&(this.operate.positionEditing=e,!0===e?(this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.previous={position:ic({},this.options.position)},this.event.mouse_move((function(e,i){var n=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=n.lng,t.lat=n.lat,t.alt=n.alt,t.tip.setPosition(i,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,i){var n=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=n.lng,t.lat=n.lat,t.alt=n.alt,t.previous={position:ic({},t.options.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t._positionEditingCallback&&(t._positionEditingCallback(),t._positionEditingCallback=null),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=e.lng,t.lat=e.lat,t.alt=e.alt,t.previous={position:ic({},t.options.position)},t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))):(this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy(),this.previous&&(this.lng=this.previous.position.lng,this.lat=this.previous.position.lat,this.alt=this.previous.position.alt)))}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"remove",value:(i=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.viewer.entities.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),e.next=7,this.sdk.removeIncetance(this.options.id);case 7:return e.next=9,Object(J.syncData)(this.sdk,this.options.id);case 9:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"flicker",value:function(){}}],[{key:"create",value:function(e){for(var t=[],i=10001;i<=10120;i++){var n=e.getSourceRootPath()+"/img/frameAnimation/explosion/b".concat(i,".png");t.push(n)}var o=new Cesium.Entity({id:e.options.id,show:e.options.show,position:new Cesium.CallbackProperty((function(){return Cesium.Cartesian3.fromDegrees(e.options.position.lng,e.options.position.lat,e.options.position.alt)}),!1),billboard:{image:new Cesium.CallbackProperty((function(){var e=t[o.imgIndex];return o.imgIndex++,o.imgIndex>=t.length&&(o.imgIndex=0),e}),!1),disableDepthTestDistance:new Cesium.CallbackProperty((function(){return Object(X.s)()?void 0:Number.POSITIVE_INFINITY}),!1),width:e.options.size,height:e.options.size,sizeInMeters:e.options.scaleByDistance,pixelOffset:{x:0,y:-20}}});o.imgIndex=0,e.entity=e.viewer.entities.add(o),Object(J.syncData)(e.sdk,e.options.id),e.options.show&&Object(Z.setSplitDirection)(0,e.options.id)}}]);var i,n,o}(vt);function sc(e){return'\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 经度\n \n
          \n
          \n 扩散半径\n
          \n \n m\n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n 纬度\n \n
          \n
          \n 持续时间\n
          \n \n ms\n \n
          \n
          \n
          \n
          \n
          \n 高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n
          \n 范围颜色\n
          \n
          \n
          \n 扫描颜色\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ','\n
          \n
          \n
          \n
          \n \n ')}function ac(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function rc(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(n=lc(this,t,[e,i])).options.lng=i.lng,n.options.lat=i.lat,n.options.alt=i.alt,n.options.colorOut=i.colorOut||"rgba(255,255,0,0.3)",n.options.colorIn=i.colorIn||"rgba(255,0,0,0.3)",n.options.radius=i.radius||10,n.options.radius>999999&&(n.options.radius=999999),n.options.speed=i.speed||1,n.event=new te.a(n.sdk),i.label=i.label||{},n.options.label={show:i.label.show||!1,fontSize:i.label.fontSize||0===i.label.fontSize?i.label.fontSize:20,fontFamily:i.label.fontFamily?i.label.fontFamily:0,color:i.label.color||"#ffffff",lineWidth:i.label.lineWidth||0===i.label.lineWidth?i.label.lineWidth:4,pixelOffset:i.label.pixelOffset||0===i.label.pixelOffset?i.label.pixelOffset:20,backgroundColor:i.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:i.label.lineColor||"#00ffff80",scaleByDistance:i.label.scaleByDistance||!1,near:i.label.near||0===i.label.near?i.label.near:2e3,far:i.label.far||0===i.label.far?i.label.far:1e5},n.options.attribute=i.attribute||{},n.options.attribute.link=n.options.attribute.link||{},n.options.attribute.link.content=n.options.attribute.link.content||[],n.options.richTextContent=i.richTextContent||"",n._elms={},n.Dialog=o,n._EventBinding=new Ye,n.ControllerObject=new fi(n.sdk),n.sdk.addIncetance(n.options.id,n),t.radarSolidScan(n),n}return Me()(t,e),h()(t,[{key:"type",get:function(){return"RadarScanStereoscopic"}},{key:"positionEditing",get:function(){return"translational"===this.ControllerObject.getActiveState()},set:function(e){var t=this;this.sdk&&this.sdk.viewer&&this.entity&&(e?(this.picking=!1,this.ControllerObject.position={lng:this.options.lng,lat:this.options.lat,alt:this.options.alt},this.ControllerObject.editTranslational(),this.ControllerObject.controllerCallBack=function(e){t.lng=e.position.lng,t.lat=e.position.lat,t.alt=e.position.alt,t._positionEditingCallback&&t._positionEditingCallback()}):(setTimeout((function(){t.picking=!0}),500),this.ControllerObject.destroy(),this._positionEditingCallback=null))}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"closePositionEditing",value:function(){this.positionEditing=!1,this._positionEditingCallback=null}},{key:"lng",get:function(){return this.options.lng},set:function(e){this.options.lng=Number(e),this.label.position=[e,this.lat,this.alt+this.radius],this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e})),t.changeParam(this)}},{key:"lat",get:function(){return this.options.lat},set:function(e){this.options.lat=Number(e),this.label.position=[this.lng,e,this.alt+this.radius],this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e})),t.changeParam(this)}},{key:"alt",get:function(){return this.options.alt},set:function(e){this.options.alt=Number(e),this.label.position=[this.lng,this.lat,e+this.radius],this._elms.alt&&this._elms.alt.forEach((function(t){t.value=e})),t.changeParam(this)}},{key:"radius",get:function(){return this.options.radius},set:function(e){var i=Number(e.toFixed(2));(i>999999&&(i=999999),i<.1&&(i=.1),this.options.radius=i,this.label.position=[this.lng,this.lat,this.alt+e],this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content)&&("千米"===this._DialogObject._element.content.getElementsByClassName("input-radius-unit")[0].getElementsByTagName("input")[0].value&&(i=Number((i/1e3).toFixed(5))));this._elms.radius&&this._elms.radius.forEach((function(e){e.value=i})),t.changeParam(this)}},{key:"duration",get:function(){return 1e3}},{key:"speed",get:function(){return this.options.speed},set:function(e){this.options.speed=e,this._elms.speed&&this._elms.speed.forEach((function(t){t.value=e})),t.changeParam(this)}},{key:"colorOut",get:function(){return this.options.colorOut},set:function(e){var t=this;this.options.colorOut=e,this.entity.ellipsoid.material=Cesium.Color.fromCssColorString(e),this.entity.ellipsoid.outlineColor=Cesium.Color.fromCssColorString(e),this._elms.colorOut&&this._elms.colorOut.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.colorOut=e},clear:function(){t.colorOut="rgba(255,255,255,1)"}});t._elms.colorOut[n]=o}))}},{key:"colorIn",get:function(){return this.options.colorIn},set:function(e){var t=this;this.options.colorIn=e,this.entity.wall.material=Cesium.Color.fromCssColorString(e),this._elms.colorIn&&this._elms.colorIn.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.colorIn=e},clear:function(){t.colorIn="rgba(255,255,255,1)"}});t._elms.colorIn[n]=o}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){this.options.label.show=e,this.show&&!this.showView||3==this.showView?this.label.show=e:this.label.show=!1,this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label.color=e,this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label.fontSize=e,this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label.scaleByDistance=e,this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t=Number(e.target.min))&&(h.radius=i*("米"===t?1:1e3))}})),u.addEventListener("blur",(function(e){var t=h._DialogObject._element.content.getElementsByClassName("input-radius-unit")[0].getElementsByTagName("input")[0].value;if(e.target.value||0===e.target.value){var i=e.target.value;i=Number(i),e.target.max&&i>Number(e.target.max)/("米"===t?1:1e3)&&(i=Number(e.target.max)/("米"===t?1:1e3)),e.target.min&&i0&&void 0!==c[0]?c[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=rc({},this.options.position):this.options.positions?r=rc({},this.options.positions[0]):this.options.center?r=rc({},this.options.center):this.options.start?r=rc({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=27;break;case 23:return e.next=25,this.getClampToHeight({lng:this.options.lng,lat:this.options.lat});case 25:l=e.sent,this.sdk.viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(this.options.lng,this.options.lat,6*this.options.radius+l),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)},duration:1});case 27:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.options=this.deepCopyObj(this.originalOptions),this.name=this.originalOptions.name,this.lng=this.originalOptions.lng,this.lat=this.originalOptions.lat,this.alt=this.originalOptions.alt,this.colorOut=this.originalOptions.colorOut,this.colorIn=this.originalOptions.colorIn,this.radius=this.originalOptions.radius,this.speed=this.originalOptions.speed,this.labelShow=this.originalOptions.label.show,this.labelColor=this.originalOptions.label.color,this.labelFontSize=this.originalOptions.label.fontSize,this.labelFontFamily=this.originalOptions.label.fontFamily,this.labelScaleByDistance=this.originalOptions.label.scaleByDistance,this.labelNear=this.originalOptions.label.near,this.labelFar=this.originalOptions.label.far,this.labelLineWidth=this.originalOptions.label.lineWidth,this.labelPixelOffset=this.originalOptions.label.pixelOffset,this.labelLineColor=this.originalOptions.label.lineColor,this.labelBackgroundColorStart=this.originalOptions.label.backgroundColor[0],this.labelBackgroundColorEnd=this.originalOptions.label.backgroundColor[1],this.positionEditing=!1,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"remove",value:(n=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.label.remove(),this.sdk.viewer.entities.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),e.next=6,this.sdk.removeIncetance(this.options.id);case 6:return e.next=8,Object(J.syncData)(this.sdk,this.options.id);case 8:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"setDIV",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=document.getElementById(t.domid),n=Cesium.Cartesian3.fromDegrees(this.options.lng,this.options.lat,this.options.alt+this.options.radius);this.sdk.viewer.scene.postRender.addEventListener((function(o){if("block"===i.style.display||""===i.style.display){var s=e.sdk.viewer.scene.cartesianToCanvasCoordinates(n);s&&(i.style.left=(s.x+t.x).toFixed(0)+"px",i.style.top=(s.y+t.y).toFixed(0)+"px")}}))}}],[{key:"radarSolidScan",value:function(e){var i=e.sdk.viewer,n=e.options,o=(n.radius,n.lng,n.lat,n.alt,e.options.speed?360/e.duration*Cesium.getTimestamp()*e.options.speed:0),s=a(e.options,e.options.radius,o);(new Date).getTime();function a(e,t,i){var n=e.lng,o=e.lat,s=e.alt,a=Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(n,o,s)),r=t*Math.cos(i*Math.PI/180),l=t*Math.sin(i*Math.PI/180),c=Cesium.Cartesian3.fromElements(r,l,s),u=Cesium.Matrix4.multiplyByPoint(a,c,new Cesium.Cartesian3),h=Cesium.Cartographic.fromCartesian(u);return function(e,t,i,n,o){var s=[],a=[];s.push(e,t,o),a.push(o);for(var r=Cesium.Cartesian3.distance(Cesium.Cartesian3.fromDegrees(e,t),Cesium.Cartesian3.fromDegrees(i,n)),l=0;l<=90;l++){var c=r*Math.sin(l*Math.PI/180),u=Math.cos(l*Math.PI/180),h=(i-e)*u+e,p=(n-t)*u+t;s.push(h,p,c+o),a.push(o)}return{positionArr:s,bottomArr:a}}(n,o,Cesium.Math.toDegrees(h.longitude),Cesium.Math.toDegrees(h.latitude),s)}i.clock.onTick.addEventListener((function(){o=e.options.speed?360/e.duration*Cesium.getTimestamp()*e.options.speed:0,s=a(e.options,e.options.radius,o)})),e.entity=i.entities.add({id:e.options.id,show:e.options.show,position:new Cesium.CallbackProperty((function(){return new Cesium.Cartesian3.fromDegrees(e.options.lng,e.options.lat,e.options.alt)}),!1),ellipsoid:{radii:new Cesium.CallbackProperty((function(){return new Cesium.Cartesian3(e.options.radius,e.options.radius,e.options.radius)}),!1),material:Cesium.Color.fromCssColorString(n.colorOut),outline:!0,outlineColor:Cesium.Color.fromCssColorString(n.colorOut),outlineWidth:1,maximumCone:Cesium.Math.toRadians(90)},wall:{positions:new Cesium.CallbackProperty((function(){return Cesium.Cartesian3.fromDegreesArrayHeights(s.positionArr)}),!1),material:Cesium.Color.fromCssColorString(n.colorIn),minimumHeights:new Cesium.CallbackProperty((function(){return s.bottomArr}),!1)}}),t.createLabel(e),Object(J.syncData)(e.sdk,e.options.id),e.options.show&&Object(Z.setSplitDirection)(0,e.options.id)}},{key:"createLabel",value:(i=_()(S.a.mark((function e(t){var i,n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.options.alt){e.next=4;break}i=t.options.alt+t.options.radius,e.next=8;break;case 4:return n=nt()(t.sdk.viewer.entities.values),e.next=7,t.getClampToHeight({lng:t.options.lng,lat:t.options.lat},n);case 7:i=e.sent;case 8:t.options.label.position={lng:t.options.lng,lat:t.options.lat,alt:i},t.label=new _t(t.sdk,{id:t.options.id,show:!!t.options.show&&t.options.label.show,position:[t.options.label.position.lng,t.options.label.position.lat,t.options.label.position.alt],text:t.options.name,ground:!1,fontSize:t.options.label.fontSize,fontFamily:t.options.label.fontFamily,color:t.options.label.color,pixelOffset:t.options.label.pixelOffset,backgroundColor:t.options.label.backgroundColor,lineColor:t.options.label.lineColor,lineWidth:t.options.label.lineWidth,scaleByDistance:t.options.label.scaleByDistance,near:t.options.label.near,far:t.options.label.far});case 10:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"changeParam",value:function(e){}}]);var i,n,o,s}(vt);function uc(e){return'\n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n 投影面积:\n \n
          \n
          \n
          \n
          \n
          \n
          \n \n \n '.concat(ct(e),'\n \n \n
          \n
          \n 高度模式\n
          \n
          \n
          \n Z值统一增加\n
          \n \n m\n \n
          \n \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          经度(X)
          \n
          纬度(Y)
          \n
          高度(Z)
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n \n
          \n
          \n 面颜色\n
          \n
          \n
          \n 边线颜色\n
          \n
          \n
          \n 边线宽度\n
          \n \n px\n \n
          \n
          \n
          \n
          \n \n ').concat('\n
          \n
          \n 标注开关\n \n
          \n
          \n
          \n
          \n 字体颜色\n
          \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n ','\n
          \n \n ').concat('\n
          \n
          \n 引线颜色\n
          \n
          \n
          \n 背景颜色\n
          \n
          \n
          \n
          \n
          \n
          \n 引线宽度\n
          \n \n px\n \n
          \n
          \n
          \n 引线长度\n
          \n \n px\n \n
          \n
          \n
          \n ',"\n
          \n
          \n
          \n ")}function hc(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return pc(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?pc(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function pc(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=fc(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"rgba(255, 0, 0, 0.5)",i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:2,i.options.semiMinorAxis=n.semiMinorAxis||0===n.semiMinorAxis?n.semiMinorAxis:10,i.options.semiMajorAxis=n.semiMajorAxis||0===n.semiMajorAxis?n.semiMajorAxis:20,i.options.show=!n.show&&!1!==n.show||n.show,i.options.center=n.center||{},i.options.line=n.line||{},i.options.line.width=i.options.line.width||0===i.options.line.width?i.options.line.width:3,i.options.line.color=i.options.line.color||"rgba(255, 0, 0, 1)",n.label=n.label||{},i._elms={},i.options.label={text:i.options.name,show:n.label.show||!1,position:n.label.position,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],delete i.options.attribute.camera,delete i.options.attribute.vr,delete i.options.attribute.goods,i.options.richTextContent=n.richTextContent||"",i.event=new te.a(i.sdk),i.nodePoints=[],i.operate={},i.Dialog={},i.sdk.addIncetance(i.options.id,i),t.create(i),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"SectorObject"}},{key:"heightMode",get:function(){return this.options.heightMode?this.options.heightMode:0},set:function(e){var t=this;this.entity.polygon.hierarchy=[],setTimeout((function(){if(t.options.heightMode=e||0==e?e:2,t.positionEditing=!1,t.entity){var i="";t.closeNodeEdit();var n=!1,o=!1;switch(t.renewPositions(),t.entity.polyline.positions=[].concat(nt()(t.positions),[t.positions[0],t.positions[1]]),t.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(t.positions),t.options.heightMode){case"0":case 0:i="海拔高度";break;case"1":case 1:i="相对地表";break;case"2":case 2:n=!0,o=!0,i="依附模型"}t.label.ground=n,t.entity.polyline.clampToGround=n,t.entity.polyline.arcType=n?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE,t.entity.polygon.perPositionHeight=!n,t._elms.heightMode&&(t._elms.heightMode.value=i),t._elms.heightModeObject&&t._elms.heightModeObject.legp_searchActive(i),o?(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box disabled"),t._elms.heightConfirm&&t._elms.heightConfirm.setAttribute("disabled","disabled")):(t._elms.heightBox&&(t._elms.heightBox.className="input-number input-number-unit-1 height-box"),t._elms.heightConfirm&&t._elms.heightConfirm.removeAttribute("disabled"))}}),50)}},{key:"height",get:function(){return this.options.center.alt},set:function(e){var t,i=this;!e||isNaN(Number(e))?this.options.center.alt=0:this.options.center.alt=Number(Number(e).toFixed(2)),t=2==this.heightMode,this.renewPositions(),setTimeout((function(){i.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(i.positions),i.entity.polygon.perPositionHeight=!t,i.entity.polyline.positions=[].concat(nt()(i.positions),[i.positions[0],i.positions[1]]),i.entity.polyline.clampToGround=!!t,i.entity.polyline.arcType=t?Cesium.ArcType.GEODESIC:Cesium.ArcType.NONE}),0),this._elms.alt&&this._elms.alt.forEach((function(e){e.innerHTML=i.options.center.alt}))}},{key:"startAngle",get:function(){return this.options.startAngle},set:function(e){this.options.startAngle=e,this.height=this.height}},{key:"endAngle",get:function(){return this.options.endAngle},set:function(e){this.options.endAngle=e,this.height=this.height}},{key:"center",get:function(){return this.options.center},set:function(e){var t=this;this.options.center=e,this.height=this.height,this._elms.lng&&this._elms.lng.forEach((function(e){e.innerHTML=t.options.center.lng})),this._elms.lat&&this._elms.lat.forEach((function(e){e.innerHTML=t.options.center.lat}))}},{key:"radius",get:function(){return this.options.radius},set:function(e){this.options.radius=e,this.height=this.height}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;if(this.options.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polygon){var i=Cesium.Color.fromCssColorString(this.options.color);2===this.sdk.viewer.scene.mode&&(i=new Cesium.CustomColorMaterialSource({color:this.options.color})),this.entity.polygon.material=i,this.entity.polyline.width=this.lineWidth,this._elms.color&&this._elms.color.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,0,0,0.5)"}});t._elms.color[i]=n}))}}},{key:"lineColor",get:function(){return this.options.line.color},set:function(e){var t=this;this.options.line.color=e||"rgba(255, 0, 0, 0.5)",this.sdk&&this.sdk.viewer&&this.entity&&this.entity.polyline&&(this.entity.polyline.material=Cesium.Color.fromCssColorString(this.options.line.color),this._elms.lineColor&&this._elms.lineColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.options.line.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.lineColor=e},clear:function(){t.lineColor="rgba(255,0,0,0.5)"}});t._elms.lineColor[i]=n})))}},{key:"lineWidth",get:function(){return this.options.line.width},set:function(e){var t=this;this.options.line.width=e||0===e?e:3,this.entity.polyline.width=this.options.line.width,this._elms.lineWidth&&this._elms.lineWidth.forEach((function(e){e.value=t.options.line.width}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){this.options.label.show=e,this.show&&!this.showView||3==this.showView?this.label.show=e:this.label.show=!1,this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label.color=e,this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label.fontSize=e,this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label.scaleByDistance=e,this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label.near=t,this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;t0&&void 0!==x[0]?x[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!this.options.customView){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=mc({},this.options.position):this.options.positions?r=mc({},this.options.positions[0]):this.options.center?r=mc({},this.options.center):this.options.start?r=mc({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=60;break;case 23:l=this.entity.polyline.positions.getValue(),c=[],u=0,h=this.cartesian3Towgs84(l[0],this.sdk.viewer),p=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,0),d=Cesium.Cartesian3.fromDegrees(h.lng,h.lat,1e7),m=Cesium.Cartesian3.subtract(d,p,new Cesium.Cartesian3),f=Cesium.Cartesian3.normalize(m,m),v=new Cesium.Ray(p,f),g={},y=this.sdk.viewer.scene.drillPickFromRay(v),b=0;case 35:if(!(b=500)t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.center.lng=e.lng,t.options.center.lat=e.lat,t.center=t.options.center,t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.previous={center:t.deepCopyObj(t.options.center)},t.positionEditing=!1}}))})),this.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(i.positions)}),!1),this.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(i.positions),[i.positions[0],i.positions[1]])}),!1)):(this.previous||(this.previous={center:this.deepCopyObj(this.options.center)}),this.options.center=this.deepCopyObj(this.previous.center),this.label&&this.label.entity&&this.label.entity.billboard&&(this.label.entity.billboard.color=Cesium.Color.fromCssColorString("rgba(255,255,255,1)")),this.picking=!0,this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.destroy()),this.tip&&this.tip.destroy(),this.renewPositions(),this.entity.polygon.hierarchy=new Cesium.PolygonHierarchy(i.positions),this.entity.polyline.positions=[].concat(nt()(i.positions),[i.positions[0],i.positions[1]]),this.previous=null)}}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"areaChangeCallBack",get:function(){return this._areaChangeCallBack},set:function(e){this._areaChangeCallBack=e}},{key:"nodeEdit",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},t=this;if(t.positionEditing=!1,YJ.Measure.GetMeasureStatus());else{var i,n=function(e){function t(e,t){var i=Math.PI/180,n=e.y*i,o=t.y*i,s=e.x*i,a=t.x*i,r=Math.sin(a-s)*Math.cos(o),l=Math.cos(n)*Math.sin(o)-Math.sin(n)*Math.cos(o)*Math.cos(a-s),c=Math.atan2(r,l)%(2*Math.PI);return 360-(450-(180*c/Math.PI<0?360+180*c/Math.PI:180*c/Math.PI)-90)%360}var i=e[0],n=e[1],o=e[2],s={x:i.lng,y:i.lat},a={x:n.lng,y:n.lat},r={x:o.lng,y:o.lat};return{angle1:t(s,a),angle2:t(s,r)}},o=function(){var e=_()(S.a.mark((function e(i,n){var o,s,a;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.cartesian3Towgs84(i,t.sdk.viewer),e.next=3,t.getClampToHeight(o);case 3:s=e.sent,a=t.sdk.viewer.entities.add({name:"node-secondary-edit-point",type:n,position:Cesium.Cartesian3.fromDegrees(o.lng,o.lat,s),billboard:{image:t.getSourceRootPath()+"/img/point.png",width:15,height:15,disableDepthTestDistance:Number.POSITIVE_INFINITY}}),t.nodePoints.push(a);case 6:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}();t.event&&t.event.destroy(),t.event=new te.a(t.sdk),YJ.Measure.SetMeasureStatus(!0),t.tip=new St.a("请选择一个编辑点,右键取消",t.sdk),t.event=new te.a(t.sdk),t.nodePoints=[];var s=t.calSector(t.options.center,t.options.radius,t.options.startAngle,t.options.endAngle),a=[],r=t.options.radius,l={angle1:t.options.startAngle,angle2:t.options.endAngle};t.entity.polyline.clampToGround=!0,t.entity.polyline.arcType=Cesium.ArcType.GEODESIC,t.entity.polygon.perPositionHeight=!1,t.entity.polygon.hierarchy=new Cesium.CallbackProperty((function(){return new Cesium.PolygonHierarchy(s)}),!1),t.entity.polyline.positions=new Cesium.CallbackProperty((function(){return[].concat(nt()(s),[s[0],s[1]])}),!1);var c=t.entity.polyline.positions.getValue();a=[mc({},t.center),t.cartesian3Towgs84(c[1],t.sdk.viewer),t.cartesian3Towgs84(c[c.length-4],t.sdk.viewer)];var u=nt()(t.sdk.viewer.entities.values);setTimeout((function(){t.getClampToHeight({lng:t.options.center.lng,lat:t.options.center.lat},u).then((function(e){t.label.position=[t.options.center.lng,t.options.center.lat,e]}))}),200),setTimeout((function(){o(c[1],"sector-start"),o(c[c.length-4],"sector-end"),t.event.mouse_left((function(e,n){if(i)t.options.startAngle=l.angle1,t.options.endAngle=l.angle2,t.options.radius=r,t.event&&t.event.destroy(),t.tip&&t.tip.destroy(),t.tip=null,i=null,YJ.Measure.SetMeasureStatus(!1),t.heightMode=t.heightMode;else{var o=t.sdk.viewer.scene.pick(e.position);if(o&&o.id&&o.id.name&&"node-secondary-edit-point"===o.id.name&&("sector-start"===o.id._type||"sector-end"===o.id._type)){t.tip.set_text("左键确认,右键取消"),i=o.id;for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{domid:"",x:10,y:10};t.x=t.x||0===t.x?t.x:10,t.y=t.y||0===t.y?t.y:10;var i=document.getElementById(t.domid),n=Cesium.Cartesian3.fromDegrees(this.options.center.lng,this.options.center.lat);this.sdk.viewer.scene.postRender.addEventListener((function(o){if("block"===i.style.display||""===i.style.display){var s=e.sdk.viewer.scene.cartesianToCanvasCoordinates(n);s&&(i.style.left=(s.x+t.x).toFixed(0)+"px",i.style.top=(s.y+t.y).toFixed(0)+"px")}}))}},{key:"renewPositions",value:function(e){var t=this;if(!this._error){var i=!1;e||(e=this.options.center);var n=0;switch(this.options.heightMode){case"0":case 0:i=!1;break;case"1":case 1:n=this.sdk.viewer.scene.globe.getHeight(Cesium.Cartographic.fromDegrees(e.lng,e.lat))||0,i=!1;break;case"2":case 2:i=!0}var o=this.calSector(e,this.options.radius,this.options.startAngle,this.options.endAngle,360,!0),s=[];if(i){for(var a=0;aNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=gc(this,t,[e,n])).source=new Cesium.CustomDataSource(i.options.id),i.detail=[],i}return Me()(t,e),h()(t,[{key:"show",get:function(){return this.options.show},set:function(e){this.source&&(this.source.show=e,this.options.show=e)}},{key:"setDefaultValue",value:function(){var e;this.options.id=this.options.id||Cesium.createGuid(),this.options.url=this.options.url||"",this.options.show=null===(e=this.options.show)||void 0===e||e}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=r.length>0&&void 0!==r[0]?r[0]:3,Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation?(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i,duration:t})):this.source&&this.viewer.flyTo(this.source,{duration:t});case 5:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"remove",value:function(){var e,i,n,o,s;(e=t,i="remove",n=this,o=3,s=_n()(De()(1&o?e.prototype:e),i,n),2&o&&"function"==typeof s?function(e){return s.apply(n,e)}:s)([]),this.viewer.dataSources.remove(this.source),this.source=null}},{key:"on",value:(i=_()(S.a.mark((function e(){var t=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.show=this.options.show,e.next=3,Cesium.KmlDataSource.load(this.options.url,{camera:this.viewer.scene.camera,canvas:this.viewer.scene.canvas});case 3:return e.sent.entities.values.forEach((function(e,i){if(t.detail.push({name:e.name,id:e.id}),e.label){var n=1;e.billboard&&(n=e.billboard.scale._value),e.label.pixelOffset=new Cesium.Cartesian2(0,-32*n-15),e.label.horizontalOrigin=Cesium.HorizontalOrigin.CENTER,e.label.disableDepthTestDistance=Number.POSITIVE_INFINITY}if(e.polygon){var o={hierarchy:e.polygon.hierarchy.getValue().positions,material:e.polygon.material,classificationType:Cesium.ClassificationType.BOTH};if(e.polygon.outline.getValue()){var s=e.polygon.hierarchy.getValue().positions,a=new Cesium.Entity({id:t.getOutlineId(e.id),polyline:{positions:s,width:e.polygon.outlineWidth.getValue(),material:e.polygon.outlineColor.getValue(),clampToGround:!0,zIndex:t.sdk._entityZIndex}});t.source.entities.add(a)}e.polygon=o}e.billboard&&(e.billboard.heightReference=Cesium.HeightReference.CLAMP_TO_GROUND),e.polyline&&(e.polyline={positions:e.polyline.positions.getValue(),material:e.polyline.material,clampToGround:!0,width:e.polyline.width?e.polyline.width.getValue():1}),e.show=!0,t.source.entities.add(e)})),e.next=7,this.viewer.dataSources.add(this.source);case 7:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"getOutlineId",value:function(e){return[e,"outline"].join("_")}}]);var i,n}(vt);function bc(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()}()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var Cc=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=bc(this,t,[e,n])).primitive=void 0,i.positions=[],i.loading=!0,i}return Me()(t,e),h()(t,[{key:"setDefaultValue",value:function(){var e,i,o,s,a;(e=t,i="setDefaultValue",o=this,s=3,a=_n()(De()(1&s?e.prototype:e),i,o),2&s&&"function"==typeof a?function(e){return a.apply(o,e)}:a)([]),this.options.host=this.options.host||Object(n.a)(),this.options.color=this.options.color||"rgb(239, 6, 6, 1)",this.options.width=this.options.width||1}},{key:"show",get:function(){return this.options.show},set:function(e){if(this.options.show=e,this.entity)for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=_c(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.color=n.color||"rgba(32,67,135,0.5)",i.options.positions=n.positions||[],i.options.frequency=n.frequency||10,i.options.animationSpeed=n.animationSpeed||1,i.options.amplitude=n.amplitude||10,i.options.show=!n.show&&!1!==n.show||n.show,i.Dialog=o,i._EventBinding=new Ye,i._elms={},i.sdk.addIncetance(i.options.id,i),t.create(i),i}return Me()(t,e),h()(t,[{key:"color",get:function(){return this.options.color},set:function(e){var t=this;this.options.color=e,this.entity&&(this.entity.appearance.material.uniforms.baseWaterColor=Cesium.Color.fromCssColorString(e)),this._elms.color&&this._elms.color.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}});t._elms.color[n]=o}))}},{key:"frequency",get:function(){return this.options.frequency},set:function(e){this.options.frequency=e,this.entity&&(this.entity.appearance.material.uniforms.frequency=10*e),this._elms.frequency&&this._elms.frequency.forEach((function(t){t.value=e}))}},{key:"animationSpeed",get:function(){return this.options.animationSpeed},set:function(e){this.options.animationSpeed=e,this.entity&&(this.entity.appearance.material.uniforms.animationSpeed=.01*e),this._elms.animationSpeed&&this._elms.animationSpeed.forEach((function(t){t.value=e}))}},{key:"amplitude",get:function(){return this.options.amplitude},set:function(e){this.options.amplitude=e,this.entity&&(this.entity.appearance.material.uniforms.amplitude=e),this._elms.amplitude&&this._elms.amplitude.forEach((function(t){t.value=e}))}},{key:"height",get:function(){return this.options.height},set:function(e){this.options.height=e;var t=this.options.positions[0],i=Cesium.Cartesian3.fromDegrees(t.lng,t.lat,e),n=Cesium.Cartesian3.fromDegrees(t.lng,t.lat,this.entity.originalHeight);this.entity.modelMatrix=Cesium.Matrix4.setTranslation(this.entity.modelMatrix,new Cesium.Cartesian3(i.x-n.x,i.y-n.y,i.z-n.z),new Cesium.Matrix4),this._elms.height&&this._elms.height.forEach((function(t){t.value=e}))}},{key:"edit",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s=this,a=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]&&a[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=19;break}return e.next=7,new Be(this.sdk,this.originalOptions,{title:"水面属性",left:"180px",top:"100px",confirmCallBack:function(e){s.name=s.name.trim(),s.name||(s.name="未命名对象"),s.originalOptions=s.deepCopyObj(s.options),s._DialogObject.close(),s.Dialog.confirmCallBack&&s.Dialog.confirmCallBack(s.originalOptions),Object(J.syncData)(s.sdk,s.options.id),Object(Z.syncSplitData)(s.sdk,s.options.id)},resetCallBack:function(){s.reset(),s.Dialog.resetCallBack&&s.Dialog.resetCallBack()},removeCallBack:function(){s.Dialog.removeCallBack&&s.Dialog.removeCallBack()},closeCallBack:function(){s.reset(),s.Dialog.closeCallBack&&s.Dialog.closeCallBack()},showCallBack:function(e){s.show=e,s.Dialog.showCallBack&&s.Dialog.showCallBack()}},!0);case 7:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" water-surface",(i=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n 颜色\n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 高度\n
          \n \n m\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 ',this._DialogObject.contentAppChild(i),n=new YJColorPicker({el:i.getElementsByClassName("water-color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){s.color=e},clear:function(){s.color="rgba(255,255,255,1)"}}),o=i.getElementsByTagName("*"),this._EventBinding.on(this,o),this._elms=this._EventBinding.element,this._elms.color=[n],e.next=19;break;case 19:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"reset",value:function(){this.entity&&(this.name=this.originalOptions.name,this.color=this.originalOptions.color,this.frequency=this.originalOptions.frequency,this.animationSpeed=this.originalOptions.animationSpeed,this.amplitude=this.originalOptions.amplitude,this.height=this.originalOptions.height,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=p.length>0&&void 0!==p[0]?p[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=kc({},this.options.position):this.options.positions?r=kc({},this.options.positions[0]):this.options.center?r=kc({},this.options.center):this.options.start?r=kc({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=28;break;case 23:l=Cesium.Rectangle.fromCartesianArray(this.entity.geometryInstances.geometry._polygonHierarchy.positions),c=this.sdk.viewer.camera.getRectangleCameraCoordinates(l),u=this.cartesian3Towgs84(c,this.sdk.viewer),h=Cesium.Cartesian3.fromDegrees(u.lng,u.lat,u.alt+this.height),this.sdk.viewer.camera.flyTo({orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)},destination:h});case 28:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"remove",value:(i=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.sdk.viewer.scene.primitives.remove(this.entity),this.entity=null,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),e.next=5,this.sdk.removeIncetance(this.options.id);case 5:return e.next=7,Object(J.syncData)(this.sdk,this.options.id);case 7:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"flicker",value:function(){}}],[{key:"create",value:function(e){for(var t=e.options.positions,i=[],n=t[0].alt,o=0;o=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Ec(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),Mc(i=Oc(this,t,[e,n]),Nc,null),i.options.name=n.name||"",i.options.show=!n.show&&!1!==n.show||n.show,i.options.speed=n.speed||0===n.speed?n.speed:1,i.options.speed<=0&&(i.options.speed=.01),i.options.delay=n.delay||0,i.options.loop=!n.loop&&!1!==n.loop||n.loop,i.options.model=n.model=n.model||{},i.options.line=n.line=n.line||{},i.options.line.positions=n.line.positions||[],i.options.height=i.options.line.positions[0]?i.options.line.positions[0].alt:0,i.options.height=Number(i.options.height.toFixed(2)),i.options.line.show=!n.line.show&&!1!==n.line.show||n.line.show,i.options.model.show=!n.model.show&&!1!==n.model.show||n.model.show,i.options.model.url=n.model.url||"",i.options.model.pixelSize=n.model.pixelSize||70,i.options.model.heading=n.model.heading||0,i.options.model.pitch=n.model.pitch||0,i.options.model.roll=n.model.roll||0,i.options.model.scale=n.model.scale||0===n.model.scale?n.model.scale:1,i.options.model.animate=n.model.animate||"无",i.options.line.smooth=!!n.line.smooth&&n.line.smooth,i.options.line.noseToTail=!!n.line.noseToTail&&n.line.noseToTail,i.positions_smooth=[],i.options.ground=n.ground||!1,i.options.reverse=n.reverse||!1,i.options.state=!n.state&&!1!==n.state||n.state,i.options.routeDirection=!n.routeDirection&&!1!==n.routeDirection||n.routeDirection,i.keyPoints=[],i.realTimePositions=[],i._lineEdit=!1,i._keyPoint=!1,i._elms={},i.Dialog=o,i.realTimeRouteArray=[],i.distance,n.label=n.label||{},i.options.label={show:n.label.show||!1,fontSize:n.label.fontSize||0===n.label.fontSize?n.label.fontSize:20,fontFamily:n.label.fontFamily?n.label.fontFamily:0,color:n.label.color||"#ffffff",lineWidth:n.label.lineWidth||0===n.label.lineWidth?n.label.lineWidth:4,pixelOffset:n.label.pixelOffset||0===n.label.pixelOffset?n.label.pixelOffset:20,backgroundColor:n.label.backgroundColor||["#00ffff80","#00ffff80"],lineColor:n.label.lineColor||"#00ffff80",scaleByDistance:n.label.scaleByDistance||!1,near:n.label.near||0===n.label.near?n.label.near:2e3,far:n.label.far||0===n.label.far?n.label.far:1e5},i.options.line.positions.length<2?(i._error="最少需要两个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500})):(i.sdk.addIncetance(i.options.id,i),i.ControllerObject=new fi(i.sdk),i._EventBinding=new Ye,i.options.viewFollow=!1,i.options.firstPersonView=!1,t.addLine(i),i.firstPersonView=!1),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"TrajectoryMotion"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){var t=Object(J.get2DView)();if(this.isShowView&&t||(this.options.show=e,this.originalOptions&&(this.originalOptions.show=e)),this.options.show){this.firstPersonView?this.model.show=!1:this.model.show=(!this.showView||3==this.showView||!t)&&this.modelShow,this.showView&&3!=this.showView&&t?this.line.polyline.material=new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString("#00ffff00"),dashLength:20}):this.line.polyline.material=this.lineShow?new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString("#00ffff"),dashLength:20}):new Cesium.PolylineDashMaterialProperty({color:new Cesium.Color.fromCssColorString("#00ffff00"),dashLength:20});for(var i=0;i0)for(var i=0;i=500?(t.keyPointShow=!1,YJ.Measure.SetMeasureStatus(!1),t.event.destroy(),t.tip&&t.tip.destroy(),t.tip=null,t.ControllerObject.destroy()):s(o)}))})),this.line.polyline.positions=new Cesium.CallbackProperty((function(){return i}),!1),this.keyPointShow=e}else this.lineEdit&&(YJ.Measure.SetMeasureStatus(!1),this.event.destroy(),this.tip&&this.tip.destroy(),this.tip=null),this.keyPointShow=e,this.ControllerObject.destroy();this._lineEdit=e,this._elms.lineEdit&&this._elms.lineEdit.forEach((function(t){t.checked=e}))}},{key:"routeDirection",get:function(){return this.options.routeDirection},set:function(e){this.options.routeDirection=e,this._elms.routeDirection&&this._elms.routeDirection.forEach((function(t){t.checked=e}))}},{key:"loop",get:function(){return this.options.loop},set:function(e){this.options.loop=e,this.TweenAnimate&&this.TweenAnimate._isPlaying&&(e?this.TweenAnimate.repeat(1/0):this.TweenAnimate.repeat()),this._elms.loop&&this._elms.loop.forEach((function(t){t.checked=e}))}},{key:"firstPersonView",get:function(){return this.options.firstPersonView},set:function(e){var t=this,i=Object(J.get2DView)(),n=Object(Z.getSdk)();if((Object(J.get2DView)()||n.sdkD||!this.show)&&(e=!1),cancelAnimationFrame(this._requestAnimationFrameEventId),this._firstPersonViewEvent&&this._firstPersonViewEvent.destroy(),this.sdk.viewer._firstPersonView=e,this.options.firstPersonView=e,this.options.firstPersonView){if(this.viewFollow=!0,this.firstPersonHeadingPitch={heading:0,pitch:-10},this.state=!0,this.model&&(this.model.show=!1),this._DialogObject&&this._DialogObject._element.content){var o=this._DialogObject._element.content.querySelectorAll("button[name='firstPerson']");o[0].className="btn is-active",o[1].className="btn"}this.sdk.viewer.trackedEntity&&(this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity),this.sdk.viewer.trackedEntity=null),Object(X.a)(this.sdk,!1);var s,a=Object(Z.getSdk)(),r=(s=this.sdk===a.sdkP?a.sdkD:a.sdkP)?s.entityMap.get(this.options.id):void 0;this.sdk&&(this._firstPersonViewEvent=new te.a(this.sdk)),this._firstPersonViewEvent.mouse_right_down((function(e,i){var n=Dc({},e.position);t._firstPersonViewEvent.mouse_move((function(e,i){t.firstPersonHeadingPitch.heading=t.firstPersonHeadingPitch.heading+(e.endPosition.x-n.x)/20,t.firstPersonHeadingPitch.pitch=t.firstPersonHeadingPitch.pitch+(n.y-e.endPosition.y)/10,r&&(r.firstPersonHeadingPitch=Dc({},t.firstPersonHeadingPitch)),n=Dc({},e.endPosition)}),!0)}),!0),this._firstPersonViewEvent.mouse_right_up((function(e,i){t._firstPersonViewEvent.mouse_move((function(){}))}),!0)}else{if(Object(X.a)(this.sdk,!0),this.model&&this.modelShow&&this.show){var l=!0;l=!(!this.show||this.showView&&3!=this.showView&&i),this.model.show=l}if(this._DialogObject&&this._DialogObject._element.content){var c=this._DialogObject._element.content.querySelectorAll("button[name='firstPerson']");c[0]&&c[1]&&(c[0].className="btn",c[1].className="btn is-active")}if(this.viewFollow&&this.show){if(this.sdk.viewer.trackedEntity&&this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity),3===this.sdk.viewer.scene.mode){var u=this.sdk.viewer.entities.add({position:this.positions_smooth[0],point:{color:Cesium.Color.RED.withAlpha(0),pixelSize:0}});this.sdk.viewer.trackedEntity=u}this.viewFollow=this.viewFollow}}Object(Z.syncSplitData)(this.sdk,this.options.id)}},{key:"viewFollow",get:function(){return this.options.viewFollow},set:function(e){Object(Z.getSdk)();var t=Object(J.get2DView)();if(this.show||(e=!1),this.options.viewFollow=e,this.options.viewFollow?(this.editObj&&(this.editObj.destroy(),this.editObj=null,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content&&(this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].innerHTML="开始调整",this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].className="btn model-rotate-btn")),Object(X.f)(this.sdk),this.lineEdit=!1):this.firstPersonView=!1,this.options.firstPersonView){if(this.sdk.viewer.trackedEntity&&(this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity),this.sdk.viewer.trackedEntity=null),this._DialogObject&&this._DialogObject._element.content){var i=this._DialogObject._element.content.querySelectorAll("button[name='firstPerson']");i[0]&&i[1]&&(i[0].className="btn",i[1].className="btn is-active")}}else if(this.sdk.viewer.trackedEntity&&(this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity),this.sdk.viewer.trackedEntity=null),e&&this.show&&this.model){var n=this.sdk.viewer.entities.add({position:this.model.position,point:{color:Cesium.Color.RED.withAlpha(0),pixelSize:0}});this.sdk.viewer.trackedEntity=n}var o=Object(J.get3DView)();if(o)if(this.sdk!=o){var s=o.entityMap.get(this.options.id);s&&s.viewFollow!=e&&(s.viewFollow=e)}else if(t){var a=t.entityMap.get(this.options.id);a&&a.viewFollow!=e&&(a.viewFollow=e,this.TweenAnimate&&this.TweenAnimate._isPlaying&&a.setMovePositionByDistance(this.TweenAnimate._object.distance))}Object(Z.syncSplitData)(this.sdk,this.options.id),this._elms.viewFollow&&this._elms.viewFollow.forEach((function(t){t.checked=e}))}},{key:"labelShow",get:function(){return this.options.label.show},set:function(e){var t=this;this.options.label.show=e;var i=Object(J.get2DView)(),n=e;n=!(!this.show||this.showView&&3!=this.showView&&i)&&e,this.show?this.label&&(this.label.show=n,this.label.pixelOffset=this.options.label.pixelOffset,this.options.label.position&&setTimeout((function(){t.options.label.position.alt?t.label&&(t.label.position=[t.options.label.position.lng,t.options.label.position.lat,t.options.label.position.alt]):t.getClampToHeight({lng:t.options.label.position.lng,lat:t.options.label.position.lat}).then((function(e){t.label&&(t.label.position=[t.options.label.position.lng,t.options.label.position.lat,e])}))}),0)):this.label&&(this.label.show=!1),this._elms.labelShow&&this._elms.labelShow.forEach((function(t){t.checked=e}))}},{key:"labelFontFamily",get:function(){return this.options.label.fontFamily},set:function(e){this.options.label.fontFamily=e||0,this.label&&(this.label.fontFamily=this.options.label.fontFamily);var t=wt(this.labelFontFamily)||"";this._elms.labelFontFamily&&this._elms.labelFontFamily.forEach((function(e){e.value=t}))}},{key:"labelColor",get:function(){return this.options.label.color},set:function(e){var t=this;this.options.label.color=e,this.label&&(this.label.color=e),this._elms.labelColor&&this._elms.labelColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.labelColor=e},clear:function(){t.labelColor="rgba(255,255,255,1)"}});t._elms.labelColor[i]=n}))}},{key:"labelFontSize",get:function(){return this.options.label.fontSize},set:function(e){this.options.label.fontSize=e,this.label&&(this.label.fontSize=e),this.label.pixelOffset=this.options.label.pixelOffset,this._elms.labelFontSize&&this._elms.labelFontSize.forEach((function(t){t.value=e}))}},{key:"labelScaleByDistance",get:function(){return this.options.label.scaleByDistance},set:function(e){this.options.label.scaleByDistance=e,this.label&&(this.label.scaleByDistance=e),this._elms.labelScaleByDistance&&this._elms.labelScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"labelNear",get:function(){return this.options.label.near},set:function(e){var t=e;t>this.labelFar&&(t=this.labelFar),this.options.label.near=t,this.label&&(this.label.near=t),this._elms.labelNear&&this._elms.labelNear.forEach((function(e){e.value=t}))}},{key:"labelFar",get:function(){return this.options.label.far},set:function(e){var t=e;tt/n.distance)){e.next=69;break}return e.abrupt("break",74);case 69:j=n.spline.evaluate(B/1e3),N.push(j);case 71:B++,e.next=66;break;case 74:N.push(M),n.realTimePositions=N;case 76:if(d=b(n.model.position,u),f&&f.position&&(m=b(f.position,u),d.pitch=m.pitch),f.position=n.model.position,Cesium.HeadingPitchRoll.fromDegrees(n.options.model.heading,n.options.model.pitch,n.options.model.roll),A=0,L=0,I=0,R=Cesium.Transforms.eastNorthUpToFixedFrame(u),!n.options.routeDirection||n.lineEdit){e.next=96;break}if(A=d.heading*(180/Math.PI)-90-n.options.model.heading,L=d.pitch*(180/Math.PI)-n.options.model.pitch,I=n.options.model.roll,z=Object(J.get3DView)()?Object(J.get3DView)().entityMap.get(n.options.id):o.sdkP&&o.sdkP.entityMap.get(n.options.id),n.state||z&&(i&&i===n.sdk||o.sdkD&&o.sdkD===n.sdk)&&(A=z.model.heading,L=z.model.pitch,I=z.model.roll),!(isNaN(A)||isNaN(L)||isNaN(I))){e.next=92;break}return e.abrupt("return");case 92:n.state||(z&&(i&&i===n.sdk||o.sdkD&&o.sdkD===n.sdk)?(A=z.model.heading,L=z.model.pitch,I=z.model.roll):(A=n.model.heading||0===n.model.heading?n.model.heading:n.options.model.heading,L=n.model.pitch||0===n.model.pitch?n.model.pitch:n.options.model.pitch,I=n.model.roll||0===n.model.roll?n.model.roll:n.options.model.roll)),n.model.modelMatrix=Cesium.Matrix4.multiplyByMatrix3(R,Cesium.Matrix3.fromHeadingPitchRoll(Cesium.HeadingPitchRoll.fromDegrees(A,L,I)),n.model.modelMatrix),e.next=112;break;case 96:if(!n.entity){e.next=112;break}if(A=n.options.model.heading,L=n.options.model.pitch,I=n.options.model.roll,!(isNaN(A)||isNaN(L)||isNaN(I))){e.next=102;break}return e.abrupt("return");case 102:F=Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(I)),H=Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(L)),V=Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(A)),G=Cesium.Matrix4.fromRotationTranslation(F),W=Cesium.Matrix4.fromRotationTranslation(H),U=Cesium.Matrix4.fromRotationTranslation(V),Y=new Cesium.Matrix4,Cesium.Matrix4.multiply(R,G,Y),Cesium.Matrix4.multiply(Y,W,Y),Cesium.Matrix4.multiply(Y,U,n.entity.modelMatrix);case 112:if(n.model.position=u,n.model.roll=I,n.model.pitch=L,n.model.heading=A,u){e.next=118;break}return e.abrupt("return");case 118:q=n.cartesian3Towgs84(u,n.sdk.viewer),n.label.position=[q.lng,q.lat,q.alt],n.realTimeRouteArray.push(u),n.viewFollow&&(n.options.firstPersonView?(X=A+90+n.firstPersonHeadingPitch.heading,n.routeDirection||(X=180-X),n.sdk.viewer.camera.setView({destination:p,orientation:{heading:Cesium.Math.toRadians(X),pitch:Cesium.Math.toRadians(n.firstPersonHeadingPitch.pitch),roll:0}})):3===n.sdk.viewer.scene.mode?n.sdk.viewer.trackedEntity&&(n.sdk.viewer.trackedEntity.position=u):n.sdk.viewer.trackedEntity&&n.sdk.viewer.camera.setView({destination:Cesium.Cartesian3.fromDegrees(l[0],l[1],n.sdk.viewer.camera.positionCartographic.height),orientation:{heading:Cesium.Math.toRadians(-90),pitch:0,roll:0}}));case 123:case"end":return e.stop()}}),e,null,[[35,42]])})))).apply(this,arguments)},g=function(e){return y.apply(this,arguments)},i=w.length>1&&void 0!==w[1]?w[1]:{time:0},cancelAnimationFrame(this._requestAnimationFrameEventId),n=this,o=i.time||0,a=i.distance,r=this.sdk.viewer,this.model&&this.sdk&&this.sdk.viewer){e.next=11;break}return e.abrupt("return");case 11:for(this.removeModelAnimate(),l=[],c=0;cthis.distance&&(a=this.distance),o=a/this.distance*p):(a=1e-6,o&&(o>p&&(o=p),a=o/p*this.distance)),f={},this.TweenAnimate=new TWEEN.Tween({distance:a}).to({distance:this.distance},1e3*(p-o)).delay(1e3*this.delay).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop?1/0:0).onRepeat((function(){(o||a)&&C.modelMove(t)})).onUpdate(function(){var e=_()(S.a.mark((function e(t,i){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(C.TweenAnimate._duration!=1/0){e.next=2;break}return e.abrupt("return");case 2:if(C.sdk.viewer){e.next=6;break}return C.removeModelAnimate(),e.abrupt("return");case 6:isNaN(t.distance)||g(t.distance);case 7:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}()).onEveryStart((function(){C.realTimeRouteArray=[]})).onComplete((function(e){C.state=!1})),this.state?this.TweenAnimate.start():(v=function(){if(n._requestAnimationFrameEventId2=requestAnimationFrame(v),n.options.firstPersonView){var e=n.model.heading+90+n.firstPersonHeadingPitch.heading;n.routeDirection||(e=180-e);var t=Dc({},n.sdk.viewer.camera._position);n.sdk.viewer.camera.setView({destination:t,orientation:{heading:Cesium.Math.toRadians(e),pitch:Cesium.Math.toRadians(n.firstPersonHeadingPitch.pitch),roll:0}})}},g(a),setTimeout((function(){n.model.isMove=!1}),1e3),v());case 24:case"end":return e.stop()}}),e,this)}))),function(e){return p.apply(this,arguments)})},{key:"setMovePositionByDistance",value:function(e){var t=this.renewLinePositions(this.options.line.positions);this.modelMove(t,{distance:e})}},{key:"setMovePositionByTime",value:function(e){var t=this.renewLinePositions(this.options.line.positions);this.modelMove(t,{time:e})}},{key:"edit",value:(u=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return");case 3:if(this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=46;break}return e.next=9,new Be(this.sdk,this.options,{title:"轨迹运动属性",left:"180px",top:"100px",confirmCallBack:function(e){u.name=u.name.trim(),u.name||(u.name="未命名对象"),u.originalOptions=u.deepCopyObj(u.options),u._DialogObject.close();var t=u.deepCopyObj(u.options);t.host="",u.Dialog.confirmCallBack&&u.Dialog.confirmCallBack(t),Object(J.syncData)(u.sdk,u.options.id),Object(Z.syncSplitData)(u.sdk,u.options.id)},removeCallBack:function(){u.sdk.viewer.trackedEntity&&(u.sdk.viewer.entities.remove(u.sdk.viewer.trackedEntity),u.sdk.viewer.trackedEntity=null),u.Dialog.removeCallBack&&u.Dialog.removeCallBack()},closeCallBack:function(){u._DialogObject=null,u.reset(),u.Dialog.closeCallBack&&u.Dialog.closeCallBack(),u.editObj&&(u.editObj.destroy(),u.editObj=null),u.keyPointShow=!1,u.event&&u.event.destroy(),u.tip&&u.tip.destroy(),u.tip=null,u.ControllerObject.destroy(),u.firstPersonView!==u.originalOptions.firstPersonView&&(u.firstPersonView=u.originalOptions.firstPersonView),u.firstPersonView&&u.modelShow&&u.model&&(u.model.show=!1)},showCallBack:function(e){u.show=e,u.Dialog.showCallBack&&u.Dialog.showCallBack()}});case 9:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" trajectory-motion",(i=document.createElement("div")).innerHTML='\n \n
          \n
          \n
          \n 名称\n \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 起始点高度\n
          \n \n m\n \n
          \n
          \n
          \n 模型倍数\n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n 运行速度\n
          \n \n m/s\n \n
          \n
          \n
          \n 延迟运动\n
          \n \n ms\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 \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
          \n 字体选择\n
          \n
          \n
          \n 字体大小\n
          \n \n px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n 油耗\n
          \n \n L/100km\n \n
          \n
          \n
          \n 总油耗\n \n
          \n
          \n
          \n \n ',this._DialogObject.contentAppChild(i),this.editObj?(this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].innerHTML="结束调整",this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].className="btn model-rotate-btn is-active"):(this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].innerHTML="开始调整",this._DialogObject._element.content.getElementsByClassName("model-rotate-btn")[0].className="btn model-rotate-btn"),n=new YJColorPicker({el:i.getElementsByClassName("labelColor")[0],size:"mini",alpha:!0,defaultColor:this.labelColor,disabled:!1,openPickerAni:"opacity",sure:function(e){u.labelColor=e},clear:function(){u.labelColor=""}}),o=this._DialogObject._element.content.getElementsByClassName("height-box")[0],s=i.getElementsByTagName("*"),this._EventBinding.on(this,s),this._elms=this._EventBinding.element,this._elms.heightBox=o,this._elms.labelColor=[n],this.model&&(a=function(){var e=u.model.loader.components.animations;if(u._DialogObject){if(e){for(var t=[{name:"无",value:"无"}],n=0;n=107?this.model.ready?a():this.model.readyEvent.addEventListener((function(){a()})):this.model.readyPromise.then((function(e){a()}))),this.ground?this._elms.heightBox&&(this._elms.heightBox.className="input-number input-number-unit-1 height-box disabled"):this._elms.heightBox&&(this._elms.heightBox.className="input-number input-number-unit-1 height-box"),(r=i.querySelectorAll("button[name='firstPerson']"))[0].addEventListener("click",(function(e){var t=Object(Z.getSdk)();Object(J.get2DView)()||t.sdkD||(u.firstPersonView||(u.viewFollow=!0),u.firstPersonView=!0)})),r[1].addEventListener("click",(function(e){u.firstPersonView&&(u.viewFollow=!0),u.firstPersonView=!1})),this.options.firstPersonView?(r[0].className="btn is-active",r[1].className="btn",this.sdk.viewer.trackedEntity&&(this.sdk.viewer.entities.remove(this.sdk.viewer.trackedEntity),this.sdk.viewer.trackedEntity=null)):(r[0].className="btn",r[1].className="btn is-active"),(l=document.createElement("div")).className="custom-rubric-box",l.style.transformOrigin="center bottom",l.style.position="absolute",l.style.top="180px",l.style.right="3px",l.style.padding="5px 10px",l.style.backgroundColor="#3e4249",l.style.borderRadius="5px",l.style.fontSize="12px",l.style.color="#ff5733",l.style.display="none",l.innerHTML='场景正东方向为轨迹前进正方向
          ',(c=i.getElementsByClassName("icon-rubric")[0]).addEventListener("mouseenter",(function(e){l.style.display="block"})),document.addEventListener("mousemove",(function(e){c.contains(e.target)||(l.style.display="none")})),this._DialogObject._element.content.appendChild(l),setTimeout((function(){var e=bt(),t=Object(je.a)(u._DialogObject._element.content.getElementsByClassName("font-select-box")[0],".font-select");if(t){t.legp_search(e);var i=u._DialogObject._element.content.getElementsByClassName("font-select")[0].getElementsByTagName("input")[0];i.value=e[u.labelFontFamily].value;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};Object(X.w)(0),Object(X.f)(this.sdk),this.options.customView&&this.options.customView.position&&this.options.customView.orientation?this.sdk.viewer.camera.flyTo({destination:this.options.customView.position,orientation:this.options.customView.orientation}):this.line&&this.sdk.viewer.flyTo(this.line,{offset:e.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-60),roll:Cesium.Math.toRadians(0)}})}},{key:"remove",value:(l=_()(S.a.mark((function e(){var t,i;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.sdk.viewer.scene.primitives.remove(this.model),this.sdk.viewer.entities.remove(this.line),this.sdk.viewer.entities.remove(this.realTimeLine),this.label&&this.label.remove(),t=0;t=107)){e.next=15;break}return e.next=9,Cesium.Model.fromGltfAsync(o);case 9:this.model=e.sent,this.model.position=n,this.sdk.viewer.scene.primitives.add(this.model),this.model.readyEvent.addEventListener((function(){s(),a.model.modelMatrix=i})),e.next=18;break;case 15:this.model=this.sdk.viewer.scene.primitives.add(Cesium.Model.fromGltf(o)),this.model.position=n,this.model.readyPromise.then((function(e){s(),a.model.modelMatrix=i}));case 18:this.model.imageBasedLighting.luminanceAtZenith=.6;case 19:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"removeModelAnimate",value:function(){this.TweenAnimate&&(clearTimeout(this.TweenAnimate.timeout),TWEEN.remove(this.TweenAnimate),this.TweenAnimate=null)}},{key:"controllerCallBack",get:function(){return function(e){}},set:function(e){this._controllerCallBack=e}},{key:"renewLinePositions",value:function(e){var t=nt()(e);this.noseToTail&&(t=[].concat(nt()(e),[e[0]])),this.reverse&&t.reverse();for(var i=[],n=[],o=[],s=0;s=107)){e.next=11;break}return e.next=5,Cesium.Model.fromGltfAsync(o);case 5:i.model=e.sent,i.model.originalBoundingSphereRadius=0,i.sdk.viewer.scene.primitives.add(i.model),i.model.readyEvent.addEventListener((function(){i.model.originalBoundingSphereRadius=i.model.boundingSphere.radius,i.modelAnimate=i.options.model.animate})),e.next=14;break;case 11:i.model=i.sdk.viewer.scene.primitives.add(Cesium.Model.fromGltf(o)),i.model.originalBoundingSphereRadius=0,i.model.readyPromise.then((function(){i.model.originalBoundingSphereRadius=i.model.boundingSphere.radius,i.modelAnimate=i.options.model.animate}));case 14:for(i.model.imageBasedLighting.luminanceAtZenith=.6,s=Cesium.Transforms.eastNorthUpToFixedFrame(i.positions_smooth[0]),i.model.modelMatrix=s,i.model.position=i.positions_smooth[0],i.model.customScale={x:i.options.model.scale,y:i.options.model.scale,z:i.options.model.scale},a=i.options.line.positions,r=[],l=0;l=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Ac(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),zc(i=Rc(this,t,[e,n]),Vc,!1),i.options.name=n.name||"",i.options.show=!n.show&&!1!==n.show||n.show,i.options.speed=n.speed||0===n.speed?n.speed:1,i.options.totalTime=n.totalTime,(n.totalTime||0===n.totalTime)&&(i.totalTime=n.totalTime),i.options.delay=n.delay||0,i.options.loop=!n.loop&&!1!==n.loop||n.loop,i.options.line=n.line=n.line||{},i.options.line.positions=n.line.positions||[],i.options.height=n.height||0===n.height?n.height:i.options.line.positions[0]?i.options.line.positions[0].alt:0,i.options.line.show=!n.line.show&&!1!==n.line.show||n.line.show,i.options.line.smooth=!!n.line.smooth&&n.line.smooth,i.options.line.noseToTail=!!n.line.noseToTail&&n.line.noseToTail,i.positions_smooth=[],i.options.ground=n.ground||!1,i.options.state=!n.state&&!1!==n.state||n.state,i.options.routeDirection=!n.routeDirection&&!1!==n.routeDirection||n.routeDirection,i.keyPoints=[],i.realTimePositions=[],i._elms={},i.Dialog=o,i.realTimeRouteArray=[],i._current={heading:0,pitch:0,roll:0},i.distance,i.options.line.positions.length<2?(i._error="最少需要两个坐标!",console.warn(i._error),window.ELEMENT&&window.ELEMENT.Message({message:i._error,type:"warning",duration:1500})):(i.ControllerObject=new fi(i.sdk),i._EventBinding=new Ye,t.addLine(i),i.firstPersonView=!1,i.options.viewFollow=!1),i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"TrajectoryMotionObject"}},{key:"show",get:function(){return this.options.show},set:function(e){if("boolean"==typeof e){if(this.options.show=e,e){this.line.show=this.lineShow;for(var t=0;tt/n.distance)){e.next=47;break}return e.abrupt("break",52);case 47:P=n.spline.evaluate(x/100),_.push(P);case 49:x++,e.next=44;break;case 52:_.push(k),n.realTimePositions=_;case 54:if(d=E(n.current.position,l),f&&f.position&&(m=E(f.position,l),d.pitch=m.pitch),f.position=n.current.position,D=Cesium.HeadingPitchRoll.fromDegrees(n.current.heading,n.current.pitch,n.current.roll),O=0,M=0,T=0,n.options.routeDirection?(O=(d.heading-D.heading)*(180/Math.PI)-90+n.current.heading,M=d.pitch*(180/Math.PI)):(O=n.current.heading,M=n.current.pitch),T=n.current.roll,!(isNaN(O)||isNaN(M)||isNaN(T))){e.next=65;break}return e.abrupt("return");case 65:(O<0||O>180)&&(M=-M),n.current={position:l,heading:O,pitch:M,roll:T},w&&(w=!1,n._first={position:l,heading:O,pitch:M,roll:T}),n.realTimeRouteArray.push(l),n.viewFollow&&(n.options.firstPersonView?n.sdk.viewer.camera.setView({destination:c,orientation:{heading:n.sdk.viewer.camera.heading,pitch:n.sdk.viewer.camera.pitch,roll:n.sdk.viewer.camera.roll}}):n.sdk.viewer.trackedEntity&&(n.sdk.viewer.trackedEntity.position=l));case 71:case"end":return e.stop()}}),e,null,[[19,26]])})))).apply(this,arguments)},k=function(e){return x.apply(this,arguments)},i=D.length>1&&void 0!==D[1]?D[1]:{time:0},n=this,o=i.time||0,a=i.distance||0,r=this.sdk.viewer,this.removeModelAnimate(),l=[],c=0;cp&&(o=p),a=o/p*this.distance),f={},v=[],g=jc(this.sdk.entityMap);try{for(g.s();!(y=g.n()).done;)(b=s()(y.value,2))[0],(C=b[1]).type&&"glb"===C.type&&v.push(C.entity)}catch(e){g.e(e)}finally{g.f()}w=!0,this.TweenAnimate=new TWEEN.Tween({distance:a}).to({distance:this.distance},1e3*(p-o)).delay(this.delay).easing(TWEEN.Easing.Linear.None).repeat(this.options.loop?1/0:0).onRepeat((function(){o&&P.modelMove(t)})).onUpdate(function(){var e=_()(S.a.mark((function e(t,i){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(P.TweenAnimate._duration!=1/0){e.next=2;break}return e.abrupt("return");case 2:if(P.sdk.viewer){e.next=6;break}return P.removeModelAnimate(),e.abrupt("return");case 6:k(t.distance);case 7:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}()).onEveryStart((function(){P.realTimeRouteArray=[]})).onComplete((function(e){P.state=!1,P.removeModelAnimate()})),this.state?this.TweenAnimate.start():k(a);case 26:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"setMovePositionByDistance",value:function(e){var t=this._renewLine(this.options.line.positions);this.modelMove(t,{distance:e})}},{key:"setMovePositionByTime",value:function(e){var t=this._renewLine(this.options.line.positions);this.modelMove(t,{time:e}),this.state||this.modelMove(t,{time:e+.01})}},{key:"pause",value:function(){this.state=!1}},{key:"resume",value:function(){this.state=!0}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]?l[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=22;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},(r=Ic({},this.options.line.positions[0])).hasOwnProperty("alt")){e.next=15;break}return e.next=14,this.getClampToHeight(r);case 14:r.alt=e.sent;case 15:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=23;break;case 22:this.line&&this.sdk.viewer.flyTo(this.line,{offset:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-60),roll:Cesium.Math.toRadians(0)}});case 23:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"remove",value:function(){this.event&&this.event.destroy(),this.tip&&this.tip.destroy(),this.sdk.viewer.entities.remove(this.line),this.line=null,this.removeModelAnimate()}},{key:"reset",value:function(){this.modelMove(this.line.polyline.positions._value),this.state=!1,this.current=this._first}},{key:"removeModelAnimate",value:function(){this.TweenAnimate&&(clearTimeout(this.TweenAnimate.timeout),TWEEN.remove(this.TweenAnimate),this.TweenAnimate=null)}},{key:"_renewLine",value:function(e){this.options.line.positions=e;var t=e;this.noseToTail&&(t=[].concat(nt()(e),[e[0]]));for(var i=[],n=[],o=[],s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=Wc(this,t,[e,n])).options.width=n.width||1,i.options.color=n.color||"#ff0000",i._elms={},i.tools=new b.a(e),i._EventBinding=new Ye,t.edit(i,!0),i}return Me()(t,e),h()(t,[{key:"color",get:function(){return this.options.color},set:function(e){var t=this;this.options.color&&(this.options.color=e,this._elms.color&&this._elms.color.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}});t._elms.color[n]=o})))}},{key:"width",get:function(){return this.options.width},set:function(e){this.options.width=e,this._elms.width&&this._elms.width.forEach((function(t){t.value=e}))}},{key:"start",value:function(){var e,i,n,o,s,a=this;if(YJ.Measure.GetMeasureStatus())this._error="上一次测量未结束";else{this._error=null;this.sdk.viewer;Object(X.a)(this.sdk,!1),(e=t,i="start",n=this,o=3,s=_n()(De()(1&o?e.prototype:e),i,n),2&o&&"function"==typeof s?function(e){return s.apply(n,e)}:s)([]),YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a("左键按下开始,松开完成,右键单击完成绘制",this.sdk),this.event=new te.a(this.sdk),this.positions=[],this.points_ids=[];var r=[],l=[];this.event.mouse_left_down((function(e,t){l=[];var i=a.sdk.viewer.entities.add({name:"涂鸦",polyline:{positions:new Cesium.CallbackProperty((function(){return l}),!1),width:a.width,clampToGround:!0,material:Cesium.Color.fromCssColorString(a.color),zIndex:99999999}});r.push(i),a.event.mouse_move((function(e,t){a.tip.setPosition(t,e.endPosition.x,e.endPosition.y),l.push(t)}))})),this.event.mouse_left_up((function(e,t){r[r.length-1].polyline.positions=l,a.event.mouse_move((function(e,t){a.tip.setPosition(t,e.endPosition.x,e.endPosition.y)}))})),this.event.mouse_move((function(e,t){a.tip.setPosition(t,e.endPosition.x,e.endPosition.y)})),this.event.mouse_right((function(e,t){a.end()})),this.event.gesture_pinck_start((function(e,t){var i=new Date;a.event.gesture_pinck_end((function(){new Date-i>=500&&a.end()}))}))}}},{key:"end",value:function(){YJ.Measure.SetMeasureStatus(!1),this.event&&this.event.destroy(),this.event=void 0,this.tip&&this.tip.destroy(),this.tip=void 0,Object(X.a)(this.sdk,!0)}},{key:"remove",value:function(){this.end(),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null);for(var e=this.sdk.viewer.entities.values,t=e.length-1;t>=0;t--)"涂鸦"===e[t].name&&this.sdk.viewer.entities.remove(e[t])}},{key:"flicker",value:function(){}}],[{key:"edit",value:(i=_()(S.a.mark((function e(t,i){var n,o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i?(n=document.getElementsByClassName("graffiti")[0],o=new YJColorPicker({el:n.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:t.color,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}}),s=n.getElementsByTagName("*"),t._EventBinding.on(t,s),t._elms=t._EventBinding.element,t._elms.color=[o]):t._DialogObject&&t._DialogObject.close&&(t._DialogObject.close(),t._DialogObject=null);case 1:case"end":return e.stop()}}),e)}))),function(e,t){return i.apply(this,arguments)})}]);var i}(xn.a),Yc=i(33),Jc=i.n(Yc);function qc(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Xc(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Xc(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Xc(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Qc(this,t,[e,n])).options.name=n.name||"未命名对象",i.options.show=!n.show&&!1!==n.show||n.show,i.options.url=n.url,i.options.angle=n.angle||0,i.options.scale=n.scale||0===n.scale?n.scale:1,i.options.position=n.position,i.options.offset=n.offset||{x:.5,y:1},i.options.mode=i.options.mode?1:0,i.options.billboard=n.billboard||{},i.options.billboard.scale=i.options.billboard.scale||1,i.options.billboard.near=i.options.billboard.near||0===i.options.billboard.near?i.options.billboard.near:2e3,i.options.billboard.far=i.options.billboard.far||0===i.options.billboard.far?i.options.billboard.far:1e5,i.options.billboard.scaleByDistance=!!i.options.billboard.scaleByDistance,n.label=n.label||{},i.options.label=n.label||{},i.options.label.text=n.label.text||i.options.name,i.options.name=i.options.label.text,i.options.label.show=!n.label.show&&!1!==n.label.show||n.label.show,i.options.label.fontFamily=n.label.fontFamily||0,i.options.label.fontSize=n.label.fontSize||39,i.options.label.color=n.label.color||"#00ffff",i.options.flipe=n.flipe||{},i.options.flipe.x=i.options.flipe.x||!1,i.options.flipe.y=i.options.flipe.y||!1,i.options.heightMode=n.heightMode||0==n.heightMode?n.heightMode:3,i.entity={id:i.options.id},i._positionEditing=!1,i.Dialog=o,i._elms={},i._proj=i.sdk.proj,i.previous={position:Kc({},i.options.position)},i._EventBinding=new Ye,i.event=new te.a(i.sdk),i.sdk.addIncetance(i.options.id,i),i.create(),i}return Me()(t,e),h()(t,[{key:"name",get:function(){return this.options.name},set:function(e){var i,n,o,s,a,r;i=t,n="name",o=e,s=this,a=1,r=1,Jc()(De()(r?i.prototype:i),n,o,s,a),this.options.label.text=this.options.name,this.entity&&(this.entity.label.text=this.options.label.text)}},{key:"mode",get:function(){return this.options.mode},set:function(e){var t=this;this.options.mode=e?1:0;for(var i=[{name:"贴地",value:"贴地",key:0},{name:"立体",value:"立体",key:1}],n=function(e){if(i[e].key===t.options.mode)return t._elms.mode&&t._elms.mode.forEach((function(t){t.value=i[e].value})),1},o=0;o99&&(t=99),t<.1&&(t=.1),this.options.billboard.scale=t,this.renewPoint(),this._elms.billboardScale&&this._elms.billboardScale.forEach((function(t){t.value=e}))}},{key:"billboardScaleByDistance",get:function(){return this.options.billboard.scaleByDistance},set:function(e){this.options.billboard.scaleByDistance=e,this.renewPoint(),this._elms.billboardScaleByDistance&&this._elms.billboardScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"billboardNear",get:function(){return this.options.billboard.near},set:function(e){var t=e;t>this.billboardFar&&(t=this.billboardFar),this.options.billboard.near=t,this.renewPoint(),this._elms.billboardNear&&this._elms.billboardNear.forEach((function(e){e.value=t}))}},{key:"billboardFar",get:function(){return this.options.billboard.far},set:function(e){var t=e;t1&&(s.x=1),s.y<0&&(s.y=0),s.y>1&&(s.y=1),c={x:s.x,y:s.y},l.style.top="calc(".concat(100*c.y,"% - 5px)"),l.style.left="calc(".concat(100*c.x,"% - 5px)")}else t(i.offsetParent)}(e.target)},o=function(){a&&a._element.body.removeEventListener("mousemove",n)},e.next=8,new Be(this.sdk,this.originalOptions,{title:"军标属性",left:"180px",top:"100px",confirmCallBack:function(e){b.name=b.name.trim(),b.name||(b.name="未命名对象"),b.originalOptions=b.deepCopyObj(b.options),b._DialogObject.close(),b.Dialog.confirmCallBack&&b.Dialog.confirmCallBack(b.originalOptions)},resetCallBack:function(){b.reset(),b.Dialog.resetCallBack&&b.Dialog.resetCallBack()},removeCallBack:function(){b.Dialog.removeCallBack&&b.Dialog.removeCallBack()},closeCallBack:function(){b.previous=null,b.reset(),a&&a.close&&a.close(),b.Dialog.closeCallBack&&b.Dialog.closeCallBack(),YJ.Measure.SetMeasureStatus(!1),b.positionEditing=!1},showCallBack:function(e){b.show=e,b.Dialog.showCallBack&&b.Dialog.showCallBack()},translationalCallBack:function(){b.positionEditing=!b.positionEditing},addFootElm:[{tagName:"button",className:"flipe-over-y",innerHTML:"Y轴翻转",event:["click",function(){b.flipeY=!b.flipeY}]},{tagName:"button",className:"flipe-over-x",innerHTML:"X轴翻转",event:["click",function(){b.flipeX=!b.flipeX}]}]},!0);case 8:for(this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" ground-image",(u=document.createElement("div")).innerHTML='\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 高度\n
          \n \n m\n \n
          \n
          \n
          \n
          \n 图标倍数\n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n

          文字设置

          \n
          \n
          \n 显隐\n \n
          \n
          \n 字体选择\n
          \n
          \n
          \n 文字大小\n
          \n \n px\n \n
          \n
          \n
          \n 文字颜色\n
          \n
          \n
          \n
          \n \n ',this._DialogObject.contentAppChild(u),h=u.getElementsByTagName("*"),this._EventBinding.on(this,h),this._elms=this._EventBinding.element,u.getElementsByClassName("anchor")[0].addEventListener("click",_()(S.a.mark((function e(){var t,s,u,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a&&a.close&&a.close(),document.body.addEventListener("mouseup",o),t=i._DialogObject._element.body.getBoundingClientRect(),e.next=5,new Be(b.sdk,b.originalOptions,{title:"锚点设置",left:t.left+80+"px",top:t.top+200+"px",confirmCallBack:function(e){i.offset={x:c.x,y:c.y},s.close()},closeCallBack:function(){document.body.removeEventListener("mouseup",o)}},!1);case 5:s=e.sent,a=s,s._element.body.className=s._element.body.className+" anchor-point",u=document.createElement("div"),(h=new Image).src=b.replaceHost(b.options.url,b.options.host),h.onload=function(){var e=150/(h.width/h.height),t=(r=document.createElement("canvas")).getContext("2d",{willReadFrequently:!0});r.width=150,r.height=e,r.style.display="block",t.drawImage(h,0,0,150,e),u.appendChild(r),s.contentAppChild(u),(l=document.createElement("span")).className="point",u.appendChild(l),c={x:i.offset.x,y:i.offset.y},l.style.top="calc(".concat(100*Number(c.y),"% - 6px)"),l.style.left="calc(".concat(100*Number(c.x),"% - 6px)"),r.addEventListener("click",(function(e){var t=e.offsetX,i=e.offsetY,n={x:Number((t/r.width).toFixed(2)),y:Number((i/r.height).toFixed(2))};n.x<0&&(n.x=0),n.x>1&&(n.x=1),n.y<0&&(n.y=0),n.y>1&&(n.y=1),c={x:n.x,y:n.y},l.style.top="calc(".concat(100*c.y,"% - 5px)"),l.style.left="calc(".concat(100*c.x,"% - 5px)")})),l.addEventListener("mousedown",(function(e){s._element.body.addEventListener("mousemove",n)}))};case 12:case"end":return e.stop()}}),e)})))),p=u.getElementsByClassName("row"),d=u.getElementsByTagName("h4"),m=0;m=500)t.options.position.lng=t.previous.position.lng,t.options.position.lat=t.previous.position.lat,t.options.position.alt=t.previous.position.alt,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.options.position.lng=e.lng,t.options.position.lat=e.lat,t.options.position.alt=e.alt,t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))):(this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy(),this.previous||(this.previous={position:Kc({},this.options.position)}),this.position=Kc({},this.previous.position)))}},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y,b,C,w,k,_,x,E,P=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=P.length>0&&void 0!==P[0]?P[0]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=23;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=Kc({},this.options.position):this.options.position?r=Kc({},this.options.position[0]):this.options.center?r=Kc({},this.options.center):this.options.start?r=Kc({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=16;break}return e.next=15,this.getClampToHeight(r);case 15:r.alt=e.sent;case 16:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=59;break;case 23:l=Math.abs(Math.cos(Math.PI/180*this.options.position.lat))*(1e-4*this.options.scale),c=[[this.options.position.lng-1e-4*this.options.scale,this.options.position.lat-l],[this.options.position.lng+1e-4*this.options.scale,this.options.position.lat+l]],u=[],h=0,p=this.options.position,d=Cesium.Cartesian3.fromDegrees(p.lng,p.lat,0),m=Cesium.Cartesian3.fromDegrees(p.lng,p.lat,1e7),f=Cesium.Cartesian3.subtract(m,d,new Cesium.Cartesian3),v=Cesium.Cartesian3.normalize(f,f),g=new Cesium.Ray(d,v),y={},b=this.sdk.viewer.scene.drillPickFromRay(g),C=0;case 36:if(!(C=0)){e.next=22;break}if(!v[g].position){e.next=19;break}return f=v[g],e.abrupt("break",22);case 19:g--,e.next=15;break;case 22:return f&&f.position&&(i=this.cartesian3Towgs84(f.position,this.sdk.viewer).alt),e.prev=23,e.next=26,Cesium.sampleTerrainMostDetailed(this.sdk.viewer.terrainProvider,[Cesium.Cartographic.fromDegrees(this.options.position.lng,this.options.position.lat)]);case 26:y=e.sent,e.next=31;break;case 29:e.prev=29,e.t0=e.catch(23);case 31:if((void 0===i||i\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 X 轴大小\n \n
          \n \n \n
          \n
          \n
          \n
          \n
          \n Y 轴大小\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 px\n \n
          \n
          \n
          \n
          \n
          \n 视野缩放\n \n
          \n
          \n 最近距离\n
          \n \n m\n \n
          \n
          \n
          \n 最远距离\n
          \n \n m\n \n
          \n
          \n
          \n
          \n \n
          \n
          \n '.concat(ct(e),"\n
          \n
          \n ")}var tu=i(41),iu=i.n(tu),nu=i(26),ou=i.n(nu);function su(e,t,i,n){var o=_n()(De()(1&n?e.prototype:e),t,i);return 2&n&&"function"==typeof o?function(e){return o.apply(i,e)}:o}function au(e,t,i){return t=De()(t),Ee()(e,function(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return function(){return!!e}()} +/** + * @license + * Copyright 2010-2024 Three.js Authors + * SPDX-License-Identifier: MIT + */()?Reflect.construct(t,i||[],De()(e).constructor):t.apply(e,i))}var ru=1014,lu=1020,cu=2400,uu=2401,hu="srgb",pu="srgb-linear",du="display-p3",mu="display-p3-linear",fu="linear",vu="srgb",gu="rec709",yu=7680,bu=35044,Cu=2e3,wu=2001,ku=function(){return h()((function e(){c()(this,e)}),[{key:"addEventListener",value:function(e,t){void 0===this._listeners&&(this._listeners={});var i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}},{key:"hasEventListener",value:function(e,t){if(void 0===this._listeners)return!1;var i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}},{key:"removeEventListener",value:function(e,t){if(void 0!==this._listeners){var i=this._listeners[e];if(void 0!==i){var n=i.indexOf(t);-1!==n&&i.splice(n,1)}}}},{key:"dispatchEvent",value:function(e){if(void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;for(var i=t.slice(0),n=0,o=i.length;n>8&255]+_u[e>>16&255]+_u[e>>24&255]+"-"+_u[255&t]+_u[t>>8&255]+"-"+_u[t>>16&15|64]+_u[t>>24&255]+"-"+_u[63&i|128]+_u[i>>8&255]+"-"+_u[i>>16&255]+_u[i>>24&255]+_u[255&n]+_u[n>>8&255]+_u[n>>16&255]+_u[n>>24&255]).toLowerCase()}function Eu(e,t,i){return Math.max(t,Math.min(i,e))}function Pu(e,t){return(e%t+t)%t}function Du(e,t,i){return(1-i)*e+i*t}function Ou(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function Mu(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(4294967295*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(2147483647*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}var Tu=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;c()(this,e),e.prototype.isVector2=!0,this.x=t,this.y=i}),[{key:"width",get:function(){return this.x},set:function(e){this.x=e}},{key:"height",get:function(){return this.y},set:function(e){this.y=e}},{key:"set",value:function(e,t){return this.x=e,this.y=t,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this}},{key:"add",value:function(e){return this.x+=e.x,this.y+=e.y,this}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}},{key:"sub",value:function(e){return this.x-=e.x,this.y-=e.y,this}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}},{key:"multiply",value:function(e){return this.x*=e.x,this.y*=e.y,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"applyMatrix3",value:function(e){var t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}},{key:"clampLength",value:function(e,t){var i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},{key:"roundToZero",value:function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y}},{key:"cross",value:function(e){return this.x*e.y-this.y*e.x}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"angle",value:function(){return Math.atan2(-this.y,-this.x)+Math.PI}},{key:"angleTo",value:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;var i=this.dot(e)/t;return Math.acos(Eu(i,-1,1))}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}},{key:"lerpVectors",value:function(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y}},{key:"fromArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e}},{key:"fromBufferAttribute",value:function(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}},{key:"rotateAround",value:function(e,t){var i=Math.cos(t),n=Math.sin(t),o=this.x-e.x,s=this.y-e.y;return this.x=o*i-s*n+e.x,this.y=o*n+s*i+e.y,this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.x;case 2:return e.next=4,this.y;case 4:case"end":return e.stop()}}),e,this)}))}])}(),Nu=function(){return h()((function e(t,i,n,o,s,a,r,l,u){c()(this,e),e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,i,n,o,s,a,r,l,u)}),[{key:"set",value:function(e,t,i,n,o,s,a,r,l){var c=this.elements;return c[0]=e,c[1]=n,c[2]=a,c[3]=t,c[4]=o,c[5]=r,c[6]=i,c[7]=s,c[8]=l,this}},{key:"identity",value:function(){return this.set(1,0,0,0,1,0,0,0,1),this}},{key:"copy",value:function(e){var t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}},{key:"extractBasis",value:function(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}},{key:"setFromMatrix4",value:function(e){var t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}},{key:"multiply",value:function(e){return this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var i=e.elements,n=t.elements,o=this.elements,s=i[0],a=i[3],r=i[6],l=i[1],c=i[4],u=i[7],h=i[2],p=i[5],d=i[8],m=n[0],f=n[3],v=n[6],g=n[1],y=n[4],b=n[7],C=n[2],w=n[5],k=n[8];return o[0]=s*m+a*g+r*C,o[3]=s*f+a*y+r*w,o[6]=s*v+a*b+r*k,o[1]=l*m+c*g+u*C,o[4]=l*f+c*y+u*w,o[7]=l*v+c*b+u*k,o[2]=h*m+p*g+d*C,o[5]=h*f+p*y+d*w,o[8]=h*v+p*b+d*k,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],s=e[4],a=e[5],r=e[6],l=e[7],c=e[8];return t*s*c-t*a*l-i*o*c+i*a*r+n*o*l-n*s*r}},{key:"invert",value:function(){var e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],s=e[4],a=e[5],r=e[6],l=e[7],c=e[8],u=c*s-a*l,h=a*r-c*o,p=l*o-s*r,d=t*u+i*h+n*p;if(0===d)return this.set(0,0,0,0,0,0,0,0,0);var m=1/d;return e[0]=u*m,e[1]=(n*l-c*i)*m,e[2]=(a*i-n*s)*m,e[3]=h*m,e[4]=(c*t-n*r)*m,e[5]=(n*o-a*t)*m,e[6]=p*m,e[7]=(i*r-l*t)*m,e[8]=(s*t-i*o)*m,this}},{key:"transpose",value:function(){var e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}},{key:"getNormalMatrix",value:function(e){return this.setFromMatrix4(e).invert().transpose()}},{key:"transposeIntoArray",value:function(e){var t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}},{key:"setUvTransform",value:function(e,t,i,n,o,s,a){var r=Math.cos(o),l=Math.sin(o);return this.set(i*r,i*l,-i*(r*s+l*a)+s+e,-n*l,n*r,-n*(-l*s+r*a)+a+t,0,0,1),this}},{key:"scale",value:function(e,t){return this.premultiply(Bu.makeScale(e,t)),this}},{key:"rotate",value:function(e){return this.premultiply(Bu.makeRotation(-e)),this}},{key:"translate",value:function(e,t){return this.premultiply(Bu.makeTranslation(e,t)),this}},{key:"makeTranslation",value:function(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}},{key:"makeRotation",value:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}},{key:"makeScale",value:function(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}},{key:"equals",value:function(e){for(var t=this.elements,i=e.elements,n=0;n<9;n++)if(t[n]!==i[n])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=0;i<9;i++)this.elements[i]=e[i+t];return this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}},{key:"clone",value:function(){return(new this.constructor).fromArray(this.elements)}}])}(),Bu=new Nu;function ju(e){for(var t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;function Au(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}var Lu={};function Iu(e){e in Lu||(Lu[e]=!0,console.warn(e))}var Ru,zu=(new Nu).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Fu=(new Nu).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Hu=r()(r()(r()(r()({},pu,{transfer:fu,primaries:gu,toReference:function(e){return e},fromReference:function(e){return e}}),hu,{transfer:vu,primaries:gu,toReference:function(e){return e.convertSRGBToLinear()},fromReference:function(e){return e.convertLinearToSRGB()}}),mu,{transfer:fu,primaries:"p3",toReference:function(e){return e.applyMatrix3(Fu)},fromReference:function(e){return e.applyMatrix3(zu)}}),du,{transfer:vu,primaries:"p3",toReference:function(e){return e.convertSRGBToLinear().applyMatrix3(Fu)},fromReference:function(e){return e.applyMatrix3(zu).convertLinearToSRGB()}}),Vu=new Set([pu,mu]),Gu={enabled:!0,_workingColorSpace:pu,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!Vu.has(e))throw new Error('Unsupported working color space, "'.concat(e,'".'));this._workingColorSpace=e},convert:function(e,t,i){if(!1===this.enabled||t===i||!t||!i)return e;var n=Hu[t].toReference;return(0,Hu[i].fromReference)(n(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return Hu[e].primaries},getTransfer:function(e){return""===e?fu:Hu[e].transfer}};function Wu(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function Uu(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var Yu=function(){return h()((function e(){c()(this,e)}),null,[{key:"getDataURL",value:function(e){if(/^data:/i.test(e.src))return e.src;if("undefined"==typeof HTMLCanvasElement)return e.src;var t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===Ru&&(Ru=Au("canvas")),Ru.width=e.width,Ru.height=e.height;var i=Ru.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=Ru}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}},{key:"sRGBToLinear",value:function(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var t=Au("canvas");t.width=e.width,t.height=e.height;var i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);for(var n=i.getImageData(0,0,e.width,e.height),o=n.data,s=0;s0&&void 0!==arguments[0]?arguments[0]:null;c()(this,e),this.isSource=!0,Object.defineProperty(this,"id",{value:Ju++}),this.uuid=Su(),this.data=t,this.dataReady=!0,this.version=0}),[{key:"needsUpdate",set:function(e){!0===e&&this.version++}},{key:"toJSON",value:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];var i={uuid:this.uuid,url:""},n=this.data;if(null!==n){var o;if(Array.isArray(n)){o=[];for(var s=0,a=n.length;s0&&void 0!==arguments[0]?arguments[0]:t.DEFAULT_IMAGE,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.DEFAULT_MAPPING,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1001,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1001,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1006,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1008,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1023,u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:1009,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:t.DEFAULT_ANISOTROPY,p=arguments.length>9&&void 0!==arguments[9]?arguments[9]:"";return c()(this,t),(e=au(this,t)).isTexture=!0,Object.defineProperty(ou()(e),"id",{value:Zu++}),e.uuid=Su(),e.name="",e.source=new qu(i),e.mipmaps=[],e.mapping=n,e.channel=0,e.wrapS=o,e.wrapT=s,e.magFilter=a,e.minFilter=r,e.anisotropy=h,e.format=l,e.internalFormat=null,e.type=u,e.offset=new Tu(0,0),e.repeat=new Tu(1,1),e.center=new Tu(0,0),e.rotation=0,e.matrixAutoUpdate=!0,e.matrix=new Nu,e.generateMipmaps=!0,e.premultiplyAlpha=!1,e.flipY=!0,e.unpackAlignment=4,e.colorSpace=p,e.userData={},e.version=0,e.onUpdate=null,e.isRenderTargetTexture=!1,e.pmremVersion=0,e}return Me()(t,e),h()(t,[{key:"image",get:function(){return this.source.data},set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.source.data=e}},{key:"updateMatrix",value:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}},{key:"toJSON",value:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];var i={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}},{key:"dispose",value:function(){this.dispatchEvent({type:"dispose"})}},{key:"transformUv",value:function(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}},{key:"needsUpdate",set:function(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}},{key:"needsPMREMUpdate",set:function(e){!0===e&&this.pmremVersion++}}])}(ku);Ku.DEFAULT_IMAGE=null,Ku.DEFAULT_MAPPING=300,Ku.DEFAULT_ANISOTROPY=1;var Qu=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;c()(this,e),e.prototype.isVector4=!0,this.x=t,this.y=i,this.z=n,this.w=o}),[{key:"width",get:function(){return this.z},set:function(e){this.z=e}},{key:"height",get:function(){return this.w},set:function(e){this.w=e}},{key:"set",value:function(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setW",value:function(e){return this.w=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z,this.w)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}},{key:"add",value:function(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}},{key:"sub",value:function(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}},{key:"multiply",value:function(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}},{key:"applyMatrix4",value:function(e){var t=this.x,i=this.y,n=this.z,o=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*n+s[12]*o,this.y=s[1]*t+s[5]*i+s[9]*n+s[13]*o,this.z=s[2]*t+s[6]*i+s[10]*n+s[14]*o,this.w=s[3]*t+s[7]*i+s[11]*n+s[15]*o,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"setAxisAngleFromQuaternion",value:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}},{key:"setAxisAngleFromRotationMatrix",value:function(e){var t,i,n,o,s=.01,a=.1,r=e.elements,l=r[0],c=r[4],u=r[8],h=r[1],p=r[5],d=r[9],m=r[2],f=r[6],v=r[10];if(Math.abs(c-h)y&&g>b?gb?y1&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}},{key:"fromBufferAttribute",value:function(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.x;case 2:return e.next=4,this.y;case 4:return e.next=6,this.z;case 6:return e.next=8,this.w;case 8:case"end":return e.stop()}}),e,this)}))}])}(),$u=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return c()(this,t),(e=au(this,t,[null])).isDataArrayTexture=!0,e.image={data:i,width:n,height:o,depth:s},e.magFilter=1003,e.minFilter=1003,e.wrapR=1001,e.generateMipmaps=!1,e.flipY=!1,e.unpackAlignment=1,e}return Me()(t,e),h()(t)}(Ku),eh=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return c()(this,t),(e=au(this,t,[null])).isData3DTexture=!0,e.image={data:i,width:n,height:o,depth:s},e.magFilter=1003,e.minFilter=1003,e.wrapR=1001,e.generateMipmaps=!1,e.flipY=!1,e.unpackAlignment=1,e}return Me()(t,e),h()(t)}(Ku),th=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;c()(this,e),this.isQuaternion=!0,this._x=t,this._y=i,this._z=n,this._w=o}),[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"w",get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}},{key:"set",value:function(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._w)}},{key:"copy",value:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}},{key:"setFromEuler",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e._x,n=e._y,o=e._z,s=e._order,a=Math.cos,r=Math.sin,l=a(i/2),c=a(n/2),u=a(o/2),h=r(i/2),p=r(n/2),d=r(o/2);switch(s){case"XYZ":this._x=h*c*u+l*p*d,this._y=l*p*u-h*c*d,this._z=l*c*d+h*p*u,this._w=l*c*u-h*p*d;break;case"YXZ":this._x=h*c*u+l*p*d,this._y=l*p*u-h*c*d,this._z=l*c*d-h*p*u,this._w=l*c*u+h*p*d;break;case"ZXY":this._x=h*c*u-l*p*d,this._y=l*p*u+h*c*d,this._z=l*c*d+h*p*u,this._w=l*c*u-h*p*d;break;case"ZYX":this._x=h*c*u-l*p*d,this._y=l*p*u+h*c*d,this._z=l*c*d-h*p*u,this._w=l*c*u+h*p*d;break;case"YZX":this._x=h*c*u+l*p*d,this._y=l*p*u+h*c*d,this._z=l*c*d-h*p*u,this._w=l*c*u-h*p*d;break;case"XZY":this._x=h*c*u-l*p*d,this._y=l*p*u-h*c*d,this._z=l*c*d+h*p*u,this._w=l*c*u+h*p*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!0===t&&this._onChangeCallback(),this}},{key:"setFromAxisAngle",value:function(e,t){var i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e){var t=e.elements,i=t[0],n=t[4],o=t[8],s=t[1],a=t[5],r=t[9],l=t[2],c=t[6],u=t[10],h=i+a+u;if(h>0){var p=.5/Math.sqrt(h+1);this._w=.25/p,this._x=(c-r)*p,this._y=(o-l)*p,this._z=(s-n)*p}else if(i>a&&i>u){var d=2*Math.sqrt(1+i-a-u);this._w=(c-r)/d,this._x=.25*d,this._y=(n+s)/d,this._z=(o+l)/d}else if(a>u){var m=2*Math.sqrt(1+a-i-u);this._w=(o-l)/m,this._x=(n+s)/m,this._y=.25*m,this._z=(r+c)/m}else{var f=2*Math.sqrt(1+u-i-a);this._w=(s-n)/f,this._x=(o+l)/f,this._y=(r+c)/f,this._z=.25*f}return this._onChangeCallback(),this}},{key:"setFromUnitVectors",value:function(e,t){var i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}},{key:"angleTo",value:function(e){return 2*Math.acos(Math.abs(Eu(this.dot(e),-1,1)))}},{key:"rotateTowards",value:function(e,t){var i=this.angleTo(e);if(0===i)return this;var n=Math.min(1,t/i);return this.slerp(e,n),this}},{key:"identity",value:function(){return this.set(0,0,0,1)}},{key:"invert",value:function(){return this.conjugate()}},{key:"conjugate",value:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}},{key:"dot",value:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}},{key:"lengthSq",value:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}},{key:"length",value:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}},{key:"normalize",value:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}},{key:"multiply",value:function(e){return this.multiplyQuaternions(this,e)}},{key:"premultiply",value:function(e){return this.multiplyQuaternions(e,this)}},{key:"multiplyQuaternions",value:function(e,t){var i=e._x,n=e._y,o=e._z,s=e._w,a=t._x,r=t._y,l=t._z,c=t._w;return this._x=i*c+s*a+n*l-o*r,this._y=n*c+s*r+o*a-i*l,this._z=o*c+s*l+i*r-n*a,this._w=s*c-i*a-n*r-o*l,this._onChangeCallback(),this}},{key:"slerp",value:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var i=this._x,n=this._y,o=this._z,s=this._w,a=s*e._w+i*e._x+n*e._y+o*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=n,this._z=o,this;var r=1-a*a;if(r<=Number.EPSILON){var l=1-t;return this._w=l*s+t*this._w,this._x=l*i+t*this._x,this._y=l*n+t*this._y,this._z=l*o+t*this._z,this.normalize(),this}var c=Math.sqrt(r),u=Math.atan2(c,a),h=Math.sin((1-t)*u)/c,p=Math.sin(t*u)/c;return this._w=s*h+this._w*p,this._x=i*h+this._x*p,this._y=n*h+this._y*p,this._z=o*h+this._z*p,this._onChangeCallback(),this}},{key:"slerpQuaternions",value:function(e,t,i){return this.copy(e).slerp(t,i)}},{key:"random",value:function(){var e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),o=Math.sqrt(i);return this.set(n*Math.sin(e),n*Math.cos(e),o*Math.sin(t),o*Math.cos(t))}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}},{key:"fromArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}},{key:"fromBufferAttribute",value:function(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}},{key:"toJSON",value:function(){return this.toArray()}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._x;case 2:return e.next=4,this._y;case 4:return e.next=6,this._z;case 6:return e.next=8,this._w;case 8:case"end":return e.stop()}}),e,this)}))}],[{key:"slerpFlat",value:function(e,t,i,n,o,s,a){var r=i[n+0],l=i[n+1],c=i[n+2],u=i[n+3],h=o[s+0],p=o[s+1],d=o[s+2],m=o[s+3];if(0===a)return e[t+0]=r,e[t+1]=l,e[t+2]=c,void(e[t+3]=u);if(1===a)return e[t+0]=h,e[t+1]=p,e[t+2]=d,void(e[t+3]=m);if(u!==m||r!==h||l!==p||c!==d){var f=1-a,v=r*h+l*p+c*d+u*m,g=v>=0?1:-1,y=1-v*v;if(y>Number.EPSILON){var b=Math.sqrt(y),C=Math.atan2(b,v*g);f=Math.sin(f*C)/b,a=Math.sin(a*C)/b}var w=a*g;if(r=r*f+h*w,l=l*f+p*w,c=c*f+d*w,u=u*f+m*w,f===1-a){var k=1/Math.sqrt(r*r+l*l+c*c+u*u);r*=k,l*=k,c*=k,u*=k}}e[t]=r,e[t+1]=l,e[t+2]=c,e[t+3]=u}},{key:"multiplyQuaternionsFlat",value:function(e,t,i,n,o,s){var a=i[n],r=i[n+1],l=i[n+2],c=i[n+3],u=o[s],h=o[s+1],p=o[s+2],d=o[s+3];return e[t]=a*d+c*u+r*p-l*h,e[t+1]=r*d+c*h+l*u-a*p,e[t+2]=l*d+c*p+a*h-r*u,e[t+3]=c*d-a*u-r*h-l*p,e}}])}(),ih=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;c()(this,e),e.prototype.isVector3=!0,this.x=t,this.y=i,this.z=n}),[{key:"set",value:function(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}},{key:"add",value:function(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}},{key:"sub",value:function(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}},{key:"multiply",value:function(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this}},{key:"multiplyVectors",value:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}},{key:"applyEuler",value:function(e){return this.applyQuaternion(oh.setFromEuler(e))}},{key:"applyAxisAngle",value:function(e,t){return this.applyQuaternion(oh.setFromAxisAngle(e,t))}},{key:"applyMatrix3",value:function(e){var t=this.x,i=this.y,n=this.z,o=e.elements;return this.x=o[0]*t+o[3]*i+o[6]*n,this.y=o[1]*t+o[4]*i+o[7]*n,this.z=o[2]*t+o[5]*i+o[8]*n,this}},{key:"applyNormalMatrix",value:function(e){return this.applyMatrix3(e).normalize()}},{key:"applyMatrix4",value:function(e){var t=this.x,i=this.y,n=this.z,o=e.elements,s=1/(o[3]*t+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*t+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*t+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*t+o[6]*i+o[10]*n+o[14])*s,this}},{key:"applyQuaternion",value:function(e){var t=this.x,i=this.y,n=this.z,o=e.x,s=e.y,a=e.z,r=e.w,l=2*(s*n-a*i),c=2*(a*t-o*n),u=2*(o*i-s*t);return this.x=t+r*l+s*u-a*c,this.y=i+r*c+a*l-o*u,this.z=n+r*u+o*c-s*l,this}},{key:"project",value:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}},{key:"unproject",value:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}},{key:"transformDirection",value:function(e){var t=this.x,i=this.y,n=this.z,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*n,this.y=o[1]*t+o[5]*i+o[9]*n,this.z=o[2]*t+o[6]*i+o[10]*n,this.normalize()}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}},{key:"clampLength",value:function(e,t){var i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}},{key:"roundToZero",value:function(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y+this.z*e.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}},{key:"lerpVectors",value:function(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}},{key:"cross",value:function(e){return this.crossVectors(this,e)}},{key:"crossVectors",value:function(e,t){var i=e.x,n=e.y,o=e.z,s=t.x,a=t.y,r=t.z;return this.x=n*r-o*a,this.y=o*s-i*r,this.z=i*a-n*s,this}},{key:"projectOnVector",value:function(e){var t=e.lengthSq();if(0===t)return this.set(0,0,0);var i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}},{key:"projectOnPlane",value:function(e){return nh.copy(this).projectOnVector(e),this.sub(nh)}},{key:"reflect",value:function(e){return this.sub(nh.copy(e).multiplyScalar(2*this.dot(e)))}},{key:"angleTo",value:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;var i=this.dot(e)/t;return Math.acos(Eu(i,-1,1))}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}},{key:"setFromSpherical",value:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}},{key:"setFromSphericalCoords",value:function(e,t,i){var n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}},{key:"setFromCylindrical",value:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}},{key:"setFromCylindricalCoords",value:function(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}},{key:"setFromMatrixPosition",value:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}},{key:"setFromMatrixScale",value:function(e){var t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}},{key:"setFromMatrixColumn",value:function(e,t){return this.fromArray(e.elements,4*t)}},{key:"setFromMatrix3Column",value:function(e,t){return this.fromArray(e.elements,3*t)}},{key:"setFromEuler",value:function(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}},{key:"setFromColor",value:function(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}},{key:"fromArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}},{key:"fromBufferAttribute",value:function(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}},{key:"randomDirection",value:function(){var e=Math.random()*Math.PI*2,t=2*Math.random()-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.x;case 2:return e.next=4,this.y;case 4:return e.next=6,this.z;case 6:case"end":return e.stop()}}),e,this)}))}])}(),nh=new ih,oh=new th,sh=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih(1/0,1/0,1/0),i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih(-1/0,-1/0,-1/0);c()(this,e),this.isBox3=!0,this.min=t,this.max=i}),[{key:"set",value:function(e,t){return this.min.copy(e),this.max.copy(t),this}},{key:"setFromArray",value:function(e){this.makeEmpty();for(var t=0,i=e.length;t1&&void 0!==arguments[1]&&arguments[1];return this.makeEmpty(),this.expandByObject(e,t)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.min.copy(e.min),this.max.copy(e.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x1&&void 0!==arguments[1]&&arguments[1];e.updateWorldMatrix(!1,!1);var i=e.geometry;if(void 0!==i){var n=i.getAttribute("position");if(!0===t&&void 0!==n&&!0!==e.isInstancedMesh)for(var o=0,s=n.count;othis.max.x||e.ythis.max.y||e.zthis.max.z)}},{key:"containsBox",value:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}},{key:"getParameter",value:function(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}},{key:"intersectsBox",value:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}},{key:"intersectsSphere",value:function(e){return this.clampPoint(e.center,rh),rh.distanceToSquared(e.center)<=e.radius*e.radius}},{key:"intersectsPlane",value:function(e){var t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}},{key:"intersectsTriangle",value:function(e){if(this.isEmpty())return!1;this.getCenter(fh),vh.subVectors(this.max,fh),ch.subVectors(e.a,fh),uh.subVectors(e.b,fh),hh.subVectors(e.c,fh),ph.subVectors(uh,ch),dh.subVectors(hh,uh),mh.subVectors(ch,hh);var t=[0,-ph.z,ph.y,0,-dh.z,dh.y,0,-mh.z,mh.y,ph.z,0,-ph.x,dh.z,0,-dh.x,mh.z,0,-mh.x,-ph.y,ph.x,0,-dh.y,dh.x,0,-mh.y,mh.x,0];return!!bh(t,ch,uh,hh,vh)&&(!!bh(t=[1,0,0,0,1,0,0,0,1],ch,uh,hh,vh)&&(gh.crossVectors(ph,dh),bh(t=[gh.x,gh.y,gh.z],ch,uh,hh,vh)))}},{key:"clampPoint",value:function(e,t){return t.copy(e).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(e){return this.clampPoint(e,rh).distanceTo(e)}},{key:"getBoundingSphere",value:function(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(rh).length()),e}},{key:"intersect",value:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}},{key:"union",value:function(e){return this.min.min(e.min),this.max.max(e.max),this}},{key:"applyMatrix4",value:function(e){return this.isEmpty()||(ah[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ah[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ah[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ah[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ah[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ah[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ah[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ah[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ah)),this}},{key:"translate",value:function(e){return this.min.add(e),this.max.add(e),this}},{key:"equals",value:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}])}(),ah=[new ih,new ih,new ih,new ih,new ih,new ih,new ih,new ih],rh=new ih,lh=new sh,ch=new ih,uh=new ih,hh=new ih,ph=new ih,dh=new ih,mh=new ih,fh=new ih,vh=new ih,gh=new ih,yh=new ih;function bh(e,t,i,n,o){for(var s=0,a=e.length-3;s<=a;s+=3){yh.fromArray(e,s);var r=o.x*Math.abs(yh.x)+o.y*Math.abs(yh.y)+o.z*Math.abs(yh.z),l=t.dot(yh),c=i.dot(yh),u=n.dot(yh);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>r)return!1}return!0}var Ch=new sh,wh=new ih,kh=new ih,_h=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;c()(this,e),this.isSphere=!0,this.center=t,this.radius=i}),[{key:"set",value:function(e,t){return this.center.copy(e),this.radius=t,this}},{key:"setFromPoints",value:function(e,t){var i=this.center;void 0!==t?i.copy(t):Ch.setFromPoints(e).getCenter(i);for(var n=0,o=0,s=e.length;othis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}},{key:"getBoundingBox",value:function(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}},{key:"applyMatrix4",value:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}},{key:"translate",value:function(e){return this.center.add(e),this}},{key:"expandByPoint",value:function(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;wh.subVectors(e,this.center);var t=wh.lengthSq();if(t>this.radius*this.radius){var i=Math.sqrt(t),n=.5*(i-this.radius);this.center.addScaledVector(wh,n/i),this.radius+=n}return this}},{key:"union",value:function(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(kh.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(wh.copy(e.center).add(kh)),this.expandByPoint(wh.copy(e.center).sub(kh))),this)}},{key:"equals",value:function(e){return e.center.equals(this.center)&&e.radius===this.radius}},{key:"clone",value:function(){return(new this.constructor).copy(this)}}])}(),xh=new ih,Sh=new ih,Eh=new ih,Ph=new ih,Dh=new ih,Oh=new ih,Mh=new ih,Th=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih(0,0,-1);c()(this,e),this.origin=t,this.direction=i}),[{key:"set",value:function(e,t){return this.origin.copy(e),this.direction.copy(t),this}},{key:"copy",value:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}},{key:"at",value:function(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}},{key:"lookAt",value:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this}},{key:"recast",value:function(e){return this.origin.copy(this.at(e,xh)),this}},{key:"closestPointToPoint",value:function(e,t){t.subVectors(e,this.origin);var i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}},{key:"distanceToPoint",value:function(e){return Math.sqrt(this.distanceSqToPoint(e))}},{key:"distanceSqToPoint",value:function(e){var t=xh.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(xh.copy(this.origin).addScaledVector(this.direction,t),xh.distanceToSquared(e))}},{key:"distanceSqToSegment",value:function(e,t,i,n){Sh.copy(e).add(t).multiplyScalar(.5),Eh.copy(t).sub(e).normalize(),Ph.copy(this.origin).sub(Sh);var o,s,a,r,l=.5*e.distanceTo(t),c=-this.direction.dot(Eh),u=Ph.dot(this.direction),h=-Ph.dot(Eh),p=Ph.lengthSq(),d=Math.abs(1-c*c);if(d>0)if(s=c*u-h,r=l*d,(o=c*h-u)>=0)if(s>=-r)if(s<=r){var m=1/d;a=(o*=m)*(o+c*(s*=m)+2*u)+s*(c*o+s+2*h)+p}else s=l,a=-(o=Math.max(0,-(c*s+u)))*o+s*(s+2*h)+p;else s=-l,a=-(o=Math.max(0,-(c*s+u)))*o+s*(s+2*h)+p;else s<=-r?a=-(o=Math.max(0,-(-c*l+u)))*o+(s=o>0?-l:Math.min(Math.max(-l,-h),l))*(s+2*h)+p:s<=r?(o=0,a=(s=Math.min(Math.max(-l,-h),l))*(s+2*h)+p):a=-(o=Math.max(0,-(c*l+u)))*o+(s=o>0?l:Math.min(Math.max(-l,-h),l))*(s+2*h)+p;else s=c>0?-l:l,a=-(o=Math.max(0,-(c*s+u)))*o+s*(s+2*h)+p;return i&&i.copy(this.origin).addScaledVector(this.direction,o),n&&n.copy(Sh).addScaledVector(Eh,s),a}},{key:"intersectSphere",value:function(e,t){xh.subVectors(e.center,this.origin);var i=xh.dot(this.direction),n=xh.dot(xh)-i*i,o=e.radius*e.radius;if(n>o)return null;var s=Math.sqrt(o-n),a=i-s,r=i+s;return r<0?null:a<0?this.at(r,t):this.at(a,t)}},{key:"intersectsSphere",value:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}},{key:"distanceToPlane",value:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}},{key:"intersectPlane",value:function(e,t){var i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}},{key:"intersectsPlane",value:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}},{key:"intersectBox",value:function(e,t){var i,n,o,s,a,r,l=1/this.direction.x,c=1/this.direction.y,u=1/this.direction.z,h=this.origin;return l>=0?(i=(e.min.x-h.x)*l,n=(e.max.x-h.x)*l):(i=(e.max.x-h.x)*l,n=(e.min.x-h.x)*l),c>=0?(o=(e.min.y-h.y)*c,s=(e.max.y-h.y)*c):(o=(e.max.y-h.y)*c,s=(e.min.y-h.y)*c),i>s||o>n?null:((o>i||isNaN(i))&&(i=o),(s=0?(a=(e.min.z-h.z)*u,r=(e.max.z-h.z)*u):(a=(e.max.z-h.z)*u,r=(e.min.z-h.z)*u),i>r||a>n?null:((a>i||i!=i)&&(i=a),(r=0?i:n,t)))}},{key:"intersectsBox",value:function(e){return null!==this.intersectBox(e,xh)}},{key:"intersectTriangle",value:function(e,t,i,n,o){Dh.subVectors(t,e),Oh.subVectors(i,e),Mh.crossVectors(Dh,Oh);var s,a=this.direction.dot(Mh);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}Ph.subVectors(this.origin,e);var r=s*this.direction.dot(Oh.crossVectors(Ph,Oh));if(r<0)return null;var l=s*this.direction.dot(Dh.cross(Ph));if(l<0)return null;if(r+l>a)return null;var c=-s*Ph.dot(Mh);return c<0?null:this.at(c/a,o)}},{key:"applyMatrix4",value:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}},{key:"equals",value:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}}])}(),Nh=function(){function e(t,i,n,o,s,a,r,l,u,h,p,d,m,f,v,g){c()(this,e),e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,i,n,o,s,a,r,l,u,h,p,d,m,f,v,g)}return h()(e,[{key:"set",value:function(e,t,i,n,o,s,a,r,l,c,u,h,p,d,m,f){var v=this.elements;return v[0]=e,v[4]=t,v[8]=i,v[12]=n,v[1]=o,v[5]=s,v[9]=a,v[13]=r,v[2]=l,v[6]=c,v[10]=u,v[14]=h,v[3]=p,v[7]=d,v[11]=m,v[15]=f,this}},{key:"identity",value:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}},{key:"clone",value:function(){return(new e).fromArray(this.elements)}},{key:"copy",value:function(e){var t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}},{key:"copyPosition",value:function(e){var t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}},{key:"setFromMatrix3",value:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}},{key:"extractBasis",value:function(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}},{key:"makeBasis",value:function(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}},{key:"extractRotation",value:function(e){var t=this.elements,i=e.elements,n=1/Bh.setFromMatrixColumn(e,0).length(),o=1/Bh.setFromMatrixColumn(e,1).length(),s=1/Bh.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*o,t[5]=i[5]*o,t[6]=i[6]*o,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},{key:"makeRotationFromEuler",value:function(e){var t=this.elements,i=e.x,n=e.y,o=e.z,s=Math.cos(i),a=Math.sin(i),r=Math.cos(n),l=Math.sin(n),c=Math.cos(o),u=Math.sin(o);if("XYZ"===e.order){var h=s*c,p=s*u,d=a*c,m=a*u;t[0]=r*c,t[4]=-r*u,t[8]=l,t[1]=p+d*l,t[5]=h-m*l,t[9]=-a*r,t[2]=m-h*l,t[6]=d+p*l,t[10]=s*r}else if("YXZ"===e.order){var f=r*c,v=r*u,g=l*c,y=l*u;t[0]=f+y*a,t[4]=g*a-v,t[8]=s*l,t[1]=s*u,t[5]=s*c,t[9]=-a,t[2]=v*a-g,t[6]=y+f*a,t[10]=s*r}else if("ZXY"===e.order){var b=r*c,C=r*u,w=l*c,k=l*u;t[0]=b-k*a,t[4]=-s*u,t[8]=w+C*a,t[1]=C+w*a,t[5]=s*c,t[9]=k-b*a,t[2]=-s*l,t[6]=a,t[10]=s*r}else if("ZYX"===e.order){var _=s*c,x=s*u,S=a*c,E=a*u;t[0]=r*c,t[4]=S*l-x,t[8]=_*l+E,t[1]=r*u,t[5]=E*l+_,t[9]=x*l-S,t[2]=-l,t[6]=a*r,t[10]=s*r}else if("YZX"===e.order){var P=s*r,D=s*l,O=a*r,M=a*l;t[0]=r*c,t[4]=M-P*u,t[8]=O*u+D,t[1]=u,t[5]=s*c,t[9]=-a*c,t[2]=-l*c,t[6]=D*u+O,t[10]=P-M*u}else if("XZY"===e.order){var T=s*r,N=s*l,B=a*r,j=a*l;t[0]=r*c,t[4]=-u,t[8]=l*c,t[1]=T*u+j,t[5]=s*c,t[9]=N*u-B,t[2]=B*u-N,t[6]=a*c,t[10]=j*u+T}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},{key:"makeRotationFromQuaternion",value:function(e){return this.compose(Ah,e,Lh)}},{key:"lookAt",value:function(e,t,i){var n=this.elements;return zh.subVectors(e,t),0===zh.lengthSq()&&(zh.z=1),zh.normalize(),Ih.crossVectors(i,zh),0===Ih.lengthSq()&&(1===Math.abs(i.z)?zh.x+=1e-4:zh.z+=1e-4,zh.normalize(),Ih.crossVectors(i,zh)),Ih.normalize(),Rh.crossVectors(zh,Ih),n[0]=Ih.x,n[4]=Rh.x,n[8]=zh.x,n[1]=Ih.y,n[5]=Rh.y,n[9]=zh.y,n[2]=Ih.z,n[6]=Rh.z,n[10]=zh.z,this}},{key:"multiply",value:function(e){return this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var i=e.elements,n=t.elements,o=this.elements,s=i[0],a=i[4],r=i[8],l=i[12],c=i[1],u=i[5],h=i[9],p=i[13],d=i[2],m=i[6],f=i[10],v=i[14],g=i[3],y=i[7],b=i[11],C=i[15],w=n[0],k=n[4],_=n[8],x=n[12],S=n[1],E=n[5],P=n[9],D=n[13],O=n[2],M=n[6],T=n[10],N=n[14],B=n[3],j=n[7],A=n[11],L=n[15];return o[0]=s*w+a*S+r*O+l*B,o[4]=s*k+a*E+r*M+l*j,o[8]=s*_+a*P+r*T+l*A,o[12]=s*x+a*D+r*N+l*L,o[1]=c*w+u*S+h*O+p*B,o[5]=c*k+u*E+h*M+p*j,o[9]=c*_+u*P+h*T+p*A,o[13]=c*x+u*D+h*N+p*L,o[2]=d*w+m*S+f*O+v*B,o[6]=d*k+m*E+f*M+v*j,o[10]=d*_+m*P+f*T+v*A,o[14]=d*x+m*D+f*N+v*L,o[3]=g*w+y*S+b*O+C*B,o[7]=g*k+y*E+b*M+C*j,o[11]=g*_+y*P+b*T+C*A,o[15]=g*x+y*D+b*N+C*L,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],i=e[4],n=e[8],o=e[12],s=e[1],a=e[5],r=e[9],l=e[13],c=e[2],u=e[6],h=e[10],p=e[14];return e[3]*(+o*r*u-n*l*u-o*a*h+i*l*h+n*a*p-i*r*p)+e[7]*(+t*r*p-t*l*h+o*s*h-n*s*p+n*l*c-o*r*c)+e[11]*(+t*l*u-t*a*p-o*s*u+i*s*p+o*a*c-i*l*c)+e[15]*(-n*a*c-t*r*u+t*a*h+n*s*u-i*s*h+i*r*c)}},{key:"transpose",value:function(){var e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}},{key:"setPosition",value:function(e,t,i){var n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}},{key:"invert",value:function(){var e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],s=e[4],a=e[5],r=e[6],l=e[7],c=e[8],u=e[9],h=e[10],p=e[11],d=e[12],m=e[13],f=e[14],v=e[15],g=u*f*l-m*h*l+m*r*p-a*f*p-u*r*v+a*h*v,y=d*h*l-c*f*l-d*r*p+s*f*p+c*r*v-s*h*v,b=c*m*l-d*u*l+d*a*p-s*m*p-c*a*v+s*u*v,C=d*u*r-c*m*r-d*a*h+s*m*h+c*a*f-s*u*f,w=t*g+i*y+n*b+o*C;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var k=1/w;return e[0]=g*k,e[1]=(m*h*o-u*f*o-m*n*p+i*f*p+u*n*v-i*h*v)*k,e[2]=(a*f*o-m*r*o+m*n*l-i*f*l-a*n*v+i*r*v)*k,e[3]=(u*r*o-a*h*o-u*n*l+i*h*l+a*n*p-i*r*p)*k,e[4]=y*k,e[5]=(c*f*o-d*h*o+d*n*p-t*f*p-c*n*v+t*h*v)*k,e[6]=(d*r*o-s*f*o-d*n*l+t*f*l+s*n*v-t*r*v)*k,e[7]=(s*h*o-c*r*o+c*n*l-t*h*l-s*n*p+t*r*p)*k,e[8]=b*k,e[9]=(d*u*o-c*m*o-d*i*p+t*m*p+c*i*v-t*u*v)*k,e[10]=(s*m*o-d*a*o+d*i*l-t*m*l-s*i*v+t*a*v)*k,e[11]=(c*a*o-s*u*o-c*i*l+t*u*l+s*i*p-t*a*p)*k,e[12]=C*k,e[13]=(c*m*n-d*u*n+d*i*h-t*m*h-c*i*f+t*u*f)*k,e[14]=(d*a*n-s*m*n-d*i*r+t*m*r+s*i*f-t*a*f)*k,e[15]=(s*u*n-c*a*n+c*i*r-t*u*r-s*i*h+t*a*h)*k,this}},{key:"scale",value:function(e){var t=this.elements,i=e.x,n=e.y,o=e.z;return t[0]*=i,t[4]*=n,t[8]*=o,t[1]*=i,t[5]*=n,t[9]*=o,t[2]*=i,t[6]*=n,t[10]*=o,t[3]*=i,t[7]*=n,t[11]*=o,this}},{key:"getMaxScaleOnAxis",value:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}},{key:"makeTranslation",value:function(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}},{key:"makeRotationX",value:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}},{key:"makeRotationY",value:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}},{key:"makeRotationZ",value:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}},{key:"makeRotationAxis",value:function(e,t){var i=Math.cos(t),n=Math.sin(t),o=1-i,s=e.x,a=e.y,r=e.z,l=o*s,c=o*a;return this.set(l*s+i,l*a-n*r,l*r+n*a,0,l*a+n*r,c*a+i,c*r-n*s,0,l*r-n*a,c*r+n*s,o*r*r+i,0,0,0,0,1),this}},{key:"makeScale",value:function(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}},{key:"makeShear",value:function(e,t,i,n,o,s){return this.set(1,i,o,0,e,1,s,0,t,n,1,0,0,0,0,1),this}},{key:"compose",value:function(e,t,i){var n=this.elements,o=t._x,s=t._y,a=t._z,r=t._w,l=o+o,c=s+s,u=a+a,h=o*l,p=o*c,d=o*u,m=s*c,f=s*u,v=a*u,g=r*l,y=r*c,b=r*u,C=i.x,w=i.y,k=i.z;return n[0]=(1-(m+v))*C,n[1]=(p+b)*C,n[2]=(d-y)*C,n[3]=0,n[4]=(p-b)*w,n[5]=(1-(h+v))*w,n[6]=(f+g)*w,n[7]=0,n[8]=(d+y)*k,n[9]=(f-g)*k,n[10]=(1-(h+m))*k,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}},{key:"decompose",value:function(e,t,i){var n=this.elements,o=Bh.set(n[0],n[1],n[2]).length(),s=Bh.set(n[4],n[5],n[6]).length(),a=Bh.set(n[8],n[9],n[10]).length();this.determinant()<0&&(o=-o),e.x=n[12],e.y=n[13],e.z=n[14],jh.copy(this);var r=1/o,l=1/s,c=1/a;return jh.elements[0]*=r,jh.elements[1]*=r,jh.elements[2]*=r,jh.elements[4]*=l,jh.elements[5]*=l,jh.elements[6]*=l,jh.elements[8]*=c,jh.elements[9]*=c,jh.elements[10]*=c,t.setFromRotationMatrix(jh),i.x=o,i.y=s,i.z=a,this}},{key:"makePerspective",value:function(e,t,i,n,o,s){var a,r,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:2e3,c=this.elements,u=2*o/(t-e),h=2*o/(i-n),p=(t+e)/(t-e),d=(i+n)/(i-n);if(l===Cu)a=-(s+o)/(s-o),r=-2*s*o/(s-o);else{if(l!==wu)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+l);a=-s/(s-o),r=-s*o/(s-o)}return c[0]=u,c[4]=0,c[8]=p,c[12]=0,c[1]=0,c[5]=h,c[9]=d,c[13]=0,c[2]=0,c[6]=0,c[10]=a,c[14]=r,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}},{key:"makeOrthographic",value:function(e,t,i,n,o,s){var a,r,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:2e3,c=this.elements,u=1/(t-e),h=1/(i-n),p=1/(s-o),d=(t+e)*u,m=(i+n)*h;if(l===Cu)a=(s+o)*p,r=-2*p;else{if(l!==wu)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+l);a=o*p,r=-1*p}return c[0]=2*u,c[4]=0,c[8]=0,c[12]=-d,c[1]=0,c[5]=2*h,c[9]=0,c[13]=-m,c[2]=0,c[6]=0,c[10]=r,c[14]=-a,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}},{key:"equals",value:function(e){for(var t=this.elements,i=e.elements,n=0;n<16;n++)if(t[n]!==i[n])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=0;i<16;i++)this.elements[i]=e[i+t];return this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}])}(),Bh=new ih,jh=new Nh,Ah=new ih(0,0,0),Lh=new ih(1,1,1),Ih=new ih,Rh=new ih,zh=new ih,Fh=new Nh,Hh=new th,Vh=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.DEFAULT_ORDER;c()(this,e),this.isEuler=!0,this._x=t,this._y=i,this._z=n,this._order=o}),[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"order",get:function(){return this._order},set:function(e){this._order=e,this._onChangeCallback()}},{key:"set",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._order;return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._order)}},{key:"copy",value:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.elements,o=n[0],s=n[4],a=n[8],r=n[1],l=n[5],c=n[9],u=n[2],h=n[6],p=n[10];switch(t){case"XYZ":this._y=Math.asin(Eu(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,p),this._z=Math.atan2(-s,o)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Eu(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(r,l)):(this._y=Math.atan2(-u,o),this._z=0);break;case"ZXY":this._x=Math.asin(Eu(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(r,o));break;case"ZYX":this._y=Math.asin(-Eu(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(h,p),this._z=Math.atan2(r,o)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Eu(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-u,o)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-Eu(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(a,o)):(this._x=Math.atan2(-c,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}},{key:"setFromQuaternion",value:function(e,t,i){return Fh.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Fh,t,i)}},{key:"setFromVector3",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._order;return this.set(e.x,e.y,e.z,t)}},{key:"reorder",value:function(e){return Hh.setFromEuler(this),this.setFromQuaternion(Hh,e)}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}},{key:"fromArray",value:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._x;case 2:return e.next=4,this._y;case 4:return e.next=6,this._z;case 6:return e.next=8,this._order;case 8:case"end":return e.stop()}}),e,this)}))}])}();Vh.DEFAULT_ORDER="XYZ";var Gh=function(){return h()((function e(){c()(this,e),this.mask=1}),[{key:"set",value:function(e){this.mask=(1<>>0}},{key:"enable",value:function(e){this.mask|=1<1){for(var t=0;t1){for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:[];this[e]===t&&i.push(this);for(var n=this.children,o=0,s=n.length;o0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.visibility=this._visibility,n.active=this._active,n.bounds=this._bounds.map((function(e){return{boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()}})),n.maxGeometryCount=this._maxGeometryCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.geometryCount=this._geometryCount,n.matricesTexture=this._matricesTexture.toJSON(e),null!==this.boundingSphere&&(n.boundingSphere={center:n.boundingSphere.center.toArray(),radius:n.boundingSphere.radius}),null!==this.boundingBox&&(n.boundingBox={min:n.boundingBox.min.toArray(),max:n.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=o(e.geometries,this.geometry);var s=this.geometry.parameters;if(void 0!==s&&void 0!==s.shapes){var a=s.shapes;if(Array.isArray(a))for(var r=0,l=a.length;r0){n.children=[];for(var d=0;d0){n.animations=[];for(var m=0;m0&&(i.geometries=v),g.length>0&&(i.materials=g),y.length>0&&(i.textures=y),b.length>0&&(i.images=b),C.length>0&&(i.shapes=C),w.length>0&&(i.skeletons=w),k.length>0&&(i.animations=k),_.length>0&&(i.nodes=_)}return i.object=n,i;function x(e){var t=[];for(var i in e){var n=e[i];delete n.metadata,t.push(n)}return t}}},{key:"clone",value:function(e){return(new this.constructor).copy(this,e)}},{key:"copy",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:new ih,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new ih;c()(this,e),this.a=t,this.b=i,this.c=n}return h()(e,[{key:"set",value:function(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}},{key:"setFromPointsAndIndices",value:function(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}},{key:"setFromAttributeAndIndices",value:function(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}},{key:"getArea",value:function(){return ap.subVectors(this.c,this.b),rp.subVectors(this.a,this.b),.5*ap.cross(rp).length()}},{key:"getMidpoint",value:function(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}},{key:"getNormal",value:function(t){return e.getNormal(this.a,this.b,this.c,t)}},{key:"getPlane",value:function(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}},{key:"getBarycoord",value:function(t,i){return e.getBarycoord(t,this.a,this.b,this.c,i)}},{key:"getInterpolation",value:function(t,i,n,o,s){return e.getInterpolation(t,this.a,this.b,this.c,i,n,o,s)}},{key:"containsPoint",value:function(t){return e.containsPoint(t,this.a,this.b,this.c)}},{key:"isFrontFacing",value:function(t){return e.isFrontFacing(this.a,this.b,this.c,t)}},{key:"intersectsBox",value:function(e){return e.intersectsTriangle(this)}},{key:"closestPointToPoint",value:function(e,t){var i,n,o=this.a,s=this.b,a=this.c;up.subVectors(s,o),hp.subVectors(a,o),dp.subVectors(e,o);var r=up.dot(dp),l=hp.dot(dp);if(r<=0&&l<=0)return t.copy(o);mp.subVectors(e,s);var c=up.dot(mp),u=hp.dot(mp);if(c>=0&&u<=c)return t.copy(s);var h=r*u-c*l;if(h<=0&&r>=0&&c<=0)return i=r/(r-c),t.copy(o).addScaledVector(up,i);fp.subVectors(e,a);var p=up.dot(fp),d=hp.dot(fp);if(d>=0&&p<=d)return t.copy(a);var m=p*l-r*d;if(m<=0&&l>=0&&d<=0)return n=l/(l-d),t.copy(o).addScaledVector(hp,n);var f=c*d-p*u;if(f<=0&&u-c>=0&&p-d>=0)return pp.subVectors(a,s),n=(u-c)/(u-c+(p-d)),t.copy(s).addScaledVector(pp,n);var v=1/(f+m+h);return i=m*v,n=h*v,t.copy(o).addScaledVector(up,i).addScaledVector(hp,n)}},{key:"equals",value:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}],[{key:"getNormal",value:function(e,t,i,n){n.subVectors(i,t),ap.subVectors(e,t),n.cross(ap);var o=n.lengthSq();return o>0?n.multiplyScalar(1/Math.sqrt(o)):n.set(0,0,0)}},{key:"getBarycoord",value:function(e,t,i,n,o){ap.subVectors(n,t),rp.subVectors(i,t),lp.subVectors(e,t);var s=ap.dot(ap),a=ap.dot(rp),r=ap.dot(lp),l=rp.dot(rp),c=rp.dot(lp),u=s*l-a*a;if(0===u)return o.set(0,0,0),null;var h=1/u,p=(l*r-a*c)*h,d=(s*c-a*r)*h;return o.set(1-p-d,d,p)}},{key:"containsPoint",value:function(e,t,i,n){return null!==this.getBarycoord(e,t,i,n,cp)&&cp.x>=0&&cp.y>=0&&cp.x+cp.y<=1}},{key:"getInterpolation",value:function(e,t,i,n,o,s,a,r){return null===this.getBarycoord(e,t,i,n,cp)?(r.x=0,r.y=0,"z"in r&&(r.z=0),"w"in r&&(r.w=0),null):(r.setScalar(0),r.addScaledVector(o,cp.x),r.addScaledVector(s,cp.y),r.addScaledVector(a,cp.z),r)}},{key:"isFrontFacing",value:function(e,t,i,n){return ap.subVectors(i,t),rp.subVectors(e,t),ap.cross(rp).dot(n)<0}}])}(),gp={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},yp={h:0,s:0,l:0},bp={h:0,s:0,l:0};function Cp(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e}var wp=function(){return h()((function e(t,i,n){return c()(this,e),this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,i,n)}),[{key:"set",value:function(e,t,i){if(void 0===t&&void 0===i){var n=e;n&&n.isColor?this.copy(n):"number"==typeof n?this.setHex(n):"string"==typeof n&&this.setStyle(n)}else this.setRGB(e,t,i);return this}},{key:"setScalar",value:function(e){return this.r=e,this.g=e,this.b=e,this}},{key:"setHex",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:hu;return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,Gu.toWorkingColorSpace(this,t),this}},{key:"setRGB",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Gu.workingColorSpace;return this.r=e,this.g=t,this.b=i,Gu.toWorkingColorSpace(this,n),this}},{key:"setHSL",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Gu.workingColorSpace;if(e=Pu(e,1),t=Eu(t,0,1),i=Eu(i,0,1),0===t)this.r=this.g=this.b=i;else{var o=i<=.5?i*(1+t):i+t-i*t,s=2*i-o;this.r=Cp(s,o,e+1/3),this.g=Cp(s,o,e),this.b=Cp(s,o,e-1/3)}return Gu.toWorkingColorSpace(this,n),this}},{key:"setStyle",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:hu;function n(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}if(t=/^(\w+)\(([^\)]*)\)/.exec(e)){var o,s=t[1],a=t[2];switch(s){case"rgb":case"rgba":if(o=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(o[4]),this.setRGB(Math.min(255,parseInt(o[1],10))/255,Math.min(255,parseInt(o[2],10))/255,Math.min(255,parseInt(o[3],10))/255,i);if(o=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(o[4]),this.setRGB(Math.min(100,parseInt(o[1],10))/100,Math.min(100,parseInt(o[2],10))/100,Math.min(100,parseInt(o[3],10))/100,i);break;case"hsl":case"hsla":if(o=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return n(o[4]),this.setHSL(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,i);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(t=/^\#([A-Fa-f\d]+)$/.exec(e)){var r=t[1],l=r.length;if(3===l)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,i);if(6===l)return this.setHex(parseInt(r,16),i);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,i);return this}},{key:"setColorName",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:hu,i=gp[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}},{key:"clone",value:function(){return new this.constructor(this.r,this.g,this.b)}},{key:"copy",value:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}},{key:"copySRGBToLinear",value:function(e){return this.r=Wu(e.r),this.g=Wu(e.g),this.b=Wu(e.b),this}},{key:"copyLinearToSRGB",value:function(e){return this.r=Uu(e.r),this.g=Uu(e.g),this.b=Uu(e.b),this}},{key:"convertSRGBToLinear",value:function(){return this.copySRGBToLinear(this),this}},{key:"convertLinearToSRGB",value:function(){return this.copyLinearToSRGB(this),this}},{key:"getHex",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:hu;return Gu.fromWorkingColorSpace(kp.copy(this),e),65536*Math.round(Eu(255*kp.r,0,255))+256*Math.round(Eu(255*kp.g,0,255))+Math.round(Eu(255*kp.b,0,255))}},{key:"getHexString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:hu;return("000000"+this.getHex(e).toString(16)).slice(-6)}},{key:"getHSL",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Gu.workingColorSpace;Gu.fromWorkingColorSpace(kp.copy(this),t);var i,n,o=kp.r,s=kp.g,a=kp.b,r=Math.max(o,s,a),l=Math.min(o,s,a),c=(l+r)/2;if(l===r)i=0,n=0;else{var u=r-l;switch(n=c<=.5?u/(r+l):u/(2-r-l),r){case o:i=(s-a)/u+(s1&&void 0!==arguments[1]?arguments[1]:Gu.workingColorSpace;return Gu.fromWorkingColorSpace(kp.copy(this),t),e.r=kp.r,e.g=kp.g,e.b=kp.b,e}},{key:"getStyle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:hu;Gu.fromWorkingColorSpace(kp.copy(this),e);var t=kp.r,i=kp.g,n=kp.b;return e!==hu?"color(".concat(e," ").concat(t.toFixed(3)," ").concat(i.toFixed(3)," ").concat(n.toFixed(3),")"):"rgb(".concat(Math.round(255*t),",").concat(Math.round(255*i),",").concat(Math.round(255*n),")")}},{key:"offsetHSL",value:function(e,t,i){return this.getHSL(yp),this.setHSL(yp.h+e,yp.s+t,yp.l+i)}},{key:"add",value:function(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}},{key:"addColors",value:function(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}},{key:"addScalar",value:function(e){return this.r+=e,this.g+=e,this.b+=e,this}},{key:"sub",value:function(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}},{key:"multiply",value:function(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}},{key:"multiplyScalar",value:function(e){return this.r*=e,this.g*=e,this.b*=e,this}},{key:"lerp",value:function(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}},{key:"lerpColors",value:function(e,t,i){return this.r=e.r+(t.r-e.r)*i,this.g=e.g+(t.g-e.g)*i,this.b=e.b+(t.b-e.b)*i,this}},{key:"lerpHSL",value:function(e,t){this.getHSL(yp),e.getHSL(bp);var i=Du(yp.h,bp.h,t),n=Du(yp.s,bp.s,t),o=Du(yp.l,bp.l,t);return this.setHSL(i,n,o),this}},{key:"setFromVector3",value:function(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}},{key:"applyMatrix3",value:function(e){var t=this.r,i=this.g,n=this.b,o=e.elements;return this.r=o[0]*t+o[3]*i+o[6]*n,this.g=o[1]*t+o[4]*i+o[7]*n,this.b=o[2]*t+o[5]*i+o[8]*n,this}},{key:"equals",value:function(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}},{key:"fromArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}},{key:"toArray",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}},{key:"fromBufferAttribute",value:function(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}},{key:"toJSON",value:function(){return this.getHex()}},{key:Symbol.iterator,value:S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.r;case 2:return e.next=4,this.g;case 4:return e.next=6,this.b;case 6:case"end":return e.stop()}}),e,this)}))}])}(),kp=new wp;wp.NAMES=gp;var _p=0,xp=function(e){function t(){var e;return c()(this,t),(e=au(this,t)).isMaterial=!0,Object.defineProperty(ou()(e),"id",{value:_p++}),e.uuid=Su(),e.name="",e.type="Material",e.blending=1,e.side=0,e.vertexColors=!1,e.opacity=1,e.transparent=!1,e.alphaHash=!1,e.blendSrc=204,e.blendDst=205,e.blendEquation=100,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.blendColor=new wp(0,0,0),e.blendAlpha=0,e.depthFunc=3,e.depthTest=!0,e.depthWrite=!0,e.stencilWriteMask=255,e.stencilFunc=519,e.stencilRef=0,e.stencilFuncMask=255,e.stencilFail=yu,e.stencilZFail=yu,e.stencilZPass=yu,e.stencilWrite=!1,e.clippingPlanes=null,e.clipIntersection=!1,e.clipShadows=!1,e.shadowSide=null,e.colorWrite=!0,e.precision=null,e.polygonOffset=!1,e.polygonOffsetFactor=0,e.polygonOffsetUnits=0,e.dithering=!1,e.alphaToCoverage=!1,e.premultipliedAlpha=!1,e.forceSinglePass=!1,e.visible=!0,e.toneMapped=!0,e.userData={},e.version=0,e._alphaTest=0,e}return Me()(t,e),h()(t,[{key:"alphaTest",get:function(){return this._alphaTest},set:function(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}},{key:"onBuild",value:function(){}},{key:"onBeforeRender",value:function(){}},{key:"onBeforeCompile",value:function(){}},{key:"customProgramCacheKey",value:function(){return this.onBeforeCompile.toString()}},{key:"setValues",value:function(e){if(void 0!==e)for(var t in e){var i=e[t];if(void 0!==i){var n=this[t];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i:console.warn("THREE.Material: '".concat(t,"' is not a property of THREE.").concat(this.type,"."))}else console.warn("THREE.Material: parameter '".concat(t,"' has value of undefined."))}}},{key:"toJSON",value:function(e){var t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});var i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function n(e){var t=[];for(var i in e){var n=e[i];delete n.metadata,t.push(n)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(i.dispersion=this.dispersion),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(i.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapRotation&&(i.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),!0===this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=!0),204!==this.blendSrc&&(i.blendSrc=this.blendSrc),205!==this.blendDst&&(i.blendDst=this.blendDst),100!==this.blendEquation&&(i.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(i.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(i.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(i.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(i.depthFunc=this.depthFunc),!1===this.depthTest&&(i.depthTest=this.depthTest),!1===this.depthWrite&&(i.depthWrite=this.depthWrite),!1===this.colorWrite&&(i.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(i.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==yu&&(i.stencilFail=this.stencilFail),this.stencilZFail!==yu&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==yu&&(i.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(i.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaHash&&(i.alphaHash=!0),!0===this.alphaToCoverage&&(i.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=!0),!0===this.forceSinglePass&&(i.forceSinglePass=!0),!0===this.wireframe&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=!0),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){var o=n(e.textures),s=n(e.images);o.length>0&&(i.textures=o),s.length>0&&(i.images=s)}return i}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;var t=e.clippingPlanes,i=null;if(null!==t){var n=t.length;i=new Array(n);for(var o=0;o!==n;++o)i[o]=t[o].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}},{key:"dispose",value:function(){this.dispatchEvent({type:"dispose"})}},{key:"needsUpdate",set:function(e){!0===e&&this.version++}}])}(ku),Sp=function(e){function t(e){var i;return c()(this,t),(i=au(this,t)).isMeshBasicMaterial=!0,i.type="MeshBasicMaterial",i.color=new wp(16777215),i.map=null,i.lightMap=null,i.lightMapIntensity=1,i.aoMap=null,i.aoMapIntensity=1,i.specularMap=null,i.alphaMap=null,i.envMap=null,i.envMapRotation=new Vh,i.combine=0,i.reflectivity=1,i.refractionRatio=.98,i.wireframe=!1,i.wireframeLinewidth=1,i.wireframeLinecap="round",i.wireframeLinejoin="round",i.fog=!0,i.setValues(e),i}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}])}(xp);!function(){for(var e=new ArrayBuffer(4),t=new Float32Array(e),i=new Uint32Array(e),n=new Uint32Array(512),o=new Uint32Array(512),s=0;s<256;++s){var a=s-127;a<-27?(n[s]=0,n[256|s]=32768,o[s]=24,o[256|s]=24):a<-14?(n[s]=1024>>-a-14,n[256|s]=1024>>-a-14|32768,o[s]=-a-1,o[256|s]=-a-1):a<=15?(n[s]=a+15<<10,n[256|s]=a+15<<10|32768,o[s]=13,o[256|s]=13):a<128?(n[s]=31744,n[256|s]=64512,o[s]=24,o[256|s]=24):(n[s]=31744,n[256|s]=64512,o[s]=13,o[256|s]=13)}for(var r=new Uint32Array(2048),l=new Uint32Array(64),c=new Uint32Array(64),u=1;u<1024;++u){for(var h=u<<13,p=0;0==(8388608&h);)h<<=1,p-=8388608;h&=-8388609,p+=947912704,r[u]=h|p}for(var d=1024;d<2048;++d)r[d]=939524096+(d-1024<<13);for(var m=1;m<31;++m)l[m]=m<<23;l[31]=1199570944,l[32]=2147483648;for(var f=33;f<63;++f)l[f]=2147483648+(f-32<<23);l[63]=3347054592;for(var v=1;v<64;++v)32!==v&&(c[v]=1024)}();var Ep=new ih,Pp=new Tu,Dp=function(){return h()((function e(t,i){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(c()(this,e),Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=i,this.count=void 0!==t?t.length/i:0,this.normalized=n,this.usage=bu,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=1015,this.version=0}),[{key:"onUploadCallback",value:function(){}},{key:"needsUpdate",set:function(e){!0===e&&this.version++}},{key:"updateRange",get:function(){return Iu("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}},{key:"setUsage",value:function(e){return this.usage=e,this}},{key:"addUpdateRange",value:function(e,t){this.updateRanges.push({start:e,count:t})}},{key:"clearUpdateRanges",value:function(){this.updateRanges.length=0}},{key:"copy",value:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}},{key:"copyAt",value:function(e,t,i){e*=this.itemSize,i*=t.itemSize;for(var n=0,o=this.itemSize;n1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(e,t),this}},{key:"getComponent",value:function(e,t){var i=this.array[e*this.itemSize+t];return this.normalized&&(i=Ou(i,this.array)),i}},{key:"setComponent",value:function(e,t,i){return this.normalized&&(i=Mu(i,this.array)),this.array[e*this.itemSize+t]=i,this}},{key:"getX",value:function(e){var t=this.array[e*this.itemSize];return this.normalized&&(t=Ou(t,this.array)),t}},{key:"setX",value:function(e,t){return this.normalized&&(t=Mu(t,this.array)),this.array[e*this.itemSize]=t,this}},{key:"getY",value:function(e){var t=this.array[e*this.itemSize+1];return this.normalized&&(t=Ou(t,this.array)),t}},{key:"setY",value:function(e,t){return this.normalized&&(t=Mu(t,this.array)),this.array[e*this.itemSize+1]=t,this}},{key:"getZ",value:function(e){var t=this.array[e*this.itemSize+2];return this.normalized&&(t=Ou(t,this.array)),t}},{key:"setZ",value:function(e,t){return this.normalized&&(t=Mu(t,this.array)),this.array[e*this.itemSize+2]=t,this}},{key:"getW",value:function(e){var t=this.array[e*this.itemSize+3];return this.normalized&&(t=Ou(t,this.array)),t}},{key:"setW",value:function(e,t){return this.normalized&&(t=Mu(t,this.array)),this.array[e*this.itemSize+3]=t,this}},{key:"setXY",value:function(e,t,i){return e*=this.itemSize,this.normalized&&(t=Mu(t,this.array),i=Mu(i,this.array)),this.array[e+0]=t,this.array[e+1]=i,this}},{key:"setXYZ",value:function(e,t,i,n){return e*=this.itemSize,this.normalized&&(t=Mu(t,this.array),i=Mu(i,this.array),n=Mu(n,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this}},{key:"setXYZW",value:function(e,t,i,n,o){return e*=this.itemSize,this.normalized&&(t=Mu(t,this.array),i=Mu(i,this.array),n=Mu(n,this.array),o=Mu(o,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this.array[e+3]=o,this}},{key:"onUpload",value:function(e){return this.onUploadCallback=e,this}},{key:"clone",value:function(){return new this.constructor(this.array,this.itemSize).copy(this)}},{key:"toJSON",value:function(){var e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),this.usage!==bu&&(e.usage=this.usage),e}}])}(),Op=function(e){function t(e,i,n){return c()(this,t),au(this,t,[new Uint16Array(e),i,n])}return Me()(t,e),h()(t)}(Dp),Mp=function(e){function t(e,i,n){return c()(this,t),au(this,t,[new Uint32Array(e),i,n])}return Me()(t,e),h()(t)}(Dp),Tp=function(e){function t(e,i,n){return c()(this,t),au(this,t,[new Float32Array(e),i,n])}return Me()(t,e),h()(t)}(Dp),Np=0,Bp=new Nh,jp=new sp,Ap=new ih,Lp=new sh,Ip=new sh,Rp=new ih,zp=function(e){function t(){var e;return c()(this,t),(e=au(this,t)).isBufferGeometry=!0,Object.defineProperty(ou()(e),"id",{value:Np++}),e.uuid=Su(),e.name="",e.type="BufferGeometry",e.index=null,e.attributes={},e.morphAttributes={},e.morphTargetsRelative=!1,e.groups=[],e.boundingBox=null,e.boundingSphere=null,e.drawRange={start:0,count:1/0},e.userData={},e}return Me()(t,e),h()(t,[{key:"getIndex",value:function(){return this.index}},{key:"setIndex",value:function(e){return Array.isArray(e)?this.index=new(ju(e)?Mp:Op)(e,1):this.index=e,this}},{key:"getAttribute",value:function(e){return this.attributes[e]}},{key:"setAttribute",value:function(e,t){return this.attributes[e]=t,this}},{key:"deleteAttribute",value:function(e){return delete this.attributes[e],this}},{key:"hasAttribute",value:function(e){return void 0!==this.attributes[e]}},{key:"addGroup",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.groups.push({start:e,count:t,materialIndex:i})}},{key:"clearGroups",value:function(){this.groups=[]}},{key:"setDrawRange",value:function(e,t){this.drawRange.start=e,this.drawRange.count=t}},{key:"applyMatrix4",value:function(e){var t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);var i=this.attributes.normal;if(void 0!==i){var n=(new Nu).getNormalMatrix(e);i.applyNormalMatrix(n),i.needsUpdate=!0}var o=this.attributes.tangent;return void 0!==o&&(o.transformDirection(e),o.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}},{key:"applyQuaternion",value:function(e){return Bp.makeRotationFromQuaternion(e),this.applyMatrix4(Bp),this}},{key:"rotateX",value:function(e){return Bp.makeRotationX(e),this.applyMatrix4(Bp),this}},{key:"rotateY",value:function(e){return Bp.makeRotationY(e),this.applyMatrix4(Bp),this}},{key:"rotateZ",value:function(e){return Bp.makeRotationZ(e),this.applyMatrix4(Bp),this}},{key:"translate",value:function(e,t,i){return Bp.makeTranslation(e,t,i),this.applyMatrix4(Bp),this}},{key:"scale",value:function(e,t,i){return Bp.makeScale(e,t,i),this.applyMatrix4(Bp),this}},{key:"lookAt",value:function(e){return jp.lookAt(e),jp.updateMatrix(),this.applyMatrix4(jp.matrix),this}},{key:"center",value:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ap).negate(),this.translate(Ap.x,Ap.y,Ap.z),this}},{key:"setFromPoints",value:function(e){for(var t=[],i=0,n=e.length;i0&&(e.userData=this.userData),void 0!==this.parameters){var t=this.parameters;for(var i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};var n=this.index;null!==n&&(e.data.index={type:n.array.constructor.name,array:Array.prototype.slice.call(n.array)});var o=this.attributes;for(var s in o){var a=o[s];e.data.attributes[s]=a.toJSON(e.data)}var r={},l=!1;for(var c in this.morphAttributes){for(var u=this.morphAttributes[c],h=[],p=0,d=u.length;p0&&(r[c]=h,l=!0)}l&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);var f=this.groups;f.length>0&&(e.data.groups=JSON.parse(JSON.stringify(f)));var v=this.boundingSphere;return null!==v&&(e.data.boundingSphere={center:v.center.toArray(),radius:v.radius}),e}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;var t={};this.name=e.name;var i=e.index;null!==i&&this.setIndex(i.clone(t));var n=e.attributes;for(var o in n){var s=n[o];this.setAttribute(o,s.clone(t))}var a=e.morphAttributes;for(var r in a){for(var l=[],c=a[r],u=0,h=c.length;u0&&void 0!==arguments[0]?arguments[0]:new zp,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Sp;return c()(this,t),(e=au(this,t)).isMesh=!0,e.type="Mesh",e.geometry=i,e.material=n,e.updateMorphTargets(),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e,i){return su(t,"copy",this,3)([e,i]),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}},{key:"updateMorphTargets",value:function(){var e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){var i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var n=0,o=i.length;nMath.pow(e.far-e.near,2))return}Fp.copy(o).invert(),Hp.copy(e.ray).applyMatrix4(Fp),null!==i.boundingBox&&!1===Hp.intersectsBox(i.boundingBox)||this._computeIntersections(e,t,Hp)}}},{key:"_computeIntersections",value:function(e,t,i){var n,o=this.geometry,s=this.material,a=o.index,r=o.attributes.position,l=o.attributes.uv,c=o.attributes.uv1,u=o.attributes.normal,h=o.groups,p=o.drawRange;if(null!==a)if(Array.isArray(s))for(var d=0,m=h.length;di.far?null:{distance:l,point:id.clone(),object:e}}(e,t,i,n,Wp,Up,Yp,td);if(u){o&&(Xp.fromBufferAttribute(o,r),Zp.fromBufferAttribute(o,l),Kp.fromBufferAttribute(o,c),u.uv=vp.getInterpolation(td,Wp,Up,Yp,Xp,Zp,Kp,new Tu)),s&&(Xp.fromBufferAttribute(s,r),Zp.fromBufferAttribute(s,l),Kp.fromBufferAttribute(s,c),u.uv1=vp.getInterpolation(td,Wp,Up,Yp,Xp,Zp,Kp,new Tu)),a&&(Qp.fromBufferAttribute(a,r),$p.fromBufferAttribute(a,l),ed.fromBufferAttribute(a,c),u.normal=vp.getInterpolation(td,Wp,Up,Yp,Qp,$p,ed,new ih),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));var h={a:r,b:l,c:c,normal:new ih,materialIndex:0};vp.getNormal(Wp,Up,Yp,h.normal),u.face=h}return u}var sd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;c()(this,t),(e=au(this,t)).type="BoxGeometry",e.parameters={width:i,height:n,depth:o,widthSegments:s,heightSegments:a,depthSegments:r};var l=e;s=Math.floor(s),a=Math.floor(a),r=Math.floor(r);var u=[],h=[],p=[],d=[],m=0,f=0;function v(e,t,i,n,o,s,a,r,c,v,g){for(var y=s/c,b=a/v,C=s/2,w=a/2,k=r/2,_=c+1,x=v+1,S=0,E=0,P=new ih,D=0;D0?1:-1,p.push(P.x,P.y,P.z),d.push(M/c),d.push(1-D/v),S+=1}for(var N=0;N0&&void 0!==arguments[0]?arguments[0]:new ih(1,0,0),i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;c()(this,e),this.isPlane=!0,this.normal=t,this.constant=i}),[{key:"set",value:function(e,t){return this.normal.copy(e),this.constant=t,this}},{key:"setComponents",value:function(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}},{key:"setFromNormalAndCoplanarPoint",value:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}},{key:"setFromCoplanarPoints",value:function(e,t,i){var n=ud.subVectors(i,t).cross(hd.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}},{key:"copy",value:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this}},{key:"normalize",value:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}},{key:"negate",value:function(){return this.constant*=-1,this.normal.negate(),this}},{key:"distanceToPoint",value:function(e){return this.normal.dot(e)+this.constant}},{key:"distanceToSphere",value:function(e){return this.distanceToPoint(e.center)-e.radius}},{key:"projectPoint",value:function(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}},{key:"intersectLine",value:function(e,t){var i=e.delta(ud),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;var o=-(e.start.dot(this.normal)+this.constant)/n;return o<0||o>1?null:t.copy(e.start).addScaledVector(i,o)}},{key:"intersectsLine",value:function(e){var t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}},{key:"intersectsBox",value:function(e){return e.intersectsPlane(this)}},{key:"intersectsSphere",value:function(e){return e.intersectsPlane(this)}},{key:"coplanarPoint",value:function(e){return e.copy(this.normal).multiplyScalar(-this.constant)}},{key:"applyMatrix4",value:function(e,t){var i=t||pd.getNormalMatrix(e),n=this.coplanarPoint(ud).applyMatrix4(e),o=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(o),this}},{key:"translate",value:function(e){return this.constant-=e.dot(this.normal),this}},{key:"equals",value:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}},{key:"clone",value:function(){return(new this.constructor).copy(this)}}])}(),md=new _h,fd=new ih,vd=function(){return h()((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new dd,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new dd,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new dd,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new dd,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:new dd,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:new dd;c()(this,e),this.planes=[t,i,n,o,s,a]}),[{key:"set",value:function(e,t,i,n,o,s){var a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(n),a[4].copy(o),a[5].copy(s),this}},{key:"copy",value:function(e){for(var t=this.planes,i=0;i<6;i++)t[i].copy(e.planes[i]);return this}},{key:"setFromProjectionMatrix",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3,i=this.planes,n=e.elements,o=n[0],s=n[1],a=n[2],r=n[3],l=n[4],c=n[5],u=n[6],h=n[7],p=n[8],d=n[9],m=n[10],f=n[11],v=n[12],g=n[13],y=n[14],b=n[15];if(i[0].setComponents(r-o,h-l,f-p,b-v).normalize(),i[1].setComponents(r+o,h+l,f+p,b+v).normalize(),i[2].setComponents(r+s,h+c,f+d,b+g).normalize(),i[3].setComponents(r-s,h-c,f-d,b-g).normalize(),i[4].setComponents(r-a,h-u,f-m,b-y).normalize(),t===Cu)i[5].setComponents(r+a,h+u,f+m,b+y).normalize();else{if(t!==wu)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);i[5].setComponents(a,u,m,y).normalize()}return this}},{key:"intersectsObject",value:function(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),md.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{var t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),md.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(md)}},{key:"intersectsSprite",value:function(e){return md.center.set(0,0,0),md.radius=.7071067811865476,md.applyMatrix4(e.matrixWorld),this.intersectsSphere(md)}},{key:"intersectsSphere",value:function(e){for(var t=this.planes,i=e.center,n=-e.radius,o=0;o<6;o++)if(t[o].distanceToPoint(i)0?e.max.x:e.min.x,fd.y=n.normal.y>0?e.max.y:e.min.y,fd.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(fd)<0)return!1}return!0}},{key:"containsPoint",value:function(e){for(var t=this.planes,i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}},{key:"clone",value:function(){return(new this.constructor).copy(this)}}])}();var gd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;c()(this,t),(e=au(this,t)).type="PlaneGeometry",e.parameters={width:i,height:n,widthSegments:o,heightSegments:s};for(var a=i/2,r=n/2,l=Math.floor(o),u=Math.floor(s),h=l+1,p=u+1,d=i/l,m=n/u,f=[],v=[],g=[],y=[],b=0;b 0\n\tvec4 plane;\n\t#ifdef ALPHA_TO_COVERAGE\n\t\tfloat distanceToPlane, distanceGradient;\n\t\tfloat clipOpacity = 1.0;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\tif ( clipOpacity == 0.0 ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tfloat unionClipOpacity = 1.0;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\n\t\t#endif\n\t\tdiffuseColor.a *= clipOpacity;\n\t\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tbool clipped = true;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tif ( clipped ) discard;\n\t\t#endif\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n\tmat3 bm = mat3( batchingMatrix );\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n\ttransformedNormal = bm * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = bm * transformedTangent;\n\t#endif\n#endif\n#ifdef USE_INSTANCING\n\tmat3 im = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n\ttransformedNormal = im * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = im * transformedTangent;\n\t#endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform mat3 envMapRotation;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n\tmaterial.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tif( material.anisotropy == 0.0 ) {\n\t\tanisotropyV = vec2( 1.0, 0.0 );\n\t} else {\n\t\tanisotropyV /= material.anisotropy;\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\n\t}\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\tfloat dispersion;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF )\n\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\tvFragDepth = 1.0 + gl_Position.w;\n\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n\tfloat morphTargetInfluences[MORPHTARGETS_COUNT];\n\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n\t}\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_INSTANCING_MORPH\n\t\tuniform float morphTargetBaseInfluence;\n\t#endif\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\t#ifndef USE_INSTANCING_MORPH\n\t\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\t#endif\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n\tmvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tfloat shadow = 1.0;\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\t\n\t\tfloat lightToPositionLength = length( lightToPosition );\n\t\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n\t\t\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\t\tdp += shadowBias;\n\t\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\t\tshadow = (\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t\t) * ( 1.0 / 9.0 );\n\t\t\t#else\n\t\t\t\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tint size = textureSize( boneTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor *= toneMappingExposure;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor = AgXInsetMatrix * color;\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n\tcolor = clamp( color, 0.0, 1.0 );\n\tcolor = agxDefaultContrastApprox( color );\n\tcolor = AgXOutsetMatrix * color;\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n\tcolor = clamp( color, 0.0, 1.0 );\n\treturn color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n\tconst float StartCompression = 0.8 - 0.04;\n\tconst float Desaturation = 0.15;\n\tcolor *= toneMappingExposure;\n\tfloat x = min( color.r, min( color.g, color.b ) );\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max( color.r, max( color.g, color.b ) );\n\tif ( peak < StartCompression ) return color;\n\tfloat d = 1. - StartCompression;\n\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n\treturn mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec4 transmittedLight;\n\t\tvec3 transmittance;\n\t\t#ifdef USE_DISPERSION\n\t\t\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n\t\t\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n\t\t\tfor ( int i = 0; i < 3; i ++ ) {\n\t\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n\t\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\n\t\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\t\trefractionCoords += 1.0;\n\t\t\t\trefractionCoords /= 2.0;\n\t\t\n\t\t\t\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n\t\t\t\ttransmittedLight[ i ] = transmissionSample[ i ];\n\t\t\t\ttransmittedLight.a += transmissionSample.a;\n\t\t\t\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n\t\t\t}\n\t\t\ttransmittedLight.a /= 3.0;\n\t\t\n\t\t#else\n\t\t\n\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\trefractionCoords += 1.0;\n\t\t\trefractionCoords /= 2.0;\n\t\t\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\t\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\t\n\t\t#endif\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_BATCHING\n\t\tworldPosition = batchingMatrix * worldPosition;\n\t#endif\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n\tuniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},bd={common:{diffuse:{value:new wp(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Nu},alphaMap:{value:null},alphaMapTransform:{value:new Nu},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Nu}},envmap:{envMap:{value:null},envMapRotation:{value:new Nu},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Nu}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Nu}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Nu},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Nu},normalScale:{value:new Tu(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Nu},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Nu}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Nu}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Nu}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new wp(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new wp(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Nu},alphaTest:{value:0},uvTransform:{value:new Nu}},sprite:{diffuse:{value:new wp(16777215)},opacity:{value:1},center:{value:new Tu(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Nu},alphaMap:{value:null},alphaMapTransform:{value:new Nu},alphaTest:{value:0}}},Cd={basic:{uniforms:rd([bd.common,bd.specularmap,bd.envmap,bd.aomap,bd.lightmap,bd.fog]),vertexShader:yd.meshbasic_vert,fragmentShader:yd.meshbasic_frag},lambert:{uniforms:rd([bd.common,bd.specularmap,bd.envmap,bd.aomap,bd.lightmap,bd.emissivemap,bd.bumpmap,bd.normalmap,bd.displacementmap,bd.fog,bd.lights,{emissive:{value:new wp(0)}}]),vertexShader:yd.meshlambert_vert,fragmentShader:yd.meshlambert_frag},phong:{uniforms:rd([bd.common,bd.specularmap,bd.envmap,bd.aomap,bd.lightmap,bd.emissivemap,bd.bumpmap,bd.normalmap,bd.displacementmap,bd.fog,bd.lights,{emissive:{value:new wp(0)},specular:{value:new wp(1118481)},shininess:{value:30}}]),vertexShader:yd.meshphong_vert,fragmentShader:yd.meshphong_frag},standard:{uniforms:rd([bd.common,bd.envmap,bd.aomap,bd.lightmap,bd.emissivemap,bd.bumpmap,bd.normalmap,bd.displacementmap,bd.roughnessmap,bd.metalnessmap,bd.fog,bd.lights,{emissive:{value:new wp(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:yd.meshphysical_vert,fragmentShader:yd.meshphysical_frag},toon:{uniforms:rd([bd.common,bd.aomap,bd.lightmap,bd.emissivemap,bd.bumpmap,bd.normalmap,bd.displacementmap,bd.gradientmap,bd.fog,bd.lights,{emissive:{value:new wp(0)}}]),vertexShader:yd.meshtoon_vert,fragmentShader:yd.meshtoon_frag},matcap:{uniforms:rd([bd.common,bd.bumpmap,bd.normalmap,bd.displacementmap,bd.fog,{matcap:{value:null}}]),vertexShader:yd.meshmatcap_vert,fragmentShader:yd.meshmatcap_frag},points:{uniforms:rd([bd.points,bd.fog]),vertexShader:yd.points_vert,fragmentShader:yd.points_frag},dashed:{uniforms:rd([bd.common,bd.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:yd.linedashed_vert,fragmentShader:yd.linedashed_frag},depth:{uniforms:rd([bd.common,bd.displacementmap]),vertexShader:yd.depth_vert,fragmentShader:yd.depth_frag},normal:{uniforms:rd([bd.common,bd.bumpmap,bd.normalmap,bd.displacementmap,{opacity:{value:1}}]),vertexShader:yd.meshnormal_vert,fragmentShader:yd.meshnormal_frag},sprite:{uniforms:rd([bd.sprite,bd.fog]),vertexShader:yd.sprite_vert,fragmentShader:yd.sprite_frag},background:{uniforms:{uvTransform:{value:new Nu},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:yd.background_vert,fragmentShader:yd.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Nu}},vertexShader:yd.backgroundCube_vert,fragmentShader:yd.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:yd.cube_vert,fragmentShader:yd.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:yd.equirect_vert,fragmentShader:yd.equirect_frag},distanceRGBA:{uniforms:rd([bd.common,bd.displacementmap,{referencePosition:{value:new ih},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:yd.distanceRGBA_vert,fragmentShader:yd.distanceRGBA_frag},shadow:{uniforms:rd([bd.lights,bd.fog,{color:{value:new wp(0)},opacity:{value:1}}]),vertexShader:yd.shadow_vert,fragmentShader:yd.shadow_frag}};Cd.physical={uniforms:rd([Cd.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Nu},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Nu},clearcoatNormalScale:{value:new Tu(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Nu},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Nu},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Nu},sheen:{value:0},sheenColor:{value:new wp(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Nu},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Nu},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Nu},transmissionSamplerSize:{value:new Tu},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Nu},attenuationDistance:{value:0},attenuationColor:{value:new wp(0)},specularColor:{value:new wp(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Nu},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Nu},anisotropyVector:{value:new Tu},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Nu}}]),vertexShader:yd.meshphysical_vert,fragmentShader:yd.meshphysical_frag};new Vh,new Nh;var wd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.1,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:2e3;return c()(this,t),(e=au(this,t)).isOrthographicCamera=!0,e.type="OrthographicCamera",e.zoom=1,e.view=null,e.left=i,e.right=n,e.top=o,e.bottom=s,e.near=a,e.far=r,e.updateProjectionMatrix(),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e,i){return su(t,"copy",this,3)([e,i]),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}},{key:"setViewOffset",value:function(e,t,i,n,o,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=o,this.view.height=s,this.updateProjectionMatrix()}},{key:"clearViewOffset",value:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}},{key:"updateProjectionMatrix",value:function(){var e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2,o=i-e,s=i+e,a=n+t,r=n-t;if(null!==this.view&&this.view.enabled){var l=(this.right-this.left)/this.view.fullWidth/this.zoom,c=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s=(o+=l*this.view.offsetX)+l*this.view.width,r=(a-=c*this.view.offsetY)-c*this.view.height}this.projectionMatrix.makeOrthographic(o,s,a,r,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}},{key:"toJSON",value:function(e){var i=su(t,"toJSON",this,3)([e]);return i.object.zoom=this.zoom,i.object.left=this.left,i.object.right=this.right,i.object.top=this.top,i.object.bottom=this.bottom,i.object.near=this.near,i.object.far=this.far,null!==this.view&&(i.object.view=Object.assign({},this.view)),i}}])}(ld),kd=(new wd,new wp,(1+Math.sqrt(5))/2),_d=1/kd;new ih(-kd,_d,0),new ih(kd,_d,0),new ih(-_d,0,kd),new ih(_d,0,kd),new ih(0,kd,-_d),new ih(0,kd,_d),new ih(-1,1,-1),new ih(1,1,-1),new ih(-1,1,1),new ih(1,1,1);var xd=function(e){function t(e,i,n,o,s,a,r,l,u,h){var p;if(c()(this,t),1026!==(h=void 0!==h?h:1026)&&1027!==h)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");return void 0===n&&1026===h&&(n=ru),void 0===n&&1027===h&&(n=lu),(p=au(this,t,[null,o,s,a,r,l,h,n,u])).isDepthTexture=!0,p.image={width:e,height:i},p.magFilter=void 0!==r?r:1003,p.minFilter=void 0!==l?l:1003,p.flipY=!1,p.generateMipmaps=!1,p.compareFunction=null,p}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.compareFunction=e.compareFunction,this}},{key:"toJSON",value:function(e){var i=su(t,"toJSON",this,3)([e]);return null!==this.compareFunction&&(i.compareFunction=this.compareFunction),i}}])}(Ku),Sd=(new Ku,new xd(1,1));Sd.compareFunction=515;new $u,new eh,new cd,new Float32Array(16),new Float32Array(9),new Float32Array(4);new Map;new Vh,new Nh;new ih,new ih,new ih,new ih,new Tu,new Tu,new Nh,new ih,new ih,new ih,new Tu,new Tu,new Tu;new ih,new ih,new ih,new Qu,new Qu,new ih,new Nh,new ih,new _h,new Nh,new Th,new Nh,new Nh,new Nh,new Nh,new sh,new Nh,new nd,new _h;var Ed=function(){return h()((function e(){c()(this,e),this.index=0,this.pool=[],this.list=[]}),[{key:"push",value:function(e,t){var i=this.pool,n=this.list;this.index>=i.length&&i.push({start:-1,count:-1,z:-1});var o=i[this.index];n.push(o),this.index++,o.start=e.start,o.count=e.count,o.z=t}},{key:"reset",value:function(){this.list.length=0,this.index=0}}])}();new Nh,new Nh,new Nh,new Nh,new vd,new sh,new _h,new ih,new Ed,new nd;new ih,new ih,new Nh,new Th,new _h,new ih,new ih;new ih,new ih,new Nh,new Th,new _h,new ih;var Pd=function(){return h()((function e(){c()(this,e),this.type="Curve",this.arcLengthDivisions=200}),[{key:"getPoint",value:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}},{key:"getPointAt",value:function(e,t){var i=this.getUtoTmapping(e);return this.getPoint(i,t)}},{key:"getPoints",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=[],i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}},{key:"getSpacedPoints",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=[],i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}},{key:"getLength",value:function(){var e=this.getLengths();return e[e.length-1]}},{key:"getLengths",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.arcLengthDivisions;if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,i=[],n=this.getPoint(0),o=0;i.push(0);for(var s=1;s<=e;s++)o+=(t=this.getPoint(s/e)).distanceTo(n),i.push(o),n=t;return this.cacheArcLengths=i,i}},{key:"updateArcLengths",value:function(){this.needsUpdate=!0,this.getLengths()}},{key:"getUtoTmapping",value:function(e,t){var i,n=this.getLengths(),o=0,s=n.length;i=t||e*n[s-1];for(var a,r=0,l=s-1;r<=l;)if((a=n[o=Math.floor(r+(l-r)/2)]-i)<0)r=o+1;else{if(!(a>0)){l=o;break}l=o-1}if(n[o=l]===i)return o/(s-1);var c=n[o];return(o+(i-c)/(n[o+1]-c))/(s-1)}},{key:"getTangent",value:function(e,t){var i=1e-4,n=e-i,o=e+i;n<0&&(n=0),o>1&&(o=1);var s=this.getPoint(n),a=this.getPoint(o),r=t||(s.isVector2?new Tu:new ih);return r.copy(a).sub(s).normalize(),r}},{key:"getTangentAt",value:function(e,t){var i=this.getUtoTmapping(e);return this.getTangent(i,t)}},{key:"computeFrenetFrames",value:function(e,t){for(var i=new ih,n=[],o=[],s=[],a=new ih,r=new Nh,l=0;l<=e;l++){var c=l/e;n[l]=this.getTangentAt(c,new ih)}o[0]=new ih,s[0]=new ih;var u=Number.MAX_VALUE,h=Math.abs(n[0].x),p=Math.abs(n[0].y),d=Math.abs(n[0].z);h<=u&&(u=h,i.set(1,0,0)),p<=u&&(u=p,i.set(0,1,0)),d<=u&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),o[0].crossVectors(n[0],a),s[0].crossVectors(n[0],o[0]);for(var m=1;m<=e;m++){if(o[m]=o[m-1].clone(),s[m]=s[m-1].clone(),a.crossVectors(n[m-1],n[m]),a.length()>Number.EPSILON){a.normalize();var f=Math.acos(Eu(n[m-1].dot(n[m]),-1,1));o[m].applyMatrix4(r.makeRotationAxis(a,f))}s[m].crossVectors(n[m],o[m])}if(!0===t){var v=Math.acos(Eu(o[0].dot(o[e]),-1,1));v/=e,n[0].dot(a.crossVectors(o[0],o[e]))>0&&(v=-v);for(var g=1;g<=e;g++)o[g].applyMatrix4(r.makeRotationAxis(n[g],v*g)),s[g].crossVectors(n[g],o[g])}return{tangents:n,normals:o,binormals:s}}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},{key:"toJSON",value:function(){var e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}},{key:"fromJSON",value:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}])}(),Dd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:2*Math.PI,l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:0;return c()(this,t),(e=au(this,t)).isEllipseCurve=!0,e.type="EllipseCurve",e.aX=i,e.aY=n,e.xRadius=o,e.yRadius=s,e.aStartAngle=a,e.aEndAngle=r,e.aClockwise=l,e.aRotation=u,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,i=t,n=2*Math.PI,o=this.aEndAngle-this.aStartAngle,s=Math.abs(o)n;)o-=n;o0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"centripetal",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;return c()(this,t),(e=au(this,t)).isCatmullRomCurve3=!0,e.type="CatmullRomCurve3",e.points=i,e.closed=n,e.curveType=o,e.tension=s,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t,i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,o=n,s=this.points,a=s.length,r=(a-(this.closed?0:1))*e,l=Math.floor(r),c=r-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/a)+1)*a:0===c&&l===a-1&&(l=a-2,c=1),this.closed||l>0?t=s[(l-1)%a]:(Td.subVectors(s[0],s[1]).add(s[0]),t=Td);var u=s[l%a],h=s[(l+1)%a];if(this.closed||l+20&&void 0!==arguments[0]?arguments[0]:new Tu,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Tu,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Tu;return c()(this,t),(e=au(this,t)).isCubicBezierCurve=!0,e.type="CubicBezierCurve",e.v0=i,e.v1=n,e.v2=o,e.v3=s,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,i=t,n=this.v0,o=this.v1,s=this.v2,a=this.v3;return i.set(Rd(e,n.x,o.x,s.x,a.x),Rd(e,n.y,o.y,s.y,a.y)),i}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}])}(Pd),Fd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new ih,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new ih;return c()(this,t),(e=au(this,t)).isCubicBezierCurve3=!0,e.type="CubicBezierCurve3",e.v0=i,e.v1=n,e.v2=o,e.v3=s,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,i=t,n=this.v0,o=this.v1,s=this.v2,a=this.v3;return i.set(Rd(e,n.x,o.x,s.x,a.x),Rd(e,n.y,o.y,s.y,a.y),Rd(e,n.z,o.z,s.z,a.z)),i}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}])}(Pd),Hd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Tu,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu;return c()(this,t),(e=au(this,t)).isLineCurve=!0,e.type="LineCurve",e.v1=i,e.v2=n,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,i=t;return 1===e?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}},{key:"getPointAt",value:function(e,t){return this.getPoint(e,t)}},{key:"getTangent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu;return t.subVectors(this.v2,this.v1).normalize()}},{key:"getTangentAt",value:function(e,t){return this.getTangent(e,t)}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v1.copy(e.v1),this.v2.copy(e.v2),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}])}(Pd),Vd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih;return c()(this,t),(e=au(this,t)).isLineCurve3=!0,e.type="LineCurve3",e.v1=i,e.v2=n,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,i=t;return 1===e?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}},{key:"getPointAt",value:function(e,t){return this.getPoint(e,t)}},{key:"getTangent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih;return t.subVectors(this.v2,this.v1).normalize()}},{key:"getTangentAt",value:function(e,t){return this.getTangent(e,t)}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v1.copy(e.v1),this.v2.copy(e.v2),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}])}(Pd),Gd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Tu,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Tu;return c()(this,t),(e=au(this,t)).isQuadraticBezierCurve=!0,e.type="QuadraticBezierCurve",e.v0=i,e.v1=n,e.v2=o,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,i=t,n=this.v0,o=this.v1,s=this.v2;return i.set(Id(e,n.x,o.x,s.x),Id(e,n.y,o.y,s.y)),i}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}])}(Pd),Wd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new ih,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new ih;return c()(this,t),(e=au(this,t)).isQuadraticBezierCurve3=!0,e.type="QuadraticBezierCurve3",e.v0=i,e.v1=n,e.v2=o,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new ih,i=t,n=this.v0,o=this.v1,s=this.v2;return i.set(Id(e,n.x,o.x,s.x),Id(e,n.y,o.y,s.y),Id(e,n.z,o.z,s.z)),i}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}])}(Pd),Ud=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return c()(this,t),(e=au(this,t)).isSplineCurve=!0,e.type="SplineCurve",e.points=i,e}return Me()(t,e),h()(t,[{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Tu,i=t,n=this.points,o=(n.length-1)*e,s=Math.floor(o),a=o-s,r=n[0===s?s:s-1],l=n[s],c=n[s>n.length-2?n.length-1:s+1],u=n[s>n.length-3?n.length-1:s+2];return i.set(Ld(a,r.x,l.x,c.x,u.x),Ld(a,r.y,l.y,c.y,u.y)),i}},{key:"copy",value:function(e){su(t,"copy",this,3)([e]),this.points=[];for(var i=0,n=e.points.length;i0){var c=l.getPoint(0);c.equals(this.currentPoint)||this.lineTo(c.x,c.y)}this.curves.push(l);var u=l.getPoint(1);return this.currentPoint.copy(u),this}},{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.currentPoint.copy(e.currentPoint),this}},{key:"toJSON",value:function(){var e=su(t,"toJSON",this,3)([]);return e.currentPoint=this.currentPoint.toArray(),e}},{key:"fromJSON",value:function(e){return su(t,"fromJSON",this,3)([e]),this.currentPoint.fromArray(e.currentPoint),this}}])}(function(e){function t(){var e;return c()(this,t),(e=au(this,t)).type="CurvePath",e.curves=[],e.autoClose=!1,e}return Me()(t,e),h()(t,[{key:"add",value:function(e){this.curves.push(e)}},{key:"closePath",value:function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(t)){var i=!0===e.isVector2?"LineCurve":"LineCurve3";this.curves.push(new Yd[i](t,e))}return this}},{key:"getPoint",value:function(e,t){for(var i=e*this.getLength(),n=this.getCurveLengths(),o=0;o=i){var s=n[o]-i,a=this.curves[o],r=a.getLength(),l=0===r?0:1-s/r;return a.getPointAt(l,t)}o++}return null}},{key:"getLength",value:function(){var e=this.getCurveLengths();return e[e.length-1]}},{key:"updateArcLengths",value:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}},{key:"getCurveLengths",value:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,i=0,n=this.curves.length;i0&&void 0!==arguments[0]?arguments[0]:40,t=[],i=0;i<=e;i++)t.push(this.getPoint(i/e));return this.autoClose&&t.push(t[0]),t}},{key:"getPoints",value:function(){for(var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,i=[],n=0,o=this.curves;n1&&!i[i.length-1].equals(i[0])&&i.push(i[0]),i}},{key:"copy",value:function(e){su(t,"copy",this,3)([e]),this.curves=[];for(var i=0,n=e.curves.length;i0&&void 0!==arguments[0]?arguments[0]:[new Tu(0,-.5),new Tu(.5,0),new Tu(0,.5)],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2*Math.PI;c()(this,t),(e=au(this,t)).type="LatheGeometry",e.parameters={points:i,segments:n,phiStart:o,phiLength:s},n=Math.floor(n),s=Eu(s,0,2*Math.PI);for(var a=[],r=[],l=[],u=[],h=[],p=1/n,d=new ih,m=new Tu,f=new ih,v=new ih,g=new ih,y=0,b=0,C=0;C<=i.length-1;C++)switch(C){case 0:y=i[C+1].x-i[C].x,b=i[C+1].y-i[C].y,f.x=1*b,f.y=-y,f.z=0*b,g.copy(f),f.normalize(),u.push(f.x,f.y,f.z);break;case i.length-1:u.push(g.x,g.y,g.z);break;default:y=i[C+1].x-i[C].x,b=i[C+1].y-i[C].y,f.x=1*b,f.y=-y,f.z=0*b,v.copy(f),f.x+=g.x,f.y+=g.y,f.z+=g.z,f.normalize(),u.push(f.x,f.y,f.z),g.copy(v)}for(var w=0;w<=n;w++)for(var k=o+w*p*s,_=Math.sin(k),x=Math.cos(k),S=0;S<=i.length-1;S++){d.x=i[S].x*_,d.y=i[S].y,d.z=i[S].x*x,r.push(d.x,d.y,d.z),m.x=w/n,m.y=S/(i.length-1),l.push(m.x,m.y);var E=u[3*S+0]*_,P=u[3*S+1],D=u[3*S+0]*x;h.push(E,P,D)}for(var O=0;O0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8;c()(this,t);var a=new Jd;return a.absarc(0,-n/2,i,1.5*Math.PI,0),a.absarc(0,n/2,i,0,.5*Math.PI),(e=au(this,t,[a.getPoints(o),s])).type="CapsuleGeometry",e.parameters={radius:i,length:n,capSegments:o,radialSegments:s},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.length,e.capSegments,e.radialSegments)}}])}(qd),Zd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2*Math.PI;c()(this,t),(e=au(this,t)).type="CircleGeometry",e.parameters={radius:i,segments:n,thetaStart:o,thetaLength:s},n=Math.max(3,n);var a=[],r=[],l=[],u=[],h=new ih,p=new Tu;r.push(0,0,0),l.push(0,0,1),u.push(.5,.5);for(var d=0,m=3;d<=n;d++,m+=3){var f=o+d/n*s;h.x=i*Math.cos(f),h.y=i*Math.sin(f),r.push(h.x,h.y,h.z),l.push(0,0,1),p.x=(r[m]/i+1)/2,p.y=(r[m+1]/i+1)/2,u.push(p.x,p.y)}for(var v=1;v<=n;v++)a.push(v,v+1,0);return e.setIndex(a),e.setAttribute("position",new Tp(r,3)),e.setAttribute("normal",new Tp(l,3)),e.setAttribute("uv",new Tp(u,2)),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.parameters=Object.assign({},e.parameters),this}}],[{key:"fromJSON",value:function(e){return new t(e.radius,e.segments,e.thetaStart,e.thetaLength)}}])}(zp),Kd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:32,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5],l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:2*Math.PI;c()(this,t),(e=au(this,t)).type="CylinderGeometry",e.parameters={radiusTop:i,radiusBottom:n,height:o,radialSegments:s,heightSegments:a,openEnded:r,thetaStart:l,thetaLength:u};var h=e;s=Math.floor(s),a=Math.floor(a);var p=[],d=[],m=[],f=[],v=0,g=[],y=o/2,b=0;function C(e){for(var t=v,o=new Tu,a=new ih,r=0,c=!0===e?i:n,g=!0===e?1:-1,C=1;C<=s;C++)d.push(0,y*g,0),m.push(0,g,0),f.push(.5,.5),v++;for(var w=v,k=0;k<=s;k++){var _=k/s*u+l,x=Math.cos(_),S=Math.sin(_);a.x=c*S,a.y=y*g,a.z=c*x,d.push(a.x,a.y,a.z),m.push(0,g,0),o.x=.5*x+.5,o.y=.5*S*g+.5,f.push(o.x,o.y),v++}for(var E=0;E0&&C(!0),n>0&&C(!1)),e.setIndex(p),e.setAttribute("position",new Tp(d,3)),e.setAttribute("normal",new Tp(m,3)),e.setAttribute("uv",new Tp(f,2)),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.parameters=Object.assign({},e.parameters),this}}],[{key:"fromJSON",value:function(e){return new t(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}])}(zp),Qd=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:32,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:2*Math.PI;return c()(this,t),(e=au(this,t,[0,i,n,o,s,a,r,l])).type="ConeGeometry",e.parameters={radius:i,height:n,radialSegments:o,heightSegments:s,openEnded:a,thetaStart:r,thetaLength:l},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}])}(Kd),$d=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;c()(this,t),(e=au(this,t)).type="PolyhedronGeometry",e.parameters={vertices:i,indices:n,radius:o,detail:s};var a=[],r=[];function l(e,t,i,n){for(var o=n+1,s=[],a=0;a<=o;a++){s[a]=[];for(var r=e.clone().lerp(i,a/o),l=t.clone().lerp(i,a/o),c=o-a,h=0;h<=c;h++)s[a][h]=0===h&&a===o?r:r.clone().lerp(l,h/c)}for(var p=0;p.9&&s<.1&&(t<.2&&(r[e+0]+=1),i<.2&&(r[e+2]+=1),n<.2&&(r[e+4]+=1))}}()}(),e.setAttribute("position",new Tp(a,3)),e.setAttribute("normal",new Tp(a.slice(),3)),e.setAttribute("uv",new Tp(r,2)),0===s?e.computeVertexNormals():e.normalizeNormals(),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.parameters=Object.assign({},e.parameters),this}}],[{key:"fromJSON",value:function(e){return new t(e.vertices,e.indices,e.radius,e.details)}}])}(zp),em=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;c()(this,t);var o=(1+Math.sqrt(5))/2,s=1/o;return(e=au(this,t,[[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-o,0,-s,o,0,s,-o,0,s,o,-s,-o,0,-s,o,0,s,-o,0,s,o,0,-o,0,-s,o,0,-s,-o,0,s,o,0,s],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],i,n])).type="DodecahedronGeometry",e.parameters={radius:i,detail:n},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.detail)}}])}($d),tm=new ih,im=new ih,nm=new ih,om=new vp,sm=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(c()(this,t),(e=au(this,t)).type="EdgesGeometry",e.parameters={geometry:i,thresholdAngle:n},null!==i){for(var o=4,s=Math.pow(10,o),a=Math.cos(xu*n),r=i.getIndex(),l=i.getAttribute("position"),u=r?r.count:l.count,h=[0,0,0],p=["a","b","c"],d=new Array(3),m={},f=[],v=0;v0)for(s=t;s=t;s-=n)a=Dm(s,e[s],e[s+1],a);return a&&km(a,a.next)&&(Om(a),a=a.next),a}function lm(e,t){if(!e)return e;t||(t=e);var i,n=e;do{if(i=!1,n.steiner||!km(n,n.next)&&0!==wm(n.prev,n,n.next))n=n.next;else{if(Om(n),(n=t=n.prev)===n.next)break;i=!0}}while(i||n!==t);return t}function cm(e,t,i,n,o,s,a){if(e){!a&&s&&function(e,t,i,n){var o=e;do{0===o.z&&(o.z=gm(o.x,o.y,t,i,n)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next}while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,function(e){var t,i,n,o,s,a,r,l,c=1;do{for(i=e,e=null,s=null,a=0;i;){for(a++,n=i,r=0,t=0;t0||l>0&&n;)0!==r&&(0===l||!n||i.z<=n.z)?(o=i,i=i.nextZ,r--):(o=n,n=n.nextZ,l--),s?s.nextZ=o:e=o,o.prevZ=s,s=o;i=n}s.nextZ=null,c*=2}while(a>1)}(o)}(e,n,o,s);for(var r,l,c=e;e.prev!==e.next;)if(r=e.prev,l=e.next,s?hm(e,n,o,s):um(e))t.push(r.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),Om(e),e=l.next,c=l.next;else if((e=l)===c){a?1===a?cm(e=pm(lm(e),t,i),t,i,n,o,s,2):2===a&&dm(e,t,i,n,o,s):cm(lm(e),t,i,n,o,s,1);break}}}function um(e){var t=e.prev,i=e,n=e.next;if(wm(t,i,n)>=0)return!1;for(var o=t.x,s=i.x,a=n.x,r=t.y,l=i.y,c=n.y,u=os?o>a?o:a:s>a?s:a,d=r>l?r>c?r:c:l>c?l:c,m=n.next;m!==t;){if(m.x>=u&&m.x<=p&&m.y>=h&&m.y<=d&&bm(o,r,s,l,a,c,m.x,m.y)&&wm(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function hm(e,t,i,n){var o=e.prev,s=e,a=e.next;if(wm(o,s,a)>=0)return!1;for(var r=o.x,l=s.x,c=a.x,u=o.y,h=s.y,p=a.y,d=rl?r>c?r:c:l>c?l:c,v=u>h?u>p?u:p:h>p?h:p,g=gm(d,m,t,i,n),y=gm(f,v,t,i,n),b=e.prevZ,C=e.nextZ;b&&b.z>=g&&C&&C.z<=y;){if(b.x>=d&&b.x<=f&&b.y>=m&&b.y<=v&&b!==o&&b!==a&&bm(r,u,l,h,c,p,b.x,b.y)&&wm(b.prev,b,b.next)>=0)return!1;if(b=b.prevZ,C.x>=d&&C.x<=f&&C.y>=m&&C.y<=v&&C!==o&&C!==a&&bm(r,u,l,h,c,p,C.x,C.y)&&wm(C.prev,C,C.next)>=0)return!1;C=C.nextZ}for(;b&&b.z>=g;){if(b.x>=d&&b.x<=f&&b.y>=m&&b.y<=v&&b!==o&&b!==a&&bm(r,u,l,h,c,p,b.x,b.y)&&wm(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;C&&C.z<=y;){if(C.x>=d&&C.x<=f&&C.y>=m&&C.y<=v&&C!==o&&C!==a&&bm(r,u,l,h,c,p,C.x,C.y)&&wm(C.prev,C,C.next)>=0)return!1;C=C.nextZ}return!0}function pm(e,t,i){var n=e;do{var o=n.prev,s=n.next.next;!km(o,s)&&_m(o,n,n.next,s)&&Em(o,s)&&Em(s,o)&&(t.push(o.i/i|0),t.push(n.i/i|0),t.push(s.i/i|0),Om(n),Om(n.next),n=e=s),n=n.next}while(n!==e);return lm(n)}function dm(e,t,i,n,o,s){var a=e;do{for(var r=a.next.next;r!==a.prev;){if(a.i!==r.i&&Cm(a,r)){var l=Pm(a,r);return a=lm(a,a.next),l=lm(l,l.next),cm(a,t,i,n,o,s,0),void cm(l,t,i,n,o,s,0)}r=r.next}a=a.next}while(a!==e)}function mm(e,t){return e.x-t.x}function fm(e,t){var i=function(e,t){var i,n=t,o=-1/0,s=e.x,a=e.y;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var r=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(r<=s&&r>o&&(o=r,i=n.x=n.x&&n.x>=u&&s!==n.x&&bm(ai.x||n.x===i.x&&vm(i,n)))&&(i=n,p=l)),n=n.next}while(n!==c);return i}(e,t);if(!i)return t;var n=Pm(i,e);return lm(n,n.next),lm(i,i.next)}function vm(e,t){return wm(e.prev,e,t.prev)<0&&wm(t.next,e,e.next)<0}function gm(e,t,i,n,o){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*o|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function ym(e){var t=e,i=e;do{(t.x=(e-a)*(s-r)&&(e-a)*(n-r)>=(i-a)*(t-r)&&(i-a)*(s-r)>=(o-a)*(n-r)}function Cm(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&_m(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(Em(e,t)&&Em(t,e)&&function(e,t){var i=e,n=!1,o=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&o<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==e);return n}(e,t)&&(wm(e.prev,e,t.prev)||wm(e,t.prev,t))||km(e,t)&&wm(e.prev,e,e.next)>0&&wm(t.prev,t,t.next)>0)}function wm(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function km(e,t){return e.x===t.x&&e.y===t.y}function _m(e,t,i,n){var o=Sm(wm(e,t,i)),s=Sm(wm(e,t,n)),a=Sm(wm(i,n,e)),r=Sm(wm(i,n,t));return o!==s&&a!==r||!(0!==o||!xm(e,i,t))||!(0!==s||!xm(e,n,t))||!(0!==a||!xm(i,e,n))||!(0!==r||!xm(i,t,n))}function xm(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function Sm(e){return e>0?1:e<0?-1:0}function Em(e,t){return wm(e.prev,e,e.next)<0?wm(e,t,e.next)>=0&&wm(e,e.prev,t)>=0:wm(e,t,e.prev)<0||wm(e,e.next,t)<0}function Pm(e,t){var i=new Mm(e.i,e.x,e.y),n=new Mm(t.i,t.x,t.y),o=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=o,o.prev=i,n.next=i,i.prev=n,s.next=n,n.prev=s,n}function Dm(e,t,i,n){var o=new Mm(e,t,i);return n?(o.next=n.next,o.prev=n,n.next.prev=o,n.next=o):(o.prev=o,o.next=o),o}function Om(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Mm(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}var Tm=function(){function e(){c()(this,e)}return h()(e,null,[{key:"area",value:function(e){for(var t=e.length,i=0,n=t-1,o=0;o2&&void 0!==arguments[2]?arguments[2]:2,u=t&&t.length,h=u?t[0]*c:e.length,p=rm(e,0,h,c,!0),d=[];if(!p||p.next===p.prev)return d;if(u&&(p=function(e,t,i,n){var o,s,a,r=[];for(o=0,s=t.length;o80*c){i=o=e[0],n=s=e[1];for(var m=c;mo&&(o=a),r>s&&(s=r);l=0!==(l=Math.max(o-i,s-n))?32767/l:0}return cm(p,d,c,i,n,l,0),d}(i,n),l=0;l2&&e[t-1].equals(e[0])&&e.pop()}function Bm(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:new am([new Tu(.5,.5),new Tu(-.5,.5),new Tu(-.5,-.5),new Tu(.5,-.5)]),n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c()(this,t),(e=au(this,t)).type="ExtrudeGeometry",e.parameters={shapes:i,options:n},i=Array.isArray(i)?i:[i];for(var o=e,s=[],a=[],r=0,l=i.length;rNumber.EPSILON){var p=Math.sqrt(u),d=Math.sqrt(l*l+c*c),m=t.x-r/p,f=t.y+a/p,v=((i.x-c/d-m)*c-(i.y+l/d-f)*l)/(a*c-r*l),g=(n=m+a*v-e.x)*n+(o=f+r*v-e.y)*o;if(g<=2)return new Tu(n,o);s=Math.sqrt(g/2)}else{var y=!1;a>Number.EPSILON?l>Number.EPSILON&&(y=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(y=!0):Math.sign(r)===Math.sign(c)&&(y=!0),y?(n=-r,o=a,s=Math.sqrt(u)):(n=a,o=r,s=Math.sqrt(u/2))}return new Tu(n/s,o/s)}for(var I=[],R=0,z=O.length,F=z-1,H=R+1;R=0;ge--){for(var ye=ge/y,be=f*Math.cos(ye*Math.PI/2),Ce=v*Math.sin(ye*Math.PI/2)+g,we=0,ke=O.length;we=0;){var n=i,o=i-1;o<0&&(o=e.length-1);for(var s=0,a=p+2*y;s0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;c()(this,t);var o=(1+Math.sqrt(5))/2;return(e=au(this,t,[[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],i,n])).type="IcosahedronGeometry",e.parameters={radius:i,detail:n},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.detail)}}])}($d),Im=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return c()(this,t),(e=au(this,t,[[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],i,n])).type="OctahedronGeometry",e.parameters={radius:i,detail:n},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.detail)}}])}($d),Rm=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:32,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:2*Math.PI;c()(this,t),(e=au(this,t)).type="RingGeometry",e.parameters={innerRadius:i,outerRadius:n,thetaSegments:o,phiSegments:s,thetaStart:a,thetaLength:r},o=Math.max(3,o);for(var l=[],u=[],h=[],p=[],d=i,m=(n-i)/(s=Math.max(1,s)),f=new ih,v=new Tu,g=0;g<=s;g++){for(var y=0;y<=o;y++){var b=a+y/o*r;f.x=d*Math.cos(b),f.y=d*Math.sin(b),u.push(f.x,f.y,f.z),h.push(0,0,1),v.x=(f.x/n+1)/2,v.y=(f.y/n+1)/2,p.push(v.x,v.y)}d+=m}for(var C=0;C0&&void 0!==arguments[0]?arguments[0]:new am([new Tu(0,.5),new Tu(-.5,-.5),new Tu(.5,-.5)]),n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;c()(this,t),(e=au(this,t)).type="ShapeGeometry",e.parameters={shapes:i,curveSegments:n};var o=[],s=[],a=[],r=[],l=0,u=0;if(!1===Array.isArray(i))p(i);else for(var h=0;h0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Math.PI;c()(this,t),(e=au(this,t)).type="SphereGeometry",e.parameters={radius:i,widthSegments:n,heightSegments:o,phiStart:s,phiLength:a,thetaStart:r,thetaLength:l},n=Math.max(3,Math.floor(n)),o=Math.max(2,Math.floor(o));for(var u=Math.min(r+l,Math.PI),h=0,p=[],d=new ih,m=new ih,f=[],v=[],g=[],y=[],b=0;b<=o;b++){var C=[],w=b/o,k=0;0===b&&0===r?k=.5/n:b===o&&u===Math.PI&&(k=-.5/n);for(var _=0;_<=n;_++){var x=_/n;d.x=-i*Math.cos(s+x*a)*Math.sin(r+w*l),d.y=i*Math.cos(r+w*l),d.z=i*Math.sin(s+x*a)*Math.sin(r+w*l),v.push(d.x,d.y,d.z),m.copy(d).normalize(),g.push(m.x,m.y,m.z),y.push(x+k,1-w),C.push(h++)}p.push(C)}for(var S=0;S0)&&f.push(P,D,M),(S!==o-1||u0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return c()(this,t),(e=au(this,t,[[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],i,n])).type="TetrahedronGeometry",e.parameters={radius:i,detail:n},e}return Me()(t,e),h()(t,null,[{key:"fromJSON",value:function(e){return new t(e.radius,e.detail)}}])}($d),Vm=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:12,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:48,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI;c()(this,t),(e=au(this,t)).type="TorusGeometry",e.parameters={radius:i,tube:n,radialSegments:o,tubularSegments:s,arc:a},o=Math.floor(o),s=Math.floor(s);for(var r=[],l=[],u=[],h=[],p=new ih,d=new ih,m=new ih,f=0;f<=o;f++)for(var v=0;v<=s;v++){var g=v/s*a,y=f/o*Math.PI*2;d.x=(i+n*Math.cos(y))*Math.cos(g),d.y=(i+n*Math.cos(y))*Math.sin(g),d.z=n*Math.sin(y),l.push(d.x,d.y,d.z),p.x=i*Math.cos(g),p.y=i*Math.sin(g),m.subVectors(d,p).normalize(),u.push(m.x,m.y,m.z),h.push(v/s),h.push(f/o)}for(var b=1;b<=o;b++)for(var C=1;C<=s;C++){var w=(s+1)*b+C-1,k=(s+1)*(b-1)+C-1,_=(s+1)*(b-1)+C,x=(s+1)*b+C;r.push(w,k,x),r.push(k,_,x)}return e.setIndex(r),e.setAttribute("position",new Tp(l,3)),e.setAttribute("normal",new Tp(u,3)),e.setAttribute("uv",new Tp(h,2)),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.parameters=Object.assign({},e.parameters),this}}],[{key:"fromJSON",value:function(e){return new t(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}])}(zp),Gm=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:3;c()(this,t),(e=au(this,t)).type="TorusKnotGeometry",e.parameters={radius:i,tube:n,tubularSegments:o,radialSegments:s,p:a,q:r},o=Math.floor(o),s=Math.floor(s);for(var l=[],u=[],h=[],p=[],d=new ih,m=new ih,f=new ih,v=new ih,g=new ih,y=new ih,b=new ih,C=0;C<=o;++C){var w=C/o*a*Math.PI*2;N(w,a,r,i,f),N(w+.01,a,r,i,v),y.subVectors(v,f),b.addVectors(v,f),g.crossVectors(y,b),b.crossVectors(g,y),g.normalize(),b.normalize();for(var k=0;k<=s;++k){var _=k/s*Math.PI*2,x=-n*Math.cos(_),S=n*Math.sin(_);d.x=f.x+(x*b.x+S*g.x),d.y=f.y+(x*b.y+S*g.y),d.z=f.z+(x*b.z+S*g.z),u.push(d.x,d.y,d.z),m.subVectors(d,f).normalize(),h.push(m.x,m.y,m.z),p.push(C/o),p.push(k/s)}}for(var E=1;E<=o;E++)for(var P=1;P<=s;P++){var D=(s+1)*(E-1)+(P-1),O=(s+1)*E+(P-1),M=(s+1)*E+P,T=(s+1)*(E-1)+P;l.push(D,O,T),l.push(O,M,T)}function N(e,t,i,n,o){var s=Math.cos(e),a=Math.sin(e),r=i/t*e,l=Math.cos(r);o.x=n*(2+l)*.5*s,o.y=n*(2+l)*a*.5,o.z=n*Math.sin(r)*.5}return e.setIndex(l),e.setAttribute("position",new Tp(u,3)),e.setAttribute("normal",new Tp(h,3)),e.setAttribute("uv",new Tp(p,2)),e}return Me()(t,e),h()(t,[{key:"copy",value:function(e){return su(t,"copy",this,3)([e]),this.parameters=Object.assign({},e.parameters),this}}],[{key:"fromJSON",value:function(e){return new t(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}}])}(zp),Wm=function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Wd(new ih(-1,-1,0),new ih(-1,1,0),new ih(1,1,0)),n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];c()(this,t),(e=au(this,t)).type="TubeGeometry",e.parameters={path:i,tubularSegments:n,radius:o,radialSegments:s,closed:a};var r=i.computeFrenetFrames(n,a);e.tangents=r.tangents,e.normals=r.normals,e.binormals=r.binormals;var l=new ih,u=new ih,h=new Tu,p=new ih,d=[],m=[],f=[],v=[];function g(e){p=i.getPointAt(e/n,p);for(var t=r.normals[e],a=r.binormals[e],c=0;c<=s;c++){var h=c/s*Math.PI*2,f=Math.sin(h),v=-Math.cos(h);u.x=v*t.x+f*a.x,u.y=v*t.y+f*a.y,u.z=v*t.z+f*a.z,u.normalize(),m.push(u.x,u.y,u.z),l.x=p.x+o*u.x,l.y=p.y+o*u.y,l.z=p.z+o*u.z,d.push(l.x,l.y,l.z)}}return function(){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:null;if(c()(this,t),(e=au(this,t)).type="WireframeGeometry",e.parameters={geometry:i},null!==i){var n=[],o=new Set,s=new ih,a=new ih;if(null!==i.index){var r=i.attributes.position,l=i.index,u=i.groups;0===u.length&&(u=[{start:0,count:l.count,materialIndex:0}]);for(var h=0,p=u.length;h=o)break e;var r=t[1];e=(o=t[--i-1]))break t}s=i,i=0}for(;i>>1;et;)--s;if(++s,0!==o||s!==n){o>=s&&(o=(s=Math.max(s,1))-1);var a=this.getValueSize();this.times=i.slice(o,s),this.values=this.values.slice(o*a,s*a)}return this}},{key:"validate",value:function(){var e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);var i=this.times,n=this.values,o=i.length;0===o&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);for(var s=null,a=0;a!==o;a++){var r=i[a];if("number"==typeof r&&isNaN(r)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,r),e=!1;break}if(null!==s&&s>r){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,r,s),e=!1;break}s=r}if(void 0!==n&&qm(n))for(var l=0,c=n.length;l!==c;++l){var u=n[l];if(isNaN(u)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,l,u),e=!1;break}}return e}},{key:"optimize",value:function(){for(var e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),n=2302===this.getInterpolation(),o=e.length-1,s=1,a=1;a0){e[s]=e[o];for(var g=o*i,y=s*i,b=0;b!==i;++b)t[y+b]=t[g+b];++s}return s!==e.length?(this.times=e.slice(0,s),this.values=t.slice(0,s*i)):(this.times=e,this.values=t),this}},{key:"clone",value:function(){var e=this.times.slice(),t=this.values.slice(),i=new(0,this.constructor)(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}],[{key:"toJSON",value:function(e){var t,i=e.constructor;if(i.toJSON!==this.toJSON)t=i.toJSON(e);else{t={name:e.name,times:Jm(e.times,Array),values:Jm(e.values,Array)};var n=e.getInterpolation();n!==e.DefaultInterpolation&&(t.interpolation=n)}return t.type=e.ValueTypeName,t}}])}();$m.prototype.TimeBufferType=Float32Array,$m.prototype.ValueBufferType=Float32Array,$m.prototype.DefaultInterpolation=2301;var ef=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t)}($m);ef.prototype.ValueTypeName="bool",ef.prototype.ValueBufferType=Array,ef.prototype.DefaultInterpolation=2300,ef.prototype.InterpolantFactoryMethodLinear=void 0,ef.prototype.InterpolantFactoryMethodSmooth=void 0;var tf=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t)}($m);tf.prototype.ValueTypeName="color";var nf=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t)}($m);nf.prototype.ValueTypeName="number";var of=function(e){function t(e,i,n,o){return c()(this,t),au(this,t,[e,i,n,o])}return Me()(t,e),h()(t,[{key:"interpolate_",value:function(e,t,i,n){for(var o=this.resultBuffer,s=this.sampleValues,a=this.valueSize,r=(i-t)/(n-t),l=e*a,c=l+a;l!==c;l+=4)th.slerpFlat(o,0,s,l-a,s,l,r);return o}}])}(Xm),sf=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t,[{key:"InterpolantFactoryMethodLinear",value:function(e){return new of(this.times,this.values,this.getValueSize(),e)}}])}($m);sf.prototype.ValueTypeName="quaternion",sf.prototype.DefaultInterpolation=2301,sf.prototype.InterpolantFactoryMethodSmooth=void 0;var af=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t)}($m);af.prototype.ValueTypeName="string",af.prototype.ValueBufferType=Array,af.prototype.DefaultInterpolation=2300,af.prototype.InterpolantFactoryMethodLinear=void 0,af.prototype.InterpolantFactoryMethodSmooth=void 0;var rf=function(e){function t(){return c()(this,t),au(this,t,arguments)}return Me()(t,e),h()(t)}($m);rf.prototype.ValueTypeName="vector";var lf=h()((function e(t,i,n){c()(this,e);var o,s=this,a=!1,r=0,l=0,u=[];this.onStart=void 0,this.onLoad=t,this.onProgress=i,this.onError=n,this.itemStart=function(e){l++,!1===a&&void 0!==s.onStart&&s.onStart(e,r,l),a=!0},this.itemEnd=function(e){r++,void 0!==s.onProgress&&s.onProgress(e,r,l),r===l&&(a=!1,void 0!==s.onLoad&&s.onLoad())},this.itemError=function(e){void 0!==s.onError&&s.onError(e)},this.resolveURL=function(e){return o?o(e):e},this.setURLModifier=function(e){return o=e,this},this.addHandler=function(e,t){return u.push(e,t),this},this.removeHandler=function(e){var t=u.indexOf(e);return-1!==t&&u.splice(t,2),this},this.getHandler=function(e){for(var t=0,i=u.length;t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function wf(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};c()(this,t),i=kf(this,t,[e,n]);var s="\n importScripts('".concat(i.getSourceRootPath(),"/3rdparty/turf.min.js');\n self.addEventListener('message', function (e) {\n let features = []\n eval(e.data.code);\n self.postMessage(features);\n }, false);\n "),a="data:text/javascript;charset=utf-8,"+encodeURIComponent(s);if(i._worker=new Worker(a),i.options.angle=i.options.angle||0,i.loaded=!1,i.ismove=!1,i._loadEvent=void 0,i._loaded=!1,i.options.position.lat>83.5&&(i.options.position.lat=83.5),i.options.position.lat<-83.5&&(i.options.position.lat=-83.5),i.options.show=!n.show&&!1!==n.show||n.show,i.options.scale=n.scale||{},i.options.scale.x=i.options.scale.x||0===i.options.scale.x?i.options.scale.x:1,i.options.scale.y=i.options.scale.y||0===i.options.scale.y?i.options.scale.y:1,i.options.flipe=n.flipe||{},i.options.flipe.x=i.options.flipe.x||!1,i.options.flipe.y=i.options.flipe.y||!1,i.options.attribute=n.attribute||{},i.options.attribute.link=i.options.attribute.link||{},i.options.attribute.link.content=i.options.attribute.link.content||[],i.options.attributeType=n.attributeType||"richText",n.text=n.text||{},i.options.text={value:n.text.value||"",show:!n.text.show&&!1!==n.text.show||n.text.show,position:n.text.position,fontSize:n.text.fontSize||0===n.text.fontSize?n.text.fontSize:20,color:n.text.color||"#ffffff",scaleByDistance:n.text.scaleByDistance||!1,near:n.text.near||0===n.text.near?n.text.near:2e3,far:n.text.far||0===n.text.far?n.text.far:1e5},i.options.text.position){var r=turf.point([i.options.position.lng,i.options.position.lat]),l=turf.point([i.options.text.position.lng,i.options.text.position.lat]),u=turf.distance(r,l,{units:"kilometers"}),h=turf.rhumbBearing(r,l);i._textToCenter={distance:u,angle:h}}return i.hierarchys=[],i._elms={},i.Dialog=o,i._isdrag=!1,i._EventBinding=new Ye,i.sdk.entityMap.get(i.options.id)?Ee()(i):(i.sdk.addIncetance(i.options.id,i),i.picking=!0,i.options.show&&Object(Z.setSplitDirection)(0,i.options.id),i._entityArray=[],i.init(),i)}return Me()(t,e),h()(t,[{key:"type",get:function(){return"GroundSvg"}},{key:"attributeSelect",get:function(){return[{name:"富文本",value:"富文本",key:"richText"},{name:"链接",value:"链接",key:"link"}]}},{key:"name",get:function(){return this.options.name},set:function(e){this.options.name=e,this._elms.name&&this._elms.name.forEach((function(t){t.value=e}))}},{key:"show",get:function(){return this.options.show},set:function(e){var i,n,o,s,a,r;"boolean"==typeof e?(this.options.text&&this.options.text.show&&this.text&&(this.showView&&3!=this.showView?this.text.show=!1:this.text.show=e),i=t,n="show",o=e,s=this,a=1,r=1,Jc()(De()(r?i.prototype:i),n,o,s,a)):console.error("参数必须为boolean")}},{key:"position",get:function(){return this.options.position},set:function(e){var t=this;if(this.options.position=e,this.options.position.lat>83.5&&(this.options.position.lat=83.5),this.options.position.lat<-83.5&&(this.options.position.lat=-83.5),this._update(),this._textToCenter){var i=turf.point([this.options.position.lng,this.options.position.lat]),n=turf.destination(i,this._textToCenter.distance,this._textToCenter.angle,{units:"kilometers"}).geometry.coordinates;this.getClampToHeight({lng:n[0],lat:n[1]}).then((function(e){var i=[n[0],n[1],e];t.text&&(t.text.position=i)}))}}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;if(this.options.color=e,this.options.color)for(var i=0;i0&&0===i&&(this.options.angle=360),this._elms.angle&&this._elms.angle.forEach((function(e){e.value=t.options.angle})),this._update()}},{key:"scale",get:function(){return this.options.scale},set:function(e){this.options.scale.x=e.x,this.options.scale.y=e.y,this._elms&&(this._elms.xRange&&(this._elms.xRange.value=this.options.scale.x),this._elms.yRange&&(this._elms.yRange.value=this.options.scale.y),this._elms.xInput&&(this._elms.xInput.value=this.options.scale.x),this._elms.yInput&&(this._elms.yInput.value=this.options.scale.y)),this._update()}},{key:"flipeY",get:function(){return this.options.flipe.y},set:function(e){"boolean"==typeof e?(this.options.flipe.y=e,this._update()):console.error("参数必须为boolean")}},{key:"flipeX",get:function(){return this.options.flipe.x},set:function(e){"boolean"==typeof e?(this.options.flipe.x=e,this._update()):console.error("参数必须为boolean")}},{key:"textValue",get:function(){return this.options.text.value},set:function(e){this.options.text.value=e,this.text?this.text.text=e:t.createText(this),this._elms.textValue&&this._elms.textValue.forEach((function(t){t.value=e}))}},{key:"textShow",get:function(){return this.options.text.show},set:function(e){var t=this;this.options.text.show=e,this.show?(this.showView&&3!=this.showView?this.text&&(this.text.show=!1):this.text&&(this.text.show=e),this.options.text.position&&setTimeout((function(){t.options.text.position.alt?t.text&&(t.text.position=[t.options.text.position.lng,t.options.text.position.lat,t.options.text.position.alt]):t.getClampToHeight({lng:t.options.text.position.lng,lat:t.options.text.position.lat}).then((function(e){t.text&&(t.text.position=[t.options.text.position.lng,t.options.text.position.lat,e])}))}),0)):this.text&&(this.text.show=!1),this._elms.textShow&&this._elms.textShow.forEach((function(t){t.checked=e}))}},{key:"textColor",get:function(){return this.options.text.color},set:function(e){var t=this;this.options.text.color=e,this.text&&(this.text.color=e),this._elms.textColor&&this._elms.textColor.forEach((function(e,i){var n=new YJColorPicker({el:e.el,size:"mini",alpha:!0,defaultColor:t.textColor,disabled:!1,openPickerAni:"opacity",sure:function(e){t.textColor=e},clear:function(){t.textColor="rgba(255,255,255,1)"}});t._elms.textColor[i]=n}))}},{key:"textFontSize",get:function(){return this.options.text.fontSize},set:function(e){this.options.text.fontSize=e,this.text&&(this.text.fontSize=e,this.text.pixelOffset=e),this._elms.textFontSize&&this._elms.textFontSize.forEach((function(t){t.value=e}))}},{key:"textScaleByDistance",get:function(){return this.options.text.scaleByDistance},set:function(e){this.options.text.scaleByDistance=e,this.text&&(this.text.scaleByDistance=e),this._elms.textScaleByDistance&&this._elms.textScaleByDistance.forEach((function(t){t.checked=e}))}},{key:"textNear",get:function(){return this.options.text.near},set:function(e){var t=e;t>this.textFar&&(t=this.textFar),this.options.text.near=t,this.text&&(this.text.near=t),this._elms.textNear&&this._elms.textNear.forEach((function(e){e.value=t}))}},{key:"textFar",get:function(){return this.options.text.far},set:function(e){var t=e;t-1?t[i].style.display="block":t[i].style.display="none"}},{key:"attributeLink",get:function(){return this.options.attribute.link.content},set:function(e){var t=this;if(this.options.attribute.link.content=e,this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content&&0!=this._DialogObject._element.content.getElementsByClassName("attribute-content-link").length){var i=this._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],n=i.getElementsByClassName("table-body")[0];n.innerHTML="",this.options.attribute.link.content.length>0?i.getElementsByClassName("table-empty")[0].style.display="none":i.getElementsByClassName("table-empty")[0].style.display="flex";for(var o=0;o\n
          '+this.options.attribute.link.content[o].url+'
          \n
          \n \n \n
          \n ',a=document.createRange().createContextualFragment(s);n.appendChild(a)}for(var r,l=n.getElementsByClassName("tr"),c={linkEdit:(r=_()(S.a.mark((function e(i){var n,o,s,a,r;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.options.attribute.link.content;case 2:t.attributeLink=e.sent,n=t._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],o=n.getElementsByClassName("table-body")[0],s=o.getElementsByClassName("tr"),a=S.a.mark((function e(n){var o,a,r,l,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==n){e.next=36;break}o=s[n].offsetHeight,s[n].innerHTML='\n
          \n \n
          \n
          \n \n
          \n
          \n \n \n
          ',s[n].getElementsByClassName("link-edit")[0].style.height=o-10+"px",(a=s[n].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].name,a[1].getElementsByClassName("input")[0].value=t.options.attribute.link.content[i].url,r=s[n].getElementsByTagName("button"),l=0;case 11:if(!(lS[E]&&(w=S[E]),k(k=Math.abs(k))&&(k=w);var P=k,D=4e3/(k=k*(10/3)*100)/5;P*=D;for(var O=0;O=Number(e.target.min))&&(p.scale={x:t,y:p.scale.y})})),c.addEventListener("blur",(function(e){var t=e.target.value;t=Number(t),e.target.max&&t>Number(e.target.max)&&(t=Number(e.target.max)),e.target.min&&t=Number(e.target.min))&&(p.scale={x:p.scale.x,y:t})})),h.addEventListener("blur",(function(e){var t=e.target.value;t=Number(t),e.target.max&&t>Number(e.target.max)&&(t=Number(e.target.max)),e.target.min&&t-270&&b<-90||b<270&&b>90)&&(b+=180,j=!0),((C=M-T)>-360&&C<-90||C<360&&C>90)&&(C+=180,A=!0),j&&A?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#ff0000")):j?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")):A?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")):(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")),d=Math.PI/180*b,m=Math.PI/180*C,f=Math.cos(d)*B*2,v=Math.cos(m)*B*2,n.scale.x=Math.abs(f)/3.5,n.scale.y=Math.abs(v)/3.5,e.abrupt("break",102);case 57:return T=(turf.rhumbBearing(P,turf.point(_[2]))+360-n.angle)%360,(C=M-T)>-270&&C<-90||C<270&&C>90?(C+=180,n.pointEntityCollection.values[2].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[8].point.color=Cesium.Color.fromCssColorString("#ff0000")):(n.pointEntityCollection.values[2].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[8].point.color=Cesium.Color.fromCssColorString("#00ff0a")),m=Math.PI/180*C,v=Math.cos(m)*B*2,n.scale.y=v/3.5,e.abrupt("break",102);case 64:return N=(turf.rhumbBearing(P,turf.point(_[6]))+360-n.angle)%360,T=(turf.rhumbBearing(P,turf.point(_[2]))+360-n.angle)%360,((b=M-N)>-360&&b<-90||b<360&&b>90)&&(b+=180,j=!0),((C=M-T)>-360&&C<-90||C<360&&C>90)&&(C+=180,A=!0),j&&A?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")):j?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")):A?(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#ff0000")):(n.pointEntityCollection.values[1].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[3].point.color=Cesium.Color.fromCssColorString("#ff0000"),n.pointEntityCollection.values[7].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[9].point.color=Cesium.Color.fromCssColorString("#00ff0a")),d=Math.PI/180*b,m=Math.PI/180*C,f=Math.cos(d)*B*2,v=Math.cos(m)*B*2,n.scale.x=Math.abs(f)/3.5,n.scale.y=Math.abs(v)/3.5,e.abrupt("break",102);case 78:return N=(turf.rhumbBearing(P,turf.point(_[4]))+360-n.angle)%360,(b=M-N)>-360&&b<-90||b<360&&b>90?(b+=180,n.pointEntityCollection.values[4].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[6].point.color=Cesium.Color.fromCssColorString("#ff0000")):(n.pointEntityCollection.values[6].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[4].point.color=Cesium.Color.fromCssColorString("#ff0000")),d=Math.PI/180*b,f=Math.cos(d)*B*2,n.scale.x=f/3.5,e.abrupt("break",102);case 85:return u.lat>83.5&&(u.lat=83.5),u.lat<-83.5&&(u.lat=-83.5),n.position={lng:u.lng,lat:u.lat},L=u.lng-c.lng,I=u.lat-c.lat,n.bbox[0]=n.bbox[0]+L,n.bbox[1]=n.bbox[1]+I,n.bbox[2]=n.bbox[2]+L,n.bbox[3]=n.bbox[3]+I,e.abrupt("break",102);case 95:return N=(turf.rhumbBearing(P,turf.point(_[6]))+360-n.angle)%360,(b=M-N)>-360&&b<-90||b<360&&b>90?(b+=180,n.pointEntityCollection.values[6].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[4].point.color=Cesium.Color.fromCssColorString("#ff0000")):(n.pointEntityCollection.values[4].point.color=Cesium.Color.fromCssColorString("#00ff0a"),n.pointEntityCollection.values[6].point.color=Cesium.Color.fromCssColorString("#ff0000")),d=Math.PI/180*b,f=Math.cos(d)*B*2,n.scale.x=f/3.5,e.abrupt("break",102);case 102:h=h/(o/2)*100,p=p/(s/2)*100,(R=bf({},n.scale)).x=R.x+h,R.y=R.y-p,R.y>200&&(R.y=200),R.y<.001&&(R.y=.001),R.x>200&&(R.x=200),R.x<.001&&(R.x=.001),n.scale=bf({},R),t&&t(n.options),e.next=142;break;case 115:z=n.sdk.viewer.scene.drillPick(i.endPosition),H=0;case 117:if(!(H90&&(c+=180);var h=[c,u],p=turf.point(h),d=turf.rhumbDestination(p,o[s][r].distance,o[s][r].angle,{units:"kilometers"}),m=nt()(d.geometry.coordinates);m[2]=10,a.push((l=Cesium.Cartesian3).fromDegrees.apply(l,nt()(m)))}0===s?i.positions=a:n.push(a)}return i.holes=n,i}}},{key:"_updateGeojson",value:function(e,t,i){if(this._loaded){var n=Math.abs(this.bbox[0]-this.bbox[2]),o=Math.abs(this.bbox[1]-this.bbox[3]);if("object"===st()(e[0]))for(var s=0;so[2]&&(t=o[0],o[0]=o[2],o[2]=t),o[1]>o[3]&&(t=o[1],o[1]=o[3],o[3]=t);for(var c=[],u=JSON.parse(JSON.stringify(this.geojson)),h=function(t){for(var i=0;i=0;t--)this.sdk.viewer.entities.remove(this.entity.values[t]);return this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),e.next=14,Object(J.syncData)(this.sdk,this.options.id);case 14:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"_addLink",value:function(){this._DialogObject._element.content.getElementsByClassName("link_add")[0].value?(this.options.attribute.link.content.push({name:"链接",url:this._DialogObject._element.content.getElementsByClassName("link_add")[0].value}),this._DialogObject._element.content.getElementsByClassName("link_add")[0].value="",this.attributeLink=this.options.attribute.link.content):this.Dialog.clickAddLink&&this.Dialog.clickAddLink()}},{key:"addAttributeLink",value:function(e){this.options.attribute.link.content.push({name:"链接",url:e}),this.attributeLink=this.options.attribute.link.content}},{key:"openRichTextEditor",value:function(e){var t=this;tt.open(this.options.id,this.options.name,this.options.richTextContent),tt.primaryCallBack=function(e){t.options.richTextContent=e}}},{key:"setPosition",value:function(e){if(e){this.ismove=!0;var t={};t.lng=e.position.lng,t.lat=e.position.lat,this.position=t}else this.ismove=!1;this._update()}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=d.length>0&&void 0!==d[0]?d[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=24;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),(r=bf({},this.options.position)).hasOwnProperty("alt")){e.next=17;break}return e.next=16,this.getClampToHeight(r);case 16:r.alt=e.sent;case 17:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=37;break;case 24:l=[],c=0;case 26:if(!(c=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Sf(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),i=Ef(this,t,[e,n]),YJ.RoutePlanningArrays.push(i),i.options.width=n.width||4,i.options.color=n.color||"#ff0000",i.options.gps=n.gps||!1,i.Dialog=o,i._elms={},i.start={lng:null,lat:null},i.end={lng:null,lat:null},i.tools=new b.a(e),i.init(),i}return Me()(t,e),h()(t,[{key:"init",value:function(){var e=this;this.startEntity=this.sdk.viewer.entities.getOrCreateEntity("YJ-route-planning-start"),!this.start||!this.start.lng&&0!==this.start.lng||!this.start.lat&&0!==this.start.lat?this.startEntity.show=!1:this.startEntity.show=!0,this.startEntity.position=new Cesium.CallbackProperty((function(){var t=e.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(e.startLng,e.startLat));return e.clickCallBack({start:t,end:e.endEntity.position}),t}),!1),this.startEntity.billboard={image:this.getSourceRootPath()+"/img/start.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32},this.endEntity=this.sdk.viewer.entities.getOrCreateEntity("YJ-route-planning-end"),!this.end||!this.end.lng&&0!==this.end.lng||!this.end.lat&&0!==this.end.lat?this.endEntity.show=!1:this.endEntity.show=!0,this.endEntity.position=new Cesium.CallbackProperty((function(){var t=e.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(e.endLng,e.endLat));return e.clickCallBack({start:e.startEntity.position,end:t}),t}),!1),this.endEntity.billboard={image:this.getSourceRootPath()+"/img/end.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32},this.edit(!0),this.clear()}},{key:"onEnd",get:function(){return this.clickCallBack},set:function(e){e&&"function"!=typeof e?console.error("val:",e,"不是一个function"):this.clickCallBack=e}},{key:"startLng",get:function(){return this.start.lng},set:function(e){this.start.lng=e,!this.start||!this.start.lng&&0!==this.start.lng||!this.start.lat&&0!==this.start.lat?this.startEntity&&(this.startEntity.show=!1):this.startEntity&&(this.startEntity.show=!0),this._elms.startLng&&this._elms.startLng.forEach((function(t){t.value=e}))}},{key:"startLat",get:function(){return this.start.lat},set:function(e){this.start.lat=e,!this.start||!this.start.lng&&0!==this.start.lng||!this.start.lat&&0!==this.start.lat?this.startEntity&&(this.startEntity.show=!1):this.startEntity&&(this.startEntity.show=!0),this._elms.startLat&&this._elms.startLat.forEach((function(t){t.value=e}))}},{key:"endLng",get:function(){return this.end.lng},set:function(e){this.end.lng=e,!this.end||!this.end.lng&&0!==this.end.lng||!this.end.lat&&0!==this.end.lat?this.endEntity&&(this.endEntity.show=!1):this.endEntity&&(this.endEntity.show=!0),this._elms.endLng&&this._elms.endLng.forEach((function(t){t.value=e}))}},{key:"endLat",get:function(){return this.end.lat},set:function(e){this.end.lat=e,!this.end||!this.end.lng&&0!==this.end.lng||!this.end.lat&&0!==this.end.lat?this.endEntity&&(this.endEntity.show=!1):this.endEntity&&(this.endEntity.show=!0),this._elms.endLat&&this._elms.endLat.forEach((function(t){t.value=e}))}},{key:"edit",value:(i=_()(S.a.mark((function e(i){var n,o,s,a=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.originalOptions=this.deepCopyObj(this.options),this._element_style=null,this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),i?(this._element_style=document.createElement("style"),this._element_style.type="text/css",this._element_style.setAttribute("data-name","YJ_style_dialog"),document.getElementById("routeQuery").addEventListener("click",(function(){!a.startLng&&0!==a.startLng||!a.startLat&&0!==a.startLat||!a.endLng&&0!==a.endLng||!a.endLat&&0!==a.endLat?a.tools.message({type:"warning",text:"请先设置起点和终点坐标!"}):(!a.startEntity&&(a.startEntity=a.viewer.entities.add(new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return a.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(a.startLng,a.startLat))}),!1),billboard:{image:a.getSourceRootPath()+"/img/start.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32}}))),a.startEntity.show=!0,!a.endEntity&&(a.endEntity=a.viewer.entities.add(new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return a.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(a.endLng,a.endLat))}),!1),billboard:{image:a.getSourceRootPath()+"/img/end.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32}}))),a.endEntity.show=!0,a.Dialog.queryCallBack&&a.Dialog.queryCallBack({start:[a.startLng,a.startLat],end:[a.endLng,a.endLat]}))})),document.getElementById("clearRoute").addEventListener("click",(function(){a.clear()})),document.getElementsByTagName("head")[0].appendChild(this._element_style),n=document.getElementsByClassName("RoutePlanning")[0],this.options.gps&&((o=document.createElement("button")).innerHTML="当前位置",o.style.marginLeft="10px",o.setAttribute("data-is","start"),o.addEventListener("click",(function(e){a.getLocateCurrent(e)})),n.getElementsByClassName("start-col")[0].appendChild(o),n._element.body.getElementsByClassName("end-pick-btn")[0].style.marginRight="91px"),s=n.getElementsByTagName("*"),t.EventBinding(this,s)):(this._element_style&&(document.getElementsByTagName("head")[0].removeChild(this._element_style),this._element_style=null),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null));case 5:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"clear",value:function(){this.startEntity&&(this.sdk.viewer.entities.remove(this.startEntity),this.startEntity=null),this.endEntity&&(this.sdk.viewer.entities.remove(this.endEntity),this.endEntity=null),this.entity&&(this.sdk.viewer.entities.remove(this.entity),this.entity=null),this.startExtensionEntity&&(this.sdk.viewer.entities.remove(this.startExtensionEntity),this.startExtensionEntity=null),this.endExtensionEntity&&(this.sdk.viewer.entities.remove(this.endExtensionEntity),this.endExtensionEntity=null)}},{key:"destroy",value:function(){this.clear(),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null)}},{key:"getLocateCurrent",value:function(e){var t=this;this.reconnecting&&this.reconnecting.close(),this.options.host=this.options.host||Object(n.a)();var i;i=this.options.host+"/yjearth4.0/api/v1/gps/state",this.reconnecting=new ReconnectingWebSocket("ws://"+i),this.reconnecting.onopen=function(i){t.reconnecting.onmessage=function(i){t.data=JSON.parse(i.data),t.data&&t.data.rmc&&(t.reconnecting.close(),"start"===e.srcElement.getAttribute("data-is")?(t.startLng=t.data.rmc.lng,t.startLat=t.data.rmc.lat,!t.startEntity&&(t.startEntity=t.viewer.entities.add(new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return t.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(t.startLng,t.startLat))}),!1),billboard:{image:t.getSourceRootPath()+"/img/start.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32}}))),t.startEntity.show=!0):(t.endLng=t.data.rmc.lng,t.endLat=t.data.rmc.lat,!t.endEntity&&(t.endEntity=t.viewer.entities.add(new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return t.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(t.endLng,t.endLat))}),!1),billboard:{image:t.getSourceRootPath()+"/img/end.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32}}))),t.endEntity.show=!0))}}}},{key:"createRoute",value:function(e){for(var t=[],i=0;i=500?(t.tip&&t.tip.destroy(),t.event&&t.event.destroy()):i(0,n)}))}))}},{key:"pickEndPos",value:function(e){var t=this;this.tip&&this.tip.destroy(),this.event&&this.event.destroy(),this.tip=new St.a("左键选择终点坐标,右键取消",this.sdk),this.event=new te.a(this.sdk),this.event.mouse_move((function(e,i){t.tip.setPosition(i,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(i,n){var o=t.cartesian3Towgs84(n,t.sdk.viewer);t.endLng=o.lng,t.endLat=o.lat,e(o),!t.endEntity&&(t.endEntity=t.viewer.entities.add(new Cesium.Entity({position:new Cesium.CallbackProperty((function(){return t.sdk.viewer.scene.clampToHeight(new Cesium.Cartesian3.fromDegrees(t.endLng,t.endLat))}),!1),billboard:{image:t.getSourceRootPath()+"/img/end.png",verticalOrigin:Cesium.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,width:32,height:32}}))),t.endEntity.show=!0,t.tip&&t.tip.destroy(),t.event&&t.event.destroy()})),this.event.mouse_right((function(e,i){t.tip&&t.tip.destroy(),t.event&&t.event.destroy()}))}},{key:"flicker",value:function(){}}],[{key:"EventBinding",value:function(e,t){for(var i=function(){var i=[],o=!1,s=[];if(!t[n]||!t[n].attributes)return 1;var a,r=xf(t[n].attributes);try{var l=function(){var r=a.value;switch(r.name){case"@model":o=!0,"checkbox"==t[n].type?(i.push((function(t){e[r.value]=t.target.checked})),t[n].checked=e[r.value]):(i.push((function(t){var i=t.target.value;"number"==t.target.type?"."==t.data||"-"==t.data&&!t.target.value||(i=Number(i),t.target.max&&i>Number(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i
          ').concat(s[t].properties.fid,"
          ")),s[t].properties)"id"!==o&&"ID"!==o&&"fid"!==o&&(n+='
          ').concat(s[t].properties[o],"
          "));e+=i=i+n+""}return e},e.next=8,new Te.a(t.viewer._container,{title:"",left:"17%",top:"100px"});case 8:return Pf=e.sent,e.next=11,Pf.init();case 11:for(g in r=nt()(t.geojson.features),i=r.length,s=r.slice(o*(n-1),o*n),l=a(),(c=document.createElement("div")).style.height="100%",'',u='
          ',h='
          ',p="",d='',m='
          ',f="",v=1,"fid"in t.geojson.features[0].properties&&(p+=''),f+=''),d+=''),v++),t.geojson.features[0].properties)"id"!==g&&"ID"!==g&&"fid"!==g&&(p+=''),f+=''),d+='"),v++);'
          暂无数据
          ',u=u+(h=h+(p+='')+(d+="")+"
          fid
          ').concat(g,"
          ")+(m=m+(f+="")+(""+l+"")+'
          暂无数据
          ')+"",c.innerHTML=''+u+'',y=c.getElementsByClassName("el-table__empty-block")[0],0==s.length?y.style.display="flex":y.style.display="none",Pf.contentAppChild(c),b=c.getElementsByClassName("el-table__header-wrapper")[0],(C=c.getElementsByClassName("el-table__body-wrapper")[0]).addEventListener("scroll",(function(e){b.scrollLeft=e.target.scrollLeft})),Pf._element.title.style.height="40px",Pf._element.body.style.width="65%",Pf._element.body.style.height="80%",Pf._element.content.style.height="calc(100% - 40px)",Pf._element.content.style.overflow="hidden",Pf._element.foot.style.display="none",C.style.height="calc(100% - ".concat(b.offsetHeight,"px)"),at(w=c.getElementsByClassName("pagination")[0],i,o,n,(function(e){n=e,s=r.slice(o*(n-1),o*n);var t=a();c.getElementsByTagName("tbody")[0].innerHTML=t,0==s.length?y.style.display="flex":y.style.display="none"})),k=function(){for(var e=c.getElementsByClassName("search-box")[0].getElementsByTagName("input")[0],l=[],u=0;u
          ').concat(n[t].properties.fid,"
          ")),n[t].properties)"id"!==s&&"ID"!==s&&"fid"!==s&&(o+='
          ').concat(n[t].properties[s],"
          "));e+=i=i+o+""}return e},s=!1,a=0;case 5:if(!(a',u='
          ',h="",p='',d='
          ',m="",f=1,"fid"in t.geojson.features[0].properties&&(h+=''),m+=''),p+=''),f++),t.geojson.features[0].properties)"id"!==v&&"ID"!==v&&"fid"!==v&&(h+=''),m+=''),p+='"),f++);if(g='\n \n \n '.concat((c=c+(u=u+(h+='')+(p+="")+"
          fid
          ').concat(v,"
          ")+(d=d+(m+="")+(""+r+"")+"")+"")+'',"\n \n "),n[0].content&&n[0].content.richTextContent&&(y='\n \n '.concat(n[0].content.richTextContent,"\n \n "),g+=y),n[0].content&&n[0].content.link&&n[0].content.link.content&&n[0].content.link.content.length>0)for(b=0;b\n \n \n '),g+=w;for(g+="",l.innerHTML=g,Tf.contentAppChild(l),new Je("shp-list-id-tabs"),(k=l.getElementsByClassName("DIV-cy-tabs")[0]).style.height="100%",k.style.display="flex",k.style.flexDirection="column",k.getElementsByClassName("DIV-cy-tab-content")[0].style.flex="1",_=k.getElementsByClassName("DIV-cy-tab-content-pane"),x=0;x<_.length;x++)_[x].style.height="100%";E=l.getElementsByClassName("el-table__header-wrapper")[0],(P=l.getElementsByClassName("el-table__body-wrapper")[0]).addEventListener("scroll",(function(e){E.scrollLeft=e.target.scrollLeft})),Tf._element.title.style.height="40px",Tf._element.body.style.width="65%",Tf._element.body.style.height="80%",Tf._element.content.style.height="calc(100% - 40px)",Tf._element.foot.style.display="none",P.style.height="calc(100% - ".concat(E.offsetHeight,"px)");case 64:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}();function jf(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Af(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Af(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Af(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Rf(this,t,[e,n])).viewer=e.viewer,i.options.path?(i.options.fileName=n.fileName||"未命名对象",i.options.field=n.field||"id",i.options.color=n.color||"rgba(0,255,184,0.5)",i.options.show=!n.show&&!1!==n.show||n.show,i.total=0,i.page=1,i.pageSize=20,i.currentData=[],i.data=[],i.list=[],i.imgEntity=[],i.Dialog=o,i._elms={},i):(i.error="未提供路径!",window.ELEMENT&&(window.ELEMENT.Message.closeAll(),window.ELEMENT.Message({message:i.error,type:"warning",duration:1500})),console.warn(i.error),Ee()(i))}return Me()(t,e),h()(t,[{key:"show",get:function(){return this.options.show},set:function(e){this.setShow(e)}},{key:"on",value:function(){if(this.options.path)return this.init()}},{key:"init",value:(a=_()(S.a.mark((function e(){var i,o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i="",this.options.host=this.options.host||Object(n.a)(),i=this.options.host.endsWith("yjearth4.0")?this.options.host+"/api/v1/vector/load":this.options.host+"/yjearth4.0/api/v1/vector/load",i+="?path="+this.options.path,e.next=6,fetch(i,{method:"get",headers:{"Content-Type":"application/json",token:Object(n.b)(),Authorization:"Bearer "+Object(n.b)()}});case 6:if(200!==(o=e.sent).status){e.next=19;break}return e.next=10,o.json();case 10:if(200!==(s=e.sent).code&&0!==s.code){e.next=18;break}return this.data=s.data,e.next=15,this.formatData();case 15:return e.abrupt("return",t.create(this));case 18:return e.abrupt("return",console.error(s.message));case 19:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"formatData",value:(s=_()(S.a.mark((function e(){var t,i,n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=function(e){if(e.data){var o;(o=i.list).push.apply(o,nt()(e.data));for(var s=0;s0&&void 0!==h[0]&&h[0],i=h.length>1&&void 0!==h[1]?h[1]:{},this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=25;break}return e.next=7,new Be(this.sdk,this.options,{title:"编辑属性",left:"180px",top:"100px",confirmCallBack:function(e){u.fileName=u.fileName.trim(),u.fileName||(u.fileName="未命名对象"),u.originalOptions.fileName=u.fileName,u.originalOptions.field=u.field,u._DialogObject.close(),i.confirmCallBack&&i.confirmCallBack({id:u.options.id,fileName:u.originalOptions.fileName,field:u.originalOptions.field})},closeCallBack:function(){u.reset(),i.closeCallBack&&i.closeCallBack()}});case 7:for(l in this._DialogObject=e.sent,n='\n
          \n
          \n 文件名称:\n \n
          \n
          \n
          \n
          \n 名称字段选择:\n \n
          \n
          \n ',(o=document.createElement("div")).innerHTML=n,this._DialogObject.contentAppChild(o),(s=o.getElementsByClassName("flie-name")[0]).value=this.options.fileName,s.addEventListener("input",(function(){u.options.fileName=s.value})),a=o.getElementsByClassName("input-select")[0],r="",this.geojson.features[0].properties)c='"),r+=c;a.innerHTML=r,a.value=this.options.field,a.addEventListener("input",(function(){u.options.field=a.value})),this._elms.fileName=s,this._elms.field=a,e.next=26;break;case 25:this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null);case 26:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"editById",value:(i=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g=this,y=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=y.length>0&&void 0!==y[0]&&y[0],i=y.length>1?y[1]:void 0,n=y.length>2&&void 0!==y[2]?y[2]:{},this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),o="",!t){e.next=48;break}a={},r=0;case 8:if(!(r\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
          设备IP
          \n
          设备端口
          \n
          用户名
          \n
          密码
          \n
          \n
          \n \n
          \n
          \n

          暂无数据

          \n
          \n
          \n
          \n
          \n
            \n
            \n
            \n ',(c=document.createElement("div")).innerHTML=l,this._DialogObject.contentAppChild(c),c.getElementsByTagName("*"),this._DialogObject._element.body.style.width="600px",u=c.getElementsByClassName("attribute-select")[0],h=c.getElementsByClassName("link_add_btn")[0],p=c.getElementsByClassName("open-richText-btn")[0],d=this._DialogObject._element.content.getElementsByClassName("attribute-content"),m=0;m-1?d[m].style.display="block":d[m].style.display="none";u.addEventListener("change",(function(){g._DialogObject.attribute.attributeType=u.value;for(var e=0;e-1?d[e].style.display="block":d[e].style.display="none"})),h.addEventListener("click",_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:g._DialogObject._element.content.getElementsByClassName("link_add")[0].value?(g._DialogObject.attribute.link.content.push({name:"链接",url:g._DialogObject._element.content.getElementsByClassName("link_add")[0].value}),g._DialogObject._element.content.getElementsByClassName("link_add")[0].value="",g.setAttributeLinkById(i,g._DialogObject.attribute.link.content)):n.clickAddLink&&n.clickAddLink(i);case 1:case"end":return e.stop()}}),e)})))),p.addEventListener("click",(function(){tt.open(i,i,g._DialogObject.attribute.richTextContent),tt.primaryCallBack=function(e){g._DialogObject.attribute.richTextContent=e}})),f=c.getElementsByClassName("camera-name")[0],v=c.getElementsByClassName("camera-select")[0],f.addEventListener("input",(function(){o=f.value})),this.cameraSelect&&this.cameraSelect(o),v.addEventListener("click",(function(){g.cameraSelect&&g.cameraSelect(o)})),e.next=49;break;case 48:this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null);case 49:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"editContentById",value:function(e,t){for(var i=0;i0?o.getElementsByClassName("table-empty")[0].style.display="none":o.getElementsByClassName("table-empty")[0].style.display="flex";for(var a=0;a\n
            '+this._DialogObject.attribute.link.content[a].url+'
            \n
            \n \n \n
            \n ',l=document.createRange().createContextualFragment(r);s.appendChild(l)}for(var c=s.getElementsByClassName("tr"),u={linkEdit:(i=_()(S.a.mark((function t(i){var o,s,a,r,l;return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.setAttributeLinkById(e,n._DialogObject.attribute.link.content);case 2:o=n._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],s=o.getElementsByClassName("table-body")[0],a=s.getElementsByClassName("tr"),r=S.a.mark((function e(t){var o,s,r,l,c,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==t){e.next=33;break}a[t].innerHTML='\n
            \n \n
            \n
            \n
            \n \n \n
            \n
            \n
            \n \n \n
            ',(o=a[t].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=n._DialogObject.attribute.link.content[i].name,o[1].getElementsByClassName("input")[0].value=n._DialogObject.attribute.link.content[i].url,s=a[t].getElementsByTagName("button"),r=0;case 8:if(!(r1&&void 0!==arguments[1]?arguments[1]:{};if(e){for(var i=0;i0){at(n,t.data.total,10,1,(function(t){i.cameraSelect&&i.cameraSelect(e,t)})),s.getElementsByClassName("table-empty")[0].style.display="none",a.style.display="inline-flex";for(var r=function(e){var n='\n
            \n
            \n \n 绑定\n
            \n
            ').concat(t.data.list[e].cameraName,'
            \n
            ').concat(o[t.data.list[e].type],'
            \n
            ').concat(t.data.list[e].ip,'
            \n
            ').concat(t.data.list[e].port,'
            \n
            ').concat(t.data.list[e].userName,'
            \n
            ').concat(t.data.list[e].passWord,"
            \n
            "),s=document.createRange().createContextualFragment(n),r=s.querySelector('input[type="checkbox"]');r.addEventListener("change",(function(){if(r.checked)i._DialogObject.attribute.camera.push(t.data.list[e]);else{var n=i._DialogObject.attribute.camera.filter((function(i){return i.ID!==t.data.list[e].ID}));i._DialogObject.attribute.camera=n}})),a.appendChild(s);for(var l=0;l0){var l=turf.featureCollection(i),c=turf.envelope(l);c&&c.bbox&&4==c.bbox.length&&(e.range={max_x:c.bbox[2],max_y:c.bbox[3],min_x:c.bbox[0],min_y:c.bbox[1]})}}},{key:"createPoints",value:function(e,t){if(t){for(var i=new Cesium.PointPrimitiveCollection({scene:e.viewer.scene}),n=0;n0&&e.entity.add(new Cesium.GroundPolylinePrimitive({geometryInstances:i,appearance:new Cesium.PolylineColorAppearance}))}}},{key:"createPolygons",value:function(e,t){if(t){for(var i=[],n=0;n0){var c=new Cesium.GroundPrimitive({geometryInstances:i,appearance:new Cesium.PerInstanceColorAppearance({translucent:!0,closed:!1})});e.entity.add(c)}}}},{key:"createTableContent",value:function(e){for(var t="",i=0;i
            ').concat(e.currentData[i].attr[s],"
            ");t+=n=n+o+""}return t}}]);var i,o,s,a}(vt);function Hf(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function Vf(e){for(var t=1;t
            ').concat(s[t].properties.fid,"
            ")),s[t].properties)"id"!==o&&"ID"!==o&&"fid"!==o&&(n+='
            ').concat(s[t].properties[o],"
            "));e+=i=i+n+""}return e},e.next=8,new Te.a(t.viewer._container,{title:"",left:"17%",top:"100px"});case 8:return zf=e.sent,e.next=11,zf.init();case 11:for(g in r=nt()(t.geojson.features),i=r.length,s=r.slice(o*(n-1),o*n),l=a(),(c=document.createElement("div")).style.height="100%",'',u='
            ',h='
            ',p="",d='',m='
            ',f="",v=1,"fid"in t.geojson.features[0].properties&&(p+=''),f+=''),d+=''),v++),t.geojson.features[0].properties)"id"!==g&&"ID"!==g&&"fid"!==g&&(p+=''),f+=''),d+='"),v++);'
            暂无数据
            ',u=u+(h=h+(p+='')+(d+="")+"
            fid
            ').concat(g,"
            ")+(m=m+(f+="")+(""+l+"")+'
            暂无数据
            ')+"",c.innerHTML=''+u+'',y=c.getElementsByClassName("el-table__empty-block")[0],0==s.length?y.style.display="flex":y.style.display="none",zf.contentAppChild(c),b=c.getElementsByClassName("el-table__header-wrapper")[0],(C=c.getElementsByClassName("el-table__body-wrapper")[0]).addEventListener("scroll",(function(e){b.scrollLeft=e.target.scrollLeft})),zf._element.title.style.height="40px",zf._element.body.style.width="65%",zf._element.body.style.height="80%",zf._element.content.style.height="calc(100% - 40px)",zf._element.content.style.overflow="hidden",zf._element.foot.style.display="none",C.style.height="calc(100% - ".concat(b.offsetHeight,"px)"),at(w=c.getElementsByClassName("pagination")[0],i,o,n,(function(e){n=e,s=r.slice(o*(n-1),o*n);var t=a();c.getElementsByTagName("tbody")[0].innerHTML=t,0==s.length?y.style.display="flex":y.style.display="none"})),k=function(){for(var e=c.getElementsByClassName("search-box")[0].getElementsByTagName("input")[0],l=[],u=0;u
            ').concat(n[t].properties.fid,"
            ")),n[t].properties)"id"!==s&&"ID"!==s&&"fid"!==s&&(o+='
            ').concat(n[t].properties[s],"
            "));e+=i=i+o+""}return e},s=!1,a=0;case 5:if(!(a',u='
            ',h="",p='',d='
            ',m="",f=1,"fid"in t.geojson.features[0].properties&&(h+=''),m+=''),p+=''),f++),t.geojson.features[0].properties)"id"!==v&&"ID"!==v&&"fid"!==v&&(h+=''),m+=''),p+='"),f++);if(g='\n \n \n '.concat((c=c+(u=u+(h+='')+(p+="")+"
            fid
            ').concat(v,"
            ")+(d=d+(m+="")+(""+r+"")+"")+"")+'',"\n \n "),n[0].content&&n[0].content.richTextContent&&(y='\n \n '.concat(n[0].content.richTextContent,"\n \n "),g+=y),n[0].content&&n[0].content.link&&n[0].content.link.content&&n[0].content.link.content.length>0)for(b=0;b\n \n \n '),g+=w;for(g+="",l.innerHTML=g,Gf.contentAppChild(l),new Je("shp-list-id-tabs"),(k=l.getElementsByClassName("DIV-cy-tabs")[0]).style.height="100%",k.style.display="flex",k.style.flexDirection="column",k.getElementsByClassName("DIV-cy-tab-content")[0].style.flex="1",_=k.getElementsByClassName("DIV-cy-tab-content-pane"),x=0;x<_.length;x++)_[x].style.height="100%";E=l.getElementsByClassName("el-table__header-wrapper")[0],(P=l.getElementsByClassName("el-table__body-wrapper")[0]).addEventListener("scroll",(function(e){E.scrollLeft=e.target.scrollLeft})),Gf._element.title.style.height="40px",Gf._element.body.style.width="65%",Gf._element.body.style.height="80%",Gf._element.content.style.height="calc(100% - 40px)",Gf._element.foot.style.display="none",P.style.height="calc(100% - ".concat(E.offsetHeight,"px)");case 64:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}();function Yf(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return Jf(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Jf(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Jf(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(c()(this,t),Kf(i=Zf(this,t,[e,n]),iv,void 0),Kf(i,nv,!1),Kf(i,ov,[]),i.viewer=e.viewer,!i.options.path)return i.error="未提供路径!",window.ELEMENT&&(window.ELEMENT.Message.closeAll(),window.ELEMENT.Message({message:i.error,type:"warning",duration:1500})),console.warn(i.error),Ee()(i);for(var s in i.colors=tv,i.options.headTables=n.headTables||[],i.options.name=n.name||"未命名对象",i.options.show=!n.show&&!1!==n.show||n.show,i.total=0,i.page=1,i.pageSize=20,i.currentData=[],i.data=[],i.list=[],i.imgEntity=[],i.Dialog=o,i._elms={},i.sdk.addIncetance(i.options.id,i),i.disaster_type_colors=tv[i.options.disaster_type]?Xf({},tv[i.options.disaster_type]):void 0,i.disaster_type_colors)i.disaster_type_colors[s]=i.cmykToRgb(i.disaster_type_colors[s]);return i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"vector"}},{key:"show",get:function(){return this.options.show},set:function(e){this.setShow(e)}},{key:"opacity",get:function(){return this.options.opacity},set:function(e){this.options.opacity=e,this.entity&&this.entity.entities.values.forEach((function(t){t.point&&(t.point.color=t.point.color._value.withAlpha(e)),t.polygon&&(t.polygon.material=t.polygon.material.color._value.withAlpha(e)),t.polyline&&(t.polyline.material=t.polyline.material.color._value.withAlpha(e))}))}},{key:"on",value:function(){if(this.sdk&&this.viewer&&this.options.path)return this.init()}},{key:"init",value:(l=_()(S.a.mark((function e(){var i=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=_()(S.a.mark((function e(o,s){var a,r,l,c,u,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i.options.host=i.options.host||Object(n.a)(),a=i.options.host+"/gdal/import",(r=new FormData).append("path",i.options.path),e.next=7,fetch(a,{method:"post",headers:{Authorization:Object(n.b)()},body:r});case 7:if(l=e.sent,console.log("response",l),200!==l.status){e.next=21;break}return e.next=12,l.arrayBuffer();case 12:return c=e.sent,u=new Uint8Array(c),h=i.decompressGzip(u),0===i.data.length&&(i.data=JSON.parse(h)),console.log("this.data",i.data),e.next=19,i.formatData();case 19:t.create(i),o();case 21:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)}))),function(){return l.apply(this,arguments)})},{key:"formatData",value:(r=_()(S.a.mark((function e(){var t,i,n,o,a,r,l,c,u;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=[],i=function(e,t,n){if(e)if(Array.isArray(e)){for(var o=!1,s=0;s0&&void 0!==C[0]&&C[0],i=C.length>1&&void 0!==C[1]?C[1]:{},this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=74;break}return e.next=7,new Be(this.sdk,this.options,{title:"编辑属性",left:"180px",top:"100px",confirmCallBack:function(e){b.name=b.name.trim(),b.name||(b.name="未命名对象"),b.originalOptions.name=b.name,b.originalOptions.field=b.field,b._DialogObject.close(),i.confirmCallBack&&i.confirmCallBack({id:b.options.id,name:b.originalOptions.name,field:b.originalOptions.field})},closeCallBack:function(){b.reset(),i.closeCallBack&&i.closeCallBack()}});case 7:this._DialogObject=e.sent,n='\n
            \n
            \n 文件名称:\n \n
            \n
            \n
            \n
            \n 名称字段选择:\n
            \n
            \n
            \n ',(o=document.createElement("div")).innerHTML=n,this._DialogObject.contentAppChild(o),(s=o.getElementsByClassName("flie-name")[0]).value=this.options.name,s.addEventListener("input",(function(){b.options.name=s.value})),a=[],e.t0=S.a.keys(this.geojson.features[0].properties);case 17:if((e.t1=e.t0()).done){e.next=31;break}r=e.t1.value,l=r,c=0;case 21:if(!(c').concat(v,""),m+=y,e.next=52;break;case 67:d.innerHTML=m,d.value=this.options.field,d.addEventListener("input",(function(){b.options.field=d.value})),this._elms.name=s,this._elms.field=d,e.next=75;break;case 74:this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null);case 75:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"editContentById",value:function(e,t){for(var i=0;i0?o.getElementsByClassName("table-empty")[0].style.display="none":o.getElementsByClassName("table-empty")[0].style.display="flex";for(var a=0;a\n
            '+this._DialogObject.attribute.link.content[a].url+'
            \n
            \n \n \n
            \n ',l=document.createRange().createContextualFragment(r);s.appendChild(l)}for(var c=s.getElementsByClassName("tr"),u={linkEdit:(i=_()(S.a.mark((function t(i){var o,s,a,r,l;return S.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.setAttributeLinkById(e,n._DialogObject.attribute.link.content);case 2:o=n._DialogObject._element.content.getElementsByClassName("attribute-content-link")[1].getElementsByClassName("table")[0],s=o.getElementsByClassName("table-body")[0],a=s.getElementsByClassName("tr"),r=S.a.mark((function e(t){var o,s,r,l,c,h;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i!==t){e.next=33;break}a[t].innerHTML='\n
            \n \n
            \n
            \n
            \n \n \n
            \n
            \n
            \n \n \n
            ',(o=a[t].getElementsByClassName("td"))[0].getElementsByClassName("input")[0].value=n._DialogObject.attribute.link.content[i].name,o[1].getElementsByClassName("input")[0].value=n._DialogObject.attribute.link.content[i].url,s=a[t].getElementsByTagName("button"),r=0;case 8:if(!(r1&&void 0!==d[1]?d[1]:{},Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!t){e.next=14;break}n=S.a.mark((function e(n){var o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p.geojson.features[n].id===t&&("Point"===p.geojson.features[n].geometry.type?p.getClampToHeight({lng:p.geojson.features[n].geometry.coordinates[0],lat:p.geojson.features[n].geometry.coordinates[1]}).then((function(e){p.sdk.viewer.camera.flyTo({orientation:i.orientation,destination:Cesium.Cartesian3.fromDegrees(p.geojson.features[n].geometry.coordinates[0],p.geojson.features[n].geometry.coordinates[1],e+(i.height||500))})})):(o=p.geojson.features[n].geometry.range)&&(s=[],p.getClampToHeight({lng:o[0],lat:o[1]}).then((function(e){var t=Cesium.Cartesian3.fromDegrees(o[0],o[1],e);s.push(t.x,t.y,t.z),p.getClampToHeight({lng:o[2],lat:o[3]}).then((function(e){var t=Cesium.Cartesian3.fromDegrees(o[2],o[3],e);s.push(t.x,t.y,t.z);var n=Cesium.BoundingSphere.fromVertices(s);p.sdk.viewer.camera.flyToBoundingSphere(n,{offset:i.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-90),roll:Cesium.Math.toRadians(0)}})}))}))));case 1:case"end":return e.stop()}}),e)})),o=0;case 7:if(!(oo&&(o=l),s+=16}s=s+10+5*(n.length-1),o+=30,t.width=o,t.height=s;var c=i.createLinearGradient(0,0,o,s);return i.fillStyle=c,i.fillRect(0,0,o,s),i.fillStyle="#ffffff",i.font="16px YaHei",i.strokeStyle="#000000",i.strokeText(n,15,16*n.length+6.25+5*n.length),i.fillText(n,15,16*n.length+6.25+n.length-5),i.moveTo(o/2,s),i.stroke(),i.closePath(),t.toDataURL()}},{key:"createTableContent",value:function(e){for(var t="",i=0;i
            ').concat(e.currentData[i].attr[s],"
            ");t+=n=n+o+""}return t}}]);var i,o,a,r,l}(vt);function av(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function rv(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};c()(this,t),(i=lv(this,t,[e,n])).options.text=n.text||"未命名对象";for(var s=i.options.text.split("\n"),a=0;a80&&(s[a]=s[a].slice(0,80-s[a].length));if(s.length>70&&s.splice(70-s.length),i.options.text=s.join("\n"),i.options.show=!n.show&&!1!==n.show||n.show,i.options.angle=n.angle||0,i.options.scale=n.scale||0===n.scale?n.scale:1,i.options.speed=n.speed||0===n.speed?n.speed:1,i.options.color=n.color||"#FFC107",i.options.position=n.position,delete i.options.name,!i.options.position&&i.options.positions){var r=function(e,t){var i=t[0]-e[0],n=t[1]-e[1];return Math.atan2(n,i)};i.options.position={lng:(i.options.positions[0].lng+i.options.positions[1].lng)/2,lat:(i.options.positions[0].lat+i.options.positions[1].lat)/2};var l=turf.point([i.options.positions[0].lng,i.options.positions[0].lat]),u=turf.point([i.options.positions[1].lng,i.options.positions[1].lat]),h={units:"miles"},p=turf.rhumbDistance(l,u,h),d=r([i.options.positions[0].lng,i.options.positions[0].lat],[i.options.positions[1].lng,i.options.positions[1].lat]);i.options.angle=(360+Cesium.Math.toDegrees(d))%360;var m=1e-4*Math.abs(Math.cos(Math.PI/180*i.options.position.lat)),f=i.getcanvas(),v=f.height/f.width,g=i.options.position.lng-1e-4/v,y=i.options.position.lat-m,b=i.options.position.lng+1e-4/v,C=i.options.position.lat+m,w=(y+C)/2,k=turf.point([g,w]),_=turf.point([b,w]),x=turf.rhumbDistance(k,_,h),S=Cesium.Math.toRadians(i.options.position.lat);x*=1+Math.abs(Math.sin(d)*Math.tan(S)*Math.sin(S)*Math.sin(S)),i.options.scale=p/x}return i.duration=5e4,i.entity,i._positionEditing=!1,i.Dialog=o,i._EventBinding=new Ye,i._elms={},i.previous={position:rv({},i.options.position)},i.event=new te.a(i.sdk),i.sdk.addIncetance(i.options.id,i),i.create(),i}return Me()(t,e),h()(t,[{key:"lng",get:function(){return this.options.position.lng},set:function(e){this.options.position.lng=e,this._elms.lng&&this._elms.lng.forEach((function(t){t.value=e}))}},{key:"lat",get:function(){return this.options.position.lat},set:function(e){this.options.position.lat=e,this._elms.lat&&this._elms.lat.forEach((function(t){t.value=e}))}},{key:"name",get:function(){}},{key:"text",get:function(){return this.options.text},set:function(e){var t=this;this.options.text=e;for(var i=this.options.text.split("\n"),n=0;n80){window.ELEMENT&&window.ELEMENT.Message({message:"行超过80个字符,请按回车(Enter)后,继续输入",type:"warning",duration:1e3}),i[n]=i[n].slice(0,80-i[n].length)}if(i.length>70){i.splice(70-i.length);window.ELEMENT&&window.ELEMENT.Message({message:"超过最大输入字符",type:"warning",duration:1e3})}if(this.options.text=i.join("\n"),this.entity){var o=this.getcanvas(),s=o.height/o.width;this.entity.rectangle.material=new Cesium.CustomMaterialSource({image:o.toDataURL("image/png"),color:this.options.color,repeat:new Cesium.Cartesian2(1,1),duration:this.duration/this.options.speed,fltr:!1,is2D:this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE2D}),this.entity.rectangle.coordinates=new Cesium.CallbackProperty((function(){var e,i=Math.abs(Math.cos(Math.PI/180*t.options.position.lat))*(1e-4*t.options.scale),n=[t.options.position.lng-1e-4*t.options.scale/s,t.options.position.lat-i,t.options.position.lng+1e-4*t.options.scale/s,t.options.position.lat+i];return(e=Cesium.Rectangle).fromDegrees.apply(e,n)}),!1)}this._elms.text&&this._elms.text.forEach((function(e){e.value=t.options.text}))}},{key:"angle",get:function(){return this.options.angle},set:function(e){this.options.angle=Number(e),this._elms.angle&&this._elms.angle.forEach((function(t){t.value=e}))}},{key:"scale",get:function(){return this.options.scale},set:function(e){this.options.scale=Number(e),this._elms.scale&&this._elms.scale.forEach((function(t){t.value=e}))}},{key:"speed",get:function(){return this.options.speed},set:function(e){this.options.speed=Number(e);var t=this.getcanvas();this.entity.rectangle.material=new Cesium.CustomMaterialSource({image:t.toDataURL("image/png"),color:this.options.color,repeat:new Cesium.Cartesian2(1,1),duration:this.duration/this.options.speed,fltr:!1,is2D:this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE2D}),this._elms.speed&&this._elms.speed.forEach((function(t){t.value=e}))}},{key:"color",get:function(){return this.options.color},set:function(e){var t=this;this.options.color=e;var i=this.getcanvas();this.entity.rectangle.material=new Cesium.CustomMaterialSource({image:i.toDataURL("image/png"),color:this.options.color,repeat:new Cesium.Cartesian2(1,1),duration:this.duration/this.options.speed,fltr:!1,is2D:this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE2D}),this._elms.color&&this._elms.color.forEach((function(i,n){var o=new YJColorPicker({el:i.el,size:"mini",alpha:!0,defaultColor:e,disabled:!1,openPickerAni:"opacity",sure:function(e){t.color=e},clear:function(){t.color="rgba(255,255,255,1)"}});t._elms.color[n]=o}))}},{key:"create",value:function(){var e=this,t=this.getcanvas(),i=t.height/t.width;this.entity=this.sdk.viewer.entities.add({id:this.options.id,show:this.options.show,rectangle:{coordinates:new Cesium.CallbackProperty((function(){var t,n=Math.abs(Math.cos(Math.PI/180*e.options.position.lat))*(1e-4*e.options.scale),o=[e.options.position.lng-1e-4*e.options.scale/i,e.options.position.lat-n,e.options.position.lng+1e-4*e.options.scale/i,e.options.position.lat+n];return(t=Cesium.Rectangle).fromDegrees.apply(t,o)}),!1),material:new Cesium.CustomMaterialSource({image:t.toDataURL("image/png"),color:this.options.color,repeat:new Cesium.Cartesian2(1,1),duration:this.duration/this.options.speed,fltr:!1,is2D:this.sdk.viewer.scene.mode===Cesium.SceneMode.SCENE2D}),rotation:new Cesium.CallbackProperty((function(){return Cesium.Math.toRadians(e.options.angle)}),!1),stRotation:new Cesium.CallbackProperty((function(){return Cesium.Math.toRadians(e.options.angle)}),!1)}}),"cesium-viewer 2d"===this.sdk.viewer._element.className&&(this.entity.rectangle.height=10),Object(J.syncData)(this.sdk,this.options.id),this.options.show&&Object(Z.setSplitDirection)(0,this.options.id)}},{key:"edit",value:(o=_()(S.a.mark((function e(t){var i,n,o,s=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=18;break}return e.next=6,new Be(this.sdk,this.originalOptions,{title:"贴地文字属性",left:"180px",top:"100px",confirmCallBack:function(e){s.text=s.text.trim(),s.text||(s.text="未命名对象"),s.originalOptions=s.deepCopyObj(s.options),s._DialogObject.close(),s.Dialog.confirmCallBack&&s.Dialog.confirmCallBack(s.originalOptions),Object(J.syncData)(s.sdk,s.options.id),Object(Z.syncSplitData)(s.sdk,s.options.id)},resetCallBack:function(){s.reset(),s.Dialog.resetCallBack&&s.Dialog.resetCallBack()},removeCallBack:function(){s.Dialog.removeCallBack&&s.Dialog.removeCallBack()},closeCallBack:function(){s.reset(),s.positionEditing=!1,s.Dialog.closeCallBack&&s.Dialog.closeCallBack()},showCallBack:function(e){s.show=e,s.Dialog.showCallBack&&s.Dialog.showCallBack()},translationalCallBack:function(){s.positionEditing=!s.positionEditing}},!0);case 6:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" ground-text",(i=document.createElement("div")).innerHTML='\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
            \n
            \n 滚动速度\n \n
            \n \n \n
            \n
            \n
            \n
            \n \n ',this._DialogObject.contentAppChild(i),n=i.getElementsByTagName("*"),this._EventBinding.on(this,n),this._elms=this._EventBinding.element,o=new YJColorPicker({el:i.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){s.color=e},clear:function(){s.color="rgba(255,255,255,1)"}}),this._elms.color=[o],e.next=19;break;case 18:this._DialogObject&&this._DialogObject.remove&&(this._DialogObject.remove(),this._DialogObject=null);case 19:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"positionEditing",get:function(){return this._positionEditing},set:function(e){var t=this;this.sdk&&this.sdk.viewer&&this.entity&&(this._positionEditing=e,this.previous={position:rv({},this.options.position)},!0===e?(this.tip&&this.tip.destroy(),this.tip=new St.a("点击鼠标左键确认,右键取消",this.sdk),this.event.mouse_move((function(e,i){var n=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=n.lng,t.lat=n.lat,t.tip.setPosition(i,e.endPosition.x,e.endPosition.y)})),this.event.mouse_left((function(e,i){var n=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=n.lng,t.lat=n.lat,t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1})),this.event.mouse_right((function(e,i){t.lng=t.previous.position.lng,t.lat=t.previous.position.lat,t.positionEditing=!1})),this.event.gesture_pinck_start((function(e,i){var n=new Date;t.event.gesture_pinck_end((function(){if(new Date-n>=500)t.lng=t.previous.position.lng,t.lat=t.previous.position.lat,t.positionEditing=!1;else{var e=t.cartesian3Towgs84(i,t.sdk.viewer);t.lng=e.lng,t.lat=e.lat,t.event.mouse_move((function(){})),t.event.mouse_left((function(){})),t.event.mouse_right((function(){})),t.event.gesture_pinck_start((function(){})),t.event.gesture_pinck_end((function(){})),t.positionEditing=!1}}))}))):(this._positionEditingCallback&&(this._positionEditingCallback(),this._positionEditingCallback=null),this.event&&(this.event.mouse_move((function(){})),this.event.mouse_left((function(){})),this.event.mouse_right((function(){})),this.event.gesture_pinck_start((function(){})),this.event.gesture_pinck_end((function(){}))),this.tip&&this.tip.destroy()))}},{key:"openPositionEditing",value:function(e){this.positionEditing=!0,this._positionEditingCallback=e}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p,d,m,f,v,g,y=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=y.length>0&&void 0!==y[0]?y[0]:{},i=this.getcanvas(),n=i.height/i.width,Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(o={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},s=this.options.customView.relativePosition.lng,a=this.options.customView.relativePosition.lat,r=this.options.customView.relativePosition.alt,l=Cesium.Cartesian3.fromDegrees(s,a,r),c={lng:0,lat:0},this.options.position?c=rv({},this.options.position):this.options.positions?c=rv({},this.options.positions[0]):this.options.center?c=rv({},this.options.center):this.options.start?c=rv({},this.options.start):(this.options.hasOwnProperty("lng")&&(c.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(c.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(c.alt=this.options.alt)),c.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(c);case 17:c.alt=e.sent;case 18:s=this.options.customView.relativePosition.lng+c.lng,a=this.options.customView.relativePosition.lat+c.lat,r=this.options.customView.relativePosition.alt+c.alt,l=Cesium.Cartesian3.fromDegrees(s,a,r),this.sdk.viewer.camera.flyTo({destination:l,orientation:o}),e.next=34;break;case 25:return u=Math.abs(Math.cos(Math.PI/180*this.options.position.lat))*(1e-4*this.options.scale),h=[[this.options.position.lng-1e-4*this.options.scale/n,this.options.position.lat-u],[this.options.position.lng+1e-4*this.options.scale/n,this.options.position.lat+u]],e.next=29,this.getClampToHeight(this.options.position);case 29:for(p=e.sent,d=[],m=0;m80&&(i[n]=i[n].slice(0,80-i[n].length));i.length>70&&i.splice(70-i.length),this.options.text=i.join("\n");for(var o=0,s=0;s2&&void 0!==arguments[2]?arguments[2]:{};c()(this,t),(n=uv(this,t,[e,i])).options.text=i.text||"未命名对象";for(var s=n.options.text.split("\n"),a=0;a80&&(s[a]=s[a].slice(0,80-s[a].length));return s.length>70&&s.splice(70-s.length),n.options.text=s.join("\n"),n.options.color=i.color||"#FFC107",n.options.positions=i.positions,n.options.speed=i.speed||0===i.speed?i.speed:1,n.options.show=!i.show&&!1!==i.show||i.show,n.nodePoints=[],n.entity,delete n.options.name,n.extrudedHeight,n._EventBinding=new Ye,n.Dialog=o,n._elms={},n.sdk.addIncetance(n.options.id,n),t.create(n),n}return Me()(t,e),h()(t,[{key:"name",get:function(){}},{key:"text",get:function(){return this.options.text},set:function(e){this.options.text=e;for(var t=this.options.text.split("\n"),i=0;i80){window.ELEMENT&&window.ELEMENT.Message({message:"行超过80个字符,请按回车(Enter)后,继续输入",type:"warning",duration:1e3}),t[i]=t[i].slice(0,80-t[i].length)}if(t.length>70){t.splice(70-t.length);window.ELEMENT&&window.ELEMENT.Message({message:"超过最大输入字符",type:"warning",duration:1e3})}if(this.options.text=t.join("\n"),this.entity){for(var n=this.options.positions,o=[],s=[],a=[],r=this.getMaterial(),l=this.computeDistance2(n),c=this.aspectRatio?l/this.aspectRatio:0,u=0;u\n
            \n
            \n
            \n 名称\n \n
            \n
            \n 颜色\n
            \n
            \n
            \n
            \n \n
            \n
            \n
            \n 滚动速度\n \n \n
            \n
            \n
            \n \n ',this._DialogObject.contentAppChild(i),n=new YJColorPicker({el:i.getElementsByClassName("color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){s.color=e},clear:function(){s.color="rgba(255,255,255,1)"}}),o=i.getElementsByTagName("*"),this._EventBinding.on(this,o),this._elms=this._EventBinding.element,this._elms.color=[n],e.next=19;break;case 18:this._DialogObject&&this._DialogObject.remove&&(this._DialogObject.remove(),this._DialogObject=null);case 19:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"reset",value:function(){if(this.entity){this.options=this.deepCopyObj(this.originalOptions),this.text=this.originalOptions.text,this.color=this.originalOptions.color,this.speed=this.originalOptions.speed;for(var e=this.options.positions,t=[],i=[],n=[],o=this.computeDistance2(e),s=this.aspectRatio?o/this.aspectRatio:0,a=0;a80&&(i[n]=i[n].slice(0,80-i[n].length));i.length>70&&i.splice(70-i.length),this.options.text=i.join("\n");for(var o=0,s=0;s0&&void 0!==arguments[0]?arguments[0]:function(){};if(YJ.Measure.GetMeasureStatus())t("上一次测量未结束");else{var i,n;YJ.Measure.SetMeasureStatus(!0),this._nodeEditCallback=t,this.tip=new St.a("请选择一个顶点,右键取消",this.sdk),this.event=new te.a(this.sdk),this.nodePoints=[];for(var o=this.options.positions,s=[],a=[],r=[],l=this.computeDistance2(o),c=this.aspectRatio?l/this.aspectRatio:0,u=0;u=500?d(o,i):p(o,i)}))}));for(var m=0;m2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(o=mv(this,t)).sdk=e,o.viwer=e.viewer,o.options=dv({},i),o.options.host=i.host||Object(n.a)(),o.options.name=i.name||"未命名对象",o.options.show=!i.show&&!1!==i.show||i.show,"number"==typeof i.scale?(o.options.scale={},o.options.scale.x=i.scale,o.options.scale.y=i.scale,o.options.scale.z=i.scale):(o.options.scale=i.scale||{},o.options.scale.x=o.options.scale.x||0===o.options.scale.x?o.options.scale.x:1,o.options.scale.y=o.options.scale.y||0===o.options.scale.y?o.options.scale.y:1,o.options.scale.z=o.options.scale.z||0===o.options.scale.z?o.options.scale.z:1),o.primitive=null,o._loadEvent=void 0,o._loaded=!1,o._elms={},o.Dialog=s,o._EventBinding=new Ye,t.setDefaultValue(o),o.requestResource(),o.ControllerObject=new fi(o.sdk,{position:dv({},o.options.position),rotate:{x:(360+o.options.roll%360)%360,y:(360+-o.options.pitch%360)%360,z:(360+-o.options.heading%360)%360}}),o.ControllerObject.controllerCallBack=o.controllerCallBack,o.HeadingPitchRollCallBack=o.Dialog.HeadingPitchRollCallBack,o}return Me()(t,e),h()(t,[{key:"requestResource",value:function(){this.addResource().then((function(e){}))}},{key:"addResource",value:(s=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h,p;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=this).options.xmlURL=t.options.objUrl.replace(".obj",".xml"),""===t.options.xmlURL){e.next=34;break}return e.next=5,fetch(t.options.xmlURL);case 5:if(!(i=e.sent).ok){e.next=32;break}return e.next=9,i.text();case 9:return n=e.sent,o=new DOMParser,s=o.parseFromString(n,"text/xml"),a=s.getElementsByTagName("Position")[0].textContent.split(","),r=s.getElementsByTagName("Crs")[0].textContent,l=t.convert([{x:a[0],y:a[1],z:a[2]}],r,"EPSG:4326"),t.options.position=t.options.position||{lng:l.points[0].x,lat:l.points[0].y,alt:l.points[0].z},t.ControllerObject.position=t.options.position,c=t.viwer.scene,u=Cesium.Cartesian3.fromDegrees(t.options.position.lng,t.options.position.lat,t.options.position.alt),h=Cesium.Transforms.headingPitchRollToFixedFrame(u,new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(.85),Cesium.Math.toRadians(0),Cesium.Math.toRadians(0))),e.next=22,window.objLoader.Load(t.options.objUrl);case 22:(p=e.sent).show=t.options.show,p.modelMatrix=h,p.setFlvVideo(t.options.videoUrl),c.primitives.add(p),t.primitive=p,t.controllerCallBack({rotate:{x:t.options.roll,y:-t.options.pitch,z:-t.options.heading},position:dv({},t.options.position)}),this.loaded=!0,this._loaded=!0,this._loadEvent&&this._loadEvent();case 32:e.next=36;break;case 34:return console.error("请填写xml路径"),e.abrupt("return");case 36:if(""!==t.options.objUrl){e.next=39;break}return console.error("请填写obj模型路径"),e.abrupt("return");case 39:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"flyTo",value:(o=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=u.length>0&&void 0!==u[0]?u[0]:{},!this._error){e.next=3;break}return e.abrupt("return");case 3:if(Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),!(this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)){e.next=25;break}if(i={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},n=this.options.customView.relativePosition.lng,o=this.options.customView.relativePosition.lat,s=this.options.customView.relativePosition.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),r={lng:0,lat:0},this.options.position?r=dv({},this.options.position):this.options.positions?r=dv({},this.options.positions[0]):this.options.center?r=dv({},this.options.center):this.options.start?r=dv({},this.options.start):(this.options.hasOwnProperty("lng")&&(r.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(r.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(r.alt=this.options.alt)),r.hasOwnProperty("alt")){e.next=18;break}return e.next=17,this.getClampToHeight(r);case 17:r.alt=e.sent;case 18:n=this.options.customView.relativePosition.lng+r.lng,o=this.options.customView.relativePosition.lat+r.lat,s=this.options.customView.relativePosition.alt+r.alt,a=Cesium.Cartesian3.fromDegrees(n,o,s),this.sdk.viewer.camera.flyTo({destination:a,orientation:i}),e.next=28;break;case 25:l=100*Math.tan(60),c=l/111319.55,this.sdk.viewer.camera.flyTo({destination:new Cesium.Cartesian3.fromDegrees(this.options.position.lng,this.options.position.lat-c,this.options.position.alt+100),orientation:t.orientation||{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-60),roll:Cesium.Math.toRadians(0)}});case 28:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"edit",value:(i=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c=this,u=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u.length>0&&void 0!==u[0]&&u[0],t=!1,this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),e.next=6,new Be(this.sdk,this.options,{title:"编辑属性",left:"180px",top:"100px",confirmCallBack:function(e){c.name=c.name.trim(),c.name||(c.name="未命名对象"),c.originalOptions=c.deepCopyObj(c.options),c._DialogObject.close(),c.Dialog.confirmCallBack&&c.Dialog.confirmCallBack(c.originalOptions)},resetCallBack:function(){c.reset(),c.Dialog.resetCallBack&&c.Dialog.resetCallBack()},removeCallBack:function(){c.Dialog.removeCallBack&&c.Dialog.removeCallBack()},closeCallBack:function(){c.reset(),c.positionEditing=!1,c.Dialog.closeCallBack&&c.Dialog.closeCallBack()},rotateCallBack:function(){c.rotationEditing?c.rotationEditing=!1:c.rotationEditing=!0},translationalCallBack:function(){c.positionEditing?c.positionEditing=!1:c.positionEditing=!0}},!0);case 6:for(this._DialogObject=e.sent,(i=document.createElement("div")).style.width="448px",i.innerHTML='\n \n
            \n
            \n
            \n 名称\n \n
            \n
            \n
            \n
            \n
            \n \n
            \n
            \n
            \n 经度\n \n
            \n
            \n 海拔高度\n
            \n \n m\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 ',this._DialogObject.contentAppChild(i),n=this._DialogObject._element.content.getElementsByClassName("checkbox-box")[0].querySelector("input"),o=this._DialogObject._element.content.getElementsByClassName("equal")[0],s=this._DialogObject._element.content.getElementsByClassName("no-equal")[0],n.checked=t,n.addEventListener("change",(function(e){(t=e.target.checked)?(o.style.display="flex",s.style.display="none"):(o.style.display="none",s.style.display="flex")})),(a=o.getElementsByTagName("input"))[0].value=this.scaleX,a[1].value=this.scaleX,a[0].addEventListener("input",(function(e){c.scaleX=e.target.value,c.scaleY=e.target.value,c.scaleZ=e.target.value})),a[1].addEventListener("input",(function(e){c.scaleX=e.target.value,c.scaleY=e.target.value,c.scaleZ=e.target.value})),t?(o.style.display="flex",s.style.display="none"):(o.style.display="none",s.style.display="flex"),setTimeout((function(){if(c._DialogObject._element.foot){var e=c._DialogObject._element.foot.getElementsByClassName("rotate")[0];e&&(e.style.position="absolute",e.style.left="100px")}}),0),r=i.getElementsByTagName("*"),l=0;l1&&void 0!==arguments[1]?arguments[1]:{};c()(this,e),this.sdk=t,this.options=wv({},i),this.options.show=!i.show&&!1!==i.show||i.show,this.options.host=this.options.host||Object(n.a)(),this.objModelObject=[],this._loaded=!1,this._loadEvent=void 0,this.on()}),[{key:"show",get:function(){return this.options.show},set:function(e){var t=this;if("boolean"==typeof e){this.options.show=e;for(var i=function(i){t.objModelObject[i].load((function(){t.objModelObject[i].show=e}))},n=0;n1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),Ev(i=Sv(this,t,[e,n]),Mv,void 0),i.options.id=n.id||i.randomString(),i.options.name=n.name||"漫游路径",i.options.points=n.points||[],i.options.repeat&&(i.options.repeat=Number(i.options.repeat)),i.Dialog=o,i}return Me()(t,e),h()(t,[{key:"repeat",get:function(){return this.options.repeat},set:function(e){if(this.options.repeat!=Number(e)&&(this.options.repeat=Number(e),this._DialogObject&&this._DialogObject._element&&this._DialogObject._element.content)){var t=this._DialogObject._element.content.querySelector("input[name='repeat']");t.checked=e===1/0,this.Dialog.changeRepeatStateCallBack&&this.Dialog.changeRepeatStateCallBack(t.checked)}}},{key:"edit",value:(i=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l,c,u,h,p,d,m,f,v=this;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this,n=this.sdk.viewer,o=0,this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=44;break}return s=function(e){var t=r.getElementsByClassName("tr");t.length>0&&(t[t.length-1].querySelector("input[name='time']").disabled=void 0);var s=r.getElementsByClassName("tr active")[0];s&&(s.className="tr");var a=document.createElement("div");a.className="tr active",a.innerHTML='\n
            视点'.concat(c+1,'
            \n
            \n \n
            \n
            \n
            \n '),a.addEventListener("click",(function(e){if(e.target.parentNode===a){var i=r.getElementsByClassName("tr active")[0];i&&(i.className="tr"),a.className="tr active";for(var n=0;nn+1?(o--,t[o-1].className="tr active"):o==n+1&&(t.length==n&&(o-=1),0!=t.length&&(t[o-1].className="tr active")),t.length>0){var s=t[t.length-1].querySelector("input[name='time']");s.disabled="disabled",s.value=0}break}})),p.addEventListener("input",(function(t){m.checked=!1,e.duration=Number(p.value),e.duration<0&&(e.duration=0)})),p.addEventListener("blur",(function(){p.value=Number(Number(p.value).toFixed(2)),p.value<0&&(p.value=0)})),r.insertBefore(a,t[o]),o++,t[t.length-1].querySelector("input[name='time']").disabled="disabled"},e.next=8,new Te.a(n._container,{title:"飞行漫游",left:"180px",top:"100px",closeCallBack:function(){v.cease()}});case 8:return this._DialogObject=e.sent,e.next=11,this._DialogObject.init();case 11:for((a=document.createElement("div")).className="fly-roam",a.innerHTML='\n \n
            \n
            \n
            \n 名称\n \n
            \n
            \n
            \n
            \n \n
            \n
            \n
            \n \n 设置总时长\n
            \n \n 秒(s)\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
            时长(s)
            \n
            操作
            \n
            \n
            \n
            \n
            \n
            \n

            暂无数据

            \n
            \n
            \n
            \n
            \n \n ',this._DialogObject.contentAppChild(a),a.getElementsByTagName("*"),r=a.getElementsByClassName("table-body")[0],l=a.getElementsByClassName("table-empty")[0],c=0,u=new Proxy([],{set:function(e,t,i){return e[t]=i,e.length>0?l.style.display="none":l.style.display="flex",!0}}),c=0;c0&&v.flyTo(0)})),a.getElementsByClassName("add-point")[0].addEventListener("click",(function(){var e={duration:0,position:v.cartesian3Towgs84(n.camera.position,n),orientation:{heading:n.camera.heading,pitch:n.camera.pitch,roll:n.camera.roll}};u.splice(o,0,e),v.options.points.splice(o,0,e),s(e),c++})),a.getElementsByClassName("modify-point")[0].addEventListener("click",(function(){if(o){var e=v.cartesian3Towgs84(n.camera.position,n);v.options.points[o-1].position=u[o-1].position=e,v.options.points[o-1].orientation=u[o-1].orientation={heading:n.camera.heading,pitch:n.camera.pitch,roll:n.camera.roll},v.message({text:"操作成功"})}})),d=a.querySelector("input[name='totalTime']"),m=a.querySelector("input[name='isTotalTime']"),f=a.querySelector("input[name='repeat']"),m.addEventListener("change",(function(){var e=r.getElementsByClassName("tr");if(m.checked&&e.length>0){for(var t=Number((Number(d.value)/(e.length-1)).toFixed(2)),i=0;i0){for(var t=Number((Number(d.value)/(e.length-1)).toFixed(2)),i=0;i0&&void 0!==arguments[0]?arguments[0]:0;Object(X.w)(0);var i=this,n=this.options.points,o=this.repeat;Object(X.f)(i.sdk);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1?arguments[1]:void 0;Dv(Mv,e)&&Dv(Mv,e).destroy();var a=e;Pv(Mv,e,new Cesium.ScreenSpaceEventHandler(a.sdk.viewer.canvas)),Dv(Mv,e).setInputAction((function(t){e.cease()}),Cesium.ScreenSpaceEventType.RIGHT_CLICK);var r,l=a.sdk.viewer;Object(X.w)(0),l.camera.cancelFlight(),l.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(n[t].position.lng,n[t].position.lat,n[t].position.alt),orientation:n[t].orientation,duration:i?n[t-1].duration:.5,maximumHeight:n[t].position.alt,complete:(r=_()(S.a.mark((function i(){return S.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:t++,e.repeat===1/0?o=1/0:o===1/0&&(o=e.repeat),t<=n.length-1?s(t,!0):o?(o--,s(0)):Dv(Mv,e)&&Dv(Mv,e).destroy();case 3:case"end":return i.stop()}}),i)}))),function(){return r.apply(this,arguments)}),easingFunction:i?Cesium.EasingFunction.LINEAR_NONE:Cesium.EasingFunction.EXPONENTIAL_OUT})};s(t)}},{key:"cease",value:function(){this.sdk&&this.sdk.viewer&&this.sdk.viewer.camera.cancelFlight(),Dv(Mv,this)&&Dv(Mv,this).destroy()}},{key:"remove",value:function(){this._DialogObject&&this._DialogObject.close?(this._DialogObject.close(),this._DialogObject=null):this.cease()}}]);var i}(vt);function Nv(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}var Bv=function(){return h()((function e(t,i,n){c()(this,e),this.options=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"move",t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:90,n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if("move"===e){var o=turf.point([this.options.position.lng,this.options.position.lat]),s=Cesium.Math.toDegrees(this.hpr.heading),a=s+i,r={units:"degrees"},l=turf.destination(o,t,a,r).geometry.coordinates;this.position=Cesium.Cartesian3.fromDegrees(l[0],l[1],this.options.position.alt+this.options.normalHeight),this.options.position.lng=l[0],this.options.position.lat=l[1],this.viewer.camera.setView({destination:Cesium.Cartesian3.fromDegrees(l[0],l[1],this.viewer.camera.positionCartographic.height)})}"update"===e&&(this.position=t,this.options.videoUrl&&this.updatePolygonPosition()),n&&(this.syncHpr(),this.updateFrustumAttributes())}},{key:"syncHpr",value:function(){if(this.viewer1){var e=this.options.position,t=e.lng,i=e.lat,n=e.alt,o=-this.hpr.pitch-Cesium.Math.toRadians(-90);this.viewer1.camera.setView({destination:Cesium.Cartesian3.fromDegrees(t,i,n+this.options.normalHeight),orientation:{heading:this.hpr.heading+Cesium.Math.toRadians(-90),pitch:o,roll:this.hpr.roll}})}}},{key:"updateFrustumHPR",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.head,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.pitch,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"";function s(e){return e*Math.PI/180}"alone"==o?(this.hpr.heading=s(e),this.hpr.pitch=s(t),this.hpr.roll=s(i)):(this.hpr.heading=Cesium.Math.negativePiToPi(e),this.hpr.pitch=Cesium.Math.negativePiToPi(t),this.hpr.roll=Cesium.Math.negativePiToPi(i)),n&&(this.syncHpr(),this.updateFrustumAttributes())}},{key:"updateFrustumAttributes",value:function(){if(this.position&&this.hpr){var e=Cesium.Transforms.headingPitchRollToFixedFrame(this.position,this.hpr);if(e)try{var t=new Cesium.FrustumOutlineGeometry({frustum:this.frustum,origin:Cesium.Matrix4.getTranslation(e,new Cesium.Cartesian3),orientation:Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(e,new Cesium.Matrix3))}),i=new Cesium.PolylineColorAppearance({translucent:!1}),n=Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW),o=new Cesium.FrustumGeometry({frustum:this.frustum,origin:Cesium.Matrix4.getTranslation(e,new Cesium.Cartesian3),orientation:Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(e,new Cesium.Matrix3))}),s=new Cesium.MaterialAppearance({material:Cesium.Material.fromType("Color",{color:Cesium.Color.YELLOW.withAlpha(.5)}),translucent:!0}),a=Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED.withAlpha(.5));this.currentFrustumOutline&&this.viewer.scene.primitives.remove(this.currentFrustumOutline),this.currentFrustumFilled&&this.viewer.scene.primitives.remove(this.currentFrustumFilled),this.currentFrustumOutline=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({geometry:t,attributes:{color:n}}),appearance:i,asynchronous:!1,show:this.options.show}),this.viewer.scene.primitives.add(this.currentFrustumOutline),this.currentFrustumFilled=new Cesium.Primitive({geometryInstances:new Cesium.GeometryInstance({geometry:o,attributes:{color:a}}),appearance:s,asynchronous:!1,show:this.options.show}),this.viewer.scene.primitives.add(this.currentFrustumFilled)}catch(e){console.error("Error in drawFrustum:",e)}else console.error("Transform generation failed.")}else console.error("Position or HPR is not defined:",this.position,this.hpr)}},{key:"updateFrustumNearFar",value:function(e,t){this.frustum.near=e,this.frustum.far=t,this.drawFrustumOutline(),this.drawFrustumFilled()}},{key:"updateFrustumFov",value:function(e){this.frustum.fov=Cesium.Math.toRadians(e),this.drawFrustumOutline(),this.drawFrustumFilled()}},{key:"show",get:function(){return this.options.show},set:function(e){"boolean"==typeof e&&(this.options.show=e,this.currentFrustumOutline.show=e,this.currentFrustumFilled.show=e)}},{key:"remove",value:function(){document.removeEventListener("keydown",this.keydownHandler),document.removeEventListener("keyup",this.keyupHandler),this.currentFrustumFilled&&this.viewer.scene.primitives.remove(this.currentFrustumFilled),this.currentFrustumOutline&&this.viewer.scene.primitives.remove(this.currentFrustumOutline),this.videoEntity&&this.viewer.entities.remove(this.videoEntity)}}],[{key:"setDefaultValue",value:function(e){var t;e.options.position=e.options.position||{},e.options.fov=e.options.fov||30,e.options.aspectRatio=e.options.aspectRatio||1,e.options.near=e.options.near||1,e.options.far=e.options.far||120,e.options.heading=e.options.heading||0,e.options.pitch=e.options.pitch||90,e.options.roll=e.options.roll||0,e.options.show=null===(t=e.options.show)||void 0===t||t,e.options.videoUrl=e.options.videoUrl||"",e.options.index=e.options.index||0,e.options.arr=e.options.arr||[],e.options.normalHeight=e.options.normalHeight||100}}]);var e,t}();function jv(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}var Av=function(){return h()((function e(t,i){c()(this,e),this.options=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;c()(this,e),this.options=Iv({},t),this.viewer=i,this.viewer1=n,this.entity=null,this.frustum=null,this.billordPointLineMaps=[],this.index=0,this.positions=[],e.setDefaultValue(this),this.create()}),[{key:"create",value:function(){var e=this;if(!(this.options.positions.length<2)){var t=this.options.frustumShow;this.entity=this.viewer.entities.add({show:this.options.show,polyline:{positions:new Cesium.CallbackProperty((function(){for(var t=[],i=0;ithis.options.positions.length-1||this.index<0){var t=this.index>0?"已选中最后一个航点":"已选中第一个航点";alert(t)}else for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return c()(this,t),(i=zv(this,t,[e,n])).options.tipText=n.tipText?n.tipText:"左键确定,右键结束;",i}return Me()(t,e),h()(t,[{key:"start",value:function(e){var t=this;if(YJ.Measure.GetMeasureStatus())e("上一次测量未结束");else{var i=void 0;YJ.Measure.SetMeasureStatus(!0),this.tip=new St.a(this.options.tipText,this.sdk),this.event=new te.a(this.sdk),this.isEntity=!1,this.event.mouse_left((function(n,o){t.end();var s=t.cartesian3Towgs84(i||o,t.viewer),a=t.viewer.scene.pick(n.position);Cesium.defined(a)&&Cesium.defined(a.id)&&a.id.id===window.airportEntity.options.id&&(t.isEntity=!0),e(null,s,t.isEntity)})),this.event.mouse_right((function(i,n){t.end(),e(!1)})),this.event.mouse_move((function(e,n){i=n,t.tip.setPosition(n,e.endPosition.x,e.endPosition.y)})),this.event.gesture_pinck_start((function(n,o){var s=new Date;t.event.gesture_pinck_end((function(){if(new Date-s>=500)t.end(),e(!1);else{t.end();var n=t.cartesian3Towgs84(i||o,t.viewer);e(null,n)}}))}))}}},{key:"end",value:function(){YJ.Measure.SetMeasureStatus(!1),this.event.destroy(),this.tip.destroy()}}])}(xn.a);function Hv(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function Vv(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c()(this,t),(i=Gv(this,t,[e,n])).viewer=i.sdk.viewer,i.options.name=n.name||"飞线",i.options.pointNumber=n.pointNumber||200,i.options.height=n.height||200,i.options.heightDifference=n.heightDifference||3e3,i.options.width=n.width||2,i.options.duration=n.duration||10,i.options.color=n.color||"rgba(255,255,255,1)",i.options.lineBackAlpha=n.lineBackAlpha||.05,i.options.positions=n.positions||[],i.options.show=!n.show&&!1!==n.show||n.show,i.Dialog=o,i._EventBinding=new Ye,i._elms={},i.positionArea=[],i.positions=[],i.sdk.addIncetance(i.options.id,i),t.drawLine(i),i}return Me()(t,e),h()(t,[{key:"getRandomPointsInCesiumPolygon",value:function(e,t){var i=[],n=[],o=[];e.forEach((function(e){i.push(e.lng),n.push(e.lat),o.push([e.lng,e.lat])})),o.push([o[0][0],o[0][1]]);for(var s=Math.min.apply(Math,i),a=Math.max.apply(Math,i),r=Math.min.apply(Math,n),l=Math.max.apply(Math,n),c=[];c.length0&&void 0!==a[0]&&a[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=19;break}return e.next=7,new Be(this.sdk,this.originalOptions,{title:"飞线属性",left:"180px",top:"100px",confirmCallBack:function(e){s.name=s.name.trim(),s.name||(s.name="飞线"),s.originalOptions=s.deepCopyObj(s.options),s._DialogObject.close(),s.Dialog.confirmCallBack&&s.Dialog.confirmCallBack(s.originalOptions),Object(J.syncData)(s.sdk,s.options.id),Object(Z.syncSplitData)(s.sdk,s.options.id)},resetCallBack:function(){s.reset(),s.Dialog.resetCallBack&&s.Dialog.resetCallBack()},removeCallBack:function(){s.Dialog.removeCallBack&&s.Dialog.removeCallBack()},closeCallBack:function(){s.reset(),s.Dialog.closeCallBack&&s.Dialog.closeCallBack()},showCallBack:function(e){s.show=e,s.Dialog.showCallBack&&s.Dialog.showCallBack()}},!0);case 7:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" flow-line-surface",(i=document.createElement("div")).innerHTML='\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
            \n
            \n
            \n
            \n
            \n 单次运动时长(s)\n
            \n \n \n
            \n
            \n
            \n 轨迹透明度\n
            \n \n \n
            \n
            \n
            \n
            \n \n ',this._DialogObject.contentAppChild(i),n=new YJColorPicker({el:i.getElementsByClassName("flowLine-color")[0],size:"mini",alpha:!0,defaultColor:this.color,disabled:!1,openPickerAni:"opacity",sure:function(e){s.color=e},clear:function(){s.color="rgba(255,255,255,1)"}}),o=i.getElementsByTagName("*"),this._EventBinding.on(this,o),this._elms=this._EventBinding.element,this._elms.color=[n],e.next=19;break;case 19:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"reset",value:function(){this.viewer.entities.getById(this.options.id)&&(this.name=this.originalOptions.name,this.pointNumber=this.originalOptions.pointNumber,this.height=this.originalOptions.height,this.heightDifference=this.originalOptions.heightDifference,this.width=this.originalOptions.width,this.duration=this.originalOptions.duration,this.color=this.originalOptions.color,this.lineBackAlpha=this.originalOptions.lineBackAlpha,Object(J.syncData)(this.sdk,this.options.id),Object(Z.syncSplitData)(this.sdk,this.options.id))}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(h.length>0&&void 0!==h[0]&&h[0],Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=Vv({},this.options.position):this.options.positions?a=Vv({},this.options.positions[0]):this.options.center?a=Vv({},this.options.center):this.options.start?a=Vv({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t});else{for(r=[],l=0;l=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,r=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){r=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(r)throw s}}}}function Yv(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i=Number(t.target.min))&&(i=i),t.target.max&&i>Number(t.target.max)&&(i=Number(t.target.max)),t.target.min&&iNumber(t.target.max)&&(i=Number(t.target.max)),t.target.min&&i0&&t[o].addEventListener(e,(function(t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};c()(this,e),this.viewer=t.viewer,this.options=Qv({},i),this.sdk=Qv({},t);var o=new Date;o.setHours(0,0,0,0),this.options.time=i.time,this.options.hour=i.hour,this.options.speed=i.speed||1e3,this.options.darkness=i.darkness||.4,this.options.softShadow=i.softShadow||!0,this.options.show=!0===i.show,this.Dialog=n,this.timeLine,this._EventBinding=new qv,this._elms={},e.start(this)}),[{key:"darkness",get:function(){return this.options.darkness},set:function(e){this.options.darkness=e,this.viewer.shadowMap.darkness=1-this.options.darkness,this._elms.darkness&&this._elms.darkness.forEach((function(t){t.value=e}))}},{key:"time",get:function(){return this.options.time},set:function(e){this.options.time=e;var t=(new Date).setHours(0,0,0,0);this.viewer.clock.currentTime=Cesium.JulianDate.fromDate(new Date(t))}},{key:"timeBar",set:function(e){var t=this.time+" "+e;this.viewer.clock.currentTime=Cesium.JulianDate.fromDate(new Date(t)),this.viewer.scene.requestRender()}},{key:"realTime",set:function(e){var t=new Date;this.viewer.clock.currentTime=Cesium.JulianDate.fromDate(t)}},{key:"speed",get:function(){return this.options.speed},set:function(e){this.options.speed=e,this._elms.speed&&this._elms.speed.forEach((function(t){t.value=e})),this.viewer.clock.multiplier=this.options.speed}},{key:"softShadow",get:function(){return this.options.softShadow},set:function(e){this.options.softShadow=e,this.viewer.shadowMap.softShadows=this.options.softShadow}},{key:"edit",value:(i=_()(S.a.mark((function e(){var t,i,n,o,s,a,r=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=r.length>0&&void 0!==r[0]&&r[0],i=new b.a,this.originalOptions=i.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),t&&(n=this,this.timeLine=new Zv(this.sdk,this.options.speed),this.timeLine.moveComplay((function(e){var t=n.time+" "+e;n.viewer.clock.currentTime=Cesium.JulianDate.fromDate(new Date(t)),n.viewer.scene.requestRender()})),s=contentElm.getElementsByClassName("sunshine-date")[0],o=jeDate(s,{format:"YYYY-MM-DD",isinitVal:!0,isClear:!1,donefun:function(e){this.time=e.val;var t=(new Date).setHours(0,0,0,0);n.viewer.clock.currentTime=Cesium.JulianDate.fromDate(new Date(t)),n.timeLine.updateTime(t)}}),this.time?o.setValue(this.time):(o.nowBtn&&o.nowBtn(),this.time=o.getValue()),a=contentElm.getElementsByTagName("*"),this._EventBinding.on(this,a),this._elms=this._EventBinding.element,this._elms.color=[o]);case 5:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"reset",value:function(){this.viewer.entities.getById(this.options.id)&&(this.time=this.originalOptions.time,this.speed=this.originalOptions.speed,this.darkness=this.originalOptions.darkness)}},{key:"flyTo",value:(t=_()(S.a.mark((function e(){var t=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:!(t.length>0&&void 0!==t[0])||t[0];case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)})},{key:"remove",value:(e=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.viewer.scene.globe.enableLighting=!1,this.viewer.shadows=!1,this.viewer.clock.multiplier=1,this.viewer.clock.currentTime=Cesium.JulianDate.fromDate(new Date),this.entity=null,this.timeLine&&this.timeLine.clear(),this.viewer.shadowMap.cascadesEnabled=!1,this.viewer.shadowMap.size=1024,this.viewer.shadowMap.numberOfCascades=3,this.viewer.shadowMap._lightCamera,this.viewer.shadowMap.normalOffset=!1,this._DialogObject&&!this._DialogObject.isDestroy&&(this._DialogObject.close(),this._DialogObject=null),e.next=14,Object(J.syncData)(this.sdk,this.options.id);case 14:case"end":return e.stop()}}),e,this)}))),function(){return e.apply(this,arguments)})},{key:"flicker",value:function(){}}],[{key:"start",value:function(e){var t;e.viewer.scene.globe.enableLighting=!0,e.viewer.shadows=!0,e.viewer.scene.globe.enableLighting=!0,e.viewer.terrainShadows=Cesium.ShadowMode.RECEIVE_ONLY,e.viewer.shadowMap.darkness=1-e.options.darkness,e.options.time&&e.options.hour?t=new Date(e.options.time+" "+e.options.hour):(t=new Date).setHours(0,0,0,0),e.viewer.clock.currentTime=Cesium.JulianDate.fromDate(t),e.viewer.clock.multiplier=e.options.speed,e.viewer.shadowMap.softShadows=e.options.softShadow,e.viewer.shadowMap.cascadesEnabled=!0,e.viewer.shadowMap.size=2048,e.viewer.shadowMap.numberOfCascades=4,e.viewer.shadowMap.maximumDistance=5e3;var i=e.viewer.shadowMap._lightCamera;i.frustum.near=.1,i.frustum.far=1e4,e.viewer.shadowMap.normalOffset=!0}}]);var e,t,i}();function eg(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function tg(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function s(e,t,i){for(var n=[],o=[],s=[],a=0;am&&m>-1.001)o.push(v);else{var C=[];C[0]=v[1],C[1]=v[2],C[2]=v[3],C[3]=v[0],o.push(C)}},r=0;r2&&void 0!==arguments[2]?arguments[2]:.01;if(!t.width||!t.height)throw new Error("Texture size must contain width and height in pixels");for(var n=Cesium.PolygonGeometry.createGeometry(new Cesium.PolygonGeometry({polygonHierarchy:new Cesium.PolygonHierarchy(e),vertexFormat:Cesium.VertexFormat.POSITION_ONLY})),o=0,s=n.indices,a=n.attributes.position.values,r=0;r0)return Cesium.Cartesian3.fromDegrees(u.features[0].geometry.coordinates[0],u.features[0].geometry.coordinates[1])}},{key:"getLonLat",value:function(e){var t=Cesium.Cartographic.fromCartesian(e);return{lon:Cesium.Math.toDegrees(t.longitude),lat:Cesium.Math.toDegrees(t.latitude)}}},{key:"createLineBufferPolygon",value:function(e,t,i){for(var n=[],o=0;o0?n.unshift(Cesium.Cartesian3.add(s,u,new Cesium.Cartesian3)):i<0&&n.push(Cesium.Cartesian3.add(s,u,new Cesium.Cartesian3))}return n}},{key:"calculateAangle",value:function(e){function t(e,t){var i=Math.PI/180,n=e.y*i,o=t.y*i,s=e.x*i,a=t.x*i,r=Math.sin(a-s)*Math.cos(o),l=Math.cos(n)*Math.sin(o)-Math.sin(n)*Math.cos(o)*Math.cos(a-s),c=Math.atan2(r,l)%(2*Math.PI);return 360-(450-(180*c/Math.PI<0?360+180*c/Math.PI:180*c/Math.PI)-90)%360}var i=e[0],n=e[1],o=e[2],s={x:i.lng,y:i.lat},a={x:n.lng,y:n.lat},r={x:o.lng,y:o.lat};return{angle1:t(s,a),angle2:t(s,r)}}},{key:"carRoadWidth",get:function(){return this.options.carRoadWidth},set:function(e){this.options.carRoadWidth=e,t.create(this)}},{key:"sideWidth",get:function(){return this.options.sideWidth},set:function(e){this.options.sideWidth=e,t.create(this)}},{key:"edit",value:(o=_()(S.a.mark((function e(){var t,i,n,o=this,s=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=s.length>0&&void 0!==s[0]&&s[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!t){e.next=17;break}return e.next=7,new Be(this.sdk,this.originalOptions,{title:"道路属性",left:"180px",top:"100px",confirmCallBack:function(e){o.name=o.name.trim(),o.name||(o.name="道路"),o.originalOptions=o.deepCopyObj(o.options),o._DialogObject.close(),o.Dialog.confirmCallBack&&o.Dialog.confirmCallBack(o.originalOptions),Object(J.syncData)(o.sdk,o.options.id),Object(Z.syncSplitData)(o.sdk,o.options.id)},resetCallBack:function(){o.reset(),o.Dialog.resetCallBack&&o.Dialog.resetCallBack()},closeCallBack:function(){o.reset(),o.Dialog.closeCallBack&&o.Dialog.closeCallBack()},showCallBack:function(e){o.show=e,o.Dialog.showCallBack&&o.Dialog.showCallBack()}},!0);case 7:this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" road-surface",(i=document.createElement("div")).innerHTML='\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 ',this._DialogObject.contentAppChild(i),n=i.getElementsByTagName("*"),this._EventBinding.on(this,n),this._elms=this._EventBinding.element,e.next=17;break;case 17:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"reset",value:function(){this.viewer.entities.getById(this.options.id)&&(this.name=this.originalOptions.name,this.carRoadWidth=this.originalOptions.carRoadWidth,this.sideWidth=this.originalOptions.sideWidth,this.positions=this.originalOptions.positions,this.roadImage=this.originalOptions.roadImage,this.sideImage=this.originalOptions.sideImage)}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u,h=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(h.length>0&&void 0!==h[0]&&h[0],Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=tg({},this.options.position):this.options.positions?a=tg({},this.options.positions[0]):this.options.center?a=tg({},this.options.center):this.options.start?a=tg({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t});else{for(r=[],l=0;l1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return c()(this,t),(i=ag(this,t,[e,n])).options.position=n.position||[],i.options.text=n.text||"",i.options.show=!n.show&&!1!==n.show||n.show,i.clickTextDom=void 0,i.handler=void 0,i.textDom=void 0,i.create(i),i.sdk.addIncetance(i.options.id,i),i.callback=o,i}return Me()(t,e),h()(t,[{key:"type",get:function(){return"TextBox"}},{key:"create",value:(u=_()(S.a.mark((function e(t){var i,n,o,s;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.sdk.viewer,(n=document.createElement("span")).id=t.options.id,n.className="popup-textarea",n.style.zIndex=1,(o=document.createElement("textarea")).className="textarea",o.value=t.options.text,o.rows=6,o.style.resize="none",n.appendChild(o),!t.options.show&&(n.style.display="none"),i.cesiumWidget.container.appendChild(n),s=Cesium.Cartesian3.fromDegrees(t.options.position.lng,t.options.position.lat,t.options.position.alt),t.handler=function(){var e=Cesium.SceneTransforms.wgs84ToWindowCoordinates(i.scene,s);if(e){var t=1*n.clientWidth,o=1*n.clientHeight;n.style.left="".concat(e.x-t/2,"px"),n.style.top="".concat(e.y-o,"px")}},i.scene.postRender.addEventListener(t.handler),t.textDom=n;case 17:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)})},{key:"isClick",value:(l=_()(S.a.mark((function e(t,i){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.clickCallBack({position:t},i,null);case 2:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"setHandeler",value:(r=_()(S.a.mark((function e(t){var i,n,o,s,a,r,l;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this,(n=this.sdk.viewer.scene.pickPosition(new Cesium.Cartesian2(t.x,t.y)))||(o=this.sdk.viewer.camera.getPickRay(new Cesium.Cartesian2(t.x,t.y)),n=this.sdk.viewer.scene.globe.pick(o,this.sdk.viewer.scene)),!Cesium.defined(n)){e.next=15;break}return i.sdk.viewer.scene.postRender.removeEventListener(i.handler),s=Cesium.Cartographic.fromCartesian(n),a=Cesium.Math.toDegrees(s.longitude),r=Cesium.Math.toDegrees(s.latitude),e.next=10,i.getClampToHeight({lng:a,lat:r});case 10:e.sent,i.position={lng:a,lat:r,alt:s.height},l=Cesium.Cartesian3.fromDegrees(a,r,s.height),i.handler=function(){var e=Cesium.SceneTransforms.wgs84ToWindowCoordinates(i.sdk.viewer.scene,l);if(e){var t=1*i.textDom.clientWidth,n=1*i.textDom.clientHeight;i.textDom.style.left="".concat(e.x-t/2,"px"),i.textDom.style.top="".concat(e.y-n,"px")}},i.sdk.viewer.scene.postRender.addEventListener(i.handler);case 15:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"getwords",value:(a=_()(S.a.mark((function e(t){var i,n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.options.text=t,this.callback(this.options),i=Object(J.getSdk)(),n=i.sdkP,this.sdk===n&&n?Object(J.syncData)(this.sdk,this.options.id):n?(n.entityMap.get(this.options.id).text=t,n.entityMap.get(this.options.id).twoToThree(this.options.position)):n||Object(J.syncData)(this.sdk,this.options.id);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"twoToThree",value:(s=_()(S.a.mark((function e(t){var i,n;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=this).sdk.viewer.scene.postRender.removeEventListener(i.handler),n=Cesium.Cartesian3.fromDegrees(t.lng,t.lat,t.alt),i.handler=function(){var e=Cesium.SceneTransforms.wgs84ToWindowCoordinates(i.sdk.viewer.scene,n);if(e){var t=1*i.textDom.clientWidth,o=1*i.textDom.clientHeight;i.textDom.style.left="".concat(e.x-t/2,"px"),i.textDom.style.top="".concat(e.y-o,"px")}},i.sdk.viewer.scene.postRender.addEventListener(i.handler);case 5:case"end":return e.stop()}}),e,this)}))),function(e){return s.apply(this,arguments)})},{key:"returnFun",value:(o=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.handler);case 1:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"text",get:function(){return this.options.text},set:function(e){this.options.text=e,this.textDom.querySelector("textarea").value=e,this.callback(this.options)}},{key:"onClick",get:function(){return this.clickCallBack},set:function(e){e&&"function"!=typeof e?console.error("val:",e,"不是一个function"):this.clickCallBack=e}},{key:"show",get:function(){return this.options.show},set:function(e){this.options.show=e,this.textDom&&(this.textDom.style.display=e?"block":"none"),Object(J.syncData)(this.sdk,this.options.id)}},{key:"position",get:function(){return this.options.position},set:function(e){this.options.position=e}},{key:"flyTo",value:(n=_()(S.a.mark((function e(){var t,i,n,o,s,a,r,l,c,u=arguments;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u.length>0&&void 0!==u[0]&&u[0],Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation?(t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=sg({},this.options.position):this.options.position?a=sg({},this.options.position[0]):this.options.center?a=sg({},this.options.center):this.options.start?a=sg({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t})):(r=[],l=Cesium.Cartesian3.fromDegrees(this.position.lng,this.position.lat,this.position.alt),r.push(l.x,l.y,l.z),c=Cesium.BoundingSphere.fromVertices(r),this.viewer.camera.flyToBoundingSphere(c,{offset:{heading:Cesium.Math.toRadians(0),pitch:Cesium.Math.toRadians(-20),roll:Cesium.Math.toRadians(0)}}));case 5:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"remove",value:(i=_()(S.a.mark((function e(){return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.handler&&(this.sdk.viewer.scene.postRender.removeEventListener(this.handler),this.handler=void 0),this.textDom&&this.textDom.parentNode&&this.sdk.viewer.cesiumWidget.container.removeChild(this.textDom),e.next=4,this.sdk.removeIncetance(this.options.id);case 4:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"flicker",value:function(){}}]);var i,n,o,s,a,r,l,u}(vt);function lg(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function cg(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};c()(this,t),(i=ug(this,t,[e,n])).viewer=i.sdk.viewer,i.options.name=n.name||"批量模型",i.options.type=n.type||"面",i.options.url=n.url||"",i.options.spacing=1*n.spacing||50,i.options.positions=n.positions||[],i.options.show=!n.show&&!1!==n.show||n.show,i.callback=o,i.Dialog=s,i._EventBinding=new Ye,i._elms={},i.pointArr=[],i.sdk.addIncetance(i.options.id,i);var a=new b.a(e);if("点"!=n.type&&(i.options.spacing<0||1*n.spacing==0))return a.message({type:"warning",text:"请输入正确的间距!"}),Ee()(i);if(n.type&&null!=n.spacing||"点"==n.type){var r;switch(n.type){case"点":r=new us.default(i.sdk);break;case"线":r=new ss(i.sdk);break;case"面":r=new cs(i.sdk)}r&&r.start((function(e,o){if(o){if(i.options.positions=o,"面"==n.type){var s=o.map((function(e){return Cesium.Cartesian3.fromDegrees(e.lng,e.lat)})),r=Cesium.Cartesian3.distance(s[0],s[1]),l=Cesium.Cartesian3.distance(s[1],s[2]);if(r/i.options.spacing*(l/i.options.spacing)>100)return void a.message({type:"warning",text:"数量大于100,请重新绘制"})}else if("线"==n.type){for(var c=o.map((function(e){return Cesium.Cartesian3.fromDegrees(e.lng,e.lat)})),u=0,h=0;h100)return void a.message({type:"warning",text:"数量大于100,请重新绘制"})}(i.options.positions.length||i.options.positions.lng)&&t.computeDis(i)}}))}else i.edit(!0);return i}return Me()(t,e),h()(t,[{key:"linePoint",value:(u=_()(S.a.mark((function e(t,i){var n,o,a,r,l,c,u,h,p,d,m,f,v,g;return S.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],o=[],a=0;case 3:if(!(a0&&void 0!==u[0]&&u[0],this.originalOptions=this.deepCopyObj(this.options),this._DialogObject&&this._DialogObject.close&&(this._DialogObject.close(),this._DialogObject=null),!i){e.next=33;break}return e.next=7,new Be(this.sdk,this.originalOptions,{title:"默认模型参数设置",left:"180px",top:"100px",confirmCallBack:function(e){var i;switch(c.name=c.name.trim(),c.name||(c.name="飞线"),c.options.type){case"点":i=new us.default(c.sdk);break;case"线":i=new ss(c.sdk);break;case"面":i=new cs(c.sdk)}i&&i.start((function(e,i){c.options.positions=i,(c.options.positions.length||c.options.positions.lng)&&t.computeDis(c)})),c.originalOptions=c.deepCopyObj(c.options),c._DialogObject.close(),c.Dialog.confirmCallBack&&c.Dialog.confirmCallBack(c.originalOptions),Object(J.syncData)(c.sdk,c.options.id),Object(Z.syncSplitData)(c.sdk,c.options.id)},closeCallBack:function(){c.reset(),c.Dialog.closeCallBack&&c.Dialog.closeCallBack()},addFootElm:[{tagName:"button",className:"flipe-over-y",innerHTML:"重置",event:["click",function(){c.reset()}]}]},!0);case 7:if(this._DialogObject=e.sent,this._DialogObject._element.body.className=this._DialogObject._element.body.className+" flow-line-surface",(n=document.createElement("div")).innerHTML='\n \n
            \n
            \n
            \n 添加方式\n
            \n
            \n
            \n 间距\n
            \n \n \n \n
            \n
            \n
            \n
            \n \n ',this._DialogObject.contentAppChild(n),o=n.getElementsByTagName("*"),this._EventBinding.on(this,o),this._elms=this._EventBinding.element,s=[{name:"点",value:"点"},{name:"线",value:"线"},{name:"面",value:"面"}],!(a=Object(je.a)(this._DialogObject._element.content.getElementsByClassName("add-type-box")[0],".add-type"))){e.next=31;break}a.legp_search(s),r=this._DialogObject._element.content.getElementsByClassName("add-type")[0].getElementsByTagName("input")[0],this._elms.type=[r],r.value=this.options.type,l=0;case 23:if(!(l0&&void 0!==h[0]&&h[0],Object(X.w)(0),Object(X.f)(this.sdk),Object(X.g)(this.sdk),this.options.customView&&this.options.customView.relativePosition&&this.options.customView.orientation)t={heading:Cesium.Math.toRadians(this.options.customView.orientation.heading||0),pitch:Cesium.Math.toRadians(this.options.customView.orientation.pitch||-60),roll:Cesium.Math.toRadians(this.options.customView.orientation.roll||0)},i=this.options.customView.relativePosition.lng,n=this.options.customView.relativePosition.lat,o=this.options.customView.relativePosition.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),a={lng:0,lat:0},this.options.position?a=cg({},this.options.position):this.options.positions?a=cg({},this.options.positions[0]):this.options.center?a=cg({},this.options.center):this.options.start?a=cg({},this.options.start):(this.options.hasOwnProperty("lng")&&(a.lng=this.options.lng),this.options.hasOwnProperty("lat")&&(a.lat=this.options.lat),this.options.hasOwnProperty("alt")&&(a.alt=this.options.alt)),i=this.options.customView.relativePosition.lng+a.lng,n=this.options.customView.relativePosition.lat+a.lat,o=this.options.customView.relativePosition.alt+a.alt,s=Cesium.Cartesian3.fromDegrees(i,n,o),this.sdk.viewer.camera.flyTo({destination:s,orientation:t});else if(r=[],this.options.positions.length>0){for(l=0;l=0;n--)t.removeChild(i[n]);Ti=0,Ni=0},flyTo:Ai,setRepeat:function(e){Ti!=Number(e)&&(Ti=Number(e),Ni=Ti)},cease:Li},flyTo:X.i,efflect:{rain:Ii.d,snow:Ii.f,fog:Ii.a,nightVision:Ii.c,skyStarry:Ii.e,illumination:Ii.b,Sunshine:$v},CameraController:X.a,CesiumContainer:X.b,setBillboardDefaultUrl:X.x,getBillboardDefaultUrl:X.j,multiViewportMode:{on:J.on,off:J.off,get2DView:J.get2DView,getSdk:J.getSdk,syncData:J.syncData},MouseCoordinate:function(e,t){if(e&&e.viewer){Oi=e,(Mi=Object(J.getSdk)().sdkD)||(Mi=Object(Z.getSdk)().sdkD);var i=new b.a(e),n=e.proj;if(t){var o=function(){Pi=requestAnimationFrame(o),l()};xi&&xi.destroy(),Si&&(Si.destroy(),Si=void 0),xi=new te.a(e),Di=null;var s,a={x:"",y:"",z:""};Ei?s=Ei:((s=document.createElement("div")).style.position="absolute",s.style["z-index"]=777,s.style.color="#ffffff",s.style.left="0px",s.style.top="0px",s.style.width="100%",s.style.height="100%",s.style["font-size"]="12px",s.style["pointer-events"]="none",s.style.background="url(".concat(i.getSourceRootPath(),"/img/cross.png) no-repeat 100% 100%"),s.style["background-size"]="200% 200%",Ei=s),e.viewer.container.appendChild(s),xi.mouse_move((function(t,i){Oi=e,Di=function(e){for(var t=1;t

            经度:").concat(d.lng.toFixed(8),"°

            维度:").concat(d.lat.toFixed(8),"°

            海拔:").concat(Number(d.alt.toFixed(2))," m

            ");break;case"度分":s.innerHTML="

            经度:").concat(n.degreesToDMS(d.lng,!0),"

            维度:").concat(n.degreesToDMS(d.lat,!0),"

            海拔:").concat(Number(d.alt.toFixed(2))," m

            ");break;case"度分秒":s.innerHTML="

            经度:").concat(n.degreesToDMS(d.lng,!1),"

            维度:").concat(n.degreesToDMS(d.lat,!1),"

            海拔:").concat(Number(d.alt.toFixed(2))," m

            ")}else{var v=i.convert([{x:d.lng,y:d.lat,z:d.alt}],"EPSG:4326",function(e,t){var i;switch(e){case"EPSG:32601":var n=Math.round((t.lng+180)/6+1);i=t.lat>0?"EPSG:"+(i=32600+n):"EPSG:"+(i=32700+n);break;case"EPSG:4534":i="EPSG:"+(i=Math.round(t.lng/3)-25+4534);break;case"EPSG:4513":i="EPSG:"+(i=Math.round(t.lng/3)-25+4513);break;case"EPSG:4502":var o=Math.floor(t.lng/6)+31;o<13&&(o=13),o>23&&(o=23),i="EPSG:"+(i=o-13+4502);break;case"EPSG:4491":var s=Math.floor(t.lng/6)+31;s<13&&(s=13),s>23&&(s=23),i="EPSG:"+(i=s-13+4491)}return i}(m,d));a=v.points[0],s.innerHTML="

            x:").concat(a.x.toFixed(2),"

            y:").concat(a.y.toFixed(2),"

            z:").concat(Number(a.z.toFixed(2)),"

            ")}}else{var g=Object(X.o)();s.innerHTML="EPSG:4326"===g||"EPSG:4490"===g?"

            经度:-

            维度:-

            海拔:-

            "):"

            x:-

            y:-

            z:-

            ")}}}};o()}else xi&&xi.destroy(),Si&&(Si.destroy(),Si=void 0),Ei&&(e.viewer.container.removeChild(Ei),Ei=void 0),Pi&&cancelAnimationFrame(Pi)}},MouseRightMenu:zi.a,setGroundCover:X.E,getGroundCover:X.s,setBimPickStatus:X.y,getBimPickStatus:X.k,FlwStatusSwitch:X.c,JwwStatusSwitch:X.d,rotateAround:X.v,getCoordinateSystem:X.o,setCoordinateSystem:X.B,getDMS:X.q,setDMS:X.C,DTH:_e,cameraChanged:X.e,setMaximumRequestsPerServer:X.G,setKeyboardEventActive:X.F,setSkin:function(e){document.documentElement.style.setProperty("--color-sdk-base","rgba(0, 55, 55, 1)")},getTheme:X.u,setTheme:X.H,getCesiumManageIndexexDBState:X.n,setCesiumManageIndexexDBState:X.A,getCesiumIndexedDBMaxSize:X.m,setCesiumIndexedDBMaxSize:X.z,getCesiumIndexedDBCurrentSize:X.l,enablePerspective:X.h,closeRotateAround:X.f,SheetIndexStatusSwitch:Ce.a,SheetIndexShangeScale:Ce.b,splitScreen:{on:Z.on,off:Z.off,setActiveId:Z.setActiveId,getSdk:Z.getSdk,syncData:Z.syncSplitData},Contour:function(e){return hn.apply(this,arguments)},ContourStartDraw:function(e,t){if(e&&e.viewer){if(t)if(!e.viewer.terrainProvider.availability)return"未加载地形数据!";if(Yi=t,Object.keys(ln).forEach((function(e){Vi.uniforms[e]=ln[e]})),Yi){if(e.viewer.camera.positionCartographic.height>16360){var i=e.viewer.camera.positionCartographic,n={position:{lng:Cesium.Math.toDegrees(i.longitude),lat:Cesium.Math.toDegrees(i.latitude),alt:16360}};Object(X.i)(e,n,.5)}pn(e)}else dn(e)}},ContourReset:function(){Ui=19,Ji=10,qi="#ffd000",Xi=!0,Zi=2.5,Ki="#43cf7c",Qi=!0,$i=1.8,en="#ff0000",tn=!1,nn=1,on="#64b6d9",sn=!1,an=1,rn="#d084d1"},ContourSetVal:function(e){Ui=e.secondaryLinesCount,Ji=e.equalHeightDistance,qi=un(e.activeColor),Xi=e.indexContourShow,Zi=e.indexContourWidth,Ki=un(e.indexContourColor),Qi=e.intermediateContourShow,$i=e.intermediateContourWidth,en=un(e.intermediateContourColor),tn=e.halfIntervalContourShow,nn=e.halfIntervalContourWidth,on=un(e.halfIntervalContourColor),sn=e.supplementaryContourShow,an=e.supplementaryContourWidth,rn=un(e.supplementaryContourColor)}},Measure:{GetMeasureStatus:function(){return YJ.Measure[pg]},SetMeasureStatus:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];YJ.Measure[pg]=e},Clear:function(){YJ.Measure.Measures.forEach((function(e){e.destroy()})),YJ.Measure.Measures=[]},Measures:[],MeasureDistance:ko,MeasureProjectionDistance:Po,MeasureSlopeDistance:No,MeasureTyArea:Io,MeasureTdArea:Vo,MeasureTriangle:Uo,MeasureLocation:qo,MeasureHeight:Ko,MeasureAngle:es,MeasureAzimuth:ns},Draw:{DrawPolyline:ss,DrawPolygon:Dn,DrawPoint:us.default,DrawCircle:ps,DrawElliptic:ms,DrawAttackArrow:vs,DrawPincerArrow:ys,DrawStraightArrow:ws,DrawRect:_s,DrawAssemble:Es,DrawSector:Ds,DrawTakeOff:Fv,DrawThreeRect:cs},Analysis:{Clear:function(){YJ.Analysis.AnalysesResults.forEach((function(e){e.destroy()}))},CutFillAnalysis:On,Submerge:Bn,ViewShed:In,CircleViewShed:Un,SlopeAspect:Xn,Profile:Kn,Visibility:$n,Contour:eo,Section:oo,TerrainExcavation:ro,Flat:po,AnalysesResults:[],SectionResults:[],ClearSection:function(){YJ.Analysis.SectionResults.forEach((function(e){e.destroy()}))}},CoordTransform:Ns,RoutePlanningArrays:[],ClearAllRoutePlanning:function(){YJ.RoutePlanningArrays.forEach((function(e){e.destroy()})),YJ.RoutePlanningArrays=[]}},window.YJ.Obj.LoadObjModel=bv,window.YJ.Obj.BatchLoadObjModel=kv)}]); \ No newline at end of file diff --git a/src/renderer/public/sdk/img/material/brick1.png b/src/renderer/public/sdk/img/material/brick1.png new file mode 100644 index 0000000..2466bbf Binary files /dev/null and b/src/renderer/public/sdk/img/material/brick1.png differ diff --git a/src/renderer/public/sdk/img/material/brick2.png b/src/renderer/public/sdk/img/material/brick2.png new file mode 100644 index 0000000..01b005d Binary files /dev/null and b/src/renderer/public/sdk/img/material/brick2.png differ diff --git a/src/renderer/public/sdk/img/material/brick3.png b/src/renderer/public/sdk/img/material/brick3.png new file mode 100644 index 0000000..a71aa23 Binary files /dev/null and b/src/renderer/public/sdk/img/material/brick3.png differ diff --git a/src/renderer/src/views/TS/components/eventParams.vue b/src/renderer/src/views/TS/components/eventParams.vue index adecaf2..b096efc 100644 --- a/src/renderer/src/views/TS/components/eventParams.vue +++ b/src/renderer/src/views/TS/components/eventParams.vue @@ -106,8 +106,10 @@ const handleChange = (val, key) => { } const updateEvent = () => { // console.log(detail.value) - let obj = eventObj.value + let obj = JSON.parse(JSON.stringify(eventObj.value)) let durationS = eventObj.value.duration_time + // console.log("eventObj.value", eventObj.value) + // console.log("eventObj.value", durationS) if (!durationS) durationS = (eventObj.value.endTime - eventObj.value.startTime) / 1000 switch (eventObj.value.callback) { @@ -123,6 +125,7 @@ const updateEvent = () => { TsApi.updateTsEvent(obj).then(res => { console.log(res) if (res.code == 200) { + eventBus.emit('update-event', obj) ElMessage({type: "success", message: "操作成功"}) cancel() } diff --git a/src/renderer/src/views/TS/components/rightOperate.ts b/src/renderer/src/views/TS/components/rightOperate.ts index b5d06a3..8e266e8 100644 --- a/src/renderer/src/views/TS/components/rightOperate.ts +++ b/src/renderer/src/views/TS/components/rightOperate.ts @@ -164,11 +164,20 @@ export const useRightOperate = () => { }) let eventIds = [] source_ids.forEach(item => { - let entity = (window as any).earth_ts.entityMap.get(item) - if (entity) { - entity.remove(); - (window as any)._entityMap.delete(entity.options.id) - } + let keys = Array.from((window as any)._entityMap.keys()) + keys.forEach(keyI => { + // @ts-ignore + if (keyI.indexOf(item) > -1) { + let entity = (window as any)._entityMap.get(keyI) + console.log("keyI", keyI) + // return + if (entity) { + entity.remove(); + (window as any)._entityMap.delete(entity.options.id) + } + } + }) + //关闭资源的编辑框,删除相关的事件 // eventBus.emit("destroyComponent", item); let arr = window['tsObj']._Store.getTaskByProperty(item, "sourceId", "id") diff --git a/src/renderer/src/views/TS/deduction.vue b/src/renderer/src/views/TS/deduction.vue index e53c19e..209d4ad 100644 --- a/src/renderer/src/views/TS/deduction.vue +++ b/src/renderer/src/views/TS/deduction.vue @@ -255,6 +255,7 @@ let pauseTrajectoryMotion = () => { let TrajectoryMotionObject = window['_entityMap'].get(TrajectoryMotionMapKey); if (props.TSOBJ._Clock._status == 'play') { TrajectoryMotionObject.state = true + TrajectoryMotionObject.speed = TrajectoryMotionObject.oldSpeed * props.TSOBJ._Store._multiplier } else { TrajectoryMotionObject.state = false if (props.TSOBJ._Clock._status == 'stop') { @@ -270,7 +271,7 @@ let pauseTrajectoryMotion = () => { console.log("通过当前时间戳和时间间隔计算出剩余间隔次数", offsetSecond) let nums = Math.ceil(offsetSecond / task.detail.times) let restNums = (task.detail.numbers - nums) - entity.flicker(task.detail.times * 1000, restNums) + entity.flicker(task.detail.times * 1000 / props.TSOBJ._Store._multiplier, restNums) } else { entity && entity.flicker(1, 1) } @@ -371,6 +372,7 @@ const handleDrag = (newLeft: number) => { tsEntitys.show = true // TrajectoryMotionObject.speed = TrajectoryMotionObject.oldSpeed console.log(window['tsObj']._Store._currentTimestamp - task.startTime) + TrajectoryMotionObject.speed = TrajectoryMotionObject.oldSpeed TrajectoryMotionObject.setMovePositionByTime((window['tsObj']._Store._currentTimestamp - task.startTime) / 1000) break; default: diff --git a/src/renderer/src/views/TS/edit.vue b/src/renderer/src/views/TS/edit.vue index e8e3d5c..dfc9003 100644 --- a/src/renderer/src/views/TS/edit.vue +++ b/src/renderer/src/views/TS/edit.vue @@ -437,6 +437,9 @@ let getEventList = () => { }) newTS(params, events) } +eventBus.on('update-event', (task) => { + tsOBJ.value._Store._tasks = tsOBJ.value.replaceArrayItem(tsOBJ.value._Store._tasks, task) +}) eventBus.on('delete-event', (ids) => { tsOBJ.value._Store._tasks = tsOBJ.value._Store._tasks.filter(item => !ids.includes(item.id)) diff --git a/src/renderer/src/views/TS/sdk/Store.ts b/src/renderer/src/views/TS/sdk/Store.ts index 0b7433b..b3dde87 100644 --- a/src/renderer/src/views/TS/sdk/Store.ts +++ b/src/renderer/src/views/TS/sdk/Store.ts @@ -40,6 +40,7 @@ export class Store { let index = option.wheel % 3 this._scales.preMainIndex = preMainIndex - 1 this._scales.distanceOfTicTiny = this._scales.distanceOfTicTinyRange[index] + this._scales.distanceOfTicMain = this._scales.numOfMain * this._scales.distanceOfTicTiny console.log("this._scales.preMainIndex", this._scales.preMainIndex) console.log("this._scales.preMains", this._scales.preMains) console.log("this._scales.preMains", this._scales.preMains[this._scales.preMainIndex]) diff --git a/src/renderer/src/views/TS/sdk/index.ts b/src/renderer/src/views/TS/sdk/index.ts index df9453a..c54d0f8 100644 --- a/src/renderer/src/views/TS/sdk/index.ts +++ b/src/renderer/src/views/TS/sdk/index.ts @@ -31,7 +31,7 @@ export class TS extends Tools { // console.log("renderLabel", nums) let allTimeLabels = [] for (let i = 0; i < all; i++) { - let timeOfMain = this._Store.getScale('preMains')[this._Store.getScale('preMainIndex') - 1] + let timeOfMain = this._Store.getScale('preMains')[this._Store.getScale('preMainIndex')] // console.log("timeOfMain", this._Store.getScale('preMains')) console.log("timeOfMain", timeOfMain) // console.log("timeOfMain", this._Store.getScale('preMainIndex')) @@ -80,4 +80,29 @@ export class TS extends Tools { } } } + + /** + * 替换对象数组中指定的元素(通过id匹配) + * @param {Array} arr - 原始对象数组,元素结构需包含id属性 + * @param {Object} newItem - 要替换的新对象(必须包含id属性) + * @param {string} [key='id'] - 匹配的唯一标识字段(默认使用id) + * @returns {Array} - 返回替换后的新数组(原数组不会被修改) + */ + replaceArrayItem(arr, newItem, key = 'id') { + // 边界校验 + if (!Array.isArray(arr)) { + console.error('第一个参数必须是数组'); + return arr; + } + if (typeof newItem !== 'object' || newItem === null || !newItem[key]) { + console.error(`新元素必须是包含${key}属性的对象`); + return arr; + } + + // 遍历数组并替换匹配的元素(返回新数组,避免修改原数组) + return arr.map(item => { + // 匹配到对应id的元素则替换,否则返回原元素 + return item[key] === newItem[key] ? {...item, ...newItem} : item; + }); + } } diff --git a/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue b/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue index 25b6ec3..a3ef253 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue @@ -105,13 +105,15 @@ function importAuth() { } $sendElectronChanel('open-directory-dialog', option) $recvElectronChanel('selectedItem', (e, paths) => { - let formdata = new FormData() - formdata.append('filePath', paths[0]) - try { - let res = AuthApi.authImport(formdata) - ElMessage.success('文件授权成功') - getAuthInfo() - } catch (error) {} + if (paths.length != 0) { + let formdata = new FormData() + formdata.append('filePath', paths[0]) + try { + let res = AuthApi.authImport(formdata) + ElMessage.success('文件授权成功') + getAuthInfo() + } catch (error) {} + } }) } diff --git a/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue b/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue index 0961a6a..0e8735d 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue @@ -3,6 +3,7 @@ v-show="visible" class="context-menu" :style="{ left: x + 'px', top: y + 'px' }" + @mousedown.stop @click.stop @contextmenu.stop > @@ -24,8 +25,6 @@